From 43dccfb3a4482ae541e7c0c2ce77ebf7b49030dd Mon Sep 17 00:00:00 2001 From: Fabio Lama Date: Fri, 15 Oct 2021 12:28:42 +0200 Subject: [PATCH 01/71] Implementers guide: update Collation types (#4084) * Implementers guide: update Collation types * Update roadmap/implementers-guide/src/node/collators/collation-generation.md Co-authored-by: Andronik Ordian * Update roadmap/implementers-guide/src/node/collators/collation-generation.md Co-authored-by: Andronik Ordian * Update roadmap/implementers-guide/src/node/collators/collation-generation.md Co-authored-by: Andronik Ordian * Update roadmap/implementers-guide/src/node/collators/collation-generation.md Co-authored-by: Andronik Ordian * Convert indents to 2 spaces Co-authored-by: Andronik Ordian --- .../node/collators/collation-generation.md | 62 +++++++++++++------ 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/roadmap/implementers-guide/src/node/collators/collation-generation.md b/roadmap/implementers-guide/src/node/collators/collation-generation.md index 34be8ea7c139..0a17a8619ab1 100644 --- a/roadmap/implementers-guide/src/node/collators/collation-generation.md +++ b/roadmap/implementers-guide/src/node/collators/collation-generation.md @@ -21,27 +21,49 @@ Output: `CollationDistributionMessage` The process of generating a collation for a parachain is very parachain-specific. As such, the details of how to do so are left beyond the scope of this description. The subsystem should be implemented as an abstract wrapper, which is aware of this configuration: ```rust +/// The output of a collator. +/// +/// This differs from `CandidateCommitments` in two ways: +/// +/// - does not contain the erasure root; that's computed at the Polkadot level, not at Cumulus +/// - contains a proof of validity. pub struct Collation { /// Messages destined to be interpreted by the Relay chain itself. pub upward_messages: Vec, + /// The horizontal messages sent by the parachain. + pub horizontal_messages: Vec>, /// New validation code. pub new_validation_code: Option, /// The head-data produced as a result of execution. pub head_data: HeadData, /// Proof to verify the state transition of the parachain. pub proof_of_validity: PoV, + /// The number of messages processed from the DMQ. + pub processed_downward_messages: u32, + /// The mark which specifies the block number up to which all inbound HRMP messages are processed. + pub hrmp_watermark: BlockNumber, } /// Result of the [`CollatorFn`] invocation. pub struct CollationResult { - /// The collation that was build. - collation: Collation, - /// An optional result sender that should be informed about a successfully seconded collation. - /// - /// There is no guarantee that this sender is informed ever about any result, it is completly okay to just drop it. - /// However, if it is called, it should be called with the signed statement of a parachain validator seconding the - /// collation. - result_sender: Option>, + /// The collation that was build. + pub collation: Collation, + /// An optional result sender that should be informed about a successfully seconded collation. + /// + /// There is no guarantee that this sender is informed ever about any result, it is completely okay to just drop it. + /// However, if it is called, it should be called with the signed statement of a parachain validator seconding the + /// collation. + pub result_sender: Option>, +} + +/// Signal that is being returned when a collation was seconded by a validator. +pub struct CollationSecondedSignal { + /// The hash of the relay chain block that was used as context to sign [`Self::statement`]. + pub relay_parent: Hash, + /// The statement about seconding the collation. + /// + /// Anything else than `Statement::Seconded` is forbidden here. + pub statement: SignedFullStatement, } /// Collation function. @@ -51,18 +73,22 @@ pub struct CollationResult { /// /// Returns an optional [`CollationResult`]. pub type CollatorFn = Box< - dyn Fn(Hash, &PersistedValidationData) -> Pin> + Send>> - + Send - + Sync, + dyn Fn( + Hash, + &PersistedValidationData, + ) -> Pin> + Send>> + + Send + + Sync, >; -struct CollationGenerationConfig { - key: CollatorPair, - /// Collate will be called with the relay chain hash the parachain should build - /// a block on and the `ValidationData` that provides information about the state - /// of the parachain on the relay chain. - collator: CollatorFn, - para_id: ParaId, +/// Configuration for the collation generator +pub struct CollationGenerationConfig { + /// Collator's authentication key, so it can sign things. + pub key: CollatorPair, + /// Collation function. See [`CollatorFn`] for more details. + pub collator: CollatorFn, + /// The parachain that this collator collates for + pub para_id: ParaId, } ``` From 192fbcbe6d0a203ac6afbefecaf7921567d112a6 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Fri, 15 Oct 2021 15:11:45 +0200 Subject: [PATCH 02/71] enable ApprovalCheckingVotingRule on Polkadot (#4072) * enable ApprovalCheckingVotingRule on Polkadot * fmt --- node/service/src/lib.rs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 28468cfa021e..7f004c49f211 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -723,17 +723,9 @@ where let chain_spec = config.chain_spec.cloned_box(); - // we should remove this check before we deploy parachains on polkadot - // TODO: https://github.com/paritytech/polkadot/issues/3326 - let is_relay_chain = chain_spec.is_kusama() || - chain_spec.is_westend() || - chain_spec.is_rococo() || - chain_spec.is_wococo(); - let local_keystore = basics.keystore_container.local_keystore(); - let requires_overseer_for_chain_sel = local_keystore.is_some() && - is_relay_chain && - (role.is_authority() || is_collator.is_collator()); + let requires_overseer_for_chain_sel = + local_keystore.is_some() && (role.is_authority() || is_collator.is_collator()); let select_chain = SelectRelayChain::new( basics.backend.clone(), From 6ae992f60aaa905f5a32fdb3a61251d6bcbe1b1f Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Fri, 15 Oct 2021 16:28:20 +0200 Subject: [PATCH 03/71] Bump version to v0.9.12 (#4089) * bump version * update Cargo.lock Co-authored-by: Andronik Ordian --- Cargo.lock | 144 +++++++++--------- Cargo.toml | 2 +- cli/Cargo.toml | 2 +- core-primitives/Cargo.toml | 2 +- erasure-coding/Cargo.toml | 2 +- erasure-coding/fuzzer/Cargo.toml | 2 +- node/client/Cargo.toml | 2 +- node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/backing/Cargo.toml | 2 +- node/core/bitfield-signing/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/chain-selection/Cargo.toml | 2 +- node/core/dispute-coordinator/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/parachains-inherent/Cargo.toml | 2 +- node/core/provisioner/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/core/runtime-api/Cargo.toml | 2 +- node/jaeger/Cargo.toml | 2 +- node/malus/Cargo.toml | 2 +- node/metered-channel/Cargo.toml | 2 +- node/metrics/Cargo.toml | 2 +- node/network/approval-distribution/Cargo.toml | 2 +- .../availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bitfield-distribution/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/gossip-support/Cargo.toml | 2 +- node/network/protocol/Cargo.toml | 2 +- .../network/statement-distribution/Cargo.toml | 2 +- node/overseer/Cargo.toml | 2 +- node/overseer/overseer-gen/Cargo.toml | 2 +- .../overseer-gen/proc-macro/Cargo.toml | 2 +- node/primitives/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- node/subsystem-test-helpers/Cargo.toml | 2 +- node/subsystem-types/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/subsystem/Cargo.toml | 2 +- node/test/client/Cargo.toml | 2 +- node/test/polkadot-simnet/common/Cargo.toml | 2 +- node/test/polkadot-simnet/node/Cargo.toml | 2 +- node/test/polkadot-simnet/test/Cargo.toml | 2 +- node/test/service/Cargo.toml | 2 +- parachain/Cargo.toml | 2 +- parachain/test-parachains/Cargo.toml | 2 +- parachain/test-parachains/adder/Cargo.toml | 2 +- .../test-parachains/adder/collator/Cargo.toml | 2 +- parachain/test-parachains/halt/Cargo.toml | 2 +- primitives/Cargo.toml | 2 +- rpc/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/common/slot_range_helper/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/parachains/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/rococo/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- statement-table/Cargo.toml | 2 +- utils/remote-ext-tests/bags-list/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/pallet-xcm/Cargo.toml | 2 +- xcm/xcm-builder/Cargo.toml | 2 +- xcm/xcm-executor/Cargo.toml | 2 +- xcm/xcm-executor/integration-tests/Cargo.toml | 2 +- xcm/xcm-simulator/Cargo.toml | 2 +- xcm/xcm-simulator/example/Cargo.toml | 2 +- 74 files changed, 145 insertions(+), 145 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18b668a23585..bb0eb29ad560 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "kusama-runtime" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -4132,7 +4132,7 @@ dependencies = [ [[package]] name = "metered-channel" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "derive_more", @@ -5421,7 +5421,7 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-support", "frame-system", @@ -5795,7 +5795,7 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] name = "polkadot" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_cmd", "color-eyre", @@ -5807,7 +5807,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "env_logger 0.9.0", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "derive_more", @@ -5875,7 +5875,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "env_logger 0.9.0", @@ -5902,7 +5902,7 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-benchmarking-cli", "futures 0.3.17", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -5953,7 +5953,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.11" +version = "0.9.12" dependencies = [ "always-assert", "assert_matches", @@ -5980,7 +5980,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.11" +version = "0.9.12" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -5992,7 +5992,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6021,7 +6021,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.11" +version = "0.9.12" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -6034,7 +6034,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6083,7 +6083,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "parity-scale-codec", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6137,7 +6137,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6164,7 +6164,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6188,7 +6188,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "polkadot-node-subsystem", @@ -6203,7 +6203,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6224,7 +6224,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "maplit", @@ -6243,7 +6243,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "futures 0.3.17", @@ -6264,7 +6264,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6288,7 +6288,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-participation" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "futures 0.3.17", @@ -6304,7 +6304,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.11" +version = "0.9.12" dependencies = [ "async-trait", "futures 0.3.17", @@ -6320,7 +6320,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.11" +version = "0.9.12" dependencies = [ "bitvec 0.20.1", "futures 0.3.17", @@ -6337,7 +6337,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.11" +version = "0.9.12" dependencies = [ "always-assert", "assert_matches", @@ -6371,7 +6371,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "memory-lru", @@ -6390,7 +6390,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.11" +version = "0.9.12" dependencies = [ "async-std", "lazy_static", @@ -6407,7 +6407,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -6417,7 +6417,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.11" +version = "0.9.12" dependencies = [ "async-trait", "derive_more", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.11" +version = "0.9.12" dependencies = [ "bounded-vec", "futures 0.3.17", @@ -6456,7 +6456,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.11" +version = "0.9.12" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -6465,7 +6465,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.11" +version = "0.9.12" dependencies = [ "async-trait", "futures 0.3.17", @@ -6483,7 +6483,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.11" +version = "0.9.12" dependencies = [ "derive_more", "futures 0.3.17", @@ -6501,7 +6501,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "femme", @@ -6555,7 +6555,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" -version = "0.9.11" +version = "0.9.12" dependencies = [ "async-trait", "futures 0.3.17", @@ -6572,7 +6572,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "proc-macro-crate 1.1.0", @@ -6583,7 +6583,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.11" +version = "0.9.12" dependencies = [ "derive_more", "frame-support", @@ -6599,7 +6599,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.11" +version = "0.9.12" dependencies = [ "bitvec 0.20.1", "frame-system", @@ -6628,7 +6628,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -6658,7 +6658,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6740,7 +6740,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6790,7 +6790,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.11" +version = "0.9.12" dependencies = [ "bitflags", "bitvec 0.20.1", @@ -6833,7 +6833,7 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -6935,7 +6935,7 @@ dependencies = [ [[package]] name = "polkadot-simnet" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-benchmarking", "frame-support", @@ -6967,14 +6967,14 @@ dependencies = [ [[package]] name = "polkadot-simnet-node" -version = "0.9.11" +version = "0.9.12" dependencies = [ "polkadot-simnet", ] [[package]] name = "polkadot-simnet-test" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-system", "pallet-balances", @@ -6988,7 +6988,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.11" +version = "0.9.12" dependencies = [ "arrayvec 0.5.2", "assert_matches", @@ -7017,7 +7017,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.11" +version = "0.9.12" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -7026,7 +7026,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "parity-scale-codec", @@ -7052,7 +7052,7 @@ dependencies = [ [[package]] name = "polkadot-test-malus" -version = "0.9.11" +version = "0.9.12" dependencies = [ "assert_matches", "async-trait", @@ -7071,7 +7071,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -7136,7 +7136,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-benchmarking", "frame-system", @@ -7755,7 +7755,7 @@ dependencies = [ [[package]] name = "remote-ext-tests-bags-list" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-election-provider-support", "frame-support", @@ -7855,7 +7855,7 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bp-messages", @@ -9309,7 +9309,7 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "slot-range-helper" -version = "0.9.11" +version = "0.9.12" dependencies = [ "enumn", "parity-scale-codec", @@ -10082,7 +10082,7 @@ checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" [[package]] name = "staking-miner" -version = "0.9.11" +version = "0.9.12" dependencies = [ "env_logger 0.9.0", "frame-election-provider-support", @@ -10461,7 +10461,7 @@ dependencies = [ [[package]] name = "test-parachain-adder" -version = "0.9.11" +version = "0.9.12" dependencies = [ "dlmalloc", "parity-scale-codec", @@ -10474,7 +10474,7 @@ dependencies = [ [[package]] name = "test-parachain-adder-collator" -version = "0.9.11" +version = "0.9.12" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -10500,14 +10500,14 @@ dependencies = [ [[package]] name = "test-parachain-halt" -version = "0.9.11" +version = "0.9.12" dependencies = [ "substrate-wasm-builder", ] [[package]] name = "test-parachains" -version = "0.9.11" +version = "0.9.12" dependencies = [ "parity-scale-codec", "sp-core", @@ -11551,7 +11551,7 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.11" +version = "0.9.12" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -11733,7 +11733,7 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.11" +version = "0.9.12" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -11745,7 +11745,7 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-support", "frame-system", @@ -11768,7 +11768,7 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-benchmarking", "frame-support", @@ -11785,7 +11785,7 @@ dependencies = [ [[package]] name = "xcm-executor-integration-tests" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-support", "frame-system", @@ -11814,7 +11814,7 @@ dependencies = [ [[package]] name = "xcm-simulator" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-support", "parity-scale-codec", @@ -11830,7 +11830,7 @@ dependencies = [ [[package]] name = "xcm-simulator-example" -version = "0.9.11" +version = "0.9.12" dependencies = [ "frame-support", "frame-system", diff --git a/Cargo.toml b/Cargo.toml index 6d1257e39300..8ab176c69b13 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ path = "src/main.rs" name = "polkadot" description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework." license = "GPL-3.0-only" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" readme = "README.md" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index fe718cb7f414..279f650a5cf8 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-cli" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Polkadot Relay-chain Client Node" edition = "2018" diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index e3c1a5e8d478..352070cfbc70 100644 --- a/core-primitives/Cargo.toml +++ b/core-primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-core-primitives" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml index e7f71b14d1e3..76983ed75c1c 100644 --- a/erasure-coding/Cargo.toml +++ b/erasure-coding/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-erasure-coding" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/erasure-coding/fuzzer/Cargo.toml b/erasure-coding/fuzzer/Cargo.toml index cf2e512e861e..845622eb4823 100644 --- a/erasure-coding/fuzzer/Cargo.toml +++ b/erasure-coding/fuzzer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "erasure_coding_fuzzer" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/client/Cargo.toml b/node/client/Cargo.toml index 077429838c38..424ff89b209f 100644 --- a/node/client/Cargo.toml +++ b/node/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-client" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 7f6486708fc6..673c9732979b 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-collation-generation" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml index 51c03a4afca1..35c57bf0feeb 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-approval-voting" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 98a2f63d0dc6..c6a2d3a76681 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-av-store" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml index 0aa567d86b9c..b43d7b93eaeb 100644 --- a/node/core/backing/Cargo.toml +++ b/node/core/backing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-backing" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml index 99980654f927..b274f3796aa3 100644 --- a/node/core/bitfield-signing/Cargo.toml +++ b/node/core/bitfield-signing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-bitfield-signing" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml index cfdb69dd0119..103cd8698963 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-candidate-validation" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml index 4f2c235f3c66..6ce2f7b2b7e8 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-chain-api" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml index a33d7e4bdbed..2e0ab2c89e32 100644 --- a/node/core/chain-selection/Cargo.toml +++ b/node/core/chain-selection/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "polkadot-node-core-chain-selection" description = "Chain Selection Subsystem" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml index 0b800c57199a..747b06ec0c14 100644 --- a/node/core/dispute-coordinator/Cargo.toml +++ b/node/core/dispute-coordinator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index 9d3b85ab66ed..0813197eaa41 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-dispute-participation" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml index e05679e5328e..9a81398e7594 100644 --- a/node/core/parachains-inherent/Cargo.toml +++ b/node/core/parachains-inherent/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-parachains-inherent" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/provisioner/Cargo.toml b/node/core/provisioner/Cargo.toml index fd1a0aca8dcf..bc057e87624e 100644 --- a/node/core/provisioner/Cargo.toml +++ b/node/core/provisioner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-provisioner" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 2a40547efa5b..6179c6373b7d 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-pvf" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml index 32f561ac16be..fe593248a2e9 100644 --- a/node/core/runtime-api/Cargo.toml +++ b/node/core/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-runtime-api" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 00e3be90919e..059043ed6318 100644 --- a/node/jaeger/Cargo.toml +++ b/node/jaeger/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-jaeger" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Polkadot Jaeger primitives" diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index 94ab2d33ac5b..46009a2101cd 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -10,7 +10,7 @@ path = "src/variant-a.rs" name = "polkadot-test-malus" description = "Misbehaving nodes for local testnets, system and Simnet tests." license = "GPL-3.0-only" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" readme = "README.md" diff --git a/node/metered-channel/Cargo.toml b/node/metered-channel/Cargo.toml index 6048f5051109..8e955f88386f 100644 --- a/node/metered-channel/Cargo.toml +++ b/node/metered-channel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "metered-channel" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Channels with attached Meters" diff --git a/node/metrics/Cargo.toml b/node/metrics/Cargo.toml index d12a290c17a1..3e74dbdd4caa 100644 --- a/node/metrics/Cargo.toml +++ b/node/metrics/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-metrics" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/network/approval-distribution/Cargo.toml b/node/network/approval-distribution/Cargo.toml index a53ae5b36cf1..15a9cf08f47c 100644 --- a/node/network/approval-distribution/Cargo.toml +++ b/node/network/approval-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-approval-distribution" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml index d72729468641..36c0569ba87e 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-distribution" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index 08f39ed7846d..469834f18c8a 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-recovery" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml index b097a3730533..8c5ff49a8add 100644 --- a/node/network/bitfield-distribution/Cargo.toml +++ b/node/network/bitfield-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-bitfield-distribution" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/bridge/Cargo.toml b/node/network/bridge/Cargo.toml index 687ba11d7e28..500e713113c3 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-network-bridge" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index 3cc56538f79b..8eb98cfff59e 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-collator-protocol" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/dispute-distribution/Cargo.toml b/node/network/dispute-distribution/Cargo.toml index cfa85f9fac02..17eb33884d91 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-dispute-distribution" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index ccf110330d95..943ae17f2e9e 100644 --- a/node/network/gossip-support/Cargo.toml +++ b/node/network/gossip-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-gossip-support" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/protocol/Cargo.toml b/node/network/protocol/Cargo.toml index 3afc14e375e9..4fdc2eb4082f 100644 --- a/node/network/protocol/Cargo.toml +++ b/node/network/protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-network-protocol" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Primitives types for the Node-side" diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index def653fcaa11..d5b76fff9a75 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-statement-distribution" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Statement Distribution Subsystem" edition = "2018" diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index fc8abf8c67cf..d0f67c111cdd 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/overseer/overseer-gen/Cargo.toml b/node/overseer/overseer-gen/Cargo.toml index c5cbae7f6cd0..98f040efcf11 100644 --- a/node/overseer/overseer-gen/Cargo.toml +++ b/node/overseer/overseer-gen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer-gen" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Generate an overseer including builder pattern and message wrapper from a single struct." diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index a0b73e103c82..11bdf036952b 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Generate an overseer including builder pattern and message wrapper from a single annotated struct definition." diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 55596573f45b..eade6bf1e26c 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-primitives" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Primitives types for the Node-side" diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 622421be159b..ba15a841e8a5 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-service" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/subsystem-test-helpers/Cargo.toml b/node/subsystem-test-helpers/Cargo.toml index e17ce65a763f..0e196d582d47 100644 --- a/node/subsystem-test-helpers/Cargo.toml +++ b/node/subsystem-test-helpers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/subsystem-types/Cargo.toml b/node/subsystem-types/Cargo.toml index 2850cb21d504..8b7e493decf1 100644 --- a/node/subsystem-types/Cargo.toml +++ b/node/subsystem-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-types" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index 5d9a88581974..749b0bd4b1ba 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-util" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/subsystem/Cargo.toml b/node/subsystem/Cargo.toml index 5f6f1f2ca4a7..63925c5c328d 100644 --- a/node/subsystem/Cargo.toml +++ b/node/subsystem/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions and the generated overseer" diff --git a/node/test/client/Cargo.toml b/node/test/client/Cargo.toml index b6aa140fece6..d7ae86a39490 100644 --- a/node/test/client/Cargo.toml +++ b/node/test/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-client" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/polkadot-simnet/common/Cargo.toml b/node/test/polkadot-simnet/common/Cargo.toml index 70a788e33640..ac881328d09b 100644 --- a/node/test/polkadot-simnet/common/Cargo.toml +++ b/node/test/polkadot-simnet/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/polkadot-simnet/node/Cargo.toml b/node/test/polkadot-simnet/node/Cargo.toml index 6cf6ed9990c6..e64ed09b567d 100644 --- a/node/test/polkadot-simnet/node/Cargo.toml +++ b/node/test/polkadot-simnet/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet-node" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/polkadot-simnet/test/Cargo.toml b/node/test/polkadot-simnet/test/Cargo.toml index 18b41010f6ac..85d60968d6d0 100644 --- a/node/test/polkadot-simnet/test/Cargo.toml +++ b/node/test/polkadot-simnet/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet-test" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 81c8be5c4c74..bfd478797df3 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-service" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 5a09573f7926..77dcd13b5ce5 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-parachain" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Types and utilities for creating and working with parachains" edition = "2018" diff --git a/parachain/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml index cf2f4415628d..8d43827b1a2c 100644 --- a/parachain/test-parachains/Cargo.toml +++ b/parachain/test-parachains/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachains" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Integration tests using the test-parachains" edition = "2018" diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml index fbc6bc24613d..52e9da3a5536 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-adder" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Test parachain which adds to a number as its state transition" edition = "2018" diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 4315051ff9a9..3f63814b8086 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-adder-collator" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Collator for the adder test parachain" edition = "2018" diff --git a/parachain/test-parachains/halt/Cargo.toml b/parachain/test-parachains/halt/Cargo.toml index dd9a087928cf..1f3dc1db4c0f 100644 --- a/parachain/test-parachains/halt/Cargo.toml +++ b/parachain/test-parachains/halt/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-halt" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Test parachain which executes forever" edition = "2018" diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 4aa5d00a3a7c..c84c0f8f77a2 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-primitives" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index a6a49f333562..9d2339c0db08 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-rpc" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 48ba8d36055e..38b4092c6fe4 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime-common" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml index aec6b69355fe..d4bbb9bd60c7 100644 --- a/runtime/common/slot_range_helper/Cargo.toml +++ b/runtime/common/slot_range_helper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "slot-range-helper" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 1e04a113bdfa..cdd949aeb49a 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kusama-runtime" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index c281269b8682..da5e695b71fc 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime-parachains" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 07558ef8881d..10a9fecaeafd 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 294cb062a225..388d49101c16 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rococo-runtime" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index c621fbd3ca12..8c303041bdf9 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-runtime" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index 356ecefc5d5c..65a43599440d 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "westend-runtime" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index b6ae92a22c5b..c5d490ac1fd9 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-statement-table" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/utils/remote-ext-tests/bags-list/Cargo.toml b/utils/remote-ext-tests/bags-list/Cargo.toml index 6f97eabcf823..a2ba56a4652a 100644 --- a/utils/remote-ext-tests/bags-list/Cargo.toml +++ b/utils/remote-ext-tests/bags-list/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "remote-ext-tests-bags-list" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index bfc07614f5e6..6ddc85a2d985 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "staking-miner" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] edition = "2018" diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index 6c4c319170d0..f6a309b70c08 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "The basic XCM datastructures." edition = "2018" diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index a9ff97ddc088..1a487a169269 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -2,7 +2,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "pallet-xcm" -version = "0.9.11" +version = "0.9.12" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index 08f37b515ca7..639f801b2555 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -3,7 +3,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-builder" description = "Tools & types for building with XCM and its executor." -version = "0.9.11" +version = "0.9.12" [dependencies] parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } diff --git a/xcm/xcm-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index ab2184c81d1d..e0f2568c58c6 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -3,7 +3,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-executor" description = "An abstract and configurable XCM message executor." -version = "0.9.11" +version = "0.9.12" [dependencies] impl-trait-for-tuples = "0.2.0" diff --git a/xcm/xcm-executor/integration-tests/Cargo.toml b/xcm/xcm-executor/integration-tests/Cargo.toml index 5602a1f178e7..d88417536ea4 100644 --- a/xcm/xcm-executor/integration-tests/Cargo.toml +++ b/xcm/xcm-executor/integration-tests/Cargo.toml @@ -3,7 +3,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-executor-integration-tests" description = "Integration tests for the XCM Executor" -version = "0.9.11" +version = "0.9.12" [dependencies] frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/xcm/xcm-simulator/Cargo.toml b/xcm/xcm-simulator/Cargo.toml index abfa5560fc0c..a583851d1573 100644 --- a/xcm/xcm-simulator/Cargo.toml +++ b/xcm/xcm-simulator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm-simulator" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Test kit to simulate cross-chain message passing and XCM execution" edition = "2018" diff --git a/xcm/xcm-simulator/example/Cargo.toml b/xcm/xcm-simulator/example/Cargo.toml index 17ce84caabcd..c33a8080348f 100644 --- a/xcm/xcm-simulator/example/Cargo.toml +++ b/xcm/xcm-simulator/example/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm-simulator-example" -version = "0.9.11" +version = "0.9.12" authors = ["Parity Technologies "] description = "Examples of xcm-simulator usage." edition = "2018" From 926ba0f3bf4c9d0b2180cd4f3da0eb3f989aef83 Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Fri, 15 Oct 2021 21:59:57 +0200 Subject: [PATCH 04/71] bump substrate (#4091) --- Cargo.lock | 322 ++++++++++++++++++++++++++--------------------------- 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bb0eb29ad560..3d5f70c9a736 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -1910,7 +1910,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", ] @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "Inflector", "chrono", @@ -1974,7 +1974,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -1988,7 +1988,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -2016,7 +2016,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "bitflags", "frame-metadata", @@ -2043,7 +2043,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2055,7 +2055,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro2", "quote", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -2111,7 +2111,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "log", @@ -2128,7 +2128,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "sp-api", @@ -2365,7 +2365,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "chrono", "frame-election-provider-support", @@ -4606,7 +4606,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -4636,7 +4636,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -4651,7 +4651,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4675,7 +4675,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4710,7 +4710,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "beefy-primitives", "frame-support", @@ -4726,7 +4726,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4751,7 +4751,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4853,7 +4853,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4893,7 +4893,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4911,7 +4911,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4926,7 +4926,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5002,7 +5002,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5037,7 +5037,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5053,7 +5053,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5070,7 +5070,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5085,7 +5085,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5099,7 +5099,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5139,7 +5139,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5154,7 +5154,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5168,7 +5168,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5184,7 +5184,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5205,7 +5205,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5269,7 +5269,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "sp-arithmetic", @@ -5278,7 +5278,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5292,7 +5292,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5310,7 +5310,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5329,7 +5329,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-support", "frame-system", @@ -5346,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5391,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -5407,7 +5407,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-benchmarking", "frame-support", @@ -7778,7 +7778,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8041,7 +8041,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "sp-core", @@ -8052,7 +8052,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "derive_more", @@ -8079,7 +8079,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8102,7 +8102,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8118,7 +8118,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8134,7 +8134,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8145,7 +8145,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "chrono", "fdlimit", @@ -8183,7 +8183,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "fnv", "futures 0.3.17", @@ -8211,7 +8211,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "hash-db", "kvdb", @@ -8236,7 +8236,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "futures 0.3.17", @@ -8260,7 +8260,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "derive_more", @@ -8303,7 +8303,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "derive_more", "futures 0.3.17", @@ -8327,7 +8327,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8340,7 +8340,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "assert_matches", "async-trait", @@ -8374,7 +8374,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "futures 0.3.17", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "sc-client-api", "sp-authorship", @@ -8411,7 +8411,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8437,7 +8437,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "derive_more", "environmental", @@ -8455,7 +8455,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "parity-scale-codec", @@ -8471,7 +8471,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8489,7 +8489,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "derive_more", @@ -8526,7 +8526,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "derive_more", "finality-grandpa", @@ -8550,7 +8550,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8567,7 +8567,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "derive_more", @@ -8582,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "hash-db", "parity-scale-codec", @@ -8600,7 +8600,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-std", "async-trait", @@ -8651,7 +8651,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8667,7 +8667,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "bytes 1.0.1", "fnv", @@ -8694,7 +8694,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "libp2p", @@ -8707,7 +8707,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8716,7 +8716,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "hash-db", @@ -8747,7 +8747,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8772,7 +8772,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8789,7 +8789,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "directories", @@ -8854,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "parity-scale-codec", @@ -8868,7 +8868,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8890,7 +8890,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "chrono", "futures 0.3.17", @@ -8908,7 +8908,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8938,7 +8938,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8949,7 +8949,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "intervalier", @@ -8976,7 +8976,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "derive_more", "futures 0.3.17", @@ -8990,7 +8990,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9413,7 +9413,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "hash-db", "log", @@ -9430,7 +9430,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9442,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9455,7 +9455,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "integer-sqrt", "num-traits", @@ -9470,7 +9470,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9483,7 +9483,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "parity-scale-codec", @@ -9495,7 +9495,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "sp-api", @@ -9507,7 +9507,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "log", @@ -9525,7 +9525,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "futures 0.3.17", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "merlin", @@ -9567,7 +9567,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9578,7 +9578,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9590,7 +9590,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "base58", "blake2-rfc", @@ -9636,7 +9636,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "kvdb", "parking_lot", @@ -9645,7 +9645,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro2", "quote", @@ -9655,7 +9655,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "environmental", "parity-scale-codec", @@ -9666,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "finality-grandpa", "log", @@ -9684,7 +9684,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9698,7 +9698,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "hash-db", @@ -9722,7 +9722,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "lazy_static", "sp-core", @@ -9733,7 +9733,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "derive_more", @@ -9750,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "zstd", ] @@ -9758,7 +9758,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9773,7 +9773,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9784,7 +9784,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "sp-api", "sp-core", @@ -9794,7 +9794,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "backtrace", ] @@ -9802,7 +9802,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "rustc-hash", "serde", @@ -9812,7 +9812,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "either", "hash256-std-hasher", @@ -9834,7 +9834,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9863,7 +9863,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "serde", "serde_json", @@ -9872,7 +9872,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9886,7 +9886,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "scale-info", @@ -9897,7 +9897,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "hash-db", "log", @@ -9920,12 +9920,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9938,7 +9938,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "log", "sp-core", @@ -9951,7 +9951,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9967,7 +9967,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "sp-std", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "sp-api", "sp-runtime", @@ -9988,7 +9988,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "log", @@ -10004,7 +10004,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "hash-db", "memory-db", @@ -10019,7 +10019,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10035,7 +10035,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10046,7 +10046,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10274,7 +10274,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "platforms", ] @@ -10282,7 +10282,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10304,7 +10304,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-std", "derive_more", @@ -10318,7 +10318,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "async-trait", "futures 0.3.17", @@ -10345,7 +10345,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10355,7 +10355,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10366,7 +10366,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10519,7 +10519,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "frame-system", "futures 0.3.17", @@ -10960,7 +10960,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#00629de9b7aae97e041b21b081f469eb834169a7" +source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" dependencies = [ "jsonrpsee-ws-client", "log", From af5cbc3b9af8fe922adf001aed88c74671999c75 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Fri, 15 Oct 2021 15:03:34 -0700 Subject: [PATCH 05/71] Rename Statemint where appropriate (#4087) * Rename Statemint where appropriate * Rename to Rockmine Co-authored-by: Alexander Popiak Co-authored-by: Alexander Popiak --- runtime/kusama/src/lib.rs | 4 ++-- runtime/rococo/src/lib.rs | 4 ++-- xcm/xcm-builder/tests/mock/mod.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index d596769dd2e6..4a8cf6b95d2e 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1328,9 +1328,9 @@ pub type XcmRouter = ( parameter_types! { pub const Kusama: MultiAssetFilter = Wild(AllOf { fun: WildFungible, id: Concrete(KsmLocation::get()) }); - pub const KusamaForStatemint: (MultiAssetFilter, MultiLocation) = (Kusama::get(), Parachain(1000).into()); + pub const KusamaForStatemine: (MultiAssetFilter, MultiLocation) = (Kusama::get(), Parachain(1000).into()); } -pub type TrustedTeleporters = (xcm_builder::Case,); +pub type TrustedTeleporters = (xcm_builder::Case,); /// The barriers one of which must be passed for an XCM message to be executed. pub type Barrier = ( diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 6d96591dc9ba..d0a0c4dbda73 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -644,7 +644,7 @@ parameter_types! { pub const RococoForTick: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(100).into()); pub const RococoForTrick: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(110).into()); pub const RococoForTrack: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(120).into()); - pub const RococoForStatemint: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(1001).into()); + pub const RococoForRockmine: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(1001).into()); pub const RococoForCanvas: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(1002).into()); pub const MaxInstructions: u32 = 100; } @@ -652,7 +652,7 @@ pub type TrustedTeleporters = ( xcm_builder::Case, xcm_builder::Case, xcm_builder::Case, - xcm_builder::Case, + xcm_builder::Case, xcm_builder::Case, ); diff --git a/xcm/xcm-builder/tests/mock/mod.rs b/xcm/xcm-builder/tests/mock/mod.rs index 69ef0088a91d..7bbbb8873747 100644 --- a/xcm/xcm-builder/tests/mock/mod.rs +++ b/xcm/xcm-builder/tests/mock/mod.rs @@ -150,11 +150,11 @@ pub type Barrier = ( ); parameter_types! { - pub const KusamaForStatemint: (MultiAssetFilter, MultiLocation) = + pub const KusamaForStatemine: (MultiAssetFilter, MultiLocation) = (MultiAssetFilter::Wild(WildMultiAsset::AllOf { id: Concrete(MultiLocation::here()), fun: WildFungible }), X1(Parachain(1000)).into()); pub const MaxInstructions: u32 = 100; } -pub type TrustedTeleporters = (xcm_builder::Case,); +pub type TrustedTeleporters = (xcm_builder::Case,); pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { From 0f2a61e75aa2ae544979c1ce7178ee7db0f61f6d Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Sat, 16 Oct 2021 15:57:03 +0200 Subject: [PATCH 06/71] Fix typos in docs (#4092) * Fix typos * Update ump.rs * Update ump.rs * Update ump.rs --- runtime/parachains/src/ump.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/parachains/src/ump.rs b/runtime/parachains/src/ump.rs index b7a1c9f508fd..47111e357db9 100644 --- a/runtime/parachains/src/ump.rs +++ b/runtime/parachains/src/ump.rs @@ -202,20 +202,20 @@ pub mod pallet { /// Upward message executed with the given outcome. /// \[ id, outcome \] ExecutedUpward(MessageId, Outcome), - /// The weight limit for handling downward messages was reached. + /// The weight limit for handling upward messages was reached. /// \[ id, remaining, required \] WeightExhausted(MessageId, Weight, Weight), - /// Some downward messages have been received and will be processed. + /// Some upward messages have been received and will be processed. /// \[ para, count, size \] UpwardMessagesReceived(ParaId, u32, u32), - /// The weight budget was exceeded for an individual downward message. + /// The weight budget was exceeded for an individual upward message. /// /// This message can be later dispatched manually using `service_overweight` dispatchable /// using the assigned `overweight_index`. /// /// \[ para, id, overweight_index, required \] OverweightEnqueued(ParaId, MessageId, OverweightIndex, Weight), - /// Downward message from the overweight queue was executed with the given actual weight + /// Upward message from the overweight queue was executed with the given actual weight /// used. /// /// \[ overweight_index, used \] From b3d59c266af8fed1a19deff5367c49d4516e4f47 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 18 Oct 2021 00:03:33 -0500 Subject: [PATCH 07/71] polkadot: remove call filters on registrar pallets (#4093) --- runtime/polkadot/src/lib.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index c43fbcb85393..8f0c587882f1 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -167,9 +167,12 @@ impl Contains for BaseFilter { Call::Dmp(_) | Call::Ump(_) | Call::Hrmp(_) | - Call::Slots(_) => true, - // Disable paras registration, crowdloans, and auctions for now. - Call::Registrar(_) | Call::Auctions(_) | Call::Crowdloan(_) => false, + Call::Slots(_) | + Call::Registrar(_) | + Call::Auctions(_) | + Call::Crowdloan(_) => true, + // All pallets are allowed, but exhaustive match is defensive + // in the case of adding new pallets. } } } From 5f48c2a9447a26b99e185c55e242b73efe7267ee Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Mon, 18 Oct 2021 11:59:46 +0200 Subject: [PATCH 08/71] some spelling fixes (#4088) * quotes around Job::ToJob * add new words to dictionary --- node/collation-generation/src/lib.rs | 2 +- node/metered-channel/src/oneshot.rs | 4 ++-- node/subsystem-util/src/lib.rs | 2 +- runtime/parachains/src/disputes.rs | 2 +- runtime/parachains/src/hrmp.rs | 2 +- scripts/gitlab/lingua.dic | 5 +++++ 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/node/collation-generation/src/lib.rs b/node/collation-generation/src/lib.rs index c4b73b8b717a..2d6ef8e6b5e0 100644 --- a/node/collation-generation/src/lib.rs +++ b/node/collation-generation/src/lib.rs @@ -62,7 +62,7 @@ impl CollationGenerationSubsystem { /// Conceptually, this is very simple: it just loops forever. /// /// - On incoming overseer messages, it starts or stops jobs as appropriate. - /// - On other incoming messages, if they can be converted into Job::ToJob and + /// - On other incoming messages, if they can be converted into `Job::ToJob` and /// include a hash, then they're forwarded to the appropriate individual job. /// - On outgoing messages from the jobs, it forwards them to the overseer. /// diff --git a/node/metered-channel/src/oneshot.rs b/node/metered-channel/src/oneshot.rs index bf1a52682462..5f2c72cb701e 100644 --- a/node/metered-channel/src/oneshot.rs +++ b/node/metered-channel/src/oneshot.rs @@ -95,7 +95,7 @@ pub fn channel( #[allow(missing_docs)] #[derive(thiserror::Error, Debug)] pub enum Error { - #[error("Oneshot was cancelled.")] + #[error("Oneshot was canceled.")] Canceled(#[source] Canceled, Measurements), #[error("Oneshot did not receive a response within {}", Duration::as_secs_f64(.0))] HardTimeout(Duration, Measurements), @@ -124,7 +124,7 @@ impl MeteredSender { inner.send((Instant::now(), t)).map_err(|(_, t)| t) } - /// Poll if the thing is already cancelled. + /// Poll if the thing is already canceled. pub fn poll_canceled(&mut self, ctx: &mut Context<'_>) -> Poll<()> { self.inner.poll_canceled(ctx) } diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs index 0c5e35d1abc8..4e4e194e03dc 100644 --- a/node/subsystem-util/src/lib.rs +++ b/node/subsystem-util/src/lib.rs @@ -638,7 +638,7 @@ struct JobSubsystemParams { /// Conceptually, this is very simple: it just loops forever. /// /// - On incoming overseer messages, it starts or stops jobs as appropriate. -/// - On other incoming messages, if they can be converted into Job::ToJob and +/// - On other incoming messages, if they can be converted into `Job::ToJob` and /// include a hash, then they're forwarded to the appropriate individual job. /// - On outgoing messages from the jobs, it forwards them to the overseer. pub struct JobSubsystem { diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index 4059ed637868..7dde5f2b515a 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -708,7 +708,7 @@ impl Pallet { /// /// This functions modifies the state when failing. It is expected to be called in inherent, /// and to fail the extrinsic on error. As invalid inherents are not allowed, the dirty state - /// is not commited. + /// is not committed. pub(crate) fn provide_multi_dispute_data( statement_sets: MultiDisputeStatementSet, ) -> Result, DispatchError> { diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index 7e489ba73cf0..87ba4ad861b8 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -480,7 +480,7 @@ pub mod pallet { /// This cancels a pending open channel request. It can be canceled be either of the sender /// or the recipient for that request. The origin must be either of those. /// - /// The cancelling happens immediately. It is not possible to cancel the request if it is + /// The cancellation happens immediately. It is not possible to cancel the request if it is /// already accepted. #[pallet::weight(0)] pub fn hrmp_cancel_open_request( diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 24f642591f51..3d65a40c8187 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -67,6 +67,7 @@ encodable enqueue/D enqueue/DMSG entrypoint/MS +enum ERC-20 ETH/S ethereum/MS @@ -253,6 +254,8 @@ teleporter/SM teleporters testnet/MS timestamp/MS +timeframe +tradeoff transitionary trie/MS trustless/Y @@ -262,6 +265,7 @@ typesystem ubuntu/M UDP UI +unconcluded unfinalize/B unfinalized union/MSG @@ -291,6 +295,7 @@ VMP/SM VPS VRF/SM w3f/MS +wakeup wakeups warming/S wasm/M From 89f340b8df0fdac509ed7bab22e0673a93216a1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Oct 2021 16:22:01 +0200 Subject: [PATCH 09/71] Bump libc from 0.2.103 to 0.2.104 (#4099) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.103 to 0.2.104. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.103...0.2.104) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3d5f70c9a736..9efb926a4c66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3279,9 +3279,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.103" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" +checksum = "7b2f96d100e1cf1929e7719b7edb3b90ab5298072638fccd77be9ce942ecdfce" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 6179c6373b7d..b2a54f7d0eae 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.103" +libc = "0.2.104" slotmap = "1.0" tracing = "0.1.29" pin-project = "1.0.8" From b72dd98092d532dd3c2501691ea3f9dca9d43eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Tue, 19 Oct 2021 14:53:42 -0300 Subject: [PATCH 10/71] remove hardcoded pipeline scripts tag (#4109) the tag will be moved to Gitlab CI/CD variables --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fdf51e1c1012..2e620013dbef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,6 @@ variables: VAULT_SERVER_URL: "https://vault.parity-mgmt-vault.parity.io" VAULT_AUTH_PATH: "gitlab-parity-io-jwt" VAULT_AUTH_ROLE: "cicd_gitlab_parity_${CI_PROJECT_NAME}" - PIPELINE_SCRIPTS_TAG: "v0.1" default: cache: {} From bea3def23138cfef152082b12da171238f594f14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Oct 2021 23:52:46 +0200 Subject: [PATCH 11/71] Bump structopt from 0.3.23 to 0.3.25 (#4098) Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.23 to 0.3.25. - [Release notes](https://github.com/TeXitoi/structopt/releases) - [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md) - [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.23...v0.3.25) --- updated-dependencies: - dependency-name: structopt dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- cli/Cargo.toml | 2 +- node/malus/Cargo.toml | 2 +- node/test/polkadot-simnet/common/Cargo.toml | 2 +- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- utils/remote-ext-tests/bags-list/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- utils/voter-bags/Cargo.toml | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9efb926a4c66..0ce095c22684 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10168,9 +10168,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.23" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf9d950ef167e25e0bdb073cf1d68e9ad2795ac826f2f3f59647817cf23c0bfa" +checksum = "40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87c" dependencies = [ "clap", "lazy_static", @@ -10179,9 +10179,9 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134d838a2c9943ac3125cf6df165eda53493451b719f3255b2a26b85f772d0ba" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", "proc-macro-error 1.0.4", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 279f650a5cf8..899bd4cd0013 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -16,7 +16,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] log = "0.4.13" thiserror = "1.0.30" -structopt = { version = "0.3.23", optional = true } +structopt = { version = "0.3.25", optional = true } futures = "0.3.17" service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true } diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index 46009a2101cd..49c7d7a3f599 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -25,7 +25,7 @@ polkadot-node-core-pvf = { path = "../core/pvf" } parity-util-mem = { version = "0.10.0", default-features = false, features = ["jemalloc-global"] } color-eyre = { version = "0.5.11", default-features = false } assert_matches = "1.5" -structopt = "0.3.23" +structopt = "0.3.25" async-trait = "0.1.51" [dev-dependencies] diff --git a/node/test/polkadot-simnet/common/Cargo.toml b/node/test/polkadot-simnet/common/Cargo.toml index ac881328d09b..c4d0cb0f22a6 100644 --- a/node/test/polkadot-simnet/common/Cargo.toml +++ b/node/test/polkadot-simnet/common/Cargo.toml @@ -33,7 +33,7 @@ polkadot-runtime = { path = "../../../../runtime/polkadot" } polkadot-runtime-common = { path = "../../../../runtime/common" } codec = { package = "parity-scale-codec", version = "2.0.0" } -structopt = "0.3.23" +structopt = "0.3.25" [dev-dependencies] log = "0.4.14" diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 3f63814b8086..eb3840bf5d6e 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -18,7 +18,7 @@ parity-scale-codec = { version = "2.3.1", default-features = false, features = [ futures = "0.3.17" futures-timer = "3.0.2" log = "0.4.13" -structopt = "0.3.23" +structopt = "0.3.25" test-parachain-adder = { path = ".." } polkadot-primitives = { path = "../../../../primitives" } diff --git a/utils/remote-ext-tests/bags-list/Cargo.toml b/utils/remote-ext-tests/bags-list/Cargo.toml index a2ba56a4652a..1421a78b1249 100644 --- a/utils/remote-ext-tests/bags-list/Cargo.toml +++ b/utils/remote-ext-tests/bags-list/Cargo.toml @@ -21,4 +21,4 @@ frame-support = { git = "https://github.com/paritytech/substrate", branch = "mas remote-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" } tokio = { version = "1", features = ["macros"] } log = { version = "0.4.14" } -structopt = {version = "0.3.23" } +structopt = {version = "0.3.25" } diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 6ddc85a2d985..042f7da98594 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -9,7 +9,7 @@ codec = { package = "parity-scale-codec", version = "2.0.0" } tokio = { version = "1.12", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" -structopt = "0.3.23" +structopt = "0.3.25" jsonrpsee-ws-client = { version = "0.3.1", default-features = false, features = ["tokio1"] } serde_json = "1.0" serde = "1.0.130" diff --git a/utils/voter-bags/Cargo.toml b/utils/voter-bags/Cargo.toml index 0c48442e6cf3..2ebe24722265 100644 --- a/utils/voter-bags/Cargo.toml +++ b/utils/voter-bags/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] generate-bags = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } -structopt = "0.3.21" +structopt = "0.3.25" westend-runtime = { path = "../../runtime/westend" } kusama-runtime = { path = "../../runtime/kusama" } From 666e67d2e753644dfc9f042195bfc9e1051e4eb5 Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Wed, 20 Oct 2021 05:50:20 +0200 Subject: [PATCH 12/71] Remove stale migrations (#4107) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove stale migrations * fix warnings * Update runtime/westend/src/lib.rs Co-authored-by: Bastian Köcher Co-authored-by: Bastian Köcher --- runtime/kusama/src/lib.rs | 178 +----------------------------------- runtime/polkadot/src/lib.rs | 137 +-------------------------- runtime/westend/src/lib.rs | 22 +---- 3 files changed, 3 insertions(+), 334 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 4a8cf6b95d2e..c0aa9ce9c9d1 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -51,7 +51,6 @@ use frame_support::{ construct_runtime, parameter_types, traits::{ Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing, - OnRuntimeUpgrade, }, weights::Weight, PalletId, RuntimeDebug, @@ -1557,186 +1556,11 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - ( - CouncilStoragePrefixMigration, - TechnicalCommitteeStoragePrefixMigration, - TechnicalMembershipStoragePrefixMigration, - MigrateTipsPalletPrefix, - BountiesPrefixMigration, - StakingBagsListMigrationV8, - ), + (), >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; -const BOUNTIES_OLD_PREFIX: &str = "Treasury"; - -/// Migrate from 'Treasury' to the new prefix 'Bounties' -pub struct BountiesPrefixMigration; - -impl OnRuntimeUpgrade for BountiesPrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::migrate::(BOUNTIES_OLD_PREFIX, name) - } - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::pre_migration::( - BOUNTIES_OLD_PREFIX, - name, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::post_migration::( - BOUNTIES_OLD_PREFIX, - name, - ); - Ok(()) - } -} - -const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; -/// Migrate from `Instance1Collective` to the new pallet prefix `Council` -pub struct CouncilStoragePrefixMigration; - -impl OnRuntimeUpgrade for CouncilStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_collective::migrations::v4::migrate::(COUNCIL_OLD_PREFIX) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::pre_migrate::(COUNCIL_OLD_PREFIX); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::post_migrate::(COUNCIL_OLD_PREFIX); - Ok(()) - } -} - -const TECHNICAL_COMMITTEE_OLD_PREFIX: &str = "Instance2Collective"; -/// Migrate from `Instance2Collective` to the new pallet prefix `TechnicalCommittee` -pub struct TechnicalCommitteeStoragePrefixMigration; - -impl OnRuntimeUpgrade for TechnicalCommitteeStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_collective::migrations::v4::migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::pre_migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::post_migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ); - Ok(()) - } -} - -const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; -/// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` -pub struct TechnicalMembershipStoragePrefixMigration; - -impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnicalMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnicalMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::pre_migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnicalMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::post_migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ); - Ok(()) - } -} - -const TIPS_OLD_PREFIX: &str = "Treasury"; -/// Migrate pallet-tips from `Treasury` to the new pallet prefix `Tips` -pub struct MigrateTipsPalletPrefix; - -impl OnRuntimeUpgrade for MigrateTipsPalletPrefix { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_tips::migrations::v4::migrate::(TIPS_OLD_PREFIX) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_tips::migrations::v4::pre_migrate::(TIPS_OLD_PREFIX); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_tips::migrations::v4::post_migrate::(TIPS_OLD_PREFIX); - Ok(()) - } -} - -// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators. -pub struct StakingBagsListMigrationV8; - -impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_staking::migrations::v8::migrate::() - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_staking::migrations::v8::pre_migrate::() - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_staking::migrations::v8::post_migrate::() - } -} - #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 8f0c587882f1..fa472e0b22ab 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1352,146 +1352,11 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - ( - SetInitialHostConfiguration, - BountiesPrefixMigration, - CouncilStoragePrefixMigration, - TechnicalCommitteeStoragePrefixMigration, - TechnicalMembershipStoragePrefixMigration, - MigrateTipsPalletPrefix, - ), + (), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; -const BOUNTIES_OLD_PREFIX: &str = "Treasury"; - -/// Migrate from 'Treasury' to the new prefix 'Bounties' -pub struct BountiesPrefixMigration; - -impl OnRuntimeUpgrade for BountiesPrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::migrate::(BOUNTIES_OLD_PREFIX, name) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::pre_migration::( - BOUNTIES_OLD_PREFIX, - name, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("Bounties is part of runtime, so it has a name; qed"); - pallet_bounties::migrations::v4::post_migration::( - BOUNTIES_OLD_PREFIX, - name, - ); - Ok(()) - } -} - -const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; -/// Migrate from `Instance1Collective` to the new pallet prefix `Council` -pub struct CouncilStoragePrefixMigration; - -impl OnRuntimeUpgrade for CouncilStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_collective::migrations::v4::migrate::(COUNCIL_OLD_PREFIX) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::pre_migrate::(COUNCIL_OLD_PREFIX); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::post_migrate::(COUNCIL_OLD_PREFIX); - Ok(()) - } -} - -const TECHNICAL_COMMITTEE_OLD_PREFIX: &str = "Instance2Collective"; -/// Migrate from `Instance2Collective` to the new pallet prefix `TechnicalCommittee` -pub struct TechnicalCommitteeStoragePrefixMigration; - -impl OnRuntimeUpgrade for TechnicalCommitteeStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_collective::migrations::v4::migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::pre_migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_collective::migrations::v4::post_migrate::( - TECHNICAL_COMMITTEE_OLD_PREFIX, - ); - Ok(()) - } -} - -const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; -/// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` -pub struct TechnicalMembershipStoragePrefixMigration; - -impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnialMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnicalMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::pre_migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - use frame_support::traits::PalletInfo; - let name = ::PalletInfo::name::() - .expect("TechnicalMembership is part of runtime, so it has a name; qed"); - pallet_membership::migrations::v4::post_migrate::( - TECHNICAL_MEMBERSHIP_OLD_PREFIX, - name, - ); - Ok(()) - } -} - /// Set the initial host configuration for Polkadot. pub struct SetInitialHostConfiguration; impl OnRuntimeUpgrade for SetInitialHostConfiguration { diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 55ef0c129c2a..c19d16030539 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -20,7 +20,6 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -use frame_support::traits::OnRuntimeUpgrade; use pallet_transaction_payment::CurrencyAdapter; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::v1::{ @@ -1135,30 +1134,11 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (StakingBagsListMigrationV8,), + (), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; -// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators. -pub struct StakingBagsListMigrationV8; - -impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_staking::migrations::v8::migrate::() - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_staking::migrations::v8::pre_migrate::() - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_staking::migrations::v8::post_migrate::() - } -} - #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { From 4814420b8955ca98c361ddd677818ee1ca8b69bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Thu, 21 Oct 2021 11:03:54 -0300 Subject: [PATCH 13/71] remove logging from the check-dependent-* job (#4120) such command belongs to the script rather than the job --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2e620013dbef..bb996660f1c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -285,7 +285,6 @@ build-adder-collator: --polkadot "$DEPENDENT_REPO" "$GITHUB_PR_TOKEN" - - cd "$DEPENDENT_REPO" && git rev-parse --abbrev-ref HEAD check-dependent-cumulus: <<: *check-dependent-project From 8785cf6e64deec97f775e5cc4dea1ceb31f575c5 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 21 Oct 2021 17:48:50 +0300 Subject: [PATCH 14/71] Apply cargo fmt (#4122) --- runtime/kusama/src/lib.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index c0aa9ce9c9d1..8e8aa0d0213a 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -49,9 +49,7 @@ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, - traits::{ - Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing, - }, + traits::{Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing}, weights::Weight, PalletId, RuntimeDebug, }; From 84466fec428a7f653e785f546f4d4f22819f8b00 Mon Sep 17 00:00:00 2001 From: Cheng JIANG Date: Fri, 22 Oct 2021 10:25:57 +0800 Subject: [PATCH 15/71] export xcm_pallet config (#4116) * export xcm_pallet config Signed-off-by: Cheng JIANG * run format Signed-off-by: Cheng JIANG * fix typo Signed-off-by: Cheng JIANG * add generic parameter to support different runtimes * Revert "add generic parameter to support different runtimes" This reverts commit 4405ea9fab24307318ffc20a833010fe864b3be3. --- node/service/src/chain_spec.rs | 6 ++++++ runtime/kusama/src/lib.rs | 2 +- runtime/rococo/src/lib.rs | 2 +- runtime/westend/src/lib.rs | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 502c9dbf7217..84c6e767f0ea 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -558,6 +558,7 @@ fn westend_staging_testnet_config_genesis(wasm_binary: &[u8]) -> westend::Genesi registrar: westend_runtime::RegistrarConfig { next_free_para_id: polkadot_primitives::v1::LOWEST_PUBLIC_ID, }, + xcm_pallet: westend_runtime::XcmPalletConfig { safe_xcm_version: Some(2) }, } } @@ -755,6 +756,7 @@ fn kusama_staging_testnet_config_genesis(wasm_binary: &[u8]) -> kusama::GenesisC }, gilt: Default::default(), paras: Default::default(), + xcm_pallet: kusama::XcmPalletConfig { safe_xcm_version: Some(2) }, } } @@ -1054,6 +1056,7 @@ fn rococo_staging_testnet_config_genesis(wasm_binary: &[u8]) -> rococo_runtime:: registrar: rococo_runtime::RegistrarConfig { next_free_para_id: polkadot_primitives::v1::LOWEST_PUBLIC_ID, }, + xcm_pallet: rococo_runtime::XcmPalletConfig { safe_xcm_version: Some(2) }, // bridge_rococo_grandpa: rococo_runtime::BridgeRococoGrandpaConfig { // owner: Some(endowed_accounts[0].clone()), // ..Default::default() @@ -1411,6 +1414,7 @@ pub fn kusama_testnet_genesis( }, gilt: Default::default(), paras: Default::default(), + xcm_pallet: kusama::XcmPalletConfig { safe_xcm_version: Some(2) }, } } @@ -1492,6 +1496,7 @@ pub fn westend_testnet_genesis( registrar: westend_runtime::RegistrarConfig { next_free_para_id: polkadot_primitives::v1::LOWEST_PUBLIC_ID, }, + xcm_pallet: westend_runtime::XcmPalletConfig { safe_xcm_version: Some(2) }, } } @@ -1568,6 +1573,7 @@ pub fn rococo_testnet_genesis( registrar: rococo_runtime::RegistrarConfig { next_free_para_id: polkadot_primitives::v1::LOWEST_PUBLIC_ID, }, + xcm_pallet: rococo_runtime::XcmPalletConfig { safe_xcm_version: Some(2) }, // bridge_rococo_grandpa: rococo_runtime::BridgeRococoGrandpaConfig { // owner: Some(root_key.clone()), // ..Default::default() diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 8e8aa0d0213a..3c6c6b56b028 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1521,7 +1521,7 @@ construct_runtime! { Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 73, // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 99, } } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index d0a0c4dbda73..1dd8cc57dd0b 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -255,7 +255,7 @@ construct_runtime! { Multisig: pallet_multisig::{Pallet, Call, Storage, Event}, // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 99, } } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index c19d16030539..e4c1d5e15efe 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -1101,7 +1101,7 @@ construct_runtime! { Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 64, // Pallet for sending XCM. - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config} = 99, } } From fc32642c5011721916cb0f9e083800c281979980 Mon Sep 17 00:00:00 2001 From: Chris Sosnin <48099298+slumber@users.noreply.github.com> Date: Fri, 22 Oct 2021 15:49:26 +0300 Subject: [PATCH 16/71] Introduce new Runtime API endpoint for fetching the validation data (#3728) * Introduce new Runtime API endpoint `persisted_validation_data_with_code_hash` that will be used by the candidate validation subsystem in order to decrease amount of runtime API requests. * Node-side part of new runtime API request * Define code hash getter via macro * Rename new endpoint to `assumed_validation_data` * Docs for runtime API impl of new endpoint * AssumedValidationData specialized request function * fmt --- node/core/runtime-api/src/cache.rs | 27 ++++++++ node/core/runtime-api/src/lib.rs | 30 +++++++++ node/core/runtime-api/src/tests.rs | 63 +++++++++++++++++++ node/subsystem-types/src/messages.rs | 7 +++ node/subsystem-util/src/lib.rs | 3 +- primitives/src/v1/mod.rs | 8 +++ runtime/kusama/src/lib.rs | 10 +++ runtime/parachains/src/paras.rs | 3 +- runtime/parachains/src/runtime_api_impl/v1.rs | 46 ++++++++++++-- runtime/polkadot/src/lib.rs | 10 +++ runtime/rococo/src/lib.rs | 10 +++ runtime/test-runtime/src/lib.rs | 10 +++ runtime/westend/src/lib.rs | 10 +++ 13 files changed, 230 insertions(+), 7 deletions(-) diff --git a/node/core/runtime-api/src/cache.rs b/node/core/runtime-api/src/cache.rs index 9c3aeaa8d819..88b579402e64 100644 --- a/node/core/runtime-api/src/cache.rs +++ b/node/core/runtime-api/src/cache.rs @@ -33,6 +33,7 @@ const VALIDATORS_CACHE_SIZE: usize = 64 * 1024; const VALIDATOR_GROUPS_CACHE_SIZE: usize = 64 * 1024; const AVAILABILITY_CORES_CACHE_SIZE: usize = 64 * 1024; const PERSISTED_VALIDATION_DATA_CACHE_SIZE: usize = 64 * 1024; +const ASSUMED_VALIDATION_DATA_CACHE_SIZE: usize = 64 * 1024; const CHECK_VALIDATION_OUTPUTS_CACHE_SIZE: usize = 64 * 1024; const SESSION_INDEX_FOR_CHILD_CACHE_SIZE: usize = 64 * 1024; const VALIDATION_CODE_CACHE_SIZE: usize = 10 * 1024 * 1024; @@ -80,6 +81,10 @@ pub(crate) struct RequestResultCache { (Hash, ParaId, OccupiedCoreAssumption), ResidentSizeOf>, >, + assumed_validation_data: MemoryLruCache< + (ParaId, Hash), + ResidentSizeOf>, + >, check_validation_outputs: MemoryLruCache<(Hash, ParaId, CandidateCommitments), ResidentSizeOf>, session_index_for_child: MemoryLruCache>, @@ -111,6 +116,7 @@ impl Default for RequestResultCache { validator_groups: MemoryLruCache::new(VALIDATOR_GROUPS_CACHE_SIZE), availability_cores: MemoryLruCache::new(AVAILABILITY_CORES_CACHE_SIZE), persisted_validation_data: MemoryLruCache::new(PERSISTED_VALIDATION_DATA_CACHE_SIZE), + assumed_validation_data: MemoryLruCache::new(ASSUMED_VALIDATION_DATA_CACHE_SIZE), check_validation_outputs: MemoryLruCache::new(CHECK_VALIDATION_OUTPUTS_CACHE_SIZE), session_index_for_child: MemoryLruCache::new(SESSION_INDEX_FOR_CHILD_CACHE_SIZE), validation_code: MemoryLruCache::new(VALIDATION_CODE_CACHE_SIZE), @@ -190,6 +196,21 @@ impl RequestResultCache { self.persisted_validation_data.insert(key, ResidentSizeOf(data)); } + pub(crate) fn assumed_validation_data( + &mut self, + key: (Hash, ParaId, Hash), + ) -> Option<&Option<(PersistedValidationData, ValidationCodeHash)>> { + self.assumed_validation_data.get(&(key.1, key.2)).map(|v| &v.0) + } + + pub(crate) fn cache_assumed_validation_data( + &mut self, + key: (ParaId, Hash), + data: Option<(PersistedValidationData, ValidationCodeHash)>, + ) { + self.assumed_validation_data.insert(key, ResidentSizeOf(data)); + } + pub(crate) fn check_validation_outputs( &mut self, key: (Hash, ParaId, CandidateCommitments), @@ -347,6 +368,12 @@ pub(crate) enum RequestResult { ValidatorGroups(Hash, (Vec>, GroupRotationInfo)), AvailabilityCores(Hash, Vec), PersistedValidationData(Hash, ParaId, OccupiedCoreAssumption, Option), + AssumedValidationData( + Hash, + ParaId, + Hash, + Option<(PersistedValidationData, ValidationCodeHash)>, + ), CheckValidationOutputs(Hash, ParaId, CandidateCommitments, bool), SessionIndexForChild(Hash, SessionIndex), ValidationCode(Hash, ParaId, OccupiedCoreAssumption, Option), diff --git a/node/core/runtime-api/src/lib.rs b/node/core/runtime-api/src/lib.rs index a24192c2c54f..4aadae4cfa5f 100644 --- a/node/core/runtime-api/src/lib.rs +++ b/node/core/runtime-api/src/lib.rs @@ -119,6 +119,15 @@ where PersistedValidationData(relay_parent, para_id, assumption, data) => self .requests_cache .cache_persisted_validation_data((relay_parent, para_id, assumption), data), + AssumedValidationData( + _relay_parent, + para_id, + expected_persisted_validation_data_hash, + data, + ) => self.requests_cache.cache_assumed_validation_data( + (para_id, expected_persisted_validation_data_hash), + data, + ), CheckValidationOutputs(relay_parent, para_id, commitments, b) => self .requests_cache .cache_check_validation_outputs((relay_parent, para_id, commitments), b), @@ -186,6 +195,21 @@ where Request::PersistedValidationData(para, assumption, sender) => query!(persisted_validation_data(para, assumption), sender) .map(|sender| Request::PersistedValidationData(para, assumption, sender)), + Request::AssumedValidationData( + para, + expected_persisted_validation_data_hash, + sender, + ) => query!( + assumed_validation_data(para, expected_persisted_validation_data_hash), + sender + ) + .map(|sender| { + Request::AssumedValidationData( + para, + expected_persisted_validation_data_hash, + sender, + ) + }), Request::CheckValidationOutputs(para, commitments, sender) => query!(check_validation_outputs(para, commitments), sender) .map(|sender| Request::CheckValidationOutputs(para, commitments, sender)), @@ -330,6 +354,12 @@ where query!(AvailabilityCores, availability_cores(), sender), Request::PersistedValidationData(para, assumption, sender) => query!(PersistedValidationData, persisted_validation_data(para, assumption), sender), + Request::AssumedValidationData(para, expected_persisted_validation_data_hash, sender) => + query!( + AssumedValidationData, + assumed_validation_data(para, expected_persisted_validation_data_hash), + sender + ), Request::CheckValidationOutputs(para, commitments, sender) => query!(CheckValidationOutputs, check_validation_outputs(para, commitments), sender), Request::SessionIndexForChild(sender) => diff --git a/node/core/runtime-api/src/tests.rs b/node/core/runtime-api/src/tests.rs index 983aa7d89e20..ab2156551949 100644 --- a/node/core/runtime-api/src/tests.rs +++ b/node/core/runtime-api/src/tests.rs @@ -90,6 +90,17 @@ sp_api::mock_impl_runtime_apis! { self.validation_data.get(¶).cloned() } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + self.validation_data + .get(¶_id) + .cloned() + .filter(|data| data.hash() == expected_persisted_validation_data_hash) + .zip(self.validation_code.get(¶_id).map(|code| code.hash())) + } + fn check_validation_outputs( &self, para_id: ParaId, @@ -345,6 +356,58 @@ fn requests_persisted_validation_data() { futures::executor::block_on(future::join(subsystem_task, test_task)); } +#[test] +fn requests_assumed_validation_data() { + let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); + let relay_parent = [1; 32].into(); + let para_a = 5.into(); + let para_b = 6.into(); + let spawner = sp_core::testing::TaskExecutor::new(); + + let validation_code = ValidationCode(vec![1, 2, 3]); + let expected_data_hash = ::default().hash(); + let expected_code_hash = validation_code.hash(); + + let mut runtime_api = MockRuntimeApi::default(); + runtime_api.validation_data.insert(para_a, Default::default()); + runtime_api.validation_code.insert(para_a, validation_code); + runtime_api.validation_data.insert(para_b, Default::default()); + let runtime_api = Arc::new(runtime_api); + + let subsystem = RuntimeApiSubsystem::new(runtime_api.clone(), Metrics(None), spawner); + let subsystem_task = run(ctx, subsystem).map(|x| x.unwrap()); + let test_task = async move { + let (tx, rx) = oneshot::channel(); + + ctx_handle + .send(FromOverseer::Communication { + msg: RuntimeApiMessage::Request( + relay_parent, + Request::AssumedValidationData(para_a, expected_data_hash, tx), + ), + }) + .await; + + assert_eq!(rx.await.unwrap().unwrap(), Some((Default::default(), expected_code_hash))); + + let (tx, rx) = oneshot::channel(); + ctx_handle + .send(FromOverseer::Communication { + msg: RuntimeApiMessage::Request( + relay_parent, + Request::AssumedValidationData(para_a, Hash::zero(), tx), + ), + }) + .await; + + assert_eq!(rx.await.unwrap().unwrap(), None); + + ctx_handle.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + }; + + futures::executor::block_on(future::join(subsystem_task, test_task)); +} + #[test] fn requests_check_validation_outputs() { let (ctx, mut ctx_handle) = test_helpers::make_subsystem_context(TaskExecutor::new()); diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index f9c739f9dbdf..c89ccd118904 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -611,6 +611,13 @@ pub enum RuntimeApiRequest { OccupiedCoreAssumption, RuntimeApiSender>, ), + /// Get the persisted validation data for a particular para along with the current validation code + /// hash, matching the data hash against an expected one. + AssumedValidationData( + ParaId, + Hash, + RuntimeApiSender>, + ), /// Sends back `true` if the validation outputs pass all acceptance criteria checks. CheckValidationOutputs( ParaId, diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs index 4e4e194e03dc..7ef0fccffc4e 100644 --- a/node/subsystem-util/src/lib.rs +++ b/node/subsystem-util/src/lib.rs @@ -53,7 +53,7 @@ use polkadot_primitives::v1::{ AuthorityDiscoveryId, CandidateEvent, CommittedCandidateReceipt, CoreState, EncodeAs, GroupIndex, GroupRotationInfo, Hash, Id as ParaId, OccupiedCoreAssumption, PersistedValidationData, SessionIndex, SessionInfo, Signed, SigningContext, ValidationCode, - ValidatorId, ValidatorIndex, + ValidationCodeHash, ValidatorId, ValidatorIndex, }; use sp_application_crypto::AppKey; use sp_core::{traits::SpawnNamed, Public}; @@ -206,6 +206,7 @@ specialize_requests! { fn request_validator_groups() -> (Vec>, GroupRotationInfo); ValidatorGroups; fn request_availability_cores() -> Vec; AvailabilityCores; fn request_persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) -> Option; PersistedValidationData; + fn request_assumed_validation_data(para_id: ParaId, expected_persisted_validation_data_hash: Hash) -> Option<(PersistedValidationData, ValidationCodeHash)>; AssumedValidationData; fn request_session_index_for_child() -> SessionIndex; SessionIndexForChild; fn request_validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) -> Option; ValidationCode; fn request_candidate_pending_availability(para_id: ParaId) -> Option; CandidatePendingAvailability; diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs index cbea6480efef..a4b598dd6c6a 100644 --- a/primitives/src/v1/mod.rs +++ b/primitives/src/v1/mod.rs @@ -997,6 +997,14 @@ sp_api::decl_runtime_apis! { fn persisted_validation_data(para_id: Id, assumption: OccupiedCoreAssumption) -> Option>; + /// Returns the persisted validation data for the given `ParaId` along with the corresponding + /// validation code hash. Instead of accepting assumption about the para, matches the validation + /// data hash against an expected one and yields `None` if they're not equal. + fn assumed_validation_data( + para_id: Id, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)>; + /// Checks if the given validation outputs pass the acceptance criteria. fn check_validation_outputs(para_id: Id, outputs: CandidateCommitments) -> bool; diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 3c6c6b56b028..0b58ff7c3ae1 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1636,6 +1636,16 @@ sp_api::impl_runtime_apis! { parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + parachains_runtime_api_impl::assumed_validation_data::( + para_id, + expected_persisted_validation_data_hash, + ) + } + fn check_validation_outputs( para_id: ParaId, outputs: primitives::v1::CandidateCommitments, diff --git a/runtime/parachains/src/paras.rs b/runtime/parachains/src/paras.rs index 4582e3e99c44..d7bc9e7a7619 100644 --- a/runtime/parachains/src/paras.rs +++ b/runtime/parachains/src/paras.rs @@ -365,6 +365,7 @@ pub mod pallet { /// /// Corresponding code can be retrieved with [`CodeByHash`]. #[pallet::storage] + #[pallet::getter(fn current_code_hash)] pub(super) type CurrentCodeHash = StorageMap<_, Twox64Concat, ParaId, ValidationCodeHash>; @@ -623,7 +624,7 @@ impl Pallet { /// The validation code of live para. pub(crate) fn current_code(para_id: &ParaId) -> Option { - CurrentCodeHash::::get(para_id).and_then(|code_hash| { + Self::current_code_hash(para_id).and_then(|code_hash| { let code = CodeByHash::::get(&code_hash); if code.is_none() { log::error!( diff --git a/runtime/parachains/src/runtime_api_impl/v1.rs b/runtime/parachains/src/runtime_api_impl/v1.rs index 5909ea55290b..d544ec4ed646 100644 --- a/runtime/parachains/src/runtime_api_impl/v1.rs +++ b/runtime/parachains/src/runtime_api_impl/v1.rs @@ -23,7 +23,7 @@ use crate::{ }; use primitives::v1::{ AuthorityDiscoveryId, CandidateEvent, CommittedCandidateReceipt, CoreIndex, CoreOccupied, - CoreState, GroupIndex, GroupRotationInfo, Id as ParaId, InboundDownwardMessage, + CoreState, GroupIndex, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, OccupiedCore, OccupiedCoreAssumption, PersistedValidationData, ScheduledCore, ScrapedOnChainVotes, SessionIndex, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, @@ -173,6 +173,16 @@ pub fn availability_cores() -> Vec( +) -> (::BlockNumber, ::Hash) { + use parity_scale_codec::Decode as _; + let relay_parent_number = >::block_number(); + let relay_parent_storage_root = T::Hash::decode(&mut &sp_io::storage::root()[..]) + .expect("storage root must decode to the Hash type; qed"); + (relay_parent_number, relay_parent_storage_root) +} + fn with_assumption( para_id: ParaId, assumption: OccupiedCoreAssumption, @@ -203,10 +213,7 @@ pub fn persisted_validation_data( para_id: ParaId, assumption: OccupiedCoreAssumption, ) -> Option> { - use parity_scale_codec::Decode as _; - let relay_parent_number = >::block_number(); - let relay_parent_storage_root = T::Hash::decode(&mut &sp_io::storage::root()[..]) - .expect("storage root must decode to the Hash type; qed"); + let (relay_parent_number, relay_parent_storage_root) = current_relay_parent::(); with_assumption::(para_id, assumption, || { crate::util::make_persisted_validation_data::( para_id, @@ -216,6 +223,35 @@ pub fn persisted_validation_data( }) } +/// Implementation for the `assumed_validation_data` function of the runtime API. +pub fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, +) -> Option<(PersistedValidationData, ValidationCodeHash)> { + let (relay_parent_number, relay_parent_storage_root) = current_relay_parent::(); + // This closure obtains the `persisted_validation_data` for the given `para_id` and matches + // its hash against an expected one. + let make_validation_data = || { + crate::util::make_persisted_validation_data::( + para_id, + relay_parent_number, + relay_parent_storage_root, + ) + .filter(|validation_data| validation_data.hash() == expected_persisted_validation_data_hash) + }; + + let persisted_validation_data = make_validation_data().or_else(|| { + // Try again with force enacting the core. This check only makes sense if + // the core is occupied. + >::pending_availability(para_id).and_then(|_| { + >::force_enact(para_id); + make_validation_data() + }) + }); + // If we were successful, also query current validation code hash. + persisted_validation_data.zip(>::current_code_hash(¶_id)) +} + /// Implementation for the `check_validation_outputs` function of the runtime API. pub fn check_validation_outputs( para_id: ParaId, diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index fa472e0b22ab..e8feec47b0dd 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1534,6 +1534,16 @@ sp_api::impl_runtime_apis! { parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + parachains_runtime_api_impl::assumed_validation_data::( + para_id, + expected_persisted_validation_data_hash, + ) + } + fn check_validation_outputs( para_id: ParaId, outputs: primitives::v1::CandidateCommitments, diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 1dd8cc57dd0b..bf3826f5512f 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -1238,6 +1238,16 @@ sp_api::impl_runtime_apis! { runtime_api_impl::persisted_validation_data::(para_id, assumption) } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + runtime_api_impl::assumed_validation_data::( + para_id, + expected_persisted_validation_data_hash, + ) + } + fn check_validation_outputs( para_id: Id, outputs: primitives::v1::CandidateCommitments, diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index bb1db523d33e..773c50920c52 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -801,6 +801,16 @@ sp_api::impl_runtime_apis! { runtime_impl::persisted_validation_data::(para_id, assumption) } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + runtime_impl::assumed_validation_data::( + para_id, + expected_persisted_validation_data_hash, + ) + } + fn check_validation_outputs( para_id: ParaId, outputs: primitives::v1::CandidateCommitments, diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index e4c1d5e15efe..8fbcdb7099c6 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -1216,6 +1216,16 @@ sp_api::impl_runtime_apis! { parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) } + fn assumed_validation_data( + para_id: ParaId, + expected_persisted_validation_data_hash: Hash, + ) -> Option<(PersistedValidationData, ValidationCodeHash)> { + parachains_runtime_api_impl::assumed_validation_data::( + para_id, + expected_persisted_validation_data_hash, + ) + } + fn check_validation_outputs( para_id: ParaId, outputs: primitives::v1::CandidateCommitments, From ee1b80aa117516918bb0591a1ec5a27030e4c64c Mon Sep 17 00:00:00 2001 From: Chris Sosnin <48099298+slumber@users.noreply.github.com> Date: Fri, 22 Oct 2021 19:37:58 +0300 Subject: [PATCH 17/71] Move artifacts states into memory in PVF validation host (#3907) * pvf host: store only compiled artifacts on disk * Correctly handle failed artifacts * Serialize result of PVF preparation uniquely * Set the artifact state depending on the result * Return the result of PVF preparation directly * Move PrepareError to the error module * Update doc comments * Update misleading comment * Cleanup docs * Conclude a test job with an error Co-authored-by: Sergei Shulepov --- node/core/pvf/src/artifacts.rs | 33 +++--- node/core/pvf/src/error.rs | 25 +++++ node/core/pvf/src/execute/worker.rs | 16 +-- node/core/pvf/src/host.rs | 37 +++++-- node/core/pvf/src/prepare/pool.rs | 29 ++++-- node/core/pvf/src/prepare/queue.rs | 46 +++++---- node/core/pvf/src/prepare/worker.rs | 149 +++++++++++++++------------- 7 files changed, 199 insertions(+), 136 deletions(-) diff --git a/node/core/pvf/src/artifacts.rs b/node/core/pvf/src/artifacts.rs index dfe08afe1a70..e69478479efc 100644 --- a/node/core/pvf/src/artifacts.rs +++ b/node/core/pvf/src/artifacts.rs @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +use crate::error::PrepareError; use always_assert::always; use async_std::path::{Path, PathBuf}; use parity_scale_codec::{Decode, Encode}; @@ -23,30 +24,19 @@ use std::{ time::{Duration, SystemTime}, }; -/// A final product of preparation process. Contains either a ready to run compiled artifact or -/// a description what went wrong. +/// A wrapper for the compiled PVF code. #[derive(Encode, Decode)] -pub enum Artifact { - /// During the prevalidation stage of preparation an issue was found with the PVF. - PrevalidationErr(String), - /// Compilation failed for the given PVF. - PreparationErr(String), - /// This state indicates that the process assigned to prepare the artifact wasn't responsible - /// or were killed. This state is reported by the validation host (not by the worker). - DidntMakeIt, - /// The PVF passed all the checks and is ready for execution. - Compiled { compiled_artifact: Vec }, -} +pub struct CompiledArtifact(Vec); -impl Artifact { - /// Serializes this struct into a byte buffer. - pub fn serialize(&self) -> Vec { - self.encode() +impl CompiledArtifact { + pub fn new(code: Vec) -> Self { + Self(code) } +} - /// Deserialize the given byte buffer to an artifact. - pub fn deserialize(mut bytes: &[u8]) -> Result { - Artifact::decode(&mut bytes).map_err(|e| format!("{:?}", e)) +impl AsRef<[u8]> for CompiledArtifact { + fn as_ref(&self) -> &[u8] { + self.0.as_slice() } } @@ -117,6 +107,9 @@ pub enum ArtifactState { }, /// A task to prepare this artifact is scheduled. Preparing, + /// The code couldn't be compiled due to an error. Such artifacts + /// never reach the executor and stay in the host's memory. + FailedToProcess(PrepareError), } /// A container of all known artifact ids and their states. diff --git a/node/core/pvf/src/error.rs b/node/core/pvf/src/error.rs index f0ba95515054..8afd0ddddb4b 100644 --- a/node/core/pvf/src/error.rs +++ b/node/core/pvf/src/error.rs @@ -14,6 +14,20 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . +use parity_scale_codec::{Decode, Encode}; + +/// An error that occurred during the prepare part of the PVF pipeline. +#[derive(Debug, Clone, Encode, Decode)] +pub enum PrepareError { + /// During the prevalidation stage of preparation an issue was found with the PVF. + Prevalidation(String), + /// Compilation failed for the given PVF. + Preparation(String), + /// This state indicates that the process assigned to prepare the artifact wasn't responsible + /// or were killed. This state is reported by the validation host (not by the worker). + DidNotMakeIt, +} + /// A error raised during validation of the candidate. #[derive(Debug, Clone)] pub enum ValidationError { @@ -54,3 +68,14 @@ pub enum InvalidCandidate { /// PVF execution (compilation is not included) took more time than was allotted. HardTimeout, } + +impl From for ValidationError { + fn from(error: PrepareError) -> Self { + let error_str = match error { + PrepareError::Prevalidation(err) => err, + PrepareError::Preparation(err) => err, + PrepareError::DidNotMakeIt => "preparation timeout".to_owned(), + }; + ValidationError::InvalidCandidate(InvalidCandidate::WorkerReportedError(error_str)) + } +} diff --git a/node/core/pvf/src/execute/worker.rs b/node/core/pvf/src/execute/worker.rs index 86e892672d9e..a1c4e6d55788 100644 --- a/node/core/pvf/src/execute/worker.rs +++ b/node/core/pvf/src/execute/worker.rs @@ -15,7 +15,7 @@ // along with Polkadot. If not, see . use crate::{ - artifacts::{Artifact, ArtifactPathId}, + artifacts::{ArtifactPathId, CompiledArtifact}, executor_intf::TaskExecutor, worker_common::{ bytes_to_path, framed_recv, framed_send, path_to_bytes, spawn_with_program_path, @@ -49,8 +49,8 @@ pub enum Outcome { /// PVF execution completed successfully and the result is returned. The worker is ready for /// another job. Ok { result_descriptor: ValidationResult, duration_ms: u64, idle_worker: IdleWorker }, - /// The candidate validation failed. It may be for example because the preparation process - /// produced an error or the wasm execution triggered a trap. + /// The candidate validation failed. It may be for example because the wasm execution triggered a trap. + /// Errors related to the preparation process are not expected to be encountered by the execution workers. InvalidCandidate { err: String, idle_worker: IdleWorker }, /// An internal error happened during the validation. Such an error is most likely related to /// some transient glitch. @@ -216,18 +216,12 @@ async fn validate_using_artifact( Ok(b) => b, }; - let artifact = match Artifact::deserialize(&artifact_bytes) { + let artifact = match CompiledArtifact::decode(&mut artifact_bytes.as_slice()) { Err(e) => return Response::InternalError(format!("artifact deserialization: {:?}", e)), Ok(a) => a, }; - let compiled_artifact = match &artifact { - Artifact::PrevalidationErr(msg) => return Response::format_invalid("prevalidation", msg), - Artifact::PreparationErr(msg) => return Response::format_invalid("preparation", msg), - Artifact::DidntMakeIt => return Response::format_invalid("preparation timeout", ""), - - Artifact::Compiled { compiled_artifact } => compiled_artifact, - }; + let compiled_artifact = artifact.as_ref(); let validation_started_at = Instant::now(); let descriptor_bytes = match unsafe { diff --git a/node/core/pvf/src/host.rs b/node/core/pvf/src/host.rs index 40c30ca65c21..292e37cdc30d 100644 --- a/node/core/pvf/src/host.rs +++ b/node/core/pvf/src/host.rs @@ -344,8 +344,7 @@ async fn run( .await); }, from_prepare_queue = from_prepare_queue_rx.next() => { - let prepare::FromQueue::Prepared(artifact_id) - = break_if_fatal!(from_prepare_queue.ok_or(Fatal)); + let from_queue = break_if_fatal!(from_prepare_queue.ok_or(Fatal)); // Note that preparation always succeeds. // @@ -361,7 +360,7 @@ async fn run( &mut artifacts, &mut to_execute_queue_tx, &mut awaiting_prepare, - artifact_id, + from_queue, ).await); }, } @@ -439,6 +438,9 @@ async fn handle_execute_pvf( awaiting_prepare.add(artifact_id, execution_timeout, params, result_tx); }, + ArtifactState::FailedToProcess(error) => { + let _ = result_tx.send(Err(ValidationError::from(error.clone()))); + }, } } else { // Artifact is unknown: register it and enqueue a job with the corresponding priority and @@ -470,6 +472,7 @@ async fn handle_heads_up( // Already preparing. We don't need to send a priority amend either because // it can't get any lower than the background. }, + ArtifactState::FailedToProcess(_) => {}, } } else { // The artifact is unknown: register it and put a background job into the prepare queue. @@ -491,8 +494,10 @@ async fn handle_prepare_done( artifacts: &mut Artifacts, execute_queue: &mut mpsc::Sender, awaiting_prepare: &mut AwaitingPrepare, - artifact_id: ArtifactId, + from_queue: prepare::FromQueue, ) -> Result<(), Fatal> { + let prepare::FromQueue { artifact_id, result } = from_queue; + // Make some sanity checks and extract the current state. let state = match artifacts.artifact_state_mut(&artifact_id) { None => { @@ -513,6 +518,12 @@ async fn handle_prepare_done( never!("the artifact is already prepared: {:?}", artifact_id); return Ok(()) }, + Some(ArtifactState::FailedToProcess(_)) => { + // The reasoning is similar to the above, the artifact cannot be + // processed at this point. + never!("the artifact is already processed unsuccessfully: {:?}", artifact_id); + return Ok(()) + }, Some(state @ ArtifactState::Preparing) => state, }; @@ -526,6 +537,12 @@ async fn handle_prepare_done( continue } + // Don't send failed artifacts to the execution's queue. + if let Err(ref error) = result { + let _ = result_tx.send(Err(ValidationError::from(error.clone()))); + continue + } + send_execute( execute_queue, execute::ToQueue::Enqueue { @@ -538,8 +555,10 @@ async fn handle_prepare_done( .await?; } - // Now consider the artifact prepared. - *state = ArtifactState::Prepared { last_time_needed: SystemTime::now() }; + *state = match result { + Ok(()) => ArtifactState::Prepared { last_time_needed: SystemTime::now() }, + Err(error) => ArtifactState::FailedToProcess(error.clone()), + }; Ok(()) } @@ -937,7 +956,7 @@ mod tests { ); test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(1))) + .send(prepare::FromQueue { artifact_id: artifact_id(1), result: Ok(()) }) .await .unwrap(); let result_tx_pvf_1_1 = assert_matches!( @@ -950,7 +969,7 @@ mod tests { ); test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(2))) + .send(prepare::FromQueue { artifact_id: artifact_id(2), result: Ok(()) }) .await .unwrap(); let result_tx_pvf_2 = assert_matches!( @@ -1005,7 +1024,7 @@ mod tests { ); test.from_prepare_queue_tx - .send(prepare::FromQueue::Prepared(artifact_id(1))) + .send(prepare::FromQueue { artifact_id: artifact_id(1), result: Ok(()) }) .await .unwrap(); diff --git a/node/core/pvf/src/prepare/pool.rs b/node/core/pvf/src/prepare/pool.rs index 035d799ac594..729f813432f9 100644 --- a/node/core/pvf/src/prepare/pool.rs +++ b/node/core/pvf/src/prepare/pool.rs @@ -16,6 +16,7 @@ use super::worker::{self, Outcome}; use crate::{ + error::PrepareError, metrics::Metrics, worker_common::{IdleWorker, WorkerHandle}, LOG_TARGET, @@ -78,9 +79,16 @@ pub enum FromPool { /// The given worker was just spawned and is ready to be used. Spawned(Worker), - /// The given worker either succeeded or failed the given job. Under any circumstances the - /// artifact file has been written. The `bool` says whether the worker ripped. - Concluded(Worker, bool), + /// The given worker either succeeded or failed the given job. + Concluded { + /// A key for retrieving the worker data from the pool. + worker: Worker, + /// Indicates whether the worker process was killed. + rip: bool, + /// [`Ok`] indicates that compiled artifact is successfully stored on disk. + /// Otherwise, an [error](PrepareError) is supplied. + result: Result<(), PrepareError>, + }, /// The given worker ceased to exist. Rip(Worker), @@ -295,7 +303,7 @@ fn handle_mux( }, PoolEvent::StartWork(worker, outcome) => { match outcome { - Outcome::Concluded(idle) => { + Outcome::Concluded { worker: idle, result } => { let data = match spawned.get_mut(worker) { None => { // Perhaps the worker was killed meanwhile and the result is no longer @@ -310,7 +318,7 @@ fn handle_mux( let old = data.idle.replace(idle); assert_matches!(old, None, "attempt to overwrite an idle worker"); - reply(from_pool, FromPool::Concluded(worker, false))?; + reply(from_pool, FromPool::Concluded { worker, rip: false, result })?; Ok(()) }, @@ -321,9 +329,16 @@ fn handle_mux( Ok(()) }, - Outcome::DidntMakeIt => { + Outcome::DidNotMakeIt => { if attempt_retire(metrics, spawned, worker) { - reply(from_pool, FromPool::Concluded(worker, true))?; + reply( + from_pool, + FromPool::Concluded { + worker, + rip: true, + result: Err(PrepareError::DidNotMakeIt), + }, + )?; } Ok(()) diff --git a/node/core/pvf/src/prepare/queue.rs b/node/core/pvf/src/prepare/queue.rs index 4ffa21de435b..d85e6b8a1422 100644 --- a/node/core/pvf/src/prepare/queue.rs +++ b/node/core/pvf/src/prepare/queue.rs @@ -17,7 +17,9 @@ //! A queue that handles requests for PVF preparation. use super::pool::{self, Worker}; -use crate::{artifacts::ArtifactId, metrics::Metrics, Priority, Pvf, LOG_TARGET}; +use crate::{ + artifacts::ArtifactId, error::PrepareError, metrics::Metrics, Priority, Pvf, LOG_TARGET, +}; use always_assert::{always, never}; use async_std::path::PathBuf; use futures::{channel::mpsc, stream::StreamExt as _, Future, SinkExt}; @@ -29,7 +31,7 @@ pub enum ToQueue { /// This schedules preparation of the given PVF. /// /// Note that it is incorrect to enqueue the same PVF again without first receiving the - /// [`FromQueue::Prepared`] response. In case there is a need to bump the priority, use + /// [`FromQueue`] response. In case there is a need to bump the priority, use /// [`ToQueue::Amend`]. Enqueue { priority: Priority, pvf: Pvf }, /// Amends the priority for the given [`ArtifactId`] if it is running. If it's not, then it's noop. @@ -37,9 +39,13 @@ pub enum ToQueue { } /// A response from queue. -#[derive(Debug, PartialEq, Eq)] -pub enum FromQueue { - Prepared(ArtifactId), +#[derive(Debug)] +pub struct FromQueue { + /// Identifier of an artifact. + pub(crate) artifact_id: ArtifactId, + /// Outcome of the PVF processing. [`Ok`] indicates that compiled artifact + /// is successfully stored on disk. Otherwise, an [error](PrepareError) is supplied. + pub(crate) result: Result<(), PrepareError>, } #[derive(Default)] @@ -299,7 +305,8 @@ async fn handle_from_pool(queue: &mut Queue, from_pool: pool::FromPool) -> Resul use pool::FromPool::*; match from_pool { Spawned(worker) => handle_worker_spawned(queue, worker).await?, - Concluded(worker, rip) => handle_worker_concluded(queue, worker, rip).await?, + Concluded { worker, rip, result } => + handle_worker_concluded(queue, worker, rip, result).await?, Rip(worker) => handle_worker_rip(queue, worker).await?, } Ok(()) @@ -320,6 +327,7 @@ async fn handle_worker_concluded( queue: &mut Queue, worker: Worker, rip: bool, + result: Result<(), PrepareError>, ) -> Result<(), Fatal> { queue.metrics.prepare_concluded(); @@ -377,7 +385,7 @@ async fn handle_worker_concluded( "prepare worker concluded", ); - reply(&mut queue.from_queue_tx, FromQueue::Prepared(artifact_id))?; + reply(&mut queue.from_queue_tx, FromQueue { artifact_id, result })?; // Figure out what to do with the worker. if rip { @@ -641,12 +649,9 @@ mod tests { let w = test.workers.insert(()); test.send_from_pool(pool::FromPool::Spawned(w)); - test.send_from_pool(pool::FromPool::Concluded(w, false)); + test.send_from_pool(pool::FromPool::Concluded { worker: w, rip: false, result: Ok(()) }); - assert_eq!( - test.poll_and_recv_from_queue().await, - FromQueue::Prepared(pvf(1).as_artifact_id()) - ); + assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); } #[async_std::test] @@ -671,7 +676,7 @@ mod tests { assert_matches!(test.poll_and_recv_to_pool().await, pool::ToPool::StartWork { .. }); assert_matches!(test.poll_and_recv_to_pool().await, pool::ToPool::StartWork { .. }); - test.send_from_pool(pool::FromPool::Concluded(w1, false)); + test.send_from_pool(pool::FromPool::Concluded { worker: w1, rip: false, result: Ok(()) }); assert_matches!(test.poll_and_recv_to_pool().await, pool::ToPool::StartWork { .. }); @@ -704,7 +709,7 @@ mod tests { // That's a bit silly in this context, but in production there will be an entire pool up // to the `soft_capacity` of workers and it doesn't matter which one to cull. Either way, // we just check that edge case of an edge case works. - test.send_from_pool(pool::FromPool::Concluded(w1, false)); + test.send_from_pool(pool::FromPool::Concluded { worker: w1, rip: false, result: Ok(()) }); assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Kill(w1)); } @@ -749,15 +754,12 @@ mod tests { assert_matches!(test.poll_and_recv_to_pool().await, pool::ToPool::StartWork { .. }); // Conclude worker 1 and rip it. - test.send_from_pool(pool::FromPool::Concluded(w1, true)); + test.send_from_pool(pool::FromPool::Concluded { worker: w1, rip: true, result: Ok(()) }); // Since there is still work, the queue requested one extra worker to spawn to handle the // remaining enqueued work items. assert_eq!(test.poll_and_recv_to_pool().await, pool::ToPool::Spawn); - assert_eq!( - test.poll_and_recv_from_queue().await, - FromQueue::Prepared(pvf(1).as_artifact_id()) - ); + assert_eq!(test.poll_and_recv_from_queue().await.artifact_id, pvf(1).as_artifact_id()); } #[async_std::test] @@ -773,7 +775,11 @@ mod tests { assert_matches!(test.poll_and_recv_to_pool().await, pool::ToPool::StartWork { .. }); - test.send_from_pool(pool::FromPool::Concluded(w1, true)); + test.send_from_pool(pool::FromPool::Concluded { + worker: w1, + rip: true, + result: Err(PrepareError::DidNotMakeIt), + }); test.poll_ensure_to_pool_is_empty().await; } diff --git a/node/core/pvf/src/prepare/worker.rs b/node/core/pvf/src/prepare/worker.rs index 510d582f7e03..a8bb3516e296 100644 --- a/node/core/pvf/src/prepare/worker.rs +++ b/node/core/pvf/src/prepare/worker.rs @@ -15,7 +15,8 @@ // along with Polkadot. If not, see . use crate::{ - artifacts::Artifact, + artifacts::CompiledArtifact, + error::PrepareError, worker_common::{ bytes_to_path, framed_recv, framed_send, path_to_bytes, spawn_with_program_path, tmpfile_in, worker_event_loop, IdleWorker, SpawnErr, WorkerHandle, @@ -29,6 +30,8 @@ use async_std::{ }; use futures::FutureExt as _; use futures_timer::Delay; +use parity_scale_codec::{Decode, Encode}; +use sp_core::hexdisplay::HexDisplay; use std::{sync::Arc, time::Duration}; const NICENESS_BACKGROUND: i32 = 10; @@ -48,7 +51,7 @@ pub async fn spawn( pub enum Outcome { /// The worker has finished the work assigned to it. - Concluded(IdleWorker), + Concluded { worker: IdleWorker, result: Result<(), PrepareError> }, /// The host tried to reach the worker but failed. This is most likely because the worked was /// killed by the system. Unreachable, @@ -59,7 +62,7 @@ pub enum Outcome { /// the artifact). /// /// This doesn't return an idle worker instance, thus this worker is no longer usable. - DidntMakeIt, + DidNotMakeIt, } /// Given the idle token of a worker and parameters of work, communicates with the worker and @@ -99,13 +102,11 @@ pub async fn start_work( // Wait for the result from the worker, keeping in mind that there may be a timeout, the // worker may get killed, or something along these lines. // - // In that case we should handle these gracefully by writing the artifact file by ourselves. - // We may potentially overwrite the artifact in rare cases where the worker didn't make - // it to report back the result. + // In that case we should propagate the error to the pool. #[derive(Debug)] enum Selected { - Done, + Done(Result<(), PrepareError>), IoErr, Deadline, } @@ -113,41 +114,48 @@ pub async fn start_work( let selected = futures::select! { res = framed_recv(&mut stream).fuse() => { match res { - Ok(x) if x == &[1u8] => { - tracing::debug!( - target: LOG_TARGET, - worker_pid = %pid, - "promoting WIP artifact {} to {}", - tmp_file.display(), - artifact_path.display(), - ); - - async_std::fs::rename(&tmp_file, &artifact_path) - .await - .map(|_| Selected::Done) - .unwrap_or_else(|err| { - tracing::warn!( + Ok(response_bytes) => { + // By convention we expect encoded `Result<(), PrepareError>`. + if let Ok(result) = + >::decode(&mut response_bytes.clone().as_slice()) + { + if result.is_ok() { + tracing::debug!( target: LOG_TARGET, worker_pid = %pid, - "failed to rename the artifact from {} to {}: {:?}", + "promoting WIP artifact {} to {}", tmp_file.display(), artifact_path.display(), - err, ); - Selected::IoErr - }) - } - Ok(response_bytes) => { - use sp_core::hexdisplay::HexDisplay; - let bound_bytes = - &response_bytes[..response_bytes.len().min(4)]; - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "received unexpected response from the prepare worker: {}", - HexDisplay::from(&bound_bytes), - ); - Selected::IoErr + + async_std::fs::rename(&tmp_file, &artifact_path) + .await + .map(|_| Selected::Done(result)) + .unwrap_or_else(|err| { + tracing::warn!( + target: LOG_TARGET, + worker_pid = %pid, + "failed to rename the artifact from {} to {}: {:?}", + tmp_file.display(), + artifact_path.display(), + err, + ); + Selected::IoErr + }) + } else { + Selected::Done(result) + } + } else { + // We received invalid bytes from the worker. + let bound_bytes = &response_bytes[..response_bytes.len().min(4)]; + tracing::warn!( + target: LOG_TARGET, + worker_pid = %pid, + "received unexpected response from the prepare worker: {}", + HexDisplay::from(&bound_bytes), + ); + Selected::IoErr + } }, Err(err) => { tracing::warn!( @@ -164,24 +172,11 @@ pub async fn start_work( }; match selected { - Selected::Done => { + Selected::Done(result) => { renice(pid, NICENESS_FOREGROUND); - Outcome::Concluded(IdleWorker { stream, pid }) - }, - Selected::IoErr | Selected::Deadline => { - let bytes = Artifact::DidntMakeIt.serialize(); - // best effort: there is nothing we can do here if the write fails. - if let Err(err) = async_std::fs::write(&artifact_path, &bytes).await { - tracing::warn!( - target: LOG_TARGET, - worker_pid = %pid, - "preparation didn't make it, because of `{:?}`: {:?}", - selected, - err, - ); - } - Outcome::DidntMakeIt + Outcome::Concluded { worker: IdleWorker { stream, pid }, result } }, + Selected::IoErr | Selected::Deadline => Outcome::DidNotMakeIt, } }) .await @@ -205,7 +200,7 @@ where "failed to create a temp file for the artifact: {:?}", err, ); - return Outcome::DidntMakeIt + return Outcome::DidNotMakeIt }, }; @@ -288,31 +283,47 @@ pub fn worker_entrypoint(socket_path: &str) { worker_pid = %std::process::id(), "worker: preparing artifact", ); - let artifact_bytes = prepare_artifact(&code).serialize(); - // Write the serialized artifact into into a temp file. - tracing::debug!( - target: LOG_TARGET, - worker_pid = %std::process::id(), - "worker: writing artifact to {}", - dest.display(), - ); - async_std::fs::write(&dest, &artifact_bytes).await?; + let result = match prepare_artifact(&code) { + Err(err) => { + // Serialized error will be written into the socket. + Err(err) + }, + Ok(compiled_artifact) => { + // Write the serialized artifact into a temp file. + // PVF host only keeps artifacts statuses in its memory, + // successfully compiled code gets stored on the disk (and + // consequently deserialized by execute-workers). The prepare + // worker is only required to send an empty `Ok` to the pool + // to indicate the success. + + let artifact_bytes = compiled_artifact.encode(); + + tracing::debug!( + target: LOG_TARGET, + worker_pid = %std::process::id(), + "worker: writing artifact to {}", + dest.display(), + ); + async_std::fs::write(&dest, &artifact_bytes).await?; + + Ok(()) + }, + }; - // Return back a byte that signals finishing the work. - framed_send(&mut stream, &[1u8]).await?; + framed_send(&mut stream, result.encode().as_slice()).await?; } }); } -fn prepare_artifact(code: &[u8]) -> Artifact { +fn prepare_artifact(code: &[u8]) -> Result { let blob = match crate::executor_intf::prevalidate(code) { - Err(err) => return Artifact::PrevalidationErr(format!("{:?}", err)), + Err(err) => return Err(PrepareError::Prevalidation(format!("{:?}", err))), Ok(b) => b, }; match crate::executor_intf::prepare(blob) { - Ok(compiled_artifact) => Artifact::Compiled { compiled_artifact }, - Err(err) => Artifact::PreparationErr(format!("{:?}", err)), + Ok(compiled_artifact) => Ok(CompiledArtifact::new(compiled_artifact)), + Err(err) => Err(PrepareError::Preparation(format!("{:?}", err))), } } From 0a8c188c219ed77323e76b8f17015692aa212342 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Mon, 25 Oct 2021 11:18:17 +0100 Subject: [PATCH 18/71] Enable bags-list pallet in polkadot (#4080) * Enable bags-list pallet in polkadot * add files * Remove trailing semicolon * more fixes * Update runtime/polkadot/src/lib.rs * add features * remove par Co-authored-by: Keith Yeung Co-authored-by: Shawn Tabrizi --- Cargo.lock | 1 + runtime/kusama/Cargo.toml | 4 +- .../src/{voter_bags.rs => bag_thresholds.rs} | 0 runtime/kusama/src/lib.rs | 10 +- runtime/polkadot/Cargo.toml | 3 + runtime/polkadot/src/bag_thresholds.rs | 234 ++++++++++++++++++ runtime/polkadot/src/lib.rs | 50 +++- runtime/polkadot/src/weights/mod.rs | 1 + .../polkadot/src/weights/pallet_bags_list.rs | 65 +++++ .../src/{voter_bags.rs => bag_thresholds.rs} | 0 runtime/westend/src/lib.rs | 10 +- utils/remote-ext-tests/bags-list/src/main.rs | 14 +- .../bags-list/src/voter_bags.rs | 11 +- 13 files changed, 382 insertions(+), 21 deletions(-) rename runtime/kusama/src/{voter_bags.rs => bag_thresholds.rs} (100%) create mode 100644 runtime/polkadot/src/bag_thresholds.rs create mode 100644 runtime/polkadot/src/weights/pallet_bags_list.rs rename runtime/westend/src/{voter_bags.rs => bag_thresholds.rs} (100%) diff --git a/Cargo.lock b/Cargo.lock index 0ce095c22684..6f372108cf24 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6675,6 +6675,7 @@ dependencies = [ "pallet-authority-discovery", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-bounties", "pallet-collective", diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index cdd949aeb49a..57657b817d0e 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -37,6 +37,7 @@ sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -72,7 +73,6 @@ pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "m pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false } -pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } @@ -124,6 +124,7 @@ std = [ "frame-executive/std", "pallet-authority-discovery/std", "pallet-authorship/std", + "pallet-bags-list/std", "pallet-balances/std", "pallet-bounties/std", "pallet-transaction-payment/std", @@ -175,7 +176,6 @@ std = [ "xcm-executor/std", "xcm-builder/std", "frame-election-provider-support/std", - "pallet-bags-list/std", ] runtime-benchmarks = [ "runtime-common/runtime-benchmarks", diff --git a/runtime/kusama/src/voter_bags.rs b/runtime/kusama/src/bag_thresholds.rs similarity index 100% rename from runtime/kusama/src/voter_bags.rs rename to runtime/kusama/src/bag_thresholds.rs diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 0b58ff7c3ae1..8b72f7e1e4c1 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -101,7 +101,7 @@ use constants::{currency::*, fee::*, time::*}; mod weights; // Voter bag threshold definitions. -mod voter_bags; +mod bag_thresholds; #[cfg(test)] mod tests; @@ -409,7 +409,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime { } parameter_types! { - pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; + pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS; } impl pallet_bags_list::Config for Runtime { @@ -525,8 +525,7 @@ impl pallet_staking::Config for Runtime { type NextNewSession = Session; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; - // Use the nominators map to iter voters, but also perform the bags-list migration and keep - // it up-to-date. + // Use the nominators map to iter voters, but also keep bags-list up-to-date. type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -1079,7 +1078,8 @@ impl InstanceFilter for ProxyType { Call::Registrar(paras_registrar::Call::reserve {..}) | Call::Crowdloan(..) | Call::Slots(..) | - Call::Auctions(..) // Specifically omitting the entire XCM Pallet + Call::Auctions(..) | // Specifically omitting the entire XCM Pallet + Call::BagsList(..) ), ProxyType::Governance => matches!( c, diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 10a9fecaeafd..0217cc334428 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -36,6 +36,7 @@ sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-bounties = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -114,6 +115,7 @@ std = [ "frame-executive/std", "pallet-authority-discovery/std", "pallet-authorship/std", + "pallet-bags-list/std", "pallet-balances/std", "pallet-bounties/std", "pallet-transaction-payment/std", @@ -164,6 +166,7 @@ runtime-benchmarks = [ "frame-system/runtime-benchmarks", "sp-runtime/runtime-benchmarks", "pallet-babe/runtime-benchmarks", + "pallet-bags-list/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-collective/runtime-benchmarks", "pallet-democracy/runtime-benchmarks", diff --git a/runtime/polkadot/src/bag_thresholds.rs b/runtime/polkadot/src/bag_thresholds.rs new file mode 100644 index 000000000000..2eb2158d8f13 --- /dev/null +++ b/runtime/polkadot/src/bag_thresholds.rs @@ -0,0 +1,234 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Autogenerated bag thresholds. +//! +//! Generated on 2021-10-14T08:36:33.156699497+00:00 +//! for the polkadot runtime. + +/// Existential weight for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const EXISTENTIAL_WEIGHT: u64 = 10_000_000_000; + +/// Constant ratio between bags for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const CONSTANT_RATIO: f64 = 1.1131723507077667; + +/// Upper thresholds delimiting the bag list. +pub const THRESHOLDS: [u64; 200] = [ + 10_000_000_000, + 11_131_723_507, + 12_391_526_824, + 13_793_905_044, + 15_354_993_703, + 17_092_754_435, + 19_027_181_634, + 21_180_532_507, + 23_577_583_160, + 26_245_913_670, + 29_216_225_417, + 32_522_694_326, + 36_203_364_094, + 40_300_583_912, + 44_861_495_728, + 49_938_576_656, + 55_590_242_767, + 61_881_521_217, + 68_884_798_439, + 76_680_653_006, + 85_358_782_760, + 95_019_036_859, + 105_772_564_622, + 117_743_094_401, + 131_068_357_174, + 145_901_671_259, + 162_413_706_368, + 180_794_447_305, + 201_255_379_901, + 224_031_924_337, + 249_386_143_848, + 277_609_759_981, + 309_027_509_097, + 344_000_878_735, + 382_932_266_827, + 426_269_611_626, + 474_511_545_609, + 528_213_132_664, + 587_992_254_562, + 654_536_720_209, + 728_612_179_460, + 811_070_932_564, + 902_861_736_593, + 1_005_040_721_687, + 1_118_783_542_717, + 1_245_398_906_179, + 1_386_343_627_960, + 1_543_239_395_225, + 1_717_891_425_287, + 1_912_309_236_147, + 2_128_729_767_682, + 2_369_643_119_512, + 2_637_821_201_686, + 2_936_349_627_828, + 3_268_663_217_709, + 3_638_585_517_729, + 4_050_372_794_022, + 4_508_763_004_364, + 5_019_030_312_352, + 5_587_045_771_074, + 6_219_344_874_498, + 6_923_202_753_807, + 7_706_717_883_882, + 8_578_905_263_043, + 9_549_800_138_161, + 10_630_573_468_586, + 11_833_660_457_397, + 13_172_903_628_838, + 14_663_712_098_160, + 16_323_238_866_411, + 18_170_578_180_087, + 20_226_985_226_447, + 22_516_120_692_255, + 25_064_322_999_817, + 27_900_911_352_605, + 31_058_523_077_268, + 34_573_489_143_434, + 38_486_252_181_966, + 42_841_831_811_331, + 47_690_342_626_046, + 53_087_570_807_094, + 59_095_615_988_698, + 65_783_605_766_662, + 73_228_491_069_308, + 81_515_931_542_404, + 90_741_281_135_191, + 101_010_685_227_495, + 112_442_301_921_293, + 125_167_661_548_718, + 139_333_180_038_781, + 155_101_843_555_358, + 172_655_083_789_626, + 192_194_865_483_744, + 213_946_010_204_502, + 238_158_783_103_893, + 265_111_772_429_462, + 295_115_094_915_607, + 328_513_963_936_552, + 365_692_661_475_578, + 407_078_959_611_349, + 453_149_042_394_237, + 504_432_984_742_966, + 561_520_851_400_862, + 625_069_486_125_324, + 695_810_069_225_823, + 774_556_530_406_243, + 862_214_913_708_369, + 959_793_802_308_039, + 1_068_415_923_109_985, + 1_189_331_064_661_951, + 1_323_930_457_019_515, + 1_473_762_779_014_021, + 1_640_551_977_100_649, + 1_826_217_100_807_404, + 2_032_894_383_008_501, + 2_262_961_819_074_188, + 2_519_066_527_700_738, + 2_804_155_208_229_882, + 3_121_508_044_894_685, + 3_474_776_448_088_622, + 3_868_025_066_902_796, + 4_305_778_556_320_752, + 4_793_073_637_166_665, + 5_335_517_047_800_242, + 5_939_350_054_341_159, + 6_611_520_261_667_250, + 7_359_761_551_432_161, + 8_192_683_066_856_378, + 9_119_868_268_136_230, + 10_151_985_198_186_376, + 11_300_909_227_415_580, + 12_579_859_689_817_292, + 14_003_551_982_487_792, + 15_588_366_878_604_342, + 17_352_539_001_951_086, + 19_316_366_631_550_092, + 21_502_445_250_375_680, + 23_935_927_525_325_748, + 26_644_812_709_737_600, + 29_660_268_798_266_784, + 33_016_991_140_790_860, + 36_753_601_641_491_664, + 40_913_093_136_236_104, + 45_543_324_061_189_736, + 50_697_569_104_240_168, + 56_435_132_174_936_472, + 62_822_028_745_677_552, + 69_931_745_415_056_768, + 77_846_085_432_775_824, + 86_656_109_914_600_688, + 96_463_185_576_826_656, + 107_380_151_045_315_664, + 119_532_615_158_469_088, + 133_060_402_202_199_856, + 148_119_160_705_543_712, + 164_882_154_307_451_552, + 183_542_255_300_186_560, + 204_314_163_786_713_728, + 227_436_877_985_347_776, + 253_176_444_104_585_088, + 281_829_017_427_734_464, + 313_724_269_827_691_328, + 349_229_182_918_168_832, + 388_752_270_484_770_624, + 432_748_278_778_513_664, + 481_723_418_752_617_984, + 536_241_190_443_833_600, + 596_928_866_512_693_376, + 664_484_709_541_257_600, + 739_686_006_129_409_280, + 823_398_010_228_713_984, + 916_583_898_614_395_264, + 1_020_315_853_041_475_584, + 1_135_787_396_594_579_584, + 1_264_327_126_171_442_688, + 1_407_413_999_103_859_968, + 1_566_694_349_801_462_272, + 1_744_000_832_209_069_824, + 1_941_373_506_026_471_680, + 2_161_083_309_305_266_176, + 2_405_658_187_494_662_656, + 2_677_912_179_572_818_944, + 2_980_977_795_924_034_048, + 3_318_342_060_496_414_208, + 3_693_886_631_935_247_360, + 4_111_932_465_319_354_368, + 4_577_289_528_371_127_808, + 5_095_312_144_166_932_480, + 5_671_960_597_112_134_656, + 6_313_869_711_009_142_784, + 7_028_425_188_266_614_784, + 7_823_848_588_596_424_704, + 8_709_291_924_949_524_480, + 9_694_942_965_096_232_960, + 10_792_142_450_433_898_496, + 12_013_514_580_722_579_456, + 13_373_112_266_084_982_784, + 14_886_578_817_516_689_408, + 16_571_327_936_291_497_984, + 18_446_744_073_709_551_615, +]; diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index e8feec47b0dd..d2f10b374b24 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -95,6 +95,8 @@ use frame_support::traits::InstanceFilter; // Weights used in the runtime. mod weights; +mod bag_thresholds; + // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); @@ -170,7 +172,8 @@ impl Contains for BaseFilter { Call::Slots(_) | Call::Registrar(_) | Call::Auctions(_) | - Call::Crowdloan(_) => true, + Call::Crowdloan(_) | + Call::BagsList(_) => true, // All pallets are allowed, but exhaustive match is defensive // in the case of adding new pallets. } @@ -438,6 +441,17 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type VoterSnapshotPerBlock = VoterSnapshotPerBlock; } +parameter_types! { + pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS; +} + +impl pallet_bags_list::Config for Runtime { + type Event = Event; + type VoteWeightProvider = Staking; + type WeightInfo = weights::pallet_bags_list::WeightInfo; + type BagThresholds = BagThresholds; +} + // TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and // re-built in case input parameters have changed. The `ideal_stake` should be determined by the // amount of parachain slots being bid on: this should be around `(75 - 25.min(slots / 4))%`. @@ -498,9 +512,8 @@ impl pallet_staking::Config for Runtime { type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; - // Use the nominator map to iter voter AND no-ops for all SortedListProvider hooks. The migration - // to bags-list is a no-op, but the storage version will be updated. - type SortedListProvider = pallet_staking::UseNominatorsMap; + // Use the nominators map to iter voters, but also keep bags-list up-to-date. + type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -1050,7 +1063,8 @@ impl InstanceFilter for ProxyType { Call::Registrar(paras_registrar::Call::reserve {..}) | Call::Crowdloan(..) | Call::Slots(..) | - Call::Auctions(..) // Specifically omitting the entire XCM Pallet + Call::Auctions(..) | // Specifically omitting the entire XCM Pallet + Call::BagsList(..) ), ProxyType::Governance => matches!( c, @@ -1300,6 +1314,9 @@ construct_runtime! { // Election pallet. Only works with staking, but placed here to maintain indices. ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 36, + // Provides a semi-sorted list of nominators for staking. + BagsList: pallet_bags_list::{Pallet, Call, Storage, Event} = 37, + // Parachains pallets. Start indices at 50 to leave room. ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50, Configuration: parachains_configuration::{Pallet, Call, Storage, Config} = 51, @@ -1352,11 +1369,30 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (), + StakingBagsListMigrationV8, >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators. +pub struct StakingBagsListMigrationV8; + +impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_staking::migrations::v8::migrate::() + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::pre_migrate::() + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::post_migrate::() + } +} + /// Set the initial host configuration for Polkadot. pub struct SetInitialHostConfiguration; impl OnRuntimeUpgrade for SetInitialHostConfiguration { @@ -1795,6 +1831,7 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_parachains::initializer, Initializer); list_benchmark!(list, extra, runtime_parachains::paras, Paras); // Substrate + list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); list_benchmark!(list, extra, pallet_bounties, Bounties); list_benchmark!(list, extra, pallet_collective, Council); @@ -1870,6 +1907,7 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_parachains::initializer, Initializer); add_benchmark!(params, batches, runtime_parachains::paras, Paras); // Substrate + add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); add_benchmark!(params, batches, pallet_bounties, Bounties); add_benchmark!(params, batches, pallet_collective, Council); diff --git a/runtime/polkadot/src/weights/mod.rs b/runtime/polkadot/src/weights/mod.rs index 19842799a533..c913094df553 100644 --- a/runtime/polkadot/src/weights/mod.rs +++ b/runtime/polkadot/src/weights/mod.rs @@ -16,6 +16,7 @@ //! A list of the different weight modules for our runtime. pub mod frame_system; +pub mod pallet_bags_list; pub mod pallet_balances; pub mod pallet_bounties; pub mod pallet_collective_council; diff --git a/runtime/polkadot/src/weights/pallet_bags_list.rs b/runtime/polkadot/src/weights/pallet_bags_list.rs new file mode 100644 index 000000000000..38285f4c2145 --- /dev/null +++ b/runtime/polkadot/src/weights/pallet_bags_list.rs @@ -0,0 +1,65 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `pallet_bags_list` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bags_list +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/ + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_bags_list`. +pub struct WeightInfo(PhantomData); +impl pallet_bags_list::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:0) + // Storage: BagsList ListNodes (r:4 w:4) + // Storage: BagsList ListBags (r:1 w:1) + fn rebag_non_terminal() -> Weight { + (65_491_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) + } + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:0) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: BagsList ListBags (r:2 w:2) + fn rebag_terminal() -> Weight { + (64_253_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) + } +} diff --git a/runtime/westend/src/voter_bags.rs b/runtime/westend/src/bag_thresholds.rs similarity index 100% rename from runtime/westend/src/voter_bags.rs rename to runtime/westend/src/bag_thresholds.rs diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 8fbcdb7099c6..21919e872643 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -101,7 +101,7 @@ use constants::{currency::*, fee::*, time::*}; mod weights; // Voter bag threshold definitions. -mod voter_bags; +mod bag_thresholds; #[cfg(test)] mod tests; @@ -393,7 +393,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime { } parameter_types! { - pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; + pub const BagThresholds: &'static [u64] = &bag_thresholds::THRESHOLDS; } impl pallet_bags_list::Config for Runtime { @@ -453,8 +453,7 @@ impl pallet_staking::Config for Runtime { type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; - // Use the nominators map to iter voters, but also perform the bags-list migration and keep - // it up-to-date. + // Use the nominators map to iter voters, but also keep bags-list up-to-date. type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -751,7 +750,8 @@ impl InstanceFilter for ProxyType { Call::Registrar(paras_registrar::Call::reserve{..}) | Call::Crowdloan(..) | Call::Slots(..) | - Call::Auctions(..) // Specifically omitting the entire XCM Pallet + Call::Auctions(..) | // Specifically omitting the entire XCM Pallet + Call::BagsList(..) ), ProxyType::Staking => { matches!(c, Call::Staking(..) | Call::Session(..) | Call::Utility(..)) diff --git a/utils/remote-ext-tests/bags-list/src/main.rs b/utils/remote-ext-tests/bags-list/src/main.rs index 410cb1e80511..c7ef5cc62791 100644 --- a/utils/remote-ext-tests/bags-list/src/main.rs +++ b/utils/remote-ext-tests/bags-list/src/main.rs @@ -23,6 +23,7 @@ mod voter_bags; #[derive(StructOpt)] enum Runtime { Kusama, + Polkadot, } impl std::str::FromStr for Runtime { @@ -30,6 +31,7 @@ impl std::str::FromStr for Runtime { fn from_str(s: &str) -> Result { match s.to_lowercase().as_str() { "kusama" => Ok(Runtime::Kusama), + "polkadot" => Ok(Runtime::Polkadot), _ => Err("wrong Runtime: can be 'polkadot' or 'kusama'."), } } @@ -37,9 +39,9 @@ impl std::str::FromStr for Runtime { #[derive(StructOpt)] struct Cli { - #[structopt(long, default_value = "wss://rpc.kusama.io")] + #[structopt(long, default_value = "wss://rpc.polkadot.io")] uri: String, - #[structopt(long, short, default_value = "kusama")] + #[structopt(long, short, default_value = "polkadot")] runtime: Runtime, } @@ -55,5 +57,13 @@ async fn main() { ) .await; }, + Runtime::Polkadot => { + use polkadot_runtime::{constants::currency::UNITS, Block, Runtime}; + voter_bags::test_voter_bags_migration::( + UNITS as u64, + options.uri.clone(), + ) + .await; + }, } } diff --git a/utils/remote-ext-tests/bags-list/src/voter_bags.rs b/utils/remote-ext-tests/bags-list/src/voter_bags.rs index 4b7d7d6ec88d..0ed91c14b059 100644 --- a/utils/remote-ext-tests/bags-list/src/voter_bags.rs +++ b/utils/remote-ext-tests/bags-list/src/voter_bags.rs @@ -54,6 +54,15 @@ pub(crate) async fn test_voter_bags_migration< // set the ss58 prefix so addresses printed below are human friendly. sp_core::crypto::set_default_ss58_version(Runtime::SS58Prefix::get().try_into().unwrap()); + // clear anything that may have existed before. + if ::SortedListProvider::count() != 0 { + log::warn!( + target: LOG_TARGET, + "some data already seem to exist in the bags-list pallet.." + ); + } + ::SortedListProvider::clear(None); + // get the nominator & validator count prior to migrating; these should be invariant. let pre_migrate_nominator_count = >::iter().count() as u32; log::info!(target: LOG_TARGET, "Nominator count: {}", pre_migrate_nominator_count); @@ -99,7 +108,7 @@ pub(crate) async fn test_voter_bags_migration< (*vote_weight_thresh).try_into().map_err(|_| "should not fail").unwrap(); if vote_weight_as_balance <= min_nominator_bond { for id in bag.std_iter().map(|node| node.std_id().clone()) { - log::trace!( + log::error!( target: LOG_TARGET, "{} Account found below min bond: {:?}.", pretty_thresh, From 3611e2e6884ac36e24a546f3dcea595caaa99da8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Oct 2021 13:23:09 +0200 Subject: [PATCH 19/71] Bump libc from 0.2.104 to 0.2.105 (#4141) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.104 to 0.2.105. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.104...0.2.105) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f372108cf24..d50a2428325e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3279,9 +3279,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2f96d100e1cf1929e7719b7edb3b90ab5298072638fccd77be9ce942ecdfce" +checksum = "869d572136620d55835903746bcb5cdc54cb2851fd0aeec53220b4bb65ef3013" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index b2a54f7d0eae..a235fcb6d032 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.104" +libc = "0.2.105" slotmap = "1.0" tracing = "0.1.29" pin-project = "1.0.8" From 6edd70fa695b220ed2a92227b41ed043fd0c5a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 25 Oct 2021 14:24:45 +0200 Subject: [PATCH 20/71] Bump spec versions (#4142) --- runtime/kusama/src/lib.rs | 2 +- runtime/polkadot/src/lib.rs | 2 +- runtime/westend/src/lib.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 8b72f7e1e4c1..07268e352985 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -115,7 +115,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("kusama"), impl_name: create_runtime_str!("parity-kusama"), authoring_version: 2, - spec_version: 9120, + spec_version: 9130, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index d2f10b374b24..df0b85c80a3a 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -107,7 +107,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polkadot"), impl_name: create_runtime_str!("parity-polkadot"), authoring_version: 0, - spec_version: 9120, + spec_version: 9130, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 21919e872643..9ab3dadcebd9 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -115,7 +115,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("westend"), impl_name: create_runtime_str!("parity-westend"), authoring_version: 2, - spec_version: 9120, + spec_version: 9130, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From c095ab9c104b6a59fe380a0b30f97aa46acebd62 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Tue, 26 Oct 2021 12:36:23 +0200 Subject: [PATCH 21/71] Fix weights on hard-coded XCM fragments (#4144) * Fix weights on hard-coded XCM fragments * Formatting --- xcm/pallet-xcm/src/lib.rs | 307 ++++++++++++++++++++++++++---------- xcm/pallet-xcm/src/tests.rs | 178 ++++++++++++++++++++- 2 files changed, 400 insertions(+), 85 deletions(-) diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 6456f9ee36b9..0ae27321902a 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -473,7 +473,9 @@ pub mod pallet { /// Teleport some assets from the local chain to some destination chain. /// - /// Fee payment on the destination side is made from the first asset listed in the `assets` vector. + /// Fee payment on the destination side is made from the first asset listed in the `assets` vector and + /// fee-weight is calculated locally and thus remote weights are assumed to be equal to + /// local weights. /// /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send @@ -506,54 +508,15 @@ pub mod pallet { assets: Box, fee_asset_item: u32, ) -> DispatchResult { - let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; - let dest = MultiLocation::try_from(*dest).map_err(|()| Error::::BadVersion)?; - let beneficiary = - MultiLocation::try_from(*beneficiary).map_err(|()| Error::::BadVersion)?; - let assets = MultiAssets::try_from(*assets).map_err(|()| Error::::BadVersion)?; - - ensure!(assets.len() <= MAX_ASSETS_FOR_TRANSFER, Error::::TooManyAssets); - let value = (origin_location, assets.drain()); - ensure!(T::XcmTeleportFilter::contains(&value), Error::::Filtered); - let (origin_location, assets) = value; - let inv_dest = T::LocationInverter::invert_location(&dest) - .map_err(|()| Error::::DestinationNotInvertible)?; - let fees = assets - .get(fee_asset_item as usize) - .ok_or(Error::::Empty)? - .clone() - .reanchored(&inv_dest) - .map_err(|_| Error::::CannotReanchor)?; - let max_assets = assets.len() as u32; - let assets = assets.into(); - let mut remote_message = Xcm(vec![ - BuyExecution { fees, weight_limit: Limited(0) }, - DepositAsset { assets: Wild(All), max_assets, beneficiary }, - ]); - // use local weight for remote message and hope for the best. - let remote_weight = T::Weigher::weight(&mut remote_message) - .map_err(|()| Error::::UnweighableMessage)?; - if let Some(BuyExecution { weight_limit: Limited(ref mut limit), .. }) = - remote_message.0.get_mut(0) - { - *limit = remote_weight; - } - let mut message = Xcm(vec![ - WithdrawAsset(assets), - InitiateTeleport { assets: Wild(All), dest, xcm: remote_message.into() }, - ]); - let weight = - T::Weigher::weight(&mut message).map_err(|()| Error::::UnweighableMessage)?; - let outcome = - T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); - Self::deposit_event(Event::Attempted(outcome)); - Ok(()) + Self::do_teleport_assets(origin, dest, beneficiary, assets, fee_asset_item, None) } /// Transfer some assets from the local chain to the sovereign account of a destination chain and forward /// a notification XCM. /// - /// Fee payment on the destination side is made from the first asset listed in the `assets` vector. + /// Fee payment on the destination side is made from the first asset listed in the `assets` vector and + /// fee-weight is calculated locally and thus remote weights are assumed to be equal to + /// local weights. /// /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send @@ -583,45 +546,14 @@ pub mod pallet { assets: Box, fee_asset_item: u32, ) -> DispatchResult { - let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; - let dest = (*dest).try_into().map_err(|()| Error::::BadVersion)?; - let beneficiary = (*beneficiary).try_into().map_err(|()| Error::::BadVersion)?; - let assets: MultiAssets = (*assets).try_into().map_err(|()| Error::::BadVersion)?; - - ensure!(assets.len() <= MAX_ASSETS_FOR_TRANSFER, Error::::TooManyAssets); - let value = (origin_location, assets.drain()); - ensure!(T::XcmReserveTransferFilter::contains(&value), Error::::Filtered); - let (origin_location, assets) = value; - let inv_dest = T::LocationInverter::invert_location(&dest) - .map_err(|()| Error::::DestinationNotInvertible)?; - let fees = assets - .get(fee_asset_item as usize) - .ok_or(Error::::Empty)? - .clone() - .reanchored(&inv_dest) - .map_err(|_| Error::::CannotReanchor)?; - let max_assets = assets.len() as u32; - let assets = assets.into(); - let mut remote_message = Xcm(vec![ - BuyExecution { fees, weight_limit: Limited(0) }, - DepositAsset { assets: Wild(All), max_assets, beneficiary }, - ]); - // use local weight for remote message and hope for the best. - let remote_weight = T::Weigher::weight(&mut remote_message) - .map_err(|()| Error::::UnweighableMessage)?; - if let Some(BuyExecution { weight_limit: Limited(ref mut limit), .. }) = - remote_message.0.get_mut(0) - { - *limit = remote_weight; - } - let mut message = - Xcm(vec![TransferReserveAsset { assets, dest, xcm: remote_message.into() }]); - let weight = - T::Weigher::weight(&mut message).map_err(|()| Error::::UnweighableMessage)?; - let outcome = - T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); - Self::deposit_event(Event::Attempted(outcome)); - Ok(()) + Self::do_reserve_transfer_assets( + origin, + dest, + beneficiary, + assets, + fee_asset_item, + None, + ) } /// Execute an XCM message from a local, signed, origin. @@ -732,9 +664,218 @@ pub mod pallet { .into() }) } + + /// Transfer some assets from the local chain to the sovereign account of a destination chain and forward + /// a notification XCM. + /// + /// Fee payment on the destination side is made from the first asset listed in the `assets` vector. + /// + /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. + /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send + /// from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain. + /// - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be + /// an `AccountId32` value. + /// - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the + /// `dest` side. + /// - `fee_asset_item`: The index into `assets` of the item which should be used to pay + /// fees. + /// - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase. + #[pallet::weight({ + match ((*assets.clone()).try_into(), (*dest.clone()).try_into()) { + (Ok(assets), Ok(dest)) => { + use sp_std::vec; + let mut message = Xcm(vec![ + TransferReserveAsset { assets, dest, xcm: Xcm(vec![]) } + ]); + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + }, + _ => Weight::max_value(), + } + })] + pub fn limited_reserve_transfer_assets( + origin: OriginFor, + dest: Box, + beneficiary: Box, + assets: Box, + fee_asset_item: u32, + weight_limit: WeightLimit, + ) -> DispatchResult { + Self::do_reserve_transfer_assets( + origin, + dest, + beneficiary, + assets, + fee_asset_item, + Some(weight_limit), + ) + } + + /// Teleport some assets from the local chain to some destination chain. + /// + /// Fee payment on the destination side is made from the first asset listed in the `assets` vector. + /// + /// - `origin`: Must be capable of withdrawing the `assets` and executing XCM. + /// - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send + /// from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain. + /// - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be + /// an `AccountId32` value. + /// - `assets`: The assets to be withdrawn. The first item should be the currency used to to pay the fee on the + /// `dest` side. May not be empty. + /// - `dest_weight`: Equal to the total weight on `dest` of the XCM message + /// `Teleport { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`. + /// - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase. + #[pallet::weight({ + let maybe_assets: Result = (*assets.clone()).try_into(); + let maybe_dest: Result = (*dest.clone()).try_into(); + match (maybe_assets, maybe_dest) { + (Ok(assets), Ok(dest)) => { + use sp_std::vec; + let mut message = Xcm(vec![ + WithdrawAsset(assets), + InitiateTeleport { assets: Wild(All), dest, xcm: Xcm(vec![]) }, + ]); + T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w) + }, + _ => Weight::max_value(), + } + })] + pub fn limited_teleport_assets( + origin: OriginFor, + dest: Box, + beneficiary: Box, + assets: Box, + fee_asset_item: u32, + weight_limit: WeightLimit, + ) -> DispatchResult { + Self::do_teleport_assets( + origin, + dest, + beneficiary, + assets, + fee_asset_item, + Some(weight_limit), + ) + } } impl Pallet { + fn do_reserve_transfer_assets( + origin: OriginFor, + dest: Box, + beneficiary: Box, + assets: Box, + fee_asset_item: u32, + maybe_weight_limit: Option, + ) -> DispatchResult { + let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; + let dest = (*dest).try_into().map_err(|()| Error::::BadVersion)?; + let beneficiary: MultiLocation = + (*beneficiary).try_into().map_err(|()| Error::::BadVersion)?; + let assets: MultiAssets = (*assets).try_into().map_err(|()| Error::::BadVersion)?; + + ensure!(assets.len() <= MAX_ASSETS_FOR_TRANSFER, Error::::TooManyAssets); + let value = (origin_location, assets.drain()); + ensure!(T::XcmReserveTransferFilter::contains(&value), Error::::Filtered); + let (origin_location, assets) = value; + let inv_dest = T::LocationInverter::invert_location(&dest) + .map_err(|()| Error::::DestinationNotInvertible)?; + let fees = assets + .get(fee_asset_item as usize) + .ok_or(Error::::Empty)? + .clone() + .reanchored(&inv_dest) + .map_err(|_| Error::::CannotReanchor)?; + let max_assets = assets.len() as u32; + let assets: MultiAssets = assets.into(); + let weight_limit = match maybe_weight_limit { + Some(weight_limit) => weight_limit, + None => { + let beneficiary = beneficiary.clone(); + let fees = fees.clone(); + let mut remote_message = Xcm(vec![ + ReserveAssetDeposited(assets.clone()), + ClearOrigin, + BuyExecution { fees, weight_limit: Limited(0) }, + DepositAsset { assets: Wild(All), max_assets, beneficiary }, + ]); + // use local weight for remote message and hope for the best. + let remote_weight = T::Weigher::weight(&mut remote_message) + .map_err(|()| Error::::UnweighableMessage)?; + Limited(remote_weight) + }, + }; + let xcm = Xcm(vec![ + BuyExecution { fees, weight_limit }, + DepositAsset { assets: Wild(All), max_assets, beneficiary }, + ]); + let mut message = Xcm(vec![TransferReserveAsset { assets, dest, xcm }]); + let weight = + T::Weigher::weight(&mut message).map_err(|()| Error::::UnweighableMessage)?; + let outcome = + T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); + Self::deposit_event(Event::Attempted(outcome)); + Ok(()) + } + + fn do_teleport_assets( + origin: OriginFor, + dest: Box, + beneficiary: Box, + assets: Box, + fee_asset_item: u32, + maybe_weight_limit: Option, + ) -> DispatchResult { + let origin_location = T::ExecuteXcmOrigin::ensure_origin(origin)?; + let dest = (*dest).try_into().map_err(|()| Error::::BadVersion)?; + let beneficiary: MultiLocation = + (*beneficiary).try_into().map_err(|()| Error::::BadVersion)?; + let assets: MultiAssets = (*assets).try_into().map_err(|()| Error::::BadVersion)?; + + ensure!(assets.len() <= MAX_ASSETS_FOR_TRANSFER, Error::::TooManyAssets); + let value = (origin_location, assets.drain()); + ensure!(T::XcmTeleportFilter::contains(&value), Error::::Filtered); + let (origin_location, assets) = value; + let inv_dest = T::LocationInverter::invert_location(&dest) + .map_err(|()| Error::::DestinationNotInvertible)?; + let fees = assets + .get(fee_asset_item as usize) + .ok_or(Error::::Empty)? + .clone() + .reanchored(&inv_dest) + .map_err(|_| Error::::CannotReanchor)?; + let max_assets = assets.len() as u32; + let assets: MultiAssets = assets.into(); + let weight_limit = match maybe_weight_limit { + Some(weight_limit) => weight_limit, + None => { + let beneficiary = beneficiary.clone(); + let fees = fees.clone(); + let mut remote_message = Xcm(vec![ + ReceiveTeleportedAsset(assets.clone()), + ClearOrigin, + BuyExecution { fees, weight_limit: Limited(0) }, + DepositAsset { assets: Wild(All), max_assets, beneficiary }, + ]); + // use local weight for remote message and hope for the best. + let remote_weight = T::Weigher::weight(&mut remote_message) + .map_err(|()| Error::::UnweighableMessage)?; + Limited(remote_weight) + }, + }; + let xcm = Xcm(vec![ + BuyExecution { fees, weight_limit }, + DepositAsset { assets: Wild(All), max_assets, beneficiary }, + ]); + let mut message = + Xcm(vec![WithdrawAsset(assets), InitiateTeleport { assets: Wild(All), dest, xcm }]); + let weight = + T::Weigher::weight(&mut message).map_err(|()| Error::::UnweighableMessage)?; + let outcome = + T::XcmExecutor::execute_xcm_in_credit(origin_location, message, weight, weight); + Self::deposit_event(Event::Attempted(outcome)); + Ok(()) + } + /// Will always make progress, and will do its best not to use much more than `weight_cutoff` /// in doing so. pub(crate) fn check_xcm_version_change( diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index ba5459e2c890..a9259e2155cf 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -234,7 +234,7 @@ fn teleport_assets_works() { Xcm(vec![ ReceiveTeleportedAsset((Here, SEND_AMOUNT).into()), ClearOrigin, - buy_limited_execution((Here, SEND_AMOUNT), 2000), + buy_limited_execution((Here, SEND_AMOUNT), 4000), DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, ]), )] @@ -248,6 +248,88 @@ fn teleport_assets_works() { }); } +/// Test `limited_teleport_assets` +/// +/// Asserts that the sender's balance is decreased as a result of execution of +/// local effects. +#[test] +fn limmited_teleport_assets_works() { + let balances = + vec![(ALICE, INITIAL_BALANCE), (ParaId::from(PARA_ID).into_account(), INITIAL_BALANCE)]; + new_test_ext_with_balances(balances).execute_with(|| { + let weight = 2 * BaseXcmWeight::get(); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE); + let dest: MultiLocation = AccountId32 { network: Any, id: BOB.into() }.into(); + assert_ok!(XcmPallet::limited_teleport_assets( + Origin::signed(ALICE), + Box::new(RelayLocation::get().into()), + Box::new(dest.clone().into()), + Box::new((Here, SEND_AMOUNT).into()), + 0, + WeightLimit::Limited(5000), + )); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE - SEND_AMOUNT); + assert_eq!( + sent_xcm(), + vec![( + RelayLocation::get().into(), + Xcm(vec![ + ReceiveTeleportedAsset((Here, SEND_AMOUNT).into()), + ClearOrigin, + buy_limited_execution((Here, SEND_AMOUNT), 5000), + DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, + ]), + )] + ); + let versioned_sent = VersionedXcm::from(sent_xcm().into_iter().next().unwrap().1); + let _check_v0_ok: xcm::v0::Xcm<()> = versioned_sent.try_into().unwrap(); + assert_eq!( + last_event(), + Event::XcmPallet(crate::Event::Attempted(Outcome::Complete(weight))) + ); + }); +} + +/// Test `limited_teleport_assets` with unlimited weight +/// +/// Asserts that the sender's balance is decreased as a result of execution of +/// local effects. +#[test] +fn unlimmited_teleport_assets_works() { + let balances = + vec![(ALICE, INITIAL_BALANCE), (ParaId::from(PARA_ID).into_account(), INITIAL_BALANCE)]; + new_test_ext_with_balances(balances).execute_with(|| { + let weight = 2 * BaseXcmWeight::get(); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE); + let dest: MultiLocation = AccountId32 { network: Any, id: BOB.into() }.into(); + assert_ok!(XcmPallet::limited_teleport_assets( + Origin::signed(ALICE), + Box::new(RelayLocation::get().into()), + Box::new(dest.clone().into()), + Box::new((Here, SEND_AMOUNT).into()), + 0, + WeightLimit::Unlimited, + )); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE - SEND_AMOUNT); + assert_eq!( + sent_xcm(), + vec![( + RelayLocation::get().into(), + Xcm(vec![ + ReceiveTeleportedAsset((Here, SEND_AMOUNT).into()), + ClearOrigin, + buy_execution((Here, SEND_AMOUNT)), + DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, + ]), + )] + ); + assert_eq!( + last_event(), + Event::XcmPallet(crate::Event::Attempted(Outcome::Complete(weight))) + ); + }); +} + /// Test `reserve_transfer_assets` /// /// Asserts that the sender's balance is decreased and the beneficiary's balance @@ -280,7 +362,54 @@ fn reserve_transfer_assets_works() { Xcm(vec![ ReserveAssetDeposited((Parent, SEND_AMOUNT).into()), ClearOrigin, - buy_limited_execution((Parent, SEND_AMOUNT), 2000), + buy_limited_execution((Parent, SEND_AMOUNT), 4000), + DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, + ]), + )] + ); + let versioned_sent = VersionedXcm::from(sent_xcm().into_iter().next().unwrap().1); + let _check_v0_ok: xcm::v0::Xcm<()> = versioned_sent.try_into().unwrap(); + assert_eq!( + last_event(), + Event::XcmPallet(crate::Event::Attempted(Outcome::Complete(weight))) + ); + }); +} + +/// Test `limited_reserve_transfer_assets` +/// +/// Asserts that the sender's balance is decreased and the beneficiary's balance +/// is increased. Verifies the correct message is sent and event is emitted. +#[test] +fn limited_reserve_transfer_assets_works() { + let balances = + vec![(ALICE, INITIAL_BALANCE), (ParaId::from(PARA_ID).into_account(), INITIAL_BALANCE)]; + new_test_ext_with_balances(balances).execute_with(|| { + let weight = BaseXcmWeight::get(); + let dest: MultiLocation = + Junction::AccountId32 { network: NetworkId::Any, id: ALICE.into() }.into(); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE); + assert_ok!(XcmPallet::limited_reserve_transfer_assets( + Origin::signed(ALICE), + Box::new(Parachain(PARA_ID).into().into()), + Box::new(dest.clone().into()), + Box::new((Here, SEND_AMOUNT).into()), + 0, + WeightLimit::Limited(5000), + )); + // Alice spent amount + assert_eq!(Balances::free_balance(ALICE), INITIAL_BALANCE - SEND_AMOUNT); + // Destination account (parachain account) has amount + let para_acc: AccountId = ParaId::from(PARA_ID).into_account(); + assert_eq!(Balances::free_balance(para_acc), INITIAL_BALANCE + SEND_AMOUNT); + assert_eq!( + sent_xcm(), + vec![( + Parachain(PARA_ID).into(), + Xcm(vec![ + ReserveAssetDeposited((Parent, SEND_AMOUNT).into()), + ClearOrigin, + buy_limited_execution((Parent, SEND_AMOUNT), 5000), DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, ]), )] @@ -294,6 +423,51 @@ fn reserve_transfer_assets_works() { }); } +/// Test `limited_reserve_transfer_assets` with unlimited weight purchasing +/// +/// Asserts that the sender's balance is decreased and the beneficiary's balance +/// is increased. Verifies the correct message is sent and event is emitted. +#[test] +fn unlimited_reserve_transfer_assets_works() { + let balances = + vec![(ALICE, INITIAL_BALANCE), (ParaId::from(PARA_ID).into_account(), INITIAL_BALANCE)]; + new_test_ext_with_balances(balances).execute_with(|| { + let weight = BaseXcmWeight::get(); + let dest: MultiLocation = + Junction::AccountId32 { network: NetworkId::Any, id: ALICE.into() }.into(); + assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE); + assert_ok!(XcmPallet::limited_reserve_transfer_assets( + Origin::signed(ALICE), + Box::new(Parachain(PARA_ID).into().into()), + Box::new(dest.clone().into()), + Box::new((Here, SEND_AMOUNT).into()), + 0, + WeightLimit::Unlimited, + )); + // Alice spent amount + assert_eq!(Balances::free_balance(ALICE), INITIAL_BALANCE - SEND_AMOUNT); + // Destination account (parachain account) has amount + let para_acc: AccountId = ParaId::from(PARA_ID).into_account(); + assert_eq!(Balances::free_balance(para_acc), INITIAL_BALANCE + SEND_AMOUNT); + assert_eq!( + sent_xcm(), + vec![( + Parachain(PARA_ID).into(), + Xcm(vec![ + ReserveAssetDeposited((Parent, SEND_AMOUNT).into()), + ClearOrigin, + buy_execution((Parent, SEND_AMOUNT)), + DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }, + ]), + )] + ); + assert_eq!( + last_event(), + Event::XcmPallet(crate::Event::Attempted(Outcome::Complete(weight))) + ); + }); +} + /// Test local execution of XCM /// /// Asserts that the sender's balance is decreased and the beneficiary's balance From 9d2ef45e24f1b3c8bafbde7ac98ad8e89907927a Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Wed, 27 Oct 2021 15:13:12 +0200 Subject: [PATCH 22/71] Allow Queries and Subscriptions (#4150) * Allow Queries and Subscriptions * Formatting * Formatting --- runtime/kusama/src/lib.rs | 23 +++++++++++++++++------ runtime/rococo/src/lib.rs | 12 ++++++++---- runtime/westend/src/lib.rs | 9 +++++++-- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 07268e352985..e773febefb97 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -48,7 +48,7 @@ use runtime_parachains::{ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ - construct_runtime, parameter_types, + construct_runtime, match_type, parameter_types, traits::{Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing}, weights::Weight, PalletId, RuntimeDebug, @@ -77,11 +77,12 @@ use sp_version::RuntimeVersion; use static_assertions::const_assert; use xcm::latest::prelude::*; use xcm_builder::{ - AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, - BackingToPlurality, ChildParachainAsNative, ChildParachainConvertsVia, - ChildSystemParachainAsSuperuser, CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, - IsChildSystemParachain, IsConcrete, LocationInverter, SignedAccountId32AsNative, - SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, BackingToPlurality, + ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, + CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete, + LocationInverter, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, + TakeWeightCredit, UsingComponents, }; use xcm_executor::XcmExecutor; @@ -1329,6 +1330,12 @@ parameter_types! { } pub type TrustedTeleporters = (xcm_builder::Case,); +match_type! { + pub type OnlyParachains: impl Contains = { + MultiLocation { parents: 0, interior: X1(Parachain(_)) } + }; +} + /// The barriers one of which must be passed for an XCM message to be executed. pub type Barrier = ( // Weight that is paid for may be consumed. @@ -1337,6 +1344,10 @@ pub type Barrier = ( AllowTopLevelPaidExecutionFrom, // Messages coming from system parachains need not pay for execution. AllowUnpaidExecutionFrom>, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, ); pub struct XcmConfig; diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index bf3826f5512f..2f7bc9ffbc28 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -84,10 +84,10 @@ use constants::{currency::*, fee::*, time::*}; use frame_support::traits::InstanceFilter; use xcm::latest::prelude::*; use xcm_builder::{ - AccountId32Aliases, BackingToPlurality, ChildParachainAsNative, ChildParachainConvertsVia, - ChildSystemParachainAsSuperuser, CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, - IsConcrete, LocationInverter, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, UsingComponents, + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, BackingToPlurality, + ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, + CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsConcrete, LocationInverter, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, UsingComponents, }; use xcm_executor::XcmExecutor; @@ -672,6 +672,10 @@ pub type Barrier = ( TakeWeightCredit, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom>, // <- Trusted parachains get free execution + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, ); pub struct XcmConfig; diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 9ab3dadcebd9..1ab95475b1b3 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -46,8 +46,9 @@ use runtime_parachains::{ use xcm::latest::prelude::*; use xcm_builder::{ - AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, - ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, + AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, ChildParachainAsNative, + ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, CurrencyAdapter as XcmCurrencyAdapter, IsChildSystemParachain, IsConcrete, LocationInverter, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents, WeightInfoBounds, @@ -976,6 +977,10 @@ pub type Barrier = ( AllowTopLevelPaidExecutionFrom, // Messages coming from system parachains need not pay for execution. AllowUnpaidExecutionFrom>, + // Expected responses are OK. + AllowKnownQueryResponses, + // Subscriptions for version tracking are OK. + AllowSubscriptionsFrom, ); pub struct XcmConfig; From 9eb990d40d0ff665e56c7e82a26636964ea39b25 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Wed, 27 Oct 2021 15:13:39 +0200 Subject: [PATCH 23/71] Fix XCM Teleport Benchmark (#4146) * fix xcm benchmark * fix overflow * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs * fix spelling * fmt * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs Co-authored-by: Parity Bot --- .../src/futures_undead.rs | 2 +- runtime/common/src/elections.rs | 2 +- .../xcm/pallet_xcm_benchmarks_fungible.rs | 41 ++++++++++++------- .../src/fungible/benchmarking.rs | 25 +++++++---- .../src/fungible/mock.rs | 9 +++- xcm/pallet-xcm/src/lib.rs | 2 +- xcm/pallet-xcm/src/tests.rs | 2 +- 7 files changed, 55 insertions(+), 28 deletions(-) diff --git a/node/network/availability-recovery/src/futures_undead.rs b/node/network/availability-recovery/src/futures_undead.rs index 550f41a9b3cf..aa91c39f8ed1 100644 --- a/node/network/availability-recovery/src/futures_undead.rs +++ b/node/network/availability-recovery/src/futures_undead.rs @@ -18,7 +18,7 @@ //! futures will still get polled, but will not count towards length. So length will only count //! futures, which are still considered live. //! -//! Usecase: If futures take longer than we would like them too, we may be able to request the data +//! Use case: If futures take longer than we would like them too, we may be able to request the data //! from somewhere else as well. We don't really want to cancel the old future, because maybe it //! was almost done, thus we would have wasted time with our impatience. By simply making them //! not count towards length, we can make sure to have enough "live" requests ongoing, while at the diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index 03989a64b439..ae0ec401f63a 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -70,7 +70,7 @@ pub type GenesisElectionOf = /// pallet-election-provider-multi-phase. pub const MINER_MAX_ITERATIONS: u32 = 10; -/// A source of random balance for the NPoS Solver, which is meant to be run by the offchain worker +/// A source of random balance for the NPoS Solver, which is meant to be run by the off-chain worker /// election miner. pub struct OffchainRandomBalancing; impl frame_support::pallet_prelude::Get> diff --git a/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 869c1bca408f..08b75be93653 100644 --- a/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -17,7 +17,7 @@ //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-10-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 // Executed Command: @@ -48,48 +48,59 @@ pub struct WeightInfo(PhantomData); impl WeightInfo { // Storage: System Account (r:1 w:1) pub(crate) fn withdraw_asset() -> Weight { - (39_691_000 as Weight) + (43_806_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:2 w:2) pub(crate) fn transfer_asset() -> Weight { - (62_616_000 as Weight) + (68_076_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: System Account (r:2 w:2) + // Storage: XcmPallet SupportedVersion (r:1 w:0) + // Storage: XcmPallet VersionDiscoveryQueue (r:1 w:1) + // Storage: XcmPallet SafeXcmVersion (r:1 w:0) // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) // Storage: Dmp DownwardMessageQueues (r:1 w:1) pub(crate) fn transfer_reserve_asset() -> Weight { - (86_642_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) + (99_639_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) } - // Storage: Benchmark Override (r:0 w:0) + // Storage: System Account (r:1 w:1) pub(crate) fn receive_teleported_asset() -> Weight { - (2_000_000_000_000 as Weight) + (38_670_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) pub(crate) fn deposit_asset() -> Weight { - (49_745_000 as Weight) + (51_793_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) + // Storage: XcmPallet SupportedVersion (r:1 w:0) + // Storage: XcmPallet VersionDiscoveryQueue (r:1 w:1) + // Storage: XcmPallet SafeXcmVersion (r:1 w:0) // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) // Storage: Dmp DownwardMessageQueues (r:1 w:1) pub(crate) fn deposit_reserve_asset() -> Weight { - (75_318_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (85_782_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } // Storage: System Account (r:1 w:1) + // Storage: XcmPallet SupportedVersion (r:1 w:0) + // Storage: XcmPallet VersionDiscoveryQueue (r:1 w:1) + // Storage: XcmPallet SafeXcmVersion (r:1 w:0) // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) // Storage: Dmp DownwardMessageQueues (r:1 w:1) pub(crate) fn initiate_teleport() -> Weight { - (75_467_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (84_873_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } } diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs index 3a71d771c11d..9e2083704254 100644 --- a/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs +++ b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs @@ -17,8 +17,11 @@ use super::*; use crate::{account_and_location, new_executor, worst_case_holding, AssetTransactorOf, XcmCallOf}; use frame_benchmarking::{benchmarks_instance_pallet, BenchmarkError, BenchmarkResult}; -use frame_support::{pallet_prelude::Get, traits::fungible::Inspect}; -use sp_runtime::traits::Zero; +use frame_support::{ + pallet_prelude::Get, + traits::fungible::{Inspect, Mutate}, +}; +use sp_runtime::traits::{Bounded, Zero}; use sp_std::{convert::TryInto, prelude::*, vec}; use xcm::latest::prelude::*; use xcm_executor::traits::{Convert, TransactAsset}; @@ -106,11 +109,19 @@ benchmarks_instance_pallet! { receive_teleported_asset { // If there is no trusted teleporter, then we skip this benchmark. - let (trusted_teleporter, teleportable_asset) = T::TrustedTeleporter::get().ok_or( - BenchmarkError::Override( - BenchmarkResult::from_weight(T::BlockWeights::get().max_block) - ) - )?; + let (trusted_teleporter, teleportable_asset) = T::TrustedTeleporter::get() + .ok_or(BenchmarkError::Skip)?; + + if let Some(checked_account) = T::CheckedAccount::get() { + T::TransactAsset::mint_into( + &checked_account, + < + T::TransactAsset + as + Inspect + >::Balance::max_value() / 2u32.into(), + )?; + } let assets: MultiAssets = vec![ teleportable_asset ].into(); diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs b/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs index 8666dc6caa4d..fb5f3059561b 100644 --- a/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs +++ b/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs @@ -131,7 +131,7 @@ impl xcm_executor::Config for XcmConfig { type AssetTransactor = AssetTransactor; type OriginConverter = (); type IsReserve = (); - type IsTeleporter = (); + type IsTeleporter = TrustedTeleporters; type LocationInverter = xcm_builder::LocationInverter; type Barrier = AllowUnpaidExecutionFrom; type Weigher = xcm_builder::FixedWeightBounds; @@ -153,12 +153,17 @@ impl crate::Config for Test { } } +pub type TrustedTeleporters = (xcm_builder::Case,); + parameter_types! { pub const CheckedAccount: Option = Some(100); + pub const ChildTeleporter: MultiLocation = Parachain(1000).into(); pub const TrustedTeleporter: Option<(MultiLocation, MultiAsset)> = Some(( - X1(OnlyChild).into(), + ChildTeleporter::get(), MultiAsset { id: Concrete(Here.into()), fun: Fungible(100) }, )); + pub const TeleConcreteFung: (MultiAssetFilter, MultiLocation) = + (Wild(AllOf { fun: WildFungible, id: Concrete(Here.into()) }), ChildTeleporter::get()); } impl xcm_balances_benchmark::Config for Test { diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 0ae27321902a..393d015d6592 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -179,7 +179,7 @@ pub mod pallet { /// \[ origin location, id, expected location \] InvalidResponder(MultiLocation, QueryId, Option), /// Expected query response has been received but the expected origin location placed in - /// storate by this runtime previously cannot be decoded. The query remains registered. + /// storage by this runtime previously cannot be decoded. The query remains registered. /// /// This is unexpected (since a location placed in storage in a previously executing /// runtime should be readable prior to query timeout) and dangerous since the possibly diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index a9259e2155cf..660ac0ef14a8 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -861,7 +861,7 @@ fn subscriber_side_subscription_works() { }); } -/// We should autosubscribe when we don't know the remote's version. +/// We should auto-subscribe when we don't know the remote's version. #[test] fn auto_subscription_works() { new_test_ext_with_balances(vec![]).execute_with(|| { From c8e127ab4a69262a847777044293b2ce7a1b76b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Oct 2021 17:27:35 +0200 Subject: [PATCH 24/71] Bump syn from 1.0.80 to 1.0.81 (#4155) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.80 to 1.0.81. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.80...1.0.81) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d50a2428325e..9198a3c6c6d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7378,9 +7378,9 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc3358ebc67bc8b7fa0c007f945b0b18226f78437d61bec735a9eb96b61ee70" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ "unicode-xid", ] @@ -10393,9 +10393,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" +checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" dependencies = [ "proc-macro2", "quote", diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 11bdf036952b..97ca4214760a 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -12,7 +12,7 @@ targets = ["x86_64-unknown-linux-gnu"] proc-macro = true [dependencies] -syn = { version = "1.0.80", features = ["full", "extra-traits"] } +syn = { version = "1.0.81", features = ["full", "extra-traits"] } quote = "1.0.10" proc-macro2 = "1.0.30" proc-macro-crate = "1.1.0" diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index 0e5682d98bef..3d007b02a246 100644 --- a/xcm/procedural/Cargo.toml +++ b/xcm/procedural/Cargo.toml @@ -10,4 +10,4 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.30" quote = "1.0.10" -syn = "1.0.80" +syn = "1.0.81" From dcccd9671191f54831b6b0d9c44170d0eb184700 Mon Sep 17 00:00:00 2001 From: Alexander Popiak Date: Wed, 27 Oct 2021 22:14:06 +0200 Subject: [PATCH 25/71] adjust max downward message size to be the same as upward message size (#4129) --- node/service/src/chain_spec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 84c6e767f0ea..59dc3fcfd4a1 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -181,7 +181,7 @@ fn default_parachains_host_configuration( thread_availability_period: 4, max_upward_queue_count: 8, max_upward_queue_size: 1024 * 1024, - max_downward_message_size: 1024, + max_downward_message_size: 1024 * 1024, // this is approximatelly 4ms. // // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with From d9494b8b5088d13702c88ef8ea2d9eb80a5d1fc1 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 27 Oct 2021 15:22:42 -0500 Subject: [PATCH 26/71] improved approval-voting logging (#4162) * improved approval-voting logging * fmt --- node/core/approval-voting/src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index af46ad55fa04..01edc67a335a 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -1326,6 +1326,9 @@ async fn handle_approved_ancestor( let next_wakeup = wakeups.wakeup_for(block_hash, candidate_hash); + let approved = + triggered && { a_entry.local_statements().1.is_some() }; + tracing::debug!( target: LOG_TARGET, ?candidate_hash, @@ -1334,6 +1337,7 @@ async fn handle_approved_ancestor( ?next_wakeup, status = %status(), triggered, + approved, "assigned." ); }, From c50bdc8f0b36d47b38341b332d75e315cdd658f8 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Wed, 27 Oct 2021 23:36:41 +0200 Subject: [PATCH 27/71] Fix wrong warning. (#4163) --- node/network/dispute-distribution/src/sender/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/node/network/dispute-distribution/src/sender/mod.rs b/node/network/dispute-distribution/src/sender/mod.rs index b1243ec0ef32..c047c4b72665 100644 --- a/node/network/dispute-distribution/src/sender/mod.rs +++ b/node/network/dispute-distribution/src/sender/mod.rs @@ -232,7 +232,8 @@ impl DisputeSender { let valid_vote = votes.valid.get(0).ok_or(NonFatal::MissingVotesFromCoordinator)?; (valid_vote, our_invalid_vote) } else { - return Err(From::from(NonFatal::MissingVotesFromCoordinator)) + // There is no vote from us yet - nothing to do. + return Ok(()) }; let (kind, valid_index, signature) = valid_vote; let valid_public = info From 16e67d284bd69bf8efed363a030382d1e689743b Mon Sep 17 00:00:00 2001 From: zjb0807 Date: Thu, 28 Oct 2021 17:16:45 +0800 Subject: [PATCH 28/71] implement GenesisConfig for pallet-xcm (#4125) * implement GenesisConfig for pallet-xcm * Apply review suggestions --- xcm/pallet-xcm/src/mock.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xcm/pallet-xcm/src/mock.rs b/xcm/pallet-xcm/src/mock.rs index 8b6174c5b722..aff45151be69 100644 --- a/xcm/pallet-xcm/src/mock.rs +++ b/xcm/pallet-xcm/src/mock.rs @@ -126,7 +126,7 @@ construct_runtime!( System: frame_system::{Pallet, Call, Storage, Config, Event}, Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, ParasOrigin: origin::{Pallet, Origin}, - XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin}, + XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin, Config}, TestNotifier: pallet_test_notifier::{Pallet, Call, Event}, } ); @@ -324,6 +324,12 @@ pub(crate) fn new_test_ext_with_balances( .assimilate_storage(&mut t) .unwrap(); + >::assimilate_storage( + &pallet_xcm::GenesisConfig { safe_xcm_version: Some(2) }, + &mut t, + ) + .unwrap(); + let mut ext = sp_io::TestExternalities::new(t); ext.execute_with(|| System::set_block_number(1)); ext From 42e70e0343341aab6e93284ad2779d96aa9b62fa Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Thu, 28 Oct 2021 11:47:00 +0200 Subject: [PATCH 29/71] fix: chain sel + av-store error handling (#4159) * fix: error handling * more error handling * fixup * fixup * fixup name * fixup * simplify * spelling, docs --- node/core/av-store/src/lib.rs | 41 +++++++++++++++----- node/core/chain-selection/src/lib.rs | 56 +++++++++++++++++++--------- 2 files changed, 70 insertions(+), 27 deletions(-) diff --git a/node/core/av-store/src/lib.rs b/node/core/av-store/src/lib.rs index 96c0266a4fa6..2227442eb9ac 100644 --- a/node/core/av-store/src/lib.rs +++ b/node/core/av-store/src/lib.rs @@ -162,9 +162,9 @@ fn query_inner( Ok(Some(res)) }, Ok(None) => Ok(None), - Err(e) => { - tracing::warn!(target: LOG_TARGET, err = ?e, "Error reading from the availability store"); - Err(e.into()) + Err(err) => { + tracing::warn!(target: LOG_TARGET, ?err, "Error reading from the availability store"); + Err(err.into()) }, } } @@ -365,6 +365,20 @@ pub enum Error { CustomDatabase, } +impl Error { + /// Determine if the error is irrecoverable + /// or notifying the user via means of logging + /// is sufficient. + fn is_fatal(&self) -> bool { + match self { + Self::Io(_) => true, + Self::Oneshot(_) => true, + Self::CustomDatabase => true, + _ => false, + } + } +} + impl Error { fn trace(&self) { match self { @@ -524,8 +538,7 @@ where match res { Err(e) => { e.trace(); - - if let Error::Subsystem(SubsystemError::Context(_)) = e { + if e.is_fatal() { break } }, @@ -840,8 +853,18 @@ where let (tx, rx) = oneshot::channel(); ctx.send_message(ChainApiMessage::FinalizedBlockHash(batch_num, tx)).await; - match rx.await?? { - None => { + match rx.await? { + Err(err) => { + tracing::warn!( + target: LOG_TARGET, + batch_num, + ?err, + "Failed to retrieve finalized block number.", + ); + + break + }, + Ok(None) => { tracing::warn!( target: LOG_TARGET, "Availability store was informed that block #{} is finalized, \ @@ -851,7 +874,7 @@ where break }, - Some(h) => h, + Ok(Some(h)) => h, } }; @@ -1093,7 +1116,7 @@ fn process_message( }, Err(e) => { let _ = tx.send(Err(())); - return Err(e) + return Err(e.into()) }, } }, diff --git a/node/core/chain-selection/src/lib.rs b/node/core/chain-selection/src/lib.rs index dce942155e56..925d647c4972 100644 --- a/node/core/chain-selection/src/lib.rs +++ b/node/core/chain-selection/src/lib.rs @@ -348,14 +348,11 @@ async fn run( B: Backend, { loop { - let res = run_iteration(&mut ctx, &mut backend, &stagnant_check_interval, &*clock).await; + let res = run_until_error(&mut ctx, &mut backend, &stagnant_check_interval, &*clock).await; match res { Err(e) => { e.trace(); - - if let Error::Subsystem(SubsystemError::Context(_)) = e { - break - } + break }, Ok(()) => { tracing::info!(target: LOG_TARGET, "received `Conclude` signal, exiting"); @@ -370,7 +367,7 @@ async fn run( // // A return value of `Ok` indicates that an exit should be made, while non-fatal errors // lead to another call to this function. -async fn run_iteration( +async fn run_until_error( ctx: &mut Context, backend: &mut B, stagnant_check_interval: &StagnantCheckInterval, @@ -440,21 +437,36 @@ async fn fetch_finalized( ctx: &mut impl SubsystemContext, ) -> Result, Error> { let (number_tx, number_rx) = oneshot::channel(); - let (hash_tx, hash_rx) = oneshot::channel(); ctx.send_message(ChainApiMessage::FinalizedBlockNumber(number_tx)).await; - let number = number_rx.await??; + let number = match number_rx.await? { + Ok(number) => number, + Err(err) => { + tracing::warn!(target: LOG_TARGET, ?err, "Fetching finalized number failed"); + return Ok(None) + }, + }; + + let (hash_tx, hash_rx) = oneshot::channel(); ctx.send_message(ChainApiMessage::FinalizedBlockHash(number, hash_tx)).await; - match hash_rx.await?? { - None => { + match hash_rx.await? { + Err(err) => { + tracing::warn!( + target: LOG_TARGET, + number, + ?err, + "Fetching finalized block number failed" + ); + Ok(None) + }, + Ok(None) => { tracing::warn!(target: LOG_TARGET, number, "Missing hash for finalized block number"); - - return Ok(None) + Ok(None) }, - Some(h) => Ok(Some((h, number))), + Ok(Some(h)) => Ok(Some((h, number))), } } @@ -462,10 +474,13 @@ async fn fetch_header( ctx: &mut impl SubsystemContext, hash: Hash, ) -> Result, Error> { - let (h_tx, h_rx) = oneshot::channel(); - ctx.send_message(ChainApiMessage::BlockHeader(hash, h_tx)).await; + let (tx, rx) = oneshot::channel(); + ctx.send_message(ChainApiMessage::BlockHeader(hash, tx)).await; - h_rx.await?.map_err(Into::into) + Ok(rx.await?.unwrap_or_else(|err| { + tracing::warn!(target: LOG_TARGET, ?hash, ?err, "Missing hash for finalized block number"); + None + })) } async fn fetch_block_weight( @@ -475,7 +490,12 @@ async fn fetch_block_weight( let (tx, rx) = oneshot::channel(); ctx.send_message(ChainApiMessage::BlockWeight(hash, tx)).await; - rx.await?.map_err(Into::into) + let res = rx.await?; + + Ok(res.unwrap_or_else(|err| { + tracing::warn!(target: LOG_TARGET, ?hash, ?err, "Missing hash for finalized block number"); + None + })) } // Handle a new active leaf. @@ -590,7 +610,7 @@ fn extract_reversion_logs(header: &Header) -> Vec { logs } -// Handle a finalized block event. +/// Handle a finalized block event. fn handle_finalized_block( backend: &mut impl Backend, finalized_hash: Hash, From a75c2624ff174ef62013fcfee8d17b82b0f240a8 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 28 Oct 2021 15:40:13 +0200 Subject: [PATCH 30/71] enable disputes feature in CI (#4168) --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb996660f1c1..52c31b4d2fe5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -197,7 +197,7 @@ test-build-linux-stable: script: - ./scripts/gitlab/test_linux_stable.sh # we're using the bin built here, instead of having a parallel `build-linux-release` - - time cargo build --release --verbose --bin polkadot + - time cargo build --release --verbose --bin polkadot --features "disputes" - sccache -s # pack artifacts - mkdir -p ./artifacts From c920ab75c4393f59ff4a1bae0c2cb151910fd12f Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Thu, 28 Oct 2021 22:34:28 +0800 Subject: [PATCH 31/71] Remove stale migrations (#4171) Signed-off-by: koushiro --- runtime/polkadot/src/lib.rs | 102 +----------------------------------- 1 file changed, 1 insertion(+), 101 deletions(-) diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index df0b85c80a3a..d57305852fd9 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -41,7 +41,7 @@ use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, traits::{Contains, KeyOwnerProofSystem, LockIdentifier, OnRuntimeUpgrade}, - weights::{constants::WEIGHT_PER_MILLIS, Weight}, + weights::Weight, PalletId, RuntimeDebug, }; use frame_system::{EnsureOneOf, EnsureRoot}; @@ -1393,106 +1393,6 @@ impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { } } -/// Set the initial host configuration for Polkadot. -pub struct SetInitialHostConfiguration; -impl OnRuntimeUpgrade for SetInitialHostConfiguration { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - use parachains_configuration::HostConfiguration; - - let active_config: HostConfiguration = HostConfiguration { - max_code_size: 10_485_760, - max_head_data_size: 20_480, - max_upward_queue_count: 10, - max_upward_queue_size: 51_200, - max_upward_message_size: 51_200, - max_upward_message_num_per_candidate: 10, - hrmp_max_message_num_per_candidate: 10, - validation_upgrade_frequency: 14_400, - validation_upgrade_delay: 600, - max_pov_size: 5_242_880, - max_downward_message_size: 51_200, - ump_service_total_weight: 100_000_000_000, - hrmp_max_parachain_outbound_channels: 10, - hrmp_max_parathread_outbound_channels: 0, - hrmp_sender_deposit: deposit(1004, 100 * 1024), - hrmp_recipient_deposit: deposit(1004, 100 * 1024), - hrmp_channel_max_capacity: 1_000, - hrmp_channel_max_total_size: 102_400, - hrmp_max_parachain_inbound_channels: 10, - hrmp_max_parathread_inbound_channels: 0, - hrmp_channel_max_message_size: 102_400, - code_retention_period: EPOCH_DURATION_IN_SLOTS * 6, - parathread_cores: 0, - parathread_retries: 0, - group_rotation_frequency: 10, - chain_availability_period: 10, - thread_availability_period: 10, - scheduling_lookahead: 1, - max_validators_per_core: Some(5), - max_validators: Some(200), - dispute_period: 6, - dispute_post_conclusion_acceptance_period: 600, - dispute_max_spam_slots: 2, - dispute_conclusion_by_time_out_period: 600, - no_show_slots: 2, - n_delay_tranches: 89, - zeroth_delay_tranche_width: 0, - needed_approvals: 30, - relay_vrf_modulo_samples: 40, - ump_max_individual_weight: 20 * WEIGHT_PER_MILLIS, - }; - - // Only set the config if it's needed to be set explicitly. - if Configuration::config() == Default::default() { - Configuration::force_set_active_config(active_config); - } - - { - // At the moment, the `parachains_configuration` crate has already had one runtime - // storage migration (performed as part of [#3575]). As the result a call to - // `StorageVersion::get::` will return `Some(1)` - // - // However, Polkadot is just about to have its first version of parachains runtime - // pallets and thus there is no existing storage which needs to be migrated. Above - // we just have set the active configuration of the actual version, i.e. the same as the - // version 1 on Kusama. - // - // The caveat here is when we deploy a module for the first time, it's runtime version - // will be empty and thus it will be considered as version 0. Since we want to avoid - // the situation where the same storage structure has version 0 on Polkadot and - // version 1 on Kusama we need to set the storage version explicitly. - // - // [#3575]: https://github.com/paritytech/polkadot/pull/3575 - use frame_support::traits::StorageVersion; - StorageVersion::new(1).put::(); - } - - RocksDbWeight::get().reads(1) + RocksDbWeight::get().writes(1) - } -} - -const TIPS_OLD_PREFIX: &str = "Treasury"; -/// Migrate pallet-tips from `Treasury` to the new pallet prefix `Tips` -pub struct MigrateTipsPalletPrefix; - -impl OnRuntimeUpgrade for MigrateTipsPalletPrefix { - fn on_runtime_upgrade() -> frame_support::weights::Weight { - pallet_tips::migrations::v4::migrate::(TIPS_OLD_PREFIX) - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result<(), &'static str> { - pallet_tips::migrations::v4::pre_migrate::(TIPS_OLD_PREFIX); - Ok(()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade() -> Result<(), &'static str> { - pallet_tips::migrations::v4::post_migrate::(TIPS_OLD_PREFIX); - Ok(()) - } -} - #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { From f3a728e0bf50d9530261d10d5f2d62d2c9494701 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Oct 2021 12:19:47 +0200 Subject: [PATCH 32/71] Bump trybuild from 1.0.50 to 1.0.52 (#4156) Bumps [trybuild](https://github.com/dtolnay/trybuild) from 1.0.50 to 1.0.52. - [Release notes](https://github.com/dtolnay/trybuild/releases) - [Commits](https://github.com/dtolnay/trybuild/compare/1.0.50...1.0.52) --- updated-dependencies: - dependency-name: trybuild dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/overseer/overseer-gen/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9198a3c6c6d4..e2c1ded6b4a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10984,9 +10984,9 @@ dependencies = [ [[package]] name = "trybuild" -version = "1.0.50" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaccfa9796293406a02ec790614628c88d0b3246249a620ac1ee7076274716b" +checksum = "150e726dc059e6fbd4fce3288f5bb3cf70128cf63b0dde23b938a3cad810fb23" dependencies = [ "glob", "lazy_static", diff --git a/node/overseer/overseer-gen/Cargo.toml b/node/overseer/overseer-gen/Cargo.toml index 98f040efcf11..06863ad9f980 100644 --- a/node/overseer/overseer-gen/Cargo.toml +++ b/node/overseer/overseer-gen/Cargo.toml @@ -19,4 +19,4 @@ futures-timer = "3.0.2" pin-project = "1.0" [dev-dependencies] -trybuild = "1.0.50" +trybuild = "1.0.52" From e9f329f747a415480281e9d88063ab091c33dbdf Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Fri, 29 Oct 2021 15:07:10 +0200 Subject: [PATCH 33/71] bump finality safety net depth to 500 blocks (#4178) --- node/service/src/relay_chain_selection.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs index 31d878218e8f..c195b91c78ed 100644 --- a/node/service/src/relay_chain_selection.rs +++ b/node/service/src/relay_chain_selection.rs @@ -53,7 +53,7 @@ use std::sync::Arc; /// or disputes. /// /// This is a safety net that should be removed at some point in the future. -const MAX_FINALITY_LAG: polkadot_primitives::v1::BlockNumber = 50; +const MAX_FINALITY_LAG: polkadot_primitives::v1::BlockNumber = 500; const LOG_TARGET: &str = "parachain::chain-selection"; From d3a9b5be9b78a8bc62e842965656136ede876ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 29 Oct 2021 18:53:32 +0200 Subject: [PATCH 34/71] Introduce `OriginPrivilegeCmp` (#4166) * Introduce `OriginPrivilegeCmp` Make use of the new `OriginPrivilegeCmp` feature of pallet scheduler. The idea is to make sure that a council origin with more yes votes has higher privileges than a council origin with less yes votes. This solves a problem that happened recently on Kusama where the council tried to cancel a scheduled task, but that required that the same council origin was used while the cancel motion had more yes votes than the origin motion that scheduled this task. With this origin privilege compare it should now be solved by checking the yes votes directly. * Feedback * update lockfile for substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 328 ++++++++++++++++++------------------ runtime/kusama/src/lib.rs | 31 +++- runtime/polkadot/src/lib.rs | 28 ++- runtime/westend/src/lib.rs | 1 + 4 files changed, 221 insertions(+), 167 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2c1ded6b4a7..a76c34f86d9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -1910,7 +1910,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", ] @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "Inflector", "chrono", @@ -1974,7 +1974,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -1988,7 +1988,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -2016,7 +2016,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "bitflags", "frame-metadata", @@ -2043,7 +2043,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2055,7 +2055,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro2", "quote", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -2111,7 +2111,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "log", @@ -2128,7 +2128,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "sp-api", @@ -2365,7 +2365,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "chrono", "frame-election-provider-support", @@ -4606,7 +4606,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -4636,7 +4636,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -4651,7 +4651,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4675,7 +4675,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4710,7 +4710,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "beefy-primitives", "frame-support", @@ -4726,7 +4726,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4751,7 +4751,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4853,7 +4853,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4893,7 +4893,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4911,7 +4911,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4926,7 +4926,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5002,7 +5002,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5037,7 +5037,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5053,7 +5053,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5070,7 +5070,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5085,7 +5085,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5099,7 +5099,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5139,7 +5139,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5154,7 +5154,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5168,7 +5168,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5184,7 +5184,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5205,7 +5205,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5269,7 +5269,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "sp-arithmetic", @@ -5278,7 +5278,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5292,7 +5292,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5310,7 +5310,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5329,7 +5329,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-support", "frame-system", @@ -5346,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5391,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5407,7 +5407,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -7779,7 +7779,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8042,7 +8042,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "sp-core", @@ -8053,7 +8053,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "derive_more", @@ -8080,7 +8080,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8103,7 +8103,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8119,7 +8119,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8135,7 +8135,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8146,7 +8146,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "chrono", "fdlimit", @@ -8184,7 +8184,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "fnv", "futures 0.3.17", @@ -8212,7 +8212,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "hash-db", "kvdb", @@ -8237,7 +8237,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8261,7 +8261,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "derive_more", @@ -8304,7 +8304,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8328,7 +8328,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8341,7 +8341,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "assert_matches", "async-trait", @@ -8375,7 +8375,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8401,7 +8401,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "sc-client-api", "sp-authorship", @@ -8412,7 +8412,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8438,7 +8438,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "derive_more", "environmental", @@ -8456,7 +8456,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "parity-scale-codec", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8490,7 +8490,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "derive_more", @@ -8527,7 +8527,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "derive_more", "finality-grandpa", @@ -8551,7 +8551,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8568,7 +8568,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "derive_more", @@ -8583,7 +8583,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "hash-db", "parity-scale-codec", @@ -8601,7 +8601,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-std", "async-trait", @@ -8652,7 +8652,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8668,7 +8668,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "bytes 1.0.1", "fnv", @@ -8695,7 +8695,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "libp2p", @@ -8708,7 +8708,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8717,7 +8717,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "hash-db", @@ -8748,7 +8748,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8773,7 +8773,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8790,7 +8790,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "directories", @@ -8855,7 +8855,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "parity-scale-codec", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8891,7 +8891,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "chrono", "futures 0.3.17", @@ -8909,12 +8909,13 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "ansi_term 0.12.1", "atty", "chrono", "lazy_static", + "libc", "log", "once_cell", "parking_lot", @@ -8939,7 +8940,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8950,7 +8951,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "intervalier", @@ -8977,7 +8978,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8991,7 +8992,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9414,7 +9415,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "hash-db", "log", @@ -9431,7 +9432,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9443,7 +9444,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9456,7 +9457,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "integer-sqrt", "num-traits", @@ -9471,7 +9472,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9484,7 +9485,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "parity-scale-codec", @@ -9496,7 +9497,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -9508,7 +9509,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "log", @@ -9526,7 +9527,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -9545,7 +9546,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "merlin", @@ -9568,7 +9569,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9579,7 +9580,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9591,7 +9592,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "base58", "blake2-rfc", @@ -9637,7 +9638,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "kvdb", "parking_lot", @@ -9646,7 +9647,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro2", "quote", @@ -9656,7 +9657,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "environmental", "parity-scale-codec", @@ -9667,7 +9668,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "finality-grandpa", "log", @@ -9685,7 +9686,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9699,7 +9700,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "hash-db", @@ -9723,7 +9724,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "lazy_static", "sp-core", @@ -9734,7 +9735,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "derive_more", @@ -9751,7 +9752,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "zstd", ] @@ -9759,7 +9760,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9774,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9785,7 +9786,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "sp-api", "sp-core", @@ -9795,7 +9796,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "backtrace", ] @@ -9803,7 +9804,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "rustc-hash", "serde", @@ -9813,7 +9814,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "either", "hash256-std-hasher", @@ -9835,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9852,7 +9853,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9864,7 +9865,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "serde", "serde_json", @@ -9873,7 +9874,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9887,7 +9888,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9898,7 +9899,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "hash-db", "log", @@ -9921,12 +9922,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9939,7 +9940,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "log", "sp-core", @@ -9952,7 +9953,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9968,7 +9969,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "sp-std", @@ -9980,7 +9981,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "sp-api", "sp-runtime", @@ -9989,7 +9990,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "log", @@ -10005,7 +10006,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "hash-db", "memory-db", @@ -10020,7 +10021,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10036,7 +10037,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10047,7 +10048,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10275,7 +10276,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "platforms", ] @@ -10283,7 +10284,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10305,7 +10306,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-std", "derive_more", @@ -10319,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -10346,7 +10347,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10356,7 +10357,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10367,7 +10368,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10520,7 +10521,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "frame-system", "futures 0.3.17", @@ -10861,14 +10862,15 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.19" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab69019741fca4d98be3c62d2b75254528b5432233fd8a4d2739fec20278de48" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ "ansi_term 0.12.1", "chrono", "lazy_static", "matchers", + "parking_lot", "regex", "serde", "serde_json", @@ -10961,7 +10963,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#afd572f208b25312f984987b7bb752e71fbf86d7" +source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index e773febefb97..4afe8488f93d 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -34,7 +34,7 @@ use runtime_common::{ OffchainSolutionWeightLimit, RocksDbWeight, SlowAdjustingFeeUpdate, ToAuthor, }; use sp_core::u32_trait::{_1, _2, _3, _5}; -use sp_std::{collections::btree_map::BTreeMap, prelude::*}; +use sp_std::{cmp::Ordering, collections::btree_map::BTreeMap, prelude::*}; use runtime_parachains::{ configuration as parachains_configuration, dmp as parachains_dmp, hrmp as parachains_hrmp, @@ -49,7 +49,10 @@ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, match_type, parameter_types, - traits::{Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing}, + traits::{ + Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing, + PrivilegeCmp, + }, weights::Weight, PalletId, RuntimeDebug, }; @@ -195,6 +198,29 @@ type ScheduleOrigin = EnsureOneOf< pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>, >; +/// Used the compare the privilege of an origin inside the scheduler. +pub struct OriginPrivilegeCmp; + +impl PrivilegeCmp for OriginPrivilegeCmp { + fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option { + if left == right { + return Some(Ordering::Equal) + } + + match (left, right) { + // Root is greater than anything. + (OriginCaller::system(frame_system::RawOrigin::Root), _) => Some(Ordering::Greater), + // Check which one has more yes votes. + ( + OriginCaller::Council(pallet_collective::RawOrigin::Members(l_yes_votes, l_count)), + OriginCaller::Council(pallet_collective::RawOrigin::Members(r_yes_votes, r_count)), + ) => Some((l_yes_votes * r_count).cmp(&(r_yes_votes * l_count))), + // For every other origin we don't care, as they are not used for `ScheduleOrigin`. + _ => None, + } + } +} + impl pallet_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; @@ -204,6 +230,7 @@ impl pallet_scheduler::Config for Runtime { type ScheduleOrigin = ScheduleOrigin; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = weights::pallet_scheduler::WeightInfo; + type OriginPrivilegeCmp = OriginPrivilegeCmp; } parameter_types! { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index d57305852fd9..88e8820c5803 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -40,7 +40,7 @@ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, - traits::{Contains, KeyOwnerProofSystem, LockIdentifier, OnRuntimeUpgrade}, + traits::{Contains, KeyOwnerProofSystem, LockIdentifier, OnRuntimeUpgrade, PrivilegeCmp}, weights::Weight, PalletId, RuntimeDebug, }; @@ -73,7 +73,7 @@ use sp_runtime::{ ApplyExtrinsicResult, KeyTypeId, Perbill, Percent, Permill, }; use sp_staking::SessionIndex; -use sp_std::{collections::btree_map::BTreeMap, prelude::*}; +use sp_std::{cmp::Ordering, collections::btree_map::BTreeMap, prelude::*}; #[cfg(any(feature = "std", test))] use sp_version::NativeVersion; use sp_version::RuntimeVersion; @@ -229,6 +229,29 @@ type ScheduleOrigin = EnsureOneOf< pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>, >; +/// Used the compare the privilege of an origin inside the scheduler. +pub struct OriginPrivilegeCmp; + +impl PrivilegeCmp for OriginPrivilegeCmp { + fn cmp_privilege(left: &OriginCaller, right: &OriginCaller) -> Option { + if left == right { + return Some(Ordering::Equal) + } + + match (left, right) { + // Root is greater than anything. + (OriginCaller::system(frame_system::RawOrigin::Root), _) => Some(Ordering::Greater), + // Check which one has more yes votes. + ( + OriginCaller::Council(pallet_collective::RawOrigin::Members(l_yes_votes, l_count)), + OriginCaller::Council(pallet_collective::RawOrigin::Members(r_yes_votes, r_count)), + ) => Some((l_yes_votes * r_count).cmp(&(r_yes_votes * l_count))), + // For every other origin we don't care, as they are not used for `ScheduleOrigin`. + _ => None, + } + } +} + impl pallet_scheduler::Config for Runtime { type Event = Event; type Origin = Origin; @@ -238,6 +261,7 @@ impl pallet_scheduler::Config for Runtime { type ScheduleOrigin = ScheduleOrigin; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = weights::pallet_scheduler::WeightInfo; + type OriginPrivilegeCmp = OriginPrivilegeCmp; } parameter_types! { diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 1ab95475b1b3..646a4a18f351 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -192,6 +192,7 @@ impl pallet_scheduler::Config for Runtime { type ScheduleOrigin = EnsureRoot; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = weights::pallet_scheduler::WeightInfo; + type OriginPrivilegeCmp = frame_support::traits::EqualPrivilegeOnly; } parameter_types! { From 0696615e2b825c6033016e22b6a7d39be474074e Mon Sep 17 00:00:00 2001 From: Squirrel Date: Sat, 30 Oct 2021 15:18:14 +0200 Subject: [PATCH 35/71] companion PR to removal of light client (#4105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * not needed * cargo fmt * remove light-node * make full-node feature mandatory? * cargo fmt * Revert "cargo fmt" This reverts commit 5a2c7d850047466ed902faf673b779a2e02dfed2. * Revert "make full-node feature mandatory?" This reverts commit c35eb4fa399e43d29a10c83187cc39b9c74f1feb. * bump versionn numbers * Update bridges/primitives/chain-westend/src/lib.rs * fix typo + expand dictionary * update lockfile for substrate Co-authored-by: Bastian Köcher Co-authored-by: parity-processbot <> --- Cargo.lock | 323 +++++++++--------- bridges/.config/lingua.dic | 2 + .../src/requester/fetch_task/mod.rs | 2 +- node/service/Cargo.toml | 2 - node/service/src/lib.rs | 199 +---------- 5 files changed, 165 insertions(+), 363 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a76c34f86d9e..5be48f7b6271 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -1910,7 +1910,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", ] @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "Inflector", "chrono", @@ -1974,7 +1974,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -1988,7 +1988,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -2016,7 +2016,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "bitflags", "frame-metadata", @@ -2043,7 +2043,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2055,7 +2055,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro2", "quote", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -2111,7 +2111,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "log", @@ -2128,7 +2128,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "sp-api", @@ -2365,7 +2365,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "chrono", "frame-election-provider-support", @@ -4606,7 +4606,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -4636,7 +4636,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -4651,7 +4651,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4675,7 +4675,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4710,7 +4710,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "beefy-primitives", "frame-support", @@ -4726,7 +4726,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4751,7 +4751,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4853,7 +4853,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4893,7 +4893,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4911,7 +4911,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4926,7 +4926,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5002,7 +5002,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5037,7 +5037,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5053,7 +5053,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5070,7 +5070,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5085,7 +5085,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5099,7 +5099,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5139,7 +5139,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5154,7 +5154,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5168,7 +5168,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5184,7 +5184,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5205,7 +5205,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5269,7 +5269,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "sp-arithmetic", @@ -5278,7 +5278,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5292,7 +5292,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5310,7 +5310,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5329,7 +5329,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-support", "frame-system", @@ -5346,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5391,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -5407,7 +5407,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-benchmarking", "frame-support", @@ -7779,7 +7779,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8042,7 +8042,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "sp-core", @@ -8053,7 +8053,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "derive_more", @@ -8080,7 +8080,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8103,7 +8103,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8119,7 +8119,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8135,7 +8135,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8146,7 +8146,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "chrono", "fdlimit", @@ -8184,7 +8184,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "fnv", "futures 0.3.17", @@ -8212,7 +8212,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "hash-db", "kvdb", @@ -8237,7 +8237,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "futures 0.3.17", @@ -8261,7 +8261,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "derive_more", @@ -8304,7 +8304,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "derive_more", "futures 0.3.17", @@ -8328,7 +8328,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8341,7 +8341,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "assert_matches", "async-trait", @@ -8375,7 +8375,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "futures 0.3.17", @@ -8401,7 +8401,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "sc-client-api", "sp-authorship", @@ -8412,7 +8412,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8438,7 +8438,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "derive_more", "environmental", @@ -8456,7 +8456,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "parity-scale-codec", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8490,7 +8490,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "derive_more", @@ -8527,7 +8527,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "derive_more", "finality-grandpa", @@ -8551,7 +8551,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8568,7 +8568,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "derive_more", @@ -8583,7 +8583,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "hash-db", "parity-scale-codec", @@ -8601,7 +8601,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-std", "async-trait", @@ -8652,7 +8652,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8668,7 +8668,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "bytes 1.0.1", "fnv", @@ -8695,7 +8695,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "libp2p", @@ -8708,7 +8708,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8717,7 +8717,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "hash-db", @@ -8748,7 +8748,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8773,7 +8773,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8790,7 +8790,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "directories", @@ -8814,7 +8814,6 @@ dependencies = [ "sc-executor", "sc-informant", "sc-keystore", - "sc-light", "sc-network", "sc-offchain", "sc-rpc", @@ -8855,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "parity-scale-codec", @@ -8869,7 +8868,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8891,7 +8890,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "chrono", "futures 0.3.17", @@ -8909,7 +8908,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8940,7 +8939,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8951,7 +8950,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "intervalier", @@ -8978,7 +8977,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "derive_more", "futures 0.3.17", @@ -8992,7 +8991,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9415,7 +9414,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "hash-db", "log", @@ -9432,7 +9431,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9444,7 +9443,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9457,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "integer-sqrt", "num-traits", @@ -9472,7 +9471,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9485,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "parity-scale-codec", @@ -9497,7 +9496,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "sp-api", @@ -9509,7 +9508,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "log", @@ -9527,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "futures 0.3.17", @@ -9546,7 +9545,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "merlin", @@ -9569,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9580,7 +9579,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9592,7 +9591,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "base58", "blake2-rfc", @@ -9638,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "kvdb", "parking_lot", @@ -9647,7 +9646,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro2", "quote", @@ -9657,7 +9656,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "environmental", "parity-scale-codec", @@ -9668,7 +9667,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "finality-grandpa", "log", @@ -9686,7 +9685,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9700,7 +9699,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "hash-db", @@ -9724,7 +9723,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "lazy_static", "sp-core", @@ -9735,7 +9734,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "derive_more", @@ -9752,7 +9751,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "zstd", ] @@ -9760,7 +9759,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9775,7 +9774,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9786,7 +9785,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "sp-api", "sp-core", @@ -9796,7 +9795,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "backtrace", ] @@ -9804,7 +9803,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "rustc-hash", "serde", @@ -9814,7 +9813,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "either", "hash256-std-hasher", @@ -9836,7 +9835,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9853,7 +9852,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9865,7 +9864,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "serde", "serde_json", @@ -9874,7 +9873,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9888,7 +9887,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "scale-info", @@ -9899,7 +9898,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "hash-db", "log", @@ -9922,12 +9921,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9940,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "log", "sp-core", @@ -9953,7 +9952,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9969,7 +9968,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "sp-std", @@ -9981,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "sp-api", "sp-runtime", @@ -9990,7 +9989,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "log", @@ -10006,7 +10005,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "hash-db", "memory-db", @@ -10021,7 +10020,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10037,7 +10036,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10048,7 +10047,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10276,7 +10275,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "platforms", ] @@ -10284,7 +10283,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10306,7 +10305,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-std", "derive_more", @@ -10320,7 +10319,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "async-trait", "futures 0.3.17", @@ -10347,7 +10346,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10357,7 +10356,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10368,7 +10367,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10521,7 +10520,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "frame-system", "futures 0.3.17", @@ -10963,7 +10962,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#945377f35fd6ba265d6bd2b808e97749471dec0b" +source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/bridges/.config/lingua.dic b/bridges/.config/lingua.dic index ee369c0f1095..1fc67a5a5d24 100644 --- a/bridges/.config/lingua.dic +++ b/bridges/.config/lingua.dic @@ -18,6 +18,7 @@ BFT/M bitfield/MS blake2/MS blockchain/MS +boolean borked BridgeStorage BlockNumber @@ -30,6 +31,7 @@ ChainTime chain_getBlock choosen config/MS +cooldown crypto/MS customizable/B Debian/M diff --git a/node/network/availability-distribution/src/requester/fetch_task/mod.rs b/node/network/availability-distribution/src/requester/fetch_task/mod.rs index 0c5dd6e684c1..93b5d14f8171 100644 --- a/node/network/availability-distribution/src/requester/fetch_task/mod.rs +++ b/node/network/availability-distribution/src/requester/fetch_task/mod.rs @@ -103,7 +103,7 @@ struct RunningTask { /// Index of validator group to fetch the chunk from. /// - /// Needef for reporting bad validators. + /// Needed for reporting bad validators. group_index: GroupIndex, /// Validators to request the chunk from. diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index ba15a841e8a5..0c71830a07b8 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -152,8 +152,6 @@ full-node = [ "kvdb-rocksdb" ] -light-node = [] - # Configure the native runtimes to use. Polkadot is enabled by default. # # Validators require the native runtime currently diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 7f004c49f211..2fa529eaa8ef 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -101,8 +101,7 @@ pub use sc_executor::NativeExecutionDispatch; pub use service::{ config::{DatabaseSource, PrometheusConfig}, ChainSpec, Configuration, Error as SubstrateServiceError, PruningMode, Role, RuntimeGenesis, - TFullBackend, TFullCallExecutor, TFullClient, TLightBackend, TLightCallExecutor, TLightClient, - TaskManager, TransactionPoolOptions, + TFullBackend, TFullCallExecutor, TFullClient, TaskManager, TransactionPoolOptions, }; pub use sp_api::{ApiRef, ConstructRuntimeApi, Core as CoreApi, ProvideRuntimeApi, StateBackend}; pub use sp_runtime::{ @@ -313,13 +312,6 @@ type FullGrandpaBlockImport; -#[cfg(feature = "light-node")] -type LightBackend = service::TLightBackendWithHash; - -#[cfg(feature = "light-node")] -type LightClient = - service::TLightClientWithBackend; - #[cfg(feature = "full-node")] struct Basics where @@ -1127,168 +1119,6 @@ where Ok(NewFull { task_manager, client, overseer_handle, network, rpc_handlers, backend }) } -/// Builds a new service for a light client. -#[cfg(feature = "light-node")] -fn new_light( - mut config: Configuration, -) -> Result<(TaskManager, RpcHandlers), Error> -where - Runtime: 'static + Send + Sync + ConstructRuntimeApi>, - >>::RuntimeApi: - RuntimeApiCollection>, - Dispatch: NativeExecutionDispatch + 'static, -{ - set_prometheus_registry(&mut config)?; - use sc_client_api::backend::RemoteBackend; - - let telemetry = config - .telemetry_endpoints - .clone() - .filter(|x| !x.is_empty()) - .map(|endpoints| -> Result<_, telemetry::Error> { - let worker = TelemetryWorker::new(16)?; - let telemetry = worker.handle().new_telemetry(endpoints); - Ok((worker, telemetry)) - }) - .transpose()?; - - let (client, backend, keystore_container, mut task_manager, on_demand) = - service::new_light_parts::( - &config, - telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), - )?; - - let mut telemetry = telemetry.map(|(worker, telemetry)| { - task_manager.spawn_handle().spawn("telemetry", worker.run()); - telemetry - }); - - config.network.extra_sets.push(grandpa::grandpa_peers_set_config()); - - let select_chain = sc_consensus::LongestChain::new(backend.clone()); - - let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light( - config.transaction_pool.clone(), - config.prometheus_registry(), - task_manager.spawn_essential_handle(), - client.clone(), - on_demand.clone(), - )); - - let (grandpa_block_import, grandpa_link) = grandpa::block_import( - client.clone(), - &(client.clone() as Arc<_>), - select_chain.clone(), - telemetry.as_ref().map(|x| x.handle()), - )?; - let justification_import = grandpa_block_import.clone(); - - let (babe_block_import, babe_link) = babe::block_import( - babe::Config::get_or_compute(&*client)?, - grandpa_block_import, - client.clone(), - )?; - - // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. - let slot_duration = babe_link.config().slot_duration(); - let import_queue = babe::import_queue( - babe_link, - babe_block_import, - Some(Box::new(justification_import)), - client.clone(), - select_chain.clone(), - move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - - let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( - *timestamp, - slot_duration, - ); - - Ok((timestamp, slot)) - }, - &task_manager.spawn_essential_handle(), - config.prometheus_registry(), - consensus_common::NeverCanAuthor, - telemetry.as_ref().map(|x| x.handle()), - )?; - - let warp_sync = Arc::new(grandpa::warp_proof::NetworkProvider::new( - backend.clone(), - grandpa_link.shared_authority_set().clone(), - )); - - let (network, system_rpc_tx, network_starter) = - service::build_network(service::BuildNetworkParams { - config: &config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue, - on_demand: Some(on_demand.clone()), - block_announce_validator_builder: None, - warp_sync: Some(warp_sync), - })?; - - let enable_grandpa = !config.disable_grandpa; - if enable_grandpa { - let name = config.network.node_name.clone(); - - let config = grandpa::Config { - gossip_duration: Duration::from_millis(1000), - justification_period: 512, - name: Some(name), - observer_enabled: false, - keystore: None, - local_role: config.role.clone(), - telemetry: telemetry.as_ref().map(|x| x.handle()), - }; - - task_manager.spawn_handle().spawn_blocking( - "grandpa-observer", - grandpa::run_grandpa_observer(config, grandpa_link, network.clone())?, - ); - } - - if config.offchain_worker.enabled { - let _ = service::build_offchain_workers( - &config, - task_manager.spawn_handle(), - client.clone(), - network.clone(), - ); - } - - let light_deps = polkadot_rpc::LightDeps { - remote_blockchain: backend.remote_blockchain(), - fetcher: on_demand.clone(), - client: client.clone(), - pool: transaction_pool.clone(), - }; - - let rpc_extensions = polkadot_rpc::create_light(light_deps); - - let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { - on_demand: Some(on_demand), - remote_blockchain: Some(backend.remote_blockchain()), - rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)), - task_manager: &mut task_manager, - config, - keystore: keystore_container.sync_keystore(), - backend, - transaction_pool, - client, - network, - system_rpc_tx, - telemetry: telemetry.as_mut(), - })?; - - network_starter.start_network(); - - Ok((task_manager, rpc_handlers)) -} - #[cfg(feature = "full-node")] macro_rules! chain_ops { ($config:expr, $jaeger_agent:expr, $telemetry_worker_handle:expr; $scope:ident, $executor:ident, $variant:ident) => {{ @@ -1356,33 +1186,6 @@ pub fn new_chain_ops( Err(Error::NoRuntime) } -/// Build a new light node. -#[cfg(feature = "light-node")] -pub fn build_light(config: Configuration) -> Result<(TaskManager, RpcHandlers), Error> { - #[cfg(feature = "rococo-native")] - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - return new_light::(config) - } - - #[cfg(feature = "kusama-native")] - if config.chain_spec.is_kusama() { - return new_light::(config) - } - - #[cfg(feature = "westend-native")] - if config.chain_spec.is_westend() { - return new_light::(config) - } - - #[cfg(feature = "polkadot-native")] - { - return new_light::(config) - } - - #[cfg(not(feature = "polkadot-native"))] - Err(Error::NoRuntime) -} - #[cfg(feature = "full-node")] pub fn build_full( config: Configuration, From 4f2a52fac49f7add31fbb39369e6ca04291490e9 Mon Sep 17 00:00:00 2001 From: Cheng JIANG Date: Sat, 30 Oct 2021 23:42:37 +0800 Subject: [PATCH 36/71] increase ump_service_total_weight's default value (#4127) * increase ump_service_total_weight's default value to be the same with kusama * remove comment --- node/service/src/chain_spec.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 59dc3fcfd4a1..75a4e721f3c0 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -182,12 +182,7 @@ fn default_parachains_host_configuration( max_upward_queue_count: 8, max_upward_queue_size: 1024 * 1024, max_downward_message_size: 1024 * 1024, - // this is approximatelly 4ms. - // - // Same as `4 * frame_support::weights::WEIGHT_PER_MILLIS`. We don't bother with - // an import since that's a made up number and should be replaced with a constant - // obtained by benchmarking anyway. - ump_service_total_weight: 4 * 1_000_000_000, + ump_service_total_weight: 100_000_000_000, max_upward_message_size: 1024 * 1024, max_upward_message_num_per_candidate: 5, hrmp_sender_deposit: 0, From ad019ddc59fed19e55f8868908dd818273edbaff Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Sat, 30 Oct 2021 18:17:25 +0200 Subject: [PATCH 37/71] differentiate log messages (#4183) --- node/core/dispute-coordinator/src/real/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index e03fc2edd1e7..4c6165545b96 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -419,7 +419,7 @@ where tracing::warn!( target: LOG_TARGET, session, - "Missing info for session which has an active dispute", + "Recovering lacks info for session which has an active dispute", ); continue }, @@ -861,7 +861,7 @@ async fn handle_import_statements( tracing::warn!( target: LOG_TARGET, session, - "Missing info for session which has an active dispute", + "Importing statement lacks info for session which has an active dispute", ); return Ok(ImportStatementsResult::InvalidImport) @@ -894,7 +894,7 @@ async fn handle_import_statements( tracing::warn!( target: LOG_TARGET, session, - "Missing info for session which has an active dispute", + "Not seen backing vote for candidate which has an active dispute", ); return Ok(ImportStatementsResult::InvalidImport) }, From fb730e417ef50901d7e41d61cbe175c2002f592e Mon Sep 17 00:00:00 2001 From: Alexander Popiak Date: Sat, 30 Oct 2021 18:39:04 +0200 Subject: [PATCH 38/71] remove duplicate Deposit from OnUnbalanced implementation (#4180) closes https://github.com/paritytech/polkadot/issues/4133 --- runtime/common/src/impls.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/runtime/common/src/impls.rs b/runtime/common/src/impls.rs index 4af64ce6acda..abf1e0761828 100644 --- a/runtime/common/src/impls.rs +++ b/runtime/common/src/impls.rs @@ -29,16 +29,10 @@ where ::Event: From>, { fn on_nonzero_unbalanced(amount: NegativeImbalance) { - let numeric_amount = amount.peek(); - let author = >::author(); >::resolve_creating( &>::author(), amount, ); - >::deposit_event(pallet_balances::Event::Deposit( - author, - numeric_amount, - )); } } From a6dd54ea8933cea0a387e4d105d88894e23cd6c7 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Sat, 30 Oct 2021 21:20:48 +0200 Subject: [PATCH 39/71] collator-protocol/validator_side: a couple of fixes (#4179) * collator-protocol/validator: do not wait 1s to poll requested collations * collator-protocol/validator: do not request collation for the next group * put everything into select * fmt * more hacks yay * a test * review nits * remove outdated comment --- .../src/validator_side/mod.rs | 149 ++++++++++++------ .../src/validator_side/tests.rs | 40 +++++ 2 files changed, 142 insertions(+), 47 deletions(-) diff --git a/node/network/collator-protocol/src/validator_side/mod.rs b/node/network/collator-protocol/src/validator_side/mod.rs index d9e1de062552..0b050d3c5e19 100644 --- a/node/network/collator-protocol/src/validator_side/mod.rs +++ b/node/network/collator-protocol/src/validator_side/mod.rs @@ -19,7 +19,7 @@ use futures::{ channel::oneshot, future::{BoxFuture, Fuse, FusedFuture}, select, - stream::FuturesUnordered, + stream::{FusedStream, FuturesUnordered}, FutureExt, StreamExt, }; use futures_timer::Delay; @@ -94,6 +94,11 @@ const ACTIVITY_POLL: Duration = Duration::from_secs(1); #[cfg(test)] const ACTIVITY_POLL: Duration = Duration::from_millis(10); +// How often to poll collation responses. +// This is a hack that should be removed in a refactoring. +// See https://github.com/paritytech/polkadot/issues/4182 +const CHECK_COLLATIONS_POLL: Duration = Duration::from_millis(5); + #[derive(Clone, Default)] pub struct Metrics(Option); @@ -467,6 +472,10 @@ impl ActiveParas { fn is_current_or_next(&self, id: ParaId) -> bool { self.current_assignments.contains_key(&id) || self.next_assignments.contains_key(&id) } + + fn is_current(&self, id: &ParaId) -> bool { + self.current_assignments.contains_key(id) + } } #[derive(Debug, Clone, Hash, Eq, PartialEq)] @@ -886,6 +895,20 @@ async fn process_incoming_peer_message( Some(p) => p, }; + if let PeerState::Collating(ref collating_state) = peer_data.state { + let para_id = collating_state.para_id; + if !state.active_paras.is_current(¶_id) { + tracing::debug!( + target: LOG_TARGET, + peer_id = ?origin, + %para_id, + ?relay_parent, + "Received advertise collation, but we are assigned to the next group", + ); + return + } + } + match peer_data.insert_advertisement(relay_parent, &state.view) { Ok((id, para_id)) => { tracing::debug!( @@ -1136,6 +1159,13 @@ async fn wait_until_next_check(last_poll: Instant) -> Instant { Instant::now() } +fn infinite_stream(every: Duration) -> impl FusedStream { + futures::stream::unfold(Instant::now() + every, |next_check| async move { + Some(((), wait_until_next_check(next_check).await)) + }) + .fuse() +} + /// The main run loop. pub(crate) async fn run( mut ctx: Context, @@ -1147,18 +1177,14 @@ where Context: overseer::SubsystemContext, Context: SubsystemContext, { - use OverseerSignal::*; - let mut state = State { metrics, ..Default::default() }; - let next_inactivity_stream = - futures::stream::unfold(Instant::now() + ACTIVITY_POLL, |next_check| async move { - Some(((), wait_until_next_check(next_check).await)) - }) - .fuse(); - + let next_inactivity_stream = infinite_stream(ACTIVITY_POLL); futures::pin_mut!(next_inactivity_stream); + let check_collations_stream = infinite_stream(CHECK_COLLATIONS_POLL); + futures::pin_mut!(check_collations_stream); + loop { select! { res = ctx.recv().fuse() => { @@ -1172,8 +1198,8 @@ where &mut state, ).await; } - Ok(FromOverseer::Signal(Conclude)) => break, - _ => {}, + Ok(FromOverseer::Signal(OverseerSignal::Conclude)) | Err(_) => break, + Ok(FromOverseer::Signal(_)) => continue, } } _ = next_inactivity_stream.next() => { @@ -1191,26 +1217,45 @@ where ); dequeue_next_collation_and_fetch(&mut ctx, &mut state, relay_parent, collator_id).await; } + _ = check_collations_stream.next() => { + let reputation_changes = poll_requests( + &mut state.requested_collations, + &state.metrics, + &state.span_per_relay_parent, + ).await; + + for (peer_id, rep) in reputation_changes { + modify_reputation(&mut ctx, peer_id, rep).await; + } + }, } + } - let mut retained_requested = HashSet::new(); - for (pending_collation, per_req) in state.requested_collations.iter_mut() { - // Despite the await, this won't block on the response itself. - let finished = poll_collation_response( - &mut ctx, - &state.metrics, - &state.span_per_relay_parent, - pending_collation, - per_req, - ) - .await; - if !finished { - retained_requested.insert(pending_collation.clone()); - } + Ok(()) +} + +async fn poll_requests( + requested_collations: &mut HashMap, + metrics: &Metrics, + span_per_relay_parent: &HashMap, +) -> Vec<(PeerId, Rep)> { + let mut retained_requested = HashSet::new(); + let mut reputation_changes = Vec::new(); + for (pending_collation, per_req) in requested_collations.iter_mut() { + // Despite the await, this won't block on the response itself. + let result = + poll_collation_response(metrics, span_per_relay_parent, pending_collation, per_req) + .await; + + if !result.is_ready() { + retained_requested.insert(pending_collation.clone()); + } + if let CollationFetchResult::Error(rep) = result { + reputation_changes.push((pending_collation.peer_id.clone(), rep)); } - state.requested_collations.retain(|k, _| retained_requested.contains(k)); } - Ok(()) + requested_collations.retain(|k, _| retained_requested.contains(k)); + reputation_changes } /// Dequeue another collation and fetch. @@ -1314,29 +1359,38 @@ async fn disconnect_inactive_peers( } } +enum CollationFetchResult { + /// The collation is still being fetched. + Pending, + /// The collation was fetched successfully. + Success, + /// An error occurred when fetching a collation or it was invalid. + /// A reputation change should be applied to the peer. + Error(Rep), +} + +impl CollationFetchResult { + fn is_ready(&self) -> bool { + !matches!(self, Self::Pending) + } +} + /// Poll collation response, return immediately if there is none. /// -/// Ready responses are handled, by logging and decreasing peer's reputation on error and by +/// Ready responses are handled, by logging and by /// forwarding proper responses to the requester. -/// -/// Returns: `true` if `from_collator` future was ready. -async fn poll_collation_response( - ctx: &mut Context, +async fn poll_collation_response( metrics: &Metrics, spans: &HashMap, pending_collation: &PendingCollation, per_req: &mut PerRequest, -) -> bool -where - Context: overseer::SubsystemContext, - Context: SubsystemContext, -{ +) -> CollationFetchResult { if never!(per_req.from_collator.is_terminated()) { tracing::error!( target: LOG_TARGET, "We remove pending responses once received, this should not happen." ); - return true + return CollationFetchResult::Success } if let Poll::Ready(response) = futures::poll!(&mut per_req.from_collator) { @@ -1348,7 +1402,7 @@ where let mut metrics_result = Err(()); let mut success = "false"; - match response { + let result = match response { Err(RequestError::InvalidResponse(err)) => { tracing::warn!( target: LOG_TARGET, @@ -1358,8 +1412,7 @@ where err = ?err, "Collator provided response that could not be decoded" ); - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_CORRUPTED_MESSAGE) - .await; + CollationFetchResult::Error(COST_CORRUPTED_MESSAGE) }, Err(RequestError::NetworkError(err)) => { tracing::debug!( @@ -1374,7 +1427,7 @@ where // sensible. In theory this could be exploited, by DoSing this node, // which would result in reduced reputation for proper nodes, but the // same can happen for penalties on timeouts, which we also have. - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_NETWORK_ERROR).await; + CollationFetchResult::Error(COST_NETWORK_ERROR) }, Err(RequestError::Canceled(_)) => { tracing::debug!( @@ -1388,8 +1441,7 @@ where // sensible. In theory this could be exploited, by DoSing this node, // which would result in reduced reputation for proper nodes, but the // same can happen for penalties on timeouts, which we also have. - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_REQUEST_TIMED_OUT) - .await; + CollationFetchResult::Error(COST_REQUEST_TIMED_OUT) }, Ok(CollationFetchingResponse::Collation(receipt, _)) if receipt.descriptor().para_id != pending_collation.para_id => @@ -1402,7 +1454,7 @@ where "Got wrong para ID for requested collation." ); - modify_reputation(ctx, pending_collation.peer_id.clone(), COST_WRONG_PARA).await; + CollationFetchResult::Error(COST_WRONG_PARA) } Ok(CollationFetchingResponse::Collation(receipt, pov)) => { tracing::debug!( @@ -1430,12 +1482,15 @@ where metrics_result = Ok(()); success = "true"; } + + CollationFetchResult::Success }, }; metrics.on_request(metrics_result); per_req.span.as_mut().map(|s| s.add_string_tag("success", success)); - true + + result } else { - false + CollationFetchResult::Pending } } diff --git a/node/network/collator-protocol/src/validator_side/tests.rs b/node/network/collator-protocol/src/validator_side/tests.rs index a4bc8cac682e..7c110d67feed 100644 --- a/node/network/collator-protocol/src/validator_side/tests.rs +++ b/node/network/collator-protocol/src/validator_side/tests.rs @@ -674,6 +674,46 @@ fn fetch_collations_works() { }); } +#[test] +fn dont_fetch_collation_if_assigned_to_next_group() { + let test_state = TestState::default(); + + test_harness(|test_harness| async move { + let TestHarness { mut virtual_overseer } = test_harness; + + overseer_send( + &mut virtual_overseer, + CollatorProtocolMessage::NetworkBridgeUpdateV1(NetworkBridgeEvent::OurViewChange( + our_view![test_state.relay_parent], + )), + ) + .await; + + respond_to_core_info_queries(&mut virtual_overseer, &test_state).await; + + let peer_b = PeerId::random(); + + connect_and_declare_collator( + &mut virtual_overseer, + peer_b.clone(), + test_state.collators[0].clone(), + test_state.chain_ids[1].clone(), // next, not current para_id + ) + .await; + + advertise_collation(&mut virtual_overseer, peer_b.clone(), test_state.relay_parent).await; + + assert!( + overseer_recv_with_timeout(&mut &mut virtual_overseer, Duration::from_millis(30)) + .await + .is_none(), + "There should be no PoV fetching request.", + ); + + virtual_overseer + }) +} + // Ensure that we fetch a second collation, after the first checked collation was found to be invalid. #[test] fn fetch_next_collation_on_invalid_collation() { From bbe8b114f0ccd7bc83b95dd17c1a4c87a2a68667 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Mon, 1 Nov 2021 00:52:16 +0100 Subject: [PATCH 40/71] bump rococo spec (#4189) * bump rococo spec_version * replace the spec file * bump rococo chain id * use rococo-staging --- node/service/res/rococo.json | 270 ++++++++++++++++++----------------- runtime/rococo/src/lib.rs | 4 +- 2 files changed, 138 insertions(+), 136 deletions(-) diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json index b12bed1b3fee..6a9899e154bc 100644 --- a/node/service/res/rococo.json +++ b/node/service/res/rococo.json @@ -1,6 +1,6 @@ { "name": "Rococo", - "id": "rococo_v1_12", + "id": "rococo_v1_13", "chainType": "Live", "bootNodes": [ "/ip4/34.90.151.124/tcp/30333/p2p/12D3KooWF7BUbG5ErMZ47ZdarRwtpZamgcZqxwpnFzkhjc1spHnP", @@ -32,161 +32,163 @@ "genesis": { "raw": { "top": { - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0xa98e18726f636f636f", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000000100000e8764817000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", + "0x1405f2411d0af5a7ff397e7c9dc68d196323ae84c43568be0d1394d5d0d522c4": "0x02000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", - "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", - "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00588c5c045e7fc5b111521040ed281ddf94e8bcb7b17ccbe7fd67d8b2e3012b3107c2b13a6b8e330915e2fe5f4792140ef8d105548ee88f348ccd2c05c32ccca9313497c2f9984e513f940b5669116bd37649db7b13b2a59432a594025d126f105111dff1e17f575655fe7c4d7ad3dba62efbce3c185635f64ba16df533f7002e5c99420ac3aa466a053eff724d20dd66f1e44e63c597ba69a8784384ba69a8c8a3be0b7152b3538dbf1f7fa9518893fa2736e1ca303641f72ed4f9c3871dd40f69d72c87de4adbcd3d193a08d28f2bfc8842d1cf5fbee61be44e70aad3b99016ff891fb3faad1b2dcd8a8f5241c715feb76e6a7ce64e386a567cf899079b15e3336cc8a1c7d5bdac0ac929a25ba7cab01a5f4b07c98f7fd4421d0c06aba1151f7690bf94bf1c13499374591d6af7b666c5d778ebe2bbb735fe729066cd8aaf44f76535fe7710d7f84e58e8a04d43c51d353e950e821fff053e00d7f89bd5ef7d5d885b5f92d8c3603058dc306a6c7d6b4665a7ba202045867268fcbb4a3668014634356bebae16d97fb02e0c40f503aaa8ffb6badf0875a3fcf85d59d5f9f1f9b785fabf22759fd541fefbd0d36916bfb62a74ab26294ccda9aba60b99da421b83c1603ab4be1ea16d7d3e15feba105214402491b44619569011450b7ed641b1c28762a8a042faa1e815a0ba6a167f4653e8b86efdba2ab42dfee965cde2975ef450e8f83b9d0edacabfea20f8fc3d1d04e90296486ad6567ef7ba66f1b7a7d33ffc2774abbab12e6caaac9ba60549d4afe3f96224765feae2d4e58cbffbbbbf7b17a6eaeeee57d4b0c18b9d40a7c687a698d20fb53fdbba11b4271dff3692fdd5b46d751bb301cc77507fc35507f5fb7410ac1dabc18cdabfb590b760fd8ad4eea9fd0c9445e367af593e3d45dbba3e5f57fb357ee7ff9cdf7ff9adb8d73556b9488e3d583937954b0f95d61b7b5e392e726353b96c38abc48861b5a884cadfbfdc03200c5639850eb675d0d67e8db75d25fcdfc7d5bda08eabfffe722738cd9653619f2a6f57170424e76643dbba1df4f5efc317925344d7cfffed6fb3b659f083bafe07f45b59bacd82d4e95023354340db5607ff5bd5f8401df465493ae8eb581df401d5f8f147e820af314d1849357e4f0b756b498df52b52e3771dd41f5fa783fce3c7df3a883ffefa446a65632f6d7f7d3ea0eaafadc755638e096c16ff368be977e41536734c98a6007fbdad9ab6dc09927e5fe567cd2de7c066d1efc86bea571da4bd7f4f074d6da250f4437dea5173ebea7ed741f3fd753a08f5fe1acadb666db3b667ee04aeb0591bfdb64f6dde9157d46bdccb8eb3d3dbaa795b53a855ddcf5cc8cbb7b67f768d7c3d75e9273fbebfe6bb5ba1f771e512eb17a566f428d6fde598ec56fb35adb7e524fd90aa7cf6d6736e3967ffcbaaff366b5f83dc6eced62c9f66f9cfff66f92fc764baf4e027433df22a7fbdcedb66f533c744d248b36675b7eaa0adfed0dbfa1db4ef9fb91084c1603058cb9fb54abcfafb54fff5716a05a82e0848298e3c68bba4db184c8eba31d80fd500756330325553adcff7b57fb903741facfd439df167d9bad0f6cfd755feafab5f56fb6107edf76f07cddf871d247f3feba0adfb9af4b64e8fabb6409db623749a6fcc3199344927bf3926f2974361ab7c2e85f9927ef3e76bcda5d0d5f9cbc166c15f8e49fca1d67893defce5fc875ad3964b7de67d19ea53de03e4a3e8c733fba015d46f5d8e09eab5ccfb4ca8f2b5e532fa65357be97d1babf2a7f74d149cb010e5052ddb2cf9439e79568afce9e9e94dcd7eebf4b64aef5b52e16bbc651efc0724a912e515cd9ad18f2b17af927e3254f91a6fd3dbba9ca4475e23ff500f35e4776f9bf5e954fef5696ae5eb8280846298a40511d2edafd4b683f8bfacee6f07f5ef6bed71658f796b6f2beca0f8fb1a734c224dd2f16bbc458feb72fc5a6f2474fd42728ae8fcfbe33bc724d2241dbfe65bf4b836c7bf9cff502fc7a47fa8877aa8875ae38dbdaded715dce015bf9877aa891983904da8ed069aaf5f9baeabf2d04fbc77f5f5ba08e3926dbac2fabfecb9dc0759be53fd4421d577e1efeaddbac7d1e15b2da9fd5a63c2af4c3ef87f4882bd36dd607ebbeff7229f037fdfaf9877a7d9c5ae9ea8280d48ca46dabebf7df0efa56d5df7fd541fbfe3d1dc4ef0f5b885bfe5d07ad1a1f9aaaff76d0d64fa7faaf8f532b5f170424e613b445d26dac063135a76e9a3bdaa89ba3ed762be868dd3460b85167dd3460a851b92e106d0dd06dd456846ea3b647ba8d1d1dfc040f53a47284c8092227041d19dd1c1d1ddd9b1ca64e8e8e075d1cdd0bba37ba365d1b9d1b1d1c5d0d726ee868d0a5d1ed202787ce8c6e061d0c3a2ebaa6ae8b8e8d6e8b4e8b2e8bce8aee8a0d4ce9c67446a8e44089818a4176822c05dc1ad5928a0738586467b81470527458742ad882d846b03db18560eb6133b339b199602bb301a1a2239342b503159ace05aa37190a547368406823d8b0e0c6c00103e7057007a803fc02738038402f9009de009798069c02460147c127e022b6181569c9e202051c3043090940c00a39499d0c3a361d1add191d0b3a2f5a20eaa2e8ce686b70736c62a840a0e2a1f3819301ce1d2a12a8ba5005d1a9a17a426546d583ea032a302a2e544d3878a884e0eae096c0a9a34d80f304ce121c19190c3231b8311a1baa36aa3554615270e0f89045c135e092e04a80930747467383538213c38540cb217503ee4d2a8d141bee07ee08ce886e8aae0a8e0eed8d89466b63aa406ba3f5c075d13ea07dd140a0e1a081d19872601d46f543ea291547ea0e8e04ad83ca0755085276a476d02148e5a129a572a0128196947293c2c1a4a2ab21e506af20b546ca06291da86a48d5204503ce06ae861419a919a4ccd06e4895917a412a4d0a4dea08860335c616064e0f780d9419a832506b505d70a04b4177029414a9395051a04e80420275044a8caa08fe8201dd109d101d110c26b5861b41ea0dd508b2186c37c8c24091917dd166b221726cc8a92147a91ba35b93d3255b2223938dc994c892c88ac898c888c8c46424c8729871301d330c1c3b2616386f666cae6063da6ec8d2c84a800307ce1b386ee0b08183034e88ec884c880c092e080e88694596036e88cc0d4e1b9b145b0ab61334127dc476c594017b814241ea0c6e8a541b5b149b17062233626bb3ad91b591b191b5611f5274a4dee0acc111817303d5161b182e0cd7438a071c9b0d059c0f2919a47aa02db51313065d2625876683e68513414a8d1983be010585a603174517460b9342238547aa0e0da6d5906a936243ebd241d13da1eda0f1d0b5804bc04c646b6437c85a90a991d5608a99249842cc20e6082610f38729821982e9c30c337b9820981f9860260f7387a9c3fcc261cc1c260ed3cb649a37cca5a93493669769c3ac61c2e493cc43e221ef9076c81ec83ae41b49879c43f240ca217720e3903a906e640e240e241cf20de9866ca393906cc836720d79830e42da40aa216b20d39034906c241af20c390369862c43922165c05bc835720c0643c6805d20c5906148184830e40ba4937481fc42b6407a215920d5c834b289cf905dc82da416320b8946c6e40aa40aa415920a39853c235320a590513011f204120af98434239d902690657a07c9842c4197402ec13b6832728c544226218fe8211a4c7f401621c5c82158074d02490229841c4133217f9021903ec830b207f901c983dc41ea20bfc81ca417982499e40d7249769136c81a242c3e310c621e1c8b78c43ba21db107b18ef826ce117910e58871441d4437118ef806ffc046f018ee892c8b4c071c0a7078c8a08070701bb846e6d484d540a57ea271e826da4b8b69217a099c1cf4982ea28960379c03ce83dde0376d03dfc13d681efa4be7c073b4089aa97b681034acbb740d5c073f311e6c07c7c138e037188d4e4d9786c5e017b05387026e412bc12ce8a8602c980bce42062ec34d70124c8695e025f808168249c01fe0301c82af4a940e4d27c5022a140d4420e6a0715d4ec150ed445ba46c008a1629442f4081a2b153c14204054a6a99e8ca06a41c6189a105284753888caa50c152050a9420a93176cb952a528e88a84021226a218454189ba5052c55a0cc6044144311942a5aea111622186690e2e453602cd1142c59b0409132054b16071c618921cb942975488a05bb650bd19521292d7ca4ac80a1013f5255ec11d1961688885a3b292aa86499424485484a8add320391952d3310a920012f75822a5aea0c5baa983043f5524f204999f14939b1321061e9916a6299d817a664d142c49322b34631b850a5052c59a640a9a2a5126d404aeb470a896d214b16232d50b45479618b1111160e648132039195105262960a111617aa6cc112c391942959b85489a18808ca9151162d44464952442c952a508e88b618c53025486a88dd4254e5a88a5196178e629002c5052855b454295aa860916274c207a920760bd151162e50a060c9d2931ac1ceb001283f6cb94284450b0c462f40a18225862c1bc05245044758b24c81520403151f364b0b42521fd82d475888b810a5c0ac0b58aa50c142a4050ad191142a55a8609132a5486a8725a29265ca90940e6b94a5852d445b72d82d473168398a214b005238c010c3962d520090f2b2528ea4508182254b152a44475baa6c3122d21202ea69b710196599026586a32a57aa6c40ca952a52b84879541ebb454b0c598c5c80f2010a8fdd6294e5684b1614a4184971b242d1b11ca8a2a51a115931ca42810778283996882806a21820f0840a910b2e48793200541cbbc5ca14a217a6e060b71c612132227a014b9547c181a54a0b3c2836764a952d58aa181dc9400465862b5ab44881624444e54a95185a56a664b9d2ea41b55918a04839924245ca115103725037e840952b52aa1c55c152e5078acd5a9992e5ca06a0101dc530854806a21ea833d6288b0236a04dcdd4568d15303555c8511749db180c5619c983c8f8257e612d3c21094a76779590400209ecb265cf963d99a7033110b3b30f71666ee686ccbc337dce16e1039e13c28640bcee0e1d27736e96733684b3db9308f56c21dc19941d2444487bc7ded9d9d9d96916ab1ba899bd6700e6e46e776e1d1f6f86489cdbd9bda7b310ded98174877b4ee9dd3bbdc3cc3c420b69d80d7d87197a1b808544107676767aa77b67f6d6d2dba5ecb813b9794e28e7fc60ce9e1f88f04173afec6d6b39444a17c13f98bdd23f603925ece9dbd6eecdcd8e3e3dc767cecc61f7d93327cbe9c93e5b484e4ece9c3367764ee7e4e464ddb273b873727aeb9c9c9cf61f5ce71c993933a767e7e448ef9c9ccee9f6d8395c0ee4e66e087d87a103496e2867efcc9e2d677b4b670e40737b331780004666e6bed3ce9cbbfbb6f5e6de3cdd27733bcbee66efee59a465cff586bed3dd433cc618e38eecc9ed2ddd7db6fb4ecfeed92edba70e9c3d809933bb75042064a7bd7df6a6b9b7efccee6e9ef34736644d6f67215c87b0b3e7e466733bbd3371dabd03301b0013faf6f49d1dee1df6291d763777cfd97267cec9be336767bd23a4bb7dbae79c7376bb77cf9ede3dbba74fef9d6e6fef9eccce3dbdd3ee737637bbcf0f98bbbbbbdbd9db1d04a7704ec9d39b7bbab74f776e6ff709dddbdd673b77ce9cddb3e7ec0fbabbe79c3bcdccecfd322f730f13d96186cbdccc93993fd83987f464ee3c935bc8f2f2f4d9d07b7673332fdcf61d38e7b66ddbd6d1d1d5e13ea81019115131ca022508890844558c8e04f06303316cf921da0205862c54b04831a2aba32d50ac1865e1c01111161f9c2dacc80a42058b1428444652b4c09065ca152953b25c1981a352e58a142e50b6801082166425c4ca14291bb872258b91008048213212f2e3831f417c1c6da92203d1763445ca162c528c8ea01c558101862c2c11aab44064a485eaf0fcc892c508ca162217b04879610ad5f60816222d5aa4f4ecc0f081131119b500c528cb91942959ae5c91f2638fc050e5084b0c4654a785a31886e8c840f40294232c558cb44099b2a50a0c3d23040d91210b078e3eb02265ca14222b414844f091448423504420b222e5ca06a0b880a5ca0b5ba4bcf03db0b850658b97ed912d3310598132a5ca950dc4a08595b3225021dab285c8480b0c59a6403122e292650a91d1112b414844d03285688b10003aa22329464458885c8022650b95294420a842e0ae107121ba024506293010c17121cb15282e60a9e2820b59ae04d1b6409181880a962a50b05491f2c294165ac8f247a81081c0bdb0a50a962a2db0b63df2c29423291b80726424e52804cd480ad195293f47442e8490da234456a01cc94084050a910b528cb21c6d8142e54a9517a64039ba1283941688a840399281a808172c448e5a11a060c952658b1111172833b450c588880b14128e20412282d11628598eb4cc603405ca910c442070c142e43eb66730ca0203110c920b16223fa262d38bb41109f57a21cd28fb7aed8c82c48ba4457931d22bbe5e2f2424541665915e2fa4d7ebf542429251765f8b84f4f2284833ca22c928488cc41d655fafd7467931d2ebe551901889a3bcf8c551f6c55190f8c5481ee5f57abd3ccabe5e481e058937ca6e947dbd3aca8b5faf1792477931123b8cf2e21752475924242424a418659138ca761424464242f22807f032bcbb0cc316291beb3f4d4b70d39a9f791de8f8bf29e69b62e49b6f8a59c364ba7eb36936b91093f11fff49bf2c93f4ebba48bfd5aa7eb3a9baff40fa7dfd0a9b6266d314b36ad44f3ac937d24984fa4998242361d14c5c13cde8d40fb2894c904daa7e100c3c03c1c4fa79ccdbf80f1e6b37fe43939b16036b22d362de90f9f80d10c3beecdb35405f56fdd5d1d071edff984cf51991fcc552725068ebf33998eaead685600abec3aac71a161ffee6a67a9bd132ea7258ac612aeacae44f36d5257c3693fd465deda6cd6801ca3ad4bb70c454cf5eeb524ed5b906537debdac9d5605cece45a06e3c4d562b49c96d41585ddfcaa7e3787a1620d83c53620941b336ecca07e361badfb6d69ffb5182ec562e27f1dce7fdba9e8e3d0cc89dbe84aa35d8341d12ea32ba7978fd6a4594bd26d41bafed30ea62e082f151277aa05dafa7cec4628fbf9fb9d0bc9df5fb9900b712d531fbd87def45c3f3ef35c40fee5a335b79fef92dacb77818111e7612ce33e1313519fea1eb5aa8f4e9ff2f13fde55e6498ff7c12695f3a977b9f9415d494b5ccb55e6c9ce037957125309ad1fbfc42d5799273affe35d40a88bcdf88fff0e5de2d60f1dca30fff1f7415dccc67ffc7bd0256ea5a80b886af11f7f147545f11fff8e2e712b52173bf98fbf8aba38e63ffe3874895b197575fee3cf5116e33ffe93bad67ffc37bac42d4935ca60fc273a41305276510cea3f8e4127f9cbe6b725ff039aeba695fa8fd9c8df568abe7cb4e27f1b43d1978f16fc6dcdff1896fdb6b2ffd84cf5e9492f7a2bffe187defb0fbba90bc24b07897b3a69aa35c2af5a25fbfc430bb24b92980ad0ea5f82447609539196fb10a1157f895b2d649730419e5dc2b4f5ec12269d21bb84a9e7835dc2e4d372ea9acf64806d9724311969c15f92ada8b34b98e68f5dc2a4dad9254c4080ec122622ab5dc21442aba94b3e9301e42e49ea325b4c40adfe256f41caed12a6c6d9254c29d52e61ead1ed12262139bb8489b6fcf77bec122601b49cbae2331960ee12a6d85ac2c4a17609d38fd42e611ad2824b9800d082d4e5cf6400de254c59ef12a6ce7709d3aab54b98bed54b9858adfefddd254d5df05f3e5a73b69493ae6294b473ea623240cb3fd2cc7ff8990cd072f96841eaeae24f4f4f4ed77ff85f3e5a4c0668357d7f49864d1abbbafdcaf4e3a27d57c765d62286d5a22d48d5ff43aa4eb7ec1af9d6c8b7d5031dbf07ba8d15c5ba6a802062f79b0989ca5e4375fa31ac2ea7025708fdd7fb90eafe1671f55f8f77d823fbab21a93e4f55f850d6a0425ae44f4f190a3e8a62c9e897fd15a427dc5449335785cf9fbd7bf0975361bfe0a166744cd4e47faffaf16758109014abf23f483f19aa63d92fc054f95f072acc289655c309191514600c2c200e5f6a4fdd98171c54ad37e909d19ab09d339ee8c2060c3e8f810dd1218930628c0020c68926d8919655a38e8115600c2c605c10901493a10355fe181b568dd6a4b055a3b5d4b5ffc232441132a8e10e18ac15292c090693f4d3521d7afecd2db7420e0dce50228f2e4f4fad4541a77a23f58b3bca15680da6fab7c74267457e08f59394bf34eb0bd12a3102aa63f691f606cfbf4b214d5a32d282cfe4a3c5efcf5f3a48a7fa0bc939a2fbae54fed22c7f201b3849825cba8fbf54ff6f6d50fd5dfb9dff20b5960742a480881498610383b5e07b8b3d18646287236c30e28a56d29291163f938fd6262d752b3e53025afcd0634a40cb55e609bfcb89fff8b353f587ef2af3243ea4ae21fff18fd455e6097ca6aef71f7f4881fc2716e3ffd669e7b821cd1838c828010dc0c851a2db16920f5e5c31c41068d640b183d6b6f63fa0270f83b5f8bf7450080ce6d548ec700887d08b1be499c5f8fe59fc19a3841e3369369c8b3ca8ab66c5227eaaf02585d061771a537aa0b9d035878310358ac6bf3e5fe7828adb568937f30ee02a89ab8423e79f0b5d16b58fd9c7ece36bd9a7b2ec23ea638cf181ac12af1bbb418dfad9fbd74d1306acf6342bcb9e67bed7ae3c93ba91bd44d16d5636bdb846f697836b64df277a140cabcd14a6324cc8b7ddfa314c0c292a3f730fe01aead28f611cfcf5b8a8a0aafbeeed2af920a445aabadf3ed5cf7feb938ebfcc57ffe58abaca3028b422aefd3c24d50bc0df5e5b29ddc67690a36e8f8adfde16aefd9043612b8a5a89ded7353e7b46bc46e21f65b5689faaf6906bb27d2aa5d11856f56855990e79a33c4d6ea8670fe5b5f721d566ef43bdbf732ac0dfbeb91450bfbdf6ec698ff2b66f4e85ecb367ba6b84bf29af117ed46bded7957fc853fb282e592df23c60757f7adf11d77e7e24c9dd264c8d4f5447a212a9fcda4aa0dbd80892aaaa886b7c6db9139ac687f48b0561a676937eff21ff902a7cf77854884f58f9b836e5f2c3a357b44f4f4f0f2052f9997e48d1e3f2e3cc07d08b4f54f78eba7e50fb55682bedef5c13fe18e991b6b11144518fba3afdfab9702552dd2352dbdbcade9156f79122f71b5abf06b58e9773e08720e52ed331f22334a3cac803206947957363cfeb7a8b47959e7c2d7a335cb90d19e2ccf7e2f30fb9e65593bbbbbbbbbbdc0332182c05088369be456f9fbdae1a849b6462a5db7d6d21119c8f0375297b5da3b772d4a55db342a84e57cd62247e3112f498c6c3d0f1c3662dfc98b4aa11723074fccf455b241dfc01d455b3c497fa3eac282fec80446ca5506fd458a483e2ac3e931a4dded726ea8d8e8a36fb7ead77519efcf6e9a0227eaabd4dfeecb988bd222275be9679fdeb7ddd44fec7eb49faf1efa4bb459a0e35577fcd3dffe59ab8bf6bcc31c93616a238c116846ad4f84035b29cc4b84d0ce82058e303e910a6c61fa185bc159b6a04aa3cf3fb5f73b831774237c7a49f3915fc7b5215f8e36bd38b75f5c61733eafcadfc3f5f7afcd3fb380f3ce0aa83e2773a1adc963be105ab927eae2abff158401e753e3f55f9cb4f5adca6f735accadf86d5493ff95b43e56fff758372228cda2f6fd0a2cadfaa6aca1e7c873fd4be94fbb913a40af27b95ecc7d7a4d7af3d407efff4acc8efd7e0b6277029c87d493f4e795fea176acf99f77daf7956f6e737d7642dd06d2c073075fe6e0350bf942b9221c9861a60d528f55b906a8aa6bee8e3801d783cd52deb44260c0e55fb2d4855a3dbac14fd560514fd64a8537227a4aa9432c6082174f7ee2ab9265de73bd72455798d48ae09d7e95c9354dc9a6b92a2fb916b924a793c2accdfdf9f9f0c4bad645fe4aa9fd7ecb33a7fa833ef93cf3fe45d377683980adf488c5ee68de2288786810efed0982133fc2adab63afefeae83be554f0779eddf7ed83ab54fc0c981563796a4465df57c21f3de013a7ffedd5d3d150d031dec34f83a4e3ae8fba6fa6d18153e7c095fc26f75f1bf5d53e5aacaa02f43a183beee850e92bfa483bcca67a14d958f8116822ddf35ab45953af54b52e52f37d4ab0edad8d2972abfa783ba4a29e56f1de423a99575d36f68ae4a419ee02f7d469f9f7d748f53935cb8ce9f5af3f6d6a19ed44af6b201d9cb1fea493fa43a99c97cfac1ccf3cea267a5c895655e3fa4da9acae3f1e7f76f8fc7bfbdd7783e7fe6cd26fdf333afdf53e89ff363f65a44bd91bffccc7323e5cbf85266afb97724abbff4beae1edf3fae9ed1dd22de24fa5bc97ebee646db1b1dc9aaa1fe68ab29df3694bfc7d7984d45bd96cadebdaf6bf6f15327c4f75f6e01481545778b641fd7ec9b6b123fa3fe43ee1e7ff434d67c738f9b70f587b44b31aa4b0e7234bc924318fefd2b157c0df66bcc2de7741ed745627ea2a55e536d851d14b5dfdf0c953d5045a1bc55b6bf4ab8aef76b04a8eec714e2a75e4b79bda5bcf8cb9d90faf843cd1c6a32d7245371d5ba66a13efbf9cc3149d10fa9a6a6b742795af4b8704d795c38e5a13e7a5b61b33b4e91579e265eb3cfe8af917daed143512bf3b34f795b215794d5f8cb35607e4655ab66ed335701f9fb298f6bd6ac951e8ffc01542d43d10fa9723d8161b5886375d748eab31ff294c71a6fcba16891d7ce7ae37ff0252de21a29d2e4b8a4ad1b71e000f392668b3c96682da76dcfba69c050a3725592a4833849e5e75fd24173d3c4e04be5f769216e71fd46a8fc5b07ed6fccbfdf3d163a2bfe21d4aff26bbb4a3ea01a91220aa91a3fc2ff9c7eafeaffa1b60635d23130fe7af0a3b74201c640f3d4da77ef7355ffe45f4112a2ceff5e35feee01760bf06d8c49897ac475522cab462df2a7a72ae918d7fe0be909372d48619fab46faf97fa8da3fe4ee855035dea0b7bf9c05f60b30ad0da1b63718ac0e52baa3b5dd905cc872cdc5bbbb8fbc897f113f3d3d3d55ff23af4efd6175caa3827f7ce787cc65344d5bcee3cbd7a2273d0874717efc15fae98754fd5f2df7e55880dfd485d472f977aba7073d1752cb85fa3f4923fdb84e9a3d043a6db927fc90ba5eada532452554f9dc8a9ed38f6b7ce97d5ee3b7077fc8a3b7157add5aee89b7f887dabd052c91e46d0bc95f8cc42f862d864d6595bfa6a215fe72ed1e57adbdecdbe3ec875adb17ba8de1e054539f3dff72cafb506f45fbd46b9adc9663b29c233f7bf85ab77854b865de97f2785280b07ae5bebdaecba5c0b0cabde65be6e17c7b5b35b875d1a2fa2e2a17524bf5ce31e9e7492155335aa4aa5c8eba361da37a9cdf312a50d5e216933c009a5be6ad1df5bb44e1e1e9e9e9a9a57a2d36afcb28718af8a98e61fa96aa3772439cedb966de9a51dde3ba79fd43aea9ac649f7ac800a415a49c3b813f954afd506bcda13054778b7cd9ef37e1cf7eb914f83326d90f357329649f7a0dc7e3be3daf2a2f699d603018ac5566cbac5cbaba60c4954bd2c5cd00ca4041fdb6c8000569d4ef2887345644d4ef880c1138f53b4ae38c26293743d4a27d7aca43ab5f0c1f6041e57eb91468fd6280c288cafd95ae5150370602a6da46d48df17083fa5337c64398cabde61b8ec7bd06371c6f7150b5b8e1781b47d5e6163926573a3fa26e2c04672a3b5137e683971a80bab1305754ee21f780ccb914200c56b98f9c958e7bcdb9266b46e55e5be899109c8f0395fbf6bae2782b47d59a6bb25ac06095a346fd4645eb0606ab473d2ace1fc9babd866a54a338cfe868ab38bfb9d9fcb7d736afa884ba6b647b94f771dd7efe6674242b8e0a8c466d5ac44f385e1191daafb9575442e53582facdfb7adbbcf97ec2fced871ae56dcf7945fcc400a4da74b7086af33eaea8d73cd40ff950a7bcad286f3ffb985bce91b46b56a4db2c5a215d35abdde3fa62a4ad534ada033afeac59bb3f3656fd6107ed67ab24febe16bd119ae56b54a06f55fdf95d287b7f960ba1de9b25df3fc92af93522df1fe5755ed63ff233175af58ffcf91f90eabfb11b98ea3742f507b24ab8fa47ad37e86d65d23a80d15bced99ad52f9f9f39f93cf0b976e581bfb11b76503776031b75d52cf9d1e3ba5c11ac127ab059d91ad91fea5723c56e371a3f7b276cd5d8e3ba588c40055abf713075d51c937dae1bbb418eba6a567345b0ee1a59da1c93227eaaa835d2dfdc095cfd9ddb678feb7a45fc54f99d63e214666ba45f4803ba8d2591a9df5637d42ad9dafdd92a49d58d250d5157cd8a3975634967ea4a6eecede66c5f4fe5c7a91b4b4a5357d09b37e2b483405b2a5d7fb601004868f7e70ba132afd0ef0fff3e082bd4f90fff060da0f2bf0fab088bc08552d9af0ba5e8fb0fff334d4933860d277ac0822680905eec5021fdae0055f8df2c46d18cbecf4aa77b1f5691f7c1a99bc60b3a1e08ba0cb000d56d167cf660b39c93baac5e013af2ca640cd3b7e48f91f405d42ac3a302acfd307e7fa4475cd95f8ce4cd4d68992624c708876155adf86fbe6d07f5fa0f09dd951513fea1ce3ae8cb5e06dcbf745eeb71996dfffaf1a931437882fc0bbeff6a45bb1091ce13248867fffab13d00d3ea1112274a53fd4be7b9772da55a3cb40b91202bea62121227eab377bdb44fbdebc5fdf6ae97ea71ba1e3bfffaf13aef7ac98f13a571aa9c1fffd2791fef7a651f274ae3543efea5f339ef7aa53ebeebb5fd7cd7ebd5bdf6ae578fe7def5daf99c7fe9bcea5daf9cf777bd7cbc7cd70b7eea5f3f3edbf17c1a49ff0f0f36127e1def1b49bf0f2f6b24fc3dbc9e46d29fe36d8d84bff3568da45fe5758d841fc7d36924fd9ca7d348f837af6b24fd9ab76a24fc296f6b24fd28afa7913092fee97d23e1971e6c24fdd1f36924fcd0db46c2fd2f1e46b1a1c1efa0f9a85fed77bfa7833aa8fb7d1f569155c2b5e8e3aec3c18951d350a839bbe191acf27bbc7b45396f5454d4a44991ea8bb82f8adb17a5be28fba2f8f25520f2f4b482da837e103e172135877ef305d5691191af889fb808a9aa1fea4e45bfe71e87a35fcf46bf55eab514fd74b24775f2a7a4df16bfbd22224f4f4f35d28f8b900ae9c7454875fa5d992fa8fd1f94b529979dcad4a7074331dabbd090df47c185e0ef6b7121ff7dfec1857a7e9f632ec429d4efbfe04202f87d06e342fffb7cc6854050fd7e1217c2f9fd282ef4c1ef33930b6dbfcf665c08003a3e7e9f0517eaf1fb0c73a1107e9fc9b85017e4f7592eb422f2fb32b8d0ceefb31817a242e8975521df5ecfcfb33e001fbd215489e787bcf440f07910defbe93d559201f89fcf3c0150a58e2f80d73c0050250078eff39cf7417ffcec73bc1068082f9ff53f3c4a9540a00f8007e211a14a02f8f1d907f19494887ccfc79870aa425ea748eb03223fe4559e1211ea65002d25ee893ccfa778a8179cd67f0f550af2aa1f42bdfc6829cde7f955cfeb7cea7d784a3d3a3fe471863cceeb502fde5202f2aa47794a43a817232da59c1f82f3a9879e120ef582809692f64452d44b4f4b29f53cdf43bde8b4947a1e7e0f4fe94746bd04692965cff34dbd642da59eef7701502fdc52d2f921ff837a912d259c27f2917ae9d152faf1aadff1947ea8179e9652cf4716f5e2d3525abdea43f8cd530a817a49b5947a48ea45d552da9ec807807a49d25292cff39da7d44509a90500ea25849652cffb7bd4cb4f4b69e755a8f79e3e7b4a3ed44bb794ba1ff25d94905a20502f096829a99e085542e9bc8feff139dfbd176e11794abd08b59450cf439578de0bb7bcf7947aa892176ef53c91d47fe029f9f82154a927c8af1ec8effc8ff7c22d1eaaa4a4a4a47a9ce77e7bed875c88f78ad520defacffeca63f9cf3e10cf89ffecef7832f8cffe0f8fc5f8cfbe8e97f9cfbe0f0fc87ff67b782cf8cf7e8ec730ffd9ef3c26e33ffb2aaff39f7d1c2f89ffec735e14ffd9df3c66f29f7dcd6333feb39ff256feb38ff286fc673ff35ef09ffde93118ffd9971e9ff19ffde8bdffec430f05ffd9774f8bffecb7c73ff8cf3e7b1cf39ffd5787c4af209e2da1f57f19d7eda0fdb26d6e915301e5a46abf5c0a423ea415544d7bed35a48a7adebc14b68c9ac2a2a9fcdb03d68ecabfa5b034a84d168dca29ae5aca5b8e49e4188054778b689af7f1678fdaca64599ff6590ada33959f3d40a39faba21ec214dd6565bf9c0aa8675851f37d7afe1249633882e68ae872eafeeaa0804062228f2f4cdcc044982640b0e3c51228885b0fdb032aca00028f367484c1e3479a39ee3062a76e6c8939623b1e4e6da494104268c656e56752a2de09cc5e43a1504352ee17553eec209c0a51328b397591524ac9449511b6095bdd2638a8a8b16e16608420a289281f349d2459838e0967f020468c238c101387ce1a0d55041935618821e28b3a84a0818f374bd480ca41ca065b5d3436c47184b6ad6ed358e145d097e4db98091de4957fadb0a2f2c316eaf9754b2688df3dc4af75f79366316bd5929405ea2476f7e045ed87d107d2ad59fec3eff435960b3de91f7ede9c55d989093ae6dfee1eea2463aa943c6840402e94f5d0a20c315fc4388432e3b91d9a4c4183324a8841470d9a7aa0f902a79bcc096a93f922bfd0d6474edfe0f7fb7750d3ad59fcfed3fb6908ddd90548a07c98733e7c202d29be1316a2131792cf3fe44292ca1a72b420010fb199a128c192106710f1c617685a9d537ba94cedd7e920ae4d9374ab3ad45ddda6a411448f6620d17d1b731f5a880a3a58f002980cf050a3d59f755057fbbb206a9319a2766fb35aa77e594ffd329dbab1316faa56174d1732bdc6e76b374a560957f9f09d40f8f327a5413e9cf0b38cd7407692ec86df309bda3fb98da4dce43f6098c898f9410ccca86885f9f29dc85f6e059e15e4679f511ae64bcac32f1fa9b52d1e27d9a37e5bcb153941d1f59f086c2ba3b127f3799cb0a9fd2ea4569bdaff6a2df78487a993f51fb906fe722cb826ed337c8672cc7f849c617221e8ff3118e871cb3d9e15e0fb3b840f2133d57ecdc9aea1ebb472217f6e49aff39f7ea73c2bf8cb979406f8dedad6b69663e20402abdaae322b300e50a006d6e25901d297bf0d076801142bf087b9196e8481b5a00bc16f24f1590cff50fbf9ccc7565408df699b65531b7afe1a732bf87f4011e0d6facfc7aa99ff34cd29a2e333951b421453df00bfdca082325e90040f52a8e6f0a26675d19869020b6d57e86314ef4f0bb9bf10ec3aabfdac24dd6c85f310dd975576818e18194e34e8c10d325afc5d07e16407d048e896a94e9754868b681c0407d1f5034983822e59124d1084bab1249248e2876eb5318a67bdcf770fcd7ca7aa1b4bc20b7c43dbd1ba1274b2ee2f4a834040232459b25952531b4e5ef4a0490a295cc0c58e207386a6fd97699aa67df65dd4619fcee0e10b2e8c48419737b6a42ed2403d904635949704f51fd008cde247fd50033d90ac9f4e85bf348412146428a991033b62a0a941c20c35496c00654023b03c9f6f1650e5071aa1831642a011fa67ab9bc51b60ea0754a30c2236e4424e9280a1bace6fa7c7c29366f140cb81e4d2805768db54bf2542abfee9ac59cd23b4d0d63ffccb5e7ca04ffbb4ca345c36959f7be89cb8d0900c9ac50f5f931e0acd92260839f11ffeadc6558d3124caa8f16146bf2b3e35be93663108baaddf3ab9d0b686321702a228348b9fd7a9f23b79c24207f5f363a083fa846ea76e5352092aac1b43e28cfa01553675414092ec2b50d56daa8116409da682fdeeeeeeeeee99945e342ba456fcbb7f0b5213ffd6b2872fe997cd29658c10ba7795ff750ab3a21efe7c0da9662f577af16169b250a3e6d44d73471b55f3e6325a342bcafbe06f41aaf121d7243e7cc83189cfde375fbe26670e5df680ec39a3df9c1c13ceb632a7209fe927adb87ce6fca567254affe52285998794b1ac42eb27a1db9fa53fbaa432fb4bdf2ac3ff621ea2ad0ff3d07d5dd571eee11dba7e8e80b640dd724e9374fdbdb9c795b956a1fb97c7f933f8fc901e7175da5c342ddbfdf8f0df7fff01fb5662507cf8daf29c3068f29cf3e31ae7fcb2efc87999999999997937c218a1ef471823f4953c61daefc7efa8f5d7860de37784ffc508e37784edce9ec6f2eeeeee32fff22e33fff22e33f32f2fef329340d334c6a1ebffb61abb6cce8c7e5b9d4a5d7fa41a7be9fa793b88ff932f599e203ffe0e39fc8e62e55f664292dc74b0c1c35c9d6dd0f83f7ff85a56d9fdfb87fa779578fdfc21ddf678891906416f7f7aea03b41523ae4f757fbfd99f973aae27ec51ab50425dc86e84fcf9fd1cbf0637123af7aac9b8418e097f73f09d63e2cf1c0a5b9919092c4b1cd62b4b2a7c1ed84bf86165caa3027f7ca7b0598cb63e5f8cad12ffad4c2830b5ffcba9eb3f5ffca1f67f4122cc7f9a5d5d8f37e49b6b42a4887bfe43aa3d74cbf7fc90b3c7758867c4f58b626a7f8f37667eacc28a2b54b0022a200ce6ca4e0063141105518a988278264e11a9f6fdd104bb84297362973075667609d3ea895dc2f450ec122656995d02a9abcbc2e08a3afaa312bb24a98baac504d49abf346697304132bb84695b629730e994609730f530b14b987c9ad8254c458ad8254c9911bb84a93b629730ad90d8254c9fc4fcfe2866974ceaea22e90d25b432ea72c160513eaa9f49a795fd0d25b434eabaa184568aba909ac0e206485d332851c1f4849a289e5aae1b4a6801f9ef32bb4c4961949f6a187560e4f9ad1fd2f963c747436613e4b9f93ad405145fd53cb4d3e4a7a84b08e518afe8529156f65da6ebb5861064fc40664d0fad2ef38790e7f9b1fad689f57817934e6bbeaac500f914acf683a9fd3cd4857a21d409750db9b4e44066f31e843650cc4db6a2ae324f561fe45da89d6f9cc679573fd79f89a91d84ba50bfa20ce60775314c87baba07752d1569cd575117bb89d262200c087530eb24513bd455e6c9d66373a7d46bb1daa9468931d33fa84bbe0eed1cea6a2797e350178bf19f3693511704e383ba1806137bd09c7765d0a936d3082d9ce89e435dd977d437ea728dba608aba1a455d508c8aba99765a185c51470c66d4052575252d6d2d1c0afb99466841ea9214b2f11fea821c7537fec346f6600b3abe40010b6a70e21f6a90c41a638c797517513c018217dc11440b52e806b231c33176ea60fc30a6ae9584faa5ae357fe95ba95f62b5b45f026a6dbf94a45586ff63225609d3a27daa918835e2c521f648bfe64512ec91fe941785d823fd991783d823fdd38b23d823cb068cc3244d62ea69252525256561f648bf0f2110814f0b45bbf8d39318309176994cac5652920e3bec91e661d5ca6817d5d7f03f37339f9ef290c1186a8210036912d308ada4ec9792b4e20d5b0b7e71378c8318905103229ac8684133b5c110410ca6b8a10570b4b6356997999494d445f54bdf8a49ac5654da23fd4b40adb8b447fa3fe8a6f647980b4dbafbc32f57ab4877230cd25d8eb0da44b608ffd6f85a21b5f74ca1adcf07c1f4f837cffdb74edcf778753ee8b76fead74d6e80786ce77f80e95e87a9769486ce61b581501a76688bf19ffe12f07881eabf7ef383768c4d9f59d3669c9a8c371d01ab1fbf59a70af3363aefa3fba97ad5f38ffff1653a3ee8f7dda4df4ac5f4ebf80d8c06868961622203068cfffcf40f3ff8cf4f3f0d2cc67f7efacdd4cfdb88c9bc8d131e2e68add6e8b069e372f5672b0a44332059ea957ed0ae7b1dbafe83235f6a4a3f8400799dd7f91f94c9ecac80501a7efcf81fbf4339203c2b4ac3ceceef3c101fefe39594baa83ec8f3501a80007920bfa273f55dba9cdf9692521715ffb6945c4c066809a134e804a13474dd77bfa2a8cff15c9d46731e88c76cfca77fc7e336fed3ffc36337fed3df79bcc67ffa753c666f0b52f540c7dfede43ffd28fa65a89ff4ebde0793e9413f56fdbae9fb73bc6e5a23fd48ddc7b0afc5300c06531431021be8e0881650372dbd41070e703c653ffd8b33372001ac8e2a528fea3ae4500276036c89d6facff6dab6a1d4658d1833b8a2c57d8b71a14e45a60d1e56987173c6dff477cc85204c4569804c59e4a0d54580a99fb7a96d04537f37b9908b5b40fed39f71f4cb36fa751afdba14fd5628faad6a46bf9ff4fbfaea806a737fe6424346acf19f6523e997b589f4ebdcf8cf5648bfd590116ffc67ab673043f2572371b0c70f5a2757df0ee3948ff3fbbfb5929692b4b247a5b48dd3f91fbf9f398eaacbf1d1e3795a4cacf363e79396562d209fb4d4b5847cd252d60af2ab4f5a026af150c96ac53dc29fb4f42db847f87791f0ef0bf17eec11fe209ece1ee15f793ef6083f106f678ff0ef7840f608ff0f6fb547f875bc207b84df8797ed11fe1ededc23fc391e6a8ff0775e6a8ff0ab3c6d8ff0e378db1ee1e73c217b847ff378f608bfe6f5ec11fe9437648ff0a3bc0ff6087fe611d923fcd3c3d923fcd2e3f6087ff4547b841f7add1ee1772f678ff0b7d7638ff0bf84b03b4d37dfaaee7f5ff73f96ab33ca5ef5abd4a3c76f3ede53a9a734f4e06d7b170da99cef72280d9bce2be5b8ba22aeb3698df86f4b29e75d4c0668e9501a3a1f94861c0f749f7c23dfb8500faad4838c7ce33ffe395429a769e9f71d55ea621d7c48bfd54695b6ef827a253ed3f4eb9452df054569e8c24fad32fddb524ad1a55f563ff9c6d519a99effd5b1d781ee9b4d1b2be24c6d52791de83e26c3645cc8511b0efd1e6e288e7eab88fa4da35f277f5dc8c56480560a0fa7168ad210736c4ceca0ebce69e288da37746747d0c008266ec0022f41b45a8b2bda3425c5007e51a3f615657875634e50d49dba312721504ac4862211b161c7e2a42898708294849c51a7a9b4a404b135ce843933a6062dcf020822869a65422abe13174ad1211f4299e0e48acc098a7a269db060020a0c5003041275d65503c416a8cee27886b9d1023dc98ed8d24d1777745352377de9a630f168fa6c205f3630186cc9d9a8ee3edfddddc9ddb958d33fcb266bd3b95971f1a67fba80f5cf0482106a89c283d6c50f6ed8443a1dc260c7a1092868c1c6db40cf61024208610e130edddd7dfa04d242253d09d00849de680173b2a4c930e7747777f7e9d15920058e848d42cc0414b20003b3f801def01d71450e50e0600560a4684d2cea9c6a80d8a24e49b5f851b3584b142d5a7cba396201123df8090bb126a738b4b040041c8bd96001732c98dc8fbc0c41230319b468398a42c5890c475a9ac5c6c90dab6e132c0b360c238203989903f786054a92053035655455dd2eb030e304aefcf1bbfda4324e97be953592f8f079cb3ae893afb11723f4cf521f57953b1433fd52346b56ac11954d0ae32f08d08841d31a73fbd07d4996b410ef8fa3b4c8f1c23fa743d5afcba95f17a47e9d732f755f1204ac50fc244b56c9665b6c0b84560ce8cd10475649778d789469686c9070a27577a31141edeeeeee308008c3cb1d8ba6d200079833689608d3b4c322d14937d8200763c498c006741cd18aa9000b2c9eda50ede07384145d38c1050e44e0440950148166639aa20e13dc00cc16367ce04d0294e0826909555d2e9828834dac0b1d09c58f38840eccc1879b808a31d53ea4a68614ad9be6083269e4a81f508606859809f0490002a0831b365160139b2d3a6c33e744f325278a47a51bf5fcebc48550348afff0cf8fd2d3d90085b1cdd899984e3b89b1e0f4848518acc9043da00fcd395710a3124b43ce19650bc0df24448f3a3f9b93b50298f4a8348b97e6641521e6852851a83879323ff6ccd9d27b814a94666559a72380ba4d7028ad53d6383ce0d247ddde6a9a10a21e752d2aa16ef9faa1502854f7f357406868d0ff2bc21a01f60ff7091d57378d0ac85458378d0a90e898c7641ddb41984eae40228b209845ea9c5c78c1419d329a70c507d020a17317fa3ee3e52dd3a9dd53f7a7df1dc5145200d47d27a1fb6f48f5ff7e54ff8fabfe7185e203a0a232543673ba20957f8522e5fd81ab84a709d75d23ec9f04155384008b0a803ad4ed5e852604b40658a1dd03544e5531c6920bba5083871967d481002a78a002882440230075405fe878201c1d1260c50e725c41660661bc5912a3a2862eb070c347dd98156b3c91f1d48d59e1051b2bba767777a0ce0a335b8452ca6cce19a51545a8a67413647c924929a5941965a159dc573491450a6190ba312b98260c7430ab7823e2d48d55714615634007eab1456771808a54430ec490e0061e40c18699ec353ae0c8344e073ce8dea0b1e2628e28847011c7143de87ea040d217148821e20e39ec508226881fd2507d00c90a2fc438a3041855acf9828429b098e205cf7a1f1c20168f12bc498a420c1b58418224414cb1440acc952f5a94118234d6c8420ca12ec210d3050c4ca0d58d554185ea8cc6460d0e57a05061d020c5838c224616678481ad71ea2128868669ab1babc204100b8d67fd7ee64c118609c8c3eae0064d6ca1868c10383521699a82295605116898a2171cc03c11a1e4841c38b0e3cc085c28d9a0ebaa202255b78b2cec40d5ed420b2ffd43c7bfccdfb9d0b251051b6c2cc571840e675a06a8df4a052240f00127a688c1075a30c71911b8e8e2864edd2eb200628350afa1bc14091d94ffad66f64c53f09d7e1ceb4286927eab0abf58f921dc16f2d28a14ae128f36b400045a54f88baa708d2c8afb04bb5af560402b75fe3b42430f88767c48f9a3e7e30ffde77f10fa437f2bd069c6de70d255b3987e5d75ba39840d278cde770437eddb6acbffe6efcfb73269d6ac969e47efbbb2fd50b31c5d3fa41977120c4d4630b3e7744a228398532cd1441469a6f052e68817753a69d693b9d539678c0539d439e79c749be5b127cd0262ce113c3991e1440f3ca071476b02d539ad60aab3217d43a976756355bca91f109bb885c65a7405a8dbc6143bc0e08b36697850430e13312b7a80030f46aa3fab59dd11800065d258c34d104678a1419a16016a7fe742136883e6033000c3050b88681959218b3458c0b146172f4b1401aadc520ca00ed9628b1298e0071deaa02284bab12ba210400d92028a36bad871c51850f0d44dd394e6a75200064cf0a08d9a2f44704600ea08401d55264106841095050440dd1815615499c42ae15ef266c2cbccccccbbcfcbbcbbbbbeebcd3ce8f81b0d541bd2062698b0210452a4400b31ec6071c1c453d35218dd98367298e8ba4d4b61f4a8cb85d21158e0d4e5a208343778487c503776668e9ad5e58269892c9a258416bf12f9a0c6208c4f91aee7dd549fdab0eba0106afb735d8971a6f6f7b02005823ec4c4885558378b2bc02429000473400106186594608c0034b5b105162ab041e5ea7681851b4a1a7c8790aa50bb9bb7dde3dad0d9015bb90467dc00ba030936ddb75af572841fdd938ff252f097d14b62ca5a71feb7734c7ccfbd4f4b953fd4ee14f5df7e8aa25034936f803a3d2b9272f1badfd5e554d835ead2313cf25d1b6bcd007f860883a0f7c37d97ffedfa2e959e11d7970f777f1dfe723c4b9dc49734022b94d08274e3ab91da2317dafa7c8fc60e2b6a505d347628556d398deecbb22fb57feb15734ebc9948e9a5b00fa9c794b57c66de448df11f7294f7c14f860a7fa87dd2ffe267345a39ea0adf47959e1548b9d4e55408a1463a66061804bdfde9a90f108db8eed353cb17fef251d731fecbad50424bc80684cd8294d7c4a0e38f19d4d985bb104a086fd0f10677e12edc0e8abc46164208a18e8e8f1e08a7378fc15a6a631b74fc1042f8bbaa9b6dabd53ed3efcbbec22752ad7847ca0b69f5e685383ecddae70d4208e166a90d4208e1a6360821840b214cf5c0426b2116eaa19652cab882aa057fa8a5a445aa858cd4ee3108e385174d5e7e58c9422cf44c783e7a494c592b3eeaa1c794b5e0aff7bdeac25af151de5292169c937281b588ddd4e9f47b713c1975027f05556b954c3a2622fd904b86d5e86d0c1dfffa8fff70437885b619e816cd1d4df5cb3e78c68ada9f2d9a3bced42bdb66680d068046582ddcf4c08243c82c2489b206037204cf6912a011587021200824e91a1630e02de9a00881dc8b9a01651f10d0082f5c7113d9d0dcb08c10e290c50688558485eaceeca0339db09ec0221e0fad2634a238c28b121e6e002076c60c205691287400f18ef2021b2a515c880553c006082bb26113850aab475d2cb888d51f7563296041fd586ea408348d840eee26692a12bad50cba0ffabec3086344e170184deb286786ca50d994b1673633efdbd81b36d3a6c5ace928a79c32764719dfb099361d616cff36f6a6590d8610a232140e84104247ca18b50236b55f23a15b8ec9d6acfecce8fca1532b90bdac59cb31d9eaedab76ff58d58b54f78c897f734c34e8d0a1c3e8503a9c19cc326fcea07b84126628884279336a83ee124e9841540aa652de9c82ee33666dde5003a634a8693dd03d939b43144c416d83dbe6cddb9337771c3d916e503395ed1d4770e3386fe632e873839eca36871adc52cfe1401c1c6fc6c9c8641bf4fc4cedd7501b12a9262f6a3fa78546c69ba8fd3848a8a04ae5cdaacc8d33b991e30d07e3468e37da9c716a3ab3c68c30ce34ac7fb8a3c534ac93ee78d3c4664d93175ab479438d262fb460304c06cc1737e3ed1a374fdedc71b46bd68c270fa1f76d0c7adf6753cb70e0b78931ad93bfd666de70199dbf6962b3a6c90b2ddabca14693175ac460acf6c7cd3df7dc73e34c0e73301ec6bfb891e38d36679c9ad69811c6192b3a8a36d3b0fea1c1b49846a285685827ddf1a689cd9a366fa8d1e485163106c364588c3b9be128b80906c361f80b33ed1a37dbc69fbcb9e3289af164d78893d07592dadfb4ddbf8d31d1e204ae4b9ae5def74cb659913b816bcf4a28a5374b89c259ad91de2c95e1402e02dbcafca7bff3c8e816d2a5fdce335f5f53bbb5ce860264d6dd635cf7eddeec358f9197a13784eeeeeddd2e615077ecdaeeee5b7b1fd776776feff6acdbbb7d7bb7239031b4fdd8ffc518618cd0213b0eb4a69a8cd06110f4d807e8defeaf7b61b3b6a97fdddeed2a1e83bb777bb7b529e3c4994b70e691ea59bbbb9f34f44c68160f4669aec8018d31368cc145ab7d6a771a1ad4507b3a41c11fe294923a2d0ae290b3441752c8a00a29c8606a45106a8cbf6253234561a8594ecc68d1c9132755e434ac51c60e0d2f24f40af431092a0d1a6a3c346163d9f37c272e94d1a1f83d35c6df8853e31235a2a94053cd0f49a07a02a1103361280d1bd8d63e94468e34e250cc04272c0c998002035275d39c1183cad54d734615d371c2a440055c1c5a93821f9c98c1894e5858a7272c48d1849a3e9402315d869202d63f2b0553d6e990460671009184031a902182a639a38a6c4e296174e2c42916c71a9f35d0d4e4608286de4986a2c0030587643421f31752b7c98b1a1b7372ea61ca6843146ea4bc67144efdb351acc9ba2abfe4a4d9411ed12164c38d930e1a6bd1e1d4ce69b1900e0483c1ba0c9dc069ce46a27fb689fed98ea27fb67edd0e77d001040e96c2b8208835bc27d0a8d07f5227cd62e149b3fc3dbe50a449485288e00622ca9839010a6ef04f94e1c4fb0974b21a3a419313272075b108c119d0e319a6304ebce0052928430e2f4840640854162040920687306ac8b4f9800e3e08230f54164c6fb2d0411e5f90a08c12450c3141e703193c54c1840e5bb4d1e50a18bcd1e34400eac69e40419addd5ca571984cbda3aa634ddb7311e3c8083112338620e29be60d16a9eda2d264d0b986872ea01083e61820a67851042a0a62440232479e20720d884260615420821a428b4197221a0122aff074285107a7b00046c01f8e113622a849fc1ad10a859404366ceb84fcf8466f1ef177378a1c59823969001098454e8c41c15a2308466c804a00e1aa1fb7a845288824d922eab199a3bd6d45837cd09dcd42fcb589e405b17faba21255df79198a174d1710cb05ae9f767f7cfe8aa595f57fb212081a7a41bc04873033442f46bbc5c90ea42485fce2ca114031ad4a1c310416a7ff795ddd0588b6e557be418d38419609861c386d6fefa702056e525e41132ab1b8b8207f5633169ac34eecd5a03c42ac27221274e1001bd5960392184378be5c42ac22a60557e6f6755dd26a52deaacab451960d48fb5a4fd6af565ad53f9378d846e6b1633ec4782cc40b84442ca5d23738ca6822a1c8e37d638c5a8ce3e2049e043a00ae103c11f0142082104aa90fae81173d608dcd8ad111881c018638c31c6cc71da68aa08a9fb3e2bfec7f7899fc5df625763566384efad0277b1f11a894592f99769f4137ad41e354a29a57c493f29a5dcf58999119e54b9a909392a375558e531b032d38f57f36355a71faba9ab9e5f15619f1a64db892f75d34cf1c589a4eadfd342dcfa58d58b6cce9dc06ad6c8722938ec55af56097cff20ab24cd2ae1346b849b166595e72ae18f6268aaee32612a3755d8c4a1d77555386bc49f5b23fedb1af18f7ca6db9809a2a85f8706b7e9a08fd1a8fe6c3a488d0e0252fd3b356a9791a37eabcd270848fdb6fa319b1e95d158253daabb51537760048e1ca8d1b46940043832c7e3808d37e288aff166038d9de8f679cc2ad9c24995c7ac917d255b38cd1ad96725d6c8fe722970538d4ad4489b56096c5a23bb655b50778dc0df2e2aa4dcc454745b7bd47d6ee2036cdd6735ab64eb36d5afab4e743b2c34d4840df667abff72d05013702c6bebf7014b51b77e3d6ad741434da0b1acadfe3a7c80a1266ab005d8ea4144a06d063aff2ffb6085bf3126de54081b365c1fd882a612e25d155cf7c22947a7593cfd1b63c28c0a9fa76993aef2759a85e6fb174962420771d653bd7ff63f9f0f4808f5df92eaab6675f74fe92da08a37bc0554c1a6595ba1b7802ad468d6d675aa0bc2cb9160b318ad6d5dc809e1ba15d701e1b8aeeb769ea34c425adcef7fec38ea7a713f5eebfe857a1fbfdfd3a3c72c73c455f5dcfc81e3e35fa8558fe95d0f9e77bd501e5ffb7d9d203c73f2bfb8e7e9f1e35d2f9df77fa11e27488fc9f9f857f73cb44ccf7fa1de85c07f6d0fc0c4c7f9a5540b087509c1791c5a26fb57fcd98327f52fee7184ec50d7ebc7e36c3af15fdd8fff41cbe4e06ca87f75afd34387967975b40cd39e1e3954a7a365541487761cf5a1655eda6bb44c8aba5e285ae6886b46212d23e92bd23247b4cc6b838c33dbd0a02780e79984b41cbe6b49b6fc8b88bce60b5a4e5d4b382d7fa61d18e1bbba1071fa11d22e44e2330969097199a5369c4ea7c7eff7cce8324b6d383dbadf5f45d47499a5b6ee5f3f74e2d4502eb314cef6fbdd90385101a088a8e4e9d7c943450c3ac79499111ad1308002231640303024188d86f33c9023f10314800f85b04e544a1708a330c9510c4621831021c410000001c4109821a261010002f4acf592ee842872af4a671f9349e53fec8dd7147344f9398f7b0267e458dd2288f53d78194f50225feb12f4889616e935d73c5213020e8f05518c66eca6a78698f47035212d34d252099cd22837ea857452350a4d772c62457ed2432bd18bea0d254e4f1f68a1c8253b3878c2152e0e5650642ce3bec6d1cbf6015f8648ab7bf2da73d531f0e2f83ce74e66c0a1aafe3947538cae0bf66f03496f086120b3df06ca964b9ddc042e8488f5b7fba450d265b8c65a0260a55a211c3af5976f08bb60a8f69177b54b0b3098c72785adf4321876450be11f6f75d8b93b7dae2152854caefddf6c9d74a9d8fab85bb422caf4ba8ed3e4e7e5f42e6ebf3ae78691d0ec04c7ad2530fdfcf9c5af2fd5817c7be4a09a28bec0bcc32a1f71ead47072b33c29ac1d3c1cf77e9f6e2e793f78a4f4be772f3aff258512c654ba0505b9122a2cb91d99df9542e4feb53c25d6c4033a6f006616008113d3423057d05438f0c376563f76ab4f7bb249c2851455c3886309d31295b4444044764325522d90d126344c63545758fa9bafc8d26904acd2190414d4690c138b609ecf081f85b81d2c0cd95f125d528455298981ba58c501f136e80fbad952fe3a235bfed7a18bd8c23596229fdf047161a5f72baba8958321dcf3efe8186ed9705a693478389e4b6ec55641ada00385a277e4c7e011f135392499234f7e3b9ad823ebadd2659b9c48eea0033707b5269dbf361de59259ee2e1c52afec32dbd5f35a7c6d4aedb1ca804d55059e4f61ae07fa2f8f28f711b50415fb6d1e52c35efff10d0126f6b57f400cfa9015a9ab25deb43943b4222fbbda1386785783cd58424f752954b83c81088c26eaf9843b593fe09f942d0cc3f0661fabc79655d833c467032e0d8e0f6943eeac68b0b07c04d5c757edc1c90fe683bf3cd5b621772c19541414cf2fb58936467d8fd884a7126ee974a32e60002393f6f4cbf2f9ad578d17075449a736cf243f100226140d8c506f4b62844e5516e9f415335e4755c4f91d06f0ed2bb1205a80ea5ec3fd4821561b1e181a338751105ac6c57e7539bd6717d8e3dd2daf3173bdf5e8fd4b1f3c56f2a4f74f846a45d85dc6d80e9df9858bd33b70d543a48bf19904b0eb3020d0047d379e57fb5f678d8aadefbbbd6f91442eb7528f1ee2477e9261f4086dc7d719d1db0e384a61a2c84ccb0075ca1319108c39f6d42d4bae511ce1f12f5b0e3a55768410917ad15f9bf53b17e025dc573dd3c9c788f409d59d1407680a03da50c7125705dac85191c01af7a8b385bb8a786e46cf2288af49b6460a5c442e28444cb5efe3373ca1b09cfa26a4ae6b09b59a4bca4a51701e12135c8003efc0c5e2a48b1e9537b11955a0a34da827191accfbd89d8659eab6052f0733d266f89135e20a15ea93151541d109eab37f86d2341460dced911266e28b1c41ca075a7b0c0224b179687e939e7ec66a53f26b46a0d8040574cb5901ffa081275e42d98cb7ddc4f44cdd1e5d69580fa96de5bddb803a12dc3e0909f8640f6b3482f3b64d176eaed74d7c12e565e1692d3540bcb11af3272d1db5ac0d0a2c8884315d6a8cd4bc4aab69affd535c2761383d929086bb9cf46b3872c5f46309cecb18b521250c97abf4f5fd150670b4a66e8bd4f5a85aa1015037b265e147376154526278d4495a615b16759c3010e20e3f704589ccbd29f4f64966ec52120635851ad0b07eae6724bcd5eefb6fed7f574a25313c8bf761832b69944ad248eb873801226c7621e16b71e48d51cc001be03ba86c14698982d75130f22afa1c8d6e424ba30449ad69b101daeef50605e6b72ba538165db6b2b1e9a2ddcbfe7610f8a48634efc4d014510b1b45b8e390a48e9dc5473b9927c7e246d1fd38e50cd08ffd4b4821ef36557fb026cef1ef030d6200f09d87c3f9dc3f8bbb61a36f2d787e3a5e4847c543e2b2452d44b4f417a70b8d04d71994a14c29ac6f92fe6c1e78c752ccadec0ddd882863081a51885d65c86e27e5e548d06426ddb5132745a4911a86282dbd5892b14534e9b15c5fac7c0c23d51465c9c053eff23f18c9fd5fe231ae67a85b76395d8bd7f0f5d08c3a03114e8a05f49d10e7d970f588e1467e4030cbe27f91cc3c2847f9ce5543f3d09b276ccc21adcc189af488ba37838a652b41bd76d36d4a1832abd5744261c4e847fc6c1fd8a6ff2911e18b04f40cc833618480aad01c93b2eb144da516db3d34fc25bf8a8be8d350180ceb7f14a6846e265f97032a821ab60192d39c971545c64f5e6a50679626672fe22a661dc30e61a003b4dd7c4af1f94f188127cccad1ac1abd813ee74cebb9488c5ff104bd0e2bf10e07b4d10d57e7cd7f8a004c04174d43a76837f0eca249c8a0741df78c5db099a634201f8582a9c21839524876a5868c16036eb0b5e60a1d104ec2f48f056b92e8cf28a1b092aaa8cf9e1efda25d981f83d2035938216ed4402e315b4815a7176915d2e03d5f4eec2e80afaf74729457aa7c8be6f0cd9d8584c9c490782a2b65b0bfb9e5ea9729c8ae78440e2742d5a579a8784a12938f250c0446d89fb12b1e774a95128af26fd33130159ae7002642a1b9c723168f691b4cf4c105605befde2a7b167127d3534b375a59d0607582f180621025aca8dbd2a86d41ba355cc2c443bdeef1845e7c983fb2a9cae8aa51d7df8557eeecb444c032a73025a879ac7203943db5c8087a1bd422206ab4b99b3da2c3d91e7964212f9dc1ee8ad8aff3c8a4a05b22d6561003140b32438cd33e3c280186b3ef0e6d79f2c21e2019278f910e6a3146b6d8a8cb5b8762cfb1a702109796a35b1cfc2ddca1b3ec689fb8dddada32b134e2f8e8a92116488b052055a3ebf3c1b661af4dd514e92569e95d146da843b176c8b28439e199c0548cf562d6d924336831bf57cac83771cc5191f69b7d1f98d9c48dc6077a0a80cc46f7e1c488dbbe4a141468c17941593d0b4bf184c106403e4d76297251a9e58447419767d52c6a89e15a7b1c3c75a3af833d2e238b013f9dcd8e836e242a228c451c0703c7688aca846842a05c361099feed8681892fe9ea930fc2bddf837a4b9a60b552785487a9d18aaf2723ffc5e2eaedf1967cdd4b2c42a60859cb9f4252bfef84d6d7424f97af0b8cec9b0a7768e9b31bf69045b15dceb06ec318b41844e2105985a40057e876a246efe330e81c8043f7197f57a72f7fd5c5cc6790da0153958deb3b83d4fdd018f0777ecc194e6bb6bc1e047f6969eed7cf3781d62377f408e3f5b2c2216bed933219008b54048d9fd2deb4a9cb8d566f8191b2dc585d973ebc3793c2e1ee996b46f8652d9621ff7db72635449444f1587a17f0778e3a7dc6a94d845a030c8108cb6ead418588886379d5d2da3d93e67f75e0e467a88a6623cd4473c5ffecee199d09bddbd13e0cf4c5e3b0d09566b461886a66a8f65a483407ff379abb9d7da63b946f9781cf44774d7d0142367ce63092dd455466d80d9aea3856e3671344dc025d519605c28bab6cfddd7f0c710c24b6cd27e55f66aaa547a3f29b51cf5c98d0ced97c4ecfeca2bc0ba40363689fff7d046047d94032a0e6d82b9b2b9fba9b4b8d6dcc4178429b6773e6824c94c55f10c38d5924118e1e5ebd886788f8cc5c68e3d23d84e6ec7d851dc308c092e175bed638fde24228d20fc2a00263be6062991cdeb5a84b2bee436db39e2bedef4b246090518447ff927d5aac07e2fc98a1942195e10d74000500ade1236f94240c6bf7c447d3239020e061238476cd60f5102162bb2b340682d3120907c3e000e8a02e2a88d384ac360b4370aaa550213660f9ad3734c4ae4faf4d4c17adc4554bb0b08fa4cdbd9232ad01747e1cd6ebd1385f366806437d1afeb834e08468528889f87ff7ec4a2b66f7bc92e44fc00c4caff98be29b58f03780a0e5a01ebb7322eb5a9981f0df4d2d2c064730c42a04332daa464bddbcfe63ea5789be3543c06a0efbe9866ad383492dbb66811ba157dd48ea19584389fd18c7022e31f33fe90d9c7daa05077eb6bc66daf15e6691e5d7cc399b08a5cbcbc065e2496fb587ae986e643bdb526d0ad8243efa38af66227bf553eb0b437d3a6034b7bb6d429b8b75e69a5fddbadb6593a0fbb1ea18e11fddf523e8d169afba78bdddf052bb6570a2d02131dfa8a21ac331a0bde9f8bb325e915e86d85be4ed27c02198369eb6f27c296b1e741b1de169adb61cb07a186e88f6ea8dbeae6544910a51b0a8c1f9048a7bedf1a17feaa165d94ac383345df9c12808bb4cf03565b3b3f998170879160957166570127e6e30a4958fe110de545ec99bcda57c9c89e36f946c76bea34398e98d197729429fbebd428b8c8651af5d6e51d31fd9822e5b579f0c77441be2013009a508d25b43d735829f6538041ba2ef60412162e19eecb58a86f8b2ac9268db5802ddc4e7a72d54b00e85d7e33effe2b942268dfdbdfc6dde2c10937f12be2e76a82ad9d9e869e6d764a48d9d16327c1619d446dba86a68a28ecae8be26cc896966c5300bcfeb76e01799b62c4467998ec76d57341e919e33aeb3c6b14ca4411b2980d5af33f4aca81e3ba85da414cd4cc35721fd1b8b7b56ed80a4a475439ccb432d77e99c2d3a97a4b5fa1f14d66105126f924bee8b2ae14ccbfdca2ccfbea2088d42b9ed4f15f2d7f372a3f3c5ac5e1888a5339138c3a20f906244e82865de0dfa6378cd20bc5cb1d56b0dfadb4a6d761671374f05a065222c00f4870c43b052d28f9cb67263f8e81f2454aef972a05eba5cb0eb3a30b8ab9c6160ecb9e14ebad62766524f7463da4a69efc665d00fd1bec302798854ff5a15233d685118c87634bbabb021a618dd8cf035357b0c2086dd1ab1e93c97c93dcf28db028cd41d3151eb91dbd1f867f49b7056d0e3e66a2d3398cb92d373351b501b91e07b22b49fd823fffc2610e06f5e42aa9e09ff243414a816800606db413f1a7a73557a3349ad6a13f964ea2726fad3bf0a48e45cf44584fb2902339302fe67b732336c4131fc86e498f9a4c8065cfd01d518cbaa24db4a35f584a6ffd53262d9a680a14565c631a2fcc4b6806aee96854dd6e519adcc02273b99802ff5727eaa6fbeee4882ad539f22f2c5460d791650cb3b58d21c9e1f6bfcb089a7e6ffd9f1461577a25a9d93f1eb72302a48937612c782c94f7bb9d91b2abf9758d309715751120fa06518c720b13216253794aa7494545100844319b0fce354570176e9b0fe9a92eef83466669788bcfd055462321ec931df7d53a524e159388c6ac5ebf2ac335918704c7ea11b823ca09c70163d14701ffe4b57eff28e635496ec9f0e30ee1b79aeaffcabc8fa3ef8dcacbdf42a6f396077fd57465e7c1b5cf01d4cfc63394457c8c4a0860696fbe8377ec4e8e60dfe5dbd375e97d955a91ca11c8a40a1167c4217e2d2f44528db2a589e52dabce4a2278846900f86f7de2464b36dc2858627a38c78e1b463e509548622cf879aae2f7eb810b3eea0c4ea20ea0d8a6cda7e4ba9acb8deedd25e8abdfeb056c51844699cdd275d4f1721746c8d38cdb9dfff0e1c8ef16b4de23dce91cd47c2787984f8bc60312817b37c5f89aa059949fcd1d290cb73cd71af50a150b89d122d102edd44c1d0c5ee0e22537e4a3288f947c3d263561b3ca3b52ecfe7e373519a8a41fb2f18ba91b4a185975b95329776a2903742ef28b270f9446894a9fcc38bce7a55ecd6ca05ecb23fceb68b4b195e19a0f3001214cf6d3cc8695ab6e2c027b4b2418ea72308011d77520d8bb5e8190d4184c5e46d58d30685841df75f2578315a83beee1509e312c004937b23978e398054115783a84f0c2ae3e8211019dc81b658eb780f8d7b9847c9bcae035484c51f83a041e883a65423e7145a797041793745b042f20b7078d8979a426eeca5cc73cbb5907a3c54d9322938c1f46f7df1a14b981d8da6c69c9395e00fd1653552dd8fb50518593124b2f276d506090a342102b26288e0eb115aa4f30153af995e0150392a6425c12cc9282628eea14425be1859fdc0171591a3b20a2a02ed0c1e4a2df65ac30fafd5f782ca87628ee1fe0a65df2df53abb65f57ca9a598d46c02ce5cdac02f6a67175ab63872133ee7725ab976743eadfa2b986e01bf71bdddb4ea60eb29114080749d2fb480411362d1e1fac51b4b920ca8c8a11ff614e3d5c5e356dcf5de9048eb6447efe7c02e006830857a865043a346c78e9adc80a069f463d373a5862063b1138e801a3f5212554d83444c51b582520417294c16fc9d4769e5b089bb73102c06d45998afa768e9f5544bfc4aa0ae64c73df8a7ff1c85f788fe086e861250ef2499c4a2206b77c7fb0444ced8e782095cd937343fe33f84dd154f61ff1a59d04ac1a3a36856c4741b1b5a9259edb4610ffa2db48317df9c158c63c62df4c33f1af08590685591a61768e7c50e6a552e44017a8ce4cf5a606ccadda758d2006dc5ce554264f9efa919a57243637b3d91c2b6c4b4d182d9f0b92b45a704e0850a4a796552c3c95086ee12af5d48f414e8f4e027a60f6ac835a006cb362957bcc4c5ab360b7acbc4cb8d863900ff42a1ddd51b25306bece244f6c43401a962129ee4db694496b313c6b337333198f95e114d8b4258510f66a9973249f58da367401d3004ea945712fee58b1ae8f1e26a52f94ee58c41efb2400d59ae0e6b1f2ddbdbbdb7ba530692a8518c7d940ce51e788a5c3bb7061b1c4fb6ba7ae7cc89b046077f88a850066b24621218108142f247826ebe18a8237187266da2b85662827a8d65cf96da21881f0200ced1f2e7fc505996b4a900e62cb79db08920297c89272bce31848d604397a422bb21b5247cc1ce5d323536871db6ee989b90dd0d9c5e350c87bb9a0ccd03503e8d84d02085ba8a09b990396068160e818f5323a20dc766c87b20a922fd079082caed3745d67fffa05b00f7c7151ffabfa279cc412b95e4b291020339bec63669e7f3cd7c9783e9e9e374a5202ee6b751b975737e7b63af775cf963908bbf2907ce13c37580c059ed7edea288e8889bf60f80ca0d5ed3092375ed426c0f865f1ab8aa210dcf5f0072a1a7ed6b1522721a0674b87a88009e03586fec7d60b7e29b5f9f32c96964861b43ddb1555d153f08014e020b7a80a77a17dbff87dd12b2a9bff82b817ae2d90630b9df1528f96c903e8f7486e839074c5fd45ca1e95685e9bd495b332c669a69b9dbaf480c11cf9484d21585910de2616b8a39ed14bb02a2b8e3c20f0d74c5bb09782a4c367bfd5b8ccf271ab528ecf3f416ffdeb926437e81a199a4ab01fae85e90df8dc7f71c6868250b2353f4b78282a00ead7ec5558175a7c7ecca7f1b2556bf379b4e71e984b8abc7b8fd71718f267c9d30c9ec87cbaab3629532f188e414450e4b84ef58b34b896c1a7745aed4fdb68717023eef96ec1daf39e8f43d7ea2c383a3094a0dec3c845dbb84dfefa5d58199716c2479890cd08ea933f15e3c345684cce0dd3121d6be921768eb70baf8ff7b60dc78fcfcff059dbc77272c3cb8bce802f391befc8fdd70c5701f00da8edf77c7836bad8c5cc6ba1fc8984e30dd8729fa1033dd637eba5d9d27a0c703f8d901de4c82891923ad52c62369c0299dfe6562a20618d7120e2f5569148106676628249bec5d772d2643a7810340c36356bbd55955b701b80f3019a6a657b0493daa19fd7a83f94f4fc28c931ae57efc57916a88d45c10e9178ccc239771f72f47ac11196431cb93eaf4492ca87f7deec7bf25b9864acc85a37ea198df35b27b91f772d4aedd7984454e182c174fea4fc64fface75c09dbadf7cc42648ccf7cb21c7a2d41703cf256bb8d159476118ca47996f9a627f90e1df833b941f0de2ec6d61bf904407158b24a9176ca6edca027b0ceb799c5b7886fab7cdeaddf29850e741079505774e9145e18ffb0f3b13ade3fd09685b238575c6b764637e83fbb1696848785e9dd1f638f7ec6e1ad4ead946792306b4d36231551131ebce9f7711927434f0f17050ce4ec509215b1bef6232cf51e0e797d1404d241a3819053c8d373c4b49aaea1a90c9c424c2d2f2b767d04a1f012298fae3c4a8556d8646b39240438e769a84ca7732587c945a019e734fe5bd5baeb4b36a3ee5afca504a7e0bb9b1392dffc4b948d60f91567ca295f152198ccf7d6296e64eab57cf87f8292755fa61984dd2cde9404cbb5edeec497d5f648fd338f623b35d6ec9174bd3d5069a5dc02a9bdde1653c535f5ec1d1f0504d479f38edfe919b70d36243be0a334d80d160069df0ff178aa30748e2031bb4101ec24456e7963212e142184d61e3a0feb061c85884fd38938e227511132a014faa4cb52d5819fdcf8dd5419a2ebefcd65f13cbd0b0722059cfd2497a402acd56e48f36a001833a486011465ce1e79a700bbde6014d084ab4294ab72b80706b61d3d1cdf90707057308d00bd40b3f936bd7f8a308ec899e548c0a1399f12420bc9509a8bc47040b79c3b141e2564f0994d290e30b078b2d3f0fcfb9d02480df3731d00c973b53791798b44b44864b478c829107901e665fd0fa02d1727a26d7c52c5be47453585876c1cecc7a27d5e06d58fb3376859bf58d91895a5102deea5ac619c4b38eb606224a7dd3af433cb8d95d99f6c00c0f596d41d5674807d044b3142832d04207a82d2c8e8de76253e38dcd1e9e183f35ea2b6ca134cff6f8c5350bcd4bc21e03761dac4d494c20f8c6031adf8d782d695eafd84063d8cc08d0c430f2336d4d0b7df1e4624fb6f42541fe821b9144c8cddfa2733f1a2234417a5281c1d4e767d4ad5cc7f54832f2887a5742d54a6fe08ca365f7ef2daf86073b8c128eedc66ff69d381d8d6f05486a1fe6eb8b2defd6f722f58f89f6c7e1a0efdbade7548dcf10cf24a66f706b6817aa4b6662a9892b64b9c3e5a1b28ff5714d3627962d134aced9a1031510f8f239c3fa755ccf79d79935e5340389c8198dc7f9281d72750ef240d2a467e8e92b0cefc857e8b52629001c69ca5345615928934993cc4ab1ec4c1b6811e0233bbd8f0b9ab80e1cd2da7989f3df1e8df379d78a40004e895d20d168ead4418fcd041ee8d6024724f20c604e676f93f096788a69e6f0fcc5b144f593adb991f354c90ace02af6cd698624c407afdea3826646600446ad67105fe9504a000e078ed400e69c77097705c2bdaecab39cdfe79fee2bc353b30e1a2be5156cf43a61c28ea86038298660740582b8a753955a3a5461ede0faea6a7af45b474ab26f111b169f607506f8a35a547c5172b844ac19f3dd2b0e613ac34a5a159d9667a7d8b3951123857d918ec266bca55789f56584e04ba7c0257a9ce5776da62467d347dc35567c4dde10ab7aadd4e79222c2eae51759defb7c7029c725357bcacec8f5ee4f720862ed54819742810c6a9401569992abfe7699c2ce865e346b98cd7f9a7dfa0c65e9d5a935be450575d2cc5f67e6009c0c881b9a8e8add42321d4d3c1f998dce6e254cb1842283daed14393164312c0151e6f40af3de535b6a9757a4a35c482f79593840d6e35017af5b696628eb459d8b6029a039d160b778843ee2e6d994312979c0ab62ceb8626bbdfd348da6e774157105873a245e3d07edb2a94300e3df649a6de6750c8f7c36cca1742a1e422999ad7e2de6f50bb120387ec5d8cbb888c3a388ea7d49373a3e98ab09af9f45d5cac4be640008019ca4efcb36f8adab55876f47563928d7480b5f153fe15fecba3f19957aaa59e33d6ca766141da2261d2cbd6dba54cf0c71e5d8ecaf94872ecfb9c96daee5a14ce7098f5797a472159c08dc7a4d61c7f2d50905b96138a3c9a8892ad32b1d598404187f75c1b77cfdaf69f8d454449c7e6038354c97c45bc9f22a94f61451cb9434a332b88dee068e705cd58080dcfbd215a03b9aec2f72248c38a248fa5a42750433acb16db44604a84a0f2aaa95673c4dcbfe933226a4eacb0bc4a764fe42a60cf9810b054bb6b3b3465451278d9fcb0284c79d61b49e24ac472827582d018955ad0fa4a7f8b55159012535681c6f0cab35e084e0d2540a7e6fd6b61d8f6cc8e9182c726fccb7c8c6f15e30efe5fdccbcee68ad9c5f98804dea242d03bef6eb80edcefca7a86fec5b0fc9b033bb95e68ff6f35ac6a09b496efbe16b110ed1dd6e62d9e6336f8049a1c5b5443f1ef43c7a181ee5625ad3e333ada411d5b7a64c4dc1d257ab165a80ab348f78a24c27257c224761ddb8adbaa9cc0807dc7440335b4da409ee55bcc7a6d16b9364fe163b32caa8c17a16e7269b07219b758c39e1bcbfe12dc2f01711971fa486480c63d68892a7f61a5fc8415f743e990c7f339dc19f40559e8bd419d3482b7727d1238ee095e530efcab2d43dca9e30bdf32f7f415c0c311e3f53fdef902b9a3452b762eff9f465d8a394e38beeacffb4a7fedf10a80da4b8bdbce4e24474f8833445f60cd3316459c59c9330080e4e4bc41b1d03a9cb0a3e00055730e98135615592c3f3f96eff1f83db068a9a5f8284ac4352f4ffaecaff8c5066f0d2ff63d82922759d813130f213e0fa0b2b987cae0ae76057839605be167319bf98f21abd21e29ac05bf1fcd5811b39e2d32046bcfe42be535a53c562fc76e3d732824d69253a4f11ec7cf2c6fa649f10b7acaa5d6771e059a03854021596ad34f0ac2d0ded7ecc2fcf4728fb1ae6c4a36524be3cd359322304f4a31972431357af4245dc3249a304c17b4bdc117f4d04c6f791f9be088edef968fc892287f980244e5bf443e210a555770d28dd7c6c44c07782ae0adfbf8f098709221fe6d3770c1b77b96c7f4cac56780eb6dabb26e9828cf0692b34b2af852b99c67986804531bba82604c6ecd79061aa5f5f9cba8f00582142aa381dd3710cd1a43332c6218cc4d302322695a4e1d27c7314652e0c87e51aa979a3c454d2504202a7158f46c10d4b2ce2a2a9a35a38c32ad24f0bfbc3882961d797ef113aa0ea39bcd669a655fe0e31eb8d3f82e45eed8f8cf957cd229965e2bfcbce3065990c0f9bb3c593ba2e1a45cdb699cc2782c4efc098413252019ad7b0f0856e3240c8f3e49c3c2754ea62a11777c7858f6d0ac03173c44d71ab2d680fd3909d9e12f91f2d0802b242dd001f5f50219ad8d845ac6ee163baf58f9dcec95b61bfbbadd83590aa36a6895113ee10dab4d8e030b88a2f2ef56ed75c5f0c6e86115b8569ebbbd92c5cd5ec946572f6bf9254459480634a151f4ab7751ac56c5470c8af53cbf2b6d72ecb8b0ba861548e0ad060163be399ccd56c8924ffdcc1af1c2a1c132a9a78382c053405ef30df3a7cb52939afc6e2f7029dc7c5fa4fa8fd91c7849d8c2468a89f983db1f6c0bd57bc80e10fd29c6051f666c548a3bf0c5b70b5eeb21ac5e98bbc9e4c39cc6b6417641c8f3e509fa09191de6300f5d38575c60e48b1b79920b43fd933ca5500b8f372bf3c3637e0ad0dad72a6459591ecf000fa5d912f9c9317e1254f09a772e6225861a8660411e948299622231458a5f84efaf86aa3581e67886f45e303f836e72959daa3c2fde5156dc2f68f1b889a6d35b2e08459dbbff44b558dbfbb8f20fbd87b71bbb956982ed86d715ab29ae42875854308885d3a54abbd066ca28aa48e25e9dbd747287e71f94fece8c8591a2ed79288fe832797833b9fa97a1182430c286e12e76ff12ac85bb14adbffbfebbda8f0b9d618f7d07887fad501b28168e1c06e0a8e11dccdef900d5a4e862394e944d2613428f1885a06581a551a229f2fec09c720dbd23798f5daed781187c0c6f9ef29e4dc4b5138aa5f09014efed86afae56aed4ac2f10214c519e27980ee2d497216ab0a1b0744b40028dcbf256a9b16151a54c2cc0399a5626a564cdc727c3dbed189bff4aae3bb8354f4a41db0466d7b30d7857bbf344f99551eefacc5bf1cb2837ffd8d9fe10f445d2260ae71493eaa87a5b39c31eb6ab25fe5fe6f388d67487ad866cd269244940cfcfb1613368a4f2c76f62c38b9ad0c2d058ff610c9c3c085e2df04fce2b69b9b04bb58e9a539e1f6c6396a5640f73213adbddd0bbc4c3f4fc678841d4fcadfb907f20f19cec2cef3fcb748f2cb0f9d08350df234e7b051df9dd8b46e1fcc419ffdba83588cbce287155eaac8ab6b14efb45bba344990929229bd2b0456cab79b740c4a7b293354727a3246b4d7ca56536666eddee2e570a8128f429c69483aee8a8586cdc236298d8d88685c9aa370614c3e705a12b0ada772856596a71707164b9dd0ff059ee247c527ef7c2ae617b813cf71fa421d8da05e81b2a931d27ce59186b7f88092542774b70db73f58de8fe1303f41edc48cdf8076262bb71f96fcceb01857539711fdb69a5a67673c81ca7797cc062c26cac213d27183d629dede0afee1e70dbbe627756372f149141c18c811ab249d501a4332470a6033351849f71d1b63b473ce2ce469a1425e2815f448eaaf1c76fad4efb855bfdb03b1257658751506ffb6c573651b5558a093f839004b39ca8562e89f61352922c87054d1831304dc2c419e0140a098eaa73e17d1c248efdb0da4c9f6a57f4ed9d126d639f69268876819b8d00047f05864f7d10815938fe15a0d37eef3fb4967f77643a3987273e369223b45b7b5fbd460c2239d74b0505e9bf6a28239bde42414bad300e9ca8d34caef0749ad40d07e8be09b17212324277c977c4d585527b122ab18b02d14faeb618a61a8142c96927a37e86af773c0062045ee65374b903220809a0c248325962cd0e4c88ee06febc5197b13780e6e423b78a82bc81b2892839c01035e3e0752d05bc662a88a68b1e711f1718780b41d09166fe3b4eea2b642b5e601c76aef21ca53d5510d75b95d8039b7b2569e607a2278e5cc5c65006e064c4b1315b2e25981067445f5512d04236ed044af41c3e48f22d9710382ed997a8ae46be7398319b4aff490f09795b457ef49f7a9913130ccf038f812a8d654090397a86e246e8a709657a538802ca72b0bb5a2c17b0cb4a68de5cf5dbba855b148c840894fcd6dfa18cddb72daf6decb1eee794eb03f9d80edb326fde099cfd05d1761283952549a910478d4c5015dbe27fcc8ccd2931dedf38d4cc92d2e215778b3d3484a42e33bf158e622492a0bee0d3853a3c1c92b7f21922b737bc4bbda5ea7824706e37ae8638d8cf05255d0c7ec988580cff84b342ad0493eb78d6f42233864b793406e85da4036f8b4bf711e24d1ba690ba0efcc3aa44192dccf4c20f3c73925caac8681cb35270004d5013827713362b2c822c8f09f85c5f8d898ab848a5a8ed1bda01d7b9b691a404816decb75895a81a2edf6ca7c5f56060f54064113b0404cbd6e873c597d920752686a901059f8b38b39b118ee30e78e13b3edae61f52c18b4cdf5e70cc4fdcc2e5f72535e731e8153153cacc989df1c459cfa0b7e1f8b2987093ab594622703289990d4d4d9cf46415249331513e8f31346bd7465a8439746354ea393985e31ccc3cd0829c1db34f1a566ee2bc6f92fb21fbbaec5dde83121a2925a7570e9c15351312d0d5987a6593fab4f53edcfeff50691bef19bbd5b8fd4acfd4db8fe46e242456b655b93acfc51c92ea49c68bb8926a80d700f44d90938951d0d4c8c95b18edf73846e21d83117fb9d18c7e7b48cad945af9b6c5ec8518d6de83573bafb8f72265180da2c7114320ca8637d763737b85c28f500242c70962aeaac64258ecc4b0b8d8b4f2b810d0ebc562c69ca8ee9be78430e7098949a58ad6af5e849b0b71a994625dc27d7f056a2839237ce8417e1ce26e95c88ef2ddcb3262f468ce775e51f3be4a25037aaf79cf8449fb56e8a48eaac1f88c938bda7e1bdc0ca0487c13250ad1b5b4b20b6653e6249e18ffae0b675b7c834485ac9d27accb7fcb2de1fb200287c902f1d6d96f64d909cef4289caa370595daac128a07a45b97035589c594f08c1dabea7df80ca04c0111ad20556345c0893336160a0fb34bd0a2c4047f2f38c55c2adfc15456b49af2702c1239c0700a4e71f9102050cda9cfc6e8ecf23833a86a747fee2aba2e8bc83cd5551a22bbc9b5f95f2ba6a687411ad16b69f7253f3a330052d3e67a1ec3aa0b6fa9cc805df132fb7b2456a7f78b71cd0f9c996f530c4644bf6249e1c7237c3751878b96a54f7156a74c11ae9383fe22424eefebe967c6300d3bbaba72d8518125be173aaefb9fd7c32c91fb53e28d83f3ea440ef4190c2c0695703a57d6d3ed705555c4db94dbfb8861dcae64f67889bb0f60d66eb53d263013d197964cdab575f74be2ed14643f59aef5a890fe16545a7b77724f56b1c2901679c6375942d425ae013e96db44110b943abd83e08fda18e7dd0c679b057b0b9d2410bda6a696ea16b156fcf18bafc6ca18374d6fe2a55ffd972aa3a3cc13f3c43288743459064c760815f588b8e8551fea4da7ad1451e54a26c75d1a2b301445867abb0ca276d09ed7b05fcf6910781777ca1d443829e86bb412818532d1a0bff94dd6de84635969b1ad57eedaeafd787b67a7956415ab75ff0bf9e62a82e6a35450cd77dc3c76e3b3a35f1e0c2674ec46116249e08b444154d9f96d698647b1ee29c848e385a9d133cb9e7d18a1356e72df675b1b82e22c2ef09155231896a7fc239015b2dbebf8d07fc1010c4f9631e7261b522f7776d2ad892df42e6877f2092f1d7bfb4056b65d2ab1c5aecb10db93b2bd70272cbe1cdce6179027c3a9d9a8b96fde463166c24f677f410b7afbad01e7a2566b78e503bf829cf27ba4db5ca1b71662434f1bedcf95e91cb93d83e04a04a5ae8e9d2a1a5a53b3eb7dcf09a6f05c4e20c8d6674be65bb611ff7515b19f9993dd329da125e301bea6ea07643e2a31a3a3511913660e050c76805b3a9e8e5d813776ee4da10e2829dd2898a36a28318081ecbd4b995bf576d622efd71246281e64cb31dcf7c845af5a5893ce9057c0e18d971679182f5f9a3782f974b66480641a82af2e975bc1983532262bf97fca3f7c88c7c6b383126df3486779c020cf289ebb7571d0ccd97061c325760c23591c3f706fba28e5b6cea2d33bbc1f2287ddbf1e38aa43a9f6160facbaf76e4f3e7e049075d00b88163f0e90c96bef95243f508eec2fade8dfa138b330084f800cf69ef7b6cda227b7050d9b718f80ffdc66e7b68bc363f37050b61e47d9b5064f6a7a63c7827266086dae1c3c8feea9c72b197c9d30f9425c49fbe37ecd5996d7c592a0f219e1786d36f50e539a2197352676b5dff47459cacc2f52f14cc616942b8f448cb8f163b6f4d4345c8bacb48fc46588144257f29c37c555b3fd91d6b3ce7d18bbb3cafaf32cedc6a0fa3cc2a37cf797b10683057d64b40092ea958011a932f9c16158f99112ac528116abbcf820f4ea8092cee68ffc9c409b02dc7cb31537d70ddbd7d94ae2aeb134e6d86b5db6a23f4b8c3e9367f226de9a28c2b637e984d8a34013bcb01e3a4a80d6ed3694072f746adce5202613a1150c4807104c8238d587179a9233af8f1572b923edfbca9dfab9cf6d0ba889f2922e9f86e7d53cc6e7b97331f2c6d25a980ba2cba6b82322b02b935d8f97a2a6fab02ece1ac21e295709809274d24eb6719ef2ddf899f15f4fd98fc8eb6c4db16823f61d23ac6ad1274d44a7a843c479144e44218fa7aeaf0593c5f4086812f2cb216e4d5d06c2215088c7883087c99c939484a2415bd2efce1bba400c116ad0e206408654bb27e86d25861a5b70b77af3f0d6634f63810f44862a0cccb2638449d4d16734cf69a119b623eeb36395a6f479a5f891c31887745f54e456b80cc01489ed12fa2f2d51f21be339b092c76275a89e8bb4182f687b72778dc60e89f21f674b18e39a2d579a936eca30d0b2f4ca77ca10a8f2dde10b50cb26ee0f5b655fa766a083770b0907177df6c0e1891b076a6eebfed16aab52d9cd33004516811629d5a2fc7b45e54af6ad12f600e61b1a1fffb27c9b0b3b8ffbbb6aa59db62659a0eaf54e44ab958b2c64ffeab276a7c702e7659e38b23847db5ad7bd19578ea9c22275917785dba761397f91fbe6852f03439b2729d34f452da09ba290b5282e3619fe2628ad2ed3eabb1f946a0ce1757507603714a802eee63e9db440006ca2deb1a82e41385a546ca8d1edb71c2a65762720c16908422260f11cf0e3eb1c11e71768007aabcb926b3691a5824a50428c9825872ce93d9ce094d3177d9b9bc187213b09c3918abb39d54979841f35856f82632a2f82e1d5e75a7472894c5b28bc37f80c69b9a540918972aed230307802fc1de2b55120956c8c49695c9c6511829f0579ddb18a042b5dbd1886d97ac9321cca9f71157d4f2c14cb0193b35f84d63b2e01430a018f7eebe668e4c2ddfa068d59743d59c368dace0735ec2cedd9e9b98f9461a0048565502cdde3194c6b184ad7edf0974f0e50b1f9a05cf5f571f30e5b30c85c83f0e7d477e3fa83b8de8b515182e26e56c287690b84d0f62f71a79f80d4ff023e12c388d3099fa7aff44c7dfa55320f282e882c95fd208453499576796acaf5f3609954a7ede9f8682a42fdae05cae381736ece7a803063f6be46c18dc36bd93fe7fa055930c2915a59ea41ae5d585037d64b4d8b958f11bda0550e44e935fda865a687e48a104324fba4d83fdaf38b3c2e299c6594f85f9b2390d210fc7a37dda3ea9629d3cc145e60b6179656ff1b5efb6a510e283119399430457d64fa546d07dbf389bb0b10abd221d7b2d3d29c16468cfe4468f459e68a5545725ed9b04464269454e4ea8338b3a0612b3fca33daeb1584051b6a890533a0c49933213e1cf4ece99b6ac475653238fc4ca60f14169e329cebe56932e6a3a265a7751d0a8171043f69aa3c8f638b5e74d119bcbb999bfe202e4610d4c35c476bebd963d2901f272dcec64b0d0efaf6468a5b5117c306e949a1df8cd5ddcb61138ccce1846af1e9902799c35a95d6505bf0695ebb95e3667d5dc41ad040ed5d63361ddf5063d95cc20550c1b1fe0a02ba396431171dde66a31dda293236a8d181c9716a615c0de2da768b637dd187fad119310850dbf5553d7481f57636815652f757703eb23fef345e5c1909850a6a81d3a16b9246caad001489a84349791b21371145c2f3d55e1a8ee3cb500ee46b38d82623e42f8ca1dd4d68047bb357e6fa85f9e25ccf5df626d73fdc25d7ecc65bc2db67be09a1bb77b5e0ce29aaee8ba3709023b04a274f48704e8b318f61406a955122bd24f0def23b227ec5d9a0a352b5f245822d6eb4aa37abec43bb4808771f970129e469ea1414995832b42f7a70a8bb25769e07f2eabbff31417e42be3d1df0e86d078f31dd8095ef799e048a8d447054489a0619be185541d77eb65bd1685b84b05bf63cbfa22385ec5311ce821d04aeab630a81446182e298683cd143af96d86ffdcf40501c4442a449fd717e0ee28ed96a62da794180d801726e036bc4b73f05f8e38fdd9c0ad4991035a869999d89a076f0866c6819dcd1818dced3f21b3da7a5ff58d624f10b98bebf760926a75c6e2fef28e38d9ef5908a5b32cc13e4e09bf654ab685d5bbd61bf096604fb037edf7927b7ddc3a22ac49e0013c16b63edfaad00cd99a2f34d2b76896600263b891870198dfe172e8e4b32c2e4e175f83781026bc55050affcb44b69830cab7e81090b3e01b11d4531eb092ae38fff27f6a127c72580257282d1a09afa02f9a00ec5143fd1132f8a2d7622bb1fc046ae17c8804a3d436ee12d857e23b9c89bf7f7bc85bed8dd66addbfaf4ee45192f455dbd2c8c5bb72828dfbdc91cdaec44dcecc2bc6b113ec55757861f37e2928c54fb7a5eff174e70fd04d934c7f6a2e365be6a1b3a43f0e178b90481c253c04fbd7bc3d054ad4e5c61f55921d8b4a19f7a704d5b3f4e0c45d0588f31bdc2070af0a6c07faa0b358a624dc487589c8442fcf3f60deee9341491ed964777a1f1a0e875c2b7e82471fc6caa919105674c658f00c03ebe3afa04750c035a9c4d449f116314b781d84d43a1bf0d4d3246449ce606923ffef1451b94e57292bdafd4b3952c3fa7d3888ac6e8a4b4dd2aba5ccc0cd66697ce864c17aefb8b0f79e4ac76914a8f7fa93fae92b48bcd8a0be18a3ec1f9541dbbe8bef5795400f4d0e77125f73efc1c125ad88e22a8b97579658f28d3303776cbbc1c5e879e3ff22dcabe2b6ee51476a8e409408c39003444f27d8b4739f27f72bffc72b170f5cfef36fc0e12632a75a18f7fb9cb39deea8a6ca8b0db926490161c18344c6b9e628522f81cb251c7a0d072e9830b06bda16afa6bfe815b414475006c90bba3d807039da913c3724fec4a833aa8218b52c5874dfeb4b05fb16545fbe9a3502ecd13c2a2ae98187969c8d3fd18871a89c796faae09b5cfed69aeb00ebbb736017632bc4c50e1654713d18b4711c44ca2a58752452aeb1f62f1bb0a9f6f6786ac61852e13796cd0ea98a664eac16b07a430c118a27e31fa4091b91c578dc20a8f3c4ec1f4a9485f5729c5012f4dc6caf21e5253dfb86047a58677af2cc9aa6d128b7b182825da589fddb114412fdf9c4450d6a10b7e3c9df5029b1ff83cdd78fca8e59819d7ab4ef68df222b6c541b112697498b7c860687442f7489974ace22f12a46c87bc602cd4c864c3de4e80b07f22970cb1e2063db4edc0e602c40bfd094f9da39ac92c56f1718c00134091455d04909ee97fb2985a54c6182f1059d4a0e7fbf2357efeeef4e896b5fbed8e045dc1c71a90f7eaecf55bbf6734eefad71b257cd22ac98508aa3017f6bdc98fb2e9c25ec347a14eb60894197ff15380bf61fe38fdbefce8e5488b30dc945125dd8cd7aece3e81d9ef766b8cec8635e956378e0f59c17782bbcc5eeeab28efb6a2b3a302ea0a9758204b920df0ae1c6cf3425c07690ab843a4e04eeed92f85fa2fc3695a05d8aa61dcb1a9206474309801fa12718cba2e66bc079ef9fcfda21879215babb6124f2abc662a07fc387e0a7e3099717d076dd7a4ae3b36d12774942e6f0b609a9062c7a4e2d9376b28df04499891a2e5b5721dd264a5d87c064ff00a1ecd0e3cce3a4a5ec23208acfe3734a2eaeef3deac9275162bbec3b590941a76b0b8cd6db368b77534100f8e03165197941cd7a95eb91687dd7992ac553ade5de78f50ea3750f3e8a9fddb80bd400b81bff883d1cb0fbe9c4f2188a8f1ad2c8429dd13875c52f1e79c0bbbe6b7cc36cba7064e412b58ac5304e562ee13a790325b479748f5608d19e844863b44c690a5eae257e1f09c21c4ea36f13c681e6a65cc465f5701e6c28ab6c727ea7b3a878490d426f0bcb0547b99827d0c23e468971ed282ff5c4674676a3f7acc7bf674d179479c1f342177299a829ac6ac8afa009a5a61baee7293faac708098dfff23d0f8077f6920aa0c89bd99a37fefc249e1a044acd73fb6c287d6a41cb9bb546450b554053b74cf3039cfa076b994b33a0d69ab38b1896714700dad817f8151bca21258108c60afc676303606ff7ebb194c27b69910a9793084ed62857db92c568ddb6dd89511a40000044208d0165b3f6849bb149b139194a9860991756d16da9b66aac542565a5a0cf0f01165809a5bdea36f5d24a295c0fb12ac3295aba1bd6222ac7deb886ca219c75f3260cf46e23db9a482f0fdc62086282b38d0bb90e2a4a10047f6e51910594ba730d6c89622d6b43cdcd354ead569a9313e498ffeedd826d59a4466526fb1aae02dbfe8b6fa97c6e901b9eb8a9e7cb65516e501ae18a900d144a1826160d94f29f672aae6f3c1212303e07b029bcb43e3e6bf0f6f331efd314edb8a17c61b4415ef0fcf0dc96ddd8ae88cb6cd4e09128612174420ea1b29acd06e6cc7a15311fa15f28ce4e59e4cdd70a252fe4f41d32291ad4393d0ea0c23fca6c2566cf5b8ff2a174dcdf9df447b1ecedb73baa9b6193d8c8e2d79c0bcc908fa89036052be732b2507cc1f40d601545d8e506f9791154c8bf2d4b0ec754fa28513600c12512bfa5289cf5479e37a7381125fa2f82b0f26c5f8b5c776b055c04a5b1d913f7d41e5cf9f9b76eaaf63375d94c5ef590d609c9e0c5622697c2bb3a5852ae514943c5966727322da7c9c73823c2ca1f7e75075efb124b479ea0a5391a93357823eb13b2835ca69bf0f15368990c59deb90396d14da69990a1496210bd5fc1e235f9a0e33015d2f049a8545bb7d5f2cca90359152795d1a0f1dbe6f19fa380faa547b1cd3f3458ad804792838fde19e908a0acf61619a1675487ceea1c05c0cdd45d8b6b1d143d5d9cf24901135a744abdde89f860bc2f5e776b1ac7244f210e84928266addd6a69f05f455670f4be809d470620c18c0e683b138cd2c2137bbf8047ef4479299254f3d1820ecdb558eb0ca9a28117fd3129bfd30ddd7a5ba9426138b250a379a0ead3512c78c745141a41093de72a5e2f4cd73bb214859f44744a683365acbba0b42eaeb61b46ad85bb34c61554ace4c534b33ff2fbea33473ea580e04312aefba1ff08caa933005d44d38bbc0293ec24c3ed6fc8c375eb73344af822cc3b628b35746c15d93c3d003ca730c006abc46513be1a21ee891d896ac03bef225e947a1ad0ca45700dda0de866f2686fc8141ab958b220997b008e41099ee68b828df6725ff7c544de66926b024f38719da03201c047a2623939fd20577eb4c95a64908524fd73038b101dd962be04e4ac00a58d1353b3324287990723a929058affacb64938547c0b82fe4955e59608f0740be02012339031f84944950fecbf0729493677012a19680712a7a3c99ca4c74493c145725995e2338cafc4a9bd5ee02206a5d6d5e05bc049aca1fc8010b5cb7b34d0b63687614daa8d0ee12706772b43b0d8f5468ac1a5532c6afb1f2de17cdca6646d1606f071ecc8bb1931768efdeb53e8a81ee3186ca4e6bbe8f7a6ed1b7208f09148744de7e3914c9354810148a6fb9ecacf2d77df039c36cbc9d868677393551ce80b48c0012f26da58639531a74f1112362ea5798b637533ed6ea3fd8df8898d78406cddbe194375be0f29995526fb629263e689cd5f79534e3f5eb9bc3b8f1aee9a27dc7b60658c1f98039fb40640389179a9a988a11225da397ab33f37fb6ec8b67394c93438f9ebbd0b26add8d50915b521b9c7107b011838873146462bc6e32b913ab5113935608726f2edac666cc0d8876b5f8277d4ef9e7805c3eea90b6ceb4ebdc242d8ee28ebe1b302718a6cc49c692264197cf2d30298ae4eca7d765f55640ae31d1ce25a350b213caaa09d5824d6d63631bdabcf51d6e34a584df3f6dc40f3ddfb2b68e84423b1a090b0cdbe54b2039a6d7ae4510a09aace1df0836f73d93b69ef8c2dbb11785ea3289ba1128525bfeec7db367b2ce8a4b93dcf40fc5e8dcda02f9234b1e02ca04a11a810177929f5478a0c509e0c4a9d9f89fc20dafd29d7fc687b5f0fd10a80fb30e0926b27fad1b483ddf5f880335a1bc46ca9bae953036ce40339177d52245315b9af9196ca51afe30b620220b09959136c8f0eca7d474e198a8c6c306a4e357e5d554eeb03bfe43f57423ce939bcb8b85315d0b21c4c190666949b22c85ab74b72ec970dea97e0503daac6254c779f9cd7521d897170993ddc2e7e1e08bf1fb4ceadfe44570d29b84444d3485c7df11ea0bc970c23f41562bde6c5a87f3c12923d1e730ccc4b8de7af3965e848253ca0ad40bf4ca8865dd80c7dd2040d749c4a9605a00b0e5049a6d13c9fd69b4a8805038dbfa61483eb079d264219906e997c482998881f292b04a8b6a0454e977433fa828d46092f779c4ce4b1719bb45a82516ea05ebd214ffb6e0d1bbc47f6c55c15cd7f47cf9e6f21cdb4ab5c4fe0a41da5a29eb99cbedcdd73adaff9f7edfed62b6bb064cb289a2c5033627a29cbf6fa6362d1577b2ffe10564053997a92c0ea6bda045d0c1e47c160a2630b8fc18bb9534f20b69ad555a5fdf9bb18ebbb0e2f8f2f41c8d1f90665ad57cbbad24176d6bdfa2a8bd85a03fd51c98fceb2e0d66a059ec19d857d6f7773e59261fe6980fa09b054eac65445727c8a13291666d2fb2047f6e7524b001e0f62ea566bca68c977acbc8b196b8477b3c41c216a924895952a7b2d17fae8cf3ee641a66d069b38254f368dbf9856b72e3bb66c75d55ae2c3340aa620537fa0554d6f082c3bb14491d095a44ba4b5906a3c3c280f9d827a65948926f8ac538429b65ad90e2f97f2cd0ef786682d1808ad5fcea1f6a523d279ec0b5889f026f78264f160a7a9cf956346b5a70e1508929357d168b4a04e046bfb2b7a1f9041f824d97ce3953b14a844645360b0c1149ad3b32d37b63fd5bbcfe71eb88943da21900d625d7840a02390234c88bd569cfbe17bfc56bd83c11a36b022b80078a63bb09628760bb39a9864a7711340eb2aa02daf9bd414ec6cd3cd6990006da3ec8f579c924fdec0655716f6c1ea24c285aa89011cb1364fb732b34f0913bb661b9cc3b319fcd2809240dc727ff19ed5c01d65945a68d8bd780055c00c17503e7cc500ffd1e0b8acf6a514f50e1841c1c5338d1e0018ad385cb1d80aef3372d2c65ca3810381d8ee2d2de3dce91c83ff112b5f49e98b0a612c221e98b93ab4fbe4fc978c851daadc0f8508948ef1bf80320896b9b7b43b2113614130f91ec3a4410fc24f826b60fa3260c2446c0ec8592e5fad7f47c0e899f904b484f63889a07241a855de5df8d1bf0d2b158bfef3a3415fe5caf0d15704e21a4ce82255c43ee00f91b265b459c36db76d04a74cb0b0567ab9547c836ae01b0cb5d9e9b0aea8f2bad7a7c215988751e70fa43bef63ca0afc69c4a027bbeae75d915f9bbcc32c6db2afaa9788c21c783ce974d59010f2a28f23adba27a440bf33d48f925505b546092a2fce9a0c62f9ec34aa9a4892e2b5f5f9c15f76a995788a45b522d0d6e8b12b219d4529dab182173605204e7fd9b129af5c9e628da9551c22ec0d8566b8e877ec079a216a636ac29190eb001595951a291d8d766729ad3fb8787a5d9527803861cba22271817a3bf8ab187eb5794ab7b4c0c66de5f204a5d2c83daea5ec836a3a49063ac839530d8740b190ab261f533d5d3395e71c2b5b6e3e40707bf7ba7950add68ed896c369086d7616855b45cf8a334ba5cefa344ca7fd99a71b3a391a7a9d6223cd23160d3dad3c2a33e5f9577186d488520803f8746317ab7003ede6ee51d289f92712d06c40b17ff00a280d4a8bed45baec66aed2bd80d1eb8565d846fe6e88d40d5aa38fd99f3fc761f56fac34a438d71fbb0dc4c18fcd968c4bac33004b87df7c7b3aef6c5ef42f6e4e66fe43b30e2c9606a61f84df25bd30b5ff1d37f474e4cec374150cb6bb1d798aae745d24c6b696b19a1f0e7164e9563fceda9a8d961119524a62e0043e9b56325d3bfa92c6bcb0f0db191fef928e33ab19f67f186f45a07287cfcdd677ba51ae7c5d93503a42a01f64225969d0ddc99fdf20dc752b3829677fe02486e86b59fcb010276283bab019cfe828db5633d2c93fe95720faa362b12ac149a40b5a0a1e905931f101b4fecb944893f44611cb9ce086585333e17731cc84601688a88b6f5ec7d33acd8a955611f88f7238cd44c48af0415a3634a0739d8be17c7d4a185c4bd54e00e652a7f83d8983c3b5960d87a2f49810ca2cddf950067d4728ed135ea617e3d10ed2b71d625fc48580d27ecc8aa7bafe1e04606d2d2bf99b8fa7c51d3ae0bf4878ac656f9f9ef0c9fa4c4f6a573685dd92c46d6161ed7b72fc7da9a90425fded594a925642eb8d59de03e78c122d3278603bf741a59351961348d1629daeb2a6a4f28158d824059b33d9ef28f65af27eb50cdd7bd5f1b08d0f364f8985f8925d6aa1aafc1faa0f29aab01614671461efab887622ec4d1323c44a44db60218ce7fb4a5a1d1a78e9e4e1f1381e1ddb41321210659b4a0d9363c42d15ca0f991861d1f05cc4850c3187bc5d4146087137a8373dbdae7d264c7bde28a4c4ed4b76201ae9afa5c4971ec47a19a0f0f6228a5ab11671f80dd28c0153dac77c191ad4076de0f57a2b311502a39020e780a4a49c85c3b33125e0317fc387d2682bf432266a29acf442e9c136b3d5f4e0fead1602bad71bfb9fd3271c38ea09b98d9d7f1b084aa677a8d17054e7b36727f8317ab0e2326747ea7f4e6fe35a1c3e8b50a924f81d794f52940ed2e30782bd065a18d4049e2ecd0ef07928b10e43638a440760a9b79b4015f96582418638dc78468aefb11858099434009a03bc5bf868a340f5ba3dfe6c6aa89a3954c34cc94304b46f43f41d88c130ac8ca4cb9a367a89d326bc1901a946041b018bdd7459b62cec2c886240db30b0a0f582dc9342dbcf2fb0a298bd18f8b4c9f0d60fb80e4b4cdb116629124d9a9f0d8c988fa9964ec11a5f667531fff91a042f59d06757c18d37e654c778fdc0a1068094809897d90c666b5dd56e7316cd4baa2db495f6e1450807361e0263ea52c21a70a4f90a62b313e9e7045988ab92a243e29005c6de8b1d6f13a820b49246275b3491b562ab512e877baae54968df70c0e4ad84bb6a34b0fb214414151c30a5846e99ec9117444415be8ebad6869ff38b94d2eb58cc2caa5cf86c5f296114cd4997508c28d256852f3a12696f38cce418703423efd4c849247a2ac6522d3fbd7b0cc42ef8f01dbf6e7aa82ea48f5167d96bbdec27850b3426cb6420824b378e79d3588499a54e72076a193294736ab720aff135f33a948281159d551bcb4ae129372332c14d44fa012a8c254e5c509811a9036db56fccfab24654747519dc493b734eba5e57ac3c3248d56c4841c63324aa3f42b571e811ac9c8571c9457f7909e57ac4fba1b71eda33074085668d5172e71155b2eae7bdc13f604ac413d124d97b25d9524a29539232d204d504e3041a0d59b90a348d6e07f93cd8bc030f384217fc6db446c3b599510ee6ca55a0b3fc4b33d768f02cff46efe85bcdb5d3c1b37cca45e87283c6fe713fa468bb83cd602b3552160303c9f0eb0d0deaab0c1f9bc19fad744a6bef069b70214b8cac9845eef7f8ea6ee57e5a4595b57ac75ab12db2dce36989dc3f6d9ad61fb106c3b678a214ba228edc6f6309e381f3cab02d070ee71b01c9fdd9aab5024056a7005862ec1d31c6b651278b813b1a690799fb3da016e146fa0349240989772421c1363882ae53644d015f12e8926696936d2b6ffba659dd72bd5cc64ba7d3e9743a9d7210b9bcd6b340372337398d9fbcc6513e93e1573aa58f46a3d16834822db29b655b86453e95c69e700d08f5365e4ad4abd6e9743a9d4ea71c46ded23f1a8d46a311ab5bae97cb78894ed9a3d168341a8d3c22d9272b01d1d872bd5aa64b6dca2693c96432994ea7d3e9743ae5d0a7ae6954db74aa57539e4ea7d3e91473802ee8822ee882ae1293acc5c9acb1286c034afdcabb5945162bb24ea7d3e97472bd5aa64b3dd326e9dde9743a9d4ea7d0494a2661a24c2c5593c96432994cd1620c02fd7b11156d622aaee24d8691e56d32994c26538cacc88aacc88a2c98a292398cc8e5b59e05ba49f5aa4dded26f310681fe3d4f6465700934f3268f063e8cabd5ea4dd6b60964922637ad649d29e0cfa0bf340c7cab5decf3440ee17f9095e17fb025e1432f795e1665fb97cb7c066310e8dff344f9f312840f4b9b1338fee7258b6df47dfa0b06e3ae4506cc5c28c23606a61fb3f6ba08eb2d8dfb3f99a5bfb2941cb63ec0f2b3f63a48b6ff7d6664b976b2d45edb52ee09f82bf7e396ddfe727f492be32e850b59be1156f6bf3130952617ed39bc404b9a90a01fb998a8916427e2bcf65c87e72dfed25d4a09459824f2f7167c19798b3fc97feefabc265f96e08be7e5cb19f822f2b2210c7206d10508637bf916c2c02f3f83303a2f1fc397f9527e842f8cbcecbe1869721de098ab77a291bfc81a6f7192eeb39feec3f91b656df4c9d514d95fce20c26061105da09cbcf7ce1db8f38fccc16a9635d6e27c65cdfd0fb4cad97f72755ddeb2753998d1235d1f814568a8b5070f07614bed341a36d3d78c2c1b41399ae5aad3695dd7e45ecb0142e1f81f68ce0f9e1ecd665613191919e16494f33cb94e6bd530bcd5de0d4670d63af0674fda75d9005f97e32095bfeb3a657fac290083b92e6ff1bfae1be4be3ed74592c5c0db9368a4187f65fc241a09c7eeb351caf195e57711586e1fb9187fe5ce438dd4b1c9f63fb952000633bb4ecb5bfc65741381b98e13daf3ef701d577bfe241a69eb3aad1be0f8b744b31b7dede58d5c5f3ee52074d1ac46aa9d6c4f7a765dd9ff725f2795fd39dc0ed2bf4eabdf6a3358170d6302d2e489a2cc50932fbb1cf3a196a3f430b3f3419a60863891dd04a429cbf6e048dfb822a91b3518f007ca1f25843a48170171235cb9803e62102fd09820620abaa3bb6da0f000902ab060c33650c3081610c10a1f21b8c2891e49ac782871050f10c1881d3608421019a86026f503c813d50342955b0a01814c41832c54c0811d3e3ac003081e4b08d104fa04e6d07f872977f7eeeedab593e18d007777774700026448c0f604ed79049cc48e398205b8201503249e1022c4153d68418e4f86364076e0412206d3e278000f254e59702d2184114c94008915703a80fdd0dd276e152a0cadeccec588728c2cb8836000477ca7a283e4fed87095638d84aba6da0cb27e0510bd40e144d836860abaf1de0b677b1c8e5f9ce52d42d7342d06993b1d8bb1468ac1f19b091c5f8677c7debe1b5946173a1a0d9b3f1f72ecb0c7bb39c01f08bb20e9708021438688bca37b34520c74e5f81e8d14637bd3012c39f667a34308635866175f46c76011cf48e43e22fc1921f99444ce448ba1b3095d46321c7c464834528672042e89b0494a34524c96e397f090c137d14831a01cdf4423c54e021f28c3e66240a016218d7482e28d1251a0c046a0f0f7e95c1d1807f8cb2a9d2adf8d4cabc53837d34c36938e8989898909f6989898888c7ca63431e9b8b2cd08b2427777c7170d2e64f9645ca91604fad7406cffa1929219709992923272a264d18521939e2c91055a6b0af00abdb0188783d98a856a5b6459608b9d5ebc402e2c86fd7bde15308e098b1530e76670899248449441eef802ce7f3105f7bf288257ee6fd70f97d32d9048341ae52adc4c0a929b9b57a6d1b8787d58accd40a07f2a681b9091d54ac88b3816f83d3259100cdb7bf835c2f4e02d5760d89e476424930dc3b70f6e6f0a18e2918ff691c28724eb562682ec2229811efd9a80b028805a58d8b2d11e145a842aca1342d1e58413946ef94bed7a80d104f842a902c4cad08509292a3259e93383c242ea01ba2c01c7bf2a2b2dbcf22c19fe2ba2e08f0581acf88681823fd94b0f36faa53ff8aaffb2d676a0dcadf694d0ad5f514941593909adb4585959019994907c4644563cb8b3692bd9e5602b2bb6d29595b912818dfe4b99d99c10a44c84ee432977642226babb478fbe847b9cf1b9765d5202c7ef52f68eeedef1155f52c681705b649872028aff957c6080d1854f24f77f9d0cff13c950cbfd1f27c39bfb42186474a11f4297fecf2b14008cdeb765e87d240280d08bddd722f7b7b7a53ee4a9d187f53f996df7f977bc91e747f9b29338881c0557bec032432dbe8c861d0f9de3ebe0436cb890e562dc938706e113e0e9d0abb583d24696afc3274b6f1b3cbb0a74969dfc6c7fe04a08adcc62ec8ef118189362e4479a9090260cfa577f17f18a715277b0fb2d0fdc2fc3e33717bb08fc613aa565226a24f8d2e4d244837b3bada375b48ed6c7d4caf22d8f16c61804fab8dc02611e60fcb182bb3789f8696150ab95d9ea12724ffc613e99916386ddc1ce508b3017b27cb726f75f50e6703e65bea15b9a46c9d1ebbaa92f5629376cd556e708d781ed3f07e3647039462369ad46f2c732f8d000a587b1ff65abd5aa661b3a47602f44a21c03cfc73492bfd548399ccb613fc381e35bee061ce4d3f79f9c870558cebf9c5983a453cace85d75e7b9c5b2f9434b595bbb6bca55b597663e01bdaebc7b41a62d7804e7236ac70fc4e360ccf3c59c6c1b28dfeada1add5e0427f1982bebd41ce0b10c0e70dd16216c81d618bbb6c4069081d4619072fdf80b17fa14663be0e7148969de57eb01fc4103a8c32f67100df8dec31dcc81446729f0f529b61246a3538cddc667408a7ee5ee756bb0a34a53ef40ddaf206f7c6c090fb244aeecc736133c8711ce4582f97cbf80fac2a6efa64834afde853cba0695c5d6a999e6911b882b450abd48d14a81db126ca44539c8934f1055126fef08a29c88237eead0c9df023c39fb18b31c6d87def2ecaf045862f23ce305ae8025fa4e3461d7c481634c421b37dc81c8d5ce7052a17a1e7df0171bae081dd22cb5adb9b10fc8d36219b106c13826d42b04d08b609c136215807884d08d60102eb00319de52b91c9dd117e728667f9a1f99fc7c02e457bedaca9037fce72ce6fdaf3defca9d3187790f9f39b5ae32fb7d41ae9967e50821948de2e8edc2f52b3b1443a3fe0f89f484d84bdc1d81bfdce4d44ad69af6f2d350c1cfde252744b7ffb4d7bed370d7ba3df2532138a4ea6ae7aa8a9ab22d45514d8ba842ea50ce1208566341a3454822efe52b32124e32d2535ed7914187ba8959c0220bfdacc003dffafeec8f2ab1110860c15055f50790957a78cf29f9c01c07f5206be38cb5b4cf0857bf99206be742fdf5df065e5e5fb0bbefc4bcf02ae53a4bc7ccb52575254960c0da3ba668030ea15d00b40e72c7fb900e89c85c2ca97260bd9bf4e1161e804115d90227f9d920a97d23a09bd5659795b7132a19a2b6ff257d2f9c9a9a02e4dc350b189332d5ab4081131433544982c5d1f813b1a6ab63d701c842d1a0d9b6589a329a061544a43a079a5c2a99454664848bee4bffa72b55236262626ff59fc9fcda087fe12023dd466746ee1822fa07c9d52c9c95f56f07f9dd2d548d9fc609c6932ab70292ee8e25f59fe92f2aa57781679ffea12f991ffeaeb66b5c2854a35b724bd83a35352417dfe5341953a251421e0afe49427d7427792f22dfc7cca795ee142256ff157d9d12d299d0aea06774a1d1cfd1222a25b3c5413842d0afc856a5450405041a5bce00b289fc8876afc65da64cf7f222a281514cad568c84c3b3170091125280fc4be95d45c4f16037b6a3e592a65d9830d3729c8120afcd9a0c952c6c852961fbb1219b4e72544b4e725a7f6dcb232f6dfa5293979cbd729bdb2ff2df98b0aea963c5f9ac99cefb810c7856ebcc5ffb9900a4a761ff6ac74a11a20f1860a07a14beda48d140e42af95bf92539ed13954f344a8864e6b37fa282827dce739d47d294bc8fe2db82f64cafe20eef39509f78556d9bf84fb42afec4fc27d2a4264ff0ff7d911ee0bb1b2bf08f7a54821fb7b54509fed94b2ffc67da19becaf719fdb649726fbdf504da85572c2f92b39d59527aaabbaea64e68d162b2e8fc2a170204f00e1072b1f38a1fad1840fe9b2833d3d70ca13230fdc03263a2ea1040f9288d1660748e860470ee6bf8da5b5ba3bedbad4de0f2cf6ae949ac007c62d106e027face0dc470bdf4caf8ff8696150a5b4470e6672ff7579573795555ba99411a9944c2a959a54a656caf140b2568d2431904824126191119673896d8692dc0bef44edf5639c9a9249a5529c2b9211a56452a9d4cd66361289daa3d1b60e9e2f9de3010248e95d842d52ba4f29b13907e02fa5f4c9c12c2536a794d27dced941e822df877883ba840112d908f6689d4d24cb9a00022965842e5346e8cde992ce39dd5f4a4ae74fdf814aa552a9542a954aa552a9542a954aa552a9542a954aa552a9542a954aa552cd28a3779203b45629dd3d862cd34e967ed07a65a5b407eafa00c218efcc3c2f1bc11eadb38964ef659cc8099c652398c5304c2375b46dc3ecc52c87c3e1dccea6752a11187b13f17c1410e13074c13978380b5b32f9b1fb7ac0326a3fb6ebaa5ab7a5b6267cf44875b68e46d2786c3e7a6cd8e3f168a48eb66d3c341e1eea034bd803c7f7a43a9bc643fb118d34a2913adab6d55467d3787c62cc3ad9c9cbc16c953ef40dcecc859dd8f01bba78166147108db03f52662eda833f35520c4b8e3f3552ec5cbc4011bd0d36720cf465f40702df671028534a6977ed37d46858c938585b391e66a6947636c65bb73ee46cc0c0fea30fbb4f46f850a3c1330ef01be378e80c614765c3f8357606bc17ec3ffb554a5b330ef6a1b4d6765f8c72c619a9d01f68761f7c4a21ec5a761f28774cdd1dd997e0beafb4d62ed6afcbb056183fce85fb27a594ce4f664abf464a3bd9c125240aae0cd91f42ee1b65085f383fdfc217ec67f7d9af16e36039707e9ddf33ceaf9d9c33426963464e02cff3a27b39466b6ba7fd67b7ff7096ef1d6ee3340e7a4be65eae95c3fd041c73852df741ee9e81f2bd1f5f6a346cbeddc81db6703ab78f756e5fce88b901d0c5bf93c0f1e14df6f6b2a4b7a984127a5e8e322da50dac68f1c00a6fddd2aa546ab55a29247c544a9d08e283aa794436dc19a975093da0b546c15d316899767206ba5c256630a852da430739a60e6c3bc6d84660500e8bc27eba4ce9969345b734e715b36c244c29b140532ba59452fb523aa5d4be5bdb3594402dae94f6e8411198b0618161816181611104b530daafb63a7d9869943431d3ae37700c3474913742d959368cdac5186312e6f754010bc68e31521a638cf62485e539951594164e4e4e4e58eea764a11699c6bdca0a6753590181405423a158d1826da105aa914e4e387a72f2d42a014bf97c48b85f51292929e9989850716255de3b188d18d604e78331878a9be2f18870afb28252458f117a42e1a522ebba1394ef54509290519155d1e3a483b3932ca362eb641d05ae7f238eb0d3a1d4628cfb150e073f5441824ce12474397979d27d365064dca8e89c9c845a804c4a483e23221edcd9b4ec62f306e8034c300105cb08b7738bc00d458cb2dbca4c7a777777f7e7b1eb22b0ad592d42fc96320d05be45603a5353ae2019fa2bc3160451535dd5956ba6a65c5170ed200ada0c1066665c2ed7d6590cccd29ed75eebc0f3a1f637fed2307ee32ff739effeb9dfe605512e2ec27038cecb5694297745dd1954cd9cd7111c84e170d673401c1e616f965a0a693f0bf743fd201ea67643f8b746c2fced4f7fdb4149b990c705d81f66f9ed520648c3bbd969a02b533bcecb5b9af3cafdbe4d4953702fec28f087638cf79331c6d831da30396c0ddc1b03fb431a439d4f29a574524a27fdcf632474ad4684a17408be02b64fe3905c437deca1763bcf0bf0c90cf5b1c73a11e0c8f4658d08c3e91a0dc371afe1309cbf32ab9c94b28684e1fc9c73d698309cbf34ab1ca594d21a1486f3b76695abb5d65a6b5418ce5f9b55aed2b889b69a456bfaf4724d9b889aa5bcca94beed7016f0274d99625a0d0bc3f9cb81b15d4e5aedf6ddc8c19133997ea5b53ba1817dfd18b0ee86fe8d0cb5fa323a6a35605f6529d3afdd37fbbbc02bc7c8525bbf36a091a5586ba51f69cb6e7729e398f416c85b5abedff8cb7cd97d31b2c403c70cbadd6739dd87eb37ccecaa6b082667e54f9a64a965b72cb92ce18086ce2110427863834afd98ed725229a3cb496b6bca4969b5764e5a2d16dbe5a4d5629c88bdf879f1a9d664b19ac8d99102561536a8d40f5790166a9542edb89102b5e385262eec76c9b0623b9434b64b38697539638adeb0d8979c14566cd20a2d67d26a31ee13b1d80cfa892339a80cffde0c729f9b32fcccd54aa16e50af94eca8544d190535654864040000004317000020100c0ac5d220c9015df401148010647a46644c3a95ca62a118856124855118c520020c000020420032ca2031d60008326d8ba53d58034181360d665dffbba9f25becb87e1d556c89d54be878023dd5920322d11b9f4b64a198e87ab9330f1711daa381b392f6ace7bd1f83e06c3ebe9739a310e1e61f24ace3f1ced8658413510e783081fe3641eb61cd4de83c75e5e516a559906c6e5a5a754a33f5b5d1ce70fac0d38823b144fedd3528d422f37ef9c58943dde353433166c5feb0a084652e0c3ae55df56f8be1d2020ad837553f2df5e23dd0676fc423cf5cd5c0cdcf4274c9d33772e78717fd1a3409aee8a88c1ac3d9155491b3d8d17b1ca27f4b08c0dab4472bba223af072755488252aabefece091a49f9da3c6e14233a46c1001320387c8d4608c2e0c4ca004d8e71f4df53f93d9561495575eab2f361e9bb71374cb449f6d96d8aa894a43f4795daf6f9a28727cfab8310ac77daeb3e3f7ae90a2d41b9734d2f08d410826984598297c14103733fbf1dec6fcb1225a51a02278aab449e00f675b20bd564c6c3b2378ec4ed6de4cd98dee40c9c6db2ff8222c40dbfcef5bd1b072b8dab38e145975887c7e9cd9776490808c4ab5152319552c3cd04958091dc00125e54bf2ecfdb03ab467bf9c9f78f602e18be07ccf8854d3c49aa95c76af8d0536edc4f215d7de358e0a47e65c1382efcd229facee8a584754c8ff9f0da9fa969ea275af9037c463b521149b84edd61a42dcff42e1a2d4d01d33c175dd3ffc200985352fa808e8b18030ee0d738c6db18126763f22a180b162eec3c6127117ecd1a3669663e0da5058a91ff95e2c8d9102976f5d704ebffedcd17e5e7c727e31c88809019c96c7f68ad298509c86f0198a72dae5c3ace33203c55603d2749ff512074ab2f5807569b14075ed999375c47e056840a88ac11edea5f5e526c39bdbc6daa106c820aa18bd7df2e54d02e728ebbc834daa46290f36990f7dfb0cdc841a393de10a401c0a8eaec2bf6cda29f0f06ead1476bd2d066fed725e439f0a442999ce8faebf3a66faac42282c4d600f3ccb2800d284d870dc8aec5a99dc85cf66f5ea6bc5164c9aef30f448d600a3e26cdd680145d6c6c630ca9460d00e866230357a85a610e9481972e2f8a089b61cc1feeb132e8cab027f2f7f8805618fb616e09e5b58cfcafa08bb022874a63e08b5a01241d270ade7ad012070624c416bc10b47b5ca5d7f7ac6f318c69676ede7f2cb873b659b80f4da14ff74e74c5a70524c816ed2f3292a5b2f5e129aa123dcda9de94b41469f276ecdd4b7a016028d6acb1c6b4dd567f9dc5c2d44f1a1f9d532c98b354a1f745783f04b5d6b01dec889b16ca82cf05942ad4d6ecd2fd55ad8483e6bc36699e1f64a8964fad1f2a9b06588642ea6018c9256bab5397da6ca845acbd2249ff9d6fe4533b76eee4d8ad4656fd1c3d86f27321f9c11be54d38fdd2efdd8733c60bd13d6bf556b9b947f745c109279fad0d01fe5620db4f56cf47dc762dae9c4b6c079f19026e53f7aa64bbd3ef336d37dd1f47f299c3edc52cbff41c4a11fecf4e299fb4e971a9963f2e6d72bdf1eff0600bca97ce7ede250c65310e005a205b70c2e50bf0b18822109537d822214d301c09d01f38b4a33b541f92b5217d11943418dd7b11587f19b3900d0221ed7ff8ba2ae39debdf5c261be37a8f7f2e6e270c6c9bb409dc6ab713710f70bf1d9abc1ff0bc70b6e335c79f7766484d03a06dc37c53bbf2c1ebe788eb2d5534fa3d3cbf93699fea05c3974df03b763e6a972486fb2d2c149c7701ed01a531ed3c1a8831ff3dd4066ebdb719039006dabd9e20e0732b45a020f2e6472a571040c020a9f74ca2210b7c8c4f3280021e5aa412253020e2a6559dfcc2123be98ad14134dea4301503a644c384fe33999a1541f2c0a21337217da9b806babce389a99d040934c0b436fe732b4605c11fd940ccb4b2a6732a5524080f221c9cfb6511d569b43b7035924adfa619995d728323549677581a5f269224b2583c35f3d5c3111e7a78295a8b365cd2b75bb3ee132291662e59c28234c9b325a87823be5e7aec896f9c2ff574486eefb32bebf261aabe56c87a6b56bc4a2e7deb4c940702aa2afccecb6669f7fa28e746193f9ba27a03643dac9b0db72cc4cac519e14dcdb189fbfcf2e1610cb15b271d499823c3d0294f956529b39e606e2a74b32706d8f30a75f31949b4c04bfc26ca7d790d5a01565880d70cc90eceff0600998f84b6532453f407b9417b8a9ad80e3f85346302430b51a5e660d55a6f425160402cd6f53a6369d6f17c7c65e1244c4964b5b5410eeab249152666ae4b987266dad4cad1587355f99f158be25ec6d444e758de138680443836f723c72b8bdc112005946b288166703a817feec65a80beac18c1ca03e651f4de9570715bdf568f9ba895badd63aa5b2fc4e60848443f88ea1d323d05f0166eb6c89565167dbe4964e23d0a784a04d1251d11bf4b5bd5d3fcd0db8f2ba0cf81ff35f33ceb663b342da3052bdfccc4672c3db4ec2989baec26be7728c419f11ba0c530807eb3287ba7488c4dc0d7929d6965d340d6aa8d13b6083c213cc206c3de4b259a48c1804c2e8e75db4bf7bf2672140921fec793810c90f499155235d6092d8ea2e41ce5e330f04bf7f9c792c1cfdee02ea0cacb35f6298a03ee716aa1f7823739322a956e9fd3bf1697163a7827fee9c8cdfcbad41e6147ea235c0f0a470f9bbdaae9e1d9731c5dae18afecf83a20a89e7388a8f7e5b72345e2062bc7ee9cf0d260f826caac897d5a612875f78fe8097ac8bc802f24a42efeddf72fb60ef83d6f2449a9aeda8262cc39ae136c950c9dc57157d35dd55177bbe7bed897799299cd5b60701ddd74853cfa3e52fa098c0562b22240f2e3c06a8cf6a4496a195bbaec109e3f2408607485a2523a50e3c150c56dad2fd9245425159599a78260f6d2dd96443dbc60784a8848bc8a26b84f3b7447aa2377803616b71ad6601c29ecd9981076a532e672faf10b50e812706c5971515fa35eb79aefa9a7a246bf6ea70bc5d838085ae8d1707e089eccf9cb186878fe70bcb4ca91c0e7d3d0ab52dad4bf95c34384ebcf38883c02e4e83373dbf4529853bce64375ee6a5a12302fbd61885a3d3e9d73f1d2603095cb318823704d235c3a46f00a82229426385df9869a827158db6a6ec4a8c51f5e151ca388a4ab46af72d5090e592b477f1152a87768ca3e514abd31b742badd35d0a34931af391ed485034a1778a03bf60f7119a70806556f8ab9bb88beb7e56b030c7a8dbd48152916fbb632f707594273e63a62cb29f16739ea57224f0eab45c9e3cdfcde4620466505ce0f55a028c8884dc75ee39d192da5fac73a00e863060782d014624d4a1034e0c335e4b801109750c7003be81328a9ed93fee825a68aec612a26deb881c74ee3253fda1d1d200f1b7c5387add50f14af56463370c116f95a73835f71a6f256d388b6b9e454bca28fe48ec9ba40ae0dfc026c92cc60958022884816c17ded5444c02a1ce25b7e3962e8d5d07b9a672ec0c34383f492b0dc94ca778f3876b6943871a6f44eccdefe07d2162c8f11e4580c1e42504bcdfee531fb69d8626e320430fec8c94d00e3479f23dc9d32b149b70ef475448aa2354b71959a538943e9858c747270e36d4b89f2c3c73d0f97e1668a8cc796f212d3d38bb839db087f8371fd514c04e99796afdf2e9d8d67a3ca76fe9023a29efd8e0bae291c2a83827da5933b5a21d8c44e750424d62a7efc21a69f06d43a83fb99271e70c0afd385dfffe3b0b249b215a383bda7c317d54b577a519a228b1f3da3300494627bc7928601ba1d5fc70d5d3db59c371ac905260b67fed8f07e66594c83d0d1521187a9756917842ffc044c8d375156fabda55956c8845f5aae59e3d3a4b3da4aabee60fe2857b715e9e63fe87c01f4dd039c9d4590d85f42cfabfce5110f1a46c913ca9dfc4b73d3e7e1bfa48d008ff341141cd1706b87e4584279711f53d3e8877f48f73b2beba9bf9d7f337c6449940df4ee36f6afecd1b123fd252c181f3a7583d7e0741a7e3147277377e9aa50d3f8168fc8551c1c2567e2d7039bd21f7ceb2d6490067bdb92531a0383845602046a7c3b96ce2a74351b42616e0b4d54170a1f05a5b28b4c68126c24923a38d5b70f02e1ca50737e08613614400d58d89c2c2f6bfa2d8697f4786d8dbfa0133f58ae0a7380a54527dcc5f5e6f93722583a8825591137dd17bf2c70bfd2bf6f2e2886b95de0932045c23f35cf27c59032a91c3ed1cb40648730735cccb853ee5b2cb382c0b8051b8886bc0cc0f5d468dbeeecfc4ee9cc6cf6eff8bc0062c457e43b400206ccd7f2d36a0956cf68f251b904bfd3db2e4585ba34e2a27f46315efd919fa44d443aa9fa7dd03dc7e0f4598da68260b40bddc98df063dc90dfb3e543340d0cc6707e65705026ffdad8c34c07b422f836f65869db641d31b505c62964467dfa66531b5c1a29ab83d31f682d77dbc0ba384f979c3b57236d52dadcbad8af655756757e42f37d0139d34d0f8de31efc2b8f4589f395b7c8200e594a37a6e4b670778f84d34b3fb96e596206f4316329fcc7c68614dfff090b0e67834c9ab379a165d9c54b573013a66b9dc59becd277bf95b65e9132ba02b5eceefa5691961e58a38be297be78f3abc2bbd971565e9843877680ecc24adb08a8ec6e82aa6737a2c64d6b0156b74c4d7845dc5ca9c924eeb894f3b5dc82c8cfb728e3178e06dba5798ea30b241913fc53f6af4cc07f1e60b7cc09f1b2989ddf71ba971df341ad7c677ebae1d81a817c4256a1c5123fc8b5a1b3beae49923a9ed6ae455eae5a2af9d4a0d535b489bda86fc7aea49d551a51faa036e526d7326967f8939d3159e08c0675725c9585733dcbd3a3607d6c8c5652a51b6638dd0299e94b591d7ac85f7d0b88aae9d47eca0a64f4363ea4385d6026a5a5323d77088b5e6a3b1b527026acd96fa3ab9f28112bcad4d545b0d4943b58d5cc7d6d0586dc39df3ae9917ac6da59b90a85ad1da960e1040347ec0b59d70baceb69793bef43a6b76cd1cf25f5f44cb359776d82c0c65300f025f205a70cfe006eabb8021189630d7278811ab941d90b24137f0d985d2ec9be0ec0bd30ba80ce0a0e617b00ac318660e0255424de30af2983749df14dff965f130e31bd4ff02666128c3ec7d304ce074354767acc77b8bb1fc94a0ef75e30beed91f79fb31165521b0bf5a01ebcdee1da1174a6e6c8caa8a599ca5c9430cbdee369db49bf85e79866fc021cfcfc88bd5c315ecc079167b6dd7f97df4a369d5ee00808f4abb6debc9dd1f2ecd8d490c4891f40f55e62f510195d2a4f8728884b21b9ad1321cff34e98af4c28a92142b8a5ae319f0b4d7eca659c147b6e4e48c1b3caf94b92be92b7749ded828ed18adbd87e7225b58c5fbf0a13ae2633dc769c04b0ec3f5ad0fad5fb18da10a4d6a2f6a38a61c92ed4418b65053f67fe47106caf20117f726ec2f316bb1d70e83ec7f7baef5890eb906d28efbce5caf43a5b8de977a121f8a8f2658ff135567fa1d115d4c4e03d5031e87d481e054eb9ecf4f2ee6a6d530ff7d852e9f77fc4279b2b656285cdd079372baccbe7f3db3bde9629273b99cb0e6dd44f3a83b5de6f4340d50ac08565e8db56393613e0796454a69a598c75c4f2ed824e95d21ed8327b0afe502101bee9769285a59ad70de089a6cd5ebdf2ce484c416b8667ac2cee63b5ed7ba04ee17ad5e2b62e44658d554b88b23140a68a8de72c8472740789da27570323b5b89d585b2ed335c52131eeb6fb4230e3695fcef9a9809c6263fd3d03aff494acf4d0a50521820b228eba53b6119bf0755bcf77f8e2fa34bbddbdbec0814f6ea27351bafefba7b506f0fa1d75a98f5657d19b6b8f55ade4ad55424df82d8f46411e900e511f2125081ab03be964a8b64bc589781ab89b570cd3cfb81820222ebbad6765ffb6de7c0a1edea64e156d7ea9d3a128088afd9094807994f931d11a4b0a1bc519458be945e8dc2b13bee8d4be5ea9404f11227a18d73b2b460ad86cce51f26d5dca2634bc515e834220c69844a2eb35dbcd79d15f4ae4243ff71cf075d77f54e2785138733629e16d63b5a6265c40e040e901068405d0a0cb2b6fa963bf2c0be9700d0eed2d37651cd66e32a22e256c04c824919d578fb51091eb1e5f1994234ae17e9f277f334d9d1405de132ffb916391677c5ff33066f2334f88aa019fda71959d3fa3179697ea615ede0026b6b9436418ddc708cc8aaad016dc4d7e3a4600498eb9ee50b2042cd328c7e57f8aa4aa5b0061b02431cc39b164bb07f142f3813c5f9246f675c99a90ca17623da7485be4f5c34373f62300d778f730b9b15aaf8116aac350b67010b616ebfa9b87fb5ed0a6fa11929387a1e6ed4708724a2a8c107684bfe941b555bb10544f466cc07403b10f4f0d20eec05123ea26eb84357129b4b8b5ebc64ac64653132ca762625e4550e65dca4d8b8ebdd6d9dcd1cc999f1812a807fc503ebfd9e86eef2c73f8c00d29af7575d924755bd175425abf9e0fbd891eca785d6ba80b9bc1a81b51acc3cc9f93bcc4adb87e2518432e805e6d627e211f3b6c9c3ed807a889725e6299798fd202486d5de8e98f9e3c5bb10657a1ae0fbac80fc06eea3ea6d566ac38d3fb11a6f7827068abb9fd88d483ff2221cc670d7e8d0f722dc2a965402f00394d81017d80b54cd91b8fbbd92508c0bf018a92a18760df4177860d88137e3bd89133f3d383b88ff8f783e74c6164ad8b8ec7cdc8803f59b8cde1b380e3d6b5811694890bb21b2a06d9feea3851c3a0b992ab8d1a649b0ee1e0d7c8f84389b6d03f4ae482c5fa1340c18a697f61c961bcfe5e6c37480b3b968652d397972f4746f5eebe5cecd22e8b904c0af3720c0e1bde87f2f966b326da5174d463de01b96d7328a658ef8bb484543e232cad38eabc74626dadefba06c0c26d99fccc569fbe0ecfa8fa0f222cc312aa32f73f9591cc0cb32470a80c7a0a51ee9572ddb90c52f7255e69d1c34a9519254f8c8696c3a1278439d8fae15bb371d06025e3a5afcd511bb348e09256f81909309de092a7325b6f3a13417e848236d4a1d11c3980e51d4767ea3c2ac97d068057706abc88857e4e758644336e1daf09b23129fa981ecc1e54c2fea9a0a1ed89b71a7c66a482f76dee6aad20874cbc00ee8017cf641f02d90b92ee9d7bd1f3bfb6a43f8e748eae10f9ddc324f034598a345985ff6889e7517127d4693ed248996bd361171414154bcdbb89168d89b96a7050822bc92ad47a2d2477e274cbd8c901ec2890de92e4560b45da421a96e9fe83091de8b540ce77da313c21769107c86b400bf912e7ff4ba00e8d658c859c0487a5d16f2a7b089233d705fa171ac1ae3c1c8befec9185a7e440c226999155d5d4d4643c4a5501740b1e43d39f6f3b633aab13b84a1aac4b6475c1e16094c7a01d5792582d4e1bb0305ee88a8c61de81bbf8320a8029418ac3b380017d3892317ab1063380d1e20ecde56e26fba6c8117b7db411a1bf63e3c58833c60cd0ec419e7127c7568045f2e9dfe88a5d7073984b83a1f029ace37481ffc11eace08851057e727a029fae0704788a2cb25f888d133426f8426e014fed0fa8db8aa63b513193950322484b7593190fcf5239672d8b584303d489770d3a1a025d21bafa6fe450a1aba6dbb492905f5219906c4be74cc42d06b05e0b725dcbc7c62c80bfbc74613645613086c234005a69c109d56eea05f40c10f125b784288f0ab82f384dff513baf01383f2840940a806b67d82c7c1b30196f930a6632ee73d255ff7cc74d36cf6ce7d923469cc530b5df7ed3d8e02fc920e1abb2173ba8a9158a83cef51a861536d922aaa1154daeabec44b8e5e8aa6949d92ec517893f81a15d32fa26ad7a978440ea576f2ebb9f3d44161a030b186828fe62297ef09b8f6b085420e98e91005cd94c5712e1314627c8174420fd7c178b5137ee9b65cc4947840d5c7d81e7230352e1e513847f7124945ed080814428072f1333d50ed7a08d42f55b7fa049f01eac9a5f8dec5b2f5e01ab814888e3279d75c4ec5e37a90426508148a3fbcef0a809b44bd5f33a17f3a675dfe8342796c1aa07f28c45b3d0a04d3bfb806eb4a21189ae49ed14d7b8749c42423bec1d6fca52b12c322b40124928dbc259ad11f92a21a90f46dcf262a4ed42c2441fa1ac4c030a15f0f3084f6077a0257d9c9f0f88f946c08d4f82c20bad939a4604344823b4bfd1b8916498d20ae25ecd055fdb4fa8e4f9dee7efa4bb21a485a25644248ca9956de61d962443a95961e9f03ff5cc239d0510da749910c5ff96607425c8365fcf7a8d382f7e43642f8b0df0031925351d3a454f4e9b9fb0c75b7c51a87c12168c96921ad846881220f1ff7adfd60e0a6dddf63a270a639fbccccd82c2f5edcd714dd4b8bd956c4dfb5923a719136b488074c8593f067cf4db260400775acfa6e937d67f3e38ee3f494dd388edefe595f4aef40a7a778bd071d62bea409fb11d2eeb147452a1ccc139f160ff958a146bf07a3e6a81ad2a5820d12a8bdea5749df0dc80310fed582c5e86cad125443746b0bd858660d83bda1883da0bf1f25d71365f741bf930652f3dbddf5ba26e2716f1504e3693461a9822f810e6995e9c34193e29614d101edd412e3d7ed71d8128041cc9a484bc80713084750626b78bc2a14c14e5e4c5c1b167946a34905358deb5cb66cc85f1959560eca54b42624185ee315dd5fab1eb6df8163e6b81b0113b342981aa821b406e6b8e4e48b4be6dabe419eb5efae13100f5aa02959cfb63ccbaf84aeec92944bd03003d6da153648958549b258ca1477bfd742bb1134fbb74d2487488ff3a27b6cf8f829974243e397baf0d80424de676e093f2c994154f8fda086ccc1c55e1b36b460c9b7db2b83315f17ebc9887bea4935feb46daf40d1c016b208632049ed1c1b407f081909275e3e20a752b9a926652a1528976d35d5e8768c9dcfc0553e4a0dc77029a135eb530fa012002358bb79b6172b5ebbbd510b7b620a9ababa5e1a7ea96f1c17d260e9c1af4082993aeef6c1c0f465ff452ea6fe1aec3560fb0d4b4b85af0a236850ff9945e48a67db62ea3ecec81a9545b75e258a34cd5585822cc001a4289b66c40589caac52b7dcb74d4311ffe110f7917b424625afaf70cb16387ab8b2519a85c94fdebb7f9bf8e2f75f09fb5ebd609d91fa91478018e3e38b1db8586072feab4cf856d13ba1ee4f5ca3690ed9db6e0ced3516a7c7758c0e2397db4a67321a2acec30bcb264aeaa803b1327f8e8b3aed4221a77b3db9c6591ec0be4a4db0f70eca45f021a2faaba49a669ed62440cf486a33f9ddbf481e396d4e84f8ad48a07aab895408197452adf5fb6d1f4d34eae5c1bc71ce7065354a6dc960dffe10be85ea478b8b11b0eceda5723cefe7116f20bd46926d23cd67511a6a2a450584395cae0faa52da55c20d24f58c9295642c059bc4ee1928eb75c08bf049fdff67343761cf85f9706b5d37a9cb07418d0961834ff5995c2db2c2d2377b3eeeaccee460748db05dc83023952597bcda509e4b1cd883632b82463c6d23c99667e22528db23bc871000f006b56b5c8d908cf87a2ca0d506b85378723d147a58406714490923c9df3f84cd66c07fff031bfa83d1f2a12df2ce8140df41468dfc943e4a52c68da526be0ff25f28a33a0be59366ca06490bb42f02d0883cbb129ce7532b14b8febc8620f6744ccfec9897f9d489e4a1b33bca62a850858290d256cc7f683d41335b059d69ac5da19bf2db3e6851456b1491e00408e64ee437e6d1d5c1e89530c573d1a312eb59c48fe8cb8b8cb96eb98e4715b887c5e06521cb401f52e3ae10eca2c5d88c8c8201ccdec839e782ebb3b0ea1e0c8daab75b18c17e65365f7a4065f317e09794238d49810323de7639ad63cf8f932d92a9fac525d3ad5c90d974dd5fc4bbcc3a6e5c7e6ad2315de4e3c821b275499ee7eda23003f4f1392d1d7955f654300752fe5af367cecb3833324b72cc250a7644220a48900872679a989e29ca09f8d5c9938fa011b9ecc3d58161c70a56d95e850cbabb5fc06fa0b9e005968dd95981d486324960b3eb3285c6216d7e940e88d00b7ecb6f9c0d2777303354499625c36f3db00c01998cfbb6990fa7db2919b3546a27da7af47764ed74c21a422246fd1918ca72363c8f0fe9d537a89c2b1d71c8e2238fc88a089ef659d2d526814e71a5574ffa7e5153c4449f462c7d5f33ddfb3e9569a4060d9157045852857e950eeefccb09db51269435d0ebb17bc4430eb67c57775f51ba9f947ad8a78e93784f994c0e9452750cc1833d92a50a8742b233fd7d2efd3d279729e96d010eae3d42dc2d031f56c97d67e845f3c75200a6dc9492a6add41e97954050a895988f1a121946d431f11bfcf12805b59d7f3c443c34969f6e3ab8943379537e209ce8c6fb27391b5910a1b0e4140de898429282f1041380cd19070b6ac663e074ddf9789ed2dbf0e488c1c21eaa88013c8577ed7eeca8784724c24664d87385fffb5300d753e16e22e730e437f1d7deb9abd7427b84bbaa9dd7814067164d04971facc98007e94fc702f50a0d67380dfe7dbd8a142cf8847067355f692df8aef3b4259cfe3fab62e79df3bbbf4e39f24475691591eadc9ff91e9e8050fba36f8246a765dfc34c9ddf5c838a413a7fbbe2834185d8f8ac2138e07646c9d39ce5f0e7d76369f036e1045929241eabdbba2985b4fad18017eb794bbe332025b406f9b3eedc6848480ab1bfd2a10ad38799c4d12c6d1a563e17a290d74e495eded36570c3128da3e5d42028aaa02613034b948839a55ac407b7e7f8be9e436cd14e1503463e8eebcaa8447ddd5c6f16999c442baaa48c21111b4a65356f11892b44da96e2163b7445b466964be62eaf2f4eca323765fc7c43866f14b409137fc82d3d2bda373226890c2f6b30002005f5b83e7c8fe6b40621c29b1f245327c0725c3419a8606ae059aeeea2db5733b10647c8f046f70076815f5aa472ad62aff5e1207f336408b594e15f3f0bc8237bc438b31d0fdc18010cf78d1bda20e585b45b03bf02f04d58b867f5f30875810bc3e3f340de58ce7d9504f1f4a6664a61b2b29265d6c458e4a15ca4f637c208de1125758732b54d5199c123fe5adf48edd6d7d0bdf5dd37b1e8f538d1a31ef150aed0551cacb4076ed6731c576abf635ece0102a4199d71ef7e4d44ed6d20bbcd37f18e7046b24ac3a7447e7e712e8e14321ece25101a05a323c7d15c24b00ac3b204c04ea0d479802e55e8defc8dad7a901fab4a4f49d97c97deca97b71dc2096e386172d75b54cbc4452e7413213751925ce348fb7e0e841676b6625a2ba41f011eae15591e48c107db16fb15e3641450c064a57bcf28b4353ec9eb999fa23e70d9ac6aba95880bbaa7a514ddcd08060849bf5e2d9e551fdfe0f48c080a848d20f0a24e70b6d9a09e56dc41d2b8952a5d3a235825ce0b8d30ef83c47d5a5065f22036ca7be2533e7a852c1cfd341aaa7a9b8e43a12725208065cd64a365ff60618383efb5377574713dce7b9292cece3d054c34d8045d9f637737134bcf6cf0e0d28d4bea342a88e8509993dc63e0356526bb131d33789c10d30e86c198866efecc12c83c74d1868f4d6e54c7b7aabd10c73bdcfed854157ca839d36f908f0e0e7dee672f902d8d6a5599f24ad44c358cd4019568dfde2380245fe674f384b194c4303b6b981caf1005c50fc40a0f91c16e11f4771c9c1b41d041d4c2e9e0a28b8d17ac83d2ce7d1e1fc5cb59f5ee6fd790e6377ae4eea9090bd9fbb440a07032290c77bf15a9b44182ab65fb7ad729218010ae66d30b220e4a0fe570dd46c3351e199ea61c504fd7ab439010aee677d7888abb54595e35352cc37d0479c792ad515fb13bbd18c362ebe059e5a2da8e895adca3857f8019793434c590499db7182050a4e96931da85a58af4a23d5b28699ae244cf278ba4478116e329392cca3e77ec3d9b1084e22d19bf3862cb0e96d205be28de0781f48be191dc1fc01f3d61ba49ea1fafeb21e9c1062177960d60f2e90078c5362e5a53de1c9e0e66e9dbb5f87ee500ddd50457caa44b14423ca3a9e4b3e8eca9a644f60deac204e7153e8073caee0e533334be5e83fe4f31004797a7ece7b19ef8dcedcd533bf7b70bb875bffd1df1123d64a859d6f9a739401df41b20b9382e62c3de0b3ed1e563492f5956c0ec0903067f188b7bac9711fdb1a0b38504cd9d4d85d08d8eed09663fd1eb6e8e4484c60af89dde7fa8135ee38eac4d7aa30a1dfe9939ba01460d3cca2b53c9ac9f27cb5a0f2446614ad1740cac487c5878be942b93a5dc13e5a106b4cd092eb22022ade79f5efd28d0588ef27d0367241e49a66398dfe88689e77794ffb4d823924a30671d590910ed1245f587f7a9bdff9d147313e361c68be39634c9932a94883fbb9fb8d9cf3da144bcff9963d4c7d605cd797de800f6af288521d172f52deb905340977b7e968fb6aba5e2044fb5cccae894173b794f4de2804b61040d704b122553e4c4129f76c3a0eed485c7f8f029e0a917c5acdc77fb8fab8faaaadfd10d82066c08fe93ccc3a0870c0523a5f6a0d3739f20dcaf178ad6db42fb3024dd7a5b48774def9eb04622274b8f8b8b3ba7f246e0e60a53bace1a92c2850f599b5171db28e43a02ab5ef311f7d6e872ec1c444d221481c1070094107701cdcaee4e36dd79a7f18d57c7232e2729f48cd7197b7bbef19094eff8aceb0a22a57b3165b7d7871bc509cbba5104c1b1f1ff07dc3a80042200474e80d72a80ac0b080b18e002c0d500f93f7b6742f74e1d0be08319f0833940861f08d73ee2512edabd79b74c9c00e1533f9f00deaac4510bad318d40a12c9769ca2b0c2f905ff2be3f5521d53aeda9bb9510a41bafc6d8b63d79dd756e61f0fdefeb3376b76c6d61952344133a1e2681d782fdc1eb4b5f723175f2e980c756eabfcba929592f221448cec6ba50baac0d542fbabc4d37195ecc8d4a8d54eca6ea48902635949603442a154cd62742b1ae1b98db4247b47829170d68b5338345a5bdbc51c351afbec0ef7a7f23b6ff37ed98761aadd1cf17f15030facd8d117231062fba3a54572902c5d5a450df74b59a2f26faa6b1308a7ae111ecf099896f53e332b26466c73a56a31bdbfe779d7a0be9bf7ea2689cfb60d25eb7babefedaba1b4b32c1e94e579ba196fde6fada5cdaa506752f9904bceb5e3b3027efffa5718ce7a871191823cddbcc72379bd1cee03ace1a9b6600cf341340d93083c4f30a474012f3aa506f9e48ade91cf26a265e5b915a24343485753b4e386e4d121f859900258a09d57749b246fd8317af5bfb2a94fcd79a125320c9f67f8a7136ef20abb7d4e1131fd2b5239cf1980ed106a84f0054936b0ac214d4310d1452bcd32c04c10a354dbb8a3d4977a12c6a3b8942a0110eccfb6c8b3d4d547865b715b138211b6053d54562464510d508d77b1366768e7f343ccf0c8778a4157dce7efd3971e284933f2522622176e1cd2ea0eaf5870b1d327d10c98a47de0884e8f43db429428f23cab7686a298bb31b22959b5ed859d5affefefcfdf1d5b0cbd367a09725af67ca21d5f378af23ced0ec67f5f6cc5e0976a17ca02ec6361e2fac0f863d14a48a8478302e3518b3ce60469cb9b27c844f835a04a1b4a0494e1b9f44de6dd84b14f2728152ed541e1473784cfae40fb6a360caa1082c849518f30676a584851477ab59095206636a0107a85299b939e46ab7a176b8ecbf5bb51c5f731335cabe1ebe8199b3ee9208ed80d899a41a20612617070c1eecc2fd4f22c49f322a1c6d6efe02516d73fcacbfca931c50f555febf2cce04e78a4b65cac32d42f2fa152f46091edc0ff82229e2d4b7813dbb4df8ddd63dcd0cbc1e3196be7ec970556bb5cd32cdc93097935522c03275d3587d322d3cba06ff3465ea62ac0075f80ebb25819ab14da8cc1fa87345a88f93066c55cef56d6335c5304f2159d1468c3b1da8415dc39d96c33cedb7d35671dcc1ed541ad4765af55e72b5f28f0b635ca98f34c75c4147a533d09e176d7ba3059497bc07a147e30305d92ff8d991704124f37e884f7330f766c9a9792e6dd92d232849587d154e690db440e574f5cf53d74f0908d28d160539043a3e39ed962bc7d9691b3b8d4ff2ab2bb1f2f0b344527e97ab75d18d2e07aa606e1ef2c653f2b5b77b5100f01ad13c38b1ce4582744fa458a35b47d95653de25bf677d582b5575289eace0e20c0273cebc58e1b2f292b0050af4b13d2bc5e4a2f9e1b951b04ecf324d5f8d220f23a0ecae1edf8b2a4b5dedf012f44967fb6f933b652f18b183ec4285046c30d5f736ea278efcb95bc265cad3980442aef97001cf185fb6510e062c57c7df88ca8e6aa401fb15b3e8aa823c930565335e37ce31290cc98076b8ef7d034fd6d0321389fc769fb2911afa8387a143fae3477b05e5d910f3bce053103df80efe31fa492f5a9335bd04399a78d56f1da83b7a33d2c8fb249da3541b43b18dd922d19cab99e98a82cf1cf29590cdd59a3338c66b67e4e11c322d74c34c23f94d6f42fe2d0af2a3eac73e330a0f371926126d888ae7f5d53fce3925cb8cfdd10768cc7494362bbff83d58f033784657124897d556e506c482f71b68175092e07b67972bceba49a08c083949141a5082656fe81b1fc0eac3a99272c568f893bf7cbbe5ea47c8d5fe44e4ac7f8011835bd065068b0b5599639a55919266c23dcee6582e89dda2bb7019b94ffa679b6212371060f162298951501a70b7652ad1742aa441ca0e6fd22a5e021d9a4a8e15916818012f3c804b8d684a8473d00e9c3757e83533c55f3bb115733c44ce041aa97b0e09dc54703e6891e653c1e10056c0d32fcfa86e4c989dd8a772925fd28bf62ef992c4f4d11b2134fc273c0e97dcc6073a25242142faf3faf37f156e992678b8ff271d4f13a65b6b32b15aa33d8e1d68dabb3fe6a3bf255b2857c26cbd35d9d2bafde4783621762dc01b5cd90255b413f0746307f5359c887699bee02f99dfd88cef814078d05be307c1396b41a104285fd1597995f3b9d5443ef09dbf431ef97c0c313f82104e41de487fb0c8597f9415a9d9b11820bcc1b93ca99748931a60735cde0eb97c949ff4e8ef204eef707cb03c10dfd1f7e8117a117dd7ee20889be0213c7a90040ac2fc99734e3970acabd2a4d5a568b24ca45ccd25791262e4e9c5142c890f5dfcd54de75bfa9f18b01a29d8064d70e6a01aa96e8bda12eb797eff3a82499649ee161bb6a86d1aa1ff63f685fe9ca40aee252db2899d033b3398a3d7760da7d58e765357732084734e1db1d99546fd3774e8fcb97a2cf96a7f63362ea2e7f9d2634b7d02e74a0f763576ff1ff83c209d68bb49891a79b8097ab3c7e1f85abdd513141c5b2e58d5203097370ba0d0e8dd6af50d62cc4f4defe531e1f91905f25bef155ca2161651eb8668d397e159eb831909e017b4308538443966462bfa359300fb32fea63fcfd795566b5134c75886a10a7d1c1ddaa71f2198c10cd4aa859d27ebbb729567b5b936a25e75c0af3c4f355b351593118fb218ee9545edce4b6abd0085f13415cf1a2d40ff515b6c9d0674e00756a2360b020c4589d0afd4ad9bfd1aef06e1e3f455195fa4967f18f550749a5fce1199f7240194de024aeb815c53309e51a5032fedf21918dea7b274c84745ba6473e5c0b5bc5f497a9a7dd46019a005fd6b2851001e3f0480206b9ecb127594e089880ee6994973d1d7831b1b8a9b890f68a5d079f425217b6fb2a59432a59452b5055305c0051c87f681dc9f02c842b98a98d53bd4f6d34919e3e8ad374a40853ac2e1bc97a34fd1e549a379f25b312e96430de4fe75a9cf4831b126dd7b557cae8dc87d8f0de3e32b6e8fdc8755d4c7c37bd7e952d9a1a3aa329a8df17482b0abca3b73bcda324eeec1274b25258ec5a4a5c5ddc42ee3cd29fcde7bceb9f7de73ce652f1042f8aaf71e0236056a619121e34575ec80f0b9d81259c565bcf9b4e2de5b3982e77b9934cdd34f6d9ee6d196c8b2e2582e6fb9fa621f58d3a7d1f4bd5f5893ef6540b6e5d215964ba5e5c970fd915171b3acbaf4391843468c30762a85870b9a665cfeb151de9cc58dea4efeea285e78a4760fe4fed642fad263a812a76162cf42ac616f59d9a648a67b1e3da4502aa792b8b3aaae57556e84a4847118ac615eb0867df340ee637fd31709b505e1374cf79873d963d70f8dfa687f926fdf480ab90551a0129496dda061c3a5460d171b346e641a2af53866e4903cbcc8806901004bcc8a0e951e4e01882180941d280330c99ccc98d094f09035251b920f04c00850806bcf20776ed7755d05b07e18dd5433f68006783e1c8e03d13f18c8067129cb3cf8f400da0d1b355c6864a89fc1838c96cb1aa548d9b5d1ccb7e9986fd3e67ba7538c0ffaccb78107dfcb420d3e58e97bfa2c1aec52a3e524af1dc8fd6863e4726d8d6b857420f79f6563952bcbc65564be77edcdc343417468beaf81e1bcbfdeb371a9ce58f1c9124a87bbb1af521875ad531c840356bb5d3a725c9d83c681dc87fae21e692332fd866b174429cc7378c3b0abaaaa7ad49d621c5ae5dcab20dc576539a237effbd6ae8642b397bafa09c691c3b5c81bc8d5175eedc551e58830ef7a811600ae67720f83e1bc5f1df91e00aeb681dc7fce8a711dddc3f59e73b2531c80ab5320f7355d015cef5dace98e11692332ad1c33585654725cd628478e276d71c83eb7728043ce09c2f756c9fdf62e639bb19d624aff5672955ecd36b2911bc3bf4537a5f8c6ad99fc239f0298fc559c6163f23f187e6733f9af957b4ad11a1e14666d5a3686ff65728d8de726e79ffa86d547092a2854d3c007d5b3bac56a8b5b54890a331989649eb9ff7306d6ff0c252c1519fe5bcad492f75b6914abdf1a92164535e6df1cee4f634656f18092f12d3358785891a1d2726289b1e29c4bf16c53d9408c10e5044d314e522084262810c2121384509e40084b2fdb4c482598bc4aef3d8bf4de1b61efbdea7aef450b8e1e7cce75673f74fa3badd11486bf37e05ed31a75d90f9dfc7153ba902bb29d70c25d48b7123c64db89f676c209279c8058781dcf699ad6bcb7e025a3a71413cbf97ba81a092588ef22d23d3b5fd745e47bf6d7cef15bf7fcd3b3e74ab07077e75a619ca435dc4a605ab30ae3ddface3aea33fa6d0033d66f3cfab7004cdd010000e480997ae3864b0f36fe65e098a142e3a432535a4a26b1ba4812d014ff08e500d5f82b5449a18c9963f27b0026fff298ac3e12502830a0b36d00736b17c88d45727da66bc18a3da8e85717abe765b153daa45682b14b6bb407ef98747f3399a1319b8cc95bd4d5b61494fdad4baaf16f19087c9a66644246598aa488c52bc6aa084208fbf95f09663b85f1e7310987ee42fa752bc14e6bfcb9d6b867cfd17e7d2d0c4dcd020b9fb99526f7eccc92d66c10910296eacc4b71168e4c96a95964c189d9f3fe8665cfbc4c7b0512bab724e81548f7a6fb2d012b8cfb2d2601b5a6dd853cade16e25d8b586dfa91369fd0662d1d799a9c2ec667a13e3e427c252ed81440fc51610e73e40951560b9108d15b0eb02790629e7cec81ecc15e093897df263c052b5615eddd59918217733104bb506a76689b08f07a02cb76e51bb1b7fbadb75bb113a74fb2fdbb96edf0f76415e9eb023ea70ffeaadcadfcbfc197f1d3a7408b32d7e153746476dd5baafbbf3cddcd7dd37c80edf42b32d4e8dffbc8aee61d63b05939ce999c2cb7a976d1032fc85174a3b85d24ea9cf8abde1683bcdd1cfeaabaaabeadf5fd341f8f12de4e6f5571fc2442aee2da0f655a3c7c8012996da3c69f33546a2690d5477ee1f8c54fcd0a95590fbbceb2e5c024b5dac65661a138c31934014e642034de7b8dfb0bab87396271ee940eef319e4b636c9fd2a50c482a52eeee4c21a776f90d374f7464f7f93d508a5aa55990b6bff51ab98861908677c7d8872e1147fc470e25b51fbceb62027cb511a3f1aa4fff62e16eaadd108c319bdb5587559bf5f5d55f5230ca7aa2206446767d708d503b32c70dce8b7fa7dd6dcc77e1516446726295d58a603a7679988e1c48c46b677d603df6136e4d4830a1621def777d681d3f4ac053b6561bd6805eb7217e624ef943f2db1f6afd3b924aa91fb5d22aeaf15c412652db2a6b192252adb6998fa4c985b36f7371c29944a89c60e4315a69310f1652e2c24b3914cfdad1bc9ec5f1f97b17376ddddfd43b3db5deeb676a4ce5518f7020bf58f7a5e57757f4e9ff3e518dded3381f5aaaa0b5754253f55d5f7de7b1ec3a55881024d0dc5fa8efa0d77114e2a6b649924813f53e3a8245a10fa288c42d9458e5d25098d8cac1f8b34426dfe9ec32b14462dac87debb2a65ad83a0185d557cef495555575535a99eaaaa7353e4223a50acc2bcf760ca058d7c0b298cf3d7410a2327841042f786024e21f7615417a5b5a2c22c2b9bb5bcf7589eba16126bc670b4335860597db56a43d150b4d55dc5ab5a10abe8f66e67a1a9de4153dbbbbd236b7ba98eaa7ab7f7c9c22e523fc6843e964491eb14c17594845d248cd46fb202cbd24bbbbddb2b9ee8de3cf0eaeeeeee6eeff66e774d7077777737046939d4d7dd50c87dd7eddd6e45c855ecf66e1f5d8aa97ef7977ce47efbcebb7f77b7777b7f463ae25455d5b9aa7650a72c77ee9c7715efeab2a5e0560fa147dd0d544a82dc77550ebadbbb5d7ac36e1f42bf6ee729f06eeff6a8aaaaaad75e566c8265111111111111111111111111111111111111111111111111111111111159ee1e8cd5288edc3d182b5805b97b30bee8ee410785dcf3e7b8995d110948eefbb3938062b563711c24ffb2772f80616059cddd2c043b603fb07760cb524cb36d880e07d9a25d0374a9b42492ae158a98fdecce51bf4fb02c68841d6ba255954b4c90fbaccc84a55ac36fa9ea4961f47939c028223bd33d6f5a55bda55175ab312b664bb77968ddace2df70a54154683273767d153956eaaaaacab62aea76929ae26f0f129158aa435a25d73168723b66de427f5ee08223eefece3d9382357d1ed2393731f5f1136e09e7c270cb5d8a5d220ccea28b8c37109cb3ed874e1134c4c220829efb447a396029cbc8d3a64da73434d3b9cc85f86137e09910d6dcddddddb3ad7ff0eeee7eddcdd063a774939389b821cb570cac9f081494642a6afaaf0fa3a6ffdc809f4e313afbf78bd16d8e3333eceee6eff7decb367f97c1278898ded0fdc3dff4ddeb6fcca23e14b21f15c4257e2f1298df99b999db65bcd986999995599b798a6a0b4b4da6136f6ff75675557767e7c65069c1498589ee9b336f0e82d551d0617f8ce84411991f323f3b6e6e7e0f337fcf390ad6eb7f9966cbfddc8c85f5fa35773716eb7aaac240b7d5f36bf65e23a01f84efbd07af8ef05d7d85dc87d5e8aff777af9f6bebaaa0584dbf531b3112245da5b7ea6457516515cc2e2f89d06a2bf8086b04b9af56f36a9bf089775b561245ae5304ddf7deb96f22c8fdf7fb9e33b1a65fbdf79cabd69dcbd624aba8dc0e416ebf975d285584cff9088cb939e7dc11b9ef83d6d80c685e706c0ca985709ae21a6d8cf614724bbcb749db90e99e173855493481a8e9be81e09e8d8dd1ef2038179dc2a8770c0e021572bf061076ba95d7c5dcde7baf7f10990e72ff6d4cffc0c4269779e19d549533414f4119b57b4e51f3bda599720c582d84953ea8c5c9e5a0709e83dc4f298c7ef3748a29deeff909c3195957758258c87583d62c1d3481b4b9400b89d023ee384fdc893b7c32b43f86e57658ac74ec78d9a22dda3840e7aac14ac874a387694936f537f551b93ceea0b182889394791c62c9956d128e9e63ccfdc653be11ac7a74be87f59b4b895422552f319ceb3121e024658ef558d9563b47a8a5c3f5820a56d1b1205825bc206a8b1c06c4cf976d91164b872daa1ce34291680f9ad25345833aadcfce3eb07798581752a34a3d9d5cb6e917935fcd30f9b50daf7a30c2086926a041eaa341faa3411a5fe6f3034473b956629d7bceb9f71b47249ec6f8432c089eef958055f387f0795f17bb07a4e253b924defdd3360c81a17caa1fa00bc3d98cd402b96f61d8027a3e1e82917479429c9e80a6f8bff031431b265f3c8af0b991290bee2b66b1cc36eef5bfbf5b89185e1b9651c6c1e4df19ded9b5611becccb30ee603495d9b192481fddadd0f914653fc363aa3fa84c911bad8038fa9af3431932ff38ce6415e1a1a9ac93c34c5347670a00ffc10398883384885bba037ec74b83c86d2d1297e87f56855f08186c609e9901615011b05a1d55c6138ce74616a90fdbe9ac4c216eba0202d4abb2f3a56d4643473135f2d21aa9a355344a7f8634ce2a3497c1caa889ee12e688aff0b21334c7e6ec3e40d625dc7de1907c12a822603597cfd2c6f1572bf0bc770d8358e2e736af31bc3efbac34f44297e6db8061ac35f040602dfe0676676784761a4784e04c82f22916acf78470bde7199bb198ddca2b9e3f2b333ded142ee3baffa1659880259e201cc4330bbaa5c0276496e90ebcd9593a7d347865b90fb0f0677b7d638d7e68b0e1a53543969e0a1a46a41a6fbf56784f37649b40b711185234b2f8c144b121a59236d84244bde1124cc882121acf1631812bbc4e6e46c919ed55929968735fee52931714134a03519282289ead0a288608db566881dea999d628d6cd11ae11c9d35624261858213e64442843d34340f6000508a8be622dc237bc5faeccf1ab9b0f00bd3cbc262348d30f95a4fc78ae4b8c84504ffe9ee457e783aed70980e1d3ed0d0f868ec0601409471226bdcbb85a5cf5d3502cd1feceb9251cd2bd40ba7f6c51464f6abe61f53ec46cc56245a0f5cdf93a6bd702ad39ee3a8020bbae75db93aef76fbb01054aa75b353ad3f3af8a07f138129391b2ced197eeda13d5369ca394db9d76a04b107911eb2bc32b09465dab54f1258eab249e7aedb356a317bded6630863dc4c590996ba6c7c4479873526ec783b1fa1c1a65a6bbfe1ce867b351e74819186c72aab46281f597fcdf0fe9517c603a62427955a4a9225ca92951213159393d3892986092505250525258629c6e9e4a462a2b252b2c222595a4a2d324857546d2e789871cd78eb512354566534220d17e852e3d5b0e16cdcf01b5a6b29c6a1a5dc2ba748d17d7577b7f5d0d57a4505b966dfb0b38c4cf5729a26e9b796a9bf3da77e900065a14512154df149619e3845d5b057ec880be5aa6118122494aa863d6309e87961421807bec370acb7accb399fb966bf65595718a15a38f5b07e77d3d65e98f3ac03d774cbf2d1eb281b72b9cb9d4eab9a73ec110ccaaa39278309d1d3db71ebdb2dc60bbb42ee5bdcab4dea76420ff1cee8a6b6387953fcdb8a61eaca5c9bd42dfa628260e7b645728b50b0453d7485d5d7ccc5d0bdab0c927e64c7df4e9bc35ad5eddeddde0dbf426d4120ef12ac6521f75d87a2ec75d0b9ace7bd62d9101d721d9acc3ce4024b5dd45a26a98f2ae4c921a134ec99b9fd55284b1a31ad20e4b4dabdfbbfddd74ee90926ef32937c630633c793e39c7bd079728c10ead180d0c543c277d80f9ed7abd6c4aa1548837847f48179a090e3f4a2e3898df94dcbd9198201ab04b6e2133c4f4cfebdac2c2766db42610766db6e215f96b383e1f4fc087543b3507011fbc1b3bf721d0fe1549e1c37e52a6179aeb9ed159bb3368b85c6f06f31f9e3f2ac1592b0396e76b6576052ec15cffd6e122602dd24053badd10de5a2959628103c7709b9ef3df05024937ffb9dee5a6bd84555b4c4693a131790d20fbac0482356593542f9c87ab9d9bebc301e9c546a294996884494252b25262a2627a713530c134a0a4a0a4a4a0c538cd3c949c54465a5648545b2b4945a6490aeb8db5e48656dc635e3ad478d505995d188345ca04b8d57c386b371c36f68ada518870b71ddf7ba02074b5db63d825d44b0c6eefe9e7fa3b07fa39741f94dbd983a01b579ddb48ba90f016d80dab86c0cbfbe025408b5d174d32b583f5486f4fa04509b17dd7e98fa3c54a6f42aa3363a36863f466d760440654cef4626d893bffd894cca6f39a6feaf0d8d0c97b5f1a1e557b4b5b9617915cdc7c6acfca65298fa2f6b034445c7da20e0b4636d18b0311ce3556d1eb0311c011c539f666130f965641b4f1f56052dd9c67f7387c9cf2698fc2cd9c6d38706c961f2af0069831b26bf4ab6f144c0ea1926bf15263f0356c198fc3c86c91f23db78a6a02eb03dba03d5f84d4a86c95f52c3e427e91c26bf85c231370dea6146406b2cf00f581b2236a667063ceb82214abfb9693d6948898453fa217ef369659b55ca362213c25840f49b4cd6f7092aaa66bd09aa47e77b54a46f12ca55b348a46c1322e1c3703088a18620622deb8b609957845fefefb1b71eaa080c35c4e325ae57c1f7b8322a48a57e5229d32741482291b20bc7fa1b76440cc132d8f31781617d7d5fd990ab07152c4258ef9fc99eea2186e3dee2212bd412d5abe07b541915bee2edce9dcfe8be47a6d22052025d091d5cc8e3766676433bb46f1872077366a3e410f780d9280ae986e0115e9b948dd930844e1d06a7b8c3608db316ea249d64efd049eef084849c8e902b22e47692f4ccfbf911fa19fa29f2e99967c4c88f1120234193df797ae61dc9e91927d429fea8e37e1ccfe924650c8cd4e0088ce28ac9534cfecdf9606010121212faf9f9f979469e9167e419793a4fe7e93c1d212121a19f9e812c8031703fb006937f6014ee07ea401d78c40a437cf5185d4445f762acde8f17ffc58f55191813225e2cd301e697ec6243cf9c9bc0cced4f9b68e2628289269ab89868e262e211815dbf8c91e01cbb6b77af4b4e2aaf350ce4ba10cd77df2f21c62ba03f7cee9c083363382c4d6677607a89c2b8f6c0f454b7b7fb5e21acb9905d8235575537ad4ea7fa9bb8ccb0f2aea24e794623596736aa240ab9457393acc33a453c832ae4c65e2b8bf6c11aff6976c35f5490d3ac20eaa647cf41f711d947f57ca061ed081686b37ff9f6eb9e98f9e0145fbb43c71170d68045940f4ec1bfa980b8154757f5f0ad0a05e4a6fa4d7d7e380ac370aeb716b3300bb3acc7301ccbb2b4e574a17a62b644cca8689c91f5ee3fb2b2b7b08b871cf98fdec27046a3ea723982d4890911dfc70d10f60ac38110c687d1652f9aa6efe6460db27f539f9249caeae22394988c407d8c80dcf89c98767be1bf7fae5f4b9f316c922449b01dcb6a2ec87dcd4216b21006146080716140fcd4914cb05888658658665f598835f502c9e4245650c211d6548b60843c72845f711dc17cb1140c86657dc105f33bf7de42c85fd808638cd65507cbe221779fade87677ee2521e44cf09ddd24d28a184727b0769799bb2f299de3c7106e5cde82740cc309826138fb72ba8ea9543a997eec94b2a42433313139299127272727274f5548273b682e9458ccafbaabab415c8cb034203d5e600c6180b1bbdddbddbdbb453a6edddddcddbfb55010cefc5a2c4817cdee653682ecbd3808165b2179330158ba2b994d8c09b1b3dbddb95741f885dce2ec24d23743e208040a035f72341aa993d5080c18e9ba48a452a9c1402ac9068389942526272694141313e66c533acc5517f905b92698103bafcb6462be4c282818ce665e48ce52629c54569a5776a583b8905d78a10b723305c9ed8af0c9508782a19050505050504a120505a5c4e4c41b05c509274393df5a6e776ed90ab9af9d6aebc1588d2cd2e85459f2a43b5623767ab22e88857412d600ee0133a542ee7315515c774934318140bb7f82e16c35b256399e98e67b25e0ca999c15b21fc545e7d4b5c67dbf0f904facc02005c9cd65728a43e8a2a5603845289eced33371670727ee0ce10d434340604f48c355e489c92f73ae22d6943954c861931314955e898142e242ba5f715755915d467a83dc777f160c279ee8a864ad9bd7ac64340200000316000018100e89c4a2e13c8ef3b87c1480145b7842746e32954662a120c6411004410cc2300801c0186290718a2957b402f80cb923acbdf0a632be9d296e270fffc11c2ce87d8074264606066482b740f0117764135f1bf40b4a59af7d4e1fad33e0b568fc532f09408655ef03135104df13bf39c37355188c4cf463a253ac76443afcc9fe4c1ad5788eb0d07565ade9ad0fe73d82f605d72ae39652db4fe7b3c5ed0d352acbef53d38d4e3b076f197aa1467eb00f959f1be44c65c77b050608d1024c9e35c6afb5c7eda5b69e4e678a5b1be854975da7a7189d778fb507d655b7b374ea236988bfa7c4fda8f1c8df9eabd533afd8945baa63793facfaef7ff8d0d90ce8c3f1b9331535759431c03cceb82b91150b45091d806f6cd5d6868a98f819e83132fb4819d29b6f35ebeaa618fedb7643a8302e7ac492783d1f9fc200e37c60422acd35b47d0b836703613742bd9c4460d950726ead37992f78ae6c521c02c277a8a8cb55256e18f8cf8f44958c7254dea7c231fb8e3c74ae967c001c7da48be5b37c427c0f8df2c8f45d8749619429ca330a43b3d416ae015c4ab55cce91b0bced847b2e1b311b4d25394a7a0f2ea31a1cbe2bdeefbe83219b2a79e4399d798d13969b85692fcdb4adb91bc42b1c4467d0d2e6805e84e9cf30bd02495238e6fa441d885240e46df611cd375c41bad1edbdccf5c17aa3a07f5318408297a8768e6cda68fd8b301a10cf552f95520681d2194810d2642d5250d3a5035a2668b55f132a2136c14101f0d904ef99de2f8b9dcbc9fd836f3869136952ba58bc228e5221f0964a80f30f784543f9168076c1a2a0d521408177cba4a23e86d2d701556fe5ceaa3c9e2046c0cf6aeff3d7672ce0ad9383062f5871dafd421fc0fafe4ae6ed36b54a82679f02d9138e53c8a8624e20c0021c8240916485762d8d179696a2c029313ae6ac362c75db1c13f43eacdf0d6a3e08b957d9aff2c7c1442842eef608d34bab8f70c7e58a94608e64f925f8b0b6aba8a0726630490136891254f4b7490d154f9df93d2825057137e9a13bcafc6f572f1ddd6072d5373802fcc8c1bac0edc681ec924f5644331a04b44bf64ea29524d93e6818814b8617b09bc1a571064f873cb1ec40693fc4069d15f178486da16e499234060faa8b7412fdbe6246c74292962ad49d0f654e46ac73688ff35468e0cdcd8d8f7df463da3879310bbfc604b068dee21b847a67e4551f4344f11725be80d63a37240679da98c50156854066175831e8e75fb91dbc9229a4385b7ef6136639d5d132785459b6b3653bbe9198250d4fee9f31ccea9e3ce6307611f293b72ccb77a5c493d0aaad41e2abc619e61c883c5b66bfba303acad22ccc183fdadc105a9cf839967574c8d8eb3e7fb9b6383de71e989870a44bf4a0c68ecdcdc1e33a0ede0d0cb267616920e05b32a530019e1d573d222225c04e353df4bf2c640b3857fa51e460c9629f7eedb20876d36bdf1008f1cca9aa889bbbab2da68abecbd97e0ec98357548ff0e034f57d330ae5a466351d3ae754772a472a9af610585063000061e0187ea0e379cab7790bc4460e12147c123a5eb7f7ec505f4b62d84dac56ac54cd3deb32f9546fd1baa846ba2edec82e3936e51483815a95a003da31a256a0c84363bfaf3dc69b58f68d879002e9c85391ebc823da855378e61035721c21bfe2a1f038a6e93aac0bd038fe014bd77ce38c47fe3eb8a8d8b20d3ad433ddf9edfaa099b5b48533503bab224cda556bfb776d1d3b18aed3548b65aa82632bce64fa208841c9a8dab499de33b5cbcaa1224f93fd307b00d0d3ae8f81d8734ab11b9f9dc638ed4ac7206ded8e795c3767c139fb18134dff84e628982c870216902cf7557c9b36b9e8b3b31d27dd918beff931702a617451de8760a34822a31d3a3b8b46d33e63ccbd52ac7a8bb74a1e349b33b2782d2c2a4d36114d0bc92e4de41cb0a5de9a99e61c6048b15e863cce9102828956d0fb457fb5b18710aeddc65520232840cf389d18defb98167dcd0c24d21876c5316c3222594985694a560370bd7b824a229a8148324b53ad5a1a5e23ee95ec5430f07ed8ec1f523fd19359a5192f7719a0c7eeb6904d7179b5ebf90c445bdb41324c38694f1e8d2e184e1d932f69d0b0ff562ec117a4dd15841e2ef78361369b398f075809288266953f3f376bd14e29773682646425d171a64e8781d184d5379b5e2ba4cdf921a6968a39e6056814d294b3a5bd6c0e90a6e3498f39b0e924a5be9d880ed7422323a0eb92119f1cd4205ba7752f963cf11c12f4ab878346e118120e706a7ddf62087311a05a06fce834985b9cb52e752728d4262375e75e3c1e9684c72425bd1b3310e85d44a9b84823cfa158308214cd81287a157b4023c67002b4083cf35b22d7fc2dd444422075ebc6845001523c710f16c90a39b507b9030f76d9c043493e2f17ad5bb8bd6221974b938b8d91cd7d5c4a1ac327321ca703bd15c5732b0e2b070676f622cc86b7f7ecb081a160de946bc8ea1873ebeda9115d55679f5b2fa6710f100fba74ea2cb805ff0e17a3301ccc2cc3ac0223d0e711ed632d42fda555f4e32c47ec245d9e576dc7b161250b464202b8b1ed74b2530940ef91f27924ea6e8c32ac0d7daa801529f41e5b42c3fb0a497853a1b3ac97e10f6150478f028fe7b687f15af806f6dbbfd0cc2fa460cc8e92d02710f445e8415d8d48001b3d847f2c515fc1930d921fea87ee54b3e0a961bb3598340235257eb7e75c15118f5a10bbcc08c3096937eb65ca94e1dffa1febc3a530d8d78e037201ee5ca53026a6142a21af2a8578157f2208b355853c5a96465bf6d20adb163979285dacc5c809afa08b2139200aa752c0821e5ecb672aca0c6c58b5ba51629032251b674c77bc63d97ba39902c3b889ffbb71dbf874e028edb23ca870dc47295104d5a25c4c624a945c25d49545b161f3250ab6815d94d3bf6bf78f9ef4307199f397d63bd2e6c026660dde033cbb9b0ab34f299c342bf3490c76e4d3721feb004d28f74011a27ca403bdae15ae4426b16a95a96b1324261fbe8223dd8d69c237d4c64c5e0474bae3dbba1892114e5f7a3a73806f5b9b937461805d237cdd51255e5e61e315df4059d71eab759d273cd086c1bdd416499a250d19dfe1786d30770e0b8576eff3bba4fead96a27b6ac329cefd82cf200ac6ca69c483e34c951946294d782d79b650f1fdf932f6f2b7a1bf0dd8bf2a847159ffa61071dafa67f567d34de885d200f4bf2c55b4d51a02e422cbefaa8fce0bc83c5e8c95a02d824071055969287b4012c0480fd21976c49a35367d48e3d00068dc35cc0f44c795f5a4e163d7038d700413b1a8975e94ecc5c0c102a2775f825c9444d8684b8447c6e3dec8b8a37a8be1a28fd6200541a40418527ed20ce5744bc435658a6ab1dbfc3e4beb92b78d9684142ba68fe223d39e8ed7c417f0f9a445fef12dc4e8c9f50d081f74087ae417950228148b8b78a656c592deb9e5a22dbbc7283804cca3da6622b179de12c98f2a1039f75fe636a433637a4a7e539e9782a712c8bbc1002d578cb06c4e07f0f160ed44fe08e1c8a4ff59c52bb92d3d9508a08d6a992d1c4e264c9287988a4ffa211d3ca58e2610cfae5bda5485df5b3f566299c63013a548a29029e764a7b5c176139db1d4e5c9516b6083faefab68b998f5144bfd5b32329f2a9985222ea57b315d71bc1a9f3bcc585e177d68a9ca17697f74863e905ac21ed0b034ea4e6cc24088edda206c6c8228dedb74a022f1fe778d557aab55b1557b40b49b47e7d5705273988afe8a28f503afa4254198e45585922c7a04aeab8712556ca1ec4e9a91235038eaca095ecddc8d22705ac2591e828676d1932b44463c3611617cac96ffa050b841b13229f29568d34e3842bba5dc185732252b3c8300a42530574674b48048bf095df3ca94cc75f96f3ed6a2634234608fd0ed3f97fc142ea7778ed5f476d76f43057bbf41c125e88c7d52f6961e351227ee8162855890842315852f8c14929ce9303d4779b74997475987e501f0fc83a19e5499dd77802210822b95fd7608f687cf4fc6c1948a68093392fef280a0a322bf2f75325d6de552fed77971aad560e72dad0f67de7e83c8a8db2b638466025a8e2bb4053362926f90c40fca6f0104d3e1d5aa097fe535788ba88e1102bec0c65c592a20dcb5b7698f083c0907490186d172d2f348482e64dd7d775fdb7d0203da9d397e1505606e6f9c53a26d6e64b807ba2f8f0a1131115e32f0a5689fb57f32e0c79f251fd812c9e35f83c980ebe9480c0a64efd25effb0f4ef90ec14db0cf67e13774a6c901ca83fbc3a365cfe664d8198eec7984c0d4399cdff16f84ece159de3851cadf7bc3fcf8f5b8db9f927e4e908bf3f30025838b702bb8d73167a863f95f93c3a1f17b3b45f4dd4832759f4b3f323c54f8ebcdc0e68f1abbe4fbbbaef297f6a5a691a398fc6be9532ece399ee3e7197464036f79d3619996b340bb08fd5e80379084a0c0c2019feb6543f4ea3a39f2752648fd8f0efc71dbef9e01e77f66831885f4adf5b8d65a26191d4b2eaebd78507fcf15aef6a1fa1127b0483a1aa871faae624bc6063cb46a6bf269dad1e6b22e82ad5cb2b4aa35e6ea6e54d811a04c8bbf83dd15f33a98ae437ce1f36d021b5206ec6d413596af57f0342fc0bd69a374edf4f69217cc41946ebecd7b16bf79098532c36a5f2d75ce54f76cbf2c706b5254fa70bf1f982f3575663cbd0d9fbda139a7da7ecba0a7ac7c0c2361968a73a8e64f59bfbb2759e40e810d1289b26584a42ff89dbcc4837418deb18168765d001012499146b7294b26847599809083e921ad06837eb286b10cff8e63602959940a4dc8d1488fc07c2a7d07f0b0532386d78aaa2113656e61e52e89369f1f1b30fce7632f5a8d81f3589a350eb75890d66a99340449b82b72b51e9efbf1421b115a799f386c85cc14a3801b7bd0b2678da0c695716597527286836d9d482f145a532ef5643e6c3a557a57597804c9a214974a2cd307c93696ec7837e9c2df2d31ddd14bc2349d862adad7ada26fad0ace5fc17ecb55fe8fe8202aa86141589e7a8fd31ecb7f53b8fcc6086daf5f9fe2b7f034ecf31cdea3387250221841ccc218f1179603837e0829498f9d46001919b5a67e9f8996f6532abc04f53d1a25a755ad6092fcabc4ca80a2c806b26b7885115b916852d7414988b6da3c3307167a6dba50ff3641c28f18481b20bdde13a8776268c10ebe6530559a7cd63de41711f324a534fdb5798ad0b92ac7e0a66f700e659b1e9db701ddfa3832448e5eff52c21971fbc6fb1df52c4ffa661b7b7187257c28e2386620eed069031633bde0f521bf41a85bc4a6c31b2eba1d67cd74cff5aabd6bd366d471d5ef1da0485d6ebade3374373a392eb64200acdf47eb44463e9a9f224d931c72d3fd7153d5a272bd5082f5e6bc6951fb1b81b3583dc006b8622ad8f14d8ef899595ef29fcb58c3e245610991bf3ef695ab68cfcb8dcf5ae26ecc0be2938b3b57d826db6d8f3ee3bfea1fa1fc368ca11f0618a854cefccab90cce24db2c1a7c54e96242bfb21a92d265adcff8b087134c7bbf42c58c72bac5630788b255f9e9ed931695454a282072272a358bddab15a580ab9e34de220b55d4e74653067a0ff13c030b17a75b60e075aee29d98d4dc0ba0ee9e3279d0214d173b0b1dfeccd90c61a9bc60917100a12e285aa01398618acad4581b198c99e8f19a4bd67cf835394a9d7b1d7c00e9c1fa704db349530144b66ef8b71c4e277cc635bcd8093258a33051f4d728f31911dd24ca73512cda4bc48c169949c70bf2cfac331ab940d94ecdbd44efdace176b0cd53ea20b9d2d24f46e16bed5630ad90c6a325fc5d09b0ee7046f7656c6b3d81a92dce5aec97aed1ee72fe5995d259011ffba376c9da1586ac0b6df03b1c08d9b84063484a45e0a6eaa663bc192a459a8c61c5534516b0f2db4fc2aa6ebdfddaf797defcf4d4f6fb860b5010b9159be24cceedc7125d6e8fce97eb705c6e8c2e02344388db2ab4ebf441694b1490cca76050836a4fb34ebc892076f797d453ac684504127736993a58ab46a95da98706293193a440f62e6051a4ad9ba8021a075041eab84feed0e4a7d32c446d2dffa86ebc48e0fe3991d3ec8c60e94b82a026ce5a47c9cd2208ae0fe4cc1a6834f9ae16814c2975f8395c262be40ffeba251518f2bba3644756c1bf925e68f108525804debc272d2b55d90e77bb6b461fcf53ed89c804b805561db9f5d2d7a413eb90bbfd88b072da7cec6421bd9c29122514e12bd3709285b73135d5460e41c01825edc563e64a194edac8b4f3c2ccbd0ea36118f59212a8138d28966b3a60d50416b443f8453df0ea31fd8be8c3ff0d0464b06a6903ce79f72017bf44cd9895d587cca13ac87825277abc746993fca05c5c8bf48a2b55a565cca8dc9183db82a76089b3b664e44a955ab0caf17ada68fbc6b79771ce40130a1f570070a18c243aeef328d2c0cc3ef556abe794008bb041b20e39edb6c000e6a2b6ccd76ab032b149d96687458821f2421cc4ab3039d8253acce53114d471e973b5cd1df5fe0b47a8f8899b77feb91a1d9a5ec5b51d5412cca4b05883511dbabae5eb37b1a7f6db26052e5b57c4c67f4c563c050a4f8aad528ad0b8872a75efff7f911efc0882b02836d163f7e4b39951317542273e6204fef69690ff86f762bbdbaff7399f35507b1358520e8db1e2fe17eb5732cb2b7ba6339480241906fa525c55f80814f9b714fc6ea8a381ab7664af7e867815529188db622385b9bc201c9a097aacf38fd55420bbd177facadb44710415dc4816fabe9a19763fba2befe90f4c02e4586d63b1daf7f17324e71aeb52f89ff3f383ef0f041853af46a0948dc1728c907c8f69fb7bc24695b27b46098951c5c947ba11891733ad1777bff6fdc133a47a3ac2201e469279bb6d277f7853628dd68dcfed42553074d50a84a6452a4350dda1d822c5275daa00208ae462c7c5d2cc752ab54b50c533d6b53b8162a4cff06efde52b48d344538ea9efa509295c609687486ad9c537fd2340415de5eb581b69bdc1b1e13885793d10d3d0e27d0aa425576df5f0ae545a888f0b3358b14d67fdeed42e67c3e51faf91b5e54a5ad08d636b6b96d8c4f1eae84146ae2a28ac0893db618c6deebb52675fa203c77415c83d8259634a4ec00c250b13edda707b9730c2841fdc7d1bfd6a03cc671dbff409a7daa05c2e1f7d701cf9b23af7a48958aac07d6b2ecb7a77dba0d20665526c4eed885c999bc4170fb91b8c85a9ad8546be1733d15c67b3dceb4fd739b226115451d5fb6b50f201b41986314e1ef1b9edc96df216641814bdd702d84aaade1c7c32000ec6771be184b3460d0839152691bb53ca0dad3fff1195b5b175ab5b3521feeb0af9bc2d44b490e85729a66e416188a9be5604d92fb2253031a7f13f2b365eccc5a4b4e525f500db519ace8ccf4e28dc9f0d671a1e1464cfc44cb570809bf3ce8042574b80a94f463de21e3fc2889ca278f9793f2ef0112e0658c1901e7e533fb953a2eab600ce298493277333a71ceb99c69a2144f699631b35218febc0b91dfe5584022e377cc2d1a84d40519d51c592e7bd57977d5f65aaaa2dc2e30846866c5cb1284b6723fd135f5654a865e5804f0abf69969170ae61bdaa3465c6be95a0bf150de29ed655091236f161d574c65ea56760f1ccb211888be9871bde82380442a251f84c09d2c3f239cc16dc44cb10979870640a185e470b0b4fd65169cbb30b1463712ea3f7f5e370fd195f36ebc38a6a34ab05cffd72bf6295e698f66902d367d2f16b7a4f8e0e5620e43ce2911c311c67ba401ef6deb1643054fa6c891d79ff843a89e098e515247d941b548351152d2fae0ce2202e3959c24e0b57711413927eca490a8a197a907f3ea3035ae01e7cefd3aace4ec32924b4d909a80feb395174b86713c401722b335909ad927713729e5b75b9f82a06dccd9e71c627385011b49eb0848b2316733904ec731e53325b7f2d9fb2205ba0790ef4e200de2daa583a131ccf6f5638cfee9b62bab47fcc1deb6e819579b20e40297ac02d87606007bcae6300d2682dfadfd347fe6537b9849e006010a03ac18258a460007da85094825110f6ccebb2b4695a4449b3cebf20cb5b829b9e7a98432bc6aa319e3c3e6636e56bb0484954308b2b1f4fb1c6e17899f216134dc035e8311e97ce9f17b647142a0f22ec5b57cfd7d26a443b841ddb22ea2c0124626168f4c9902d2c64475f614ebac2efb7c2ca1e836560dff955a86a5578ee150eaaa6f0812d0ff99b625211d9ce078c2d127f9a710bf89159ed380e700ebab0f0aca4aa1e50421660b0294b31a78a39ff0a569654223a72dbd9b8f7e0a539845ffce484fbc40c87eab8bfe0c105926baaa8e06a09e510f0b50083d0cefd69870b133969e70d396b43699a7477aa171cb3b92616ffdf99e8c6067b337048bc2bf934ad5d767a669b02168be60fe7f311f29dcd94696740d1df18d8460d8f1cbfd6ca9aeb63f4b5438bffeee7403bde76c42261e1fe86ab6f6452c6f03844e56c83d4172806073800ca4f1ac5db69db4ea436f5a3b2f9060931e5d9a0e3d21309906c62ab5f12a62cc83c2c2dea45828fb3d6b736e8f18bd8cd432f5d4362f9945818a48a882722564307dc9fae7152521e1a9679b07b8b5318f47ad4a03c5a5a853219d5933d9099a6beedfc61aa7a394ab335d5c98f06dd72944f591717e5567042d2b931b370ca8672fc051b6076c9f9609d2e56b1e146771e3620cfda881e4d5f16bdac1e84cfd21ae563afd9146ba81d62e1de286b0fd5b1a169bb8d2452ce9061b749fc3523b5c7557de92e61ae9e6145b0213ed93c88611ec9e1b5e83a146c278738a755234c366f286837cbf0e5c3d414a95969c43b6a481011661766d0a9464d7f050f79631798cf34952ecc071d0c7bb0a58afe46f6b8eb4808580589a62e4518cb29077717e9f67b5975d8ec1ada1d6d3f45ed4626462c183380279c8032c822b148e995420e1da00de54716d62d148601368fcee3f02fc4a23e84a749089aa849efaddd0d313ab540af2e750a029eedaaeaba669069f2a0743212e9cdaa9012cdfe271f61ee6470a1feeb9a35886b76da20e8882e934b84809409a91743819ef1020e9091a6194eff4080b71f417fe026507b8b7b345f5f1c796bade6d149ae48a7022b2ac962b80a1c0d9be868b20818d242d4be4da7b0e18a7efccd5d203bc439146d5f6132948d4b4e84a1dae124715bad44945fcd2eca49d5cf8baa49326fecd712d88829ce68b83e5e4e5202ec6700123cb129648c2651e21f967df63d5e7348d53784601c026a3f7247dd139a4dce521745d8ab408d406416b1458531f0fe876a4493c4863c6eff7fa5e5ff2a69b3a385b02e962cfe34d0a018ec582909a5718352a2e6973917b5aaf02002e7362c56c8f618887aeaa8ef9924cc24c350c94fbc2861ca07637022191a40e74f2d42e4f653b2f4337e5669e90b58f5e901c53cb05a92ca15fdd936932d32a7ee4fe570bd513a01f8faabcdca827e56c4aa393b53e09941b892fddc031184cb292cb8a2fb02a43b2313c1904af2131f4f98fac5089668c88d78a69716823862242ddd303d6d2485bd47c7a6715aee6cbb8a5dbdb3aa02626ba85c84c863bdc7ccce31e0a5c9efc11d529a91b690e49d0144ce9035f1c41315667563242e3744437af24f84433a890161c7d728298d8c5042f488065df3b5c5b68ed97ffc27780d7dda1e094f28307a39539888ff8f93b9a96ad9384ea1c03ba5383929fb9fa397848bf8a9fa16048bfc8197f27c985b814ce471df2a0b419c1ab655463519462daa144062dd27353baf79dfe48cce05678aed8dfbfddae8390204e4424db92a7da3c90597b9aa2408f30facd451cf82171106d0fdc77963684184be4586402c3122a356959cc7a1487de242b6c0534147da21adb7d4c28ce078799e286557a611cb1ef602b0ed125ec438e65a59eeaf12b75bc446a126bf765dad2a7108e97ca9be667455a60f3e1e7a135047cfaf809dfd5b970df04356bcbc739d8733fc7111bbc5768e11bb6162281e6c3b5af31154f77676da0e319a307cd0bb2dec3b6fee77aedb44ea056d994a92d440f1e639fd2e65ec4afeaeab0af906ae131a96421ddba7c0bc00cc680a6ac64d069df18ac0297e9a0739615e3d136eba2409075205c2e1801b66ea9cf6d160accba8c2ebb29b70909ed583c8e1c208db2ed7100bfb257acecd55a6b176e8174c944406e81f40b8169b57faadaf5f836c33ddfde8ce2a9bcb3efbda0349210872ab2c33071c3a1a998576a3d69bfd5d3e962fdbbe31c1744e6724e5a1fa41e36fec0bdb131b3a21b8998b80fa42b5a3bf0c476d35e095aeeb359c66538a095da85a138bd3bfc863d7e05c0a0e9b2547ca6272dd371f55e41809c22274717bf6ebaa2481b1c41b2074efdeb68fd0456d081d6b0033178d36ef248674746731d1c56b8ddbb912306d5039d16bcfaa171d71140ab22087eab256a80f195924b510deaaf41b5396e42e077f93c694a51348e38a14c0949d98ae86e70e469864f3fe263e9ede6864ede52e8e4065bde7a87f3df2a7fc0ce700b050d9b2024ad67cb8317d25bedb17d1d39cec0e2706a3405f4b74ad79c9063911230bb8ce784b860fa97a5ec3670c41cd8a1400b7e289ec14e83530e5ac5beb8fb45bf23524f24dc30dc4c24c7289a6c86e98d1063f9f16f42a692127e08f6005ba8d91a2e9376396948d4b46f383300d9cc3458f99cc9db7e1fd474e99af0e6dcf057e8b67f52d6e24ae878b8796333d77dade105903f8bd02c8fa8681a0de0cc112be238792f00332e57cf321afcf74461db2c97ca3cbb0ecfbc69b078c50ea9ef8767c6ef314f6266555361a5a96c7f8759cc8db820e3fca0f9c0f14df75317b45e101f7013f3ec32b986512808f3e14a5155fa9748aed67bd23f70288342116e232c2a357cb6d651b3a76a7161f8aa3b842ff58870ad81d602f39d0eb322c03dd29ccbed09893517615e80520fd016774b0bc6b2ac8f6feacab035abd8faea1e8d62f82ae81ba50bc2d7b90144083b79dbc10e26d28f097a5457b252c24382300251261b4ff4f91ee2023d6dee8422a4a77dfe98e98a5a601293229a887c8806f881eaf587e763863bb295b86efc095f4079782cd766acd62b54ec75a34ad95cdb500af9fc0131481a67a14e4fb61bf649064386340b430c84ea0aa16a05a3b77d35045adae4a532dcd852650f37c43ab123a657c2f4466d02abc034aba160fa8053ecc36c7a6edd1e982fa46cc8ddd5326ac01755e2b737fdad37eed507e039ea6b55d2c6e3a9bc6e47c9a3c4ae58fe74afb6ca0457fb3487c8b10f4af7199a8f461e75234850c16a609f9957e37d9943b60d51cf0e871092cd045b1710f6c142b419552d4024b8c1277c1d5e0dded55fcd4809afc179431c65b0e1159c6475b7df7f549ecaa096527217232ba2f069c8ca159b88b98768a94ae4306255545a4a26f6a6e11c4b212cf2605cbd42db907482e858a329fd62376dfea31fa0354ab109cfbef289709c18c41a4a59f04daf9a1deda9ced745952424038a2d18bb64fcb46d9f8f9425c0e6c25f263556b63154656d9adf1a31e247962818304ec7a25d58c6ac1888c5a4ec3ec69b02033d1a7c1e80b2be087ac21148344c5018135a3454bc49ddaf5d85144db13fe01685241c0e24119cc238eebb3ea5eed1121a5589b4c63eeb5a6b318b1d7ccacf150d56be2283cf8d3d7147fda4efe248ef80eee39426de7c9ba210dafa7f0678991dfcb821727c443e99f70b55aad5afcb3a7068f79994ce9767030ed15c623924b78afdfa89b8b392ddf1a9800bc6cb783cc916560cc9238554d044e256b7447c2ab9a7e64eccf13c5bf40c8e2c7b5badd1ed3e61a4a7557bd493da112fff569441e1fb20409966a631e0b8a686f3e23bfe8e59af86a2a8abb320d215a061c64e367e0caa27351a4353e2574610c7219b4ffe6c282c8841a914385fa8c434a798b9c039cbad5242e0eeaae4f57bd3be464a7fa71a1067213d0b7a3ac7a85835f2e56c8a2192b99d6d2481d146045d361da03d137b4294e179b70a00b2185029a7102fb12aee2fdd1e0e12c41cb035905d33303f5cf568df9e5901c738856cb417a6b17ce5f7f4dc98cfe4c1b6d4290541d676da06b429772d0bd4a7b53ae5b1211c7640ca1f757fb2a888b1443343f54a6a7fd2916cc3867dd4c0f9308fab364aca0848b43d1ef5920effc53f18ca083709c3b11d4d3e2cf3f2f595cf5ede8c5ea1787c3b72300ac8e1506994c8415932aa3e5a9d573d154be4701140b3d201ac303f614b22180c7d03237a8c321daeb4983d547b1fa3c817d80a78e8bb9a4061f7c26e14cb4e4e68c38b6ed5c4a16f65b5dd31db23af0818f0fa85839a36e1186be81197eb482e24e560e1fa709fc2644eaa7317cb01a0c261486616101b36e524efb6b58a3c8b454af0887db8f17be97cdd3b64d1cc8848007c2fe30b0ae66926e41cdcf8288a1479dcc2692996b2c7183028dc07a0b1bd2743984518e3ec8daedd6c8d83db4557cb86cb2c25db57728ed644de3dd68fa2cf72abb693122f55d0723ca3e83f9a512d03bc3ebd926cbfb060ecd95886f8e58588b7f82cd44546fb668253f935d30200b36cbee0f9f4f9720ea1861215e8b82605c6436161b7114aea611aa99df03d08123685cac559408bc1c1ffc171b42901dcfc08e632f14d81de4749b6be5a184e87a7138cc8f386861bec7b56bac261a196a75b3451890f3701714a42d24707040b0c2063f5537fc3c035a3f25717eb0e6774ed5c44d4438b597fde49c8bc04843edd145b9a157423830ad3efef1f1d2b549e584a78bb17d25d8562280228d4f253696c42bd14dcf0324edb7b94243fcbd2047ec8ae285afc0a3037d904bbc8e1e1a0f6c897971e6d8eca68a16282c89960fd7e3d6493a6557451b3cf8e981199692ab40557358cf3e2dea0f04eba11df0d5d4653e23cf174a41df0c993c11a4b1a2a9d48f6cd0161e29ca21583e70465a96da071f68a2743e18d0c1a9369bd67338f0409f2ada8605fac7335c5d2576b0b2dc7318a6065e79556873a39614e58d3f65ac07a92759ec42ec13f74a551e0763b90d6450c5a043f330fa08057970267ece5a018987430766c3420bebcbd426107514555434292007c932ff0012302a0de0e4a5766aa53738fc4df29463b3615e5a5b51b55f128fcb2b288a96bb40e4072c3fcd49e501912b067f2d8c7a34ea6b56a51785d34e1b1edadcbacc5c9f0941094538e43bdbc157c610eb962957620f41d94d1fa16390625e6c1cbeec3c781584f2140f6d27fb22148563d45fe7d665fcd05a536dc2c89d33f6d189df975067aec5e46a1e70c6dfb5ef64cafd9c163f3204707b0c7688aa77e8f0590c8b1d838c2a9ac08e04abe021ad1eb9f8af7efb03f70483cec22a2e2fff7fe61bb1f1ff26d632204f7600cd6c6177ff870c7ddf33e380f6d20e3981374f6025022a4d90cbff00c14f7ea7a5738a2c9a0319b389d658c8cbfcb0f96e50dcd162f52586f23364428fb1a3c7d5c8167645ca1113c0c2355db52a961144b79eb72ba37f47d7d0afe94a02a8286d18f6c9abce2db0282742cc0d34504a7767cd853fd83e30db09449dd2b9aa226f954d6e8ee00a7346d8244fc8a489e537a025c76d1eb89ea11a6d7e56fb754b3c45dc599b1dd1faa59a22ab42960becee7db102ebe4843d0952b809e1a24442a59303ebef433acccc04d89fa6ef72803a025f1f8f303bb6878b7ceb57851a5c6486117f780df471f08c1c6ae42a3d3cdac202d6e6c8ee04a0c5d522477c174fe14433f8107bce30507b7e6037a551c1b2371b6681320ffafcc0db44629839a713e0dc7dd6e8af76c1050f4024efe938583646226095ea8eb643c08e47c5c533a9baa655e99226626251a99887938f397f465a4b975a86d839166d185944a5b3b12c5c33c31233bc135e4e5a9ada97f2833c010caa7f8bce5c1785784daa19377e02c4993c573712b6a96f565a5b4b3d9b3306616766a855694e53f3b1be88d0edbad616f63b59ba052a6acd4e6a7bbe18d2da6370669e5e778ac1ac272f4b3d0d96c573e50ec1e7d7718e24a735222b0d37d494b10262925502d614f9504f811e696ea4ab390bf4cd27e8f07f50f516a3fb42956fde0fd248025d54bd248eeecf49f163c0641e314a3ad8a9ed5b9a78e9b8ebd7667c8b86dae8e3ffe13ddf647da35da6fd16107548f913cb517faafaae9223f6c514a16019af5892f4e7e92739d0a8643567b38cd22cd767a422823214f94ed49b11054cbd9ccc311228cd299046db596561b4194afb94942e4cf8f727f51629ef422110d9d17d1262743d30cd002644061daba530258933ab3829dcf7022a1bd6a16bea020ad8b6c316eb79c11350df07449dd6d62ce4bb039181d3ec02422ff424965f74593c1afff09e79ad6438e50056e16266d00681082bcb858e7b1bf9efb25951ebfb0ecc80b7e18bcce3e5e69e5cfbd604834b74eb6c34efd09266d210273f5194f97abab4f588813f004d1815bf2e7806ab263e23378667f13b46b780d6a33defb80fef6d350fa2fec67089fb917aa8695c541ad7f7fbbdcc000e75b4a4d677b82a41e4d8ab2e1554d53dba944bb0e7329fe39a12d83be4b1442db3ca49531d87d5a55975b3cfeb7c0ce3d5f556988c16b14b4e183f233ecc751ed8719a7e2a98c56b99d5a1bb7c00791fbbfb4865a27f842aa1bb9b903534a5799dfb34f04567f6ddecf1490f6d7c056275919be859bbec15882fac909fef09c12e08db8d20500b61d7f06e59bea95c84a0733fc9292dcd75525befdf07a6a2e4a487d56619039d2c23bf20715513a3ef9b42237bba66cc427ea9d3999558fbd8c563b4ad2f34c6728ca10c1fbf88d647a145ee3d1b1323e2abe3179145f30d73067cdcda17286e1d6c706dfcee61e5cde4635de01c373de3737de040c628e7740197943035b52e4617bfc9d9be01b79b8d98f87d3ef783262a25ae6ba6437b5a97cbabd8eeee4d3722d04113d8078074edbadc46eb589c04b9c17a3a5f0e5e78472136178169ba24c94efbbed72bf82e09d922ac69c2e5b916c003e318881b41ae2a73f278ad619e04aec71a5f927022c53cb484dc29f2d63d3cad2e6988036e53362acb0f52f736e359f17108fd257d4912cdf09a3ce2d9cc9b3fbe9c2a605b67c9c4c4d387d63618bd27402e683ab27fa06d54c8b4bf16194c5025f0406cc965ed32c18919956acd019f5e4e515b8e0338d52466210137ed70412ab49ea2a571bee45c35943643de545db0a596ea5977fad7f2b9dea543fad2ec451a38c540e21c303da68423600b57387090a17c4a157024a8c0db204eeb22e88d080719d65e483ac9c5ad42187b0f4ae2633bd8d272dd6718c335e16fb550a4f9dc0e7197811ad5019ef60fb4c2d5509d8db6f87872871e12bebb5b4dc9bace5ee1df73d3065d63f6c78d112cc2b918b5f0705b8e510cb43db0988a300c84c34988a11102fd5b0d895f91505120c4ba6257a4973ca7978718051b8510b09d4e84c500d8a6cb9c898a510d40cf24c04e563daf49371bc880d2caa69ed33fa781196fb92d06a8098f2490f848fb7402d8730895d78cd9ae4e8a625a9751dceb7c34d4f01d345818c439304c5807b200388a061ec39290d69fafc2e1626c346d1d4c43940b6afdc236218646c754c9fe4fca8f75eab0deb4b543f391558ac6970998da9441172bb30a234de94ecd3d74460c1cdcae463ca82df60e79390161e9cb0a0d5363b98b2f3703728b5f28bb811a98ed998f13d8eed2dcb86df2f5b437523b991614f10721c9343ee0a1c812f56afc3f68b490dff3dc81ea4cbaac9411cb6c6561dca567c205d14a75f4a82bd39369e0272d2a4c39af0d612b19dc65661640158ff79e21e09f9a24704ff76e5cc0330d0c340987db4d6d2cac69c9639a3d77ccc68882ab9da3f075ae6b9d1a514e0f3efc43798def98fa7ecf1e335ccde11e825618123293bedf70bdfc0d07051689d6df4091daebcf857634f3bf9e7d1dc04206be778848ad015d4920695d8a6a37d0150d2a8407a4aa548b0e2a8d966d62e69d9205125b398c765867fbd93999e403bb5ac264f21b0842621757d5c2e6d8e8b09a3e59686f3941870f1ca21e57453efd26e59f3e6aed188bde465dcd98be06124d7bcf5e18f348c7aa9330c728ab3696e6012d52d6ba5a49ca1f8760344173aa0eb81f71d38bc91b3bb5c3e19f8f86d068ca805e5fb030b17b021501f50dffe5f1837743416c5672d9e370c74acfe8d5e7d81c7e87ebaefa75cb5f1ac40cdb6b6428816b95686137754f507c92ab4386a884b2c0a370fe1348af200ae98e56c9f43b750a11d942704c0f9a54cdcfd0be6a95ba6719c084177d64608406f8d6b88d10bbf8ac294f4770e7d23d2621f9965c80bb7f3d4e552c44d6f3c66236f3c424b8c0ecafb8f4c7d003d604afcc3838e41344a1f955eb14c903de98446c765b647182dcc6248474abc8f500fff69f4ae0ffe9eb6dfd3ec824c0ece8e102dcf14609f59725cf9c4539b0861cbfb7eea00a9ef0960ebfcc2001d01d48550bb813c24bcaffc72fcb28b48db9a8433d5b01de0833815dbb955112611d697569946b899096edfeec0d36b3d9f1d75629477322d4455ed7291d65a288a63e46b15b108374fc896edd8950cb376e9a274181a31dd8f21c41a8d8ebadd812413e491e7b62354d48c2579cf400efcadbdf208913804013020f11233a22c7966d234d8063f219608521f2360f612b91a3df76ae51868ccf584b5542d143fbba94ab8e8201c23f3cdd91e8bc950763f233401596c3cc0e61f596cec0c4e554d5e0b1e3cc338dd61eebb7f0f9285272e3a6facf52a12ea6fa6122559824b494af70e99a27b28a4f5460494b4fe0b94cd4272b8a6a245aa42cb42128b7bc38c66a1311a1b97e00a24c828e9c10ef81cf2317a41009f148c9260d02005b28b996183dd81f6a1e8ad6321c1e5227cd53d341672f7e4201175540168084a8ecb06f60a1ac492866bb4e5c73a04648fc6f3c28b81b7a183052c9ce6328286c93b3fd00a52dbce3cdc6a6d2663f683fb5c63b89fa3f86b9a2a8e51a02147c6356a6b05d854ac3f411099721046263677d7f4c9c565701a086d48cf79ef906b4416ca847e49ad06c211a821457177fd7cec2e4da1e1bf9da3a98008ac900a74ce83ae4b96a7608b53885ca14826a83bdbd4fbd37c0a17645e556cebe348e61454a9db0b3457c72c8c215392008a548be54cf7752cbe57b5cbaf83224ae533c7d401a5cfe4c122ec25911a27afb4b18309a4e8a7084c8a4c488942bf47bcddbbeffdac191ebca5da9ed54bb51a8161214a982e9e1e3e53885dbac5ee2749a105dc5684057401e3ac1f5b5eae6639e03405ba259a9b9eebb032c79921e2cb0db2adf5a096dc0e602f96481a43bc5d8e4621d0a8e965105ad735633c84c43f25f10f92955d1e45782b4470857371afd1a1f7fff6968352336cb0ddcb86e2b6eed73768d43b1a12d40f925a9c8625ec404221909b4c5a16c46fa97a5d2029e0b2aeb1156a9888150a498a02a1752ef9ec04deb290cb8274b728bd642328a05ee4db61117b497e036c2b48609b54c495361d2b7f495073988b88c94e57bb3a6f75841dad6602de6b371ea527b3f685b178099528cb2b230f1a325c360b8d5340bf5984f5d8b49923c559178bafedcc934c88940823b81231a146c1ccedbcb9062eb37f42bacf399545ac14cb04935906bd25562878a32f37543e42adf7628e84e9b2418969bd94b0235e70cda2337dd64d75e170e9640cd0a6d7357e4efdd4517be268d693ca0e5c4a39beb220aa26ac5b435e7aa17e43edbc951e961192261351a26a7d40f02a0a9d11591774ee01fded1f30bbd468402cf33042e17822391d68c15578e5bcb83343a3a187a0e28dc0a85220783d638cb08ddf2bf8de7238c83de4131197b2e7ad9a81083e75b66c6ace005e326fbb3bb3caa68943e8ba14fb827fb1551437a9ce4e108d0d35eaadaf22c546597fd4ac4e4b1e009c4078e3b084b90fcaaeb21653c0da21cb400acbde283dcf410a2210dc0c86264924c3c5d4839882188805250883440b1b8930e09b6c4df28b8dca238405adc0602f5680ff1e75a268b04ceebc1cef926e88ee5ffcff8eda40d9935a18284799b62d334e5dccbdf5e7d7ee8bcc23dd81c313c18a704da1e0ea220782939aab1ac0c0a6a541c76ef58ce0bba391f5b3dfc5946d8e9cb9b82e55a321105034fcdd7b69966ed5ebfcdef1880b893593f40aaf492d14967c3815cb90fc1429cf845beb28507f00892649023d472a1f67d163a803099be0c4d9851d996cad71d06ec1a35916275aabb7467216b7aafcdab299d2018136f692eb3d60e273856e2c4c9d12708dba412374ec685aff0061006b7bfe5185d1663d05e8ab99a934494959475174e125efdc257a48259622802a11745aa7616440812768cf8d1ca0793b3c50ea78e0d22550c5bc63870ccdb4b6ea1be9de5a3b31978a1169a314135331fb08e7e2bb9105670201f07dc3b1108deb0d0ef6596ed26ed95533d9551f20e4bd394036d2d69b39e745bcacd0a213f99b8cad2f19d89f57784fcbb0631b5cd99c409990c25a41c541dd1004a52264106ad0d3c1f884da6f0f5a0b8c5f052010ec4d94f268c2b810865300b6979c323f21b39dc4e66a7e4d9491da6b90d74d8926308e4054ef9b3a50a9698c1cc1b7f63096e1a15d3d51b2f990dfeb7ae46d671b934de41ff149ab06a2383c37c10059e916ace4f3898e0281565f9e0ded0f07e9a57c7ac6d6fb1ab2cf48a0a55d7f61b0a73085e44ec18f218c28528123c69b66aef4d97603650ef8945892233437352723ce45b9020c541db76291b5d3047a3579c22181ac917f1769515785b3150fc6ad19a038102a0512a3e9452fff795bf6220cd13fc289d2b34130ec851d04186c8926020853f6814f99b48de0cd8e60b4a3a892af4bb19db3bc3cb1f656f25ad83f22ada781accab2200cb8adeb1724372b0ea30c88acdd6ab3fe624100cb4031f75ab411ce2ea26b9158b6f9502fbdb6c96a8b2d464c0896cb20895e01f36609b6d3dd93a49885f211b677fedd59559d6524825d6aa75daa959bef1d13bbba53b8b6103801b2ad4f7882090f980870355fab13f81041f451af878c4830ea89fb94276080209db13431c7108d722c98be18b8608e0b8bd568ca6ea0b98fc6ad569821d456719c178440c5c668db1a960d5f10ec9e14deeaf18423c6d2606b6a0490a9b927873df5c3fe856defd505e134d9cc0fe1bab3b239c199d7d36fb50e8ce37a3963ba6f5c09f3c6ce9d9b8be65079086bab077772615c77c9f23f9803f59ae1bcdab2fda528326e1744a52e74e374a8b9fd6895ff602280e2944d16e795d0562d3bf2d75a8476550e915f8aecedb0c6b588614b00ce58464745604bc0ae8164db5cdc34582167aa30b9d10fbddc80208244e36fc6a9a69e3b148300bae2f78e545c8dfea142dad13a20a253cfe0e3c3c433de1ee0f62e9b0206350253b601d2fb24dd07006a11c79678faed3fed067e62a143660fbff921175db0eaa5eee3041f749a0fa988448d450fd64392e3985f2d99f7ed3e85e1d8c26744cf84a545090c0d33ce8a4797503e7cbd7dbfac810e6578380e7835a51a8a51b2cefd8bb5baad48a337317df17a3c28cc43e26752847800a33c257bbecb7eca49f493333814f11230b8b0d2a396616844209e740b2f3f62c1dec71f99d250c91cf94b1a03eb82b137a4c1d151fbf8fa5fac78d91566a7338eb29c45dec462f6283a730957d099acf84c1be3ee8c025b91c8d41bf8c4d47772e5690ca5e1760352bbf79a5eea29c349acc589fca5d398f20235ff0cb28d680ae0fd899bbed7e273e7e2e3ffe9468c9b7be9291a9a8c6d1f93ed7375bf4deaf1ad0f8c093293b49d7c5771eb4d2338d46738ea6b0ea52a1ec8735af28550b63cf99be64186965531daa0836ecc8391c221c12a20093b0121eb431848cf0bd926d7769027aa768f05fb4e094a730afd73077fb4fcae554e153f78e2e113b98d5562d85a00723c4a18de595549329f994dc74454293029233242c0c5272638ea3417b6ecb5427d189366d454e88b2bf421f0cd69a3c38d7740f3f8c00067149f70d546f82a4f66a52fe0184c7e474ad60e3f7ccf33b174500f828a8e20082df494d6d7c79b8d9175b7185eb55ce8781508a4bc01d98b8c980bc8e38e99d574c8d84f1c95d85e0690d09321311b2412ad56ad1956e70d4597e54a3f4a8a35cd4a9ec2873b9a8a3b4a867e946751d38a89b47014c250bd40a80b36494dca76ac9c1aafef602df61acee785ec9713fa2aaa1e7249c0d8b75de75aedc61acdc71acce615ad9615ecdc1589dc35cbd83b192c3b4b2e3bc2ac7b1323a0b7df1742cc0eb0e74bc6bc06e1875997b43f32f2359bc0590f0069f1818f254f2a209922ca5944f10728b01e8d72196afedb25072d961a9c7e894075addc3ea0ef3aa1cc7ea1ce7ca1d8f951ca6951de615398e9539ced5771cbf4217a8f4496352e811a7cb1fe6d4e49b1f8858b6ddc3f0f6e367973455dad9dcb07490f175498afa8f4f2cd6fe4c33b498045cfd83ddedd15bed18a2f76ac51a3a8d2259461f12b2032fb40db67261ec5a1cac424e4b4ce083559762d4c1dbdc9fea69e882b6db6010ad7908b84d538da3e391100f582081da5c4858169d1362405b30b70b22cbfea82f9b5b8f3ed27ce2d44605aa3efaffd131b50f0aa64ac91bf7ab6b7f5d5fc93b8ea1eea11f8c1171cdfed89d27b2918c887b5829c14d50cafc7314abb89bc686cb50ee913f8363732627132d2aee0364eabdbe816a46ee56c7a19f398cda336b99f71e3d0919e4d90271be1c6f609d167354e4e7a8b08f75edb4f0ec0858d35ad2fdfc91840b6a9ff144c24fe0e6205ee44933f3049b8197a9192ca24a492551931f459215d8126daf6c19992bd8ce1428e63cd0e82030bddad08f2abd7b51e2e7cc5e525847717d87df1c0095a19de41a896f5c7253216794a1c0c0d311a13b02c003097b7eb29aa16a8360e3a59720983afc732a33e347b7aa1c42f3acdc32d1dc73895ca0c1998e2ae043502ed937aec8adb91495a2e5a9276c514e40bd21b7040a20c8b82c384169b1b3c57ec76012025046d62823029e6a934545e4b2abc25645fb1331b203d48c97ce68bceaa59a231417b1743c5208fd25e989f107b69f6442caa1f022133444481e23c458fa46863c81339ef573d2386b8b62e40e3283f40944521002d414700c735259fed08c0c49a0e119b82e3cc9ad22c8a130bec4adbad3a8dcf423e2c79e4dd096f777bc3ede79ceb02b829f2821c02a7b6b4679aced64244000ae02069e74787bbb933f8fd93bf64619806440012cbe1a0e23a20eca9b4dc2e3ff83d589cc4cda55f86bc85b35f4165803b585bf42e302a0b7d036fae3d1fe8f0b06a81da1def0fa1add5c8b89fdea31738a638bf50e25e786691f0dbeb46b6e742e14083ce5550e5eaec4ee7d293bd80cdab8ed2f8b6f663b8f3cdc9778d63365aa14feb67056c8544eea8c2278c472276671cae5976951c774d096b645582533c13a12ec32c77b41330e5bdbb2ba074d3f0008268a62d64ed5e466524986e63f5ce625a1b1292aedf511a4ff12fc9801d5273fa1c6bc60a768f3d3f9fdcef88b4334fef2fc6a2f19437f7c7cbe4b15d95e21d0e04a72ef240cc516200070d305978178b9017c4b1fd0e554512ed0e1e7603d7b239e613183778f9a5b81a5ddafeb1c30ca536d7ad0b35af58d575cc14bbc263c58413808dabf7d748e2bb54dac0168dd35d991aac928e1fe5dd299f3521bc753b9f8d3018c559024a0eafacb7f995e64103c4890f9b3b90821ec31180ed4d1614930486a770685022683a3e603acc95ab4e40e704793de69352f1e183dc0ab230cad8db134000f38b10ffea78f9199f2824bcbdfc16c50f98fd132a8601ae2824a7ab49c866fcde4517f110523505e68f885cb4c21a6f24899123b244a755c610704006fd5690c0e8c88a95fea35580e893d70ef770e01a659b60c61b873c4006cb04a0b0eac368deb0700f9faaa2e13747b799b17c514ac9c5c3cae1109331b34bc669d57b47833ac5940a44cacce2aa28c0b689fcb037d9109b0e01812990012c7b0900128f9d5b0ac817e8bd2208641d594078c2516b6bcad32e25c02d92e6535d1b5ee152fca1769332480ad3bb9310e437573673c65a36e6ef78cfbccb12645564089332c34232590e294304be774dfb86747ad8eee8c85d19ddc184f79652433605a6606209aac8227bfc6b545a1328c2cf6f679d929b630dad8633c23846a7e116e60ef0da8f937e1c48e45d9cc1b00474a61601bd544fb36f26f73e1e95d266d14af51f4042fa59003a8d8894a1008ce0ce183e85846b40487a86635855fa8e1330007384c5e5a08d0eb84147b72104812a4819f79fbf48f1f266d4ac307a802181886c543cf250c8000c4c0346768f44199c9776f47a2f45587e0e55ceae8350a2ef5c061c5e581a57ceb32d155e173b00a6bb3e8252a2d53890bebdd0e8c20e2fec38a20a47f06f50dde14e9c661b2913a28b0b06a8f3aa783efa14a94bc31b77ef63e62fd9cf5ceed5844b1ca537c26e3aadacf81b64e773aebe58242116d4a921e81f84e9686b39c877a66c54a199726ded7eba1aef845a6e746fe42a93ba63fad108ea4e5aa767d9d93b5d1aaafed439c9b6f67b8bb4140c6fa44821849dde108d5944f44fa5dd68be7efa209a5e73caea50a190325f323d988a984e2dc5ad3e640e6c8ba586b04ed4a5128cf9fc262eff0aa097d3390c0d73cdcecccdc5a920f975f37452384d72f23801383294a84ae8edb0346d967df6589b1f818a14cae1aeae06ff7b2217ae904792795ecbbb0a25b2e86c15853a400a275b00e7ba80820241c6883f7a02a5dc1ea308a7a59ff36ccfde576a1b192cfa57b991b4da989d2f4b8b0f844c0fa064f05bbcebaee16425c4ef23db513b6dbcbdab17d0cfe41a57b0bc6d3ea5a65bc6cc5486e8dd892de5020ff2d6b5ec19435c57ab0e1ee22b05144fb41eb8b0a14ab92fdb876f5e615f1bf2cbf8bcdd0ace83378c7e05975cfaab6998c83094bcc5ab724c897bca1cff2b67fc3281fe6bc462b6713f900b43fc3e72a3be133028ca16051039fbf0ae89a0b53bc0b327dcf3be4a1fec9e819c3955f44635e77ca6703a9a96ef241030e7c8490437d78dbe1bf76f4c70efeff0f1810521f59ef28376b373abf741c1b9a3a8319374c715e31b7836647f282caf3c9ce63466a1303887fb3ec2a1120944d4cbff277125b800bafbbb23901ef1d1aaeabb686ce9ecaf2302db55de5ad2dfa0d4347dc0982735e62ed5e8d1e0775268dd9ea488e5ff6db00af7da49c7ceb038c09364bfe56187c1e6fc13604572353203cb7c288dcd57f2d185e13e45673aefc624cd21db3e5be6408c0ab8892069882f8284b38aaf43ad59bb477d4d7ec5b6731937a79944606ddd234354f0641039dd6def6869dfc6c0f4473ec40d27845a5d4e01fa3dcaea6e8f2bef421398a40fa7aeeba57d408918d0525e5e29c76db29b9c8a809dcb3c40a33fec3a8a173cf6bceac9412e29912a5fa109e126e402a04011e5ea6c2908dee348470d451ba47e84937b160fab7389c6ea42155bee0cb4893c1b4c234c8004c98c4ea83115f5c28230384c4fb32e1efe726610d1425926d2627684a31e84516521ea97ad3df6b46c48d6e9b24538a431a5ea296fe580f0e9257c929de6578081339ad610fff1a4261ec41e343fd18388be777fb7de8b664738fe7e31464b578387b432c718878e8dd2b526ecbae3848cb66a0632ef86221bf62982daa5c06e7c5d53e7950f0da54200c8eaedd401cb60ceb4d2c903c98667f5b9827818d80278f8eed2622d4305c000f7c3cf05b33b6a852cbe587c6dd3597c20b4e7a9f812812ab92bbebc0762e8dff78fb0743c664e7ba2028696245a4e4530caf6eebeed9c2abb16f1cacebd4dcce3f3566c6afa33650c37667d8e8ad833df4de0e10fc1f3d88b85e4d2bf37586295acd42f168297987f9b3b43b055018c07fc4a33351f889d7059946bc345607f7e2ce78ea39d024abc8655b9979482008a9db67ad61f43abd616e2813d479992d112ebe629a9b20e37d99054c533fb153d04ecc16dcece91041a570856860269e4068b9c620a35af1c236a3b2e959a0a272e4f642004e68faae3ad0cf834c081ab6603fb10f61ef2750eb182643408040aea4a0f981b58e5dd0c2ce9c33f834a417338c8e54a9c9b7544aa5fbb0ef1d53573522914b4e3ff1183f6a6002f24f31c9a580ff653a8a9308f49791904cf531b3f0be0197c831d2ea76c448619038138e514da962f2aa0de86c5c41c15d25c72962a80f08ae0dd7be058cf9e703f3d5dce0bc679c803d5d1eacbf2481805c5ec1407aa0b155c970f8752b426f0e2d20016c46739094cd89db356bad89432f021076bf5c4fa3507e97a0b742de3148fe403beeaea2805997b35d0247fc3986f2e1b786b899c337d10809364b30dab44f82d59b1246cdb3266eaf58d43af2d7f1c4e0737e52ce1719ecb18137dca4260bc456042abcabc0582096aa5107d747517c8139555826a044fd224932bbb3eb4b4f1e6fa5ac1f21e7205b4870cd80dec620030c04587ba1c20e3ae84261c92c4b059a9c3f15f834474720db6072119509307b7afc4836d95b6eb9f79652ca2403f80b440cbf0b5aadf552a7ae695b8ef7cdaeeb3a90fca179f386a9ab5635cf03278809f6077d45e857068e20078831450aede3ff4a2a113205d3f985f61b11544e5ab56db660e3a614b335645a0b54af52d4eea3b2660983cd49afe75f845d0f44eb3635ce761da7cdd0b5847196db6a37840f07dd10b0bf5bf1faf23322b55629fdfae550e79c6a75d25ab56d734aeb17e5152b4e881b7f6ceca4d32ca66e8fd08dfac64dcdce0c6a03bbed6877e7f524e53cefbb71adb9be20ef7e4ebe77ffc29def51f0a82f43995ef5b8bfdf91ca7120a56017ee745d0bad4f1f7f4726fd1c04e228476d1ab36ab68e5a22ad94bae5364a699dd4679de272d2eb7d1cfd401bb5c25a10bb15eef296477116885d3e2f58ab55454ba7043b9e4a31e1918267d5a362a272e2096ef9810729662d2e73070f482173b1804ccd934f1169e45b9e16d5ca5bad1798961538ca52cb8617110938400a184cc8e5f382b5aaf060b01458c7488a51c9e699fc0c43a41812d2be47471f4b7c7e5398482185145248e1730c6d564a39a73a255aa9d7aa6d9cedb4dbd97a6b6729fd5972625feb7e8f3c1764182e701bb7792ed06c53c3526993368b6b24eaf93e44cad0461a5ae7741b682981b099d569ad9b6bee046f76a3a113eeef9501d7fa9c7be99fceabc9cddbfc87b76ddc0f2ffdd328b51a6db4c9c5be94fdeb94fe0ca7dba7e10ef1757fe49d853e7e4970f7f4cbe9441aa59a15853bb80482c944034f9a45ae64043e7e3910f82b03f6f1f1cb99808f1f1478229207fc230c7bf4c8f9d26f0799456faf7d399bcc82067691c865071bf79f73babc873bd8742bd9a96429e4c5f87413b984a64d8e8d33eedbc14687de7e39a197bf5a747922f225dcc1464f5fa2e7cb71d1426177c4f731dfada4492bfd88fbf9d325772a59ea565a60ed77a73aa25bc992eacefc0be9435d1449a3639efb72300e3b16f82ddfb5a46947d78a4d48a521e4771c2396a123cc8584177ec722e8180618deefc8859e3b6e7177bce2e5f700341b53e8b72906170de679e8e1f7e7c3ef1a5d7841cff721bc3d843c841fc2843196501fa5a9e60646a6773cfebb23ec5ab2241f871dcb07eff81d91c89dcd9347e46f8ed8d00395770fbdef8c239237876ff2c6a322b206b9c20a0f447301791b1a66c85bda59b66ee4df66372a1f3ebe888af5e3c7d7c07a0509f22b944a0f24ab6868de8685971f59f8699b1069e40b09bd25c492fc17420f23f42ddcaf78f1818b13375a78f976d642135c888deeefaa432faf29b92f39f725147aeda934ddbc976897d7fe258cb12694adf744a64be869352e2d2dcf69a18709a90ed92fc773715c38f5750f269430a16b2ff6ff7bf481a4c74941304f44c2745f4ec825e4d21246bd238c7a8b224d1d4b9af0cbef5af5cbc138a473ca4019983dce65bae4f80af3e634e84979733df2c61af43379631e798f34e865f21ec58451bb10ee4d8ff28ea10516684a417ef8c8e1feee08690a6511d8742a697279f9ddcac5c5e6b3f932cc87710e554979c47df0e54a9a44ab9e4933a7aca26790dfd28a9eac493311f05bc2f47cb98434f5f8fc5b3af1e3b76451e0b78c12fe962d1fbfa51513f82d5d12f82db18800047ecb2ef47cb9234fd2b52513bde5115b36d1f3dd8a3cc9ed57b66741fd763964f8ed30af923a829edbc518f2dbc3d8f942cfedafd36fdf82270b3db76b61faed57307121f2b74f89e1b75ba19a42cfed551c01859e73ae7c07bae6b743d1f37d09c7994de6ac81e70086dfee0301fc761e04e0b73bd1db9b6c3f42dfbcefc8d32ced9865c72b7abe06e469ba660df234bbd891ca8e5566d830b87003cc0f79a24054b224579e143c7f4b95ec9927ea4a403ed157021e0199c610f007701de091b890bc015cbaa60cf04764ecc8db2063363c4aa61ca7f610d9719cba040d3c8e539f4c268e539d982ac7a9ac7984e3d42873e538b5e54268983c334c2653358fd02e7ccdac41bca94188354d1ca75ae1427ae6a9ba268dacf826df945c5a4aab21ef510d5f246f5ce4bd1cca7be492d2b2286f6ea33d37f43c7dcd93a6c32720cf3af008a0310efc01686c038f24c734f006c89bcbc01fc91b63e06dc87ba46b8fe36c2c54deb22ee1385b142275092dbf3e719cad4583138eb359c1729ccde542a4e36c58b810e9389b8f0b918eb375e142e4cdf645ac99c1095da36821ef424bcfd3f69a34f3b4cd52f3c4d564574d75d1b86858b8a9b10b7c91bc390b7c0d79e352dea379e25893669eb80abcd713ea71e979c06f2e07bcc8d580495d20faa02f877e14c2f7e57cd7fb52909f18a2e9033f5f861880385f88260ffcfc16e2dc357a7e90680afdfc1f716e207afe4793cbcfdd43cfdf11713a2b3231264e976812fd7c30e274576ea4d114e7eee69e527490fffe0609efcf9d792e1c24c81391ddccaa6c2852c397c2edbaf47787ae3f103ae119a178f8979da93a968af501d79458237f04f9f58101f0308358e34d71f1f0f257781d1f57f83db58ee721f423441a27220f80a07b3b8cbafb711c3b1bc1a3be93c3713a95089ec8df94e374ac103c0d7f771ce7aa76f819fef238ce6581e06ffe32719cfbba4c3c97ca43e34760552f0215eb4390b7fc1d580f02d6eb37f7010f845c36914631c61e45a2efcb29794f440609a3f6349a4510a57c9f4b19a578518a97758c66f3c485be0379732ecf81bc016d53cd93d540de5c06f2c618c82a2d7f63398e65b1a2388e8dc2804f12a5e538b695e417d0b2c271ac150b780558e1721ceb52c0e7e0c2c2712c1639bc0d168e637d6c5e888f96bf75e138b68bed8b7863bf8835af79b2af971ecd93ddf0689eba0b58206f3c9aa70e87bf216fee864f40de38015f012e87fe4496e4ff08dd0959924f81d0c3d0a3c8927c1fa1b76449fe042410ba4b96e447208440e83eaf79baaa4913dbf1f201798f1c90376e40dedc8ed721c7727a64ef61324fde6a8ab2d5b255b11ca7b3ac288ed35161808da2e5db96e37430047c12dbd2f2ad158ed35539c02fc05aa1e55b97e3743124af00ebd2f22d168ed35931c0e760b1f0719c4e76e46d7cba709ceeca1736bc7cfb9aa73bb379212f21ffc2eb85afb12f2ddfcee6c98b4d1af935ef42de9c0bdf829db5f02ce43d9a278f85a7c99ba3f952deb8f441f21ecdd30df23874ac1bf2c63e3e01798fe6e9b226cdacc783f21e85ffe58d73889bb970b38d9b792b1da295b67a394e372bf2f445c571ba2c35fca4a2e57730c7e97e508f800ea6e577551ca79383c81fa0aba2e57731c7b9291a1e4917d3f23b2b8e73776678037456b4fc4ee63897e7e68f74322dbfbbe23897c96541ac916f437745cbef66d8482e32cbd292d3f23564f9892940cca33a396034cc13e9e4488d08307a1a523b3203c85b6a999f6147cbbf3c3338794b3df3379747862127530c30082000970500c85b6a12890776f95db5e8a9cb96e3b289442e792fd944e057647e287467363321b317f21e6930dcaec1584dcc85580b31163c178de72a79aed70779fd8fd7fb78bd7cce9bfbf2c6fae5c3ebe53dd22fdf23ef9106790f90098651f308f7a671de7e042dff25f4c17784db05bd42b8bd0c2d5f87b7d2f2493332e17628b4fc51b87d0a2d1f26dceeda9ec5f62fb4fcef43c2bd3c429ab62c029945aaa4898a344a65962bb3dc0c86be1cbbc4e5ef8f34d59c8a527efc8e57f4f8dfd187c7ef01e8394375dde8b963a83101f8f8fd42ca85fc3b48cf0a3b7e9b74fc1642fa5d9af91deab9dfc543e6f78c9e325a9b894ca3df2fda05b1467e749c4de54264cc6f2f74e25e9abecd77264bf7e70d4c7fdf999659f2fd4939cef67239ce36732131c7e17ea47475e91ad3f2b594e370ac1ec7e15e2ec7e166dacc71ac4ae538f6b5b920ded822c41a1f79cbdca335970ebfd366fab797e3d89968e6389dca6e3395e3742c4dc5729cabaaac97e35c567dfad2f2b999e3dcd7e4662ac7f15ca14acbb72fc7f1622ea408f1c643c3ce5e5ebeb333d5bd2f5269f91dcbf3de762cd5f7bda66281405f5f20f8f4ba307669f91f7a4a441af93d422f895892cf23f4306249fe8ed0b7f0927c1da15f114bf24933a1fb2096e4cb84ce032fc91f85ee2496e47b68c45a5ebea704cccbf7562fde23fa5db546453647f4de43b596f77c51b6305f91f95d4763c2eddae55fbe23542f2169e4c37c39a1ec090126dc9b7ec93b069730ea96d0078ac3ed3bd82e5b66bf17ee207a7bcf7ee16691a62e8b20bef4ecfe581be36b7b6dd905972f7583125f2252e24b342d042aa799a54983d00aa46a2bc4b3d402bd3d22f4bc7370a170731a4e2b3bff90a7cd47fd9aefcc659660154933ff4aefce1c071c230a993fc98835f3f77543cf8f540aeebe3ea73dbb307dfbf5bbef42bffdfe21b7904110f41692ec47947cc9af08a7bb972125b410f0a694d65a9d926ca6412015915a737a6a0a048c5921be62057eede928c58d289f8e2e18943a679d1234f5764de0d13990eec1e7d02e816c3315c4414575354106f11b1e3a7e8e3752d35a3049c114986a32b068f7d795017b0b7b06613fc025d76ae0b194f62f874a81bbdfc290d4dbb6b37de8f70f598330a2345da70e8552b58550a24f151668f9e5501fe00e8449537dfb56a4c9dfb7d02dbd3f3cca1222484634239aac834900d7d0b30cc74f00a3a059f84b7d2bc8a9af8c02fbb330e3983f3ee38862fe481365c592cbee65ad3cf68a34a9117148c0ad116f4830d2f57717849543cf99cde2f3a4ad26cdfc9bf7c7e94f6f6df5e90dc2e8a4b2f2e8f940a288a528284b9ae88c5ad7d39b727213f4948537084363a6e7db9f2ed53dc7c9541016707ae8b80611faea5dd29162d1b1343f0a5cff42f1e20267604cfb137883b037b0c631103669de8826d08c5802cdd8b47745e8b7b34933ad6cd2cc006f10465b80b795cdd4dff76b5902bf9e9ab2f03c859c8ef3c4a9b815088b35930a1c29b5dd0a1eedc10f108ff2007323fca3d2db04f128145af2a813d3fba1f1e80e280b1ed5016d0284616e847fd40237845d834b499395fdf0aa101fe92ff968f47f6d22576bd875ddd7d075273bc7b5ca1d7e74eef2ceeecf7b3cd6bb35ccc15177f604d319cd224ddccfaf2969fa7ea6a71c7af2e8eeb91417443c899e2b22f49b3322e63787c43c89724cde1a4bcfacadacb5d65afb63052e26a79510871c8cf6fdb59101bbbb13bc41588c7a840436424f5c849eb34833377806a8869427c060129c66be1b7a3a41cfdf5606a2a1e73b007280fda39e344ce092376f0b5efc8cc88fb2e4db5f7b16be1ccf3b8c74cdf5eb60a09462d192a03369d256b1347f4a49f50661b24a135cbfcb2158058ccd9ac15806618e9a0fc698c09f8e528478426bbfc5c046a499bf4b563669e6dfd964239eee1b9166fee4dcbb6f44538c5c101234639e6e1bd1de59ac994f97c0a7ed29978a373078fe15e1b4672e156be6df68290eb0238959e840e3f71c7a031c5d64c4f40661204c9a5ccf07ab48934c9ac01f69027f3e28c7e39434b5fc7cbc234d474813cccf0763a015f00a38d360163d310f66a22756e909b312e2c9805d5ec8f742be9cef853471096f964f6acf062ddacafbf918ccda0a747ff4fc17be229cfefe85af08d55fee41477bffc277846a2f6b4d847c39b6b3f9726abeb31ebcb595b692a62616005f8e672b53026b2f00a94f1ead017e2b9b272e3569e6cf140df00661293dad2cd24cce4be9b9ad4c6b7ad2269893c2113ac61f49e00dc28678d151318266e8f9613c81b04863ba5874c844d39dfdbd584032f44c9a40582c4dd75ebeb864698eee1391202cdeb8eb17d70b161a0ba171102338b01a465c8363c49ad9755dd7756af4e073c8e0b9d45be8280f4792dbc288f29026815f5aff628534d99ff477d61b84e9f9e0180fc2e28dfc09c7a80d3d4135f404cfd033d6c8efc2199b569c6c5ad61e6344a3187dfc5841a4d2d187126d0955c22df994f812aad52ddeb8f1c7ae3131b0d75a6bad338604fca819e0ed3fb266af79c664497aac91b1c65870a38dffbce02b227fa0ba723a7ef433087c3671e3bb7b0d37fe70778939cee58f465306bcc568addb944a33547468f767b1eaf6d29194643ef75ce6b428b22469ad956ab4a5e51391a4fa3a42c498929201130987148137a73a423ae98934af78d3a2fd372ad1b4c1626c934993f49fb93eda9fc3418c3bd0f237b047472e6a95d6aa555ae99c72db34ad7e363b99cf85d4356966e67a7a582d37c0b36e1b77b95a39ae52ad6a1ad56aedbceecbc1a2a82b5c82e23e2d530f7d5c3260ff5be7c0b5b2ec09b07b487b9ae04d59944535caca201198fea62c1a4e79efbdd4e3ed401cabca3429c992e4c2c0251c3ce50839f4101b0e508334edd29019a4297ea18f9081852c452da38f96271b6ce002efff1f9e3107067efd543891c5747439e1d153156f3c8c58f38a35ee334fb10b265ea999ec202214610b55caa7aa0523bca104560ab53df591a6b8698fbb539776aad23e61da674cfbec99ab798a28ffa97a4d1a7f7f6fb9dcc75f7bfa6c794f97762defd952d5bc9fe63d9a396f8ebee814e68e0b35f3122f82146633d2aab9b67131c618b58ddb38db5daf1a87f345ea6563bd2f54de0a7a50f3345f3a355248912d41d117e0ebde0c7524126ea840865242830b052363f05b050d7e5e4374e4104dbc58a1949860a8286358e2df12aa8003180a34b30ee9054ee8994f7f09054d4650e24a0f4a47894606183da8216ac8aaf781402c5ae38ccdf360321f2a7c5af334802b7800f29c8a2c8539dbdf8bf5e6416f5fbdafe10c41545cb142e9cc57329b60014341b9bf04756ffcb4af37784864d61004db471d5da1cde3f94b5044660d41d083cf31c71c72e8fa517b7f838d761250fd03d5df7fd961fe5ae1bd83ffe89b5dc8e768bc623003a9a0b440236410440a3b134e6083a7050c1cb401733163f584cfcb173678c11318293489a122184b38420c1543450a597c50f3dde90b4a1da8870765cc504a3ad50c0552d91c4780a194b4dce007359fd22d7090821e9492ae0a3da819db4289154a4917440f0cd8b99f59c78fa0832d56281d253d7a50f495602831d47c2e9374e0de3e9775221733b8e2094a877b259d1929920edddbefb28e2b71454a86d251226aa1e82be97a5ca8f936ebc433a6782286d2e1b212f085a239ca18b60bda5f8985a3859a7909aa2549d699999484ead0ac637b9ef081e23f7f096a09eac661b1e635a90ce80bb6bfa84763e0cac18f8e2e26aad4e8e8ca0117da5ff1a625d6c8a73f9f88dcb67a6bd57e0b77f8e184e7513393fc232a24f963efc1f354a7f0d3936abd6278c341134cf0a4503bfeb8b43445edf2928195144abec3666ca67e669247b5ea89c9e24cffe8ed2f1c2fa070a1b67cc1b6946d57230e365629d496290c03bcfd85e36bbea43c610ada93c09a8e2e31a238b1410fca85c2400d347e5e26167344010333648b944fc80b2b5fa4504a442d97f8c60cd248a194682be8414519837c8109c588463233241d3b6e66b0c51357aac7876558f1ca3e7eac002448898685165ca8794188184248d900200002802106d369881969b864b8719c31605cbc509106c65580850c174a4709cc142b54943128e1d24895e609002c00c3858ad121ea820b22b874cc13a988a47284237e50720657b84026473e5798b0c8c841125af1084478f272247ee0061462cccaf8411c294dc60b1f0c6136938228a8206191eaf115c460a042b120ca0c35d30510820043c979d22159556069228552d28911ad68ff68457b961ea70ef0f5ba921292c60a353314d2115fa279b830a107a5a34488185352a8f94a720b56a899e749898d0a70908a506082125ed99b3ebc384f365bbcd142f90f1f3b2c94924d868a32860da37d9ee69374c0f1020a21cc819a5989109cc3268d7c7a048e617bf13a08c42d2e2f30a118d1486686a46347fcbc1be383a66a7a0d401462f123e866c2c270f762c6a449bafb947267c6dc254613ed1ea376b902d7915e7973e5fb60646aea42fc8de888d1dd8d9033fe05679c51ba2b71e5cbb007d724e8a1c71cda1fb740c7ef064f7bde21d0f4a59c6111ab3f233b347d29e39ca0193dba7b056d259ac69a1db106c6f592e932888f9f7b8c7189ce16d0d1032db688d9d8c030648658a158f2832c3a1882106418618b98176300618c292f42a081ad01ab0268050bb01e580f402d1c319220866c880d0c366f637d20e504504c71230c39aa08a30b319a64210613364f9fd000951554410527a092441122174d5863880d0c366fb345914182135920210a0a43e9c7c33064061b185c48b8425f1d5d4868e96da36f15f3e5eeee9387e7094bca7864aef2f191f9cce493274f9e2b611b2d9b34aed148267bc2670aa9854f19cc2993c9a88f8f8f7c229fc827b309e9b2799a4dcc275c36a788538a6cce27f365bbb8f1c7beaf6d8b5cb4b1fbbad1667105819dbdb7f36ce69cc0fe5aa7510db7702d3ec32f5b3501c7bd548dea94e8f48937da4f1588b39952a9d5ce0982e110b5d6399534cd7f1a6a999466faf1a0c50566346124e70676d18888ecbe9c994133ecf7b551f027ba4b698a1ce76d5e47abe5349ab7db5d0fd43a5aede4ba8dd3aa563f8d563bb90e8c9fff702dc05196bace6e2e47f51f50bcd13ecab9ff546d08202d26adda3672d7368eb3b6eb36afb36a5b56a22c14ce1916f4cb91b367095a8658c7cf88b4e04fac815514d41360aaf230fa2441052d4350c7af08131e3d3fac3b38fb1802935024cf45a4c65766281fb10a81b7b67232bbdacd90a8e7234bf341580cdbbf40fc47143914500d661f1074289c2c4f7b187d9ac074289c2ecd9b6760fb601599ad7d29e51399d6be0cc12a19b4224b73932010468120412b7adaec4953f7f223ad41a4e81c7873a92ae0cda5a82007fe8cf877ddefc8d21646947b6a052958a704f37fc4d3f656b6b9b0fdeeebcbfcc37c1a47d4b68e079d420f8aa58d78c34ddaae3e94e88a4da16d38a3bbd0b50c5b7c7469e849e1c029fc50c02ae0186012dc882953a4d19342ed3b33b269afd29ffec84ca20fbe340909f8d2fe76e447c8924a96a6cab631d3fbceb854966fe00dc2647de9cf136f7e705d446affc9a5646988589a0f82beeb21e6860073cedce7bc4b253770cd76666552c09646210be6defe0c9d02773f43a9e0de3f249aee81052d3f2455cbbff2eb8105fd83bfeb2ee4be86f6e387a46acfe92152d12ce89a7f90effa43a2495939e7c058115b7de54db837527fa392ca2ebc58b2a0e05151c6a0ad3cc782ed16f87111d1c4136f6428df0cc2d688a5f9d5ae818b88a57bef6522639e58e306f6af994bc952de5dd7d1d0ca64a99b1c479fe3e152dc4e15fc3aeacda58e58a0ca972fa7d6976c67b2346772380baa8e5aa484a0ad8eae319ae84dd730ba6234d05b2853d1be9452cab88188c87046d77093a1a6b536b0fd0dc2b4155e40c9a5a2de77c6c3512e20ccbf7c8b34eda0425bce03816c44d3c512c13766cb85cc771e2f3b5c668009fd43db05327f284bca803fad0965398e868496048542cfb7da6a865def3bdbeee3e7de037da45aa759ce037d17ff98adb827154e67da4a661f9fb442d9c035938e54f06b26d1251af44f64c98927daa9de779649ddbb0e3d8ab39c55254847296b28417bdea0ecc7161b84c9970931cfa49955f41f331a85388e0998f49e2a371db5188209ed368bfdb157a080b795d5f9368b34b934c530f4fc6ea707c571b1c5f31e654f02833a6a91da81ae198455fc71b88582b019bd4158a7370803e90dc25cf406613137cbca716e1b178b36033ddfafe0d1cbbcfcef410fbe680b89664c68cb3e48bd419856abb7bcb85eb0c042c8d4f0bcc1591b3f704c21b4412638010a6e4841cf224a701a42600c3c0394816a806d806e388886834c70d0090e4241cfffa44c380a5b8290e4dffa2100f4246fa1a12917defa2aa3163ac0a2e91af8f59d75f9ea28850d1e68993728e374748dc1c44b4b9664456805619e0bf4fc2b05771a422f6f3a8fa18f8221f6b727849ef7e7c2e1a5bc207e7b29f03b05bf55d0dfcf628d7d428886d07737deef0c4180396c5043f81c28284e786c5022273c4350223bfb6ddfd0d3cea16797da7edb366c146888f96de1e07954cc6f4b053d3b7777af18047936c61aadc569f68c964f475a7e216d03753b2878547401448f61bbe44be5be7c54322aecbe22902045461f43b43569e68b7e42ff25ad665a315b2f5c23dc97cf1615ece2b3a5552760eee91678f6f3534044ed78a94973c4eb911fbbbcbd969eb22bb234adace64d8eaaa88bb121ba691c08c7d8aeca9f1768163ab39133eb1c76da440d97d1081c113f2ec43e31f99bc0fa2295cd5a13ac1a8560e57af4fc969ecf4a5dad475b692b8d724408b1e176bccba5b8148cde5c8a4b71296e8789caca621b5dea87b5ef4c7adf6fa1bc6532246e5291bcfe6cb821b814003cb75724cdfcfdc3caacccca38cb7918d2dd733abada0cc2c21fa40663326c65527ad8a2e59783c3fc8a4cabaf0cd86f16cc240465dbfdb9b33b035f201569d2daf08cf08af082b87078f6db401d48a9e0abf77dc5b4dc1b3d295560a20710f3311493692be43f3fceba212f4459b445c38827ab46a499332abb2abb4eca225e557049d4fcaeca58cb8a346d9e16ca80bdd43c8d32c9451f7a1d46bf6520b61f7d68fbd103117ad10dfd96456ba49fad7922653a9b33b99b2dcf765bd8f14c9a3ca99cb4855b42964020bffe967f44f6b438a93e98459a7685e909234ba49a8b485d7d47c6a2942abcf4fc981f7cdaf15e52a8e0449f9c8859943287aacad00055c44203546105264d55a429829163802a66b214f5959e7fdc137bc5ce2265029643f010fa98df76c53591a72d14b6e6c951a09555135962224b53a5e7eff8cba791f2399acf86a865e67a9a70120abdb72c8153489cf03c2a94c12a92e391a5992335650276bcc3ad7a640cf3773826328679848c613ed744ac2132531c87f1884b692b2e9506a656f0cd5e1459722bb332d16f0f01d16fa3fb1a89b8fb8a5991a519b3322bbbf7b6b8dfb3e5c99616bd67cbc59bad78e33f7f4e114f5c10b3f5325b7ab646de6c81f4c43b7a7e74c1b1318f0a93fc653ea23c9372d87ef43ac4bc4c0622f4313fca40404912fa980742f4db47d45d0295a20ffda62c1c76441ffa2b0306af84421118f34c3f23940a96a41cb60f3d04b60f6508c43ca8291af84380e7c40d31e116d690543f6ac7b254850bfcda61b26db3b1a1efb65a47a298d0c671585729074dfde0dff3e78a489f88340afa035a051542347df10674439c48f4e5c8bf2f500e691a03b3ce70a9a17df4a467e07d67da5bc27b4263b8fef59e2c214b940a0665bcfb8a3761dcd7cc8bdef7c5c3bb2fcdd33e23fede13599ade12d40c6c43d7f52b223508935a095b5bcd9634d1ef68e845912512fdd02f414d12cda41c46bf7d92d16f4f7fcb3a50684e22f3a1ac237a99d789f9d12f41cd9fb40cec3ae64539b40adedacaca214d32dba5e649f41d0f184734e139a2091c22128155104d2f3f1f5c239e26e73dd88468fa7e3e6e413c857e522c7a7edc7e632406b0fdc63200c1f4fce9c1620d2893a5f932a10ca32c8d424a06f6a2505691a9415812b07f3938ecc449e33e63e03a9fc270fd68e507347082094800c18d196afef721f19c90a5e9998a8141df0d5e8f1818d44166f43a782af95e6a9e667e3efe4839c8fce893c8fc28eb40f1d78979999c938c7e26eb887e94bd25a4c97ff4f3b51af86994391438cdb4d1f134ef12e9f7cfbccc7b2463ea72f492fc6dd2d1fd7e81647f0399a1bf79c8e4e834daef18bdb5d56994a3d3c0fc06599987023f510e8463463cdee60da4cbfb05bd3937455932b57c45a6f669055631e1388c47a3ff1245029eaed992257a045cf76c917088f9a893889eb27e6acbfef88bfc63c238692e4e14ac99cf08a7e98ccee24d1bf1048ec169dfa49d1e156cf5a6332a18eb4d67940a76bde98c0ad6f4a6332ab852c1546f3aa354b0d49bce28153cf5a6b37813a346418f1a013f7e5a042c9f86813708037fe629d4449a7c254d2d9809e691269718289b8f5df106f4f3710ff7444ffbc36a29116992a0ada6117e5cc8fc8da5687c05ce027311c130c2e99a5f38a29c8281ef9743bfc0f83b2b8b37e018b1a68dd8064ff48288170e3d419817187fb40b8c7ffb90802f82387321019fc4030989f62c8238736997afdf0d2e2f33c95ddab16801dff3de34f8f243d2f2e0532edc259b5c2ad2cc8f3e4e1082de77c6a5baaeebba4e89a8ed3b4ee742fc7a1f28b4b1c65ff3ee87c1169730ca524807cd4e99e8e816323ffacd897ee3df232d93471c27ca71da97e10e363ea040a1f2eb4df7f12f9021db1391dccb2f87cb4eb6bf5d78b1c49af95786337ae638300ca135ad6f16698a3e6460a1e1a76f1bb1667e0daf1bb166be955ae04edf59bcf1c1dec78f4e813d97014b97de4300cb7087b6619c224510340d5bb4d675a1d4eed416d936ba7b8e474a29bbef426e270b2e254bf38f60d211f9f66df654296e4701774664561bcd7118733bd224021b2d391e69723d39cedab7259b5bbe1c9b8760f92edf019668e96283922f73b744dfe9d5306a9a05def6cbc151206cd210419a7ea4c9f30fae73fce7db2b1d8f3491fc63e7bb4b692bad479666cb10edf2f1cb717922f2fe25e510f3db3b20266fef8038693cef1fa896df7d680878fb9006fb8d27eec295de3f487dbf7b2ebce1ad2f73cb12f8b77ff7fbce8af85b19c69b5d0a17d2e58d71de23ade5d236248796ffc2bdc310eddfb239d9be2524f9cbdf4292e73b8ba89b45d2cca758d42bb0e74076bc074a9c224514bd7f684983cd08d553b016a2f60d37ae76c7b151089668f23e2799f7bc310f9034e2280aa91b0a29abe5a5eecfa409bd95f764d2cc0f855e6bd238c791424755184722a9d146d5117a2a6f257a12f25a7e3d1eafc7a5e75726e00a8b38ecec905ec78f14e0a2d0c1d88c4c4c1851a1980fc584e88cd24fcd93b6da9c566ba5b30a9a9a3f331a33e4901b845da96974dd4b7f6d15bb94d53ec635b424d838dd19a650c49ae9f1c40836618d589a5a12d1848b882570834ed01394e58d8900e700dfd0f3bf2e733c5caae3b419ae106bb670078afdedb9af08e775b7729a09cc7d676542a4ac4af3aa772fa7d92d7496963397391e2ec5a5b0bde238dc107abe8542bcd1f4943490d0364b8a47b5ead1f5899e8f3df0a32f63332129d4589346146a3d9a8f50f3917169503d03effb7ad5985ccd704210a15bbc1a46ed23d47cb4979e8f3f1f489df6f2f32fc707ed6b26753fc39a27928f34713048537dfb43e6c9c7db4d5bddbcb596d65c524a4975fcf63be18b28a594765d27f349b697d191651e081f3ffaedbb9c44f43a5e47d6093310a49779d12f413921fd4c08e57e2585dcccebf82433af23eb40e95ec74726d5995c7992cc7c987548995433298750e8653ee667724d4d9aa96f6b9e66bed5aa2dd1ae2dd736dc5af8bab01bbbb291ccf622110893ab2894455973c8106fb966e649c7531f0aa3323d7dbc0ed2cbfccecc8f5ef49b0e1f2b12e69111cd7816691a853ee689c8a992a63965106f9c1342bb5543cb906ad772364f1c87f10c84713e25055a8651d7706ac985f40153a3976c79bf654bcf1839eda2ba30fa487143cb706a39e7cb959c23ba4f218e68ba3f4732c02d9044cc16b7c305c10d31a79006c645cc1d2b60e208b7322e88884387d0f3b91d2ae88979b0542bd8e625e0fb5b5bf1d8b1e3f3ef38cdbf225c8d82554585c91abbd59de150d1085dda2cc3a3431f75a643ce483e9a0967c288ba6ab401c7a69a7922928a1130fd6e85560f4ef160d5c62b206fff37f89333089b61e6381f394e1a9bb18e1c867e8570fb1fa1e849610cc7619c021246d40a6144fd40c564a430a2ee6cb566ab7a81bb7c61afe9d3a7b7e0d356aba82109b0f65a852401a7f1dfaa84af825564c99367e0d8e70349e67558a1a70759cc811a7df7fef560bfebde6692fc3bf378e689f4e3f5ccd3f6346f4fe5adbc27da63792d4d0aa12820a2485f431c48796727e63752185120ac6e1086834c26c997f925a8a8334966520ea197f924a197c93a50e4eb883ef4328fb24e4c08c5c260999d403322cd532c5c2a96e60331f322d2c7fc0ce34ce4b105a66edc199d59d96c7667241dd25dce1f177d0c65f90d651d44bf85b64cf20f7d44c53c1024cf241cb65740446d1ffa2d03a1034587500622e6b7df32c981103dc9739250d681e23949e8475967e643af43fa2da2f0c71e90b8969f83a346ef434e7d05386ae42fe31fd38d9e9072d83ee675d83e2603010508926faf43e865321023d1c7bc0e323f7a991f7de8bb518c8c6886840a85114512c5542ff0bd5686af16f58f87ae4133e28923822362f4324f024ebb83f00c33a7183640ef5f0efebc9c0ac25e67a5ae29143a8e78fadee451963784cb58b393ed29cb090e9d847e460676bdeecbf1befb8c78314f7a20443f13f3a49fefcdbce893903ee6b59917bd0ea48ff95bcd0062f42199df7e2a016f2e25f340847e04c4f6324f929f64f4a14f224392398751e87590f9ed49f2633ea2442149bee823ea7a18ad6c9e74bc8e0f7fe3fc7be4e3c36d653a7ff8f1cbc16167c7c7cffc8e8e277d1cbd0c49864292fcd057927f08c6f24a4f1a1f619c34a4304e9af0478fc2889209236a268c285218513ec288d21146540e232a0c234a864946ef210e3a5092c4fc28eb6c1ff33aa11755ca826206557c7375c50ff6e872dacbad56525fec45a1f56848685f114ecbacada6b084efc785cc35f29c5f8ef7f33322b566e5a413a4c5c4586badb531d5397dab79eea518d1a747a0f771f6e28f7fb5edbaaed6da7599c2cc389e0df9ce533dba53960d518330364ea03728bbd65a6baf7bda6784c38246a11af81dc89d88ec40b55610287760178238d39e41d0bd0b08e4f78df04ae146e1668935f3bfb00aa65ea5cfcde5bf7be91e7a8bf630dec450b885ee79b7fce542da92251657cbc0fbcebe8ff3442a7d1f97aa49c01b8455c19af6817ab8975861c42527df61bea66e6a9e22ead63030fda1332b23c391c85cdf6b1260b0b1d1535b459a99bd17cf34774f64d2f742cc7de1c7a36f2835174eed59fb5f88b517c6295060a06f28bbaeeb3aef388efefcecbb847b87386bedd0d21a234a0b461aa26790a5f943bc07d7f7b970ea787315039481339d9f5046a7a34b0c9946d269cb855253eb856cd562a40c8b70da392d9180c131620d1af7083804cd88354a88356558a942054fed03d546c0ddcb77bc849e4f3ca4b3aeebbc090d5e3e5038028ceef2790215d7e503851d78172f0e70c44247bdadcc8b88b12c44686af7929c0ac69e284066ea1e7eac4f3593527a2f3ddddf63e9b9fff50663bac6644cfb20f5185ec1c035cf3424b894b6d2562bad677e39d26b11bcab6f291376e6b2befd8e7ea561d43d78ec80f969c37f1a869ad697d78cdc2e74f91a86fab59569df85e1eb222d7fabd785e05fcdebc22ec44f65177e4f3f235efed7f1b359be0674b86f137a7e8f70df22f47c1ee1eed4d89d165d137752d65f2aa35194320c7c61f7f5c27bb6ac982e69eac22e8cfaf5b5e1d7128221e82ff56c88bf7e46342c4048821a5868c08433b6af8886e504569af0da869b4b695c18e18433b0d0800931ed6f4397efc2506b9f112d0a186c8186f6a75f116d07454c41436b2ad062cacc001a17463821a63dc758daf535a05dc26d5ddbf6e8f960b86d8a8bb9f6fb40b3c892a3a1f79d553030fda13359aa5fe04d59b3335295dad06a0fa7b661f4c15205dd8554d7d0ea3bbfad7a81efcf9d7581f7fc9921749a70449af994354fa14c53555bb97b0c65037faffd4686dea00bb6a3f79d5d4e34d2569ff644ebd196a85c601f5c6f2e2547329af55e86dde5ea169f872d4d69edf328d621a257db8f7f4751b0ba1d3d6f968ed3b5da4fdb7fdfc3bfe577b9cacb1bb45c026352caac69d1e4838c383eb8f6186f7e90dabfebbec3a195d1bbabf3cc13e06d65df5b2f0b2bb357a418b15a42fcc2085bb30db76b2b25f5ee8359a8978b48eda5bc4be92cfa4ca1498443cfa759fcbbe75c776eb5ef665a5c9126cf22f0b4779afcda694e42af7d4a3c14149979648b164bb02248352508f067a7a68288810609b1a33728d35c4a9ab6954529aa1be828053da5364015b3239b1a9afbefb52fe7cb4330f7d73d7fd75fe8378b0d5173590e271a9706f8844c3a22df3fea1a57b214f5a59dbbbb77e184127dbc984343893e5e5cd1a19064df7b58465cfb7083cc5a8fa7faea839dfee02c30ce242235b8665060e96d655274d085967a93daddddbb778f83c13a7ed49147045ceb1070ad58e05aafc0d551579b8237dfa448ce35ad106817847a81a079566c5f151c880a5c2d3845875ba1e97a021cf5079e8b14df8b0f403051f00686a2c03150b4889e7019b15e647a0033c38310094a0ce9ab2fdae1c488c70e647ae8e09b20854fb2135c69d87efedde123073c7a7cfeea874198c8a5257cd0e020fe60e10672f68421402dd80057572aa52b10177a82d428f142ad01aef8cacce4b0b94a034c67b4d52a0a21514ebbe24db4fbdac76f9eb67c674960fa7ee5d7f07a68a47bfa1249f7837c123cadef378b3c6d7fb3c8cfce00dfac2181b94c3a9249361cc027c6171da5cce2d01b94b96054e8cbe5907658d90a936ae8000944588c5c8a4b7d3cac4c56196092fdeea326d95c446aeeeb472d5ff3f015fc042f9147df0e972fb3b68aae5dce6b0cb0571868d67b1e2e5bf327fafce961b9997a0426dd8f9a7b8a6f884312aebe00f3e099ea02bcb595f79a9597f3ac6c9e226a667f7497d21384c59a3678aa1158c5d2b49e1b4e2b9a85d93946e9ee202cd6d4e0290d700bb0bc3aa40f1d9fa3ac28647e7ccf7adf998b5ceeecce62eeecce3c262646248ab1e68b11452438fab0a08a8641c72ca89086be3c4aef57b40d412dc31d3c208bba0ba30f0be2d0367cd132d4802c59c00578c79853fa04262509fdf65be897a04058bcb11a8c5516e0ed4321189b39d415e0d04759a21f8231b04a6582b7af2ac05b18dae12928a2f25422f0b6321e01a63ea824ad14764d8d3a85680402000000b314000028140a07c4a211995856b6d40314000e749e4874641c49c42c07529442c620420c0084000100011098a1b10000248cb8dc07ded183f167066dba912d241d0934b976e55743f109f44884416d69cf9d06b99b4cdf3d27c8dda79749ed330ee63c464c4bc7d50afe28cac62de7f785eae6633d1d6315a0b2913f7245b2f498a5d52b23a23357bd9b211c68f287f037ca6c1bbdedf5a00db16fddc772fa816c2e6a84ea5051fff662935df14ba0c40f0ad553f45b22e03f2317cab75ecb9efa7bed159ec48a3ab1066f8233eed3044e6ddf7deabeca100c13bf495af259c5d3d5c1ce17b19326d3fd0857bd66d28da820c1a95e39f877722f7d0c57451df5020f61d4968a333ec40f2fe9141f34b1c570c413a4fc8c5852d5415c8f77267f4ca53d3f8ba761e4ab67f0124b71191ece2a57f54182616e0e5b41c9d7f761359c6af27907e5e15d7ef95be8c145fb316274d851c52a79231c3d992ab1413a9848c87cc78df9887d134c9bf98317a65f093d76e8ddc8b2dc1d4333ee5d8702131366e2c534fc6ed12cdd4020dbffc117bf60de1784d2ede9ac558b6f21e75470a730ff8635b2893c649923d42d1885743b4a0ef361f645e505e7584a4de91c8cda513afd1f5c08c52723197354d90224df2f6858f057a0b5a66d7b3e459d51d13f34372826a2dd40d1f44e4e4da3c44cda7fcd52b11b0616a190554ab1e2d120070cf16b857247321ada96537bf2fcd05a4856bce4b72a73beb0da7a616226fe496a02cecd603458cd7aaa22d098afc1eb890912fe988838f8570b89ef433168f0e65c582462eba79272e7c539b8d3fa472d59b2cfc5c97ee595762524c0428a6a7d85d703dba0b6ddd58f500e4effb38c8142b773ce04d9b28995c8d68c6b92895a8ac0f448d722092e98f0e05e66197de1f27b22e81943796c78892bc71ef003b01a5d6e0781f77162d0d5a6355920133b7c43e4888332c2e973502e9e7997df2705a498e8cc4017e50b3948d3dd3961f5c44a3be5157f7ac1b1c64738c04bfbe5252f578d3dde7fbb44f6dfe77b9df3a43cb9a2e0f4a91619e848572221f452087e854999c71f8084bd42fc8a20de3fa40441553b085ac72c90d58381c6ef15888a74cba210c372312cad5c1f32f777c2005a376139dd90546cf094237a2d64336c09a8aec2bbf4e7416f2af0629b2b060b41fafef90569b507efd03f8d23f920bd1bb805c14dc65c7bb2045d0a2182ecd564a825d757cd1a2a31e3f41a7485d6179597e7e13f0a5152bc9be36c371e4671bc0951ce940016cd98dfd7e4eccc9173fe1d9a512a440432552f4d50502821616e0c600955a3dd36cb5a07a54b6b73bcd691c9f503e57cf4b241febc17cd0b4df29f8858c59c36cd010e1433b93ca1388a636e9065418a7be7d7a9bff74f2db3c50f13f9a550a24b0a288507f4e0d2bfd989172c29d793fef5f50840dc6e43eba39c358ef7482965ae0fb976326d4b94390a3a9de083f24c3a0029797e0945f966e15fab96e5ec25aaade6bfa021c4e5dec38dddc628a3eab08223edb52c637dce1f22d581bc05ae0d4030ad9cb9572110935ef03458c02f15a79d720a4ab6ce03af1115a71ff7312170a228c98a26812266ff0e5c40481654051ef8ec3b8da7f475b8fce7108346321d36c030a014ecda693e7eccc2be035f0f6d05a8aba6ce328f1a3bd93c2201cc5901c2243a1ef1dd5bd5568822762c1d1165c1321bdeb8a395f03a4cabbb840e3f23b9c4314d6ab0ca439ae42467cb02e9f101715b9a2bcd83af7fef7c937df7e0062c6cb66453c0760ff063c8438f04dfe46cb743e94d8e6b25af0829c2c43f9cef602ebe11877750e2fd7b3d6ad656a560b575de2f6f3860ccdef21d4428df2513889051dc05fdcbdb33457a89ab46fca247fc0f519cf5834d901507932c6b5cf3854a53a7d9b77e5e92d741ba321d426bbf7b01c4e496130eadc64c99474792581ccc144e234c71036320fbd9a2deed84a7ceb57a023de6e6c36c0db0aec6102c07ff44d4e4522f5b2d941257f989fc0bd0d85f5bbc6f9c83076e4efce17027d9e85b9d936e68c08f1c46de8df829ab49b7895d62454c80b09db00e857ac5abccd29f171c61a2c3d4ec4471aef9363360b1cc6eda455a305fde390118af1e0fb6dc3f18b5ab5f4c18ab5261782e2e6ba8a9c37ae72cea8c802c1f1177866f296179b9640a6469c0b73448f88ee89bb0e2b82514295d08d13ac0c1367ae1a7a0759e9fd16019031f58c038f04b61853b8a8178acac735f55abfe8064a573904866e63971a3ec8a61f67abe7d4c7f300528dbad33bb9bdf3b5f28c63a0e309ac4b707b96bccf40d280de5bc8f9f0508ec811925e12794fc3de20ee103f61284c717378f2f01d7d905ca5e511e1080820131805741c47b557e072f9f71250909fd02a06f03c0d95535e24bb2bbb24d7af9dfe0e2a18da763d0266ab7a8786232058ea961f9b902885793e06d0ed8effcc724408b34e7b34350c8d2de3e050dfbcfac06f29f5dad6d2c03e6a45a01bd61b72c5ca69a3101734d4adf98337d6213f80a6a87aab26b2c44541090331068a504c6a520f6638fdea80ee47b233552d3a864e640dc2522b5cd217cc868f7cd25a75d5580dedcb776e6da6abd9a530bdf3a6085b9cdda550acbbe6e585640998e7dd612b3743a5cdad5e31faa876ce6dde6e1ccd82c5c9def7b9e6d1770098d4b3bf7f76f7baf6dae8bb3b73266656f31af91b42722654354f04a1805f055368a1e413b322a34d67e19403f6526105d29c36cf65b3cb073a0914cee2245b7fdd79b6b7f17e818f3b2d38635c2da53ed5225e8b06ccdede9c71198f3c54e225210038a77ee803e00cad2326137bba85c281c7287f34a5a0ce85842045f75f8a7880bb6eafcb801c7f23e3dea0320d01f83c6bdafa734ed980f256cada0ee730f45c9344c745620843ea88fd8cc4e83daa62c36999def05d9eaf4d27f92ddd217413448aa98a860ce85d2b747dec83e3808e17f23817abb787731883b6503316cf3ae58c66b007e4be397df86902855d80d9024b9b6df02a4af0e2ce6f7a3c0d804a7b9043db9501a3d5f66990773485351ebf5629c8cb18b616dbb189846a00982907be750393b369b8f564a114db6b9ab463aa01043baf1cab8979fec5fd1bf6685db9cc0194555c7925aaadaf8425bd05da53ff66ec8f88e27c5b4f9360ffe707289ec2f1e1558aaedec1e7b614f175b9e8a03d3323b00843b31c674a8c5875b1f48c6e6eca9606a04c8f5cb78402122790179513908a967d57ba4d636ae851c93d14db5efc36ee7e82cf1f639c04d191c1199429d751685ca88b12a6b9a3a647fac49b4b09aa0ff5f0ba9e672532b22929ecf5c17961097b766a3d4fa16f0d08a0d02b91741a086136861b327b4940f1de399ff0e0692563558f8ae5a8bc5744e3deb22911c41ff721f836d993c6608931a9f9a6650a562e36c3c1157cc72a1628fcf92d8d4c33a0e7c88fedce871a1816b1067ce8d81320d25440b6c3bb75d53153347365a083c3c7354051479f4264ea77884772a85188fea8b65dca862bc2a61e9b8c7ebdb171a5ac2286492518084e6bd6aa2d2153b412bd1a5f29c7113e88b4c61295d70007a7165cdb14b7089dea2f561864fa205546b26a4eb075744266d814f9fdb35c8222434ffb496e802bf46a07ce1ecccfa0923d4406278e90404221102258df6f6f8511dcf11e8657f93e7df0afb007c3a65df626ac09ee28da473a91ee581a8d533956ffd0b38432dd2afb49ad6b4c0a34cdd5420df22977bc93fde8268828e02f3d4629ca937f3ff4f8d964b5978a5d22f4b9b1ce7f8a6f8b9c9b61f8759ef44cd2d8da3a8bd244b3a1b8b6000c88d71f4db983cbab6aa2a5993bc2766c4c92f88180d9c0a028f3273af57b3c57019aebbfeabaed155faf23e5b44f5247b92dad1e3385cd53475ce780a4b2cbb4d461e3e54a6f1c8b77715658ca63a33f8dce99ad69c9dd2dbc2cf82523bf9b5219d8618530c27804263a38a77d6cd3b9e4b2bcaaa59917c31bb9f2bc4b1200224d07f48869ce4805163044673cd000ca929c9e0e9dacb489a30207249e4fb6981ed7a6609ea4048d8f95c85abf3823ef78f907ddc0c85650ee91f784e5034ae7970bb785c98471f1ac0b344308c9d1b4a855834a8e4d2a2c9f7453b6c1fa1ef9c97401c78876c1bff8beec10632690964c25d110f43e9f787a26d4630fb63e750a79e97007bfd34e81252aeb62b8dce8b7953ec91255e24398f07e6bc203da2267862d22cd764099d9b9dafcfcdad793044d1b7cec8fb732bc3dc3e7c36ed48fd8fd70df563ba52fa71d4c41c506c9525fff1f6dc206908ce97daf2155dd9dd8d216b362bd57c78f4215767b85c146f815d0996f8b0f63d6ca1c9146041848813f761055f6d72289e66b47540376f9ae5e5feb975837cfd90f099620eb22330afca1d09065fa579202b9cd27fd0aa699f35d13e9363a560d2386b13a905bb370913fb81a4d392fddca63ef40f5f5c0e0bd20f0066339786fda808e6050f9d100246b98fdff94ca95bb0b7d1e38677620880a284884e2d69a1586cf08ff66cc58f435656c412f5c58ba946045156784d31a964104d6abe8e209c730778246870828b15b4cb1d26544f745384ecca4b6385d9f9c7ddd9093ff8020f513562d49ae3ee639e90e50c099d5db8719d00cc8a47a3fb07d7892305891ea2c0b013584016d94f8b183b51d695a97a438ba29607b9d49d231725d1a32a662a1539c4ecc8ce35862348c4e80899e3951f5d45062274fd1ff18e17f4265b501f5ba50af98a5a448aee7451d7858900e9708f3ffb6c47ed8d23501ad2d472cc268ec79323f30c1ac114628542e3c2b1a1d7ba5baada548a2f5ff5e5210836034ae2ceca0cb432348fe313c0b6915a9743b24b938f15decbe8dae8ea66a5422814928493bf7760daac9bfffbb5133ad44d02dd64c156ed49cacdb90e1838ee6674620574d595ee32592c9311eb7ada178d0b411fa1f6d1640e191a089501890235494c3d74609e6949230b27bb8d3be4bd0b017a7208b2c6ab5a6b3f8515789e177274211db835a1fcf77a3fcd799a073fbc8ba5087863d555d40380d3fcda3a4525c3251c1f07805e58882b171abcce4a13c6e94ec5442d13be2f4e8cbd8076a05f2cb2f6a3b515eaa9a6cfaf5b834a6b08e08dc94a5b20b76f2c99c719ecff4b727e01074e7ae4061896e3605d98a3bbe154ea32fa67f4299556010896d17934507ff377206e26f2f6546cae3d7eede8032927fed73065a6ae240f15cdf0b3aa7906eb03e2fb3b48aa70b7f1c34ff182b25ba9a0764e9021102df6938be0b9bd9f69432155138c79fe7bbbbbeba8fa821c46da247e7aaaf55a10eab3b9ad5d4c89e2071a1381ec202bdade7f00bf9e2b24edd34d861d443c8e71203915bf73f026f9942fc43a92d7d5d0f9d69880b622b9b5dcfdb7e2d16ebd6e0760d4c61fc2b92ed101017a6b052ef653dfdc70c566235a867ea91d560d9555f384aa51511b72e68e3465dfe6f972cc857c1cadc0e1b4e7ed9278e6e83a39e68d1d159804eb263db68012a8fa1d9f0ecc83610f041eb230a4e69a36afc9d868f4942d266b145ca4c79e0eaf30faa1aee441e11806d47548386f9cf5421817576fe7b252444b2ae57307b0345aac20e529ff63d8e7dfc80d7de0d0cb0d61db77b4b448d45bf1207e25f0f2abcc110ab4a5502ed5bc459c807fc56dc6640eada0883ed2c16a84e2a211d204b6f293e9c43bd3ef4ebd97eff104408c71387139f20f4709ef9cb29cd701a3b424de730381a8f720f4ba89cbf011ef448df9f7169e14dae5a7c8a3d692d76118c2b4df5e41194f7dff96b54d020a576f927262db18c09581f2b025c971f21902b97605c322092b1e22248bdb8c00c30cf58746aa7f590ac5fe00adf029526e0f5c8a0b9d440c5e0adc6ce78e7f55dc085e316be4a0bacaaff0acdd6a9ca8356e6f8934327bc6e566cde49fb89cac99cc34bcbcf2d8d2f1508fb2e57d7d0ea2c9dffa5ac02c97c504a665dc679cf89aaf73b6222a454ceed593ea00e8c5ad283c8d6fc766a38627312654d08991f5d28d1dbc74d90ef055cfdcdef64367ce4b5698e52e2dfde7afaef0dd346b17e18d026aaa4e9492a3a0ed2a1ba79acd776c119403a2941717123ca87968a34a4b5116241282dc77570b32f69bbea28987b530b30b15378965ac951887bfb02d0f15e2b1d427a0ac328acb042b77424cca9ce836c01c01d33dd1cce278550e45e1420cd541039c9637201b1eb7463f1fdb36e780c8af5e186d38406bedae5ba1135c19e2afc6d97b07088117740e002aa2f2860d5dfcf63962c00f10116a2e1adce63cd2eb60a65d166084fb7a8710d4539d13f5418ac98066c1ca4d83001f68aa50eca2fde3201eff06e07239893e735bb497af626b57d28c7b0ff2ff3a9461d2f0828db0d6e5ae3ccc765829786f876bd6fef8836fd8bea9e61133f4cd810cd94a65a8bc812248c4a1c0b5e49d0d849905d1b2a3d278d8336d104d91b56c45c4ea04a5996bc2ed2596efae6ed9033392c5ab140ff3701178e6d0920c84f11be8b87222dc781a2f8971ea52bcfa591d5ad6bfe15d131f7473ddfff280317da834e8a369392a882b1d4a5337c036f07156df92d329273e778e0330fe3a329ca60055754c940ceb5597294484f1480f36bfe1231900ba784024e7ae0c691522806c34b4bf61d4b12cd8b2f2288c55e64db3ab67406c36851ec45b6bfa672b4235826f1e6ac19a4bd4374afe8aba921f8e72f9aa3fa282eabeaf17b7bade4b584a00c707f372cfe8d6de369c5858ea20419313fa5307a58e2443457c9bb7159b72590cbdcff28a1459283bd1fac9dbd46015ba9220ad2f849b8fa1045e17f7eb9fad75349a9fcbb8c2c2b791c3a9198fcb2f8fb8051ea1b144f69f655822f81a0d1f30bdf1722e1f8fb3bade0959de58d6b37e0a3db1e4af0e587b217355f8550ac4c34189436acbf9840386eca0586b9eb3828d297173b491338350a678e6a1c53b3cf5caf975fb00f59172995ccc95db211dd8baeb29cc9d6143bf517046b88ca84aea46582ef0974b8b5304383c5d61aae3123eee9fe4a2f535752f89d3fe25b818c530e07fc80595ce3e64278f019f8aadc0b8c36ef580d4754671881f236d23d4ae9b3a780dbe38358607aa6afd21d6d279b40d929ab9986b548394a0c73a56d5643a7438641f3fd4457964ee2df09b6b22c976cd6d60d0ac47c699db2311da5b447e5864963e2df5e1307211a04a51de2395e2c8eaa061c1b34efc10444e6302626b2dde206a2d688598db0595637edd8565560f41e491e434be4f3b782b4fa4093bc4bb99c1f76b7ee17f7843e36b11cf609e06097756cf9c5105dcad364f61df652f09e04666028d0aa005394632f261126c50989a5924bbaeca34ff8800a1dd2c135b1198fecfbd77c5ba8ff52feedd87494889624afc45c57fc13391c214ceccbbe6ceda2dfdd3f58abbbfce9a1f1a5a75e6b7ce8cad1de884349df51a39f09b3c259c55bef53bd3af6110df173d6dc88037f97e0a2f490bc5194ad400d2dff14acbd39807c406cec9cbd272d6cb31facabdba950ba32140a91946ef6dab22b11fe4902773d51c91f19191148098e49c116ec70bf3531e8d529964ce0123e4a9743cb252ac0118558b8b9d930787616853f4cc8f1cbe5dc9efe0b935747e40c500e27ba89349230e62f44688e72ee4a118da77fc4a92546c5adf677e5f6e9c9c94309bec1025d01368da97a8c8d61dc349e7e111064c34ce4ec5e2ee7e84eb3ad37c0d9ce47d0232da81aae747397cc73f2dd48e9236f1539e5e7d405dbc942bc373480adf510ee86b4a9f50314f92a951d0d659b418b252ac923615178526f2083515b07c5d9e102a6794b8592ad124a51abc5e19721c6b5bf14d6f2474fc48ae825140235552c838904a4eb8a8c89675bcce1a32b524569c41355e842467aaea3e01aaf0c644998680ce03833033ce04af49bd09ac60439ab1d246894126bd12f46b2d1b5c8cfe2bec61ebe947af454b4ae92be866f4738b92ac70188993ffe6de6907421f39d4e5480d8f5b7058e89524a130bb2b544c921c95574672d11eef60c9647641711bda8edcca49c98d7ada7760a9473d18409a333828492d7b5e62baa3ac28941c4ea1e8738a4ade2950769e929ae754285e7a4a8c6a5ee411a72c7c4e705130df332b4a076fb1f020dff88711d778ef476e21eace59e2620340d898e88ad5b50887537a1fcaaa769c12356fa7e8802d2aaacba9533c4e41c9652791a19e16ec40e1722a45973cd585fed3e7a5073df99f5bad7251f39c0a954bcf310c8591dc4fad942e54eff9cad915631f9d4edcf90563322753e703bba5dc8c6beca845d04c12ea9e115bcbfb0efe22be23cd400939102da7e0897326219e6e700615408f6060a09ef90f7ac46f541304c9e933adc848de453e41ea8e791c9499fd95fd40e5f873ac3410177a1b1c4ad7f37e2751e2d30fbe6b81590f1035f08c7e151fe1119fcf115f8155eebd62e18d4433652587d6be034493c04807851104deef776ce1c75074209b4eb4ada5634ec4340e8135e547cf5fe5d87807343dd5403409c237179d44da5ca0df99fd6a5e4308b5ac6711ed63207f4f1aa82ac2cc9255ede9321bc3943576f9ff211f1464d841b1b09e853fd4a91facfaffb5ca5ae4d4d3dfff56b74fa4347e7328573c72c078d8b2187ed3c62cbc6a6700269c9aa4e802043c86a2f68d9982dc8b8db25f1814320cf2c484bbc4cbf69fee335d25e4895c2ea377305d96485df0debba968e0ddd6f4117ad0f858c64411f5bb6cf414872da8c7538ac3ad0d48faea05ac7be056cbe95b10227b3163038bef71e0be7e50b59646a95d7df4dcb9505a1283d8b8e4526d6f01d5704eef487ac42c76b3a2826680a9d0121fa9a1dbbd683ba3e113e8430d71f2b0d9b30e8718ac4c610130ba38da2a5afd38d06dd9f5c41cab7ae79494e031369baeec664996ba1f9d7a9ceae8a56e318bd706eeb8eb601f5c6ac906a3defd80fe19ac6be30018f197ce4c7c5fd76b531d46dc0fa446661f84c91ae7ac761cb1c0849c425061e4ad55367ec57cb38683e8d20b5071c550c5237f489f74af5ec55a96bf8fc829fe1aab1d772a182ce79289480b09cd9a34b11fb86f04e8d2c5f22d86a6c2c94c31420628ba7ca8e1bd5aa9cbf6a897f9b29bf32570d904f98cea7024a48ac32e68fee3823f3333bf974456ed92038b550ac134bfec09a69bd14b1f16315102ffc045db6b79b1c538617d548a631d01cf1c477c4757061b327901313571a46521445c44cf1d64d02982a8f7c60df585c6b2972dde7cfb532cf65e525bde4f981c4c022450ac1eb7e8f1335723d5ce15b28ee720b38c3af935c7927a88a6b3b499ca8d9172e70a6b82aac4ace5e6faf1d984a4417477cb11c03821a4cae371713c8b1e90021a1a08c72d1e9d9adebd5de72c2e0eb6b1160a922e2b4abc22a75ad9cf383efd25ad3111a3dc0a1d9e76b0bd7fd4484acd02f26cfc4b0c18096740cccaee2f95f9c59ec3fab19545c0f49d72945128bfd66f65da0959ac55910dff65aa03e5651a60ebf26ef8d04fe3a83e480a56a993ef2e6806d898a6ffc0204fe3ae2a1f3f7089ebfe0d11a4d0fd9b1835db8fb0359bba7350097a4eb7241a3b924af5e488b0a26f58535942b767c593d4afa48c655d7cb4d608ba196e0a93708d64e7fe65b2c73f010f2cb8a701f1f19e136653350ca4fc0deede30131384aba994593467289276546640bf47995326e0ed6f0cd874a1ae198e4bf6c1ef775c31e587b763ae5cec1a5f378290d983278b5b567210006a332817ce63fdf8e70c2fd3a1a00dde23a67955a210a9ad8c8ae1d083b3cc25c4c7bbcd36abeb858139700eaf7e45400d9bf81a0bfb77529b78534def6c1324ce653693e678d150409c851a2e35446444c91045ece82cf4bf3a307ae46f6178b963a06fe58487855d9cefdedcc3e60fe84b24e35a2e3f8a6458df09a31bfb66b9598746dbad4b0180faf25b93091061267b59001cd1263293c8416c17e2063c1f00437411cb4a693e1f01337ab733abd982779752488be21fae3631f3fac5c5fc0e831e8f87aee0c041cb613d1f9d8aa1d7d9dfd0a7fae5d557045daaa85dea2560b9d6f45241d7f4fd4dc61bf429571f4de36bba0451ca3017d5b07b9ddd811a15ab0cfac0d259d2372cf972f2f48d8d0672036a5c578848c6980861586dc59d2212b39c6add14a34b7673d43ce707b728b0a4bb29156856ce29e3fe6fe6aec4a5d9733093da2b9fe8b46d78941093a2dce9ca99eff0c7ab1b3bbac046e7e0602705dbc1e5495480a9b460ff68ad31faaef81186628549a93d6ba1379a0c9ba48d91f834017ccacd5e6c8628866bf2adb5e703ee5618f265d80b4ad5fd99aa977680e01b3f98e74310e145e8afe4c3a9851c53c523609c22030448d23bc89da040624d134810685ba0ad94602aaee1d930cad7964f931c5969c179b6cc3ee2f60f13539296f4a409655d3ef4d5b41a94ab3dc7bc5e3c56985fc1dc7c3adafbac7ff6cfccc13a8ddc2d353da61ae596a1eadaa37bd5bf3526fe0bf58e8526d264ed50d0ac9618fd2fbfce4ec817fce1e9cdea2b25ed70ec90bf1e985738247f48db7d5f6201f70b2ad941ec25ec659b24310bef601e5eddb4a1f0f28d6b57a7b262b63ed86b9fdd21dd9d2a9f48fc3402696cc84108c40fbe8ecad76ec029525666622ed87e86630506940ea1b9b1ff4c98b8be2080aacc637ddca0cb8d54078b82941317d1e3da2a9849c08cd75e467434f0bac2101779ac0d3586542f99dd1d6e52381bed8717089f0b62e7305ea16b8c8a4e9508fc07bee3fe01b0eed27a82c8ef7b6239240707deb9b370718d8383aefb39e51ecff1551fe85bcf62d6dbc45eb49bf9c29a5441371b6b32dfff663adbb040ba2ba3f0d8640a80cf1e2aca91f70fe09b41bd1c35b3318280d72d03c52285adf9a9654550c0f18f51a0586e1512b63f9d964b195c8648c0992c63f8105066755055bfd521d0b86b51c4eb117b13d702c30ab87ce39414be24696620b66c612c4144b5cde253e7505377de5e50834c7ea9696a9ae4f0fc985206c8b27da5e5d0587922278d81371ef181c96f6961e34a3ecd507cd6033df2ffb72c05f923b69fe9312047dd0337491ce7d2942921687b443d0342f339ec639c259e3482d3806beca93bfa4deb7a6b175b35f1ac0222ec1ef6b7bfe83a498180396c064c2886d7f512499efa2fd1481426c23223b99337c166e92039aad9ff96e877e02b8035727d19686be5882e88249da082dddc590960248b2ee8439695d0c6a4ef175a51caa21bdeb2be2a5687b4eacdb1f2232a218b7419cbceaef2821e9da39205641f646ece35df247599e30ee5431627ed3a87585286f72186473dfa010fe544943e5f755562c844176acee6b50b0aa66a2b352d8b85997a3c4d76d6a4414028067641bdc41326a96f8827be43fe76eb579482198ae71f807828c21f52c6eb2353354271321332da5550ff30da14a64a551e9e14a37325aca1ab9d0bf121614e8163bb230e8b93ee90d6ffea54b446278ec2441e558c1382fa167fce8b22c12d291d21c7ab256dedd6b1bd3aade8633ea231cc33213e0552bc36ab595ffa3e391c7d0cf04a2fa93793ac257128e9d5d559d70c3af775394bf98c74ffc7e4c5024bdd740d940ea0175afe5aa593a895510ae6e08c692222f6230c9e4c531dfbd1a82ee692b889b90faf208fede5a21e5de77c8845ea780fddeb16e31547e2ac40c0b194bab1fe520b7c93143072185688386092d05d46aec99c26035ff06f013ad299a5cd12daa6deefcafcffa0d334c389b74bcf4ae92ae1768ae34b5393812417afb755bcd533682a02bfdd4034fd61db0714c8c435ea1ab65a2e814ad149a048b8c0e41b1ef832aca72513292d63f77dce821e6210575764adc13e430170c310480b8a175901032cf68f090031b6f7729e20a7513e2baff8252935969c6af742ba23a31085532978281a04b04d089a8cdd1d6c133b8b26271759ef9412a46714144baba1f046c6018e9d070689f6c693e50d238f85e512fc1ccce5ac7bda8a8e89f8d3e542621f87441c5b96be7814b765464f8d49591f2d2d46f2d82976454ddd45283d096edf2d6609ac1d6e83ae0cf8d5eb4979894f1cfa5e125ebad9a76cdf6214c1a31b63907bb6d89d8d164f9ec5ba5f6bb371faf10ac269d5641eaabf2ec53eb69cdf34ab112ac66cf976a3a9bf1d1faf31a84e3802dc57a8addcdf9ca169a778f740721c109631d73fbc26c0abee38e1729fba0b1f3d7afb1290f10275ff1f063888023b5f6234d27c63df4fd002e88b670004c2d611f96a339424bd1cdba5d528eb8b80837b5441e109c5f78f276b5ecbc7d9c531d4e4362d4ce4cd392b2d6031ff4237e5e75e8804f7b62f1a18c1706aa16223f602375f6690485562b7e4d9f950d813bb7979a09919bf741081d0722574b81f5d5c39f866538114d541a9a82a7514174ad09d201c0441046eb2a3b0b4c26f2dc9a66563c5114cb29ebd54543bd47add1b5a57ac7fdf290b8c92cf004eecf73b65648a070effba25dc19fa6f2bce072217b4c14099f1366064992567411d5bb85c493e7ddeda24f8431f6e6eda72fdf79bd2120d5cf269ce6a8d8d36c38f9ca8ed82d0626c4ce2baa668fc49c685827cff8e1665c5292feabbd5981f1d9439b7ddfd9bf8c1133072a2f02fd5f14cc954cca7a6ea2071221bf822362e47cdf21f0d9146e03e755b334447f46515edfd2c6863873b05d8bd7be2aa0912b5f7a3be2f22e0a1cdd6c93b3fe728e2240e86efaf8f15c5263610fac4d50332fe1a5d1ea7528df71ac12ec97c3c5f1ab43477529af126962e0b821ab6a880d0aa9d9cf48a1b0a3c1952ae429cb1af1d98032216bb5860551c0848af90e5f60f140acbf0979d2aebd0111bbe5b20e10ebdcfa2a9f6558350b02fb2956af06d376bd0359ae53ee5f260cc0849c0be0f5326156793cb6860ff5c56222e2c27ad654834e23201ea72e7b1979744df7ec5144d021c3fa6143ade5ec4bee4c8fa4d24a476cfa36b49ebd72f6f176cb7715cf686505a1228ebecb689b5e47c29ba930ffe9aeba6b2a2fc4fc50c87a0524444d912b3a5a940313c128ac924a3afaef86a5eea4c2f659981b7a549b03eb6417e09a4924f3a7a25bab315a32e4691ad663c2e83cfb75c5cbf9cb1506a5e632f590734cbd4430735560c00f19daf572bb77dbd7eb3c896bd506ad36d56b85930e1c824b78f5586cd626397bfc82c6f17add8db0c00797c382640ccc5cf6c1f1967cedadc3d7a420de2380a4f5ac474c54efdafdcfde56c6ad1dec22c448cdb2f455f6837b0d24e2e2e143e7eea4a5be8a4bbac3ff346828fd5bc44d75b1b8ab2b4a586cb2e84e9868030fb595ad6b71c58080120c23a91e2ce7c680b53c30d91a66c1f01eca31bb39456c8f7ffac3aac65265cddf4051e7f43816544e8c636577346ddb81a67d282064fb1b9215ab7ab6faaf3f0eb674e02e4791dc4675c45e6cccf98861e22316ae2411a1d8ef407b621497eac06c402f80eecdc32b9805e3066419e56f4b68c0424a24584cccc2c8a217c080f9564d6cfb08928a91d3c937d8c7dd847ee6b6940f54dde114698875635a1d4a5d23da8376aeacae2619822cd32a5cfbfc16255acc757bf1a4101adf151f1ba049ab73f5af4d6af8bcc034bebc7be554c368f11559875b579ccbc147946ae53744200a116d08602587c63ab5eea0e68ba2a9ea92a4498c0e02afe0b62af5a9c42bad4a8407e9ccacaeb1728f2d4a776d58bbaa1264362186f68694e8c7a4420777ad79feb443ff9de2ba68225de89d7dbd9952869a5e4dd5db59d28d55f23f0ae749bad77ddd0c4c3f4808bd7620369f80ad3466248e4d01ca88e8a1e3af3541cc1f18d7d08b8a24783375b261ab37505b31c915d935916ae1170decea7b9f675194a1f100dbcd4c4a68cfc13b2f434ce4fa46f83cecbf4ddaccbc121098db8a7a8dede6695a70e705dd68a47a4a1a24d76b315577c6864ab61d08cd796eac1113c1e4807bf9432d8c434232341fe13729112cbe750a70823fe8a38a812f0924884e39fba8c8a7ccde46124ffd993b24525ab7e6d514c57239614af9ec49412f201e2426a520b3e666604c98a3d0e3b0d11c90d3911b53f58ce24e75db5d1b66d3f243ed3df1023e8ad459ed9b10f70acafa5b4dd580a68af42ccb8364c14485567ad242398ffd1fdc63942aa575dbf658b7d38536165df7d3be7f782bc8b442ac10a309d2387a0d0508cd9648b50b5364ae9a82a6b7a0a4d4a3e8d4a2c08b0c246102dd0505818186e9b23341bfe1bbd9fc44d83a3c54487073c3daa1d60cc5a1d35bdfd1851eae238c788d253148cf0fc43a15a53d183c57f28cc5360c8e75282979063270e3bab081e10f535932da82e89d5b5ce8e3d62a0020b41f6566b546b2e4fe6b218434ade30f5b8342f7d30d1883ff76df3f257c0e8759aa00b2849024a08fce21335ff67a4c29ce9bd3279c97f8c77966276bb1e5747f338a193419692ae63a5abe2b8bb5440406f6d983d7f649135d1d44d93747a420c67609151795108cf1285a2b33f5851752489c0e4b85ec8ce481d5e3adca2bef60370f997bd000e9bcba3460cb72f629ae7b0fa33ea826e996a1552125d50c364c61144a58b63a75dba519be5b034a4b620532d43f302a0d0b53581c328918dbcc3ea6311a810132075041eb4142ba6540d49b1da4150b962fbbbddc36b8927fb4225d0ab6d37d96d985e0803d291dface8d57659c772001c1915ef8e02caa9c167bf8cb1aa4e0a4dcaba0ea75b29e6675c477d3f3961ca4e31f6e30e4d1f4f227ca6c2c7b6bf7dc7c9d9741f3b62ee03990bde6109bbc4f22a54ed0a940e0d4a743ef9eca3a570195c1f37541e26c1d447be9c5e9e46d5d85c38f010f734c84e2997c49386a8b4c97e233e7f51548722c3559ce5bcf88a6ba36994063e702fd1229ee3ec72cf6d050457e70ba49b0f12a881aa69e2dc7084ec6e022bdd597366ff12fa522404ae94325f9cc5362edc4e049ca28a82653f568454c04e7178dccfcfbf0953ed4afe83b01a2dd4548c5225229956cc9085f940d9053506036b8baa795fa6563cf0f90aef3e2d9de3ba429dd67fa9e2382013590f6c7d6b3fd126a2effa94f97679297826888165700100669233b91ba5040890b34b02a06bc82419ad8ab1af50f359348f8889bcc26bcb05b315be1c479e82b5d336e0a265c75db7409c72b168280f2da6f4d4d71bcb6a40973d9e3ec0512c217de051175c51051bf1faf88102ae6d147679581ba7d9d4383c12421c60abaab79b09185e08fa8304ea95413a5d04fbea93184b97dbde43078a6583cc078bd274f2b1644770db2fe6799235c996811eaa23a556ea5e0baa131219d3f396d460401d6faf82b4e5201e338530a91f8d30085e8e6acdb41cabb3132d39d1612cc7f18590334122c66bc132b08c91d0aaff70a026968254c070053d1d04779c19b574255ae1664fc48c3cee68f3de32cd902001c5a99a5a2096156585b21f3b2b05f13128af6858147ccaf6635706442e3ee1d515a1ac64675b155180f23d010a108060b1f244fd0882baac49471bb294bd2a9a291f3dd9be77bec8d2fbeaa255373af0573709517d16902b129e4aa059a39b8778a81e397729d785e4c146e224bd9e2bbe6b693417ca8b55d6896d0fa8ccdb48e58bd71230367b6f696100b15c1cb938843519b12e4b32a94fdcc123d7e2f070ca1240cbac95f11af908a5b8d0e4ad1238836e31700c4cc15fc81b7fc1e2c36d68bd230a933185ee05a50e74834b6d228b2f9ce07fb066e9490835dc7119204561349452203d902b373ddc6fc111e5a4cf526c0dd682239672ad6bc3cce35967d1882a4f593ec5b9bada2800b9c35bf70a28a66297660b680168c555bafee20044cd51a61b7baaec0ecd8383b904755cd212940fbbbcd9dde5695169602e7cfb1842f122b00df275d6a6a0dad4becb5dacc1a2ba02e002dcb66741d9180e1863cc35240dd43953ce6ae5ff0436e218f0942631dd3d96ec9362f019db5f83d74a891e830e28010c94786fef58b49d335809702dbbef300677d0b7911cf794931b24ec96820a75917613daeaa260605dc102fe6f1eeb02b7553514917ff6b09306640996ea44a623058b1ea662d125001566c1ed4781fb99edf5149bdae0c2ee887df4b3128e539d354c7c7d00c93b3fd936b68c7ac387ec5f44527a3664c7426d01766cc8330e78e6ed2a4f76be21453ba4296dd68d19451f352d1c2432f33b251fd7601a56a58ee6fbab06a40ec3957645380fbb84eafbbd2ed8976b7946b02687eefda2166eb773b34c73223551e5f598854d1d66892b27b710f130ef7e9d10a64e1624754faa9b90bbb14a5293571334619f6d3ed403b67d4ab75d10eedb4acfce4d9e8893b2aeec1e876fb685954719b83adf7033f3f007a0a1357879cfbd7003c63c9e86d1b319f4c94f1840e95b3d17e2566538f88deaf039e0bc791af985ce65a3e8dfdf6c5e7f2cb9e86dd673c7575f705bcb7834b313cbb41ccbb63f12730baa794750b25d5b7245d94c2f6b0e7ee9f38b5f4d9ffabf577f440676eaa933a208dd8837060c5067f44d8381818e024c3c907a9dd8caf55c097bfab9f992e015f08674fda3bcaf842ce98603b52bed84e235bba5e3aaae5f57a23ef58fbb048e99fb33699cbadd6bb8085285b63948168ae65d51606442660d416f09a53d6531bf01ed4e3727840ec203c2018d05d9a430bb9164e1d267a0738c69103d3de2b8371e200b155b2bf75fc40808589095230a58680c847d3dea3e3c1150b1a38e2af8444fc1c4639e651948c1b69532202ed5e7ec3b6273b8333f45d779eeb8e2450cdc9352ec1e4201e9cb457c46a2c9d3d995218e1bc2fe20321c4fcb5c08e6777fe19853410a3e50ae265b0781e15c98a95ef4484f913110c6facc6cc298968eb1c0d942fceacd1ac7d3d48314a03a6e8a7710a0e05562b39c9d95553280799e93baa26c3db9d314eff1c0ea52917d1bc0308d9c3daff7990cc0e5832888827a2ef4659c67092b775a13dffe7d9e7fe4c13939ebdc5342994264adcd1a305a87024b45c00dfd94c00099c9758eec3da03aae8af9a8c71428fecfe621306ee2d302297e25390d9f641095e8c8c8de46df92bc3704ea3d646f2e4ef08864643afc1348182f67ad13645adabb79e5b6dde599edaf154254fb082694289b5d858f088062dffb50441926d0e33c59deafd65ccce6ecb2548af204fa2d064202da36b4ea1a1d35fff4f7d5986832e5b17a493799b3b71e2a7248f0a97cf9acb32f433706134d5fbb847dabc95bbcfec6a579de4971536a9d878a40a3641f8e22d9153785f6c608c3a745c1feee4f2ebc1be4b06b4a90d15aff91ff600a7dd2cd95188108f6ffc5cd7f948e175947ca6a1e33902480da3ee08819764772ecce4efa24361fe0313125597cb018102b2620cfeddb6c54ea1a1e3dfce199e25b2609d46a6949b21ca60f07e262ccfa12393bc305768ed49df3252e054a5b02487371c6a896e9ffab2d5ee8bc226b0de369e5c676b03c7395b3513afc158664a7980eacd4cffcc5b9528a60f16b5fb18871404fe9dc7f1470935e7ebcc10ae2fb823ad0958e73fa1d1bd2acc0e9a7b35d292cf19fdfe7257a6ae0ee0642065e849a462a9033566f0a64b10e5c26c64ca0a5b2341d8ef7bfb159516e8ff5d8317b73fd187b566014717d1d59854bd665f3bd1cb0e14210118da9e951447974131755c7fc1aa12e38a176f9901d85a7163ce5cce8397c37b344eb1c69947cbb9f8e21ce0efacd1295e2adaa54da86761c0d9e6c12ddc1cc2a4501a91c61b40c88ab77d4d16871e1d5578aa38c81de13d3cb26ff617977a9ca7d1e1eb110a5ecd3260df506ccbaa623467334b52b0aec68eec5804f0301b38bf457351035c4c265e8fcf1ff97f5190e106a58b87b12a91c27620a5cefa637e5164a92d54d4f5e94e1fc4335ed2a8cc8a08ca81d534fcb8752d40998e3a0e153b87fa88a7e02e9b588be46bfbc9a54b710ae5a09c4be920c2cb2215416577b56ca8ca114d59612a2c8010547f876648b1514d1de8b170bda3c8bdeb6200a9b95fc7004acd5881a2c32ccd2550ec3d08dc7e5094b570842ec5e480be67617901ec5fc70aa3f9df31d6b2615a496d630fcc2b08b61942f55b88e09e181a76de39503c6be45c64e94535bd6dfd6a62cd327fa79ec1f04d00f061240b9b7d7ebc9a3e3d6ef9ff9418534ac3e6216fb5eb296de8b4342098082de90b5b58388ec826778002888f968fb275e677388a3e732d29300f47ec65f14e9cfa63177c16e27ae8d71e49b4eb0362e8233ee1d5f0de989ef68e182ebe98d2b3b406463d454c8a76262d936e9de7466c633506533fb2806998b80d0e9b380251abfbdde49ceec13930c4654794486644fe9cdcffe2d82eb0b2339166ce5a822b1185cb3c41fa8bedb3f03644f2d5ea7f169bd10884c23590935f53b9d1dc62aa178f388225aa0b2b7a0bc6923a331be6dbc990566e661356e7e1f1268934b4424469591fad21cf668f0269e75155061b057dbda99cd3bd4cbe2ade2ebab4d49f01452d46e57190501b51f85bdf3b7df7170d6c7fa3ff7f3a1d7901a9cdf57157b80169f96b13a5d9276a1026a19aa309e5b61106475efabeef3fa27f68a9d9d298fb1ecc551742bc46c6c8ea90932bc9a09e4de1a441c0ff00a1b4f45968338c0d7bdb4b666ee5fbadbcf6f08ef46d1b1e5caa28fd90356c998bc5236770cd3c7f539defbda07f5a162095022208057bbb0358b3c5dadfe8355fcf18ebbd5da6589a37cefa1ee04a6150ca324df2b515f5c41430722550cfe7e0a528d224ca5fe46e1c571026b23553b84324a33daf049c983efdf2cfd956667ca1e48db0258fb297588c90a36a027637589ca2c14a1e4bae9b7b7a912200a76c5a651cf2da62845b70591b608b26f2846f3cce3e929fd3f1344af36a1c2e13ad4296112e49b2b0a03f66613634b39f8fb2b3a4ae94163bb7dc9de44021c9fcbf1c00d4b6e1534653d59da0feaea2dbee3f60211b2bc0d141f05704097c8068f468ee34697d36982d679ab6663f481fb4a60bbafd5785cfedbde461ac36e382935dd669bc1a45b8d5c32c315eb8fc3ef5f1b1e382962e52c5dd879891b3ab779477fd664b563717d5f7323794edecd25c1638bc7d58a5d356d03bbe140a492012d8cb63dc88a475f2774d8cf02e86aad29976c7b31b9b120c46e31410f1284e7dc676845719e56764eae1cec90c3d1781a5aaf8543d0d24074592fa63f5c864140b11e2a4396d8c5864cf5f88de99ee75b6310904b277460954f006e0d7ce041136790822d200ef66906eee2f1481253b2c85e28615d84bfb96f4d124ca4bfd99eb5035307b71303b6ed086759141262421a44bbc70ecb220100230fce072003f23330aa20dcd160a2e2dc6d9cf8dbf411d7b0f09ea1be0302de0f54d1279864becf5593399af49283edd25ff1448ddbf2011b27965d5e0fb0e42ec6c0bbdd2b850f44fb996c0b04dae1a98be51481491111d71cccf6a3d18bf8bfb0920c1753f06a9643c6c25bede858d847e2d737100ed039bc615069a52eb5cb540a313e2c1fd864124fa567a1be876c80dc1b923b23263204a1b1777aa34364ceed3e8c05e5b61209c59475a73819c1613a1d9f5b747525a962d531897762e862c91e247651e88bf53b4eeebeedce50993212782f053145bf6495f1e1b169a63f8d2c744fe322fc0cd2cbefdf30cfbe551f03468755b51ed98cd6a4f3c7d12bde0e5c5c286bc942859325aad5ccd7127f31518df908dd7450f55c19f7d3f8ae04b0b80004b4c2c08036a5e6bc9cea85a5a65f02307350e32852687e278a6a90ba72173a9fa47d8398e1ce85470ecc4bc108e5561b0df2087a7793a8424e025847ccd6dfb70c48acdc009f0c400da90fe99c5e69fea29fe9e178bbafb65cf0adcef2e588e75a3f54d833e3e75865cd1878ec24372331a5504ef2b88ee568700838ba71479a0db16ddcb3c55ab4b07b352c6699adc326116393bf2d5c4a18087d476d939fbeb12030dd639399b16ecc6025976d50f7d608fab40f9c18ce6122cf7ace69904edb7d6ea2f8b8d312dd02ca4fb65611f0915c8a00e12c461bf422ea89da1e9efbb97f7c07e98beebb2cc94af86a80769aeb440560e498d8a89e16faa19ed791dc9951c0b22db25568ac11a039cb783f9cf9824a2001bd08a586f52184643a57e74e926a608f0d1af8bb8a86ba742562dec9962cc50b268b7629200bd79928496d291f6e8d835d03044397f8438768aa16b60425f57b1edfb2d3348fe459f357e8081dd926bb95148570f480ca73e44fe92c9bc7909513b2c9cef403f34d6a9a9cf90235fbcb8cf1929d9bdda3a65ebc9aa99fcd52ec63c4fe97ccfffa62a76134943f18643aee76879f0b1e70dd222bf4da01713daa53c904aef8be14dcc0f059284bb6c595c9129d883e8262a29804b78c910e2232bedc9a6b1973289849ee9749132765745c269f7669b2ac283e98ddc647aa3487f3cedc9ac286b3bacde08be5fafc3e5ad7ca2888c3b09c964b1725823693220a2ceb173bd67305838a68bc8b0665f15f3b4823bf6a9c0d4130a40bdcd21ca23a56f136eafbf6ea359a43cfe6e297363a6d251597383e358b40d7a32831a8f52abcf779131acb9baa921cc844bc7aae929abd809ee8cedcbd8c09177f9a5c97686554da33f54264abcd00a25802266f46b9aadf7877ab9720ff0318a700b291e248a8b9d1bb343dc47071213f86d14884f17b7d1c6005807b9da91740c73628cfdd69e8147accb5b30cb4301999a4f11bafcada609adc95828a3bd8dd54dc8f406892b216b593c1b56668490b4fbb5e1495f49fd6444004da26d63b04ab40170165830586b5898a5725e6e394127a08a7dba24f41e2f0218874986d0e4f9971a71840e2984b194d05a628088b4a6a2f55ce0a85ebe83fbc9e4af879ec4b40ce9afa9ed3e0e43d9839f258ded194def750ff89dfc40780e7296840d3f0b30bf26f7043e949ffd671d70c5d31bfce0dbf48edaf1e84dbbf0add03ce438a4e17a86274916606f2ea0c6382acf99a916cb7e3663064b3315857c7fce937f7fa311da6ead7dc431a679210d6e6a614f259a197a4d5c3b1b872f70742c5a843edec96f9d3aed02366dbe6c4397f571104877615d99d4783ac7127c5a3105063a89d15df148a2a9815a47993818a3d3b1884ea18e542c51ef9fd5827a3829c8aa18e72e777ca43c58e76aae50c2d272a7e1bebe7b0965ef6a5f1b779f118671b79c11c1b33b3c50f75ae08db6d3f7a250e504aea40ad9421dba05da0677a4e7da695426f13ee0dc060fd818a85efb6451bcfc07a3d9f4b9c4f7ae73904d6ca17b7f43082b4e9533b36f6a20578caccfe52b5ceea4dab3a1dd1f6823b2a91540b65d1c6f5d191edb9b493fb4a999e6eeeeb2e9b10279bbc42f997900b1debbed44b631bba01130f08cbaf493bcd2f98e47568197446ad31b70c087a2cfbb17058b110b0a1b2cbb215662b76f841b450155ec7a01a200503f32b685e7209e56a3028b52f4473f055734b8279a5b6513e29c68d200bb098aae156b39142cf40e0535e1562e8a67af01ad0b87921f10c28993d93265652206e30588f2cc0f5769666719ef674017d3643044594e94e8906ec0e08b2c8519708d8513939d3082741839465ff5bcd16b802702b1e18daf828b5a52184093d3646720c13e61988a193535fe4b13f1448e947fce8ff962032a24821c6a3d078ad07366d17fac625b945ea0f2523c32608508609efa888f417b4ebd0351206155df52797541dc567910da0d2b21d89871f55609b622851a5430df8c20bee20e15de8a8c7b000e1f92956996dfe0bd95ba28727b9bfc259562a9a9b9bf3171d353387fc6cce65114927868c70d41e8705959bceaf3a22bd737935f726199af0c227b31e83eff148b7a4df4a6231653eb61a99e7a58268962d5351c5a609966a0e1131a0296369684453bd4bb3a5d0ba0a0e282f63bb41647c9169f12e5da942a2794536de33143d4aa44c0d616e84d731ec41c3aa0b27a0e0fffd69dc1fef3e4d0f968e96aab4eb014ccf9f66e323f1bf994b28c86b9b684f38931733fc522684386bf8ac012faac4debf590c34e96382087cc7dcc5398da49b3067fa925135d912f41bfd6490d347218a57f0e3a2f34d40060be2912c9d2f2560314baf2dbd981eb36fc8e71a4704fe6db18401647d3e3c11d3528e69bf92186503da387b630b6acf31dc5289bbeda69734487b27eecca4fae68466b76bf4f7f19ad3b1d24cedde2cdf7ddf87cc491e0e3764ce9f48cd212261b90f4761a9b7d9421a42d3499e05d1ec715110bb5583b793efa6a80267db8f8f3e453960d9845a18cc5b5ac219c343bf66ddc1118900a4a2165dc9ba85629d09798338fc47faff1776302b41954cdf9c8a0ffef85356555362211c1f582715e1a1b6f4d53288fb94c329bb1893790541206d0974aea04fee8c75c44ded4034620a46dd121e98020d245368f8834865342ddf40c6f82381fa1397b7e6aaddc35ddf2762059118ecf898766ac17f5881efc89d6eb760a1846bc101cfd0f48368093d040b2bc113124429112c14a661413e2c3bd2aad0c037fb6903ed08da72aeec38b2ac24c42b00a4fdb57373a2619ca7a1a0c971471ce560b8736a10417512988851e9ec944efaa319e9d70a00367c7069d959b99285404bcc354d00ced09eac8ce461962d4b922d4151b9f3d9051e21e63e49c8720ad4a0891e333b742e80b7296b09fbcb084f5382154ea69cc230e6c50330e52c19d822f32959ec5259586d7d4b7ba54a4583d673bf5b70b0dc09892ad3beff32f264248f23170bb886f22d22ea7627e40ef4b5da47af55b3e68af44e8a032aecf5f3cdb74b0a727711f688151ff53e3351c14d81515806d68c7731a8fdc48cd70c87e0e4c446f16c84a06fcf090493852ba09076162cb1fc47dab5f79a89a70968f94718b42d5db6484da527e339a6174724c0775ddf45bf22680ee6df7844023173b329ac4b97dab17a2feb259bcb901df3b3a735a4ee9e80f46a40ce871fc1ec1178f4cd7c4deeafbb0d1a6f072c34ab4735b8893a372d09c6c28f65b9b5522dec5274c2d28b8d9105931db041e1728a7708fd648d91f6e54933b286798ef6694123b1a5dcbe6961c1cd95c89fb7c3e4a2826b529c8ca6f7a83b25f296a51807ced6e6cd6c6ccbbcc3b8afd1bab46cdc33e2ec44c236f230938266908dcc5e0cfbd0f1b2c603fc12b465b242e9a75035590071ccd7cc7e2a309a9c166cf7511bb9753822db85861191993716c0f206a69439040698eb8315074de73d1940263bea145967995230be1383f80d3614a22259830612627d777477968c019e6727ad10720c0338a84430ed052ead22fe9c3ec2fa9003477ce9a9ec55e2470e54bad090ee34d668c4c7040e151bbd4ad318356158a720eae64929441734e89a86944df885800bd34554ed00ea6a0d5780063730511fc822485bc453abbb1aeb421a24799ac2a5901305a98f1c03bd454a3e6c73af21d028684d7f6912ea4ee2cecb1642ee42cac7fb4a7a1b3ced62d54ce153d4edd3fc3fb059485ec64a00c4755fba49701ca24836ce979b55d046a5a511c64d6a99f5bc519813dd2f84e043c5c3c96c12089ea5a9ed10f3331edbf123bb3355486d0ab23e88c24f627874cd5a20931f14c345bfbba8aae79dfc581e4184c2c864d89978b845bbcdbd208814f9015d274ad7370466b1e1b568bfedf9c194d088088c525cb72317bb03c8b68183132284187cc0e0b0fe76b9e3c4b05b861633d2155209159264f0733ed4b91b8d960edc749c8453743c31119b783cd124a5a2e3ad0b8e9787b44dd42dd86a87ee4a94837099d5ee236faeadcf0ae0236e7f684dc7009474b294811e92fa846acf54b543d2d9ff886f744a752258265ca9d1fb7f735dca5ce8789b743dc61443f712c61e525602f13100ab6af957f42beb2ec23f2f36d9c02fa0b21bfee31175f3ce6b38d1857c695828bb308b515ea22355ff0c1370639ea105ccba42a3ad2ba235320498eb8abcf6dc60ddcf51474e8002b4bc9e7706387c27d68a9b209912d23b8f446cea9601387c04f2ca00e08f98923ee4d40aa60a1906a31b0cf80e01700097cd161cfa841e3eb234ae226cc5d18913d736da59515859081a908deeaf976350f68b526de8487b5ebd215d3dc68bb241b1390c06fa324c7cf9e26d144fe2999ee0a95f9485b10a2da06ec144f4d5bc4268b2522b8fdd4929d5c33e89532b8a99701b27e5a0738d741d971356bd6e0c9ac0e6643c7f076dccbc2e3368c4f2292f2a3ab9b319906010f38927db9f6a60467d63c20c7009129087b85ab7c08c54a813f1a0a9e8ee3b8b9eb49632d8a5e22bc0ba41c59a71fe35b618c24c250b24b0fca7a41125b2090f8a0e5eefa509c2fea90f193925258d17e19730dc9d8c81ac6f30ce720b8678f6b4890ec18b1d4b274be0aa4ce2bc882769c21037384f9146846da8779226f5ff0fc183f246fd1b9f696044055d39eab7d3805907e7dd8bec1c536672fc560efb2429d8344953caf5fb62d0cc1644b6c98e5c329337747c3c6f36436bfb9482e8b763662398f53a561fa4a83618a23023f859e46eb8f788fd42646e6b42b590a1e7b7e18b240f1da73a2f97f5e689516094743b838332029cdeb884d17299ac81054d6a6e38710e732e48070b39650ae138d7f68b164af07c41258e9c8ad718bed10fc999829e2590556185743fc24aed0be3d1b709bb7ebcd01dc234bc70924b7dfaf3c1307b24e2a55a316c927c722d2136563372f027781ad7a036eac7f4f3322efd8f1ffdc09f243b6296bf0b58ed5840239623d0cc0d8d239c751152e98ee9d8dabccf84e01df59054a5f306c3721158fe5b48a4f4f4201ce85cbf39f30160c967d482ea51723aa07607782de91edb8751181e7be7a74b754528c72b064ec0ac459f295cb35185055f9be002f5575857b43a1cb3411a2bec0042f0ca246e60f4983ef8ce74291b0ad458c8356b8031084b6cd0a8113fd385ccf133bf45792435e206f9cbe8cff0c1c0622290d119419b036f43d0d4c4cdf572350dfaabfce58a69617fe05acfaf931e369cc94e8226b2f28e95ee239aafc814d4d61e0b436792dc27d68bf81a3cde3878097048fd6b1c242cd6ef272cd3dc3699ac94ffad9113dc11008e4dc787e00c3aa7d1fcdc736e5f7e021789657b910a9a559724eabfbbea61b4a3240001ecf9ea03609236c5a98f875deec1e717c6aad3b9db6577816ee6e59b04efa315db0fb510d820acdb9cf268c07786e79ed200601c1cd33090f032ff5edff49aaba0a7f3a1c8961de44ff61c9403f786375fbfd069d4a62424ec611046f8570a4d32529fc28edc044bb79296249849fdc3dff870abfab20120768d5d104bc4f1173a2d1ce85e940925f11821433573da1f3eff8e9d7aecf0f37221e891597336d72280fe8125603b1d268f1503c8fecf050930f5a5311dab3c06adb001a2044d9378512701316c08c9c17efd84c0060c3ffeba7e8f31298290011bbaf2d621243220d127ecc4b9e2189b0648169434ea7726c21f67a61f425d6df4a81f17a61cbb9224486efaf557a9919506ee136d421bb1f8a69fbaf8897b366c4b4d3ef91010a2bde503ff6dc9a98a91cf28d9b3ede1922667c4d1df18018eac7fd70697b08a2f81ec3386a693cf9c93847af587c076410a2cb9f9719af85df14c59fa294b6ffd2dcc2f45bd0daa7dd1c60de2c6c389f095feed74158869fb190ff597407f196d979787e0d4ce01768243138ce176d9f690d8179bf1819e08b14ff1af1bd0d0a1df1b20b2b85359a1004407f0b7fd387e7e84fb32f1a69e6984121ffc81684e1325e5c891f7eb1828e2853377986c7e57e57eac42dd997f2cf81f1012460fa0fc6155e6459e18dec825c035d8fe217ff77f313ae0aaf1725143932161d1dece0ec2b0696c52fa8f9fc2cfef56e2e651be4682482ce0631bb30976112b40b31d5498f6f869e1385b6c4726b51a8e7e4be058ce257d333aa3cfd31e71762978224a061dfa9f67f7af07f4fa7d05fdb2f7c2d61f8d0db6d39a9f4eb4c1ad5d8433e8aba0067eee50e41ffe428795077a429cc424c8cbff10a141832fe5c7176047a3f99ebd7f24fc2009b09593372abf4863cd2df9a2629139d0050cba3d685531a99b24e90f61bf9848673499c0f605fc95b5c91f04d1dfab077de0e50c3c73e86e985a296e7a11f9ab2d6a44181b0d009facbac61552d15482965178f094b1b4ccf833489f607305814b709995a019bfcf9d0daa28f47fb51d99730e0f5461fc111f6bbe33c700879ff223aff118bd9081ce94b0dfce5402e98b265eb7e295ce7e03cc73690c96aaa9f756eb856154f29209f2fdb886dd14a08f37aa3d42f90958f0db8fd2cf9bb2537fe323e0e2a34614a2297d26f76bc009f2268654a9ca028af2fd001a7c62e0c3fbc046ef330add0d04f5def7d544560c8e9ba543cafbfc6f70c328be7f9bdee25decfd10c7f65ec6f36b456744ef5dab25cbfcf5a24c31c6cf94def7ff711f102208dfb6e6df2a640b6df2a6fffae0ad27f7d25cd3b1ca34c34f2a35def8bbc28d2d790189b1d93932f09b8fdc99981a386a9ffa73ff802965e20d9f8d3b1ee908428dece3eb68ca9f14917da748fa6c5123f1157cfe2f7c7ef9cbe2f3b11fa3d65152d6c67e775fab042b349e5ca4c37facbf8c1de6d51d483faa889aad0fe9c785a71c34e4b3128b1c16037e028256d0c417a65085967c26b4dddb3231efac41fe55626099fab89b605960d89b0d19818d9b0f3dcd16ccd3464bdf66be4842e34391a79f9d588ab6e893b6749f79dc9341cd8371185962280b4542b73bc5b13dcd4de2239608f4a8d2106cdf9b4a44bc1f8133db88f0d15c65330c265b3784b1d5144c3a082806cd825438411fb9c248802bed7614c7788d7173b4cd3d8ddb5d7b2299b591fe7114799b22b08ed56d54a40989de066bb51cd7601630070fce828911ca23e0bc76a468a827293393380d5bdaeadbf1efd398f880ab9f6a9c772baeb5cd46ed8ef5faa1a6f16081837f405c05413d62636ac5c8c8a1fdebb07a6c97116acede57842f12a55db7f02a51976fc32e6255ddbb2dfff5dc65f4f040c8f0698b65beaed2a9caf8f055e7a4583913284102c5dd6a5bb1ed54bcc3fa43b7528b890bf60687d9d2531064bfee321895a52d6cd2eb03e691f8f48150ec52a378f094630efd8d4010bb0e27aec9b51df8b598893b29f8d0b8064df9c22c673cd8c98ee0009a39366f16402b31cc092dc686435005f581e659c191da2ca650c654850ce6e93808302838ca4601ea79029b22efc597a4e7997b860c094f64445cb0fa82df126d09501ff0821586f1333a97f4fad03fcee827ae80dc8148aad0d7faa756a109787dcd090658dabfce0b772764fbd664354b4079403d1f5168d009df3196b3faf49581941c0132ac55558d74ca37646a41c8e4d3d33087e76048e4234d94bc50c5cd42a722040986d10235a0c0c6a50f016099a79fc6cc8aa9ddc1b6e1183cbde66cb0d45b5d655627e2b69d3e20d6b32d5876549d1eace93bfb2cc9bbdf7311d29f721b9e2d0ac62803ecf95439af75f31c1a09c4e39d4fe781c1088ff1185852b0dc146adf6351b319a10a3bb3a04a80024d2c05c76adfd63033d8415ed4200a6b6a5599c230bc59ba2314124f110c981271dc0724f7750a565cd25bda711f3a4989e5180f9eb046fa40b6257b631f147cf4f8d0bbc21d192acc2b327a7078057085836ed0978a287bfa20dcd3a99bbc3e3d742fdbd3f9385e08c52fff8087e760008d91f12ee4c3c3f30b63d6acc8a75d2d3b72dd3be71470ed148ee8b093d243d6f1444d725a9236bb801ad4527e542533edfb019a1842384c2fc82a3b5f4d999e102f78767c6c7942b0f94d04f6814c27137eeef2551f5b9735cc4ec747134037cd6102ba18842cc0c489011ef8d4c10b44f15a7e13b9959debd532298cf1fca838f7b424d0babedbe43b32785cded413f1a4385096677376afc1f6d9bfe0dc0a1c7ed7b4c678d36657e0e4071020565b382a7ea268f46466f61b341383fc813c3f6889ba8bf1c25fb64406d5173b61ed51663410d71657721e19e96cd3c48bdae3bee7f4c2dc355c5c896a511c3d1f447e9aa1fa5b3a9523805442490ae33188119d3b2b7b7702aa651843b730e5fd10e733dea43a700944eee0f3b8457728b476e1123fec1b13d2743f355c89a245c9a763fe068d1286804155a2de150d9bd1cab9a01f90316f9dd1ca01dad5d8785c28b0f87f27ddaac408aa8563da143f745b4c0726baf659c8e1315e45b7b0347c1a26c083194cf5155d9f8330d75cd90194e7cf0d32abd984152eb76a53d643972dae36fc7a581978886b324e372f3ea24d186e9486e81417ea0ee52052d868c00dbca4f9554708d9464a5c680242ec953f03031e836596efd58d56710ef893ed600e68ea2c0a4f01efd220b0383223c9443eaac8a0372b6702d50189dbc9d31086f58b42e0f03a805e6d1527f23101b555b0ccf82d2869a005f6ddff04aedefc396c22419684d13dd8bc77a859d70083a1f3004250484cd434e31f0c44d3acfae5c9b1cd983af91bba9c044bfa846c798bbb24fc9583846532340c21093e0846cfefa4c26161b1164f70e877415d9c533cce9d13b8b8ab3333565d54328a9e819b766c7bbb53c8f5ee49a61741d680afba0f2ba62ca9c9019c1725c73118645125c72f3a17b349a0e8b142b649007d81605be2e58a5a9d809586097fd89eb6d2d2762202e64fbe2f1a79e43e8592615547fe1a7158538deb25b5fa6649510f549bf99c78934f39fa29b9835c008849efb4846b4f41a5d22081cce18309f8246869fa42b5e4a54868055e05b3260b1384d8cb81e856c3f3e5c8831b77ea54ec49a7e73ab85444703233e4a4843b3b02dfc7e70e5c58837db27c2af31d3d377550bc7356912de5f45e72bd45f3af215efc0192ebb55d49ab42e6b5167c640f4c9a3f7794895766eecb8ed91c7fb5088dc4a084393aff34ec152497699427ff5074968f1c1f01056c4daa608e0e8534d0e3a5a48bbe3814db912c0f8c825941262251b4a23e63fdd80aea9ccfe41c24e49786070cac572c27183ceca304be8a0918633c1842c46064b0f5481471903eec629ae515a2473ca26380f07c8b7b83d3d481fb7faa20c76f74f5cfeccc870cbb27bba93f1df9d0f89432158ba41030250878903229a8901e46285d60200802354b7dc5481053f8d7c5f5a9ed96354dd47312fdb6a61e5c63ab3b34027b9961256f202cc9252d2e1e142852e672310c4f58f15ecad7b7de7d348c6b03a54092a55bcee19a54bb39e00c62ad3bc090826b8a1423be8c07a5218506b8bb828e3c2a74f494151a937614efa1613a2207029bdef496789afb1c691dde4a9c6f98982975f46e98cc59aeac323b5b5a47004a30fb17b98e5bd20b33bcdf8a898af766cf805f644bd513eded797e7aa3e7c6bee004c4fce482a94df547b2b8e17cfe9b526e023c1f224f63f5105011bafeb7c6878c2f75a282fb39f8b84deb8e8cc509f3186e5adf1e9e7a314533a25aca0999f262bae848a65cae9f5cf0277c7f26f2355ce397d3a9fdb1c06e3cb9b69f39cfb6ed671bfbf2cb87e9fe2ffb3c91828819be0cd642caedf3bd1e93ebd88379622205515553764b85c6eb03f6ce7a350ccd84720d5f5a568bfbd771536841a0ac75795fe26aba7568e5545e26be61439e79350696e66cdc9a234b8af862638c808944a60e740154376bb0879edaaa6cdb07f521dc0019d10aac8cddce31b07fcbdfe3fc0c01575659138bd1e39646111ca737b6ef5d7319b676e191d8e8592f623a099e622960a17ca90c11bc2add15cb0a1c1a6cb5062d7caffca6b04f6a1b80a3f6da5f9b7abe43decc3ae346edda4c6bddc970a3cb84c23d68bd226dcb383a3d54cc5298edc946be18f7ac663c9b11a4d83481e3beff679c0df47335ff34d04022e513b19ce8b4e8f8a4bd21dbdcbe5c0d35036694ca50e824149a8041a96c128b7267474c7b79c0349a027216d20ef9621242b2fcc70b1e1b6a30acbc27c7a25daabad528b671ffbdd018b69d1de7bb7735d3b673fc811bb01144213be8a3b595448f86eff276a641643ca33b4466dbd39ea782b92bbab8a4f9778cea1dd3c167f98e782d31536ca97cdd480d325b8e28ea9f7da0a3ce738357b7e70bb999d8798d1c9a1234b12562fe48a0930e683451b4f0a8dfd811bf7257c6256b4a1e5056ba960c495bccf4804bf42e3e8dc6500493b3da25eb270d9391479e64023228591896d7651680eb19137fcd943d3e641194642fff581f2b19a8539a1ae29e8f49bd877a7de58e1e1f982e1e311694cce29dd13d66e76774ff0133d778b0ac444474c30cdc985b7bbdfc38b8fee373952bbf77ae716b66cea5b3a4a6a8eb44938844e30c4f453d08e249a7dd2c5e4a8307bb5505c35f009d130cef40c60fae09539d5d1a9537fb95c999647d232cb85f1ae8524338d66abd1ec2d6925cef0d7f10638254f17d03a3ab2de2a66d62205491ca4522753569b7a27b5907d0fb93aee8a31caf957c0924fdd6e028b3a037ce7d925c3531be81de7bc755d1c3b38af174224fc1c0b36c783c8c87c8f13493bb1abf4c7599bb96293a91139cac873b521bd749e4c20e4abfb547b6bdee8906c61728c761825abf0a4df01bc3ad677fe50aa620d240a53b14ec50b04bd12e29087b3be0c211cc6f70beae0ce9d98d954b3a4a9b0e04eb1616b5c7850bc5b4341dd498133f9c908215a2bc1cd5eb6ff30992cdb6d2aa312e112fd60eaebf1ecc0d5bc1dc295bc9803aa45e031883c531fb4a59e6312b8b7a06db69f46578b338e792bf0d923065f9940066a2ca40315a538143b35995c28930c888752229695ca3a7540102aa9129a16232304de89fce4f63582e3a211f8250fb4d0aa303f75107d4f23551b2f54bcdfda645ef20af325caeca5ad74b00fc097c222bf0e56faac85897820751567ad8ea983efbc0467d8b7ebf1ca4de3040b2dc43b0eef46d9b1bb5d3cf1723a49d154e70ddc403289564143d9b1af72f48f918aa4403c54424665ac28ec2c68ec99965eb835965ae247424df6e3a547649badc6984b0d2c5b8007c133767aba30d3fb1128b83196a650cb4437473758ded3e94b08221c1cd49af0cae6f36d32035f76088e5ff356147ffae67973b0cabc58a2f1a5c57887b42f0d0213c13557f8a051b6ce8a1e6f4395d12124617aa0e3ccc188078265436a766864f632f44853547ac08403e6c154f163da8f53cdeb3ecd20fcead3aa2e4e80488464dc3bf045253258d7997436b66ed51ae2ab697bc7a80c8275ddb10599b7f08c13c3abbc9d46e925b002d62ccaafb6ea7b02df28be6765a04c0f2b66f47037127fa103a201c7ccfbe8d0f45965526bc75be7d35a25256b88d7c9732e8ee6b59b6203ac3b0e6e01e3958951b986d1ecf2aacc202a24621031188d60d1f02a929d29047405d2a3418372a4c380e4b8613cdc970fcfde039181b58606154aa0028c3791c41c43213cff03734fe0f482345f6911d950b2a412ac074f680c67b0f217e7360d21d5a83bc33e220be1a4b9487aa8c86bc9c277386433d51eac38b04231b97887ed427bccee0d13ff96d9c63680b48e20b8e5ea40f8ec29733db8a7b45ae983b2402f3dbe51548aca1ec933e66b396f16c2dab0abcabaa0f9f6fd9486972a47765c0c1ce433a504702a65577c6eb281a4801ceddfaddc44f5efdb042767bbb5f4244b8b49ca867bde9f64f27167ccc810d732157db9df53b55e6627ebfdcf56011e1cb4ea9023bada5714954d8530791c2550228840586b0174830051df296d1d90bff759eba21d8d94035df5de693bca01d92025710621ac89ba9eb6f9b67b37a4f5264c7c083211a7595b08c9755bf13c194952057ea23a51af52cb94a1e423f5b83aeb75c5b013b5a31f1fcf07279a096d59a0e39a83dc9d3142e01fa09bf2de95f1862e72e690d840c60002dd02103688d31249a5ce878c7dfff92cdaee5baeb2b9b1a1d3b2d40926e9a462edf5c4eb271e0e6816272d6f65e994e0d74558a90d93c714ca5ff3de1055aadbf2091c42ca9eeb5484cbb69d6209e4faedfed071b7e2ca013f00d8dea23963a285edc4a100787a31866ef3892fe9a21556f0e1db4d844f1dbb051cddff675e6ee2a7e36bf5d4070ce209aa4047eceb6a98c363564bf73331d26d2afcf2ebf18e1cc2636f24f576fbb192447324cd571a4f437c0cf9c4d486405ef3a5a68ed2b08bbabbcea5c1bcfcbe2ba23bfb524015a0b673402888d06e6915b484852f60d33275aed0ac00193098f538663b3c98753cf266f0aec4f1c6997591e2c5c2a117ada8b506284fbcacabea534054bf83d72609dd84f3bc677abd3ecf375bc2d259a7ce6428f3351bcc7931b7e4f2e3a1218db8b99836170f260c05fe36c94eb04ce2c84df0c5a30dcd5a603858dc4a871544baf39f5e399533c18fe8613e11277ba1a2e25c56905b0efd35c2b889f031a042b2b68060cc060000b030c0611303225c25fb3b973a6aeca78ce956d952a25ea7ab69f66d2dade726fb9a594322519fc0c060d9f0c73cee9ce9a530ae801d8014b83622f49433629d8ce6d6e60a929b5f626c3771bfa346e85d3f813a79122431a38824d6359740736cbb9281b16567ee727c7c2c9ab7072299c1cca9c73ce397fbe43a19855a1d139eb9a1855b1345a3966d90c8c91463a46cefec010b216ae868c795c09d671b68771c771d28b734a78a41c1e071f077bbd28d9332889ecb9316717e62ab5a7c120d768f4dd80d8634286efefe1a049805206ba4de4c2f3628b10160f0a0e15384e985027ec13ef8304fb3982ed42710a3b82dac70696e68e42143c92e17f6c6021542267f8f054730d78136b5e703e4f6c174f38372118a221c7c9f1160b87e52dcf99d40656e68ed2cea16f8ac8f0b3870366fa70788e37344e279606a593145fa2db50b7711b4cc26b08e83637b03631c61863a4361499c05608963a043139b3cfc428138d612a9946a62f37b84cecbaf06ce1aef7ba3b9bd77b523edf8068d3cbc70856fbd6894c3c1c9f871f9b884a1cc7ad7096bb0e2c817e0361951e84366cdd6d8bbcaf6de85c6617f6f073df4a8a1864cf85b95e5a76e77feef5fd4cdb6d1376354035603510caf35b60e56dd38b93624d0e8f1461f038f8d07361bc30cbb097210e0c1ee93df8908ac7c1d7be83ac0ca36408a564d8a67a453d3422f535ff1853f5b725d1f2769fe9068e2054dd255e62095c07a2a8c83ad0c90e93979c022bbfba0e2a431d588a4cbc117c277672e401aac699dcc0cff03f53d82ed628e91cda496f25041164f8b10927cd5600fc38b1b1069662b4f654734dffe149c91e4fb0145fd023f83d8837988933f02ce5d68f8a35b106458fc4299c30e141acd9a1736482524a29a54f3f32f1a813f6890c79902313ac35e90c3402636874f1427d2ddd0c2d6f83c6e3e0bf1b5076e3e08396bb47a1b71c9dcbb70421c3a7197fb3a85c7432bc3a10161946e1bae295aed52a8bfce4c2b956ce75146f450114c5390892920362b558325fac995c2395e1d748c1d2e7542355e90d2e589489a7ac060d6aa4e249cba7dadf3ab0af89129e6499a37052f739a56e6ad84401ca7152572375534389939e129cf49a284149860f8ae2253781a65491bb1a50dc162c5d26f898cb016ea831a2b082bd8c21ff7a793c3d1caec553f4c0c39165f851c649af49116610517e6f2b04d78358111311b3dc81f5c4c0caec1804027b03f497d8076c17c3cc9623c9bca2c4c0fa474805eb1fbfa3358a8f1217beae967c971888ff1565e6faebe977525e2f1f887caf37ce490c299520d61bc1ab75b1ae28916e3962c43455e5dc0d513e538295f8c5c5b98662bbcfe96275b7d57252e77245715277735c2e296ef373e2440f402cd0c94931ccc81dd8f8d513af47f3ebf26e88b0bce5cec5e5e1a01b0f35b2e38b5502db81585e4355433563ce79b1402c100b962e160b6485537602096848eec0360eb641ac1919e60ed40249c9f041516ecb4911c40279b0b020fa51e23353a3faa0dec838f36ec0bfadcf8ce70a8f13628c38ce3c1ceeb9bac692625192054b8a25054b2e7034d33934118a3081124e7a4d5628c82c361976f4b640355470046ba86aa890b01de8b66eab464b34df7445b958cedd67ba589e28d8f96e8a2ffffa7ea9551aff70384bf440c166b97bbbf510736dc276201688f570d41513f63549024eee3e33f9e609db5dabcfa986ea26c3bf56b014c3cc2ac7309302db8170e6aca1ca1008cc745b1dc34c0c3319fee9b642a0db02b1e048ee80a506f401dbb9b8c0d27ce832f1e57982ed402c56860f9ac106c60148a9afa5c35a396a42329d4f6f102d3ba4a1dc716d83ecb009986a99f3dd69a54e7d4e2fc237274d5099467e4e6e5ad984d59044eb91690dd8d31ba48698c4a61e0ee8c4a34f581ee428f4f09e12decb22c7ef27dd56e458a2a61927651fbf66b7bbba0823d5ec4aa8b391dd810c31a48bc9d71057be2e219e33ec33282dd8eb5ffee17a3fe2a48967b2de72780bf17c7d6f3c5c3f040cc3d3ab6961939c965c80bebf11d3920bd017ed98ef3f7110982f9cc4dfb71e7ac814037f0118850b254ed9b1a887ced977c61ec697c8db65c915076b59519e344eab5a0a28a226c5760e45c5c1fa80a5c0f2d0e1dc5bc152e738d6f9ced1a14f71eb3817ff41bff0e7ed824cfaf15bc7492f498544c41c84cb0e47f1a1a742cf3955d5ae1fc1f0d6a056e94f37ee82d4903147d11d47f9111d1fdc5115dcd95068fec6037cec29ac7b22e2c3f815ff798b8d957c45bf6ac83a60c995f828be06c2ddc359d962e7a9eeb572c4dd6bf799b04be9ccc2fac3eb787b2be8471d4264a6df4f9c6b2b7260fb094e5bd12d27c9a7f8d55079810dc26520fed8d3efb87cb1b0ef9a15c5b9f8cf01167baf6febc1813816c1ef1a8b20eef1e0a80bc2e5f9d79cd8cf8b75ab5952b0369d499faf9d8df15d28dbf78f71eda85efb5288cc1f0fa5a1ce53dbc71deb368e3d8585edde0a07eb5f53603b4f6597c2a1f092890b26bc918d9368f6a72613175078a3973b8f223f47c1d2ca7b5cc13128d5acc5ef2551b11ee0848ccf08ffb5727cad65b58a83f509742df3d255a4149628c55d102eaf9c8b0fe36b51b03cb414ce451db0a3f3ad76e8eca97723be33b15de7740eee1ce722a91b02b71d34d38781f312d1d78d9a4be1a4892fc0e5f92b27c92d0784b2beacd808675a22eae1ba009729ee295873eac4769d93a3cac7ef29da4757a27245feda1539d661f2c147f1b124d66db0a79cd3a0605f132e98e02827f9c7f7235eea53fcf722cdb1c338388adf1febe776c6a88a6ddbf6e596c3564cebea9abd9f1d3a7bf0dbf16ec4e760e9013d8a1fb1c8f1bb0638c1be2aa28e7723be8684ed5a957aeeaec4e387a4c8f1b71bcacfa3b00249a6911f132b6c72fd68f4be26461421ef9044d4e33ff8b484bec887fcfa15171125d1e43f93c84ac92bce45db2b08831159bba1fb70145fe6d81b58d2f13c054bad7aa3f8317e51829c5d7b694fb07e136772fc38b38d871fd91681fad91681fa9e8223186f22c7af97071cc5cfee8f2d07c54a8080261d70145f63d9ae55ad72921471064778a0490ed292e9fb8d8f5d1affada413ec853b5893637ce9043b63fc6813a17052e7af256220586b1af19e04b8a9afa5fbd02aecfbdadd020b4b1f9b20f2771f1b1828af1099e5c572aeef15037b53bddf7f6cee771f9b1eae2737f873e35cbf0d7d18b7f93c2e7440f20bc7b9beac70ae9f56613b9bfb1d8b5ebe5a4cb0d0ca127797ceb57212c5a21da0e7fe0be77a922f56eebfc9ef61ae3858299cebcfca39ae3f4a72ffa5e3a4ee5373b5fa2f295e6a535f5fe4fe8f12558d93ba0f4d13fd1f55ff470a2f3d93d3dbd53bc61cd7c7e60385731df1c7c6b9b6c9fd1f1a27fd0789933eaa8f2a49eeaed64745ad85a5abf546fdfdfa73b73eb4b325aa80223f275548910b909f932a64f29bfd7e6bae50f38faf3d09fda638062bb304d29f5766eb24783dbd17164ddc59e6f7252a00ac879e70509a736c81fddc5daaab153fb2c076b4054b97ce1bf9d34b95fdc2793866f68f486c7eaa2f58b90af53d1c9d43cf4149aeed83ec3746ae8e84a702838becb746ae517aba1895168c88f16e236a0e95262cfce85ca69d28669a79408734467969593eb5eef78dfce3bf1bfef003d673442d5fef6f43f2c55ef4ba709239e3cb97f17a76272e0e67bc34bf619411be1e428d53b0a11839445666c97337407d4eeaa73d15d8f7fdf0c177c9f8be1fd7ef398cae631f846f0aa10ac0ca2c71f82f54fddffb8339ce7577f7ebeeeeeec7c3cbfd6ef4f7ebeef7a00e9c3193e1d7ba85ae3a4550543e750e30c3f7c0c3e12a30900080dc51140de508614134f7a965d5d22d7aedf7edf6fff630deef5866499c5f779cd44b2cfdeed2dcdf5f7720cea1fc98e8ec206b5503c393ec92df0a0c4872f5bc04d8b70a8392fc9090df0a0c51721294641af263920423726f409c0aa063ba5e446d8e9d22933bf6207755070302f5713d9119372619ff361e32f0c351880af6617e4cb88041eeb8633f33b102099a0004aca194ade2c09b4ff61f68912f83ed2fda8bde41dd4471696e45c7617996b7dc082fb3dc679221e367bc8fd0b3fc8cd00c193266e02233663ccb1709c978c781a5dea1309bc172aa0eec1dd83bb0777a0766968994cd165ec019e7e08529783720cdfb8561970c6fb01c2cc7c585abb8e36ef00ea516439a0b7e71c970c12f9ca3a185aa0edc813b21247e59f839cec5e5e585526b4321cee5e5a3f3d9b1278bb28193b3142c3d934dcda4811c3d457a824968bcbc1aa01ab01a08a1de44e35b4a2958893bcd060a6f9b51b49a568a558343b39a51f54e8e2144fedf4f4386aff1149f5cae1a2f58621966fcbc3c66601999fbd7cb84bec657efce32dc67a269d5e4b40d2cf29f21c2229ff13dae9f71b1e319984808cb538c89c65d9281ce7daa71a30ecde9fc60e9ca52990d9db134a1ac26c37f5d86badcddb184e2f2d4731ad44c8d8771adcafbb2e84e9b49336b268d94ef1365512f9606cb6cc0920c221aa17b25cb465663a25013355112cf93dc912c58922cd6c32c43c71d799219ea88478237ce411ff867278429cd50b021968cc76fe39f89c68bde478db751e34535be08cbd3f867eaeccca35b3c2fb840e3ba6827644f014634273626ed8d905826ec634ccf23d385a23c41264394ede281815d341761b19fcf8246641e2fc1e723a594b1999085ce8e8988111947c0312df13792d9cc98b4f600bc24c6328ced077f51f6afa32fcaf0103c78ce3ef374004847df3530d84ece6d47af9a60e5b623d2b8fd1093685f71b02229ff6da8376d5824afefa48e849d6a1b27f54be1de56345c4116c46956e3a024175028546c995588202010dfb110f53da729556af22bad9e98572ee8d237f2d7ae7d23217d7dc441207079de73b21c07e1fcdeea57cfd3db99de97afbe413a777ef7657f21327795b185c142b88239b00a700ad4c1812d4cea5c325a1af48a326ed7c64312ede3ff08c249d99be2d9cb275766528a8fe07f21a764f81b18acc4912be7b62facb8edc7047ea058a8c7424929a594524a29a5ec54a7527186b6691b0e023f38c20f6a0f715a764490321131925901e78a9d72ef6e2bb693ed24eb070cc23ba00330ac4c448c84b2d0312de92762640a61c7a4bd1106a84c4b2ed6168673e14928138979c4ec00c562f382cb969ce2240f963b2a52b2fd785ee5c626d8ad0b905a1bca1a17ac5f2d0cf6623917e50bc9a2fe71c7e260fddf73f947a9643dd053651c6ce60fa2b6a6882ebc304e3f82d0c9efc1ad035f64c9ea61fe75a1a0c85da3a116c1e3b4d4e34440831ce576453d34162924a93111312291d032696f64c68d69496b2cc97a38402f9ff04a3fde08fe3c9160121eb78223f8ddec00d5c27691e163819161121e49caab6b2f5aa75970d4387004e3129a102ccec341c5a3502c16bd856c39c7b1b060df37864d2a4f08d08f225bce49c96ac9c7f2752f51ff7585c89c44c3a8376158d418ae4cf0898f640e2cc1d51bc16f1c0857194a2c64f8b20a9263912163ebc7a4c43029a6076607ac17545ed7755dd7f5926261b7f0224b2ecc56aca28a77f05cff3b37b191c9f0276a2ae1251ba40da6c095fc42b6e40e6cb2c40b72374fab0fb072378fc8ec3ec0072d292b27751cce0ff844ced872d0804978320a047857ac6049b2de08fee8ad8727254bc9ca92e5a41b5d2307943b9b32beb9cd44233e2705c0505f4ba7393793c8504b29f1d2fc4c6609563f9fcf6745a91034091c8f8a3c5f7ed7927b762def548800f538f8f799a86a3ac0d2f736a1506ee9a5d50cb35acd307ac5ae19462f8d009c9605db51951572a7a5747c54f8cd8d47110df00bf3e78399d84bc64b474b5661bbb76a1411d7c64367aa7a37de77cdc47b8eb5543b160ab9962232a486d23361f573bbc6f3455b1ad4b717845a05197ed647bc1bf0f3f97c3e9f7f9bfbe73fdf4734aa518d6a273c1f1dabd5e5f978adf5f3712c5891ff3351295ce48fa9ca398831b1aafee858fad7d78f26431e12a36620151b03a4626bd61805a9585b33193f2d370e793b54453f947abc3f5d3484ce3dc8e5b47f342f6cf69a8ecdfea2947ee65d8261d7376b05dbbdd5e55c9665b3def9415c08275d9a127f4d9eb08114228847de67e2388ee342888b8827913f735cd7345c865738e235eae1681513374b68364858c16aa98f474bc1521ff146f099c870890c9fa61a89cf1d5551152c35ea3f4cba3841f6e0465ddfedd1a65814f4f469c8e7f3f9705c9f9ce4187e9e56ab25910fe31fcfc783451ecf87c8901aec10f8442e1a2da5a5a84a4b5995c6c9c95d4b7e545c58d7e01c6c54e71023c3d7bab0fe8d396d8aed38cfc7afcbd5f5851be5a42352b4145e1ad9b4124e7a4cc050d244863dd3299f01a309503b1dc106b9eb2832fcab5de5a4eee5e495939e940c9f4a21047da2858b931ca3e8077736f4022b446620fef41da3fe54c70a85eaff5c201ecf3f2cfafccb221d2f7fb010993d9fbfbe734ca69f4ba94c22bf062fc94b53e2a3cc39e9c23578e999b494731813db358aaa1a35c5114e72d734590565277754d531a7691a45558dfa7cd56aec37ce94084d9b34035494c9c3e189f4a22a8caa32aaaa54a551d5465592aa2455519596a2aa0c5f5b321fbee6c463c0d46cf07060dbb67da731d16cb41d64ed26089a4a7ea73d21bfd37210bfd37810bfd37ee0f98a8375df3eaddb5acd307a4d1975ac56ab4bc36929848c86a2889c3b2e6fefe262bb723ed8c3b84704d983d250f42655647bec7b87aa6c07ab06a4fecb4e44d4c33ef6161b1163fa3cf61f92f6cf00fb9dcd96862c08c79abc03cc9f67c2e294925e18b581d354a53678254f09de08963c28f86af64ccfa93cd37b248f08ac07b5fd7b8f081e494be271f0b5995a6bad51ec96e915367b2d8947a234781c7c9a72ce4950c7391a3c12cc429c417a27c77c221a2b6765c2a8aad225de0d15d0155024ce3541534304abd702bd931dc32c5025a08e93281215d6da290d053d1ecf7b3c1ecf33614af6af9eaf5b0e0f7eb131d30d029d1d778d3594735dbf833b9f6bbdf17bcb11a4ca9ddee66f30abdce784fc98a03a90b5ab65bff5e2e1fac6dda66b078e886c75bb570e1c897c6c74c3570e3dc194d4913a393a4ef29dcf8ee3d64fa54ebcb28fd9b7136c47a1d838b33651275d39cec1bfb8785be3083cd3e771b0f5b72beadf3ec6543fb74dae95e095dee34253e241c192f6c41be5384973e271b007f6db25f281fdf61baec9f0318d262e416312b6aae438174b50923a70947a387aa2983c1dca839d27e6945207963c477890909e25a68789e9416933da8c933a9ad29470d267cf919e7152638f67c6837acf11e7661aee40cf0cf6a03e5b94e78897fc743a9d4c608249bc510b41046ff472bf5fcf38d8fa94656b777737cc51d1f1a0b487710faaf3a054bec8748a1b789eb04c500f4a3be21cdc1abf5850863bb0e409418fe0bf2004ca9d07d5598f0932dcf11ce1eeeefe9e23a80709cf121e263c4e644853ef06d450296f1bfaeb16a477f2a74d94ba07458448163e4899b65a5ff3a01e8e950cdf33f37060a21ed87ffe83897c1efb1813ddf9dc6b078e443e3e6fdfe288ba76e2098ea00ae212b6f3a06212b6d366a48e36137532fc6bdbe1b3073fe7b67b81d4ce8c4933d50bc4bf77f2d466301ca47772ecc15b4a728c2bb0b409b6f3a032fc2963dbd02f43d593d2604406831a22439cab7ec9f6193b7e3144d734e1dc4dc51d8573b0d295ffc0b7e4d7be6ed773cd4032fe6d39647c6d6dbb346f54b0311e24555b8c07d16aa7bc40316e6e7078e0d08835866cdf48b01de896c4f3156abeddce49e8cfa881903b0e9e7836c0afbef577ab5b94521ac46bd5d6de157387c99b70ee0a16bdcff4f54469dfc0117c4aad0d8530991d68f6249eafae79ddac60b5c76260b5c7bed2ef5cc793789ecef07c6db7a16fc786be1d4a29a594ce6f0ca47fc2ec3f1f48b703acf65d5313576eff7577acacbc8adfecfbae5c7fd1c46ce5da7ed85ed483fcec330ca45b3497caf52faf6495be115dff6ab67561e37bcd7b97bca4861de5a7b7730ad970ec2737c27a6b09dbb9bf9b1b8a9f8f8888acab696898e4feb8dd786e36fbf97c5ab6ae681fef8eeb1bdff8ff2f88dcdbc72bea617effbcd7d7b7ed982a4cd8f862f77dbb20f5df3644e71c6f67d9b5e4eac11ec547d0736e68c60c19eb3b6b9b6233dc354dc385a5c9a11bbd82a67198832519c2184016b81632c0e81b79fd891be0000a1bb77937aa009138a9eb9b1c862b7104cb6418b221a509b60240ab38d81a2fcd738a7c5dcff207979dd5ac9e57d47fcd6b5e8fe25c6367c5161670569e6dd818e5ce59db0edddfb500d915f9354132834cbf6b7169754e769d1b7a9f295e343448ba25affab3caabdaa03592a6a1e91c5a074564f8ad828703899360d7186048dfdc346c41863737355b4459699a87638947574c2c8c710be5b25faf7937608be5dc0d2c3d5388e686de30b12d277d8eed9c75ca7152e73519894c86ef2d2789fcdfa538694ae770cdfb545f20c9dd53e9f0c139f8ee366f0461a95b6f04ffb5ba5573551777fa9eefdaa1b8cfe4b9cf340fd0ad6e3d1be0c72bc405bb8547716735f61bb7613916be857be15c88f386de7e91cf7bbe48e8ed777da3ddc6e2dd90c2bb91c5bb017fc5e1cbb0ed40f386bb653ff4453cfff922f643dff54d6f22203eef791fa1b79effbc0fcf7f70e81f1cf9b01fc24432d307cff8cee53e53a87fc65dc2d2652026cf67f9c652001b041a6e3c748e2a2ab5d68c85e5eb6dd972b0bc47f1929fa8143bc5fd0b5725a1d8a1f0117ccf7d7064c3711ca7addcb712421659dba48d163606ee1ae7686c6e6e6e681e5d2a3eaffb151ea52fe53cca4605db97e618030a4b14f70d8bc58ae24f783272e7ac8743066401ac099dc08ee064c4098ebe40b500c371632fb2a4c7e7e917b1eff9229fa7710a5b64490ffa9f2fe279fb45e87ffa7d78debe8f4dd41808fb9ef7e1c1f41f1cf9f8e05e612299c9831f8e4ccfb4a4bf55dab3e0c8ddddbd5f7bc7f56bbd7d3305ab7d14ce41baede8d7de59ce62c11ab4795f1559de2bf706810064ede7bc5107595e6cc6e4c803f6f112ed203fbe6887fcf83cc88fb8e5ddb83e26cfed5ffbed12116d9c843d1cd90f41b5eaa6a3f092dbb0c15a7196d6374eaa387714deabc671d6a685f59414db354d8db5c18678c5cb064dde9aaffb9a205122cf7b65bfef8a1e0247f0a96d1a9738e4edbc9d0c3380d677c8bb017fcbc25eb97b07d08610f18a006dc89c33f533ede5cbd0c7e65fad0347709492d364a2cf242363f2a173e048078ee4112c0f1d9df3641cab3142633caa7451fd86222a2ac75b7396448e37c34200e1f5fbc9578b05330b727505152e2ddef8842854aac50b9764bf5aae9816af679869f139397283ec77cbf565187d9aa78b79aa160f62607b0d201cf2708876c89efb37f048d675c0528814e3715db1ebdd21ef467f0ccf061ed7df1fea6fdc513b71c7652c58a805fbded3be855aab9472fe8bf1a5bce48d34117631f992524a29a594f26952ca0b033fc6444d5618e1839e08dfb917b1a80f96da445fa9947d17fa1be37c916af1c2c021ae0c8de4eb5ff417d0ec80d73fde0b46fad3fff28f3a681bfc679c53c4c00ad7723f1a8f373af7f08afc234d8eabb6d972c41b699c8b0de31b813170d2d8e4cf6f8a25b4c82ba8c92ef94da1021d2459cb313c0ba4e404e437050b94e429908491b9fca6406245ae4f02f64dc18223b9e6ed23ae387bed76366ff5376dabbf690f03b5ec02e93792ab4637dcc55caf7abd10cfda461b7bed6aedebbf6dbb6ac559bcb6ea9263adb5d6fe4e88dc360c01faadddda9ac74313c2e955d72a15abe17a3d8525d05fb8feb6f590654ddb78a8f1f3c95a3fd238497efdb8e5a814d2a89583259895a7f1eff3b5761aa6bfddcee6182246b6ac2b92b5cff2d6c5267227c4e90582bd91acdd0eee80b91f773139fbed6ab78b59fbb6d95e4342bf0e0173d7b93110fad80ffddbc378eba073c81e00bebd26fa01a35da4c9f5df539cc58d067d254efbf848365ec3953ef6b4070cfbabf46385e56b7d1b04b4afb8dba17dfdfabdfda07ddd3efb86a273a89fe1ed6160f65c3ffbebbb4893b7af71bbce357edb7888e12b06525fcbdac7b0fdcf88e1656c590034ed6b663f7b1c8018b05d61b733a59452df76d4dc50b40dda63dbcb578cf70b7aed5e0f80eb791bd7bee8aa3c0cac51a3e2b6712ed2c030b014c23f666096881f1cc9c02bb8a379fb5ae977426257e996bdf6d5b5d641e770694f6109be866bccd9774262777d8681605f1b02f537edbd9286bdf6bd4160ab9f69158bb2bf5efb1fb044e128beb5b1fef5da8d316b7fbd4788cc9bf61fcfc7b8a0fbe0a8131273e5617b201aeefeda7ed0f2f61496e81b69af7d47354ed3ea7f70d737f9da709781985c9f7a3c9e9f5b0e4fbd3267b767ce36d0ee9e8e0319db2133f6f5c2ba985c316dabf5e19663ab7fd5cfb0eb61a0d441e7f0b26c9a2ce1ebd7f1e918698facd103e8104208a10e1f74801042a884b6d0fa6bf5e025c1c58907b2a082a283bc827abd8b7333ea4085d5b0f72d07866360b10c63f705961cd3131ccd9f492cccc3f1c9f351f1e67c0c4f9d3ce77392e7772fb94fb36756f63d4c074c8773f3af2b8c7c85f1147b957f267b45d8db877937e6e358fb2adf2f02c2dfbe0f7f8be117f1015f0517b198c2d17c28b6ffa9f2f59813944dbe1eeb62b2e7ebed5e727dec7630f42110cf542180fd35b52cb3d9bbe46c7ef619ee82bce4ebe9e9faebdfec0735dc8530f9f50209f292e37d389aefdc8e4e3e36514ebab0b67531b9d37efb7addfa9ebba3bb979c650f03aff8ddb5c333edb3afd97ced529415763bfdb06120d7630fe4fa7a619fc4fff2a732fef3fdeae0a37933fc0027649c7b79529909e3dc7c29ec8b73f35d9c9b1f85601f8681502c0a39376d38373f3accfc39e7fc8725fff91c2cc1cc3525ea6be9244e8615c917316426b838e815ec7e22e585d34f705be11cecd51327492c73c8211f277a95f3706cf1489c73ab29d965055d562e326e20e221bdb291573fd46804db38cead9c732207d59c58926887ccf1658e78c5ced89765ee1e8ee4e1a4674586126709dbd9a8f462ffe477964f9c838db3da811de2a4f61b87c26bba95e5d9ab37049678bcf7e4bbc0928f1ec1a7ddfd18c66181c26559260ec590bbb7e3528a6e18f4941a27f516bd82b03b055729b84ac9955439075f95e17f8b93ba258ec740b879a0be962eda64f9f57d8d0804eb8f7d0896e20c1cc997ff49d9f803db853c4b291b6bd705e3da8e4d626b70527cb8bdfc170e96e8cb7ff89181d568126cf8c5022e020067086c44290301c8f82486095b5005192e1f81886a1189379214c7663204b6d3e6f683e8aac27677e14f0ca4fc4f1356faf06ec8ffc0c076362af1f26ec8971fb09126ce38275f1a61ed4a0ef8d711e7e46fb74fd725e29c7ced0e714e7ebdd8c5c07d38929f5d99af5c4d984989731296426f245f86429d0a405fdfb90b8a9065e40214e1edd4737d6f2f5ff2c63e0e3927e34c961f675e8b36f9c91003253685cf159f2b62103e577ce4bf16f7c6407e5648cc2e054b23f6308e616ec555c17a12ecbd062f610f7df091931ef08295eb700e6261296e9a9eb95ab665159688d6b1e39538285864f8d715ac0f5ee2a64b862f19c6cb0a169676bc117c2a5ca0648805074bcfe492e153e9f07f38e49c12ef24fa90fad3ef4240e845df7bf743d7462888908d875b8e885fec8befe1a6710e96c0765c17aac1499d16ea2334f27362844e56b1b4008d004bdc83a59e7923f83db3e23aad87f75d939f0c590f6abd52d1fb7d8c77ffa0ca770821843a2084f043366049a500afeb286af8ae6f08f05d4331809fe1bb56925fa7ba89d173df3592fcbe699c24807fdf334e92e1dff71127e17ff7dfb78c93de4901f8f7449c14c3bf1fe22400fc7b214eb2f1ef31e024d1bf0fe2a41aff5e0827d1f8f7157052e8df07e1a418ff7e024e02fdfb1f3d9cf4f9f73c9ce4f9f73e3869fbf73a9ca4fd7b1d6014f072830b074b36fcfb102ccd6091f12b36dc9637a2e10b706dbc110d7fe3861e47c3d770571e47c313e0dac7d1f003b8dae368f8192e7d1c0ddf72e3e368f878dfe36898404b4b4b4b4b4b4b0b773b8f6e3f6e86a7e1769203b925be776306eebe4cc3ed3acff0f17631b9e505707b048feb47e20ab9a58fbc1bfd33dcae4790fb5b6e67240b39be0cb7518febc7b7651ed77f6f9f1ed7ff97c8e3fa0370873cae3f862be471fd00b818785cbf8d1be471fda22bc4e3fa6bdc0a3cae9fc60de271fda13b81c7f5cfb83ebc513fcbb542016fd4bf725f1ed70fba37bc1a2ef7b8fecf6d795cbfe7fee3fab76be371fdda0ddd95671fd78f5ded71fdf4d2f738ae8fa05aa64f61ec7ca13325274b29aff5a2c4409163a7c3cb0d3db896b7115ab19ac44310c951730e2a01fdbb05b218899e593d107d20772077207710bf7e78f02c23f48f4968747ab93b4e724520107bbf1083b88baf81cef0e7f5f05ed74529bde28c1eb3ef883c388e6c81fcfa99f1657c99049311a3f2a9c4b61df2a904e2b093af818ef425c5308cca4bc686395ed10e29e1c7f0d0594619e50aeafb2b571c6cc846c8397fc97e43f61793dfe024ff1a6c5cf9f995dfd6fdeffbdd0b37bcc0f647ecf2f505f6e1a54feccb2fcef903c1ba93130a6c7655b712f539c05eef5f3ffe7905898510c643ce4d0ca32346efd8112799d74b481f5297d7c77b5df3fb61666de82f97f0ec31d108f6bbdf6c898295b99f7bba980c77b832fc07fbbd9d509f03ecfcfefa5971ae0589ed3e7712eb1cc4305587933c4bdc09f1dc302ab052e22470dbd13f2f90c8c3fbebe58d578c9ffdfc78e7431dbc04df1f06be0ca3c3db32fc21e7fcad73fe4bd8fece5ed1fcec63f2b5637eb6799e9f9c3d7dedb7cf9ee2778efee35a32cc610f4c025f7e9b607440c176da270af6e5abc5390ebf73ae4577fb54da15859605fb0f4b30aa7f08210b8ab045d822ac07de7bef7d4c5faadc97aa86f75e6bd43ed3a3ef46bbb8c01215821656c8508c903bda841a6910530d4a417b36ad6618bd3ac7d4c3a1e2a4176da08837550577416415a81369531953b014699ed57923f8f6459a264da6c81dd451c9af49132814a784488bbb986c5d4e18d817f47eb5b7570332fbc72d87865face77a73f8bb10e979cfe761bca622cc81539c1423a63c9d3503b0874365d3322c06853a108c07bd780c980f87cac3875b7838360cc3be8b47c01d1886788a20c81005b900bf103b108d50b1d65a6b6d83546ebf1b2dcfa6d50c7b5f5bf9c910a2628349c87045004ebb1a4644fbcd08b6458e69897ced6a3207aeb260598f522c58ff4cd3a99ee8f15477b1b9c1c95363a77e709c44cbe0ca3996ccf14bda507e2e0688e3b8ab636c5c0c0c411cb7fd570cd3360c711a07e23c284b68764c463624d098b6d50f08a594ac9e2cc835b389d03cc1088cc8f00b540bdbc513624b2bff4adaf7d357027d7710cf2a30e335e3b55dd78f67e31c7c30f5c1d44cb6c2d8a9fe309b548c9556c2e31aa74dda25d229d40c664c464252e09896f4b7128c90719c04578f83bf7d013e811e107494f2c92ee4eb286843e11cd5620a1734262246425950992c9413b570c582729a58c42d2e2faeebc755b39511acb099a2635ad25a181fb09d3402ae608c87bf3df61d03370a74adf0443ddc492d7217128c5ca51419c577441a261282a36e821414e4988818a1618296e93d01f089048d7a37b07fec29b53614faff8c7dc482a534ce619f613ae31c867dd4c24cc6feb56018083522a5d498a838d8083fda306b1868327665d89565975f61c64dfe1976e970d2c7e7d38e2aa19fdf5d3b2efcf04a0c54a6080be2a4eea9b2af38870de9e1247f1e4eeacc92fd31d0a796f1ef235e7a5dd4f84f0083d1c17fdab871623f65127afdece12307c3ae38d74ee1f58186d87dfe2e4b143ee764fc0ec91d6f245f4a28dfb194f2453a5f44afd7e1a4cef287c878c933d3a395a54de783939e0a063959e664595b2a1878413e5696f4ba0ff041eb013e90f2b621d9bffddbc62318ea6bc15ee68e9b4126d396303275693181b55a0b9437a2ffa04ac5a95021c1194e20154ce188be45c282769c0462c1528945a90dd9256c570a23d3674571d2e74b6138a9e224a0a75f62d12f4df152476dae98082d77a59a4c4b4e2aa19ceb4aac4c5f650596643ccb8ca719d4686adcd20c1cd1a7714b2838a21fbaa5131cd19f71596470b9fecafd5c4ac112a806da946e6069e5697d95fb282c9552a04be1a8be85a5928d8c6be1a8740347148e20ee42b97e897e690696e6d32fd17c09d5c2ca27586a99e2a5289cf41e079f7e090a2f29f11208844ba9378af11db52d96c6b640792df46738c1928ca73fc30c2ca93c6dc122d3962d326df122d3195099ce4093e9db242ce8555ec311c7aebc8c6fd0afbc0fd0afe0224b7aacbcca17116dff4c202cd21ef4cfe443e565e0222b58b4e190e9e188be0a16695804c4f5a0f7713d081759d243e5e71701fdf53ee6affc0a2ea2f2f39f09c66d092c8905e99362e08e526b49ac4c5fe5ba501110d7ab7c8feb55f083a31ef36bcd40a7fc402c38a2a0d3086cfd0ee41ac87e75530b0b8ee808ac6d81f26ed0a9024b694b141fd16f61bd1bf43f5e58f9f13ddfb5b0b497242a0fe344f490653f645fbfc20d88202fb9be565fe5e11565af7df62a5794fd33a93cc0091920f5b557b9a0282078352cda11bf7ec5a29a7d8c52d896166e8942b0fe5dcbd5a15e98a7d2c972069a9319e820938a782dd87f6e60677eeff5edadefdb07f7907dc540b2ad5fcb3e57c7767d585598792e288a73f4412ce728172096f655c4c339fa2ff7708ed26fc9812510ab85054b3fde883ea51aee5a7432c51dcd1d889529addf5badf5a338d7d2728e7e865b58ce51108b95690bc543049181bc9c327dec52fc643072613124029c18db4df0287e38bcab438430ceb954807bbf38f7bea5f70dcebd9731bebc2ece41883bffbfb0c4d77c891dbf6bc21bdba190b532ca256a8b47ef991a5f0bf8f51562df2a8b53eeb4b7c19759d22fb1680585954326fb9cc015eb3809ec4f416d71d2b322c4750e7eca0f6aed5e6ad391e84648f95dfc1b9d7b89e5f8f9063befc6cbf9063a6ff4b2c45dc4f445b15876771f40083f4ab10de143818ac2a739d3e74f359cfcbc6fe4131bd511f585b08d4bb0cf89f86fd8efc2a48b20a86874669eff8a85810de17784edecf52127b97d2f46f8621f5c91f2de8371795bdcc1d85a79ce2d2616794e28794e2a7ceee4d95da73ce7f5637e3f1ccdff014bf1c219379f7b385ce86d88e6589d3c53af153b6a93c571a1d01591c8b77f492965462d8e359126d2489444a15028142ae6f7b55ef80d67e088668587dfc051e737797e95f1305e1dbac3d4cb4d034b945a1b0afdd310219219fdebbade62917c94d7f88dcfc01206c29da356300e2c45ccf32196c5993a7034bfb1a3382dbe8ce73119d0e6264f192b1916f56714c7cfbe47fcec831f1c3d386adc03c3120796229ea9e83ad80aee42216aad69a66654c2b9f919e8240f874f1e4c26d3c99b4fe429bfd64b848c27c2be7c7865e2c3197b3ae51a3578234b4efb325efe4ccdb796526b254bb2660a96240a8ee6536aad44cd9444cdd44c49d4b4b951ad7058b9558366d6e429034b1c89e56abe44516a43cfb9ac7cf79233d0cf8f9b8cb7772ab9910547f3e38d3ab105e30e1ccda73127cf0fc9539eefd3897763ced4bb319b355333e5a4b6a1ed55e4aba8bcc422fbcf8aad58938170177742ac104e6a356de2cbb83c229691f93c7d198f8c679a290a02bdc8621e212c921b8e317e5c12e32b7c356a3ec82d1f4adc833efc3c7d897b649ecf3ec6d4db103d74667920b608b4093ebcf2ce2f9c9bcf327764a40fdf47f671c69178452cff4cf08a583010cf3433034b142acfafd14ea71ca5e0216261c12220e0c7ef013fc267c13d2aac81a3f9f5634c300e69e24de5f97006d6a8c1679271af6caf9fb2bc0f7e0fec2126b284e589c4c7304d9ecf827b605f3111f81886337034a18cd8d3f7813d7cfa4562868bc0a730db189de59439b295e7c79a48135371156f3e9126aa56e6c7b89d4157e5be2c59b0f44cad9c2c75f2acff7999ec3d56dbb2eaf9609ffb4c1ed9b258b27a7e54c2493d339f521b7ace65c2993c6760e999686a523637aa3c5779e2c012f6f367f653fbe9f939afcf7b360d7b7acd69d3caf33fdafc8d95e767f3eb2acfc7e64d9e2938f21947cd549e2f9fd8f93f1ffe7c0b4bf0e7d6a20658bdbc90603b6b84bdf5b1aff8dbe27ea3f7f68ddee88dde0b6114c687f12f1c1f85a110a51353e7eeca53bd277daaa28d1f2b6f25bfffe1dc049c834fa9b041fc70c9794d8aa8c9f06f2012c280933a1be4fd9880979e4907777992038302cba307e4a08ca7d3e974322d892fb3a41fc7f7871f638c5dbc8e4eea3890ca3b220b6220cf39d839472ebe79505f8ba962f799247da6202f8ded632f02227bf93eec63d57afe99b2ed7da2f64c1672ddb87bc97f894cf28aa6e92f682f0e8eae97f7fafafcb9278934fd6893c444624c2f394912f9d715f5cfef16fc22a782316dc49dc62e4008232ce1f09cbcc0246ce7e272837fbcdcfd16ce4911c388b98f2d7066810414bac8b1e1095ecb0d4eea7f0ddf8a49949ed2b5120d45089a140a9120bfa7cabfa3f37004ff29e04991339717275dffeabf7f58f27c8cb9b6167252db341773d7362f44473bfb79c643cefebcf171f63ff61b651f7642f2e761db08014b3d0377cf8265e0cecee48072e0cbc9f0f3af5e37018f9b167738e4c9439670db11f3e7bb1f849e1bde8de9f67609c8f33fb7eb21cbf7dc96379abfd590e76bf71f37bfde6b7613c87208223b8e3849fec48d72ae6d60a959d486fa9bc58319586a2ce816197e67bd6039c96f701274c7628c94758b1e604b5e8ac82c5ac86032032c64bfa01599ec5725c609b25f0dd4c48b285498c87e411607d9efe7d324fbd53c48c87eed06854cf3abc5abe55ab5786b93220441d3e2cdb6c87e5972ddb478311a8421fbadb97ab478e9478bf74a41f6bb92abd5e29d532c9102152d5ea98406202dde18450c2d5e6884ec3794eb8a16af6791fd8a7295a1c5fb982c49417d2c6f06132560c87e69e418d8f104f5b574f494fb63121d0f8727f7efa0545828212c7e0bce0b2e9c5c72e3a7a227f717e4fe5c81eeefeedfc2769bfaf58c733433b95f04335ed23440b38ca8ce6788003d11f2555ebb32da6f3a7ce3d12c29cc8ff525e8da4054bb25cbaad9c3e139c6181b0baa6d3c2a4809d6f32a0ffa8e2ca9f81f3fb27760a9066e168d0fc675c6d59ee5d29771e7372b3ea5a68d15e5252305e3a75462fc2130aabccaab40c17efcb87d5ede8ed2d21ccabb1159ef46bcb9e96f96bc3cdfdb10a0f7781e8445f2ebc70f8287166d54515151f99a65ffb93c322c23339f7e6ded73bb59947e4412f3b8b0486a7f7d0f4d3e91edb597b80725329f7e8c69897d9cb885f6d8fba07fad8862fc33896260209e491ec1f669050f895fa306f25356b9affef63dea6f98c892184f047efd18b847f699b65db7399d4e2793caa5a753d6ee92d7440b26e4b7e51001b1bdf63eb6d77091253dfcb52f027f7b1fda535cc441f494abca7dd9733bf70dc661bfa95c7b3b7fee7beecb7d13e3c4be66db6b32760b8ee2cff8577c1ab3d6c9f16b8c5a46a7ec08df1fbb62a0a08a5a6bebf246efdf63e20594dc7d7e5096e49687813cd590eadf43748eb933f2fe85ecabc2bef7b6c9fd4ad73f1a945ed64e0c475c7ed84d38e7ef86ff0b2c516a6d28f41fb1603be55c8d16dc210a6edcb171090be87e8f9331e284a026c3fffce635f63b078ea4a0e38f8a1e8b3b9fd930f5e0884d9d03218c7be7386d2ed80ef8115d7b31bd268bad44e5736053f719aff15486f6c38255b0c53814e3fa83ee7cedd646a1725039a89c18f79940f799a8ce4e3edd40bfe99c0db74daa51945a0805ebe92d3aa757dfb2df394e7a0f89107d24f6dbf73684fd8d88ed2d167d3e7b1eb034fba10aee5ece5f906ada7b2e0f0dcbc8d0f797a93f6f770ea4d4e3f9601e32c684f5f097141759d2a31ffb2297e8f3fe31268b7bcc8a8bf4633fe7fbf798ef98c812fb442e2cfaccb7b8c7f5f42926d258f4c12220fce5fbe8fe6bc9e76bbc2faf60893ecd2a8df7733b7b6ed7ab9c9bd5adaa9ca834ad937649903a86660680000001e313002030100c87c4e2018148262a8bee14800c8ba64a7e621bc849906308196200210000000000000004980903a5d2b67bcbb4e37ce77c5be51910bc32ae86d9b4894f95ae13d7d1f61c497c0acca359561b56781b45bee54267ba017edc359ac1178b5c0670d2b636e31868f5a424bb8af05b225b1a4e1f00146b6fd9297c813456e15c04adae1f86e8ffef209da11d8b687c6e3f539539c92407b40d6ebd3c31d55da54d52ae62fb59ae182fe88a335ff1b8d5a1ecc90618fdb3111210b916517e554fbc34bdb1d832a765566199d6f2e4cc3d57d44421f359bab738397a4f08b538d35981c04d7d867bb519a9b8b877356b362e2ecbc30b596a7284d1bca6c0872a70988b8b28b46c6c2d13a0064fbe71ada29f3e837810f8b03159243d4fb54e3d468164bd4095f30a815e26ac02701c1e900913f7366fa14f9f67720c21daca75969c3de3cf39ad727dc0dd80ed382b4c226074313bcb24d1a181c8e002851ff52a5d47a98f0e0ce764dc38f1124fd4ad993205c982410b68bb835fca75fd872a30f4dd61e0f7b33a8ef871b2b4f8b75d011b5ef774c12abf083fd6333d42d17755f95dcc66f280236e109816ca8a5ee41a3e7d8980e4dc1b3589a978fc20a54707f45e3aa77ed314ce1c23fc427ba43a22921741eb5b033256426494c62063741adaa563425d17bd250bcfe96ef2c14e22c562e987d5d772a6b2058aad7f6cb4bf0e749c78d1e3f05cdb6087624285d7f51963f2923ad00c5d98b642bf992a268e948eaaf7f44d97aeeecf8c5973e24926b6653c3ce309778c6636430ad95fc4d0c3f1443a89d6d527e7c0bcf7e351ba0ccf1d51907eefe29db5fa9fc18e445e3343b5b7df1df31f15c7fed2252fb357b412944dcd917d0db03c6e70f684a7d44e4057c8969d869eddb1266671ce2dc81eff91f6a72321379659b8ad7d6709752bf0300445f6c57ef928ae6e4f26f4901714673ca6ddf48290de4c912bee22e2287dcd11f4e9a916ebb0a4ad77d8ab1344a1f47d104013e085a377d3f45fadd3b10e89456c0f2a5e657e21d88d02fe02fb87a9202f06022ead99999060fbfac3dd3e0f200107ac22a8b2b41ea89226758d52f04b21aaedfa8a4a7eabab3f46b100cbfcafc593b7952622a8ad2334559c0e51eb579968247d0191876d43903604c91c77696923e00c19f093af6087e289658462e6a2705bbbd0ed0b2305a25c98b0b9e9da224d6498e9acc6ce55c17c1cd41420207966696776fefe0208ef81db9c43f4f27c5a7ae624265ce0a460532bc796050affb22e7002964d3f4fc8e2c22fa9100939f42bf2bc1ac09bb79f5a1e12dd6597e35479d637b01405eb69c4a466e9de0355d24169f773578e50b7c19c5bcde79ce9c46646bfa0ba907fdfda658f0a365e100b37fe7daab47fa6c572a2c53dd564841b6b1b166a9470c8461c1d2877332d9bd2b3bec5eb7bf623db83bdc4c6c78b2b06944d2f03f32aa417029a5891503c0cd8157acc74c17e2ddc0e898f703660379a41d0dc1a4179da07787e2b08dd9708b010bd646689de45014c19969e454c4a976428933cfacf1163668c807d73a6a28dc0561fcc1bf2de9acc673ee5f8c51badfbb042d800729056ccbbde892906b0254304c67d29c83f401a9bb70c62d35619be3e9da307f9e09b29e3f269c7130c104dccc12f93dc8ddad6ecd471a0c27883509f95af958e3737fdf2abcf437b75afb25d51412bfd48b7d6fa54f6ea74a26dd649a39a870054945ca85ff9a08b1b374e725f669387f62e12d6631bfc63ae2e4fa83e0f26270fa82de27befe5471540adc9404fac90de0cf04da7dd5e913994548c3f48d0117a66169c40be0a3ad07a5eb6928516364fcbc34caf24ab33ac4cad76739d9e3e2f03663a49accbe4e09cfc5e923b2c55be8309f1d092d609e82253372300418a9310f0a768ba9a968e2fe85a22402a13352f77287a0c6281356e4e5a49c5bf763c00888327a3416174a5b039e4c349abb7b8f183766d92fa7c748a35e11a0d37a253d6350e8c2a010ade6d92e9c6ef71e1349e02c231abca27aa86c19d01674403865d8b6ba79964b9e7f9f9acfc48d6558495f2992dfa2081f7fd76624c6049f592a4908f51aaf4aaf542b91c41428a7202e5ff56fd848f2b7be61a45a269f654fafbbc749bd548bfce8c42f28c5879b81d1d83c961a32ae9c777220bde90ed7e28aaf53e649a53f6b529715bfdece40100f4d413637367b80d799bbb7cd45981bd09e0dae3c0956752a4a0f0c7a098bc02e628b1c2db037a6bdcb1a28f8e9a502346cc0b67b6369a4b488dd142e72807776c1c9887b37c1c624826d26abc54c0a910facf87bc99272a7b242d21726ed8b4a117534d688b80bea0ef3c7c66cee2345beca61a1254d7774b2cbd14150b8bfcbf0933a42c31da13cedad0fe0169daef29e3e0eeddb763715370e9d466a9a63939b02524cc003fbc9b963274d1f6ee01e3a46f5dda68591f6ceea82a90016523f682ee991589cc15642e3db32d0ea966fbc894458d7ff8bdf5de92a78e1571e2233499fa3a488fe84325498afbd2c1bfb14934032230f13d4944b8c25a17d1643e0feaabcc70ad913a06e674baeecaa2fccb06bd441fb149130205dd1f0afa7569055c7e2c1e23c0b321db46021b98d24c191850bfdbbce502b09b3c85d395070f43cc99b9f94262f5db39fe3021a9c5a56b201d2c437fdc748f040055271f02a88f81ed42571f4dd0a687ed246230c3f242c9581eff9de50d017e48c67d4824b8c98064f58a71f33206697fd23413fad3246b10f93c619dbbd5c1729d700917115c628d8e407fc87ae3b11d45b3b5fba93e58af3f04cc3ec138ef98e38f9524dc594156b64308522776bae41d6e91b0cbcd6495518f4c549087a197f229c7b541495e8fdb341cae205c919a5f272d147c66adbc916b4e31ae90505347e40646e9ca2b6df774c97fece13aa03ea50a7dbf0cf169816679a3fb9490f63c0afe850e9c802ead20fb162f7c97df21a58265dba902e184b65d5c20fa39f68018ca5c0e78559fe0107b3b95f3dc0bd3b2ed7a9e56021ea58aebee2401200f0d2fd878f854aef3b9d66d6a9dcc3f1d40959a76412a4c5d3afcae35617aea36077632acf60f7776febb403f53f794c59a1cf184b46ff17f8ce4fecea40a3c1265190ad7af0f8b08f9fb72f35227be8a423b385367da6994ee92c86b5782b3f358181b36fe0ba2f6bf20d37b991c485e6665aff3985d24108c082468368ad28a5c87f2e36db97aac2d37a5f8b99bdeb62f482070da1266f9a3e0c3100ff05be47d54343ff7ffd32eb4486c7c7092300704e6219426e363f14e4663f3710093e0567c4efb601c02a1e6a12c25a787bca853247740e5bd9d125df4105c7d70c55b3871344a862785724664ab2e38fbb06624891a96b9ff6c34a1d3b36e05589add57d6a8471c53ec5118f5b0acd7dffe4fe91596ef5e9537eab557ee5e25cb12f0f61a344425e7ea5c732aa344c64a487ec4fd3e0d296e36956efc48b3f5e767d62c41a801d5027301888cd20854f78f804091697609b27dc97b26a008b3a519263279dffcfeff6d95dde907c9ec718f5782b957665d712365b8a8b87f90a9f58d2052394bb3c238625ef504ac0a30f6497e99c8771e2d8e75ff593373ed195aad4f9a399afb3c1ddc50262bd94d69c691b007f0328e1de1b292223f6a8d14c3dfaad0086e587a7e609755d7f6e8d21c930581741b174863a393a7be0d7ae1350f61fa415c64e99cbf08a4b430cd56c049b758ed084659b6671b4794dbe1f416376abfe45c0300e5733447d72a497d9b7447afcd7141ba747cf6a30d9085a3d3cbb4c83b7cfc0c55413df35db8ae1579c5dccb2ce50415197ab2bf994d839f54aebfa2e2951423391f3d0a1dd0dc5efe7c465a9858221391bde557452ecf9e8d3477d9614d8b3dd97baba315e4a18186bce6076b6dbac0665bf850dd48d64c5eb050f5764789e99d945d82fb1ce78398463be251e95d10f13f6107e9f3da1e3bdb77908ae82de9822b52eff3b76562e64fa761418238b8293ea5055c27c3bc4812e42efc7cd2e09c67108dddfde4e2e546e6ef292f4a9ce1a3d43c3c3dfaaa8efd94b7dffab519f11ae1bfb3790fbc15edf4efe876a83d9fcfca0ad1ca6da16e314dce7184e0ba8e6d229667655a8a94bcc0614a5270d66fc3bde2ecc7407bc030ce5a2232af39731b196203c158e536cbda640f34f021488d1d6af88bf0447278e2c25513e52ed9af2293e94904bbdda34f66b42234060e7388810fcfb1528b704fc51325548a38689f6b6263e7aa623da87d00fe1fe6069bfa2a1a26055b3e509f54de00c874ae60a2d3fbd26950c3588d6f9798e10d6daccd102f4748cfc1babefac6aee0393251ee8dae70f0af3c5f9e138d6cfd355d22c832036d9ba4577c47df420a450f2e2f4f0a25cec82a5a8c266ab4dc7b5d5d95f325d16e4403cc13a28e8649693921577be1bb94d5f9d644c972dcc177f9fe79297d8ae8e946020dd27a26cf40c5d3a025430023535453412c915c7be40b7676c7edbd6020f93e3ef9e029b4a9b88457afc7bf08ef75fd2c86daaacff1c013e7ad584b04df787615c643fb26722a08701ff776a37057edd9092d7925921ec6650a454f2c5784828b245961197a3ded47c8df10229f1e8824774b33e139e23a6532e00b787d6965c5880794d07940310d088e70daa22462a9460405cacf257f14d8904da41d86323db71663a44ad0b578b4c067ef761aaeefe07a4ff77bb9cd5dc048ddadfbe5059901eeb2e41f2715116ca0b06fd1a12cea7ef24f8fdad3da92b4cd5d8229694cdb1fcb37c989c4a318ea95adcc9f7a5052c5977636747b4b225403df27c4835d3a846f60e8cc55363d8a406e60d9d780ecc87d058eadf2f115d5ebe0fb37de70ae3c6c7370e8b9c7b5f76ffc14a3d924615d6ba013233952cc75201d7d864a02dd701fadaaa9d406b4f7b0a4791c3690fef775f03d34bed55107647f8282ef11e5f28c808bc827dd8ca3a98cae84bed026f4446ef95f0d09c300994a071a8fd2feae853b7a6c8b9f2191fee5fb298146d4936202d04e631f59024f1f29681c52142bc30e82e876480b12aeafa213d88b442324cd6a3a0911599fb796da9760b6d4e70851db1c5fd2815e43ff889df3a4d7cba1f22e04c1d40aec3821e42656e90025473b3c394b485e3e3cd53b7af3799ff6a44f4a0fc652eb5b895196057f01095fcda0639425340ee4799d7f424b35d529d189bf4867bf88f972200ec95a8d479c106dab01a0a088180d0b7e406136e067ac811b0ddd654baf2eeefacb67515e858cde8fd03baacb76fb1ec7a2bdfd7bd76ddcabe2c1e6809be54957176a478cd531681dbc0c826057c1e0bbb5d9afeed5a0a66c3ebe6b8ef64f91f5ca38b6bda2f2248d88a00cfcb7c79b32286c9c956360394a8469ebcc402db46c5cc0f30c1d12918be8b72d426e13b58139fa9f5a4749a811c81add55866f5668c663e6083d390ed245e6a1544495b8d6808941b61cc68bda7f03ba8d96b3f60c28ab0aa84c163d913420c4c43e92ee30065d10947e44899366581b9715215a3f5238108a16b523c21872cb95f34ac91cc6b4e01cc5dbe10259e15b2062e6ac1fc9fc2901f3ee7e93eba5b2ce830ae11891d8819a8078c2f3f8c08e4f6ef8db04c81b9f2b9dfd99f78007ba5b848880d01fc7a11b44723edaf24490d32818da68dc5813928f21080317833d667e51377646b9f2dfb5e611ce34c0bd80eb695c7b06d8d24c566f0442b9d3537416877706900634a607304ec4badcf622e64c7b674adf4b2eac9b38044b0c6691eeea52dee6b905cbd5dfcb8a040bdd41fd032a07a2baacd36105302b129fd9809b8f077b47f86675f0b8d054ab6ed5c27fccc86b06e0265beacd36758cbee704ec37c6c31e7f86744e648a4e4869b1297f000371278fe7e1f8fdebd30e81bec643e273f5101b237fa3df7722a0c519c6147f125c63e34b508f2add62272e10cf5a3cf5d6c2c8d74548cdf1e539837a19d15072ee80b1b2b64364e3e5c29eda8302a265540511949c801278db8e4e1870403a7d3b77b0817fc60fb4f834777fc577a5d8cda10641b1ef74aef5e761289393a5e85f268938d0144285486a27939204182212cdf21e1579c081ca46600a00f777a29c50e6d7081be77176ffcddd72a13a122b98776acd23392a6fbf9a6d739f390d8680a15185cabff17082ded4d16ea9501471943be08179a0ed07a00725fb8a63f6d92733fd7ea994c2ed522d97ab5de376f0766ab51623cab9d8233bbf6ebc119898a3c840c7ae2d6385128e7ed207fc9c4a145238fdfc402aca0269fe57fc4ee611523063458a61747e45e1f99320ec25877105e6b7882489467d415b7077fd952fd344b337e3e86aaa13c144e835143ed4f59ac996ea56f90db96e82a949610529bf842280b8149f9a79ec72f6cd79249466ef06b4ddeb02762f17d12331bd94186b4415eaf6db341e4a2462e7f96c19c73314f4b432ced4939488c7457ab925b77a6de4b9d3eab6d1345550414b858cc7a0f12848de318f61c7b40f79a726701237892b38be96f5ef70d7daf2435dda8f079030f417e1d75003e995355168c2fd1bb7c3a85128ea95b03e7e471cbedb6e631428715fe5f0464cf83b2e87a9c7b4bd58fb7f8c174112e2cb70d75951935af21783451f2c11b109200c75ae9ac20dd83cfcb3cf4f80bf946337f5b80c733364d36f32bea8590ee4eca25b113f174954114648b4b41b0a90f51a15de8d57f34114188fe3dc578caa696b46c63237d7c1ad16e2c88c4a58058151bd0d07bca2a28c9a669521a38ea18267544faa86302a00eb6a1955ef01165f0e913216cccc8def6efc5fbd8a36c9539ef076c0410f29f7b277192abf1c3914d01bfb381e0c1435878da15cdd4d8316407aef6b49691ee66bd3df8a6c9cf024607dd6b3bf634f5b8708c207adad7e5ad00a2dd8b4183242001a3661986cf360eb7ae1a1d47f61d83807d2500b80cb5041a2700beba8e8f6a178a128f6afd6ff1e1edf7feff8581a188dd49188182a403ccce5791e5085e3f95f6a2fd81ba3682932ea33965c7a55dacab7fa8a3d08c49a58dccbcb3c2c47832dd42d0fbf39c1071d0daff1d7bc020f216167ac4d0ed74e447c8f42a72497d50f1a636a917c06f08626244e34b65b51d19ed48af9fe228501b6255adf5e6d8819664e9b6b67d9cbd36aaf9f9a621445952533c044e5793ca216c3cf78333b744ea82f97bea825ca5a46a3be20c939adfe5c701ba58b81c060569539a3a74ccb8f9dcf3eb3e5e604c7de7de12e479612a61b337f2ea1b7db8db5482c0ecf1689d2f36d8c35c6fe2735db811f5803fa60615bcc72e0e90033551745cdfa7528ed14b6710d195dfa01e67fb86025d6d2bccd4a03654ee43cd6e63b75daeaf2371118b72fe805b56dc75a399a8d7268192f15e56ba19e368c62abacd7029bb525cc50ad779446b95bb77d6c2d44e1686fbcb75543ff354ac605a89a385e8af42a17323051d9cba598cfb33164461e0f58c30019287a295411c67b9d9b68b3f64a1cf23a81a829bc9bd5d6df71eb7eb1e4a43e6eb84438b552bf39d2b0dde4aae7908d88782824b8948aadba0199461ded4aaaa1f78cf2a69cbeb42d2b9d132201cf9cc1a72bbd2bf5f79db490e8afd5b00b28f97c4e14136aeaa66382e218bb9202bd5d6ff1dd1767ad8a5c4a6bf1cc1e9a7d808a3cbdcf79705fc1a8d33bf211bf22849b6eba38b335a009b60a67bb701fbd6af9e2fb4ca276fabbd606a68ee89e02329844131f9c48b0facbca0e6a1eca04847ba12e5c33f0edb3a0c59c49fedb24f0e1d897e47508b5daed24ca930275de6e93ad170fc3cb3c232472011e285bf9c0368671343fca9694af02f16fd2771878b81b81221c02d459267d1a6f3ba4d3fc526d89e81f2e71e468e5b361e341266a762331165c6f522d72c79ce345614c95f4e1221d33309af44ac914349f46aaa5b0590d65c8a064238c2737f2ffa51b850fa44daad6fbad5464bc2269409e47d5549cf54428754517ae637251f4ccdca855393ff89041a5fb3e9ec90e47071d428b86d813d367c186dee2c5fd485525e4c687c9bc8ee775a2fca11e169326399ae4b15ea97374574c2e8c4cb229cf92cd3f361e9273f969a54eff91633286c783f7feb75991de061ec4fd68576c19dc2078c58e52b4f75f88ed0997908d79d387b32fb66be50cbc1f83902849220e6bb0cca2002549ec552d76a760fb7fda685d5d761c1a2b9c28e56784009f479e077ee5ea277a325bf1fe08aeedd0651e516626837e57640e445ef090b9ef27603d7a3f7e6e47fb79bbb9de197ed2b5949ca023d142978bc27eeba20d03c9f9df86421c2e4f6bf54d5c25054f5aeed0c8d80391c03b24017c34d57e8c33b828c1b272906fc1bddc5781b3d674f1a731a3ebd687376fd7c4c40b927e58d8bc141407fbe50eb5096fba962af1509823bfc35c97048f31c9361e05c8237ce4925e0662dc16f6cfae5c3e61abf5d758ec5ead090b79b04338ba3c6ba8410a2a7684a15a5c669acd3f02b82e984f36ea022bf9741cd16b817e282edf68644a33d94f8de1da70eb0986f941e0dbfd3c912c6717c066fd11d399c5d4cca2d842c82bc4473e86e9cca314c2336163d81a38206c1cf75cbda7c72f12a1d920b18964e0e0b6444e63cf57965e13b9fa966e15b8a9598b604404363624dd895df600765d2b4eeb3bac71203989c8c6561ee236f8328cd45cdb25b3e85fd0d2638d590e5aeedaf3d4683cb0cb59c3a198f53a35ba7d980288dd60e19fe96beabe61bcab9570a2f9cca2c95c090737f1c78bbd283edfdab7648082f1849de25ac6235202982b1f4271b72d9efa7ace9ca12ccf3b80234ccf6358179a84c391327793934652f8e99850b173e6896ca22cbf152a754ed1b1b04b1080ce53a0cd0f1738b7eb7a19408edc6a6c46dde08cbec697c29dcd21d3c80bb13d96b6a22c0bdda41b270e0e3ee53810b2a7913f322c8904be409b0c737953e1e94e29e725a714557213a8e9078610a7d3773e68c4bf0193ed3cae74dd25c37c1e090f1d9be98f90a900494c34ed9c7a003fc38f567828c9e54a36a2722f1474f2a2458cb4b124b6a358bd82e8e72253f3846f7d29de9d0f1cb7994cc20febe64f98ddda382c645b97987aac304b901f17ff4e5b42c96320b3599608038f08eb1f6d5b9e08e4918f19b77d3f7d3f09f37a1091f3935f24541f17ad055d1b3ad5ec4ae705b00d7b42b1028479dfe7c00e1301d1f1237e65680b65ee9043e2e4107b797cfa3a8e3bc58cc0eaf0b32e734fed696c04d9bce6176e12254c9fa905d5409df6c358bb74658ec03cbf0eadd2846cf9d348b79e02c4f29f4909cc1cf9f11ce872f57692943c21eb61c9796fbec1671cc9ea9cbdf6a6beeefbccbb218171f32badf0b72b8683f5eb2fc5e0714b812b344e48507ea4f9307edce07fdd7649ba8cd49ce530a73d87f652b1ab3c69d0b266244fcf83a1b1f9aa82f6f9d1337d1e6f880b03e7452bb8c6b6bb907fdbe50d8b88757773878a755897e97a128497b06623d095ce1002a14431258a45a77c92b681886e09920f3e0cbd1867e8e85cc4b931b3d17eb44d12e20bb2fda2998c0364cbd6f84555e68ba9098640922c63eb1d9975b5f3e355b8a24d331790756386a9afb0e53e0f5caabeaa11c36763d290e1a85b2e7af03fc3ea16c55defe3f5899796d3a1fb389419cb593bc0a7afcd62dbec4985396afc83cca663bf2a932eecd6c95cb1e00d496b21fd54561bcb44c6bc235f515a9a35ede72448f95a33d0f4e6bf24bd3b527ce995b7522368c2f032e3d62b08ff742cdf3f4ed34bb4623ab653b2d050c8145a913fd838e5648a9969076a6337cc3827ba33d7e929a373671ca10b5c6300987b32d41ce9a2b00f13a294828ddde309cd657fd031feff2357bb1e774c868a5ecd538dc1276ddc056e45c7e6bc01157623c6eabf284f9efcd5f2180ddd1a9c116244de4264f3a0c4234f97ee98df25ab394e2339254a06d0feca0fc4c5182cb40c16f8c74801c5fe3bb02a573d1f5f418e330ccee20632148945d713bd3656d94c6c4ab541b4d8f7f8cb911f539b9706e5c6537a3d93f84a778886cdd40a8f64d8e3cae29b107f9d65ad98af0077cf3f37933b88e908926ef4f7b3449227002195de09074dcace5bcba28c4302a7a2fa1125345fbc435d1f884e3735fe7764c487ff335f02a2fa601529d8d8283192a36c24a54046b663dd70a794aeabde656d435f69e23fda273dca6f8bd0c5d4aa20670c8d61b0a642cb68455dcad161f60e6bbaa1bdc399441d3a17c9321b7ca859c594739dd5d2c9a776f521d0f23e19301a13f0d06bd338074c7172ff6d513d69d2208a07c6b4442870eb50476ad6373f21569644eac872ba1573ec808b74e383cad58452147c9b980bf40c4b8a7e7619b9f73df490c0b8b6b4774ea972fe0a009697d637c94de27c8af2975a9d9587846fcecf99b4df0665729e1ab14b6d29fd430e902c3ccc9b910958993c594695d2c9ec99f3a22af644032cdedfde6265a3e9ac140bad4a770ae056c20ab61a0adb4e265fdeb487220a769851b7f532450352d7e1c32d73ba8a9378668a0f89d482d60731d4d8d3b5a82d34eeff83fe81a4133a22b1bcd3464252bf5cb62927e30646b55b840cb4382d52833fefcae8e2c69a0afdaa2c146ee6ec6dabaa008c3f700f1be09e00a0b0986830eb34366d9aa92687661a04b0f6bf5399e51cbeb2492009e30dab15887b6e887db2902eaa6bce700ec3f80f4aa087f92841b0412de1413c6ad57c315dd6be9a92c69244b7088acca541b9c9c84ddc9976eac3b8fe785c9f09b2c2a89e586cb33cc0b8aaf8d7067700a10905af121c9cfd9bea15c0992ac55ba82714acec06229f8716888dea3a8f3a5bf6b770539415c2341bfe9e9dc31c3cb22ee2c1200bd55e7c0227f7335dd4f3e0a3e96dd2d8f550ff268a7ebdded8588c928bb61db28f3614dc69b21a65fd9e226d6c4246fffe0327995b8dae96cbaa3136016c3770990588f22ce34155577ee777a15f58b0baaca7124d0d68dcce505c7689f593e76a160fccf769ead44e984880be7300c17c4e302d467cca376ef4124e52307ad596e7479455186301cb25b3f6492ac442b32f1a58c2d9c211a9492132286123c8d5935d0c2b234f4300ae79db712bd8bce05dcdd0431ac1d7848c0544d9035e3c63a91263d136b1ab67be370ed8cfa01e30ca308eec1a2a1d09e11fa75cfebdfa9f9224c76be1be31a5c1f65322114ab24f24bb9f12b965cabe2bb62dfda2e34fa99ec0a486735cc2ad924fc8b8ac934823a185ba7d3079b7443ec98fcc5ec03b42e8727fce31c690947baafad0890da888fe78d1de0c9c93286126ab6ad8399e02aecdedeffc3cbc52ad572cc09abeceea1629924eab7319952bbbe3643eee5ea9c6db70d215232b3b2b5c6f399c8c3f6d86d89d8508c9cd205924fffc2508b66916307e52f24f772f8718f2f601410a9b6673182fa7394d4b3793ad191862c05cb92676e15382cd04795b4ecb9a98396da7b1508a4ca322171d8c1cc4c41291a4c686bd2aea4b940254ac49a889a2558a0cf2d18ec2098af39e4574b5a2a7c0321b4793b25fb45648d4684f9185d32b1a26e21741272ba878b6eda907ac84de52a914579c646a58af84c55a8b92ca807a481e6f002862fa53049ba88b5284a53455929fb1e069b1f910a31d543fe85d7c7c639eb08d33ede8e22121fef76776d2bcda8e84b63c248c2477bc32da995e35257e4c4f60cfe479305230945043bc97219827830733947e4f6c54adbb555e1e6a951cd91f4502304cf717e06d22ed3d4ca3fda33e44971d837f2cb27e8ac248431ef47b8584eac349a8ef218d0f64b30aa950b34bd823cd2f9e0f00e4411f6c8b0a2f0c67483d3e0cab998ff759ee37f1e3defaaa9c40b2c3ebf90ba94e5c9c5abc13a4a2972074ec3055f05a900fbdb60df5995db403121aacecedb1c0f30adcb4e36e1b533118601be66a48280da189320b293849098d6eae8bf7dfb017f64fb469498a5ac4b091c711e8436bdc3ee8a5f4364750d901d76f9679a74493566c9067fb734e2ec9363dd6a6010c2abcbb03d2e7ee5c4347ed0ba139bb81a2adb85c2cd7682202dbb9f129015994d690f113e6b59723c511f2a844ab1a09fb660f561052d0f6194e0e6a161e50566021aa26fb42d6f4ffdd961150e37b09ac3d38ace8769cfd3d551f4b4897e6eeb10fcfba913fca8b5843bd2080c762856912fa508fa3e99fa40cea23bf2f534bf1fc1e3c73dea822cb32320e53e3432f9d9229423161fef16dcc27a5753566f499654f0b532a06d497c1260706a6cac95d0ee8948a141e47929e77697152db7f6ea56dc89ecb2a94f95022cad64d18731c26b1ec698fbb2828a7e691fdc5fbdcf374cc8f5722d84628b728fe1b17176388bb2c3f4024e2f11fd30a3423bd55afbf1f5e8465a6e9c5a9b28fac4763b0e2d78612e12d8022c0e108bb7e89b4b4569c38d52f09dc27554a3e738e8f3689447c0667b47b6fbb33e042df3eed8345237b713976581284d36aa60894603571f187839f310b2dde53eea4994c6e0c52c420290e1253a0cb52d4f639cb912412bcfb3336a4ff8b616fbfd5913dfd71259957e74ad724c302e7a80cac2964e00dd353119ee4b86bc24bbbb85b96998bc691f0854cacdae64ad79f6f392060e242596d481779239214addf128b708ef5d4cda9ad2f7cdb67cb59679ee8b863cb2548083d6335a1d9b24ea035d629695e8d2a9d1b650e1da1e48c92fe5b4dda8de4d68badd6f010481226f195168fb43ec6105d93c039ab09e9d679421b47f35bb34872f0237e0a8896bb3c82fa889c5291a29f1f2d348f765603b1b1d03b8f6aa10ba792e6c80cbf7599249bc3b4261a3dedd06584ad8793fb007d556e967a1d5904af2fecf42e953eb4f34b8702f23febc01e7d71d49b11d8f85fbaeb81da08f6a747008622e4e777401990312a3476342a174cc33075515638e7f95e0c7cb2053cf2099542b96eb641e2e69e5b73433a6ab5b2fbaced734f279d0dfeafe4c85a2ad3a073ccada3d4fd4dbfc4e7017ecd1388283a661b9f5ba668f43a8e820069b2a8e0532889b1d8f2c11da7767039c155bca11103c52c2effce6db91b5b3404a4c54ddadb08b155e9f7ab2403b9101bc7f640b4f1b47f1c1c72fc5264ad7f94b02c451e07811feb82e019f520308303bc9507c9af5a762b60ec39365dfdc76f4b1e5974e617fdf86e231b8864555cc43d8ec29f138447fa92013e4e6d35db6e88b4ffec406e202c1df98f5aa41d013f78c3bfa934f9cb549ea23c94b5398083ad1cc9ea25aa9c6db6df69645a6c057d138349a2bd40149462e5e41a7bbaafb0fba19bfd722849e58cc0f0aec804db825f49787deaa9af316c04d0934cc998df9ca7394835c43ee2172e93f9574485ff129a65530453b8a15d83eba4f71545e8ab36657eb293f6a7a7e12a149abac7fa476d713c57df96228291d84d389524a73d8255b90838899c68528f22f1e26c8832baa4406848f52202b8a97b3669c655d48ee47ff65c60418002b65a8685029b49b807263eb09d7eafa0d68cbfdece73dcb2675f4e629825359a55853d2e8d45ed205a95978974733553158ce2791c4edbc50bdc2c986bed078add698a15eacedd330933e3809d084aea321042240900ee091eff4bcc301e907e0620656c56190db9e52d6b4fd2b656b5d865611e3352eff75a6159da4252e46307000824c21bc4871fd66f2f16f90aafa059cd9143224ae221e8c43281507824471e360bf71be5edb34eb878fbb0cea150adca7e42b41ba2389e1d525a3f0974a907340010d5f11d24f66721c2208925746ef1141e09e5d5b163b0a5c0c46f28a87f2d161f087e01b62020d36f0a39f570112e926391bcd25c5e9bc0d841baa3993923da49c7cb33a6d2ae3b822efd05f05ca24cf80dacae663b8a357b1087d2ed5b43fc2b1372f2bcec08e59d3a0d32930632983a390f2c1925b96fcdda8f9c12841bcab9fe230bcc228325b2c2804e998795fad720d4fa581ced23beb1a5fa0383ea19bed3c7da9f53227a3889b8deb61ccdaf2d83b19e90074aba5d32ded9fd7fde3f5912623d515afe5faba9cfc0ec0c9a6e0fecb7e61354c4f2bde535ec08c56be993f680775a1d5fe519dd938e8f12d129653c5c82a67e5a94b84284124af56122b3c3c44bf0843dd20d709d1c3119d4f31f368970f17adca0c0578f34a8e4773ecfa06b6446e27c616e080afa622d401ba7c534538ee2fffeb8ccc8d17deba41193b0e3297cc0f27857bc1dae6ecf7c7361a9914ecd2109f88630b7572a8c55a3b2899e2d54a7aed6295d1bc0d3ac66dd7979b81e12a15e30bf2d24aac00e3459fb0cb164ad0b884cf8345a58727333fc5cf58e6c0a36a000a37c315246245026f6c50018e660c2c437f56c8dc990d6a5a56073eddc7690ac5e122220fc66b4543cd4dd9d3cbd730449fb764c2b5218835a3275edf50e0d811c67166eea729232ef5d2b11317717195473125dcb934bf35c1bd47721ca8d0e54c78d2e92144106b563ce006a83aab53c9f73a60c5897edab86f8e66b1108476480c284a881119452b1ed5d59f5a2853c0184b0a08e2c86a8580fcb4b2fd907ea7bae51ced0c172c04165b9135d9eab488700bca1e12e97f0f3659b3a60e208f12d1d107e67f9fa40d5d2bdb3064005463c735e95ebe8bff0940749537ab74ffa26e048f08962b0ab7cdd6dd1bfd6f21fcfe9d9102c8d387fd61300b60389fdfd3705a0901a4487b8a189ee0977ab0c49fbf77a8d44001ef03920d997720cf755ff0f111cf5eef03672b21cfcfef829653f2e70244d450ae91d6e9644ca5952df8c84b44894a6849ad00dc2cb8f7d254ffa1b1e095dbee24e6a09184629e00a89782dd954b008aabb63f949b1eb2b40bbe82a69d4ae886b35246dd82ec1fac0a17fe8655dd2f4a80df7f8226a8d0b9894f7c42f90696d7dab9214451c8115243e6b87a64cc037f4cf23880f939b064a534af3c30a5cf5cf623a0de93f9b550814fae748565cce3b3b23249861ee00d4353c74024af78c53cd888a8a3d929b0641cc909e487b20e0c24642c0f0521fc7bc4f0559bc08dfa279761a5dc8061811024400118a2b43d9491a527a4791e7bcc3c7b561482f2b72fe41097608872c36b68372c0d637bd3708bf6d4a83b08ccd5fe816a1effa8ef7d21f287520196ec8e27704438586b31aceb6593f9dc20eac5631c8872cdbc843762be0c0f74fd3d1a40208661de6978797ffd770c020bc3f99f2e93b0cdbd80fec7a5bd09c9f441bdd60910e0aa2d1cb50ae3c6ae78f90a8d109a2d51d85461c21a73a73c55bfc0ae1c1f99652302467f707d737c250b8185db997d62fb35d801da06e029b656fd751b6a520e794fa8043512f5d050c145aa33b48896afe4eb3396ae840b8ec1278c3811ca923a353910419865b136a90f37a35c4723f028f8f6b851e5ce5f2d3e2e356a60c8c0a22f06b5e3106eef056eef1baaefed47468939750d2af3aafeb6af215ea28b2d4bfdd911f497a585fce4ee43bfac26997a29246ce421b84405e111d53401a29d610ad1d72fe54b4fce798ed80f1bea59154dd21ccc4383594d9bd7160697197140e2c1d0ac31ab4cba86bb1d36a13b71499e80c2b022bbf5b239e0d6542590e8cef9c59866b3a2daac0c8619ad22b69aa8b3303382a7cc336d810db38ba9e7a8646a5d415f0e7f167945a9fa8e7916cd699ffba15bf9e3317de305944b0f57c7eb3aa62658ae9c24908133d731255bcd57b81f481f27a7876d3938001f232c27c2c585b592ab9159df696ed1550e9e19493da3d8097cddb15ebeb95d2c3547e1c66f94ec352d38525b3dc55b0975d82b84714b48e79f376498a162e570edd359f02c60b60501bc0d53009387022a90a88127edf6e28da33e4c5ae5e7f64947f086b6b0d686d929cb1bac815423e7aa0c71f68bdfb99369aa7bb771716a7ac1c2782ec708079ff6dfadf36604bfa334fb6b3c474903d13e44b594177fe84c493a15216016546c0a63c29c081c287bcb64866611033f62b32d91e7c66dc894083e900cdfaee0a865cccac8e94f81398df6151d9e34091e7108895745873e596d49c8fc5924d9af47e65cdc18344b2897d94a90540a59f92f04dba993fa5a8bbbf7ef5780ed29e86167da215516b52376265c0e5e36813005788300e79426e92848f9da609829568fdb61cf6b9418c9926ce5ce7aaf6d3adeeddb721061cecdec5043e2eecd908e4e98ab24444846587f2a1e80ab7b21879c0862093875349da1d61bc0c9a19ea41d478fd74f4f42b031e02478304164498feb20da7e6b21b5210079363fe3a753d53ceaecab5087fb98d5b4751af73144237f8ac1c38be586cb350f44978451cda404562eb3e95508cc7f3d9ebadc6c68fcc243051dbcfa043f749285e62f185db93f927e9bea006508ec00125582b50aae140f9961394bf6b41c94b83d27f0f4ad8d1bd46ea2a1fd46f427a78c7f37f1a64332384909ec0764bb9ea37ab50e252113fac11470d126b225d16db4509e755f0fb57a1a4a34dd96a07c2e06ed92ce867a7470368ce734b169953f316da7f23c2f22249fe3e270f7c95ebc13b37860c88541532857995c79c169e4fbf5bdd2bcc10e607f5410f28d21e7ad9e9b9495aef9c7991df99354ba19f49b5797e6ac384532e9a5727ab718f706100c71083a68f35da0a833a01386e4d0c850ed1dd3a79525d9d9dd98cbe096043a6a39c3b349aabe5035f4f8cc304f993960e24a7afdd3b1770955b4e0610d7b299efc439ffeaf7fceffeddce1553568552e6a04824d44c99ae5626460436cf1fce4134a592518b8a064ae8ee7b91a95844bca2f34141352271a6e80a4ef253c654b744803fe1f1c0fed0a2898b65ed49ffbb7a5a0028dfdcd762aded5bc8972892348617cfe26e57a5839e9a1824fb19707c3fbc4a2afd024624d22773759c34bfd2fa03aa8a6397c2d7da79e1d35efd21b65a1778a51c2cf86d1bd93a1b509926eb2a0979f67545720a6bff34574cd2e401d2b82f99c955ea37db1187997a8c9f84b928be4b52f0cf8d514c3ad401ed5b48b400b802458d97326d1f1b287267c48cd844a9e15b62c7c9dbe90930d7c0d1a60201779432fbfdab6dea17320c5aa54491c5c7591d6716b03ef2f4cbb2fb6aa6638f68093571d9e22fd866fdbd64548643ea5221eeb76c093ae90669a9fb090332f7eb41f340826b1f4d6371cc2b3cbf0f4c0cd377a9273f4b2a24801fbc58633e32ae5827f26f1dd43f33eb01b778daead831528729a75466a9ee514d7d5336c25d56105ebebd8386f961995ee5864fa250ee933f7b1e539630546f8fa02453a5062d68b24c8bf5e871522a2dfced0d87d57ff9379af863fe1795f6abb815ec4caaa3b5eca6fc0920451acc60147d5328de21d3c663194d83d3a8839c1cc034c4f63679853c0adae141e80b08ba25a16060e0ab479db2562789d211b0827423a2eb3db7c735973a097b59343ad56b4ecead33b436c09168641eea693b8200a7faf2eb976fdfa378f6af4e8617f82b9317c0bf8bb42fcc14eeefb31007bd7b642c62b37e2392ed6fb20087b20baccaa2aa68859ad7a6c8759e8c0af20641dc78cf5dec19ff53fa4215142c650e0780b9c21d9c1bac38e699dad4abc9c893e2372771c10b6254b42ea3104dacad430c7b14389891fd4dbd6e94cb61d8d01d45685a3f164cb289feffe10890cc020b4361b1d05bc16c42f34320c77edb0e7f93c8df01d48b37b85544db2c61b6bdcdd35a04b8233cc8b713954ae64cf9f86143aabd4b9a95514008764fbc4326810ac280842c5d85ad23ae55429a8fd0ad2854aa323e86b96ffd9c4240f4d723fe424e5b3107ab93b8a3aadbf0c0742e249ff1b3f6d4c925492056a78d323fe2f8271059601b9e01c332bc5cd5b83e323d43131ad7e7bd062ff6b4de37b0b2185384fa9c1f5e27c005d09d983aea6a795a0396bcf0aca34228abf67d90b0318ed07749f6d70e781c42e1848d93557058dd0c6af2fbe25b21f4ed32c355d121aff2c2aa503642ae70ae75208c431c4149759134a067046bacfcb5d4670ae8e5b7dafb4128cde2bc451683ea7162fe0dc786a120fde623f9aa68e673ed2c2481b971a34eb22fbf2c38e804882ff707da9b94e9de64328e0770376b50b5845dd4cdeb6ea9e5d198f50b2a73def31630b655d8deeb17d6c53ce9cbe05fba2fff32001ac8cd98e0d67e5d447aeeaf40ded7377f3969320029f3a98bef6438378416ff03b507da83408c07b4f52a4a09a058643acca514355e4c6262d58b4b3311c72ac58c9aa6816b6f63f4765515e9b89daa3abc2180592b1185378d9d527ee112b6f35c929d58cb41b749248a355407ae259865dc1d1f2b9c1405a410bb555eef346d03a81a33b232313f8dec0803320755d8bc3d0867e3b4e6ddcfeb0b9116619112067611270d0411299625fb1c0fe8474d3fade34aa6f22d651d08ef341ee1ba414160e1cc2a720be23df87fbaecda397a4e1237f04b1819125094e6c1b86f4a715a21443a042091aa53643f4dbc69f1f6262242b2963cabf5e02ba95cbb8ee02f86924fb55d079c2bd8ca2bc9f05a064cb60449b5a1de45b2a06116994835d98251cc745ef94c574a1138caaf5043fd7855db708647284323ea75a8922e6042d9b3a6554efff588015dcd70cb87172db41ec2853a1bbda8c9d814f1479b8f1bf9f8fcc7914ec9e3382a7ecbe4073a795916f23830b1ae5832914e3e35a02812802e182a55e1b44b1bff9cd80932b5cdf911b8677cfcb25f5cb8aaba42fab0704543e3b0363a804962e2c61ce4a490fc5481a632d8106a788d5843559c0d2ad7d51470c5caa26a7c823bdf037919ca70160688a56333ddd1d096a3b100708d8827df4ba3422b038ed60ab03ba8201f854edd60eee803ad610eede194c1aa8d9a427b27c2931ed05c42b6497aa50728334a72bda31f509f248240573810f5ab1ff0f0afe0bb8fe6b7035692dd67d4702b96c5bd0c4dcd3fd4cfa2e1a572de2e6050830ac39d738e0487c732f74439eb8e99317e5fcf9181e261adfeb6b5eb334a5eac39a3e9b345a2df22411e5e90e23ec55b2f60e423ef2083e0273a7c849f6083e27780300e57157e3400244efd03c90f8d947cebfa9c85eae4c0c70254da2f8acfe3123ae49e68210dbadbd8fe67b5c3265020a5f54580110500e29e66c7886484a5ae602db5975c20f50de6724d46a590f6be60d725d236d00ef710fa6810221498db9f7cd64ffc708b34d4365604c73691c1b0a6c8c1be2565baacb2b295ddb48927f47b6b4abdf3e0732714a994f057a0b2df000cdf691ace7e12578927bb5fcf57a999c9beadac7929412a7f8112c82467561a593c8401ba8581e6efe821203f53bc6c5998d22fd3c11661b92cfddc898d9342072798df607a4d2b7160742fccf698dfc1883a05027847bd2571e9ce0f54ccf276606cd54bb2f3549ff1a670c215eb3f6c4407977ef5e1db94f1dd4d227d2cba9bf7c7fc1719987db65531feda6994d553f1047e8250d0f4f9348a2819aee26dbe2be805afe4893618a6902b40d77e9ebe685806033557cfa269c58b49a6c86751668a943e5d32047e9c1b0826c433a3376ac5dec3c7a1d14d544f1e7df2788b1da50b955cba586aedcaf18df0118305c6664e40b5f2cbf3891b39f20973dbaea169bfc1a954782763c8e9877fc316a055d00821f410166b90ff2491b5ce3e6c76dee0d10da7fe679f445718fa1b6ebdce71ba70a1cb378787f51e51d9f99d73bf9361f0ab2e07d9c5850df677ecd6dd90b184c6ec3aff2d954f7881727b3594e825038dd7e59d9787ece09b40bd9b1b90eab8a2983ef8094898e1ac1b3e5c6f0efc01d44bf661478ca5921a35b4392ba1ed1ab14283c7b7e8a5e41cf891f4d1b83d9b75a587af70ccc5831db1c4fac407206b0f7b5e5f8ebbd3afcbfa1558ac543fb18fe993b55e66c81dba1035d048ccc8c6004e493c96d099169020ecd8484377672e189244d86b4d642c680322e5f52aa8a9c3f815611b4a037c94dc1aee17ce05148c3a5ebe5de2ed36aea87ce2297592001efa66d8cf4fa9677d6321d48027539d09cefcec28f52736a0abf2b1cd66798a54074654df945dfac0b7abcf1ce2e283bd20b471f946b6fe4495bda9759b3f2868c303b4c19b05af3e876e45f6d6240da2d1ebd002860eb874b13a2ec739d690e8c4d8e712a999cdd07a67270c0245418b6bbf521a1f34014880364971b5a808173b1ca582f6b80330fad03761060a44ae7ff5be9075114600cb3d7b885c4707a7e5f37fa1c7c79c6710f756ec310c7cf0698eb3d0e8a388013820d41d9f34bab2aa36ee3364596fdf3f07a85f61767971164110e752c0f1683ced44e88249dfb37519cbe97e8b4b7ab43acf38a96175f58d53cc0d95427f742c513dd46cc989e3b033f4a1ca0e6f9a731d6b3ff22cf5a9c9d65f88b76e2a5c7e30f17c969a14c00c1cc4245d99c7a607c02d6e698cafd237e5006b4e9f368cfd047bb158e3f7f9b9f92f5c944d5f77233fd6c77726b0e7bd7025e3d44af540082c99bd13c7d86d501e7367c63b190d5231314cd127d5ec371a3e731268d69ed70b536f4acf8c24999b0574486c64ae90b6cff22b97458f67e8f5ef88375e6113b420dbfcf58c83308f75fa0088b9c3a92700973ad6758c408b43e23a425bb1b944238322e92168893970e16b1a8b266757faa5a81f3503971ff1090f3895cca346fa145c2cd7682b3e16aed344f1b979dd300137cf5bd27c4495669c584aab4ed3b0ed0aeca98cb44cf4605cef6a4fd21ff192973e35294f3d730b95c9b5dff15ac2492b8701d25a0ace66b48d2627a9fe880be0e19bddb45089df5510ca8d718acc61275bb7562d8dde99af6446ed1e46773a4785d88bcd1d8e8f7e651bc5b81cb5d2cd2aa15bcaea1361cb4e368d3c6b1d253ee55128c8947756144499c4991ca625d82084398333d60a99ef238aebc3e2c6715e4eb287cd30ce27c23fd42944036ebe0393df2175704248142932f2600b9bf5539b014a0f0a91e90d2fcab4c2f277085f7db214c43654c7b419828a4f112832dc33110b4ef11863ffd719e679a620c6c725555219927689072dc14c1b604388f737f696b360b7a8d23c6eefc46541d9710cec2897dfe27f92f288defb557d92c559956126749330ed1cdda6094b65e81374fc8e270951a9c09a39110f6131a187e576fd420e305afda9c8835f66919d5437dbbd929d33749bc511475520ef9c345315d072d04b7c3e3d3fef45d2377437e5c75aff4651a628d5391d6cfc949e5309d6acb5f2fdfb0db4a84cdd9380d9cb2bb2e602928f504a828c8ff781d359ffcb887a1a5447d5de82f361c7ed62a2b33ec5459881c09a8abdc4f4a3291d1c4bd09bd029a5453ec41493fd1808bbedbfbca0162c038e9efff77f3717d4c6353589dd9b0e790ecd35c19f87fc4ae34a980e6caa343a52d003c6a3a54896a870f6fcc7c23e256013cc5b17dccfc96fdcb80327c0e4615a28c9a1b97513164b202872d9d478a0550df10a4ba4a611f57aba901fb1440bd34ab3f259cc428dcf82e1d76bb11a02f3cf942513017b714cb70c347d657ea9878646fa80f7ca90441a17949c2cd07514739bb04a2daf70dc4827a8a4f3225908633751f61b96506f5301d19400dab95d97a003c43848093928f4e97622941c612affde69b5a5b0ecb40914771b05023245fe1f44e53e497596cfb7d311a52c8570a47c4aa5851cac401b718373b8c9fa492e08dd874284ae06055dda13e81c00b43225e037cdc225e2aef0f42323c5da18dc8afb7f88672d41ba9f1ee9b820b17d4385540db5f626773872b9104d006c7f047163ff26f98d137b6d7e547df436a93832c13b5583e10d45bc49707b74d84dedb0069770b093c51d371f0fc49996e8156bf047ebe7b2cefda97f1dbd0a09a9551cf341e444784316bb9b68b4ffb1365d4945a6fe0b5842b80178115d4bd800b49c80d87840863255fa9981f496ce8f05f051e6c7f30b503461013752a950dbfc929860d1dfe78f63f6033b61fc5d9f16870e8efca56696ff337233457a8505471c7476d97e66c9302bc38e47a655486b6bcb682e0d15ca93cfe35b5d356062fe50f58effd31dcb983f9372eca615952776fee0ca22432061c5880ec06026bec693b806f75431ed682a921df74f44875abd66e612169747f5f53a5263055619095470350670d5152cc3ca2c3b02d3a8e37564c370fa08145c77ca7ca2b282fab25731dd8aaeed5b5f04d1a727f20e46e56db796f3466c041d33517670d1e70640ffc3029d3390c00369cd89c23a253795e8e6e0ea86a7a8207140352c9c3034dad4e034978b844a26454e0fc60ecec23a26e0db493f55b1b0514fab57eef96039bd799cf02296e73cb84a7bc2de2115bd34151a771ae25c2a7a8f686b01591a8d83e80a138a2628a8fe6245cad3c49b39ee8cfe18d7922be9a89985f3f14a0ca0e97550a3546bc13b9cdc731f2114ee66998e9a0db49162bf2974b28afa02a44ccdde284ecd30af59285bf714df93d92119d5eb9829755738c7ebf63cc78e8df779dd3cffabd5e3ae191366656a285e88a0c8c31b369a143c63f8854e57c4da666d347391843916abf20a15931a6199408d46609c3db84905cb469300b7ab54cfa31d152701bd8ff44566710cbbd0800c2d4a755e4435f18e9abee9690e99696295d234649f64eefb584dad0fe39f273830eb3963eea2855fd9af30c261a43856bd9b2deb50a221add82450fd1f35f0425bab4894a7c2bd8db870e8e3e130793b051bf9091efafcd8869aff5048b3dc822b0f65a9a268c510a9facfaafab5c551f5f1ece3dfe48e95e7e0aa4f047ec859d550410667f7382990cf09d62d6486a4cd46b86d205683f0a3edb391304accc9f504da00485e684153355149e8802ceeb14565b7e7b82e03504ca947c69069356967ae9199173e5e26dfacdc0450d445bbfff1c4770b9db3515fec4df23cbce72989776aadcc5be78642dd8916824953e98a84941ae32a70a7aec9cefe60f22d639fa7cf3c0b7fe95af4662cbe4dbfd9d55b36abeebb7ce9ad88c97f1c9b81cd1c1db3f64fe4c762a7099efc92be804888a74e13e251fe06db61bee391a57f13eb3f86832768385dece8c8f812c394dac2533a5f81af1b68019f8a427706b778625d37c3df06ebf41e64080dea646d421d6adbed3bb9544663c933f43118e125585ebd699260956dbe8dadb5f1316df44a5a1b1e8f28481fa8cab1fd9e0e0db33e804af98821518cb074f09db3811a223c19c6967304939395ae981b199164491bc0defc38d69e99f51f860c49c70e14589e51ae6f981c4e907b31775fa369d796b1b114e458e494312d2ab0d0cb97d7f1964bd989db23dd78246d0a6ae42ab5049282e82fdaab05910b2bdc2b2956385637cc8f87fc74c4113e306f6043fb3204ad0dc979151db4c21e2ed52dab5e582d740c21d1109e10f577966eef11df33aefbc5e4e6086f608e21f3f197c24e2d7d0c8f8764d45d153608ffd5815743a3446ecc93ea590a292237e897fb6d36987c630825ee6f321f31529e27127609d2c71d538fae913e666d0be39b60cac33d16f65e25234932c2c98c9b04c2bcb11575c65084b607a9ab87968d0062792c3b7f1d28cbe1a4ffa94a5d0cb2c73d8b95dcdbe2e295fdfc7746104bdad6c1a428f9b9e86d9fc5b6821c6906b2e21f4adc25f97aea1cc7eae8cbf26ba23882346f9792747e6cb9911f6d4a2ed57bef1e8146f17064ae20fb48f6d495280ca75f5de1c70a812d33bea787354c5ca8872ce8999194b8a470fa4016e8846b631f0b82a0b66c6cdd1a9cf206dc0ecb1850a5ae65c7a4610faaf95ab79240e78374b7d8d8eed84a5a608961b6e51370ae8137b4a2e4ed8c4800ba6058c2670a447ab287f2b1dacee2e000b55faefbc47d0df6ff26fd4cce30ad8cda19e56055d829476e04eb6bfcaa55f6706cd3ab5c2bab9a4b19a8e06a0edf5e3df22b9bd79a7396811745f953157397061f4ceb6d0a481ded9e8193ac15b4591abc6b7671c08a2fe57c891d44188c31e086a116952d8042c2b0180258dfacd668d1451abee86d1311524eda90c60ede06209e3735869d12f2a18d3f63df1bbaad9885575380ca5ef58b43a2c0489987ca06da678bddb222622d655fc3b707f2bf204af68e9dbf8f1ddec3e5fddd3a813217faa031ff5080bd139382ca1b14912ec6be5e0f8a96f0fe718f40d8b758b9844b8083cc759674f1a83bf883c34b40459bdaad7d8a46cd1486657e2a0175a7b859b2dce6761e1d3e1010087dbca0039c1500da3bbc3380e85bed2134f64a43b25ac70f37d68398a21f17aaa8771ac6b1c22e40190277067c581a080bc95bcc3ff0ff86d5451d2373a9849b7cd2505df727d781614e6e1d614e6e26cfbee0338954a2b38fe81c46d00f86598ce291059c60667fe2fdc8e2935ab409b0ade690aa0989245851228ee61fa83e8140b48dcf65198924410e1ad4220544572beb7828b6e19082610a0f4b7dd1b08f419c5848ea90b754434e717a7702cfa639cc013e118a5ba8d4ddf965ddab21e7d04b202a4370d243db1d9cdea9b56ffde0abbfc541827cef579ab9c11a0ed94b36345b2c6ef151cbaef2d9e4a25f435e60e2ce2bf8e00e0a4746614691d1770835dc39f9844abee3358fad1bf9d208901f8a5fb82cbd5c132648905daa5a2e4181b093fcfd4ee5da35bbb7af8472e0f93bbe315b950b50d9e8675a872b344b216b3011d51c00d07098e2de9732d01c0078575e6e463ace547bba199851fa5e4682dacf80650ae1d0a6ba3d78abc0927b44e3533b656baf2117bae4ef41c243e8cdcc3a472d4a53f6b4f2aafe630a403a8c891aa235aadab9bd0c5c385724ea7332493d3586df8ac024cdaaac6061acec13cc1b1e9a995b6864fb1a90972e9679f213c029206aec8391ab66ca788dc357512351dd6bf37d058024885fd09df6b929e8a017399b3caa423409272e123c6ed2386328ba17c96ace7ea2a0fb6d7a8bd10e873b6e809e3f52c074d7ed6bea56ec0396ce084d4a71f9f4137007c6deb7ad85873ac64ff999b554da7e643f4adb6912d30609fcc5fb1f2604cfbe8f608a2651428126e54279e02fe136948b115337f1e4e310395cf59af3c9029653c2d19f16521419863c56ea11c60926d56b682f62a59abfdf3815b3927b2620c784f037a3824832e077588081a34654965e82bf60a443469861c22c660bbd3af403f843173f0e9e09a90ed60a99393aede13b9c4c5a29e2cb7f7ac789418cb11ec63d633718aa4c40e5df3405389c53fb97a99b1dcd1c7903e2bb31cff3d06326983857ac40a600beafcdc16c2c9eacebaca599b30addad472456bde292430427fe49948b5622d918a6e705d59892b5a64852a8a3cb32db70c155c8cc7d4da0382d584509185063b0bd6eb090eff993e95c3a315adf0dedcdeb44f902ad9f992da450aabfc37304326258a3b0551c0bd714638619fabf5b3c5f7b9fe3a1631db179f443a35b697a27e82573cb232881ae64e916d163ce7ae8e9127018de233a05f23d895581fd20709fde15c0df4fa4aabfc40d2a1f730b1124053cff3834934a43b5b7530057da9c6d4f186d5d9f5ea0a00ce60a240c38b1100e01e23c3e0c8a90c60ad5ecfccbec095deb06112d023de1a4c91aefc7f74572bd3cccacb4e6dd7d61c5c7204152f3d5d4987f707aa1fd10e2eb56617d3d19d4a4efd255b57dd27e104367a71bd9dfa1ca7e918a19addc8c14537a7be276883ea92141c9f3f3fd881542ba5f61716c6b2a3034cca1650e1f403221b498aefa7af723cf4feac3b559bba51d0a5d61d02bb3f9a80159056d020e6e57079e4be9adac792939dbc9790ef7d06163ac8fa5d74aaa55d3f81fe2c99f2969d5cf56018d0b2b3b28c630658952bc11493aab483cb2a179c6b25f97004dd5795d6acfa3fa1ac914a0a32be8d4cc04e0047e61a866561899debc48efd979b7f56e360e6f36f7b85af360f56679f25f10f115887754ec899b0f41dc0fcfe3b7f92b44814cea58bf92a1057e4ecf579e90dd400e3f3e24cedba863a034b6a49c1f5b04d5822f5372c24b48e2032e5113282517b115164aa90f60fee00f1054589b2a177ea2da5b3562556403d1b7592564465bab64332bafbed8cf5af6c746884eb8b79a450f69e8ce20023decc289f1344669506a6b5ce1955a6c6321bc42e002f0f07984dad7edb66d04d0f0824f75182f7e5d83bb1ea2730376440c848244947ef89eddacb721e94b1f68d52b31727e3cc1d90ed97544ca66f70675790b07e8e6b8e05b5ef529d9fb0df7887f9175eb1e9a63ed4131fd0719a791ff5ff222866b31e87275cd63429891dbeec47025e5118aefbc1728b99dc6299ac617addaf27bf1e51170ea1f56bdbe3c926e86b2483c0600039556a494443f492b772ff0689068dccdef1ea3276afb0d845f8c4d8fbd6092eaf1cf717afb52bef52d4e8eaeda2ef727a344a848cd70923c5a43272a462c5192aa21f0ead97358999822ea4764ef76581235fefa275ce8577df8b823c4c44cb62f26cceaef9008c544e51af1cc50bfc07019ea6cded909dd2cc3e351e09451257498afed9a67d3a54a304dcc0098a8f86681210d533024531fb1e78e86f01c3e2bdb2048792c4f5e2651a2f05da61a68f316bbcc26142efb3cdd828454224eb1d92967a49e1b7f2ca41deebc00e7ef305955c8d6477f29b0586f126738620fffdb70a1204e42643511b077815df110aa70eccf083b0512397255e3d6178393a4f8a2016555eddfe89d18c7b63ab1816b5b2f50b8c8c881a58fa303a0fb9016ea539a54f0c370ccacff3dce2b71e52739e9e793d776b44d1373aa9b946e9212ee175804196e0efc15488fbbf8671c94e93811031baae3541ea8d888d6f8bb2191061a8b394782f44247c7b7fc87e06312905c2341a9bd2ba3b1301e7fcd77cfd1eeb00ae4dc06c4d7cd7b04d4ce2e0b7a351f738f7fb12c279b80d7625b2ef56b8af74a970e98d9d91de870bc88f6fbcf3a89de5affd72037fb847212b85b19f502440600aea07abb7594036a69aefcdbe4731c2fd0998f0b1775574416f1f67a17b8ac4e83390fd11eab6e50921693b723128bbcf4ab6c8e400ddb5f2683f39dff2c82615367d7a5ebd069f23a728e918fa7001e216083228898b61e11952b0ee0ec14a4911ac10137c3272fecdf88a18ac768d9db65ac409cac818b6ac6e86d22083e7c70b9477ede7629d740d2a4fbf8a85438a0fc038e1da257a5daf31d109992a6069a056c773579629deb70c16ec5d0ff4e50cd62cfdba2d061d670753ea544097e1c8779af741402a827a3a0c53ef5600355d312068e2109074f0c0d1e75b4a72050ea3d754b8a2b1843e32b7aaa6c94643c5fee5d04121e47b7f16e3d353c2e33240aa2d12834419823fefc037613a860345ce5c8672fd439eef1caa0acf9ff70367555ce4fee5bf69449d5741d0c76680e2a43cf2293b601b75904d0ca22ba2853ff161d2bde92d802e2aefd156120f8a684a3e62470850b7ff899c64a1eb44ce00309f476fa39855689f9fd1092c2360cb542ba41e0d6a830cad5e099d50321e64119f50f83654c9290f186d02bd6f3759af035fa4100e8c1d1db535dcff5091e031a588f94e91ffd2c03029364f6b17687ccaa0629225cb180a640bf790110c5c27aa06f399a69f1233929d35b366d6c0b360cc3a961f0c9242bfc13b749493e763eb7c2c136ca5b70e78c562dc77f859ea677cc82172cf57d63e86419e57e9653a21f39a00616dbea4ccda62ab2db46021013b876b2f8b44551004cc18d851301be50ebe21f9334c0b79ec67cf0cc5dd529e2bcdfab5c532bd006a7e9d60184a209c3260bdf436fc01b071b5bf6c8b6d62adf2facc43a3999b412c497ffefcea321a11aaf753f16994811310d24ef5b4861e4b7f79d215f057bbc6ca5dc8ad3ec9082b5fcfe75b8661edf34cfeda27b881083d80a2f45689ad81039974a8410db66cd2afb68cbfe2e100724f1de9a79481cbe73be51a23cc6c597ae35d066bf37c837077911cc31c7a580cd3c5d2295cdb768eaa2db99f0b13f35fcc06a187d18015d4ba040cb2022ea7ccd07ce7295840e5f3ceb31135fb435dd2eb635ad478975056b456636968cb95816dad2825f4bc1a77c3ffe7e6a1ff2541db6394a6cd1a00c112594c8889205b1915bfa2f8abe524b0584a6c339fd41e28c2ab8dea524f0fd0f18263edb85c993b02a85fb1b5baded1bfd85f25f367d842826d1f04b39fb25fbac4ba174c05c40a66f8cb463d2dddd6c6e73f3781e28d173e3f8244af38769921592b9d4dc1e79b259202611e5ce7827d0db75dc0bee83bec5148e303b67ebdf53db1888c6e9df4821d29f4307a83c994b3d5aaa76aedefd54c361c40a6443ae9dc332c333c3a33b35700f33aac6ef6cb29bfde7a430a52bb4461ba4f6bc4d218d813f127fbc420ab15fc47d2c260632cff8c856a1f4c1fd4f52314b6dfa203c128d67ad43524a8acc26d9e61c338a59153e5f176d908ae76b6ef3afbf8253cc4c86e0137a669fa4dc9070645beb63503e0179ea8b5a65ecd74439053ea686399a0edec110045b242858f05c81664997f7f2b851a93b0e45c917ccfdc3aad1b1e8e09b3e9e0f6ab81da7a9441cfbbcf5018eee7ee304b236d393693f1bae8dcfb6f2cedeaa467b7d98df6f6444fd15fc2003de80fcdb13b267c9fd5d17809c20e020b9800564dcba5d28c21c0f6c6ad78622508c5f9c77df3a5d837b6eebae8064225349fbc576c4223059585be642ac5b018b9dcc640dbdbcca0be8012ea94bdff7c87c01309fdb7a4c00a59badb1fb27504b326ec4960f407322cf68a14539823d216d84dffd5c21c992ba4cee92eaa709c7bf0b9a8eaa545b65e0ff236b23c2808d0f10e1c9f70535d82856b44228241627932fadf27e4d6b518d987ef3c4ab3072361db8d2527acb23cf0cffba398a37296a4b3f4c0c4d087f5f78c21814a343feff4bdd4517bb08687d56625730d325cae5c05db30b8ffb92d5bc1e6cb6a3622bc72f8761e7c6e4aa2b65227a02f53e405d2f0e8ce3e52d438f7124ef950b32eecd451e03d0cc421b69d7c179ea450741e688b1053c33cfa7612522b3ce094753a1dd80d443253b5ec4e24e579d944fe41c9c2837811368076e3312087161bdf99e8c796c144983e2fb7e37e91be377f09ac875517f2fa9ae64acda5c3ef9fab0d1b749b9f2ae87a79cda60702088463f95007aaa9ceeaaa4258b98c42ab774a6e4aa899fde6d0aa388a093876ebf8601609480973c39f88181888a4500839b1bddc2e88d9efaa64fbe300a29f7b122160442165fd00585d862b00bcf6bd24378b528c30a8275b09c2fcc574cf497fe0b45d61db62132dd1199ded0540d133cdba7a3c1496b013f06fddcfd98cc6a42ad6cd91a95b26638e4778d73c6e71ec0400322a851c1fb71fee182bf99eccccb2282270f7055690ff174c74547021592c971f97a0156932e9f282b0428416fc3df4818d271e721bcbb80e761c85f517535fbd2944f5f2cea9959fafb36d45b38fff1b856108cfa00acddd8e4654671ad79ee7ea6adfbb1232e5dda4ce0427e01fde47c9b2d404bef0e7ace3a43781d25baa7fe2d3991c7478b428aa423af20b7833b1611ad4a4307b2fa5fca82aca1b4b340bc82c6723d643b4e3d3191bdcdb4457282b8332704544bff2e64787f4a0ebc7d0b1bcccf10804183b9e3276cf29a5751f6a69486a2b05ef55ebc50017e23d98f1667b6c35b3844cc96955ac6677db7baf6dfa6b820bf9a35e145749c63392dd34a424d061d9dfef32f9f8816debaca652a1174c692f7ad167253a7ba5e56d52256a523ab4c3894cb0aa9a3ffb5cd7a23aad8cd6523aaae52d19965a465987e14c14843f5bf2703a11153b82e8da384225b744d0b8752fbf8e0055e82c621ba775600a45acb31b6edab60412178969f1cc361d73d1e037fd8e2b71fc0b4621d4022c9f13b2ce1dca292aaca1c304c8360052249556eed27b224880377e4b2a0ce6c54f874a71dcb94a09992b120d515522cdb68d751ce87fb9ca91efadbf235c4d2c665c0ae005b8aa2799b014089522132a2298733add64e3f56fd86ea9c71b4259c376b9a39005a4830ab3324fc1f6114e1844e5a011c1b5609191bb77e109c7184b3523c31836a0b86987cb8718b2df68b68c3f6e73652d2601ae199fa8046ee27aa06d970593b85901803a1a3a565da5abcb8e45866fd7e688feabfc64eb7bcd2a747594dde66d8707f48cd7e2aab68bd512ca1a418c41142f5ebce93cb1cd9bac5c3a410caa1511bb2a254e09e233a0ba6e4f2895aa6da0d8169e74a6e2ddf96a678119f3c93d970c67cfc1f910808ce13eb958cb578e0b2e2bb99e8878b1ee3098b7d02d5829f49c13c2aa5bcd45a678e921b48980b75d24cce0c9984109dfd2ca11576413fc4164a4c2d8fd56f8081a68cf1dcf74ae63ea77b8e704ecfe5de562dad8de30ec72096c74172e0fcfe464fc2ea2092769a7b286fed8452fe300f1512dcdc29c8bc92cb847205bf31b2bafc373cef6ea0b54c6e407a625e921d8610699ec954945858a9ee51e9c9c929105664eda33505554c7b8db64d29fa97178b6980922d565ea97c4557bdb364ab542ae4cfa17c32caa0359bc5bde3782274e356d30fce4e5a1c5cbc41b9830f7ebdefdd4afb0ee79257be1138131fcbdc3ea06f86b421f5c35d2899afcd62c714a745558ec8ba24f06d430e3a05fdf1242f513cec261a65d807235b7ccdc853cd3928256d2b0381381855c10239b8603ca1a38a57434fde762bff803bca37bbb33643a6e2ccfdbf18ce70c19ddef4bd475c5d0657a8cb9c8abe375844e1b2c12aa2ad04a809d326d65cfc925321d1ddef02f9a5db8eb56b1fd2a3720f88f0167a23f72c56922bf5571209e19d41b5d93b9637656e5818093c1ca78e299cfdc4690a6816f714ba255390f77f3012f443b3c4a2c9c679b632ac389b3fa6dc21f540b511ca17efc47dc3198ebed5f10f952603c23e302bc464fa8634dfa4df4c0507f6aac2ae21daebc28b261f6f242c3dce2dd9c0efa349af92c87b98bf0693c751ce36a5f9439eebebdefee7e3bc889e7e3ba879bb429fd1e12eb1c98bf83f004a764f52a0e2bd124ec13fabe5d72af4cb209554379aa5d00249d90171e9bc2f5f0edb9c2b6eb4504156c3fea8605760987b9ba019fbb1d05feaef3db1417817ef99276ee134c449db3143eeb8244a290c84520a12fd70e8b2246e3dbbd364b97fd0d9a6a72261e38c5ed8d53cf485a821e545a6aa90c57f0afe09597edef8dd4077a5c86a765c0ba0fd67fcdd045db2b27c58414cd52927b7d0e0eac2c3a6b2d764646fea0912f2d73d95e55ba764d06cf38a408714f2c1d73408e73a9cc8e6978908ce9b5807e866104c901e7bf90eb3187a06a96f9b5a15a9e81e2c2b458414f849cdb8048a47f3d4dbb4a73d5ac3d922e39cb8bb40b62894105585dea12ddf26fc0404af2f08a0e882715cd449bad6a12ffbf5b147728eda41dd71d0426222e0c6454192cc65c10c81f3d6ee8f1619326ca243e8c3c0eb189397571baa500c11ee2fb5a76aad73ea86246c31cc667fc6cd6a586545e740c433326e9a71e34b1e4bf74bc3ba8e6456f0fa47e6552dce9d892e318bf82e49dcb848da577f92c3a033e494c09a6fa1549bf1d84dab688a621b5e925c653ae73f301a53a0911d7887ad604393cbacd57868d813a43d36b6604620878fcc33df285fe6991911adc81c66000fd699fe3df776cc66fde4e4cecc00f1210d20ffb7fbd8d9832b7b41cf38f8a37e734b808e844d93ee1d63a74be6ca39f00672c64bcea3c4da6cdc1ed8985bf287742273ea38d37567310b2a343657dfcda8b6ce4744cf59496028ccb1a80574c987ea375154925d10a19a5b6995f016ca09e926370fc9731481c160d6801ce71fbcb1cce2c853be4835c884d56a32723b790f9b68dbdf26c072a94bf50ae5035bc8961ca873d20d299bf0484a4cd1a3655d1f322cd49c1c6b3cc07aa752e241fbde47ac88d0c4b615b45ff9070db526b94881148a1b1883b599a232db504aeecaa525b2a565ec41c7aed15f4bbab5e36fb606944c45a71d616ce7ec113167bf32fc3610450727ef76e6f18e468c027b0ae06843e71909a8bfb452390428191cb397884ce13c280ea79434ed72fba9feee0405f28cc8416b25d7c4ad02b7c86f02e1f792485208cb588adf80aec6fe9d5884b4ae68d89b6021c544ba9fbdc847e42108d27a9d7df30d0eb221f91f56a1e916fbc9f4080f71fb7edaa454e0da0ad1fb6f1a60057765ecca4303fbb4c2a619b2657917cc68ff0786b17f9cf9a0715199642cc7224e5d96c78b7790a5690a38a667c2e0461d05c80dce91a168a0de83e4159bb31b2ff148fc4c590c40700166adf747fd6457e094b27ec83d5769a9fc4a9fafc57d350f57a4e1005dd2a75e7618052a48b36957c70391d7c92b421a8996b9b770a577bc6f5b3caa8cbbdee4ea667496f3c8b0815387aa43b7d7365175a17510e20d9d748f03053ce8106329302e768a5b36178a635b82a13c07b3690a02b27de1f1d4c46257adffc89724d4fc916edc3e6d451b15c4883be3c5b4b15b3dc9d4e17cc55b26f2528cfc176bf6c52e0d1cc1cd0c9166a2f28f31d5fe3063cc0d505049ed783dee6e4d938e53070e2b237c860df649ccefd200e1b59e30aaa6d3d589d663c3c63d137436809f8cac421fce0a2fb756520b3d0137fb45b910496d72886048c74af1229170d43207ad0127fe6bda5f0bcdc4f50c3bb0bbf4b1340f056694affc8d6d8a02c3e1396c2379d6746296b0fd6d3aff89e655604eccd644beb0bfdbd95dcc6336dd853677932e5d648bb80b4e25df379dd1d54e6a7027219c44ac18d698228aac82c4e21d5045e0e93e4967678f54da6fcb0ea43f5d861dd225a1edfa26f2eec9e4c4477d03553e569a389a16bead1372770f3ada157596171776d725aa10c8727a93e4cfe149d3f8fdb90fd35d6801bd7dd2aafad68034619b68d820ec14a3fe33eef78f5f41121a9e1c93d29afcbb36ab500023024dc209026260071740502f1487b45e0ea9be3dd0a2a43c21c20024b48911a8f1068ec3420777885f6f97b06062d250dacf6219a286a677aa3e8ad5acd59716d265a47201d2e8a419b15b6ac170896c1e78e9108ecaf3a810146c725f9cef840514bb7c2b7317bb4c5a76510c3f9dca8eb4096569acb337ea229203a126c624fe509d7ce70d8eef84e8b8065e2f058d4b2915f5ed07423887b1bfa050763f02dce4ec731c73b63dabea5d96e54fe2d635e6100b558925f6733d68af2a1e7c1978881cb78bc1f983e4fdb344bfb023494abb3bcdac212e3e68582696b8733da88b280104563d981c071069bc2f4f24c5ab7802a03ae1f421136def26a557c33504498f0df891436c3ea4745281bbcb3647c2234d0318967d41ae425a0165bcabd6ae1ac330d983a72c2ea97fc024755399cab01e943a81bcd982900b20f80f03bf0cf2b94442454d9358d0c8bce77335dc7b633ac58bc1470625527bd8ddb949a12dc1060b291e2ad3b3a1e4bdcb110b75505e1f68dc0889edfbabccbfdad58c0c2a00c26909ee01a633ad0a8139ce9d37be1baf3c2398f301cfd572f5eecb6837cd2723e34f8daa5b22a84aa247672d476e1143268c3f80bba327caf728280a49dcf98eb0d460136d3b096a53d80800055609a01768cfb602fde8cd268482c249d165b43617c45b00396fb8bbc11c154108234d5bb6dfa5ee10981efa1101fdeca7548abedd2469957adf3b969fdb8cb39c3d4aa0ed73a1c375a2a8b28a365601eed8cd199fc8be2117259dbb38b1bb316de3e0c6b0d35c468147d636657cdcd8641887c7937760c605354bb228f54ec7150036fa9a63685a64411000e49fbc845337f5a90419c089c0d7b2452138d78fbe81a434dba43c5f473c10be727dbbd4ea27b751bd3141e6e6f7fd25d75324580eb81a24d589a13bf9525b9cf385c82c9ff9f212b181a9c975d01956b1157ed40dc586bfb297a2b3962d90bca7da84f5acb287054966a356a8c1d9d0f9ecbe109e114c8413461fad0974979562b4935aa3df6b50c615b8bf3376b966f4131f4b9e5cd2b985225527d05ea4d2b81f26accdfd790785d04d6bc3f0f6b6a5011fd5d775e027786858937134ee8f4c1b343477e9d722647a77ac5a192a0595bba120c07ed28462bd88cba1840692554aa0bbbddfbc25d557ab43d8c412b1920c8fdc25e172c4137284a0b2cae5a4889550a8bf2614b4d68a0ea19496ab7f4a04e614ad8090a2b753c743d6f53d718c41fc43a48beae9a83ef9a2a603af6a89c405287b333a1c4c812111ac7273432900113f875e26e2021219d0ce53a037c60fb82e4abaf09192d7070c6b362c760fb8103f4f2505b6fcf2a37af180660c713aac5a5f550fdb842bf775f562a984dcbf06423aef316d2402d234e2303ba9f416e8f3e1c50794d124237c166a79fe7100dc58c0ab0140cc5d31f79dfa1f199ef993e08b0a08e5f51ac2e90666fa33997547301512ef901fbb298d8cac94d4664e45c8971ec2f8534405836273ad7c107b60399e2b8834145305a0d32d9e59bde4780c30bf4726baeb870176a24bbcf566a18e09710b38726078fc54e6c1d0ef66e2137b54b816830da0390d714d47720a69d0ef2d1da6f4585ce6587c0f1a9b0cc4cee12d34da58fe11acae6b9fc799260560052dd63103a1cdfacad44a09d76509b69db6fc2b0fb9d577c8eedda9044c19a802beb61c6fd850c70c32b05a9e6160d1c58ada2603d7759d4b236946971861f7cbdf3b62a160b21c6ab1ecf8373c0e6f7ea2fb7be51b41bf13385fdbb111317c5435f902fa59999649518e656be2dff35b8197bf1936435c052d23a0b0c3ff0ff23f1c58211c2471e4ee9ffe3bb973157bc705de18905f59fc8ca6a89513ec12de2b80ddd31ecf1e3ad097b41baf14b1ab6fe012d341281d5738184effcf5bc957ee0dd9899eba1c9fdfabcdaebf065e992f450c30f76ab3666348626ac562886921aa15af7edd92b9697079aafde5b64f17d2069c3b25dd9af92465ba007529cb2a5d309f5c1992a47267b71d40c137563075cf2924943432dc6cb52ae843e1e10c3135be5869844cf70beb90c57a7170f210218088e614a308fe39be07ec9436a2a5fccd86c545d71a9083182195b2872d625c03adf4b2b3585d8d37427df7abf4f08071cae02f90b3c3e32c328f1fd6d49676619dac3a3da5d53c03b1f219ad50eab0d1c2e57530b0cc58262815f76511205a87b41ceae148f54aa52f1b5a4df5f13c9cb7deec80c0168b470e20b0220b48050a1aeadc0c457e14e2187a3b087f647ae0bd6d44a418ce126ca6d2bcc4d59d5bb8ddf264db1f90eead3313a3f7df7bb5adab8ce09f0b649e38465a476fa6140155455b46807991a62a1301115129e580600afec3ea58c1b13399de5d99c2b99acb6aba06950aad898a09d67888b543e2a85a4e56e993c1bc29b6494d48bc836eb71b8c06d7aac4964edfa1167fdd86df900d223b28360d505f89d4ae3f9ee8f558c809ff512f0b1392c9424d496d1f9b050b093a99a90a84d46b06a66d82b590cd064998286b45e5ccac0ad2c0014f0363c131e70abcdf450a6164a6670fc6b8fbd3cdc654b6fcbbfe33cb58ea8222f7401cc6c5ab11287eaf0534c093352dbdce337d45607107b71d98edd034373c46f1ae45bdd5d3fef20731a9647bd37f87e5f479aaa59297af30b83e845af1dc0d2f19fba82ea093f3def56f7afe23262a05674e1596493adc4ff8fe73ef085881cabbe4b3c723aaf6254dede572ce2a11b77aeb188ab832592660624413304843b00ef2f3f8e187541dd2e5bda30ac67b2700f25e97f24114e44b8d7d319e3a7b9a90ce1fb4522307c6092d7fa4d1370b27fa5651b0ef630aa241d9c85f15c9746eaf0c9faac74f111c55cc4796ae80dc1e199eaeac7892f994ff5a86f8df61c10cd865f226114b1841945e4c850d33b55084e70de241ea773cfca4c671ac83aedcc695265908e58cb4310c663807a95e3bed073c99e3093eb21702bd88dff89f23a711c9b8f29915d5cb4909c2b82bb17585f6d4423205e06fcdad0c4045444766ceb6728e99ac6101ea0a3cd198a111494a2a2959ddec7f7f35bd8cedcbf7cd2bbbabd3c004b15e00e61523702e5f02467a83d674fc0a4d6a0ae66fbc27392d0d4be657572a91b30c563ad10bfa9183da27a3c4f36a9baf44b78c438710d747028e8c79faf43c250f3e1f6da1ac77e1fb3f6c42cdf21570fbe8d83ec011a06d3683ec8a3fb0558c633cd617b41b1e86017c896b79121a5063183cd0cf110b1df0162e74793b34a1dedf52f106873fd1f166875ed7ddc795550909ebf1dd271af900d4ae13e6d053b51d70b878d31cae4e1bda633af66928a9e5ea530209f9eeda312525582f28f19d4c730b839c31240afecf58f9067160fa3a11d38b1a6dc3c06450641f38c1deec5e21c65097d1257353e37dad0bd568c949715af7ed3b7f316d4b0adc2f468b296bdd2aabe1cd739c31d3d50c50672aa28ab0bb0b3f18f3631c2f188726609bde54ff9584f13531bd51dd26411ae6c4859f549c1ecc871d962055c0720c481ab47651f70ea484bf302e3042e24c33b152a65deb395bb0bae1d3847c85172f896afb065fe788b4c62e8788a54f2eff82a0d384d0201ff2f18f0b6e0d111618990f7836bf0cb969f8e581b285e4d847ac86e5769cdd0e36c8193919be16c9840263e32592e23247506cd361a7a14b1a320a952fa162a3638ff85df313e1036db8658e9dd3398a7bfb798fd28d0e0b0177d624e309b31119547ccfc2ba776ac0b6157816eb8ac8c2c3a065ee9e02238452c20c5832a816618dbae0f645f8927c6e35c75dd0c9f62077b3c637c60822acb3a6d7050960ae6cf14309d36ab2789eda120a3835a6e31f86074320a8cc16bd5c429b30146d9e2e385062bddc2426b4afb418320926b0e1ef90adc20a01de8457086714b8d7a43f914f02b03a15ccd957d692ef45377897f761103959bd700889eeef1bffcabf2da52056ad191c52b8b5679e0ca3b3c745c29aa87b7cd077ed07eaa0dbb89700e1036cb4b94d8065070feb3ff270439617b90458942236df1a4007c3a45617502a00ac045c2edf53022baf205058d1c7f8dbe401e0abb24118ea2fdc25c6ede8c35323faef33677fc0e319ad495dff9df346635a05ce846914323eb42a0271d121852115cf19177dd91f9b7cdb00e00746a0b6c07d158c58ac5911ceba1045268d0f60dbc69aba31ae289fcaee274759426d1a6927cc9749a0af9edfe77783a2cf1f9c8110a9469ae931fa02bea5323c013ff589fee4a97d4a8ae6bdc57084fb75a81eed2765b55a2629e957af19fe8748cb7124729e5a2c3e07994f7b39d25cb97dd11682754620c73ec709f82e112a4ae71d5d17a98b81f03e0dc0d06fff38dfa1c21fea56a80204a5a73b54aa5c700d8e553fa45889888e420c3fc567a2863aab7da0a1a7e288c4f57ebeb950dc8ea1cc3d653c301431d1b843a8cf7d24dfbe119a0a7ef0b6e006efc2cff96b199e5307605e5e9999301333a27cc247935e0e07c9e8425ec9b4f42fc9e922875acc336417a350087a99e0af9b4737e41a0443fc97af50a3771ef272edac825aff4f04188fda685805f1a5e513728a589de19fabf9a1edd458e58f565cad79a2734920552e793cb759b71c223c360e16966eeb028dd1e0f1932252f677966aea6e26b99f567a8ed944d9b8a8b5da141182a6750287b7e8d47fd639313099084a5abf056aa728f04143ff45a455c9ade90584ae6957558447d2acb7d953debb886dc60a9ee9c36f78614dfda573c49227cd67ec534da3106f2dce77f283eee1a67be8f4c80d62ef3f3e8c48a5e3524b086c0c5d8e4469db263ee0556835dee19410c677b51ce69cb2dcb3c8f3f0ce33b2ef5c7fd7d22208f89c9f034af306945a401a15513ad9706fde1bcee2be37dc9bf7048bbf7d4fb06e1e6f726bf6ae7debe37afbf85fbe473870436c65644090ebb304c597dbfca1b255418cf7bd875bbaafa140ea52f738f6e2b8f73442154db7b54d0821ad2564cbbd030f09e90811096030028f32c819baa19cc4a11a584a77d0999e2a5d920fd360a5bc94f21c007b9ae18392953bd85d1e25ef6ac96de2344f98bcbb5b0c2aee5adc41b3091e6b72187ac2769c076c977293d80d58393c7741201008e401dd826ce8a06bad3dca43a09b720b0a8568604d76d8107413d04d2eabc5414a4cae0e255a2cc14518d1a7b6264fb9b526473988728bb0160729798ac9534c6e1fba384c6e0f9a844e0ebabda1cbfac349088f262807d99bf2d04dc92929f8015d44c90dbbd457e614998be893e7fd07a0e04ec78702fbfd53b3252827ef9bfa94f2966f0ff44e2b1033f41e2f904d0e6e9bdc3a90c9659579a64dae89c9dd5ed6763cb045e0a0479653c83276035706a79c1e0a3279408bbd02e5e49a5c91112df62d2e8263c2f641f8137278ac39125b4c6e9a0774a9b97b302e220d76ec6645c819294b286a3ff238f2706114423776fca9dc414f3c596b28913190e5c19a307bc07baefd2eef77943b2a91511eaa38288f00831f19fce7e171cadb35bad3d7e84eeb3daf51ef69292f4aed70a85071dadd6b5415ef1a936e74efd7e8547c07bda5a491f2191a7aae4dc13f4c39002b8f00a4874440922c19003ae048ee3e2a92e5518e00839c2cc119ce5147de41330e94cb77785c01448abf4bf90d9e0a04ca25165b9c4728d1af37c24bdcbd6bd4646fec72f5601f6ab287495e4df6bcdc977d3d079d00293780f77a2bdf57c5411535088949f4b2bb247aef1d89621f6e7c5f53fa1a21963559892cefb9e72536664ee9abc0252eb0de651029f7308e94538c63f4eef28e8d77d09c82b7d141e7ea0fe0bb6ff5c608cb157807cd294ec2db0d7d5a81400122051e674641a9f56e2d76e00df53c39d83d207b8018bdd777786b71dc41330a1e3390e55b6e2d767907edc69a2cdfe23c49b9c463df87c0cae900949fe0c820be9cf2ee9e7c744725f288561a2707531c046777bbcf4fc56bd0abc01f26dd08ffbd46f8af9ba1dd1ddd1364fb96533ed39e14295e4fba41ef790d9ae29e9a5c31e986e7f5353c58b698e2e4a07718889953308e93ae374ef05893e9c8bb72a681f072ca89e7e17107fd5e3dff3aa71c940c008f72503ac0ca23c0e026a3bc3b08d270ecec7978efd63beac8b5d6d3ed9462afe47df7a4b8e8e13de2d38636b4810db9bee224664eb987d61b9d53308eee289ff507f02828af3e74d7e3f13c60872917654479056ab2e7297724d193543ce535996252e85dfadadd945bc37bbd8a7ba3febb35e8bd87f706c5de67f5c1f3d167e8c998e2261fdd71091f6a32c973d28dfaf0352aaeafc91e4cbae1ddf31a1ed69147d053e01d34a3dc83c71d347707bd26cff44c8f3519e5339d72673eb932a3dc93930bdee48e4664d04577d491412fb9a31219f4ac12faac05a8c9a1899398197cd71b28193cc8f3013f3f0a57d8ee640cbbee7e0ff3bb5befdd20ba7a71f465eeda496060ab343c213840675adeb11bb72c1bfc2808565ee6f0f5128fde6b9fc279fb1127e50e9ae5b95a43fe88292ff16881ce1fded1d9c31db64010eee0e72d866860c32b692838c34d361ee10f05d689569981951f8fb2c4a4dc0a1ccc158bd56ab95c2f7c04d8156c523452dad90348a342582a956a82467ede344a452a954a6d80467e0ae9d38b48969d1d8dc7f3478bf3b3abcda0dbd4f4a3fc26afd8b265cb36995664098518d890476baac95c4366f969bb25846a40042b468916694a09d88f4c2f446d6600447eece8d881ca3209221102906548d48896545a405696c0872ee845e4eff4331405c24ab4c8e3681c7db4d6da10de8181e40e0cc4461ca1237fdf95a0a8d1888e282acb12bd38d350d851d24e8ce8d38892fbc3238e3ca5d8e2a767f71c3bf2c4b47b5ec6b0bcfe3801084660a2874e122a27a6473a004c0933dfd4c8d6f39e494db0fdb0f4f2bf5c9672c63ccd4b194ba2b29b05e92a0217c8d9b2377a0f8f73ca7b322ff1498b13f79cddbcc4a3d799a4cbec9a495b0ca00f33bfa4697b3c9e6f073d1be7f1d06eeab947b472e436496dbf84f0830cf264ce0134eac5b9179734ff995ee020a1cf74c8043b4a18f701342a84492f2e69422126bdf88bf7a7e983654c2feecc36c47ab06c4bb71819d3a9c924434d4250940c14ea14f3f2181fa50ecc47b9a3c3c7b95ae98fb2d6f271da881fa7cbd2128c8f92e6f271aa584a1f674b45e5c5d469b1ff02e770956f5cc8e12aa1cff4dfb74151f77d21280adfc53dd31782ace8240545fa0d9714c5e22b2e29aac571b889a264fee2331425f3bebd969676b8e9c5b9a34ed7868c981d6e8cc3b8a60bf3725d6ecbd5e12cb774c5bbf2c294031655f0f1158296faf7daa0a5fe5b5c494b38e071be242dadc037e071b6728f700a1ee76adae416955cb9236b922675ec9c3128d859962e9610d5d025b81b3e2580591a410334f07e98e40c1b2d5221244d891c03b051809148c5d38f68898e8cb0414b7434c256ba70e7460a7058a6453a710f2d46805e034648172ad38349ce68da1c0c64996edbb66d74d6e29c60a7826f9b1aeca5199c9b2ad390d2ba6d2f4ee691bd3c9c2c879006348cc460a3906d3c5adc5cb3440ffad8d5f0e3c813724d14f8101e5fbe83f008f25ef198d23ddc66e0c133c8f40790276ed5e216260ac41c8b96e83fcccae336f338d636eb38d63663bdc8e3369bac973c6eb313a70229d26fd81be249a960d5278f06a4c8a228aeebac1d8d7e8ee5c538ecc138d909e416a405997e534d00b090301f90335a4817108840a2a4c03d81b29000e09ad042cee08848171a45a63fe6c28c638274a1dbb66d4ce0a4c045c17181138307a790981f23588fabd96808cb9ec7f3f9c819b3076103e410724698bd1321b5903df985948fb20cd9b3bf61d3c1107d0aef9d883e7df75e449fba7b7f409feabd46957852c708eabd088aa2f73e557286ccde87a0a8be779982f13853d9bba41eb81dc16e37f90c7dbb0242df40cf0035c119e883ee59802c79979f434817ef9bcc6e4779069e4800e8fd0c844e31c9f31305f4517006406f4cf2e020fd138c01138c0111b6b4e49dfeca2ef5903dcfbd145e88224523699ee80ed2d0fbaa8af7177286e7dec1cfb599bb1256852b64cfddf2ac4090ec678fce0304c9621f3acf232d7a9faa16bdcbcea66351d4109d0d45752e59f2ee79dee786d9bbe786f7bb5b8b1ed1f3f97c5e1143b4e87d3b08ba210fecea97bbef7eb92b8df9b0cbdd1014755af2de757634eadcf968d10b2b77ecbe59a667b923bdc1c632fd8b3b8639dc31cc637d8da054a6577149fd1b2e8d64954b6aec43e70c561c0e734f0ea355dda34f2b4edf36a04aa3b14c8a2d9fbcc4e4259586c9c51b8303597459e47ae510c490a4bb4ffedd1c261c582de650f980f8009e7450d6b0c5f58188fce1b13e874a06df3357fcb1a4e88e4464d14ab3b4a95f1a9cdddff77d9ff88b2ede8ec97ad267babf165d5644cc32c39bbef02f6118fe2df6f7852c2a8d96575c656eb93fcc4cbae82c5eef58934999d4c2599240ecb3f45b2aace5fdb1830104cbdbf4f972984f3cbafcc3b8c25ac4a14325f71be3080f3ebce2c1f0f61b94f586e8b56f381f5ea5fbdff7b0bf30ec8b585cd602bcbc5ece34d89f77d167e9b7f44da4f741f013cafa8378f0e115ffdd7ad105df77242287f7ebafbfafebfd44074561484426228bc2abd898f9e5a23b821771890b2c8873a8b8f856837879631c2faf1887e9fdf0e65019419c4325bfe0adc5cf74166d828177d0ccf2ef8d4718bcb9e01d34b7fc6b7903c182c7995bde72c72572839fa4fbb55aa4f8b2de50c958874ac6dfcac1593b3cf8d982c70c0001e20d8fdf77d0dc9fbdf2eebe15e685c0768b5f095fef8ae98e4464d369a5b17230c6c70ec638ca2e2ff5a2cf0b82738e3208b2dc0032b7b460d3596edfa87766d9f5b25b2e9b85e5e5315a5e0ea3be1c06c4e3f3cb5d5e5e0ece1ac45b7cf96dc89795b3f8ac21c6b17271058f35b95efc0c35892e8efa0329fccaad2c31972de33225c65b4c2e302e7bfede6670871857b6c882c767108f3954581ebe3461f08ae9a5058f395432cb4b218ef022e9a2f85a83058f9d59aec341f0734ed449c60e3131fedb59193157b6b8031e1f038f2ab9258337c564f02f3d64f02de04597a8cb3ec968798ce831bee2020303854f786cc953061e63f28cc13b5cd9620cdc2df030b0098f1d0c7e7169c1e368058bf0f8d259aecce13accd324660ecf72652ed5b308318e7af1b3fe40ba78596fd48b6098415086e19d7724a206215b1c89c83538798657fc4a8df062783b4ff12fde62fd5bac04a82901629f2b88c725b278160fe759541ae2cc2b5766f1aeac5cd28b3b0e91593c873bd6bc328babdc9188cce2f5d5a70f8b2a0d1758c6e297d402d4649cc4cc24d2bf569f48ff4ebae39649ef7b044992c963dacc1e2fd76c4d968c4999d499d1a66aa676be5125b7c4f4f0f5afcef716b1efc426d7f03388799074c799495fca5bfcf7e328df2bbbf42bbbd4e2ca2ea55cd933f4bb279f17c777994f2eeb044cb9e251889cc39451cee2a21c871be27069a0bcef98432593f0c7027fac1658940781f21507d2a71578022a39c5e93fd6d722a5e814b2dce2e8521c1b32a7c041525e5283a84e93829750a17902e51b4eabca506ea7eedc994984cc925b716e7d55589f40789c19f4daa20ebbf1984325830e1e046f2581057dacaf5c713ed3a1a87eff3e43412d6b0d53fe5e714210045be04d5472b75a5471884baecc5688fcbdef680a8d1f6e3c5b97648a69916e48a8affe58a34cab9d9025fa1bc07a0005a5af318aea567d4d3294208fdd1a796c5add9233a6c7c6e3a3094cc8b46f408d600ee01cc420abc8b4d2d876ecf3d82f8aaaaf8ff57d2c233831853cd6174ca70979fc58edc4f77ddff7b513b47b90694391691b414a97af4551a351e52477898d8a25a809377d909a1dfd60cfb69d7a3cddd15651493b05969e7610903684606914a80642274cce871da7e732cb74dbbccc26254ecd996abaa9a8a7a7fc94c966ae14edba999aa999ca5303a97102a1ff216daa45558b29191919992c43519206169b425050db286a0839922331cf21286a6a4096e83d30021a38674aba8cc036a6212cb842b3fac3a6c274f290aa993a19628643fa1f906bb1e6b98e3e75ffa8454e081b5810a5f71b3812d8e9d1215db84f1827b33ab8634ed6f2111225523963e6e9237373e581cc6920735c274e20366a32c66aea751ff4b4e7c97e78fb9e962dc9b0853ee5ee7977478b215602eb6891d3a1449fa40d21a2b02d5ab01f9e325ae2ce79a6077bb21058cf3d38c877f05cbdf13988e3d33dfc763fe1078f9e273173780f7c78c1bc7de7bc7353c64d228d92349cd822d7dd314551367450d4644d55e63828bc2003ee833f6ab0e349e6e6aca4041fcafd83398e52eef3fe70dbc66de0e40eca183b3d978220081cb89932184390144d8c162c4c6ee03749330eef9e53fced1e99bd7be8b97b97fe737150ee7affeca0d9c3237d12337fde719e7f370878957e9f6e4c973695ce881d256c663b07059254f6ba16378bbb36d8996fdf665adc0650b31ecfb94bef5b9fba163f18f4ae0d81edee7d3a8a9a1162e475db1b2569b60f2ec0670dd6b36dff24b1a329cb7fbadb01c8837d3e0340eed4944de0d634200ff62df6b6fdf3ee58de836364e44d2dca983c32267a3bd36fdbfb3132dd9458e5c1618b3472c3b6035b106a9e57a2e2868d4dcea8f51634b0833c7eca13fdc00d582093736edb9c1bed8d7be7a1f443bd8f877677e0a5dc3087e766bbb3b43b7a295d28b61d0a3aa4031e52993b38a514b31c7552d27431cf26739e9ce165ae9342e6ba2832d77121733b99f352d95365eea09c52525090ed332d434bdcfb76f52145966991dbb089962a0eaca4d93e76afcf9534dd8ba2b6162d71dbcb454bdc3d1e4f17eb7260997bb7e3f168544aaa23d227390421b432673292b95847cbdcac8d5d2d731ed7108420cb63972473367ba6e925d327ae73c92840218fe113f2288770df6072464ace9099eb5c14b59dfbd6a21cf7c9fd23b063174362eb62d565030b524a6199d22cdc6d48e6369c16b9f791706f913bbd486c797b65ae7117ab358865eeefd3d8bd3277eeddabc35169d44cbd6daa1b64026cba7d5e723c58991e6664748c18a24f44a3264dcf7e020a20d3031172081306f2f6eeadb7d30d877460a7ec2f80f21b0eac9498d6a4cb1481fd4841a27a9674e40cf91bc420e2429ef313059e93d6f2fc3cadcd367477f7a4dddddd3ddb14f32d8fa7dd4df861b7dca41fe8b7678a37244c10983a4fe5f3999eb7f1c1cf15553e07b18aa7ebe4c7f38991d8f20e9a371e1c08799eae43d087f9fb05f95cd2a874a9499f13e005b1300d967ee8a6068e895fcee8165b462b4e1a85224b938514e7a5e78a73c47181cc7573dbe58c0ea57e8fae3fb2ad7ea915a3a869e448eedb1892dcc721f6229681c852ff26f75df0d809c9fd153c5a9cdc43721f84c79be0512c7915c9fd15f5c54396fa3d72ff048f9d0ffb0059ea0f4096fa499058544e47c416c9fd18bc834a977a93a57e0c3c8e5ce0d1b6e43e09b3f85814061e2d4c0f6158058bc496f2d1e63658900d165c834d12fa6cb5085b9cd6142d753b560db6b6d34a8d4c39e0b9f304fe0d776c2079ec16129bcad84746da63a43723cde9b1dd647a13c69d4ac38ea75ddf06ec16053aff69c082b42e0a2c5c9cbec7705c31c76e8d74649e457acec4604134d89916b55c64b02b97f5068e09d04cfae1fbfc94f9c349d0fcbd6bc27eb85f42c4cf7bb3833b76f46633043fa3f1c07ab3163d2322aeaa9a6ad1d23a9616d9a7d03352632dd29cf90f043f7e0fb137f36855f5ddaba979fa1bc48f7382de0c3c8ef92f8c892cb8c584c58707c5ebd1bc9967c49bfdd0227fa1cc9e99bf4f15ca609cbe8eff9c609fbf7f1f2b8cc1b8847e82dcd2ad6fa55be2f8b168bc7ca62dad4f213a6a81f1661b8c9afcc2e2a29b43658b82a5b5cfe2f64d0d99fba1e4c16e455adc8cb448379d18bce96c321e2d52d44fb5231fde68b32240ec5889c86060606058bcc2624e65644c2651fc47a3b1fbf0181323610220b9780c18877118dfd735bbc3f7d5d787636edfd8ef39e654e5639765c8c063ccebabc2623ed6178e98cbf84cb77c2d2a78ecf2d7f2ef31b7c22a0e8dafc262be8f31b8c2264d4d55958c8f2403fbd059c6635e89f489be7d64910ead338ae2b1cdb460823e1d69148f8e75051364fa8aa4512f32093bd223d3571931dfac40cc6c6531a72bf27792bfad51f5f5c5dcc662ae95c5c8546eb7de72146ef9a9e532f0e70a764bbda64c326e692f63974345623e9a7215737daea35a81e4951477a3b55853b4448f82c70e45058f23141e7fc2a3787a0c1e4d31a930bc0c3c76e151b00e58a5a6c2a3f028863fe1d194c79a92f1988f15ac0c6c6bd8d25afc54c18e73c7d2beb993e90d96774dd88dc826ebd37719e00944812aa00e200a980204e74e9f627072e7e4be0e781c11c97d153cbe48eea3da48ee9ffa48eecbc0a34c1ebd592b7facbe69948d8997a2af91e40fe300f1563ffcbe78d135ddb15b4432fdcb1d5b481ebb3576ceab5b79acaf517471476a335217958d9b4da687b9e3665d58454e1a1f96b1bde5397ff04e80eaa0b9f18e99dba6c513eab2d2407d9fc964fa4c9b724899949d7410046538e7c3db7724d52741aaf8c6277f3fe293c10f77e148161f22b1e3884ffecc200ed2e2b31e40c25260ca6d42a479c2057c8bcbe309108f2b07dfc4590eb2dc6a819a04cdf52cf7888f8d97573cd6bfdc86cc151ff16901fbe1e549d05c3176992ee95bad41bae97d4d0779b02e15070cff75bbfa06532016e62eefd60704f6fd7bf871ceef3388ef38e6fb634d171fbb18dd92a5f056587d559c22f277f05fa501cec65f4b0416a74f313fed405f4e3f556051b28cb5218a0c83081988f0e26912477cf277295d8e986dc82d77f914af75751d8e24f0495097964b02f18d2ecf1ff1f9f0119f0cf3246886c15b8b2e589e0ee38e76873bcab8a42e6c919e4eba638e5317c3c5e9da58cefc3e8ca30fd3ad166fbeefdde0ec57eeb7e8dfcdd1485cb6c6055e825ffdbc39a4ccca6cac455108823504bfb7280129cb38c4830d451176329dad0f1bec9691d8447d6160fe72c18b44f156d6a710d7faad4f2fafeffa247ac5630e29cbe1590e86d7b25c1b03cf60c38f3666733ed3f5553f24cbf86dd78d3dd222b530cee38996e9f29916bd8afe72b0de966b6945ace815477db9a1cb0d736a36e6a14cf4958f221cca62612c94d5fa54f1f872d1e9cbeb47d15bb0a589aeadbd5cf4d1d25e9230fd884f6e390e11b6b52348ec686999de745bb3b4d1c4e2a338dec5ed0ede8c966eaa8b37a3a81df0d8c5c0a37581c711c99bb1c0a3f8824793088f32306e106df30d891f5e0e5ef4ae354c4f82e616fcdde5ca16bb4aa3d6b8a68c9829ca72df51cab2e7c14899cde9d304a42cdb589f584e6f655ea5c1c2f2f9a47c5e537d5ab9ecb69509d6b57249a4cbece2208b3b9acee2a0e9e21db72cbedeb125d7f7cbc72d37f872c1cf3bfb48b663b7ecf8b1401e6c4b9094b7f82726cdb304d10293b814d8e7c3b87c05c90c261eeb5b82982d9734cff289eb2b2561c06097956fcb2ce2955974c77eb1f8673a384316d7bacc604d4198debfe953db9675f549ca0cf6965ddc132b5b36129ae3274c76be3f68b0e1c394cfb4e992425c5f15a74bf45f0ae3afa120c313ac5052067b8f09160704facff21b4b54198cc14d9f60f5f5dd8a73864e0ad6de7efc585d778614682145535f7daaa0518b148905557ac0fce3421e6cab2a0dae873401c11ca6fc89d7e6b448651230e5c638600ee3dff7c56499deb4483f2199b66cce04400c0e647aab04390394654b24d383381304bd82196c39720862d042ee9b22839e8d3637a5273cd831615fbc63c28212a42178b70c6e21783d9914c25c18300ef379610eb6cdc4e1640cc36e9b496d68ac60e1d17620ede0022526850cd309946a91aa643ed375484ece905785e10a2383057f9516db851b04c318e696bb9567121a837a48171ac42641cea8c0cc32a760a6ef9bae8b11e352c6108337b32d5aa2e23b262c3e921d5a8bb41ea9455aa4f5936f60c2e6f08e09fb626f66f0f099b631f00bd6936f3818d64bfa01bc0ed701e7310895831cb0a9542a4593f2997e19421a6ab994e510d090842ceb0f200e9282519ff1976b51d7ba76505c67dccac3ad33dbb2378d4a395803fb521bfc52ee07a4068261b03297a160880d699136613d20585aa2475db4a2d1e817455347b98dfb70dd0744ea77de32e88474a1a799cba06c8d35ab0cde1382adb1e54dba7408d2e817d83187dc0fef49d1f0f0a4689a38cd13a4f0328f26f10b437ce38506781607bd233f68580fe953fda928baa551d4b19425961698c5ca12ada514452ffe49837d79a8c3479b5958580e76f506e987becc65300e15af98a2ea4bc4a315d515d887ce95488b242ad8768d750af6fbe8cd4eb76f5aa47fb99de2b68cdbaf16636e0f69917e87dba4db2e6e136911fc82ed7cc36535e16e7d26b02dbfa298432ca50885c5faf2667d6a39bd67a44f2c4e57c6d168572efb2b0f632ea72e1f611797e380c751ae29170bd654e3516cb92c30cc1d4d799e5c74635c2438979acaf401e2d8e5d194674c8bd4d4e27cb784b16be9d39580e20891297726d81d085a7ae877bfa1db369916e9bbcf2c623f5d67479df478e4f6e1b80dcf083164880d299319652c017d1a372c43513304312338d1cae328c7b4c0238fdd96c4e324e53cca79610543a01a829fc7512ba9b5d4d212494b6809ed3c2764890d55f0f34061c89650ef032b0dd94a41e14669890d816a087e9bc77994db64b771d4db36cedbe8e6516e33d21db1231e3d7ce8581d99102cd66824d39937f9c4663a31168bc562b180c8745c372d20ac1f39b121309c9710234d85d091b1562b560a1419a193f4cea8070f588d36938d4632323019980c4c062603eb24301e3a331a0c06bb71bd56b36602fbc06a437692740f1e32b4998e2c0683c160301955ddc89fb5b291c96432594b26ca6432994a66b39ad16ab21d598a87ac2593c9643219111e2b9b99d40e6da62393c964329cd902856c0907cab75a22efd55ab54662ab35e4955b4344deebf5c2f9311a22c25eafd7ebf5552bf450b9a86ba7e672b9745c2b9bcea6eb445174892e5174892edac3e572e9ecb854ae998ecbe572b95c42543dba34ef4314b38e4c1445f1e572b95c2e24ac5a2c1b180c061b994c26980966829960269809b682b160b0144d55b381f980d16030180c061be28365b2d9a9d14c31180c0683d580f278d15eafd7abebac35995ea697c9f4a23c5e9d35f9bce62cd710fc38fa9abd5eafd7eb8593a23cdaa44333cd4c2613ecf57abd5e44a036b2c55aeda86a3bb158acebac8dcdcbc46462323236d4e413b3ad9d5a2c168bc56239b487cc9cedbc36929191c562b1580c34694969222ab1a010a4dc16aa443ed549ad5bde89a752ad6aaf8da360f8816a5ea8d2da56ab99884a6c08544390721b9176354b87b704adf96ca00d280c884bc8cb25a78bbe58ad944f949f98bc4b42a01355f5a96e5fc95a08a618e70e0d0f263edc9d891458c66232e691b55c55e1cc28b369be992b28743d198c51ef4a9a3e4263b5d8ec2228b7676da4697da46b2110ad5b0f9bd5046fa768694e1d255a9c54d674c8d2bcac4d9aacc13c359ecd5b0328e98bae663a729332b5b13aef03ef078261583f300c6b0581ae048142216b4b449b48447b8a62ddaab54d8d167be9bc666aa7e9c6cda674db38ceb3711ecfe7d3759fcef3be0f04c30f0cc35a41a0d09ca15038ed2c992293cdc484f63491272828a14c4931da4623da7334f35c91e74d4c33cf9c624b9182f64cd1c98f07a5033551db498d5a362b9dd6111a8dd66ab55aadd5103226536b34d2a1e9d0ba464ba96c745a1ded088db693b2aa232d0e41d369e9e0a048cf58b2271921b1475636233a848c8cc9248aa391ceacc8ccc8111e93b5aa3356ed13825f2c47a6a3d362911e62d42b1dd66ac54a8992c0d18d488c25ed01e43f447410d93cfa81b5593b3b1b916dd29d6d67c74337222b5a6279384cda28cb43412920914f128bc5622b1b960d8bc582c162b0182c36639f580d3f8e72b18f2c2b16e36a33f6a9d15a0c490d4997e6676887c1603bb55a6db5aaa53e5116442536345bf2b55a113aa1129191d6aa060a45253604aa2128d32932a335cd488b45cc5aad56cba6ce4c44251614825fa8ced510af4f72882d1199a866aa996aa6027d60e8b166abd5ec470f1b1f2c1c586c48bf6889b55aad56ab8e825249a31da9a0908a4a6c0844f32417e3682ce7c4445412ba710979e170432c48359ba966aa996aa6ea54447c9c5cdaa345ca81610da966aa996aa60ae56fc67278a5915caf87f32c48a552a97a9c98884a6c085443f0e32891ce46a552a9545df3a160cd488b4a6ca8829f7792475a2f21ae9b165b2151890d5123f9c887844d721cdd2847e94637ca7992db368e7adbc6791bdd3cca6d9fa4f40be946e9e6714e804259414a43ba51fa6d1ee7849437af1e020bc2037c090774bc826e368e7a3992a6f646b3d11b57a5b01687b427848294a04ff87994dbc0facf2568e3a8176e073b9ca1d75b05e906aa21f87994db5aad56cbc60b8794d890c419922323a253644583c5666b345bd975c3791f58532d1aba73b522d2ead40ad62ab9f4c625e485031b12cb9111d12932a3b58e0e2f7442ca627425ab32699213cbf1c1791f5857a11c931a8b5503e263556243a01a829fc7c54c44251614829f17aa39322e27a705a445d68f16bd2f04ad6aabdaaab6e26696b9e507863934544d44253604aa21f8792dcb09a3a0a9247d926fb156362a1d9d1d1d1d9d6ed575d68e46bf28da784c27a613d3a1291d938f6cd6d1ec4827898e8e4e129aa2a579d6ca466563e7b158ec073f58405a37427060436239363aae57ac4fb2b6aaad6aabdaca66142a11c538ef03ebcaa6d654ae1aeb070b48ebc615821f6c884ca773625f4804223323b4d94c35a3c974288cce549f248f4699f4e893c8c6c7aa2bf809e168ab9ba966aa996aa61ae5d96c369bcd663395f7fa5c2a95e8ce5cd2dc9dd9fb40d59cb12ce74cd2fc68715256d85aa956143567abd58c5e9a6a71dee4521e5dea61e363d5e20fd67cd8bad93858ac5f79de454bf345cccf66aa996ac65aa9562a1545cdd54aa5fa9698359f2dcc02387bd65a9c7487d6688dd6e8ce8c366d6c748e346ab27262436038426e5a40583f64cc47b37a348b47b33a49b31ac92bd6d568697ed2aeb3b6b6b261d9b0582cd6b4416bf3a391b5315a8d6669349bc99a32930f4b67e2f4aa565b7157dab064b3661363b164b2599bb559bb71bd6a2cd6ac0191e9b86e5a40583f6839b121309c9790235d9af7d183f24882046683a23a660445f52aa61393c568b4156d456bb156acd58aa2268bb55ab15222288093226971a6786caa548bf7d8d8714b6daa3ec95ca33b2dd2d9fc8ab64351b3458bf4a97e9eeaf429fc3c25d227599f72faf47d9e0ea138f4d5a792cf53217db29fa7f3f4a64fa0cf37923e4919ebab918daa95f2de75aa3667b3ae4bb55614d5759d1d8d7a64d221659dac81339cab9dd669b5669dcde9149d4fd1d0cc25b9ce5806af3492bfebc9dd9dabd69c499a559e53f63119cdec88e278b1ce1b8e7dca04b766a7f2bca15118c5696a2f1572a9abe94d236971be16c9f3e1360f7e3979de8be5796e489e1f5154efb0f2ea3623d54cb58c96e685a0a8d6698d68768e46f31b8e9d1f1c4a590f776e9b2d397bce16b8c4acf95093129b3c3fa187f36cdd1ff8f5d7e0e7cda102de80d3355b2dce0ca6dc49731591850bd216e6f0ae347274920f7f140b3687cb3065691e3b95cf744db406c1f295833c5898cf34cbc5e17296c3f84cafdcae09bb72126e212dba606ee3b0dce52e78acc92c38099a5770bf86b0b4f0c76a71acafd05be5b27249551d0f6b558c4ad6da7124532282ac6d94a589ba2cb25924dae1311f4759b459ecb278d9628c16172da49696517e7991fdf2e6616fb86d5154f3e8a1b3a894acd854410c999a19010000003315000028100a87c462d1804893155f1e14800b729062725225cad32c48511052c81000080000000000180233035364038e3fea81c543394d813f46ed379e39eef23e53eafc044a22281373f6280363b43b9a6a66962f8b03a14d7b6ba92db434a8c9e63f817a0573f691c18de78ed464992babc4d90ec768cb893305c7b378455655583f6e9d5164de947458e91972785673c921152880d1e4da27dd806d1222e41a22f83ba04384dea69ca5a42388c4ac8c3163eebef9ef4e6946249aaafafd99bccf67f9d65d9ec04de557e794a43883d2725266ea86e9332ab877bdcfe7fad3d3b4c5575fb497556c39d40925479fac91b09302413b124d82403d63bae4a8c826c0e7b6c45233dadfba58dcbdc7fe7ee3ccb970ead609b1ee96dcf7d544999d7deb16db770172578853ef8f1c958a673538905a1f9e87f1966b6f9baf2a2796b44c802e0ea92e64708f55ac8cbd7b618f29b86d25bce83e4389ad430608cb54d2e40e6436399c6ddf783795d22876fa5b58a5e48c04d0daed1b6f46659c7b47d52a1d1751709584c1c7ea4164be82a01a29f05f64b2e1f4b3b454ed75a3d51f022613739caa13c8b71ab4dbca49108c4589554f2b86fbd6e5473cd450f10d27bbc6178d04cba0420971629af22f984fc036245c01a08cc13a0074e28576389f29bcac0093d688f75eeca6ab0df8666590077af25a3ed3dfa2606c963a1f90289c3fe7cb0693bb4acf516eaffc8ce377e224d4058a926ccecacd36966556763cb226544bbbcebd63a03dd8d360389d910ffbce6c837f85141821c603f47b2a952307c16d7ff5f12c5808ddce64f05836f8057752f653f6b63d58b23bb2ce3f736c30e6e2abf8bc68e8380352ef4f5edba7d848653cd499e9bd0145c6455463b8b77fb2a1931fabd9ceae56a5d3bc4a8607dd3ff6700588e6bbde0bf136efff9dcce7bfd8fefa6f1e6c6a11b858cb4f13b7766dd43031c2bd981d31be2f09a16f9bea841971cedee68ba563f78d32aa65f7de2fb2f9449b4b2875fddc66eca5480aa9a1ba28c0700475a46065693ee32a035987bca360f395272622d7607192be5d6ef7aeee4917c7d2c2b8be09f3494f6e4e56e98420030152911e21b3e728d1723f1ea5350080a3c4d90f3de673fca67d49383743b2bfa9d4584b34f6b91c0c912b0713e55c19f23e226aba3e8e5fcb6ad08895b7b8190a615e593c56a0cbeb8fecb309dc597471922aaf1bcf8e8223d9472bc5a0f672e098e283071fd7e21b01d9ff3ffb8007820667f04f6d2177d1e5e8079a5db7d77a0ad8875c930668581bfbc637ac24c4f0979f80c3540e80b95d21c15690b4bf2fdef65feb32a3887e02eab01d9fdccd00f06c147725359285b575011ac8552eff1d97daac5fe267e50f785bc9c6f40d33a38f2564d050b815f6ddb7e6bc97e09eef8882f914b11787b5f82d2379cf1c7244ee726abf8a200a0e5a366b980d8e7213a63b8df91dc8c8c4345f63cec21c82678c0344f4ed647836260576012512839581a773f097f314e1e3e6d4464841ff03030f5ceefa187da7423b967d60afe7c4996305b235db2e554202e4858a484349ed7a832193e657b11f1e67e95cfa2195c12f9b558db50ff1e0edd8cc4ab13adcb50eb1ff105df588c7bbcb051021003d2fe9e09ba1b2ff43980befc7b0163499239590a71a029c139c3fabb1e4bd48604df0cd07d08f8bf441b43210c0040eeb63df4c4943829e13f3de24e6f1dfab295359c0a01b85633ac7657f0879de66bcbba012764082f66c3a88e21c559ebab70035443125c0c26e583ba3c2a25f2a2b00ae8b6acf65ace8a2c765ec0b405d196e48fdff7d7717765be7f8c9b4e3977ca0538421ad2e5c3d8ccf5fbfa091ecf9c8e87938fba597be940f6138a9cd5159d06c33563914ecba0e7b68d659fac57f35768c985a182ce2b47f845b4e0eb6a45f2c6ac8e882603c07155893f9c061e32e72cbfa32576a93f828fec2353e3f563501f6b090480b926a6768c63002fa92478ca197735c409342505ceff29c1d6d68ba18173929f1e6ea1728e55e4ae7ef9815caa4d8a4e772ca9fa0dc0ef36400972936c32154fd4d1b9d18ee6bc8d19bd665f06e506c147ecebd04d3192a3d61260261d6ec84ff7d796e5b714db9980e8ce0de9d1e7ad97b15980885555fd95228da773defa159cbbdd09e06f3a6a36e075b766174585feab014154c1990e9bddc997f4b119b92474f99fadbb60e2cb04df04d1cd20b63b078c3f86f72fec67fb628322b0ffaa765fe573f0d032640391a2d5c1069d0b41a1a4826379198fa28df3d94cba163936fede62179ec629b808cee15ab01304a2b3883804df5d2971a551abed82bb217192f25930795d1c597c98a0df58d7d5639f9643b3c80083038392704ef040f504c2c2870e38cf50c54d7b33ed7ea9313d564d27f5b46f1bc6c7fa0cfb77bac67e6d6dc594d3bafd77e9fd151b4db472ad4ad82fde7c57df6d59ad4319d4ae6e9eedea3fe1b6921170faee3c6f4d6643b3bfafe94e160bdc9da8771b3e3e163b7f8865da1e7d69c49b86f47af72fd73e8e87c96a6b48b56783055018f32e59e0e8066082d7b31e1eaaf01aed0a3578049f89508d811102dabc2506f1471507ac6388a13f68822e566d4518ef2926b5e1f019b978edf2006aae32a70041982c4f8538d32e861c54386e2624e2bffa3334c4f58efab95b4ad75c41c46400d31a8800d363930281e046479dbdac0452cd079edb0996826bdcd5dfc3d605d5177572c163a7dd44490f150f1f5c68bc321f470a472d1977113f0749ac94bc68ed7b1975b6bd187dd0c5a84031c842ab04aa1d46a6f7b0c944fdaaa6f784638a2085e71d583633ca398d2d6968fc7fb7a689c00d3f63b018a3d92bb4fe3cdc241eacfa7f4a03f78628fab88635109bca59ed6dd0fdbd5ed6f4e3fab979d0ffce3b8dc555b4358a35cb5626ec9101827bb733d3f5f4f29c75376da1edb3e80f677481cdd89723b32f08d460084b4bc1d1d609abe25c4a380b775df219a374a21be7b4c97c4e19e57d7bee86b6754a8790b02e7284573f5ce706fbca9404f4989c4bb8e78a884f89cd249e0d1b75561a192e1693fe5039f0745c26fa33a5c86c91b1d089d5a4db75ad92452c77398bf7f15165d72c4c2dfa410ea8fbefddb216feb47e7ca9bbbe3ddc737b88d2a3210dce23c89de76125f8812e4cca67b36b970e80d782b6970bc1d12b7f68add4abbad6279d26a8ea0e2510ff2fc10a2f65a08fb1806d8361996ee98fb69f8d382a1f8e6a43f4b704520a79bb7c930206de13867506c29ad73b0e263029f889bf39f53c340ea56e9112b15759f97f5ea5649b5769a75158bc7a21da7ad083135900c54a92525259f1cb6a4842f45d9337d0f52efb780071b97c9cdd6a8b4248eda933590f0dec880679d0ce4dd2c5758ef6a413a23d091a64898cb6b3b6335006a7d0ed499507c370807e4b82ed14680f20101c4ec4a697b36b2b86265e5e64dafbb86c16aaa5aab1bfb5358f5a333fc49ce47bc947b2b394e12a6e4fb17b04299b41dc5da73a3cd1bda7ed58253e5d09462b69e0589ff573b88c260b6a7fb8d7ba360cac54df17c3a54c0ba2bf987624838e69bcfdc2ab6b6cfdd80a79f008cfa4618580f2ae3911fd01769c05805e9b2e4976992353819b9cc5ffa7f3f91125c0cf2eadbcab76acab58cc80638926a3c7713d4c1fb8c3ad2a0f2a21b1d823e4081f5c94a2d5fe8c4c254f1434d2bc81b527507c60e083b74ebf1129ccc2d000741716b6b8bdd217fd72a4259820281215c340059d0ff8391057a2f17cede288e90f022ff0e5227b105b18506009af4e0e384cbb302be667da6fedac0ae188830cc8aa0e033f40691c3002be328ca7879e0cb3eea643964abe72c687787e07e7832451b3807f604e7b2df37ba9711bd5a9a7911ba7efcd8e0dedf765f2d1a4c8b17848242a10c8474e1bba425921117f84ca0892448cdc348cbf7517f9fd8ebfbbe3f0a5f0fd06737d246dc95b83dcb85d51ee85f4d0b534f23a3f52a129962d24070f30f9980fa59061baec1a399bbc967800bbfc327d5011875abfbd89db938615b0a3e05b58b9da713a9ef3739bd047667ba18d3db35b7689714491f7271be7175c47289f50dc8849bbbb6f6fabb224dc208598410bd848bedded53f6811f43308857113dedb5c11bd678198020b31ed350e22946632d28284aa23f04996d895d00d2cb4b976e93737a618a148a41c1417834d5c4d93b3a8f55bf0d279e5d02512e47037e3d268aa0c24e58e789ed597cb2a17f1bc0ae4ce880c8428d1bd88b4aab6b3025d1cba387ae2affeff087ae0ff42749bc9f45650ae5bedd2d538ba860b8277b878254c3f1b80a9b690e1229833d1fd984e7eb41038c85d17c8436a0a4507c9768ec244a7c53b83a1f28c138d09197afdd019fc9c5301dcdf10dac0128ac45f8f0e33a9ba69ca492e2ad5e59f3690ebd2ed06aa74f9b83898ca8e02280e179e11c37c1ed9c7542b00d9671a0d268563d25f76ce15b39409587645f3e667e189df8f7337bd1a0d0a1907e29234a7633188445797e9ef0cf272e9a1641a7d9132016f2d898706ed03341520c4c44c43696f88b7518031967e410a5e7ee2fe89e141fa01c1f8e4a26c4cb03dc8421def1e412a89047abc3980d2b0459496203a789a11d309e88213393dd2b606d5389868b7888eac3069d2b804bfdf1961244b07009f0b382bbf31202d330bf216f518c292552598a3756c20011585c8bc2af32bc6b73fb813a8c41da471cdcb94f0b5e91fa4bf4ce230d8375346dc2380547376fd4f8426a3716c0f3def26461b02db197b295e2b399653c78a1c0f777a650282ed7ac270c5d1296c73bb89e66042b24ca8860c4893a8fbe2768272730e5898825ca59adae8f68f751c0d36241f03a400682569a1dab51c9feaeae68f3d326a8fc7ebe8b827a991a837d43353436478012c9303fba13a51d24ef73b2d673a13fe0589f04993810d131bba04def47f89d7406a01dd14a7b985449a98457d50bee43d15f26d831484a5346b8376a6637abe8756a9fe68134303584f4aa04e0fe34fcd1ec8d39ed2d1a9e83471facde2adf3ee21ed79dcebc4a9e5c84b59e6bc5da6a58ed682c128694b496b50f6996783c3a94b19efbd4ae17c0023b0a5a139dbcfc7959e02e7e7d927907c344e1e6e309969afea24f025315b861825d9a8cf7356c0472cd6ec164865a45e10b6063a5c7d54d7090dcf706c0d48b72b83b7c03383a0c5075bcd3697a5770b4272d556ab1945995f54138425e942f443218c1f1990e569c3da29ea3641f80e34fff3f4da39fd011ce4278dd332adafb175369125645f255f71accb86ae4bf0c8627e6777f45a282b2141181ecc6d8ca02cfe333da15aa65f652a185e351da8026c0596a80a1a880501951d0415dcb6bac4029d46f4e1407fc04ff1718c8f7d4f382a1ba6a827dd00ecdc2237d103217736ae9360276cd76783af71d8826908817fb70689a2265bccbdd87b46ca0891fa2e60663664f80627338481b0dc26c06b2007b836920468023e01203a37a45769a9f23fc19c64e74d091699a5145136a643273081b0697cc5ea4bac36483755b4d07abc6804201657f0abc24c78cf5b5767bd4ec97355b444a40430f1cf155b2a07e83e9d27bff630d749c1d47bec181720769f6d09299d5ed68179806b7e9d9c7f81e1f8f55287708e533dfe88f88ee1e35972f1ddee969b41dbb19b80ebf9a0756fc686cf85b173091f7ab5176cf32d46a0016e641b50e6b579e15e247a62520202453a764fea5e3ab89fc1bfad06a9214280458d8cd3e8dad04dac585d2f3e99e4d5da3b8574104837264106bd565d09514db5158153080b0fde6568c42faaaed6fe700ed3485af6545388385976562044c2270670255acf4d64397984a181eb714b268322882805de8e405d3a9e516be396dd8a40ac3c6f388b8e7a474b904e2b43ab64d06b43850aa8d852d598810bcd11fa34a1e421e2cb31b3b34f23488178ab27df48a54f4bd4696c00bdc5227ebacb12976560e7b035414d23dcfc5f0506aa8654be0e6f66623422452b9ff0c5f453b6523bbfc98e4223d47b595f4d0ce470a438e682d705630a90adb49aca7cc52b2db027d1aa7036497fcf492480d4a73d27b2161a135e05c935c9b97ad24941f57b77ccbbbe6a776b85a17d1abe9511d2e11a31ed17a14bf44b13c3950c29497d33c85ae506b6ccf5c9d6d6b1d91c3cc0ba6103dded2e5ce00ddf85c239bebb09e9f5d96253ed3d7aa7997145243b9650f995b8e0a08533f0e60a6eda2f5636f623470bd1300c5c63946867878e8f8ba16c5b84c32acd264f41cedc0b91e06cf6468f8ca090bfddc24c0695142e93fa3ed62ce273366771c8dd724b312f3ed0a6da93caa0c4d085fa4d991abc6b7f5cd882482ea76fd964ddf2b1617055a5c0f51ece4f62064c72b8b8d92d033786206372ff16bad33cc74b6a181388551f5c46229b2254eb201f99ae6caff34e2094b7e21851b457f5eef3a28b870ef5130f34c35521e227918008a82ad57b17cb5600d263b204209a78423bae0f1a961a408005a0d96b022e262ff65cfc220fdaf29e18ae4f14363f20929e9dee4893e2698f921b566c13cc878443a9b26516e1e6432def098243498aa6c28c91e87d4a2ff487f27e56fbc589e3d33699be2a709ad202f29394b36fb16559ed8b7375e58a535effcd15b70f332d34479f7383634297a4dbfc85153b68e44fbc64adb8a7e11d3aa2528835cf218ce7c91d7bd40291201985b111cb3df568533dba8ec45b5d34dadb08c2c511ea0f04b0f02a12408df171ffc6deaf0b32b8059bcd3cd5f9c6896532ec37f17d57db93e42814bd702bc93989ab54f43f2a49357473a456b0f35867f6690e06b9275b4c52204f003428a6b27f85810513a7d42ebb70096d9c2549aeb5928bf43ce6156e011dd45db0d5f105bd247a613397c37b01c979484bbcd8dcadce28b28742a4c4dd8b49b38b3a296215bac58ca1ebeadfb251cf8f972d7f2945538ed39397caebf0b49eacbf1d0b5f0cbd6c8055f0060333cefeb7ca01672cb6415b3a998a6a90a8be9d7469114bed62c49a292dbbd860b5b100a101398c2d78f51ae8ceaafa4c5bc042774d27becc9047d75982b8a8a264961e5d8e0d1946d22206c4b5efa62d6018557e467853bc7f29bd21e0b23b50685eb57f486b99252afe838b92d502e388813c4b2e3e65bf3444c458a554b4c85e047dc866766553dc54ea65b728d9669eef866686deded0c010ed9c7b0467cccea87758c598135b7fe16707f92f3752427e3e059bfa8c6662794824f3f448d7396394349d72263a8ead04b1e2af99f33a86620ae6831e47e7b65f680f765856de0e123bd960e6bd8547780b4830535e6eabdbe5673302e1ce401cf3d80044de7d7d6413d95d4e62b94e6099f721e3b4e11c9ff29830563cfb893d38016a39a38ea9a16626937ce655ccd2436896c16ce4bfe45ebcac2606c0fd716ad0be47d12adce11aa1b13244f50026c89ab57e00fd0f8ffe96bb8180f8ad985baca1fb6ebaeec2f5587f9e03333ca4ea014976cfc66fd7608d84e0d795291c9762b334574e0cf8418214c18afdd2d83b4025c436433f6531758c2ef838c00fb5f3a395ef88fb3c6493afb1efe04fce9ba4ff0c3ccc1233a0f0cb5e919bc6c3cd8c2de1de8fdedef77eadd0c3a0217ff21c06295402bba69444cf0cdd07d387a1e217872d8b620e667eb73dd01e0e439d43e994fadbcfb7fd2b097f85f1620747312fa58f54c45aeaeceb33d435135352a438e1a8511278109d26f3583aa60d4879d1133c60398fba0ddd5708c1f094eac579602e08af991acf5bde2152e8cea7e2465aff1578845dcbca7f9f5c4b6a8953daba2f4325566ea3a5c3b7383d06840ae5cae25c9c3a96a7bc0c0ede78b74557558cf9b372f39a5c53757be007f4d2c7117133ee43ece0c1d2f9f0593341a272100803cf563e74e02f9287dc0b5a24a25f2741140686a6fc00c77942770a09eda7f18b8991ea25916ac6ff1de1af44434b36a926a9dc313da5e747306b9792b498a28796a1d84cd614820ab7ba42da1a6921c0f3b08327841364412a4ced2e011bfe03cea70e896f74a6e3fa1e3edf22c48a7f0f7a9166ae8692bf0c654b16eb3b006c7ac2b9ce3eb25dccd4837507f9f2c7c91debd4dc81d1864163a92f04219d2360ff1d19b8f6a4dceecbe1269d24fda3aea45f9157112e5d1f3e0ad00737499434d57206d72a1c3ecc769eb2ac735caf2d878749d78b6804be06f19658b35b71013a2a04463fb57545484b3a6550c4fc839c13728b17807d950ecd25d7aec20a8c8cf56adc5c3899bf66c113edacb9c289359eb44be951f9e4304fd77493910c7e0116bf5163d161d9577fc64b878517da370af29b3ff3294e5d6bbd884edd23d1e80d132cd979b66635caab8886e4baa04501f89d249e114e93d237006b732b00a5239718c1b115c82190db43802c80924461437695997d7253c956bed88cd86d2dee47eb7dfb99ba2107fcc908c176b5653749ebc2eaa3c0e1110bc7473b3e3b85a297d9d2333156fb6735fecd833dd6a426724831cf12730de976f3778bd5fdf93a8289fc4b731aa489b46d4931acdf39a40fa8d2037cde562e37bb03fb7e98503779d3f17e76c21c8f08eed06b7c6e3561b6f2864f980787425bf4c0caf5fc1aff508d2bbd701d086892f949c4ad9daeeecd90589f4157893029c08030772f9699bc922d6d50da4f38caaeae09964d93f6980ab1aeb7860ac5c5f8a46e27805ab7b92cb004a811647791b5407bcb44acbc1986918ce7fd1cccd219460bee869f1e12b911af15c9315b119a9d62194522fb68c54260e718ec478383f23e013f70bcf8d14d69b47f7289b18e42b393ba3c7d401daf8af88bc7d06011b5c73cd8b0b36f239550fd87edad6cdecc8728f5d6fa2224758f446ba1b175360c7bd26111a15279a0b14f12411adf5d673273cb686d1de4005de5abd3a79e1c4205de3991afd082d31a8fce1adf022dce998fbd8bfe45ff085f85109e6235f3c2c1f2e320fca71e3d51ec180f15dc7e418cf253ea01c219ff22efe3f4f907e02bb837499417f900ff2003a0c739cb3b653989e7ba18f2bce9d6d00039bfcb023ff1449d92c8da81ff5966d1e7ab412c1c16c14a4aeb2e327d0f9c85a6754f1f6973656ab81e51e0c2443fd47239bb83814bc4bd299677bdfab1ab4c6ee0d2e1376248c3ddfe49557d705c482b2645ba39cf6ce24238e2d582a4a0d4d84be0ee98a9d6f1d7219f82f943e40ecd212ce636f2e11e76394474e844b6034d97b015586b079b5ce326b59aa5ee84d2a9d6f5f3dc599b2521f124e0ff7cc576772a17b7d9eefce83c342ff4bf7449c69a52b678fc3fa78959aa7e953445f0a82bb8f42a184cc592c75832140ac1df6d40ce037cb5f8548897f71231d66108a67ae06fafc269441b731f4b41ea2db8fdb80297eddc3e748a06ae67fe30b7c04a8e1d1988101f400d36ec113cbd04a976a8f8a25015f08cb8bbe23ec16713b0b19d915c53724bb4c1ef5d7564dc9f73b9764ee11445d78fac151d32dc1483f246c6994ca2589463fdc4c44c2a2e7713908e4c5230cbb0521960f4cbbc805034e008a5fb78e76206a5e5868c5c88730fde12b0eddd2ec564ff3d29cdb6002528c534f0814b9fcd6a041c198cce9c4b8c30ebb432ddd17e13814b81ca09a13ee2a41e08ea1d674904cfe981ea7c6783df8a402d786eb595f56b40b7b2a245ab6e94763df6b6ca98305ec800e26f12b11ccf79701c1a4e43413be360cd220a479ed7d861efa976ddad94bc8ca4bfbc138e7517d4e9d4f89336e3c4951049ce023d14b16b24f1abcc4265a7d51b7326a7b467e0089e508cf81ae24eb9c41697175694f8308e107ce63292911e843ea2d55d8eee7618ad80a136669e4db03ea87b075f731892a59f49b919ec328d6f2676c2b5fb040805d6ac4d3a4c10723012d0c5400a8d8817de2b23e1601c295976c860f0a2e77b7a92a93bfa06d6d06cc4a2670e9ac39f83eef009080d3a328e971b0de076abd02a08a5b646a63214a0933e38752910c8ef168e5937cf6a6cd558bbfb84187162bce976dfda836eb2ce2ab9083f57cd6d4e0f308a0e15cd581c7f235e3ad8cc5fbebef2ca2b88c813a744a96ba60817eb0c117adf4b989d93cf5dc18ca6509c94380c41997c043e48e8769a953fc14db64f88713f8699a995136ae9b5fe6c8d63dfb89fdb25884ef32c40a9668d9aa7f6748fa4af0d1fa077e2ebcb30a5142987eabbc6abf2e6e99cbaf5922225704fd135aff20924ca3d8fe6e0f8413b7c91650197f0d7ce37131674ec99f6f80106404e6c88adaa0ca772ad297cec0b36b9e746c8fc95f4be11e43032609551f64089d39b72f4fffa7edc8afd18ea1f4d9684b99c83e14fed28a19aa5387469181a7799a7dd5a0b5dd58616678a57ad509dbdd05329966bceded2d492f25f6ee843ddf81b1d22346047de8102bd4573158a85503bf90590d5cae2b65c64fd3b35338be89472e87537559c1c085e9371ea778a662ceb67c25273cc8602afef196d6e21e4d4253f5e071ea59c732450959b9937228bfd599fe7a8d4e89b392aad3763fe551c39de3432983ac326a1197410ec9631e6c2c085ee4c181960b31cd2f2a41f2dfc01e0058f77f4083031ea0eb031f40bddfee8858e2b29151e27084c6c850c6be76a8c6f1345a02ed6ec7f5e558657f6c16e13cef4fb28432701761a707e3e8abb3634f4131510461e526e4bfa32591dbcd72d7f77e219ea3ca1da2760bf4e697710e479dda454883c82c2b7e419eec489b688cd5381edd9ca15468da158d48d1ceccdb321695634d50ce59d64eedd837c1e1c43fc55a9712378db1683cf2440979661f4905473b6c2b493e6afd2989b1a00dc85eecdce10530ff28599959c8e8a629325b7fe227c62184330b18cb8e8ef7eac6532a58da7d447d4243d6c718d6dd6e5429f8d9eec3086fa5e78b03b6ab570ab5b6433f17cd3a5308bc47a7cf3c3fa7d82a6c36c990d570166d4ab3de6e260b144894f8b8b772e1bb89dd48a4fc153e441f4e1e427d93d97878b0ba7ba653d9a11358c92a31549a04b781489f0fdcafa1aac28d77e20612c644319a02428ff59d25bc823242af0d81bec20b06e9e51920d7266f163331badc52f9937a791881d0c49af53b099b2d5f93141c956e4ed530085cabd602cde12d271973c84ec0f10af79d5a17c6266f532d89ac21b0252680c1f1e83622e880bab06087ef9ce970f518ae92a9d838348fda648d50d5caf965a59367d9b6bde40e5533c7dfa3df584d70bd1aaf81826db164a5081862ca01626fbb2d6a090c5a614f6b7f476abee5724711c8bd8da4ad46f17b3994d73d12b2970ce41a559610cc92e4f2a4b713344fa6063af7b44a6d0c6c5e40a5bd9adae64d5ea825cef69c5294e72d0627bbc2a57ed567ef8432c3f7b975d7709afd1284b2e4a92e881b0dc11270fc91bc127c04f09085a7d09417d8be8efc1f2fdde1bc2ac24a9dff8c3457cd5d72e52c40630a2608dd8cc59746a3ec4ff70f7de66ec431372f272bb4c1b0dbc00c3fa805952e35eb1561efd97b9f30a07aecb712633d47cfb9e03384188ffc629fe789bb863d62a7109af8d22703380fd309383e7c31f401620c97fac1b0b222f492f91f58fde2be14a03325e3b6c56b22582caeaebb28063be3f14de639579cf952d220cc6dd363de5947cdf68b398b0eac9717c176deb7969d27d1fc9ab949e655ed31828f0a8366384a8a7f18ff4aeea9d5720f73c8a2f675707e75d78462cf8f378e1cdb7c149e5111f34d987888bcaf6a1c66b7de3e373643d8f08981214dc777259f2a1f7f74e8af241e4d624c0cc6049c8e0e3298d5d6b4462fb93b7d863820f4d0f1fe581b40080f338187533807849637a5d051630f2918f1d171997b704e1667ef54343100604b6c54a64f83d3b5490c70c74391cdf785287c3aa8ab5df811918cb1605919179b8260005ad0c8db7d4eed3250f28677ff65a510b23ac35e29be7aa4c782eeaba32bf29ac1c24ce58453ebb32356d0a89660bdc1de2d4117d5047b5928f9cdd87379ccd736527c7a5d6c54c173799c34168e51e04c73af89c0dc7a08fc2836f15a88b279dacbd71ffe788d4dc16f597416cb192101a53ddf38e0c7d1b54174b1cd1be61478732767d16f8651123608767f2fab741fc2872e817e1c41f452b0a9f5a8a332ac03c6417de78fc2999b0fe837b2bfd64453206b3a1092766040b8471d63822ba41f9cc22fa4e7085aef83c2332be6c9ecd77036faa54de8f0604fb18e5cf7b0d9cfbfe002fc8965839122aee4f0cdd0d0466fa23943a01dde9ce88040c700f614d8b1ff411e0caa54ec38c4a68a9ea638da666ce4af3856e600ab755b4f665e934079d13430a9bd07e22e3d4cc572daf0c294608dda150e0ef025bac74798b567913d7d767520511bf26f593c58d140647aace2d424ec15c10a6ddf56279a8336f6dfa7070426401822738f82dea772d058b5bf0536e47eca4292eab47fc85df2361f955210690ea23d4c07d25ba78c1473838c2e808c5a57bb02b4a8a46bdf9df10f1e208e03f6478e2e626e3c5248d1160c1f720e475ea2a9bdfe579f8d96028ab903c64ac5a8df2c56c611c120636a0b106b65179c881584d72dd64ae5642b1822a2d50acf9cc90a6015fe6a86f7566159885a586a7bd3000213011ff1a2d1c5b9c2f627ff855d35aa1e4374e5a2d4e64e377d8213b59c15dd9381d706e94ef634a35a6cf2a3d8d46b1d75a9bd350f3de6733a10d57e24ec9f4c7fae9e121da9c47f959a7cf9b787bb6cff7aaaa3036dbeee69e9b0e1c4bb659d965ddde72428a052bc0a5c017bab03349cf9b0dddf56e9d894ae7400f6e311040893956e98cd07c6c77cbc70ea9e5d5f704de18e03072ccb43728729f521aa9799a1fe6160b4809eec2ab7b92a5a990418659a3c0df0237e0889602e7aee9b55bfc9ce2d828a54a91cfde30d0b65376312901d3c6eec702e7473b20caa280082b3608d555d3eadeb9e93439f0564d7588085a235325c0538189e1b47a731c2ab506d5a36cdf114e755137642a56f63c90e0f11e533129f224035cd6e774559280f77118f5b3aea47110bcd6e4aad29f50f0117d77530026170896b0082e3a1bd67c14f1d540ed6dde006d39ca61df35f8d3a3d54f2bc4f60a17685fd6599935b478f3983e67382d24cbcd238726d51505872d914a51168128d0b1be82e0caaecfd03be9b6b0a6bf04a66704e4f1227beffdadc68de18ce864afd0d4b8596d92f365430eccec1ba8536ab9350eba8db16f878bb791e82025d282c680aa09a9e9ca63ff78675bf84b9b9f7f5e7f8d413487e116dc3b48f3f1125149ef025c97c62ebd2434bdaf7474edf587fd8cb5c3d20bac08dc98b4b573d350d446ee4f460eb9460c73eaa7f0486c675e05c71b9c861909c4ed39c772e2b97d71a31ff74f580d9f660c4d6c1cda231c4bd78f80eb3ad54356c5fa86db29417970e68777b5fd6efe2b095c136828a265e251975339decb7bedd43cd5b91b3e98247df2594b3070d853768880f0c04fc4e3abe92512f1064555d8034c7071ee706fb303f35ede747f5f24e22150533ab225243bc92e4d6bdb12c20e2e7115f8670f5355e05138a4551c00f1763e1048d3d12b0aecec8adc6f104c99ee94e0887903224fe2d182886947d83a2e282b4ee08755ec73f43f2fe0e7216eadc57dbdc8eea843f1884a23fa844e792ba620fdf41ac8b3d98671351fef06d5fb027538cbb54823c17fb10be759eb19b3b50dd26e9136158e9c68004fe902a9cf5ac71e8d644e93be1a72aae33a854a4e06654a443745ca8cc88749720e4080d0b1157c7003e4812b29b966498df92424309f6fbd278ae400228fb94f1b9985dc94ffc4e3a7991393c8438b98139e0ca26662f9d650f8b041653624c0047d0fcac3cb538399c5533a21fbf1a0b00616f2818f3a305e274f4be4b46c466f6d1b34d5e0da0077d423ae5122cca21cd3784d9ab7007e2e6bb4da39f231596b2db751c3ab2c9073fe99b3957cbff23cb3f8ce6a952c5672d9a56683a91dce02bd33ed9f6020025f27b43e01d6f810dd41ae0f2de7fe573bd45335ab636c0acf953148790617fb8767103a4ce4489f3ed01430ac68ca74be3def9612e418a4bc10efd26b6894317c1553bdbd5ea033cb1b15b02570e01bba4e81d63342cd48f0bce09932790ff50ad377a6111384423098009e6748f1e67ee1d32ea73e0600a363be01aec2fd66b64852c2d633235a5c7f250ceb79bb80f8c9a9e41a8f82e993b23dc1b10319e1af6a201242655cd50f7a4f7fc6ba881ae1225d33ed0a9af483d745340b5c016f658d02d8956430dccba5391198100f8d4c27e1366cd6095214afc1d05dea74d68397481319f00538fad0144663659d6042e86a3f284b24c3d980cca20528bffbd87a2509176401e001406283e94edf4ab14783dccb6d8863a0288959acaf5a2f531d7bbe12a357c304662b72ab8832fa81f55159dd2a6109fa5982ed2d403603a65db937c09d190904675468359c5933651ad2e860c3fec72dc0c72a2da104cc0e7c09872c6d83d0166aa188716e7ed32f9f63a42dd86ce9228262699a39330ec40f69f108cfbd6d2245365c79303686e8b0cae0fcbd6c53715d63c5bfed05b08854dfeab2cc0a5b110661beef12ab772f7e423708cd894df8e4394e92a08864c2d2e4ad8052250866c6a4fbdf83435eb1f5032a565b2655c2a52eb1898b9be1726e8ac9c77b72470fc884a71630b93165403922fd36b0d8d8f06587e1fed7e2b56631a636da4dcf2158cf81ffec91a750fdcdf0656a478e042aee53ce848a68578a1af0e8242374c3538c1822518d46489e7628551a913c0b209e85919de53fc32b1fa6b2035a0ea2b137d1f9c1f8ce1155232db81dc21381b3abbe73fad4cd1a693940d25834217df7be4e1aef59207165f17bec683840220a9ebd42b0029caa47f645a4d8f202d6a4bd0221c5151894ff31563691ac0687ba7aa92a4a7a20e970eba2f578da44494122fa896a9a7337bc391fe1475f27475509bbe2aff1096fda2751dc1174d43d6f6c0eedc7b4266eb7c388af9daa3fb88f921ecdb10ecdd63b796ebc138ca23380fdecd8a74a75927570a771267495207cca3e8b9e5258e079c8bdede96212b136a604db08f34ce616a99a706bd28dab7a222bcd7453c561228b489a6851fccae6caa079ddcb61258fe0fc6172c238ece2d4d16029a3d4b721ab523c28ebf1804cc3218ff28c4c35775300c0c361d7be58afca67553862db65afdb1e18863571d595cb26126fd10cb73f7ef19f23a269bf43e51ac6dbb8146626df158828fda13394ec02ad7dc6243e08819ce89065f58dc9b322a9584938b1e93c4ca9c232fb1f3418aefe24df2de004a4b7109807a0a68467cafe2558c34317b17efa15df36449ef4e2c114b76839254e35a860328991746b4888a07b159c508ef9fe5c1415f717295ddde3bc4ee486529828238b78d234161c8142b91d76f03d8591f9c51bd0f52abb7ec92669eb7d1a1e0e401eaec355ad697c94d9a275789a5cbbe4c6079ba792a02ec75383eab4332618b181b24df959d1e8085b23fcd9512e888ad99f9ea9d6aea7f9d5cb3a6f1f5976ba3501e999402b97b1106b385da87f5d00a245eae7c2c97e8f6f244df82e7900cc0621696d5316f1a6f2e3d25d8dc1c0101faa0d24c362b61d66b16ea7d7ce1f20e646a9804e473e8d4776177d663418d540616a5c32875d7225639245d4227e9eb84eb5879d0f09dce5c252a81cd9b6b323b5e765aee5a67531d46b0bc3cec209e5c568c9054a7f4558890183897f1399ce01d7f0b0a671713fb0e1b0e2e10efe9b861d6e3ecf36b3b6058f5cdea835a3b8fdecdca0a49c6666a75f9d690833ffc3e62c09ef8adab4737bb47e5aab423445a98fac68586a538e0563c6b4057fd73827e9a81e41399d9ead6da685082d0242008ccc08c559ecab70bcd99b4c580120505b83460b971058756a4488492c280e0a49ec9d4a75c66a08f13518c6e4aeccfd4078af023fc6287d4088eea511526399cede6023ce23ebb006f83fadf0920924c45915582dd36d6d4ca4e43876f4da5220e14abbb7410f05d0aec0c2581f053cb5be50ebfc85820bf78a44bef95958527b4a2be38a5e0d8e54da40197c16c532f5d71cdc419c86ba880e82c321c537ea246d580c0f5c05dfd7accd9100580346bab02283eb6872d0b3bfb1677c0ed65ab318877fc93eeacb458139163c5bfc94ce5df5ffdac190b809a96ef29dd45001c8973507f5417ff7f2d44ca14541007fb90d7e01f71ae167154a5fd4b2d07288c383c621e85411962b56ae220b550111aedd85eae900ccca59f79c9ea909cbd1ae92d542ff69b2ed93005ca65722b148772d0720b7b05b42b25ad2a3fcf1fbb1264f01c975bf4ee6ff94ae302e098f5ee84eedd44f835f12d22a7d24d95a578862e2507d87b127af70c841481f5abc4e69c1ad8543e7d7f9226277134b33a2bfe21f60e43e49be66cd9b28dbee4d1fd6339b489632aa9e1ff813e023ef13dc4bfdc194fd387ea8b44f635dd94cb40774bd0b6f96e409219abab715623d2cdef74a9d0a7bbae2ebf89450c67ac287cf4357244f0556283c9dfd6e459c44b139acc4608e36ea6cb5e0e0af395b2c65d40cda101b7cb3663d8626042e2ac57f8095a986ec0386cff8c79eff04fbcf7dd3fc6f2ecb21d254a87fffad604c7e8105da5d108b7f7c56c167cfc6e8ecc405d2ee7e3f7d7ab0be6d0b5145b3e26a194463511586ea57e31540b3265fc2a9032250fad2de4c41a2372547ff18f66ef34f347a65c244effcb39c8ca4ff4dcfa7d9e6d8069118bc1cd9162bc404bcd6a2eb2755badac8cf4b4e56e4ca73d5b2c7c29a19eeb33327610540051073df4da7647faeb62ba4c3e5b23f7f7117d9b1ff0d90518c5b74588d9380862eac0292cadf6ff5c681520af09c918e0d33a304c30fa70659b211404e08f83b4dd0fbb3ab8c1907fa1118418f76f15e41561924c1e597be8a9f901c8d9b37b914cca5286602e76611c3edd246decc74bdb9cbc5b0759b14c8f10f54ad55b68a26b9cf72d01a06fa0ea2a023c808c0b7858e80b946f1cebd5be6aee8436388342fc73bf9b1b3908f78a8b80441c3c8871dcd6614fd0333586ea83bbef64ff56f3219fa6ce83eb2d9d4da58511ea949cc871432f5099be00a6004f50353a9375e5c2bbca49a7f421d902477738e1371022444741fe4239c70fe9c20447be06c1bab1ebb9ac881335736d0929f4ce469163cc717b82cf4a607e910decb78491c6dfd1ad4b5daa7e3eb95dd4f5df351ce6902ef5c8f21c8b513d2e1ac64f7f28006d20cca4d47a4e6657da96cc5e715fe701d5673d86b723d88aad7523774109f65fdd56625753f132f531b39efe6250ac728e0fe4b2eda26be1b7bc3adfb682d6a8d71ace2f3b23147dd7dfba2700332280398ebd2aabb909ca5bb6daa76726017eba6af1e6a76b13d0bf7e70b04dfabe703bd125c7aa07605baa9dbfe002fa0c909ef04c11ca509987b7b3669e5bc93b501c5628fd94c6d74df3f30219df6eb22ba60c4c2a5c6480e73db302e0cda961a5040b7547a0e62e254dedd1ea63bcd9c95d00f9d3b801925bf1f65e145122f13a7364cdf9685e6bc80302d923636d9988d26af1aaf3b8140be3856b9f980405d2921e2960377418f08807151801c16b7946a7fed4f3020462eeda3fc4dd9807c388fe60b20ff54cbef560c0ba807443f576c6c721a20040ac54e7ee1b2e8cf8377a96c17dcd9ede9e9f2527bcc8043b3fed6a5fbdb16750fd5ffdbfabf032df1fbd28e3274bf0a62685bb5f75457dcdd4aa6d926c9e41c3898d823694470c7430b86c89d9aaf80eadd265ea6841fd6b602d1a0125f40e09a96eb3028e61553c1dee55309d3b2d1284471d9300f27abef80bf8132d44f4e9135bc138c162582e6af79bdc4ad2e29514ddb48b995e10ff95a978ce72fb88cfc17fe798a84c4ef7d1c2db36ebb58bcefb1429a7e1722e028a8cc2279800f616d32440e6f1b5c7dfa8cd3408cd99fc0ad0049b2069ecc02ee6da21cc9a9d788e08531e485717fce5b8a46f934fa90388476aa506130755785f49b2a94a35dcd42053c37c4f0d5fd7b7b5933fb942f9897d4d14dcdba51eee9c7bdbce38a083d839e34cbe3a48737a2547f03d0c44802b0ae69183bc4499954193410e37a8c423584b852a2d7e0196f79ec1f4130fbf55c6e9081739a5d5a36b30ef8ef9a3e37242ed9646da75e551259b8d686a7f1388cbf0f009c5d1a2b6b6e693daa4ae0890b3ea835cbc15f7197436f90a322c3dd570a9f2a5755fc2f1dd4f0c7ea2e9be8a0660923bd24567fb7bdcf8816bb3353387f85ea9d64d94ccfcbc30ea482c4124b465d8d587f06d53e7a500db146ed18dd09d87444f23444e3d2284740f7d7657cd3e56413258ba74b31d23a1163503a633074d50462390af34c06c12f7fe8bcbd1ac7974daf4cad96475f3e822821a74ef657a1c810186c42e2dceb1c21979dabb22ffde72b6acb6c88a6deb28a5b67544141e17fa507917cbfdfe2d28f41edaa1a91baa727b439e2f46b2ad130305ea35c436277897c33a1bdbf6b2f75eac5da16c2d6b5dbad0692d36708fc3c966d461982164c9ebc23672671d74ed5a63f0477b43591e8c01076069220e0664fe805483273804d11332c239212fafa290c4cdc0c6472e450a44e402844f12bb19acb678a89a036e4d0f0e8a8fcda8560790228b45c9e23940c2ec2fe410647424f64c8509580c13deba3eb0d5d3620ee17ac80c1f59ad00e1d749ca9d5097c7115fc4430b7f6758d7a89fecb6c2bd7d0066fed516e964ed001c71bc83c6b9f7eebc58185e520d43518b98654e03a7d8572e693b6e4041a4ffd8d227ac83ac134b81b3c9bda8ea83dd6660e16b0efbc0c55c38e8dce56c422ebadf1f7f5e865acd9fb751a1a2d5b663e2063f165cf55abbd95e9f2e5cafca9defdca4c3b2789925f3e1af3543ba799695fe4504d9fa8c97f8d29193fbf315476626da669b80b7ae48d9f5dc8428c82914d0ccf4e6ef5fbdd1376c6fc82e93feb925a63eb9edb84c2e2a2786c77ee6bbb04696a14c70917b775ad9aa0019de539ebe24f7850db3f02d51b1ea8f10ca8ef0aed942b6addd6c393f1b369b7b04d94f2db9bf697204a7448edd375a3e1fe37847a243a4bf96619eb826708383dc827561634aad5018c8e035893412e605494b8b7f2a818253ad908405513ff54c95fa32a3ab05dfe3c80152dbdfd91a110c9142331494306a45408bcd928782a2d52c42ec2b9f807e7803caa02a4a3b6a356a2b5d810af89038e66aaa8ad014dfb9cd0796318e3a2f85902ced184a43add00642311d279006a4cf921512850ab196e1c944fb75da178d257a5db4e64d71c74add7af6615aa6f202d61084600b947db455d654199ac714a5472c9f38bd8824203d65abb220f032f60d6173b365147c2ded56fd59556f58ac32347c045d4d26f0a3eb1c651369842aabf02bb6e888f609bc23084c354ae8b0d1845da691ed79a602c799aa724b54eb52711d7d05e9149a6a779b2dad43b8a6fd16ad6542f6a9d24ae942b980acb0be6c43cba9abf6b4b5d7e88998bbfe209f1930c899c1fcb50d6401ea4538e5dde5dab78b8a47d605aa0ab4195e4e9674df3f8eb280481ea1c2f40028d682d16712850f9cc548453ca94c12f6be2516d84df61ee46f5cd77fecd1a0414191c3e5415302580535aaccd672df8055360f8f6735051bf8e2951df02ed3cd4aedd749e4805dbbc97201f7d86cd25cb495f3556ee8d9eaea75497470de3e73d6621d799dc29fe4d303e45ff9cbf976a68119e4a53633685ec5c3fc6f214c576089e86defe61d2c99fe52738500850be0dec8e4fcce863ade1a2cf039957415faca1491e82a98ccb01cc0090590a6ca0a34b20c3161569d662f0118c8beecae633f7843c21f5808c6df0e8a3fb01a75055746705717856021842ef2cc094bc8c949629eec6faa85464e90575c7525f78d3a3b14589568a4d3d0c28006ee81123f0bef6d1736b821ea10c89647a6191b61a4ae25ae190829a4553440bcd3a0a0ce9628f965f8123a6cf4332005bd841ea1de92c2c39cdcf610cc007a108d86e814d55be035fa691bf82419b0946f30cbea506b0371082341d032e0b564f9d422d92a1364d72f31913f78868badcb445fd606b1a9a82010db6bdc452c3cf314cf8c4d168b35938676c567c84868f2180fe5ea7eb9a857bbfde7469691b91d49bf5b0fa4b3e744030a1750dc44375a27b15d5e133644095703499878213bbbbbb63316ce35b3c8dcac691c5d7e7ec4fdbe2b203658efd4dcafe60bf374694d94ea35565e609aba4b150e2b8fd4550bbe286c67dd2da5a72a5209580552209f5bb2c909a7e8678d29de588e36316b9c6e8171fd3e1fcc59da35a4856d68e0ac2c33f9dba3b062515db8d5d538d3048a31964bd81b56597b6c34a6ad78f42fbbf4746b504436a9b82355eb46db45799f40008f03730b124e95f056ddc6a4b11bfac0b6fb315a47e60657c4bd210bb02167bb512ba7e4875c165df891f8feadc9cf105a19497429a406e9496585369f6cbeccd16604b43d639141b93415694a4b5370440d46b0de86606bdacd80617e56743737167e4b8f434e1af302a09f43250d67fce3b81eabd12447132481511b11ae5c9dc5e79753091a8774b37167129260b4804e9c3bf9020bb2d0156d6d8301f409673dcb1f9adaefbf8560fa40d1a0a5fce407462e8996a94197fb1a905eed6753c2577207d12d77341af1af2b88174c2d786498635b07254b254fa83b8ee07064b62620376f72cc08ae68f8baecb3284284e63d5abc553ffedb718eb74fe7b114181028ddb2388620fcc0687351362bc994c58f5320265680d319a781391a6a3e99e08a24c18d67383dbb2b962cc23581b0fe583b5baae5436d3762d99df57efd68594701beb85f703395d8787dd232a5594be707e6f710210882ba92a744caca145aab82a5880601095e9170b8dd5b37237145ee32d8b33c79a119929721a425e5e8fd166d4bcbe2d76dbea75825ed93497622f289f2e2c69134efac80def7ebab6cd2128f2487ced32c9ae9fae64500cc929d2f0364fe3cd909ec8a8498bfbe5c6cf651829742a41cf29a50b106cad2207f8e297e09b215100fc7704c40d6c0545b96b6b8cfb8da8b21fcd374d61f92f512efdfd8af306474334201cb582276e8bafc771018a65078e47a794b89ec5e00b6fc7fe46fdb07b3c7eebf2799db591d9338179e6cac9362ac9d0b0f00ba5a9f725dca0e0c9f0eed39a7e9bc0b0bc9eac20cfe21d265a8fa288455044d4766422b00d65901678912153dd4999b1c70ae75af8d95d97a9bc84173353b332b1609d01af33c29c1b617ae925382974cd0713fde82d895368e072d1b77fab9b40dd714a00a50ca531f12a80732d371cb577a38f7c7c088d1db5422dfd0f54e54f399d0fc552b5779a89092e7d4d0e15816f3d585870dc4bb2511848842548b271cc295e56b9290305446021d1321e964b6cfa26b0d1356fd8c85ffe94e04b56a157bc127be95b85757e7b207d9e70b86f71a1500729931c2cc812387bf071b384550316a0e1a6ebaa42038b7c293120d6e9b877bb7f2d1002436ffa7e8607777247b2b43ca8c94441a378bfbf7c93c7f2414f31bfb37cb8b638c97b25041b1c37cf3cb83c6da32c36f02c9e3855c94aa6f8889d84a9e6b288e0a43e63e9cb8940a8d37a73f81096b0b92354e2e08ceafaa38129cb56b9eaa1ba60c81ef45f967a17cc02ea34a453715790a687f172a2b60814eb51ed157c18edc89eefa36dfc84c23eeec268cd4d0c8e6c94b2d8f5886e8666aa5b5eee2281d1129a3c3ece1f7c325a6f8fc8e0634630b23f8f8bd35f8326ed3b14454436d5f471ce60e39c0ea52c12fe7c47c976440e1cc4e1dcfeb96764770de62ac815937d04a6f3249863dc099f590eae88a3720f8904fd7183dffab9f139b6cc3faeb8cbeedec323f62f016111c29d906365171bfae4d2ec8f34633102420e1af6b63a48ceb881c93beafad5eb4fec326513a8b615012a9b4210882e5471c5d1fa3c0123c286c6d4355bf9d764446247f10a5dfc62c84d4425b8f96c8784131a033a4f963d08db7305c5d8248fbf17a18840a168416c1ec0bcb76f1bc85fa6692c0df1675efde8f84147c47b3481ff1d7cfc3d40de2937692c340dff70bb921779831bd33eb3eaf306cbca8132b438bec4b56d49254f8a7afba43510e59a548a6ea5c3d07eb64cb9975003d9afda7ddc33419d029d9baeb2dfe78c01f345e7a36be81e6d71aa2bdab03e22174350cf32a3126acd62d750bcc8bd52542eceb5b4d7404641d326e606b0864670e2650555e2d65182ae25c6061a9d88c5a97766f9a0f658441316f7262430767fe2771f0125bcadcd87903aa91a6bd1ca9638a6411c0e60049e61160e37b2d684ba20e016412c1298deeb731ca961b3acaf2151a1384a32ed55700f100c263df20e3ac74555f74357d894ba2b3f413b83dfdca62b119b9d412c77cce7ada9843ba488944dc80dad3554c37c2f327f6fb4922a24f936e23b6a296f212052945db6a15d6cc067fd71f788348468f1343e852b54e54c7415fdf21673cddb18528726ce1ad1e8f454408d6209f06454edca231c2d1babb7dfcc92d568e583967b67f851a0152a49289fff84c80dadd34cc543bf40431d16b05688e37ea698c4d9f7c0a2efd86e40f78e9ebdc2ab45a1c2ca6494d5018e9c395d184acc712ac9961952a3a65b9ae8c5bd059975acfb50dc0643f112596f00bc4858a2a914b841b8691798846cb31c1cdab889990aeba050ea8c5813ad24d2807c8f07e750e29e28d7248c0a3660933a8cfda2d35825f14405ab9b43350b05c92a19d9a528cde450e7458a63b6978819066367d1210223af858627520fb91ea34f3001a4717f4d79f929c828cc1e14d4245cd51a80a93b9e6eca76ea7309ecd3ed65f909120aeaba3d9c2f142cdf2188b5d16e2fe864cefbaf018597412d23fed74589f32b9467292dcae49278f4dd90490a5384821a7d933b95264cde58e55edd8ee18698d37c7b4c3f7afb69a3973102e61177eccb1cf34bc5f69f4027b2b5f3805c3022c49b8cfa2ce31cb1ccb3bf46b604331ee07a4a6563f8ef872c414ff3c0d04d3ff3ff0fef80a78ea9fc62d9a8edb46fecf76c0781b6e148bc8ea0486de06ae9632540fdb85fd8624cb5662d4419abafcd46e4e4c0b8f80e9f8454794231188c3d789c1f1312d795dfe1dda61d356f00c8258fde39399144f6f0782ce6ac8d823d3292d74cece1e2ae82bdd6e7974626b462fb0cb7ab04dac2238b208060304943da9d507f9d7a8a7f4685101f1eab9c2700efbd87ade8b2f7bb5ba2239644e10eee454ed01806351b04e13b54ce2248cf21e04532654874d378543158c71f93a99886cb7c5fa5a18f53e7af556dfc732fb3e4fa55e6492dc73ea4c3153abb4570a5f81fec169d685b477c8e04ba69ad5963fa414c3554ed8aad29604a67ab6d884f680a0fab47e50694528aefa709133b3c2d0c4d59302debd5153d6622ac680dc3ee1588ac556a5031ac1ff45e262f0a1870aabee04e5bf106d501e0106f09e3c926e7aa5d15b014e49c6cfcb26536ae0dc2a7663513c2065db3fa8a804e0e22b5eb4636c0eb296a66805276cffc70fde143006f8d5e4e61390a08bb52d3e2a50e735e953e64f788d7731718cf0c9e3468c67d35227066f4162b61eceed493dcb37d8f396e57f35b4cdedf6b7fecd0dadb0aec451e31947901aec5e1a0a2efd0182183a294687c7c4088b2fe56a9d45f07ea46d5674b2526419755cc8f1d801a5bdbf04e72d83efd600a7272fe4309f6fa32d01a1d0abd1498c99c5712a9ab9f97b8e014aa166dc917ec38c41ab7eb969fcb65d8685f4659af009112828cee26c86fbc8a7dde5e040bf263b8da1d8eef8e1525422db89e9e0718b113b8b9d43770f85d21f86024a07f65fc81e1040faa1cb56ac19f155001297e1e7e6810633b1e40308f2a7c06995d9c691c01ee3c5aae471168db772c3413b773821353c41656a04e95534a973d421e3a5e87231e52f1808a385ba916413e754090b6e702979b20cddc8e681a549f184e612123d6682512f87c1acb6b924c9462ee76998148f3bdf1160cdb645e7c44aa7ec5d637f8ecffbaed187e14018ad0b41da4fe6280f5657b7b98574d041d885b3f436aa0c68b4b8c214586b34f95b5d8c57f329e535c100fafe05114e5964fa31c70a2bce77b5f551dda5a1878f72b4a8dbcd76a1a5ee12612fa7be4e003001a5febc622fb4eaca8777f1535df3835b9120226ee33f5fe9161b6c7755b6149347fca246274a1593b5940397809c3fa756413c483cdd1548db3a4f521938a053e00f90faa06d09d69a1ab88379e1f61f4d222816ffe0578e78e14cdfb1a93a7e25562f5b4615cb22c205dac4b9a95f0d397efc8b66e124bda0388973a7d7da8018d6ae231c4700347e9bf918cc239e4ee28a1d527de6be2af763ff8bc960c213303b48d606458c3c48862302211f59a419682d4283e43d23d165248bb91df114f5cfa8b161bfcea035ad5bae8423a820265963db698c852670cf82f3cbdb99340233ee7eb86af2dcab9d50d125d9cc415f5f7f2f6fff885de9ff44c37966018ca9f20fc5154963e58b5b6a55a11d81e696fd19f648612f9026cde63e1ba5966b2b6f8a3344a27713cdf40d5a6b8c3603a422ef6d2de5dae04b34412b74271c8da169e614bd8afc763ea2c18855652afd9806f364659e56b97f2f01ac6cd833525b116fd5bd2f05cc1ee3c7066a3d410901279c3786bdb68add09ad169e1bde9c41030792f41b89c123e14a844fe20bd74d2413482803fa5fdb5c5f3d3650d1fbf0fd77ca1cafa8d47a34e57e6a16d0abaebe1b8063a24450239fce878adcba8dcd3b236305e4e2e3fbca5596f68654ede61f6e661b8eeb8b0bb2f7bac84a70bb431eadf7ba046a9ac6c8a34e8e7dbe4c7461c82380d2f349b1fef082c2bd6b847fcab6d8ed919da39f94c295bd45c7a7bf5691fd9c87a878bc8e599048b56524ab6fa813f57c30b1211a32300ae9c17124fe12239f111b5ddaa64f52decd4591eb333384c291d5af25df30813f7921b429771ac43dddcca8c41887aefa2abb8df4b6ca6c2eb96e67ebd062554422ad45548761fb278b2d7e09984fce5999ec8817dba2ffe7d5e84c6b8d13b6bc55b8f9b728c674a1007cff3a3693e88afef7c13e40990b455aa668ac4a8b5968e0d1592d33796a2c70c342141c6bc47338524912944a24b3d0db162d985133597f4b395d4bb372d403a6e4a1ea13b164ad069be616746ef4a5e0e68db1a6760b52fa900d2436dc095142ee1be8e73e104fe14c1178416c1ffdcbeaa8df73ea794ce41f2393e903c78dd742ca0e78afef51633d9919968c126c8dfbd5a56c03441599aa3fc5acf61d57bc0004557a62150c531b294023d1b175f829a0e5b0f2b44914aa4482e7036bb816951b7131d529fb4cfd9c89f0edbfe1f96992b8b895cfa10d2dcd25378fda70a590d883dc39288e08a64ae5ffad3d2cc6c9e2007661decfe6117a94b550646eb50248f1f83eaf364b0db2ee9d72896006a94a84ae4a8535bb6e994eb9dc98fb94bd867a11f3b2c3d1940dc6bef84c9a090c8824dd067249715572fa2f26a3aa443aa2de890c16ac62613777ae87181d9f87b3768f29ab6664bf6066a39c500e4b629e1172f22aa50884c700b462f1dd901b9dcace24075f8dd5e6ae88eed54119f60a22411451109fa158a0e4c4b0c7e3c694aee3301479aea7352e583fb28beb268e391aec94bed4596ed9e6b3f870be139eb57505fffd4d722c156a7be09b15ee821b4641999cbe93c1646e97c5d449199804ee8f708dfb90ea20db53fda29e1a6fc5f069881bbfaabb959cbb46ffe6c1598ba92915f21868497b9918b7e643ab3c7034654f1c1746759ef44783d352554bbc9fd22635aad4f48268f7a2cd44b61f20d7614b78a9e20bc5ea794423e77951c42e56b0974552f197a1ed7c0ec7db968f3b46db856030f3d3fb0410fc256141d141d7871ec694baf87cb66dbdedd7093edaa43cbec594e480663fc27a10533f40f971ac767257c527043f5c77fadfe5591ad2894d4d6712b8e8faadc983e003ff73e6d05bb74d2af933ae7ee67580a5b3ea2af72542612fc501d31aa50385548b2bae26921ac0ad7793580a15f2d410839f49012f6d433c4596fec0fd39fa807172e088446774fc477be72c573589626104b57f16075b1870e1293a7455b8e76848a05a9f2c7e04484460364872e96bfb46dd9dc303ae7a22e4d1ac53ef1b3fd62e8625b3a341e8e0a59a3bcb59ccba93a3a6ab711469a6f2914501f455dce0ac373eecbf8cfb99bff72a1fb6858616d30896221bced6479a23c66fe6d98c8c493d85f1631c1e1aa6c89031f7987e449c91b2abe8fc3a34ef0e23514dbe78e4ca96e7ca9d65f6689d0344e91d170607b06762e8300ae918e603021d9724913b13cf8d26b894f3f2a7b0ab54a14a71088ca7de4d073a9804fbe15f3dd6e39d355d494003c57442f0994c31eeda00792e7bc0ea728a7fc08ccbb24a66d3b4badab155e809881a40623a1e1d674d33773bf16fcb934667a46a18a917e42cce18df005568330cfc43a9735db9409a116290ef4ceaa88120e6267ba204cd30c9e7c287820e3785ec6960d960d706f44d32e40ffef2c2903afe51cb8a23bbe7bff3359f8c4db22a1988813d471076176e6d31d3f6459f7cb657dc6e005a444d37a9966c92bf74728b546990b4e76c1367188d9e5b610d28a1a46b7f7b9bfe80095750eef0a406e75f08da3fae5300cdd01353a1ca272bbc0e472a38d01730a7b09593555248f05596279cd83da687c73c30c3f6eff25704d97abc4ec03c37fc5bc82d7b436b31202013db3f5484e4b96b456a26c05977c2b5d4491f84ce1bdbecc932b15ea4abd1c14825f35682b272d336a88cb992917b81fc10f7b0b19794aca255aa0507027e1cd89c69bede932e664e910b313522311c8cc00b763aad97525dd220b5ba5bbb0ccd38d2c05aba6132681c1ee472939a0bb15e44fde8ca0728b6a0fd67e8cd0f9c0041895fc8169ac3f4ecac85349a94b24a6a704571b656341ea758ce07b3eefe1118bd795c38fd11c33d638457a18fb115ff9ead9ce57d1b64af91be2556a347cae71dca591977758bbca9c1cd79f92aaa81a51d69fdc205d2389eb0730101cd6529d9e79331b3cb9295659e541699cc97fc18b2d53b511f8e560c4443baf95c06b5050128ea7ad6a289bab1bf00dc456c3e0ac25073eadf861a8561a26f7be8a3fe245b9f0ff9a065826ba5bc55d9c1c2cb96fb1dd08d1d6cd360e9819845b0e13d2c33a5b0a49aaace07d358e8418db1550dc7ac0f232e8faff706bd0a95f1b70350f23b34d2cd81eb2fb45b8d0d3c5d5c8d16b4022b2191dd9472fc1e86943904c210a397aab097b1932719a0844d0412094332080f4cfa781d9599a6b9b7f7ebea0022763a38b17d7a3d96a4325338575adc5115ffe9f17359a7d76e75a3fbfca40d78aef8267e10b81a398c60c6afdffbc058c3fcfacd0dcf60825ea975bfa4ab9e260c51f38a6d8be9775220951db0ee69618790980ec4ff7d6dd022126699428d28bd8fcb9fe5d77c11cb3d24adaf8f3a24dca1829412904e7974c8a74de72c77415f411e072ba02ec0301d6c46a81a651061ec6bde5d0ed00604b491f4e7becf75ece8c11d0e39fd705dd1fb51a6178716ccb998d194ee6f6b1f4c7ca1d931453c4d4649b025d593dc442208065a4a82209d0a4d24a1b55396f040afe8e9efd98d9609355b82af506300128c8d52537c48addddfef4d7d69ead80de684c10706f6a6c7e30a0343c740f2b072e9b04fdd8430eae9b16b89a5cf4658ae63b954ed0219b89e962aecc4d52aed23d296edd5664083a49ba7200353dffc3e95c0732701a0f501e6996be68b2fcd253e6659dcaa1bab5b515376f2c279f4014d5d07091b9bb862638b10955c5e6f1252f1a92f0283d247bf6d95f0263408721732f4b17ad921ef8f4202b8128bcc00479ca47eb4bd82660fa0f037be4472fd46fdf4b345f609e86d3d79d2cdda9be3ef89895a136653f25b11616e893b87d425b16a2930ed1d108a90ec1e7373bcac64eed9c6d968005addf4b236842ff42102ce419353f2dbed2985a9340f0c9a55bd138539269132027e5df39fe142e51a42e3b78e81f3af32c4d4545593ac0a95efd8c010c6aa7079ea62be449ca062c5604facfabd058204e69351d0a1ab1703d1344a5f017b31edaf5f57f8d31bdf58cdf3894459df236d060cb7cf00229e7e7a0b45326001d0180e094acddb9f5e8fd3d60fc7d12960d6979cd214da65bb26de83c1effae3f2d697b4bb9659232420cc00df60cb8996de66abc00c39ef4c2006f58f3d88d9c884a578f3eefc818c618ce8bc75ee65b09ecf25762d9271fdbe0633160a7f9baf911434b205afe8036d00851fe4aac123ac54e3a099224af56c4799274cbe4b689fc913f92741ce947484a649ef4103afd79d276733221e964a7e5937ef678d2853af57992f4153a37f26e8df3e8c762b1ec22ea63b1dfd7112babaf38586c9658b1a973d5a6098e00421d39f2d4043ff8bc66c6e7bc86eb33d0f6d8f28c14c5bca6f9ecb19bad8d1a677723cff6fec8bc4183172c6a76242db94004c615a9ac2a3974743b72779675ce108c31c6d3ab49f7ada79943c395182987071a15a9151a18a8a4318195a68a064b4d5a106ab5a0828206967a4646e70ed9e465e47118266c6645173363b6ce2479bc9583729ef3fb9c73ce3993d1f2d8c532331e5729c3f5d88d7cb610816a5364eb060b33e59b2ed8ca67322a3e5b39cfa9ae1b575b767810d1eddceb77b81f31ab048ac724499274ce586c0613547a3c1e6f45fec9b39cf39b1b9f73ce59cca2ee4531308010d395803150bf315c01a863f4fc075d4faeba6c188126180c31416c18d330f6f2d89142c018639c7376312f9e247a92e4600a97af09151b3ebecad8aad00949a2d63e5793cfc11df9f9fcbc032167a3783c1e8b2c47cd6747c29e73ce3993244992608404d8daf1d8853a2d1fbbcdc8b7863cf610565b6d1ebb069d2ae0b11ff91e7b075661de3c7610b02b29796cf5d82a48e7f194af5a604c60c60c552d21555736604ce1b2814c5907c6973c0af8ec2418279f7dd66988d38b15234a6cc450e4449da12c7f6facc43947de5875648a86b261e3f08e7c7c3e0e81849a641f3b92551c3c8fd1dd093261e364433827f63aa86c48be75526731fe92352413763aa2b23aedf4844277bd9b7cd7bd977d5535589a90d02033c5890d5df3ccfcf566ea54f65718a35a62d1c697658992a730317463fe5e991136fe2d7d64c592d5a5678d17343680e8ae98e05fb7403a255f56020913ae87a0d39fbf8e42d35f57a153da975ff7e9c943e0ea94ada11c2fa1102433e8ae23755ab9feba92efcbbf55ee0c3952c6ce0fcf39e787fe5094788c9d9c9d45b4542b14791ebb51a7354bb54a41e5b187e8d408e73c1ecfc407197cbf4c7873e5affcc9845e2f9379251fbb397763f9531ae37545d4af2ba23e16f6c60c9f78514dbede15516dd7d315517f3752f96e6ee4a1a58fa9c6c7ae3e16db618fc5c891b423fce962a4cc4be67562c9932e92a4f59109c8ebcbaf9b1b7923ef4bcf8f19fc388e4d9df6ef761b991ad7d4a990c7fb1d46c7a691d7383bf2c6a6f2e9e6ca5f69652286efe0b3d727a7481f19453e913db26928fcf20a6a8dc0b7fea39af245d9b7757c7adb2b7f6f4bacc6d9b10968315a027f8db3e56fe4fd6e091c796f3bea719b73570edf82f8bd522bf52cea2ed95e60ef28a681ea5bde6bdbf68c526775f856ab08db30448bfddedbbcd1c76bcf50126df447d6e418f345f97c3e1f6aa3eebd24498a1ee43697bdba85627319b55d2de2a616e50ada7bb54e50d4e498828f9f40741fb4a8dd95fa04c231c70555adea559640404ebb9100843231c93c3bd38f63a05bd5d960d0926451935e42765236ba0b4c273d7ba325b0f083ba20e6a3635fd219a1f9ece68298cbbcbcb9c0480931b4a87d7481891635ea1898c58ada65458d165120e6a563608616b59f5e75322fd122d33110f31365610365b4a878ba989ba80b8cccd018ca02f6d159c84e7ad57589faf8ece6e3b41b0aec8b24d5256d58b47fdac4999732279d29e623bed95266f325971a9b494451cc398b5914d15dc63fbafbf34a0dacb6b5c410f7de7befbdf7da7befb51a88bfd340831354462b3f4a3b56bdf5b1ea5aebf6e72d87dd8dacb6bbdb92c2bf2495d5dfacbf5cfe723de9e5741b083a0dc109f6833e496fd2cb173f210fdf4f2b108eadd3391bc30babd30a8cf3b35e16cc02af673197b76dd3b23b7903c1095fd86d17df6c5784889e3b1b29bc9986d25aa953c849a226d5efcaa6769103aa5baf27c05e815264afbf54277da9a24514c09ebd049c51168c54b484ec24ca42cc59207da9faca9de78a468f79d5158d681105b0938e81ec31d40531cf31cfd95d403a468b46271b37b3e1f4dfb9a503fc466d182d2ff611eb45f5b19cd5ade33420d16945bbba4549b891b85e2faa540292e817fbeedeebf5f6bd17df48905042e3ba04124858bb53428faa23f9885a91faf6903b5ef86b76e2ab975fbe6fe497b6ab85572a4c9c35e1d9bd3212e4fb0624d5379cb571594c426c94b7c7d1d9e77982f4848ad5150b498f0ff001b4c3c6591bd638cb1bf6d3ce760eeb24b484d9ec235c1f6f239090c167037c4efaecbafa01062c0776e876436b8e44266baee6d96f35e9c7b3f5a1db788bdd6cfdc03a590eace7fbd9c59a62f7f18cee4ea8581f8b61ae334662859bb3544ef603fbc572605d281814040ad2d01d59fa7cb11fd83a9683a7d36933fff273b36f8779acb6693f68ad1b64cf397c44c86808412b736ba3a1329fd93a6f1d3f599dbbfad89542c85e8eb636add60d94944258fa9c4f6071092ad6936e636215327af57941c5c215eb33fa5445585b3ff5cf67b6c7b6b5d65a6bad756badfdd2d66e5ab5f5d664adfe4c650d71bd9c3117fd7a3b605cfa9d0522557d72acad54e380906f7ddff8b14ed2da302cde3e3b49facded2fcaf2bcea8f244912bded7c1cc7111d9f804ef42df6a555f1ede2fbe673e3fb4604ac9364a9ad6551761f213529663c021631ce551443685c5f51c43c7048b5ebc88f3af010f77a8064b3199d33322e3a298a2dde165b6c51cc77bc249460dd3a9aadeff24da9712cfcc5a2b72b8925c07e67d3eaa99e533ff5bca5fefa9187e8e077dd8b6a20dd6ba777f1c4b9eb26db535234c0b56d4b1ee190fcaf67f1b07e77b2d1e13c8bd6588faa08ab8434662cd6dfd18b680a28608ca680c2ec316ef1445fb7a2ef2c695da9c59b37ae3d639caf2bf598b1288ad783f31742a7ded65a6b719ce357e01e3162b45ec8e839bb288a58ccb7134288b75d882ce22ee708fb2349b23369f1ce36815876c018ac98d5882a3cf322eeb43e0b9e98c80a13571a78df6ea2085874f1761ddf761c3821c493235a247ad569d0228a4447718db31568ab03acc55c703737a28ab04e5e4911f9dd59815a5624f1f8489de3efc8b742f75abfb198ed5927cb5573766aca9ab16cac95253537c246b153b0bce82574ed7a12469040c63c637cf138de7befbdf78e311c8b65d48e77ce98a3623bc638168bf9bdd78b1c70c2fd9810042070b35bfb6302084a18617664ebd834f6cba611456faac6893e8542cc8528e0153abdf7fa28aa80aea0c209788519be2710ff84a3ef11402050e8669deccdf6461f4bb3a60db277d69bb9d3ac3ba8cda6f9a0e3456d70866db0d769cc45b74eb1586cf6b1a958cc4edd9ceda2a13b4b6583f63743771668835567efc5a80d8eb79d0ab8040ed09c039d56dc53d74b681c071a2792e040083a15bd3aeeac393b75c2d18fa07de6d7774726cc7c57bd40d038b169337c1b41a345a3efeca34523ca00fb45312fc240e9a457a0443150bacc2b50daab74efcc5b84191a829b0967c425ef53e876da60a7ed29eeeb171d7d1a603a467b67efda2e3b152c6d9cb64ea7229c2aa2bece8d9a2aa27e5fbf434042b687c2cd0da1402429749e284d1402e44a6d828f8b629a177d665ee7cce756c5a33c9218c908151ab7f43112fa14bd74212fafd5791b3085ad4d145d287423ab88d15118d31d0adf2e8a105358e1dbc5189edd113ac568098e1ebb8f8b4ec2f54191ce2ca4f45c8e8daa20fad4c68959a7e828741aa48026d701b978836e450d742b6ad44e5926574dcf3a35eea9d34651fb647b5574db7be28086a3d9686e45a7d11cfbffdc40484ddc189f2852e344a4c689e64d69e6f577482f82d0294655809194cc985501ff0c6580fd14ec7711cd23e0e331ef57eaf681c0cc63e4ec36234bdfd9a0ac71a2970d364e749f22270b4b3a99d35012642e5a11c2d55a6b2d0d37c6dd6d9a5e65bfbc4f3e67ce64c4a7995ec4584f021ea17122e97b9fdb8826a1d346db7dd0118dbb8dd03891047484c6894c84e7ae0249e8141dd13871842e45b74cc4a913ebc52c6dbd1a278a1e1c6d92ba81e8b69bb34a6c1607f6ca66a1d8ec54dd40f418e7ae0283532ffa88b3cbebbfd208c186756e687e412fd917d825914482319bcdc4be2d5a2e2789c6d9aa1558b02ddebaadb2d64970a05c8105cbc4ba65b296f7b6448d9d957a5b8e79c4150fcce7b73e42f7cc67b7115a845dfa2cabb14ad61c091246bc7056e00832d483738413d81123743aba7512ace73caa807f448b208055803f046b77f51742a6951b9abc492b69778888786850f35dfd61804913e3376c1ed388886c45465e33426be36a45d8868930c656c256bc597bd3e4807fe49d42031c93867f6f9aa66902ddc8781a8dc621c87147484a347c9087101414141414544586391f1414e423821c86a9374dd3acca937be1efc5201c7573e58f669aa6697e81319443e3080c13ba9dbf19f53bdc9ba6699aa6e9479d9a704c3328e8aac9162a4e9cd45c39a901844ad524f8e48506574fa004a1c8d8a05e4191f225ca8c1a8ce2264cadbacaf138945e0289b22c1d053a5fba0a342fdd363131b16a12b2a4b7e488aee4f1a59f525fba50a7e4976eeb34c84b372acbd28f4a47ea54a9c89765e92b945ea17840bb75aca6988cb14a02c3e83cb5ba6a254bdc545aae8ac485374db32c85bdb22c4b3fd275a5444f90a57d23c534715c7de9626975c4c69754ce20b76eb6dc70b21203cfd70e5ce220d3b432e24b3b901c2c132a33979edd36b5edd9a72c252c3e077df6154a2091dd8410a010f679c4cdc98423cf4443e0b21f212925117ef610a6e87cce222dc4d368537b40a85949a220c0664d49bd29067f2f0a39c8081226c80b6198e0e818833cc6a649a31d89124432230b090d564a70c484d39e22687e5ce5f89dcd4d9a690619319325eb88119a79a6833ff2391711f2d8455c8486c75cb2a49a64196111a604628cdd90e96066156102408710b8d38f907e6980fce921740af4a797d069f6d3499c67f93b4f274f3fbffe3c4f1f717aa5f339e7371a3cfea1817aecb3eaf54a2d06c5e0e368a6158279d3c7a5891e2c3bc0e8c1812b4fcae3f344f33303e4b30be5df99a6cf8e31c6954568a6e975e573f933c55fceb43a2a6660c9bac3eba292ed8d9ce525048f8ac72e5ee1c1f278f874753514a3003ab113f818636ceb6c7db14364863b2a0af0d96d465777a83e6fc1994e668c9ae6d95774907cbeaac3db92ca53e7c78d135e8a40b540530287092457cab4f0449a159fa715e1bc8931fec118cb79f1f8c4780ed4ef6a0ed75007d187c18a22746c94d932a3c506596590ca2e9a5c24f92c830b3d19934370ceb400fe3c1062f2d8a461a8cf2d5cb5d03100177b37271362136bc71490c80d1550b60690656acae61c23371c81f2f8ca0c095306488e2421f9f29a029e4b4476504981c1c719295c348268621e4be5f90c3402e4045199753c364d1c65c58eb3d1a6722e32cdf7db1a52a31cd203081c62a512999a018954a129c2a3c89133523d93c70f2855a6c3970ca1245694cc60ba31a4c169d64248930d84a0998176c7da24eb02919c5d087e3692a3c74dc7d9de7c36cd9c332d488a3441da3cae47e5161026acf8a8a1ebc7d6679f652090249f7145b4376f9aa649a3f56001ec81a68c8f2ba4ea15430a0b2a2d6db0dacc282a6d8e8c32c067a3d83025052825ce89365646d56363cf151bd470c920430ca2ca64a72c732e73ce3cba1e47b570544645d9d261787332a179cb120cca88981b2a48d9d0a4d16e659987071c2b39925081e9d160785c9a34da93132be0d31001993c3b54b0d2da241b4c656ca0f9298136ea4cf169f319354d208d28354ac850434bea35a6329f4dd3343349a3c580c125861708327220c9f842668612a7de16a732a5531b2e39ae354b98a0d0a2070a4690b9f5f984f1a20b461b323da0870aecd190c1f5f2f2cf380e396714c2cf6669da38d48850274277640ddd9d1cd0f384939515474688384d3ec4f992247c01bc126e2140360ca122499a1258e62809f362c8d6007205874607e54fc8e3f15490565270443161a6ca0add8e74f1bbb396739633e533cd34e964b1cc9d2daf2c61ccfcf0313325e60c8b2324da939cbb8e3c0676ddc902ce20450c993240324332c0325b7ea71620ab2862f04126840f139fb364f9d002e4189f34cbcb82453115730f271738bd10b305c512ac610b21133ea2c0c813594c5e30c6382b4a0879ba7181878d2d1e6f920080313e31c674d43cb68377447dd9510700bc1ac038e1e918a6a8a1055bce399f50f139e79c73c61183982710399c6ce9703146c71752ce396f002643c810324c9adae876cee27738a19c733e91e473ce39e76ca3c7d38ac7333ca929034585ebc68e5acdbac1842b0b878b02d04ce4a95103393b856c407a68c4b84263cc679fe5ac1a4c3e57b17df8756db5793285ea845d61e69cb39d18271e7f3d8ee1e6b157960c2c1fcc4891266b469b2e594e55601040e506c895167a9000d1edbce977b899198c79c050d2a5c7f4b94b6f6b035bd512945ac3050686385aac8a14b312545e6405b360f4f8f9eca790cdc8715bdc44a9a131a54a1214368559a2099a0db25ef43cb0e114f03b1ccea6148e8263019413255437c8ecc0b2286835b25cb4e000e313b23a444c33ab8594cf32c884f729e71c13912578825533683075f0715ab83307098b88976a8575c31e2a61b66166caf967848d550d30566e82565753b6aca640711d8da057430c3cde9799ac13bf3b855cf82c13d2328e18b06c49e9b181142d6568111083068b95ac2c5d2fac891f309f51995036a4e189b2628d5514a101aa7c6855cde100430b290c561e58c15003971f4d4e952a6a566c81824a924bfcee34338fcfbb9c73ce50e5f864c8e32a4fe25081c2a42699c212b94990314e78639c8ca1552b276cbca8b2bc6442de73c11952a78534568858de0c6c2ae79c6d30bdf0854bfd4213e5354389313598f690359bb49c6497c4f0c1923c62ac9878e1c0ea05135dfa0b8782196b86352c19c259a2e703edac02f2d6f74f2d1a677b8fc229fec853417c8c9d7833153e3f767cf3ed84d96e6cfa91377c9a892b819c3138c0bae0f991e286dfe14e2e415ee6aa4fa76253315fe380586f1dfd51fd2ec6e4ad5f203129dfd3dba8b75e8bf5de7aecabfe68341a6d01a48f6cfaa2ed46df8b290dc8c12d91ef6c36df9d4f239f4643771c3870700e5d6fdd86eece346f9d08ddd93ecbd7d897b75ef31101d39c46bb9540fb1028819dda8ff970cc779e3f3658dedca003397e2ba0bc20050c4bd850358331367f5f73b85a2b17b4e5b18c2541bc98a00041a96543d372f0bb338e19254eae94e431cd20a10d32a14ca824471115f963834f9609354141379910f3461acd7c8385004c33cb1f5819b0a938537b86acb0e1772793a0dc1b7dd649b245934e39ac93529de3c02399905426fa7b3b9a4f63d45bbf7a23c3004343c0ad163f34343464a24343fe850c08606e5001536683a5a1eedd5cf9eb9eb934a4c8d613d5d5133d796aa0e5f257024d5314539146f3b286ca1729039826796a0074c1891a255c4ea0c8039435c447a3d1683628086c0bd04b140d68349b82176c7822f20407cb9ae18bbfebe0bf646017aa0ea6783c5e0bb45cf5d9a499342d2bac68d18a69e1cadae24306e09638555ec800a855468b112c402ec3fa0b0a3929e4a710ed85841c272424e435f8d8458c8586345bcddb69735c1098a02014e9b44d50b656f46c440800b4b8c440686e7a49336940524998aba61505c067463863ca9f8a17217e64b40a66a229ca3c8d46c311e58494a9205f63bcf0c0b141a3a53852802048a2689de0e1f931c31d9ca198268d0125168b133bf6ab142c4804bc0122a58515438e40d9f99d4d4d09b03b57588d96225559883069d521b130a6d1503cdc220032859e1dbf27202d0871d0f9dd997306dbf139df193ec6f3b40588670d70c82103678ee0d011a44a8b3673ea00453b72b6dcf9219d3e73bc98669d1a3e6b01da018a3831c670a61e9ba669e2ae0f9f336e93421826c59a19925ce976a49cdf9db2338f5138b08e4c98f3eecc3bbffd0e079473ce4c9f4dd3345da933d389d26843c0b0ea14075744cad42e45928839327307b040d159b3a64d9410861c3969b288f179798a53332dcdb388309d5ee69b6c2813d60f64289ee6b587f878f3ca9b66b6bbf3b12d0e8b344cbd198ec800a766f180d050d91095096542ecd3fadcc52b90939dfe3c909f361ee87c2020c70101b90de8488a031c79f2d883c747e63c0ec0632c02599fef3733dfcc108683374d35d9ac57524468346c24863739bc699e6706c0409928c2e58b0aae371d7c1c1426ade37cd974d6df8d3c2c5e197132ca9c44e75a8bc7e3d1d0c9dc849b5b8ab206c99c5f162d2fb0d0c9c05ee6c4e465b2ec32b74d2364a6cb647e24a3bd6c06d7cb6c2f93c964b2165d5e2693cd90f3d983d38e3e0ed9a4b201424d76749a9723ed6c5cf671fc71d14f74373a0d1d79b7b1691c9b4efb463a6bf4a507e738a2e3574d6a40cd7ed23c3b997da8268d3aea06d673b53474672bd1dd98e3ade7f387a679bce5024a59af5c50f1f29480ab1760bcf89040803134559c8f9d041b8fbd04121c3001cad0630f41a7f5aab7e5b19f801d85198f5d854e0bf0d857c07aec2c74caab5731808fbff4723c76eb742583ce63b739f0d50c2c8f69beb72d60bc699abd251c587ed021f26386354137345999c79c2d704b6fc98b1e4e5774b4f98173258f3e42235b50a2f47824626e420850187ecc55e8b4fc985ba6582c16735ccc8f628ed4e9cfc75cc9c8c7c88fc56231273b3d3b8db950a7401f8bf90ab1ab362fbc6c8a4c26fb3d49c09ddc63033cc632e1151b2604ac80547fb21b9b2c4c72706ce14091868d0a99cc7ec100e2ab0b17cb22c498910789181f37be62659a9ccbab2f2711d983911e64526c6db1a1b206db12c5d36359092ccb353a0870b5064bd659db404913a461e7cd992a554d1903cb0693d31b37616818ad89bdee2a30e6342f63b418c6e789ee648ebd94ddc6a61e792393cc444726196abd96e84e864fd3549265d02a81583e748034b45ea96981818f933e5767de677c1f1fc7f9f8f8b8930190ddaba78f09322f13a0dcec9801bc612843b7c39135eb0495b657e86c06d403e367330fd129f6990749b76fe71075735828e4e0fb1a765a9b3aad3d270e4f5dbe9d430e1b574d31172eb6ae6fb765b169d98235c9bfddf6bb391c0c02bfddd6f4d469f5755aa798d8a8b67cbbadaad39ba7a6f8c9933030e1b02681f87622af9bc3bfdfd7b71345dd9c05c4587985d919e2c3055d3b91af530be7db89a66ece0433c12c305069eaa247d74e44d5a97df3ed44bf9b2b405793218f35446068d2b513013bb5605a5f829db6131141d5142bc14a88727c3b518b4e39783b518fe8a9267df8f65a58e7ca1f11d3b7d77e37e7011f395c3069fa49c1a26baf013bb56ebebd16ac79dd5cfda28106301b339c7803a66baf7d756adb7c7b4dc815e5db6b756a4f6a8aa13054adeadb6b529d06797b6daa4655933c7c7b2deae67054fb90d7cd59a0862a383c5e24092247d73ef4d5a965f3ed43c29bd3e0061346a4d2e4f15183ae7d68d8a9fdfaf61aefe6ea952a55704ca53872b544d75e6bead4aee939d59e9a7c7b2dc710574d71095c62a8ebdb87b2745a7afb90d650b026197dfbd0efe670131e027efb10efe6966234e5809af2a6c41b22baf6a1a64ead9a6f1feadddc09d658899941a7c50d13baf6a1a74e2d0ddf3ed4434e9db0255a28b674ed43be4e6d9a292643549db60f55751acb5353910d9bb06f1702eb347bbb90506828e47573a250f8f5ed425137b74404aa478e2d1c659c50d1b50bf93ab568be5d68eae640385151e34e180d4ccce8da85a83ab567be5de877733e4cf0a4b011244f952c5dbb10b0536b46eb4bb0d3762121a89a8a5cb8e4f876a11642bd76a1a79ad4e1db857837270677424ddf1ef4bb3916b2c0d005879d285c3774ed41c04eadd7b70769dd9c09862fa0446942d59442d71e14ecd496f9f620af9b5bd24107c60c56277e1ce9a26b0ffaead49211d61976da1e1416f4a4a6e293274155df1e24153415445593387c7b50d4cd89bf20dfb70379dd5c4dcb9117c620f1e1c685aeed0cdf0e24bcb9a51a3364c909e265c30c50ba0ee2dddc0794b059a10287d7940b5d7b5053a7764ccf29e8890bc6b707e500e2aaa9d843ec01d4f5ed405980b4808235e97773a26f07046c7aeab4fa3aad534c80a8b878df0e54d5a999a7a6e20a71451898f067589388befdc7ebe6c4ded7b7ff44dd5cad53a785a719325234a1d1b5fff83ab562befd67eae6966200a9f10387892f68a074ed3f549d5aae6ffff9dd5c59078e09374f615e60a36bff01766a835a5f829db6ff74fd40d5f4ca91f393e3db7f5a74dac1db7f7a3f4f35a9f6ed3fbc9bbbf7a7e9dbcfdfcd4900c60d51ae901933a585ae6d986f3fb56e6ea98614282f9ea2aec009a36b3f839ddaad6f3fbd6e6ec977c4450c25f0b0d9e2e9dacfaf4e2d18619d4eef304fd8939a5eaecb759ee749559386befdf46a37bd6e6e490611254ff470a951224bd76e7e756a0e3bad4d9dd69ed3f9d469fb99a3d3fbed26574daf9595d9f5ed661653cb0cd624a1ef0b0402bfdde4dd9c086d78d061e16b836788aedd6cead47af976f3a9d3eaebb44e3131a9dc7cbb59d56999a7a677c8903030e1b0260579dddc9d9afafa765ad4cdd5af25597ca078b3424f115d3bcdd7a9edf2edb4a99bdb20c6d69e143cd07071d2b5d3a83ab55cbe9df6bbb9ece2040ba1131334c8d1b5d3809d5a2dad2fc1765a170daaa637c68d41cbf1edb416b41eeda926017d3b8d7773f7e9091814d61976daee13e6f3a4a69d278f4fd5b7fb48f94cf950d5a49f6ff789bab9cbbb3ebe5f2ac186c88a145c4c0431a26b9f7d756ab77cfb6c48343c13d5e4c98dde97aedda7a953aba5e7e4f3d469bb4f8e4eb96ada66daccacebdb6759665ab3604dfadd5c7f7555e3c29eaaa6ad201b29baf65953a756866f9ff56e6e298a9823254a38ad403147d73e7bea74167573b54ad414385045805465746db14c31995175da3eabead4274f4d3b2b2b0c4c38ac49a69656d4cdd5374d845636d4680a5ae9da4b5fa7f6cab797545a5f8250bebdec2aa16ada493a4999e3dbcb1665af7caa49b46f2f7937d75465d3b7cb7e3737fe000b0b13d57be242d72e03766ab3be5d16f4bab9ca15e7088e26529c6ef8e9da655f9d5aa0b04ebb2cacd327356d22446455df2e93924dc9a86a92cfb7cb72744e269401f91aca9a643d1ddf2e73eadca96b8f71d5b47ff48f582c160bd6a4d9b7c7aa3a57fa62584d4fbea916be3dc6a47340ba76324f4d7b45af0803eb744838ac49e5b7935e37d7bd6600113937823f7c412cba76d2d7a9b57273b5ca8f15519a8818694183ae9da4ead456f9cec0151f3382696a1c09eada4960a7968ad69760a7ed6457a75035b572e4e4f876b205493ed524d9b7933c3ba2696a46af0999306f74ed23b0d351ebe6c83a6bbe8288b182224bd776ca77ade326c91c1f5b572edee8fa4a5867d869fd0599c2c62735b55c5c63d5b78f52e3d4483546dd9cf56a72f47d7bf6bab91460d819338549d617175d7bfeead45a7d7b16dedc05a67c49136644d88589ae3d0f3bb5bfef251e5f7c1819b2a54246155dbb949ed3f8d469fb982373d5d476e992bbbe3d67c95a395893aa3a27f36a11d63b63353df9a66af8f6cca473325d3bce5353fbe449d8b763302cc4c39a347e3bf6ba39fb6bc7be4ea76eee03198037d480314145d731003bad5a5f3a0dcef9266b6a7bf4c8f1edb805c64f35297f5b5f3ba0cc19af2d74eeb8b043d72e023bb5307cbb1814bd6e4e044c6ca0c4ece0621547d72e7e756aab845f753a950dc33a957dbbf8a4a676855d51f5eda294382552d524fced62d4cdd99ee8fbbac39e93f8b4d529d0b75fae9aa620a7ebbbfd6add5ea157f032830a941e1bb8aa746da37ca3000692132d78d1f8f1d0b585f235cc0e21298480a9caa347d77e7d9dda2753e47793796aaa01ae30b04e7d84c39a74bfbdbb97a8e68c29a32608913b4874ed54df4b51603434d91015160647d7d6c9f7120c3a4fc05c080eb380e8da36d1fa12b4f23d7e7b43d5f4abd5db9ef5534deaef11d58bce8e5e9214607e6ce9da2db053fbc257616c184358a7b16fb74f6a2aa2e2ac8b78eb56ca4eb55baa9a64ffe88a008147d88f2b714e5059a36b0f41a72b04fd7e5e5eb8ec012ba26bbba4e7d4e2f7d5404dd18ab3dec072d8431f8104aa257bf0985822e485ae957cfb79731c70f3248f951f5356286c922a67c71a2f532bf03035e97aeafb178649fef6f2ebe664c21a4a85c5cd1d19bea8309183e49c83678b0b6fab89370f37eb8219304f98cea4d9a2db9147e8f030aa52248316528b90b7f9ec6acb89b7d936d0e64c952a6c6094916244e8ccd7b2c8d025c390009c2594ab2c2dde565b42f2630b8b8a2e7b6868d2ed4ea973c8955aadd658b440f8a15538bc5a0dad5d5d1912bcc25262cb59abd530a8d5644cbee6d5c8c8c8a856abb9795b168ab7b9902debccdbac78ad56abc57111c5cd9d125254b0d1edfc8bfc0e37d66a1ebcc6e66bf98a5737a8d56a35e97af000dc7a9bcd56abd5ca5aad56abd5ac7ccdc8e8261b1ad5c82b2093b79145a6db26b3fc991e4c9b9ba69b607a0880593cde344dd3749ce947484a61def479d367fa4cd349d3cf236f9a1e8069de8834aa69daca93b7d96c3620f0c5dbb26c365cc3308a47a5852d201533b7aff9296433f2abaf79885a055a79f1b5a39a071d61760c79bada69da3c88208c8912797878d1b28508f65043c1e54da3f2679a369b7bb8f98860f3e03689945f922d6392ac9061c8100b1a58b8306c1243165fac566d4378bce9c1c8344d9b0d88a5e66bb55a518955e4d8fb097fc06ed3d82fe1b0796c1e73788c3d50fdb0803c76fb056323c76e9bb08f3a2560ec03eab1ec310e81710f2c8f31c64e9e3c883c76a191f7010512e58b8a8a8afc147e51d155902a5f545454545454a4e76d369bedc795b7b9900d488eb7b951a7e4bbcde6f3f1e33db8e8c1438f19dec8c8c8e66fb37df180c2010f366fba90e9b6a8266fba91d9e3c59b38f3e969878eafb958abd5aa98f89a0bd5ae7698f99a9b329d99bd6e4e26ac793d12d410375f4a68b0f012e263da6e14d530aeb99111baabd56a35186a35b7d974cc79d334ed695b52e263d3d4820b4bccc0d1eddcbaf03b5cad8951910d751247d1590fb5da550eae2b1d44de049e44447e3a792217ea34e889881c4744e436221719b4971451fee5df1311d5acee0811511b6b445676ecbc699a1cb28f28fb300d2f894c2222bc24ec6d2eda6c4436a22b2bb26cb6234fe44384dd543db6d96ce2d5921c4f04f44444764f98325360b011662248b6159de041e4264a4444545414e76d361b11c6c0022b7e3720a18ae3a5071019910d17c984e2929301fe369b92aa273ac01311d9dc2e41393143c317e74a8f2c3f6218e337721edb8a88ae943c8528a28d3cebab49513647a7a6d33c049a8fa0d19c840921b04d579ef634229a23d1bc92343f697e64e369de41a7404ff391e745575743de344d990db5baf2d8c58ca236f5b9e9e664c2dcf4168c071aab2b3480d420e343c864f298466bf1d631c6e3c87ba12500562fe86cd9b0d0ba10a9a77df0349a69d2e0e031cd2c21303c3c8d76bb5e9091a3832b8997ed6112c9843221d18dc30b35d40163b0b25ca0f3a6d19ba6e3a0f58a818971cdb18ec749b656c3f2a669faac4f376f7a76a880ee6439f110191abae0618e971076b4004087ab080f943a3d6ac33841360240272cc4308a2d4589070c1b0e7950ccc8d8eeec316a818e0994ce8e10736810690ddd695392b53a5080e6087da0aef658296d197cbd72d2fa9faf574e52d23265ed14774560fdaaa8984c49f96a5b6ba36e0e2bf653dbead46bd1c464792caca0020a278440bcf7144574cc185f11d5f3cd040e348e1c499440c2082342500241ec5e12db46468d3b95187a9db58df0421b1ff005264e5e416c455f8168bcdee72b108d97122944507523c88b26210e2190bcc2de989275e2f0d1e2448b9d2c594992f40f1d5dce88a2288aa2285a35c147415f81564e648bdce523de23a098f356ce18637c73475766f7a83b406a1c9e029685319eddf0edb6c62d86a034abf2fd80214c42a8525f94448730628417685f815642aca25c590d65796defc4ef3ada2a5611ad8dabd6955a0413c4a3041727392da4ace8dac7cf0bf578113c95a83a93e30d9595c53aab9aaf5e87dacbbe7dbb5e7d2270db33ae2a606b43593bdd7510afd79ade8bf1edbf378fdf2cd689c1c75c54395c319c219b3a6a4a0c5c44d14f162f8a586cc8c093a5a3ab461c9de8de694759d923830cfa6a450f9ea77db5a2874d171ebfb4430b180b335d4f60ba7416ebec1ddf823d615d9448b5d8524757bd0a01619a42e3635fb380bf254c37c0c014c5a9cb5047a5d2e4c69b2f6acc80f574628e5296c2440d3250d070a7062738fa68a9840c4e75cea8988185c70da8dc59b1b2b294f9f2eb15164a6690f9c8b254e26549628d89125500a9c2ace8a4e8a7e842a2522b351005952fbf02df5419e9d8d3db5651149f74c49c14455114c5185945f4e76b56969daf7dcdba72457c536bfbd897c417ad6f5310d19d5895ba6f67ddc0fa6d1e650d61ad9c7ede5c1d613877a710d96e6b3bc383870c2305d595ad1acef48242da407900c0d72b1e0d2ffb7ac51bf3248af78a3715f0572fed8ba978ef0e6311dfea22c657e4e2d5ddcd224cc7c4ebd3e2031b4baa84c469e3c6e949079b6f7417cb642673b6cda2bb880d5aacc0590166e843d736beb3647c67cd789cad3f079cf62b8992c8020e5fe86b1630cd0bec52be18c789b209d0d7ac2b35bcf835ebca9dbf37857b089c068db336aa2cc549e4ce111968a4507255634a97142e8b9d4223446fd146c138e224040a068d17fd34f2a20b798a302f1ee19ef6f5aa44d3effc88146d74576bd1eeae3ea2d5ab637c02ae59046bf0064f22672c080f8fd88e1455540591b1274825c9141c3ad1098f139ea7199ea659d8cf891f372f1639e34214b3ee80c1f37bdad72c3c4aaacadae9ae41689cf5f1e62bd64b8e27ccb2988ab771ed99f5b95ec58a6be334387a14578c456f1c49a7a23db37e75b2abcfc90aa6195b94449921248fd9040cd2065655c28530256e003af36f28ebb3ad563c2f36263866cc3811c38f2b32802a58708f1e3022b270993123460b5e48743b8ff13b5ce917f8185b2cda90258b4600c2a07c76a3ecfee2b387c8bf1bca7c760d3af5e0b31f75d0e9d36707418f9bcf1e42feed89e1b38f50b5645ea2988a36ec9881c79c305856a664add0edc8eefdeeccf96cf298a4e1dcf929a4a206249f5d28ff6c40f179a9b7e2c416131f31f4ae60e41a3c0f96c718c868c4ae48c648f1e64162948fa4886faece9f9bcf69a2e71ea27355f71bee78fc13c37e857cf6e0b4e238ca3c468af70e3138ebdcc8787c8fb5805bbf1749c2006198d2f58bd2c6711abd71d6c7911cc9cf238927054af31748eb22e92172f0319973668a1186a746892754f2b48bf19e99b4a45f11d6cff3731e4912dd8d21dc313a7a46bd71388c31ce3d042e5b2b8a77767c920ee7a6ac2176b3a8afd5aa6981cb9537ba4ace465ef974fafcdef0cd39e7dab8aebbe78410d8c71bf6d28353a871e3186246366ea47963a7d1bccbd204cf3715f0487a79fb5e5b31add60d761548d61f49a2bb133a78d2f10a9df30b7e8c097fa74263b74f8a702c07d849bf37ecf936166517858fa35e04b31c5c1f315a1ddfae93b79808c772703d16cbf7260a7306f2d2837388bc91681ceed9a874652bd85e4ce9a630fef8828fed48d2ab4fcc957ab7f4320758169603d2db71ac6874db7bfbfb26cb01f6d84892681c6ef28659580eb0b7fd11fb388ea50c2dc25e7fa6827d11b09775d6b71d12499224e915ddb59f5e8eb3a05b09d6b8f3567e01394f3f674fa6efcaaf069460638ebac18c244da42f8724799e3607ebb40448ffd5e9c901dd916410ba3b4f9bcd6527ba3b3abd2a75f51961e9c98aa433d268e955e2d3a701e4d7bac1f8e33c7d9cbbf2a7d52989aa601f0815e16279d5dcba79bdfcf2b6dc95c1b2a9ecc984f826ab231bcac27c6e254fe645559344c73d08af3e228070a52e999078d2f198c71d67aca3ae08510863f1e62e4363b7ddb95341fcf104dccd95babcb752aa64d2e3c47e02f1b167173ffbae9c2a99bcf5318b9f42dd839200f7372f674e35497ceb331af583ec5539b05eb1c860ade0dad2a372a2eb166fddf3191b6f41f86ed6e2edac5796362f3d3847689c52db6ebb5a8ed0b87b31c618638c31cef82235eea2361b09aad763740436078097519d06c0ad97b61b003c00b70cbeac3e0d0080db1cdf6c3e9b7d00a6fcccbf7e500e2b07d6671dfccc35e85cf943ea14cf5ca92689f099cf7cc867b89f09fdcc30f099007c36f3f2f78396c38be60c7018e74addc1ab9193f0d931b61885570177c2d1e723d27dbc9cf2f171d2c7db2ec48f41be13fad1679d2b77463f8e4e767afac8c1c7f1de516a04c2e12644f4f27783d0d38927cbe80eb71b8f1ea3a42b5da5266f1d7c343dbbcf6d77c2d1177987222f7de5148fb3c877a5afc8b15488f74d755a7d44c8f926bef5c14244c76291974337fb4403f0e0431e3618791ab8fde0d6ab8f081f5ca94ba01b01bc1c86701bc2d302b80d3e076503b08f2310697c7b23c1084627329d88c847bfb71d083bfb43bec3e5ca21ed5ed177467f397890d7bc2c77fdd8c95c3a4ee1051ff30e295806d89b2b7d43e8cdbe10d0efc7adcf823c05728b7f6e3968dc31bc395eed761442e3b073b89170bbd5c69d378cd42230895a1f06f467b4a2a31ff9bded4e00e14dc74e743bf2d2cc63d3d83b7166df91776cd1e9454b00c2d8d4eb14df02dc6ae38e6eb5711c5821a267117d01083a232852fd0d6ef535b87db89103b89d5704f60c3adc44dc48d40db07bb8d5c6e16eb57102b8d5c619dd6ae38abe60801e350ebbeda674db0370ab1f62e43d95393a9781ce3a006e3b10bf6faff91ebd9100f7377404ee98e64673d0bc8023678b9e1e3374b65b2877b85a6b69f311dd657757baf904dcd8e428889b153d5c6c1f98c9b1238a0d29a719583c499ea7cde67e6faf78ec5761bcaa64b8e10a93ab2970741745f19e2bb2375f6958d889b3e3445513063f3a34703913858bc61c2735b854603035230014580e23419ad4544901acaaa2d5904cdd60a315630d17141e9cd8dd663bcfc7fdbdfde6b47feff913e485b303b01c5cb0f244d99ad261261079f2800021d56991b783004155932a9a6f0711d5207cdffec1ebe69662f0caaa6a8115a4441a5dfb87af4efbc4b77f10dedc0a80dc10c7891e9fb086aefdc3b0d336f1ed20783757bf1899ca23c34e1a3432e8da413475da257a4e209ec4bcf87610393e70d534cf9993c53f7c08d6a40fbf9b2b9ffa03f0db3ff06e2e5dd21bee39f224ca8caefd4353a71f7a37d7410d2fc1a6202ddc0075ed1f9e3afd107573b50b7049d51d2a508af0d0b57ff0756af54c31f940d569b51ab2e6db3f54754ae6a969e6e202eb147bbb07a18761bb07af9bcb5e5e5fdfee21eae696a0d44839e1c5cb1915ba760fbe4eed0ddfee61eae644152ba46819e9725145d7ee81aa530fbf9bab411429e6dc98b3054643d7ee01d8a9b541eb4b50cc8a6ff7d0e501aaa6b94beee2c1438b4e89bcdd8387a79a54c57cbb5158e7469ecd771e98bedde877734b31c4401135456b4c1921ba762360a7b6866f37d2bab9089cb0f3f4e605a10f2bba76a360a736cfb71b79dd1c0a827168d0d2d174c3065dbbd157a776281463a24ee7465dbbd1939ae6274f8caabedd48ca68ca88aa26552edf6eb433f27d7b91d7cd8188b2e1e4a24b879a30baf6a2af4e2d9e6f2f12dedc920f08971d53ae440171e8da8b869dda3bdf6ec4bbb92515bc2a5a823bd6d829a26b376aead4dae939193d0dbfdd2807574d738f1e455ddf5e94a548ab28d85ef4bbb99c8b80df5ec4bbb906288981c69d17b68425d1b51735755ad4bbb98a870a0b2c41a9a9a828baf6a2a74e2d9d6f2f8abab925df14235229aa7670d9d0b517f93ab573a6981451c1f9f6a2aa4e65796a9a6fdc08fbf60e513757b90c4101c7c5f08baf532be7db3b4cdd5c659303860e2b50594ab4e8da3b5075daa1c91553931d16bc34baf60ec04e6d9c6fefa045e6db3b7ce9f4fcf60ec14edb3b7475f0ea90a6039870589300f0ed1da06a9a4be4122d3af43a3cd524f4db3bf06e2ee70e4dc060a7f5abd32aac33e40af3ed1cc2383ca92966c38643d5b77390e230c581aa06a59fa8248cb7b5410a9562233202000000b3150000200c0a08c5c2f1701e4681327d148011639854685a441287b2280a5214848c41ca106200010003203344b50de0e8519663177e406f09b85777b502be7a101072d70ed2a737a0ec0e7283be15b82b5cb50e9e80d4d0bbb8a80dfc67d500407de75a219d5e35339b681e5be8d7a900debd90db78c4dc22e6a0b85fd8bdd8838fa35b41ae3e5fa06b2de0bf9300b943ed8af8a3890dbedbc0fdf046e4167913caada0b8ae0dc6c31298e98c6aef06c89ef6d92be58fc349e5cb829e2bab2bc938ec4c5a643a87a0077a67d3245898e39a42bbf96ed25a7e4fe2b83c0868107a452ba1d7a3959089e610a0bab52ca9b60a9065edcadece21f439c1ba8b60701bca75a22cd163e12f5b0ff60d213bd7545555239e2989745f96013166b9e5d308f19eab0dad9f7f2b56e7ddf81000d8f9c8b2888da9a2ad65515c59ab26ae5813525a125c5179a947ab454b40b33de5083d464fd043b4143d444f848e00f8f5f6902cfce641318cd85aa2c8ee0c9c2a64456e1921a3c70ef96004ce97e1fe875bf2cfd35b390fb57a29a72cd23724e1e4ce7aac3ca8b62c3122b696d8ea38b2b02407ba2b157692f17da025e14a2a1e8a27e2a1387db121385f7ad61a64241a1e5dfe29eee16ad73a563e3b9c37d676d7dafcf0201b5eeefd4fb8134bf34ccb6767c8e102e7b4db87d2701aca427d534565cf170e24733fa3b77ab14a8738f1b8e088d2373a1a77f67eb32643da5a38ccfa1746477cba8407d8f594eb84edbb95150f85284896f359d0ef4844ac1a590f75f75d86b840d3a4dec6adeea2a37dec26eb5993b5dcbc8fd4def22d3bf3e98cd7c20221ef5eebfa21b46df91c37711371195ce492a8ac3a4f9064b756e8ab644bb40fe19c4a9350cf38d87d007a745635bd6c0c33006237f7a5bd60c6a2a069b65b2c959ff3a640df704fef9da7011cbb491cebd5a82b7207fb85d8c1cf6f98902502184cd022731f5c54ab0d9ebd63ee672bf351cc25318404635b8ff9bf47991c31b16fd6f85886a71b5799a3fc0badbf9da4d83662de458e62d87568e43318ca3e77dd22cc73d5863728d4067cc2e88d0687d9213d2a19c88fc67f73705bbf6154c23c2d0be2f0c53e9f89bf17ed77087a528db886520060269161f8bfe5e1951f4505ddb02648130213a82164783ad125d95bd0503642bf05379867569342d37e29a3c947e2a3da8690b50c258694f4359fca9e9411bc273fa9ac8ee014eb068f2582ddaaaeceb9bd2b15f98f0aa3f590d293229a2b34a88e562c31ecbd8f7a243f39c357a41d7336813d15dd56eb158679aff4a11b7de5a0c3a6169001b38c668cb871b4cbf6fec3c618f37fe5da9e7fcdf65ab916bcbb6860dda40d1e2a1d2a93aa44c9b11c37f70817f9bfc4e6deb60cffbb258793985b093c1efba9853749c86d5608b33b53002c49cccb70f17b4448386a73c162c48cd7ec305dd08ca55b1526d95af7b716711e95e63990651e1f7972f09ddad31a05d90669170a7279c4f6b05ece447a0e48d566142f9003deb33241746367624cf9a836065a3c6dfa9cd4edf4421c9788887a1aa775405a6e2dc63859c61001dfb633c2ebe03aad828718bfc263806ac69098d4c6eee920de9520f1d45de4a56dc8d601b44b1fb35d1a327e83f1c02bacb1b49923def970f50d4cda38fe7d1a077e9cac40c6d4acc3126f1921689f212f4f0914c9508b6fc464b53817bcaf936df798d02d2f89c6976a34f6cd35b116701dc102ff251724674d14b4aef60713873686662c31d9d5c92bb1e58166d53bc15038288bd535b0831d061957af20cc0e88c135fe539aa79195ac23b2592f798fd49e6560c25720efa441131f7472931a9ba4031f2096874f0b868629bccf7ff716dd25f944f50c4d78222449f7021ef898a1bb57bf74795dd90e7a5ea88b718a63d5df927d1780372f42ded39c3cf45b1c6308a0e7508778a600ea03ec3bf820398f46374a8812c97cbe3562a50e26f01778b1390b5ae33b760703c31f19e19d465bad5e9af310b7fdd92fbf4f4a29fbdd1d4f24acc7aaacc85b9dd6ffca06f93a9b251766f5bd5e089f10b5211ef238662b32a92fb75077943e7539c5092238ef54ad3bf21cd720b94907311402d1d5b806896b9259406fd6199f29aedea84e27aed9037827e489027f6e50777c294cbfb205f8edba29bc4aba9f6849f776c8b81fe60b6145200d90601633deebc99d1e354bb28b252a7ae221852acab1af6a5a137c6621d208cc5259b2aa386020e7b13ee7c9db95f2f25ddf247792cb1b8ebb659edbbbfbb5e59be5b2f5d750fcb69053424cd787708db6f8a7a44fd1aa542e98603213e4a44664579cac976d26ba4eeff716d8d03afbcdf743098f851e3b9005ecdd26d5eaaeaa87a06dfda51f5b3661596c1ad50361edff6869bd97a9f03292cebe2e218a4460e8c8113edb5b92022b21c9e0283ef2c7ef4afdf02c0f8a112ca4b08ff2ea4fb6527a2e4e415b8028bcf0e65a948708ee9c7782373a5fa51785325f4a589b8538f0b3f7c4051fad6dac040df7f28f3a41838612d5472453864f4e66289612088bf018c36b37b9a1bd0ae0e35d51a2da904791b63ebe701e4b6a6c237eee1408514ead9b374803bd3bd41cc74759f91d467dec29e790ba7fa754cca44b50a2dffd41c483c68a18b8d756a3f7c1d801c76be5d1266b037156c3401905e8a827870c2f58c5e8356c831ad8c63ac99ce4c770461aebe40189faa83878f5c54a4f62669227561c167c8512eff2f833443de49aa2cf0b0d1a0f8364eaaf20ea78177e0fb387a080189f080c2264954e83225a427a06002b2556e27706daad0c777d788d10deb1a380da72a46ce858ae8c896f6e569227a8f3b2c22845e7686637ea7aed0cd2d7294e6aa7c7d0285ac8200856fadd4c1f6af71139c85901f80f069526b5165a02c90f8d6d6e31ecf14879706a0a5a82baf8bd80cbbfb291a64b165613f4d1e42039bc9dab07d85a2bf8544e1ae55c4883c43053c217e64908b5655814bddbcb4135053abca7a6283749a70952a4f3af97740f49bbb5987fa57a08f3964987d3882728f4f4ed4bbc8f5c5d68301a616d65267bf4d7a5e1beea8edee9a0072ea32c64383b4785a8840d1ffc0ddf289f579182ba1f7195bc47dabe02aed4643c27d60e97cbbec67dfca99cccf08050cd442ee23a0be535b9be75ff40a138d61d170ad24ddec533e35a6f54d3eaf743d981626a0f9bb2f1030b83a6bb1aaf8b6d28766757208d3ae696edc11f7531de55834c5f8240997a6b7223f31b7b77b488668010a5da88c817f53420a36ba2809a344af2e06d91dc6a6ac75a619f570618c28f71d71820d1781846ec84add4228fefe8b0e153b241e4444062dfe26c37555b7e9254ff5d64ac2152832c3f4cd7a33c49cedb0819a38d57d022d257d41553b4d0f220c988e27f3bd6ab3ed23e4d72dc576afb441f0f64010a1bc4dbf5282867d81d6e02d9e15d08b237de2b849d7505beda067108d5d5603e4f5f1e35e494b8cffe024b3742cbb6b1617c14361e52a5f66d101f04d0b4d17a5c66b84a79c0e30e9591477989a03f9db2e56027f6b6298f1fb51f5485476ce6e05d50c29723ee50161ee948f87100571ed6401bffa0a1e13f9058da2069119eba8c70f0c59c968bcf36c2a26d3a3ddee1d051e1334f8ecb27b4fb3cc78eb8d2551b1ad35eb09e068159a97f05ae3af3ca9ac2c4e048a5a6de4c3d2cb4c7b4b15c8e5fec06e8ea2688522dee546cec1bc0383684d6350ac758b1cdfd378d0c7edab37010d8fdf0c940933e0af93c0ac1cf258ed9911c99994e81c33fa06422a50850bfb0f6095ee0c7b15b9fa6074a4a2ddcadf6b3a0444150d4f14069ec56ca84f773509c610e0540335bbecf1c571fdcc76dab7eb58caf54a35ac26593fe8447b106ea25bf9c74fe228348ce9a16a64ad3dfd4426d4523e854784172a4f893a360996a0e7187fbfd82567c4bcffd49d879cd4dfce0b0b09b2f4a4348f116180ac7d676e1b9976f351c7aa33b14755aa60e17f555cfb7763adca476833d358f0bdb9ae8b638ba36e8ae95db94f0c0e1ecccea55d9f44cab8b9eb11dbc0440659245d1cd1d124ada71e1a24593aee77ce3c5abbeaa4b3d3c29d08e17c36e253db7102736330a2350a32eaff9edad6505a40cfd08bab826027c9f28220867609e6a8408e6a39f41c1f156ad6504097f476215d021f62b0e614281556ca144ce9d2344c69ee339843e5a2bbc1b9dcc17d31461b08cc9bf29ee3a01a1bfcebdecb0e840b11c0a9c0f815e2c41d661d1209e417403941067564dc0089be05591098af1421074f533f8b30eea0b9e80ea65e40147cc85f7af0e12d16a517052922ec8ee3403b13414c957a8a29f9897f41b03f2de73af2bd68b0eada916de074b228dd3d68dbe406966545343db15e0aca0edd9c65c7df9f200903a76795030eb1de6835e6f6ec7bf8f0208c043da2a781d038d0b301b86110e5761060392530b6d26c17d93fc9d930c01c16e05645e5fd66d69f49c5620cc5896af62ba61cf631f7a27cdf323817196da892f905dc6dd02d608c14083a7af07327c8ae358a4b059e4d1c362043872ae7647f29483ce204dfad2d3c068c480734d6f56a2b7221fa15a18f347a511c935ace1033b09e6c2038d4b70b62e4c4608cb727125ac5812630288167966f364a0141a56188567e87b0d9344f7f6ac84c9804ba66445d145e97b10afbeff48e8a13762ed2dc21b31e87b2917865e8fadff4bef438b87ad9f2112e6eae731e1801ec564613dbb922c4d0f3a1432d2778f8821e0727f14a7eb4e96a0812da031670e204dd329336d895c7c7fac567db9cc2a0f52263567ba65eb3d099a345a1a97318b701770066702db3446f4e52319d88a1393b01034a0622a2903a51698f5dfc0f8e6e29e5834ca7ed1437dbd03b6f878ef0b7f0c78a2a7afb5b1a1de5712a42315696cc4a94b363eb3b255675652d994d8ed18696b7af2bd27af007cc4135c53bab2f08411fc5c537bf818e619b806b7fac71962c35976ab8906c5d9f2155024d7a065249abda7f95186305ef83638051bde9ad3a52265cbc6a5e690dc899d1186d40faf568f79785612cbbdb52eb83096edc24012a29d94077daa28e0133842eb44e23069bac67747f375f78e946e55b2307db0bd5c37eba7795c058096498e0e6b214dfdff4783d00048860560bf30c3a80291a341ed6c8879eb2eeebfc203cbbb80d7e6fddbf94c7f5c81e87719796cca0e1f27e1f4bd5889e5141c04f619504044ba158dc2403d30704df47e436600fb1a396ad6008dc5fbb4ff2054038fce1821b4800cc0ab59d5c948a8bf9814637879b9cb8d8696202d93e6562d34720ed2b1f8ffea89afc934bda47200563c9dea3070be00e01ff82002de557b04ea68ef31803449561d4fe4028bd4a6688dd3aad27faae3c69f8f5c933ec3a0c20c1b67fa19756cdb7b8664138b7cd18f3f817f3ef12156e9cd98ea1202e7d4a9f56dbe4e78b7bce21343677d2fe252a63fbeedacd7d0d7d05cbe78ea4a20f93bc9d9c213cc2a47c7eaa230b3186df90fed908bfe00db10b53a44ce3f69e60327e7575a3ba8fe61f3e7f0349a3563a64d3fe527b170d9c70bcc4a7b763aa98ed45b81306813ff70cbb3355fe6283a27f023b56e148090f93ad5e3b6debb106eb1513866a9aca384c1f89dd73544b40481cc8e9272fd2b1366261b9a28aebf562298b59830f48d5e7b6d69bed03c00376e9534107d5588e8971066f07b71aadbfbc2d48859c52b9dc670b0f5dec53eb7a3ddefe49545c1874ffbdfa5fe76a4dacdf5c2da0e06e8a202a1cd1c2085ba52b57e94bc95e1b79eb28b997af017f371db245513211ddc9ce28e30efcb57eda142ccfd666adad1c9744bb9fa7b190c09f23d6f162aa711bbb930b5cb51dd4d73c9fe3851390316d7193cf0a63bd936af8591468460fa394080f23f1a7424b1c6ef1c901496477a695492cb3b87bba6dd9e3b4c060dcf88c147a9fe28cc28c1ce7ad58a5a92526107c1bb6e2b2e9e1fb6a7bc66b5faef3452e6eb58b438a16c8f3e1f04db48692d4df48d543d585e451365fffdc151fecec3903fe88af48c799435c645b316757f714c246c6d5029e1280d27df265055668f9bf1150a56e2bdffc93cf2caa6c43cfb948f17852fd636c327688545f8ea3451dc7daaa69e6279e07bd0fca8bf91b74c934a1acd705da1a464008a783437f9dcb17b82fdd08725a0a6de13e629f067faa9b39badd8dde6d436754c48a7d87c0947ae343ada28c98015aabf0fa5cae2d02b99882e96531e4d8b8e59756e874ea41804a4f5413b0dd2d820855c2df6fdeeec1653d90c4fa9948c9faa37fa98433625a85a644c8fd1bd7961de443d6dd8bbaaa5d3fcece71d11b8a630374ff3ea43b846d0c89e8ad37fe7a874acda383bf20d4ca50dbf6ee7d41b1963fa1d10def123c0b25ae22353f60715723d856738d0cd6b4b33cee556627dcea7db24b7d6bec2ba57fa0322f38e2bd51849191e75d5bf817a4690f4c086a95a7f9dbcfe132424d3fd93b8ee476abf00c6bca5bdb2fae7af4ee2141bec2232cbf54d4b4befe91085a354357494ccaf8014a6469cc46b7d8aafd979300957fb79a71a90345dba1f8fe48e93a59d335c01bdf8095aed0168aaeb6cc87b86a3efb162ab1954d8d63dd9eb431d74fa82918d7fc1dcf3a30b33c7ab2ba8d05e315b7a90e25b9b4e965481a3ea3a658c1ab7d6895221210a6c06420f1c4cd17b2d1b4f5f559892873fac87aac104b08c041879f2afa0a9e59bb61b3bd58221298b1087e061d08fbaa531a289b50e471ba1c3cf01db1b34583c1e7a6e3f644bfed1309a0f197bc5c608a23ab35728f0a0939880d6ff25b8e8ee100ef46ea44835ee3b81566758ff4eb289cf4fbaead721a56d83fddafd8ee45800b2208ad70e584c24c0ebc99f1eac939005b0661bb90c98e354403def01830dbb8e20badc7d704a141376fe07deee15d988c987e3bdc687053f28cabb805c1affd2c6297e2aea5828be630c936a6691324444b449234bd30aca4caf31589e99bf7e4868f36c352463802dce126e4892612c2ff0f3025038434b6dbd78ad5cd1b94f61cba72cce5e2ba098fb7d91e287eced22db38b4bae70900aac26b1cd317a1549b41ea601706aeabbdec6527c82788fbe4ac3c4e55ed8cd188b6e58600f08e9f49f60f51fe79ea99f7afaaac8d17ec4de0733b860c081d7549e017fdea92db67de202cf714e99036290d2553d2b3d4dbc5441735d0a874f175cfac7953abcba31378bcdaa1bdf230e48f17c42014e35987ab6b5a5e351e09db82a1ad179cd230451ad63056b15b5dbcbee9770b3fac16b9e8e30351629078d6c1b6441a246567f5b1cf65c088a6ef6197c172b8e515c52e161401f5fc660a76a1a64dee8ffe28ab874aea558174a77880c2b87a8ff488009b2630e595253a689fdde3b5ed6e1474332b2846380765690e3711605a8a742b3f5f83667243237ab94c411efa5f7fbdd3ab1537e5616462cf310878bb2256eea28073a2162277f79c9812da2d2c1be60ff4248b537f6f849eb4a429a9c956a5decd60042a75633014506671c049af1891eaca646b96a9c000423fb3fd0bfc1f5234d67b7fcdb8afb555f108a00f1a406f98958a688db55125c3292cd7fe5e58d0666a3711a86e6888447767dd4b451078ffa3d27410377bb6d34b9f7b1ec53b56da249e897b80e829d5818cc6d195a6c8be8834a41419c9499b8f8768a4e16943ea8f36578206b56cce54a1fe78dcf5206efb4f9fa771b6bb45dd7af7d3be7c6619daed5ecb1ebd6bbeacbfb9c43ab8a67c93607eb7b7bead9767179856e79904049ed60982e7f5b0d58fdf2112356196d213e0582c878f36eabfeba99649a991974101115b5fdb1f37551bfffab5f75be55038af8118b181d233af595a3e38b75009c22053c1eb4ec6cccdaf1af44b1e36c345caffce8424756594af227e40a1f37ba58dece7cfeeffc4d689098ec8fdb2e4902946c1cc464da9fbb2e40d746025fccf8305ad32b6733ab76d3f5fae0c82d2c89f45e1abf0399575faa0b47f297b735687f2d9a7cf6163416a4e606672e75d9c94615beab3ad04ba764be7ea08e9a5a59ba73c3d02d4ca438019951541ad496df8bc22eaf29ca79e052a3b1f06fff80935a8d95e3d6138653661d3a7295cc3ceb318ad3872d046c2b83dbd6c2a0e2b0e90e69898591a0f687da7ba4886699fa1c1bcfa9df3657cee2fce05683b1533cb4450a248b0fb2c11b4feebd5fa7a318595bffd23733460dd3ab3781690a663f5165e668079757d7b6a475a4b3b85ed10a4708ad0552ee6e0c2be8fabc7b5fed658585d69c98259f83d850f93c501a1a13027e4d9fe924c028b8d8f9afdb995beb19454c362340203849ca568129351bbc7e7507853d1ca136a7d9a8f564a9fac864edab490892dd320f3c227887e9cc3599f6c075c5a27e418e6bc8c4627cfa1ca805bd2bc9f6c3d9ccf9443ca1da42851c101fdbada69b9375166c3f79e4ab47aa04d96fbda40a9f90a17d66fd3b1d0d28097687c769a45cad7aaca596cc72d5de72e58ad87aca43000a0e96d46737d1b6a524f26161df1e31cc2d1562a63867947fc5a63edc0461fe68431e5220538d7b681dcef9c3d39ec9acf0cd750ef4721be6de8ba4bb377e92d5765d048d5e5f98a48a5270fa3d71d1013b002da34497f588df15f148a17d4ff74782feab00af61fba7273bf36305c34cca4914c2a86b1ab92e41b123c012ba785ff645507667985f3afa09f5027f96eae2c59ff609c247ffc40e50e18b34405b5d1ffd430f15c14a12e5ba62bde535272e5af0e6594d836a3b53d26aa3cea7acbb6ab39459a054ea260f744d8ff1e045ee09c05936ba1427f76e6c211cd670296ae64ebad58e05cb3d4b1e0ae0594afdfb686a27486efa131df4f9f275147ab60fa682ca3f49aacce202e47296c0172008a154c600080cf5bb689d0577a81b54453844298e5ad633141edb284633fd471aaef2df013a9e263c74ed920288015115ca568f1a47d07aba239a58ee53c37b977224a60dd9c398ed633f04989eb8586a07f0faa6280c624666bd1820e06750b3d6db072fd255007d409d14695e3f9ef66e31835b75c307925f39e00c65124f004e50351867a8137e72c54ff86abe92e2f7986e1cbc16946747ad5113c5dc94528bade8107fde02405c6fb39506a18344c07a3d26b8bc52de6a1f2cac3b20c373ddab0a9440dc32d9cda321d43b2ab2e7df4612bb4852830da12b2846a2c6316f06f310e7fba3d74f4032ffaafc73496b0c8dfd0c4c88b70f644f64c09cb13ace6c28532cfffa0fce54a0a2d2775e4c577ac58103a0f4419993c8dc5474763431a527f6c327cd2a96b3111855ea2e411ddb7829814d58b53bb2c39c94bb4fd5a46418fcd5d21a3b81161a51d3977fb9d8ce0909d35494923dc226a1a28fe8550cb90dc0de22240661a173f014815cd3894212950e8f1d4f0a66d609e2b3c8200a28fb4de5c464e81dd8e8551312d3767646fd02a0de6436a1c42a7acb968a7004ab0282660d12cf52e28323ff129da61b2af99f897b9966824f2c3d66eb6264af7c5c55c6865e448d010644e21b7bf5770c43d26525346212c589218e608b8297df19d88ce870ee44bdd9e3f70ff28bedc8d180544ea80aa82f4154909efe86d210a060dd6d6ecc1b6ae60893aa8804d7220142255de4abffc6e71ba7bd3d39315d65f03fb1cac4f24fb816b63730f5b65e841d9b1d95bc369a5605cc4734448f9c345678b0b4a275aad024c5f9c7fe4dc02010546579bbca4a190a2cc08fd288154d3f54e80883e8535ed5746aaf8aeaead506b35df26951c3cf0a133e2a7e93896d8c7e7873be20beedb7b3075bcd2742f0425bb388a0afeeaead095309737b829e12542bbb664a46b59e25a70d85a708e349eea646dc5c818df818bac949e87d192602b037c3b804d964d91987f465e906ddc66dd4f3d5b448c47752d6262c8f13536433c41729174c239779bf8131cd469adf4395c4011d4cccacb594e132a934e63a5827f644819fc4035ba1bfef9527462334bdde8a4ced0f18f874ec6df042b55b68272051eb46b01feded0ab8375e5757a6a6fdf9c41a8bb290a127b92a987570696b7cc5927dc19ac84554604e91802bed7d55bce4891cda92237cdafd9a9ef8de02368d34522cfd7202b9d187d3b1a3bca21b4c22fe1bce9a09c96df1e562c48f43a937f49fb8f589b346c74406130231fdc77c148508863b188a1dabe9d5ec36e1ae15b1aa4fe4718f034cddcc538fb72453a8a5fb9c2288769c33618695f80231b45a85bb956c80010a8ab31779f35b1a2741cabd5d63696c7ce10dd0a94f2fcfe6974abf6ed8e3a12f9f2c674d2a82e90de176d7874ab201c91c6d00141ba358f27a72a651e30aa903f8074abb9f10513712c1af061b2a93350011bc11b56dddadc8fda5afd494cd19d22000f221020133147af4e2dfe26ddfa5667287b681a6f14522f90ed80c336e11abb5a61a630142c8041dd260b073eb9c05360451dfbbda903bfee765bc2570f145c3145ab4598cb004c0b0f0707ff4663b6327531cca224eb69789a12daec3a046ecd50ac270ee959a2f5ac529ae3aad7798ec15343054981015ec70ee65079650cd3fa8194c6a6e0350df9c78cee90794586acfa0d2530def790e9dd6aac17eaab46dddaeffa8acb818d2ff6497668b03064a23e3a4d81ad1e02f1f8214557784f5bac7c9cd00ab318ed39b88275109c6c10291304467e5777eefcbfe6a28f20757ca0c009dc910ff0df0e518e50f1d14896df727e4ccc9476f74de0050a00060c77d68dece821f5c19dedd02567907c0292971661a1c74935473c5fbb11d810bd862d958f843d820af4a8a505410b1e07951145f8c46b8f2b5e962550ccc6401ad41f0a682cbb6b98f1000488f1de8ff8c0545e61882bdc6386458e604a0f5133cf5e7477487d12f850d1c4b256d8dd87102b76bc04f123179856055423d5cfc93b52a383285022caad13ffe58b0010153041de67f83cfce3b9fe119902b019b80ba03b5ffe04e6e36e44db9381a69b40c9921a63caa9cc93be2efe83c9398873435c401ca0af0368a8a1d30d9b9425e554341b525853a496b425a517bafdd337a0aa5163b22de69ad1fd3b76226a4912166503c5fb80ed478f10abe16e745fed9c1a2363ebaf4524ccfe0c90b26e9e17ff2fb4da5a87eecff6a68c35fd5c4becda56f382849b4f2c414690063bb7463424844e17c95bbcd72ad0468bcff5e393b8063a08c7b109270ba55ac6188a1c489f547379d3fb513e6d291ceb353968df01c813ed2cb7b555eb2061568e575f610ac6ad503ff04bfec3441b22ac39b8381b8f3f020fbd8d0c74ea1bda4c2ecd838ed4bdbf92d3911c07f3b26b239bdca6a3dae0af29783155f0dda6df56e4db75572a59b6468bba01e09189911e437a2703bb894735f3272bd9c2f3572c1e47d91ea850b58a18e32f1a1600db62aa1f3c5c75f1b40daa2cb22e12aef69e824e3f36fe1bdf2d0d96b4976f0ab6465f5113cc0c227a4a8830d79d5ae5dba8d33118459120705142344fded434913796191d0266d2a2212e84c4f30427efc1c2bf70d33ef4b2a82b6f6a10dded3cddb99c312331e21e7d9108e40678bc6b424b2825781e32c63a1023aeda82335bc5e5416e8fd27df2c7d6638fb11f676c4dee83cffdc5af551f319eb5a0976ccf98ed4dc8e765f995aacebfe73f1c8aa29015aecc73f1e035aba0f8076a2935decae80d0678a4303ff48650149717a41a0c15c73692bcc85e11bf07aadfb8fbd3ae27c8e1f747a3e15364b25b46fc015da7201367f958f0d37e77c6e93c32c8110bea4e60127e332f92bb5355cb5b95127a2c6d722c89aaf0d425d47b0fa5004ba228cba8cceec6e17ac5bb101eabcc36abd8fa94a68db3e50e2c761fe81d17d7b59a7bb23e8a996515728f8127f89b6c7b582fd988a7f8074b3c76a0d180082eb8fba9ac8e56e367bcba3523c92ddae20c5d2c86e8bdc7838de0e3b757d097a08ccab3b43e0d64d8d046b3452c84ad5bf3fdb7f06829080ae8d6f416eee5dd49b6510ba1b12a31f4b3e35cef8ed1bfa88637123e214eadc291d7ea3201260965fc52f00ee60ef41190aaecae6638a5bf4f29cf15603b927ce558f42928feac715984669105750152e0cb2c83cda0f7aae2a8b6f08503e27311bfee32abdf1e5d36b31218dadfd6ed8f6ca47f69c3396ea999bfc26d0792473d9080b1af770cdc6e3dd19c396ab0e36a50be93940a0c9c5d06e680ab42f08e643ca14e02bf17f7740a61924ee039b15d0e4eff24284830fe08e04a2452e30bf036bf1488f0403cb881e082bf924dbc39c1fbf649194a9274d615ae59dd616452354a7a02b2867e6586c9e7cab6319ff0b9b4acc5e379a8eeb7cee7f2ad850290663b9555f8d8cfa1b736dd59ddb31d3b3d86a53f56744ea5c6f5617335be3028b0da2958c357b43e24610dfa6e9a3b0daffa4cd647b7c87042193388286a8bfe3fcf8367e603c9ebd6fb7603926dc1796820a68480468df38a9e882be314d7b82c139536ca9255f31913d5ee55c5797afa3bd82ac72c3243b753e6021eb770154ad679d547e116c37d5b25c8ebafac6132a89af14b2150c6539a48f069f793c7305784efe2ffb41283fc0eaebda2a45626a2486f7a9163f908e07fae36c0cbcddab57d070d14943dc57caa54c9b45c03d4c2ec2b9e89d571b3b9e56a9eb0654ec0d01d3b3caa4bdfecce7ea2c76c5c4579920100b180855768b0c2a0efb092e8a2583a0b24c1be79bfdab68cd27eeb0b939c49f098f516197538247473f996ecb70d5a76122b822721d5123a29295c3c201ce40ca85f716d5cc1ac7cb0f69637a06a99862e1321f560b047dc2a64e4107d54d5392aa88102be1d5dd06cd8bcc260836a2730eb487b7a40b07d42c4cd53e23331d98cd4891691e250d3f30f06ae054c8d631461258199df7242eea0f1789c831cc73091769f4cafd4145c39aa55ae379d844e02bef416829a5eb0bf94ad6e6f47605df8d3dd1429b64dc29ec6b4d2b85af0cf2f478ddce1e92a3164c50c7adea966f3b4e76af3a169737e2bf973e7673f444dedc2801e4dc22de223790b785fc1d53fd802c8f92e3f8f04aa353f23347c49dd81fd2409d5e45b90e96ba8d4c09fb1ecb83d8fc76c2c88d7984bb004fe7b9f015a29cf63341c04725c23c7970b13284c1e1758379efd0df28e46e86f554a91ca6e60ff24ed164b3d0744d26c1981900d84557df504c1aebc70570f3dbab56555ed01dd00ec123e269444626b4a385a156f35821f9e21cd58f56ce0b5e07508abf2b4264be32231cf45550f6d94cad24c776c6aa72169221ee1d1fb3ce2c0300de7c3604e09231f854d0165d5b3c829156c0734e2fab50e11a0e5cf0cd1e45d0bc7295bedf8120699bbac2dd3e0900e5681d40bd7031b482904bf3764adbbde6c8638131e610e0066e951f1b06c0b9b121135b6b69f3302ec6eae9fc2f543d6306c203bb52662b301cbb6a93bee14068ce25d4b81d55fa2a6703249ddc1f51a202e104edf0dd95008b01c1c3e81378853b59931401711566f459cb71bccb643eb2c476706a5186f3af3db0df6d94628acd3c4ddaf31d954b5d65d6b69eb695e3ecef50b8e8f178fb543eef6f142c2f3bb65d4c56f93cabd20faeb06507fa01d5059de8fe151ce5cdac3e95540c163828d23c9dae4384386675589720eeded12a62bd7493cddd615c7949713dd034d80c84306040f63e14f6e2636408b41f96df9880f033190238ec736adb056d6183f2834dfb6419d3df69d3ad7c61c16a14e398e8c22176e844dfb6c1e85fbbaa95f4a2508e67bb5846a4bd5b7ba555886975cc6f8c0c745d80e385282a4a8c249f0ccfe045051d0b58e20ca06798323c9279388b2131fc96af3e41b23af54907c420dd78e078df994558b4cd13474310a35434ea0065136c23ec3458702ef87791b38116e51764f3dacb59896da8f7ac96ba09488f93a3caae262fe18f211808118efc594533d6c4778b4156192537947584c38c73c841bb2e382db771f2f91c31d48688302b9944be59a30141582970600ea9fd7c36a3e24024c63dc630d122794c542f1716c5fdc937ad1883ee610ef87dadc945495dcb101c8c439a007617961668389376cb8dfdcd7641cb4391346fd0044d47a76fda1a2d6422ecf1a6f229a1bea071078b1b4d303dc88a6cb980c78f1ef0091dd0d08db278c454e7eda9d9ceb16c4b91bf88b72efe7188a15dbf9e4d7a7ab6cff667453d2b7084e8d5840a0e282852324bafa1a9ad9577c873976fb234a30b4429840983977add7c31a19a7cc710b916b3c66fe25a603511b17724d88e6685f9d45bcaa9e05049a0000fa7ecf1f1eded234799bd4a8fbe407c0a421af330c027a5da113475cca4c589d3e885796e443d6c54f7269a330306c7a8b04139a3907f2eed57dbfb045c71b190611273d9cf87037978995e634fd95ddda573c7466c6bf40b1a95da50bd46ef996bdb134e15ce858189bbbc88069a4a4ab51896760d1e610d28a768374851ad9c84a325164fc458d0e45b2c736642b8a675604673d9c2bf2a89e15a5592c04e258ece3e6d5fa9c72de7adae01b49293d1bd51be83445bd54e9022a6183d532e2a21db0625469b3fffa0495cb137be6c8da0903b36370cfc8d32d50655442dcc2a34732e6bf87855ba003a3a76ebca589c28d2b7ef5e1d22aaa4b227361ac2d2bcd4da260997b499f9a5e8c401b41c4e4afa4e0249a4a5c87699b4b9f987aaf6f41179341f331cbfc1b48d3ef1a07b03d92c1e2cb0bb3701e3b882f65c7513d3a526a5cc6e5d26572c4aa7616fac3df5612e892b077bd195ad1c36d442e43af802358b48c964b24341bc992d2a42205648687164ac3b9b28a26391572264cbc30f7c4ff67644e78b5b0ee094f6af9cb38531666b647ea4e022b57d61820d65bcc564ae2c59f7709193f365012fd96e8e078be70953f8c969f0f6d01579e6608ab7c7e78a651b56f2f284d1db20f6767f6a7c4ae226b87df4d696cc75f259866aff66c084ca8cdd9483125618e4b1aaf79516be4373222194b97c40c6c76a40176cd879fe5c95ad3760afc047f992b276db945b324b0316097bc7a815f0b4235749bc52ed565d41cc07af18d9ddb723c402250faabc4ad7e071d82f008496c4b0fd00caf2252e3dda108cf6bf446c1264908c267a80056a25a724b762e29937113680b21ee8212c666d276e5ded7f4096eef1d1e941066c2d8d8ff0f61e119908ee993ae891658123318e0f74c5ee75cefe4cf035dbe59bad91ca22ef731d507975382497f9771c57b5e4378d8c358dddb98d2a1d65735c90592d631d6c9fa6f60531cadf0d0930835ff9ce70c9dff5bdce1cee798fb2cbadb72410d9d0a1526a725d4222e15bc935c1cd8c3f9fcc40f5b09d937512cfff17a2f97239ccf0a00487c5492fd6b316298db0a9bc23f987504ed73fa1f0022ec4c81545b50ed52da867294923b524e9ce4bf5385fc9af66d1d57600765bf8e9d38ab322c9e3f184f9bc7f7bea6b91d44f72b3b6b7f798c01bbd5cb10f21ab61e52c1628d456c79621d8744aa8f0c2cee196a8e0f6c6bdd8ae3c329d050374d060afbaf806be8cd1462c51fbe7e0d5679225906dca3404da32f40faed1652be27f6f9887b00553ce705bf72b4c4a877836f0f9f10c6c79ccecbd39de21730b39ff692c54d20796261deb92a827c934792cc4b768c25f6dabfa745878430b30eb660e810164b33c0db8e703ced2847e0b6e536a9afed8e96086464b2401459d5b50c323103f875714939fe1c1be25b1e2fea1193178a68b075b77f2f2570c746005a63a01ba3bd51c58de048a32305d6a15b2d766cf3fd8aa32b0684d841c2549857ff9c7a8fc7c6f60245fdfd1f30b237bbc23f17650c8c3b7e30cff49be491c7d07ffcf6dba85f3ed1357e948710dab0dbf38384c4b0d8704aff0bd152734583fd70c5224a9dd03d9e2124eacde2422dec941a7c8d774464129338b9c59900f91fc1534944262e249395c1d3128e5aaf767a83f664d9f81fe3b34d38658698eb4129af63638af97e4ecce9cf039ca15dd460e96ac8f92cac61b089f7e4af0e419a193ee76d2963592b4446189a68f745c98215ba7d1697cbad741292c5d67d7b90da532dba65f0092e5e34347b97197ed21156ee09b82a00afb863d7c5648cc75419ab0a4d9885ac537ba593b018bfd2e535326ea27e46a59bd41df5aab6f6580d5acdbceab68ad14202b2c2791bf445cd2c3c4043b6e02ca30964adf6304e43cfac2f159ac70b3ea156c778921a714e58ed290c27e4b43e08536e51ef00cc74714d70dca97ab39fc79a8b0adbd13a4ab7384696a87139db53c2602b56f62ead89a6a85bad805604a791e0132dd3a177acaeaf4311813e748d01543a2d4f000a35553bf78ecee33149e4ed47bb33fef73d1bbb521f5f0366970b099dd2ce042c33eed00ed5f2e17fe34d09fcad1897f904cbe50395d9438ae32019c072b6b5b58433f7b2111aee036c18586b14252f5a0ffef148c98cdfdbec62efa3c279ddd67d4dd4bce3945d72f77b3fa93e3b642262081fce0659753466acfbd23aee655efeb6fde60068e5d26b70bf15b030dabccc3c72aa8702bc4cbb75b66bf2e08630da6894f95a95f4b3e3bfcf36c1404c419d73b7e0a104a5bf5b38c26daa54ada50deb55b666b3bde23b5fe9222bf5bc42ac80f1bd10c3f26b92674299758a1477654d12cfa99ea38a3ad5ccaa0761b0ca95489fbd2830a52e89a947eed35eb3b1191b596eac13c9a77cf18db21d106630aa0a528f232a15173b47e98ae3487c147c2185ab0cd461d300a419150737cc1478b4d55a0dcbbcc163e533a450c62dc648a429e313c5ab9886f1fb10559a74d745e2c55f39c57cea0467a7893cf8ad485eb470b12e5908bcb5384a28ff90c0b9bf49996e5f16c641c6179280bb70b1ae58aa822d12d95657fb50c567b861bcc068f1d94eba71c1d84af527d6a0ac80d5a8d2d8c54547e410a1a8a5aedf215397d981f6ecbccfc7b170a8667bf1fcbb96e240e06fb416d42dd739eee0b9d226836c6064e988ecd3414c119323e1817e40117d5f4e3de2103691a8156c3caf99e11e1237ef2476afa644e65ca533440c94ab72feeb83ff2424cef08485ed8a3b8e684f59dbf06fd4027b06249869de3b3d298d5edbf7b43dd0575153b564009d6a0cd7ca385638e3a275ee92b0f2b53454ca30920b9cd1fec9f9289ec48bf02460e7c0030cc6ac12a70b183dd1d4f7cd6db2125491c09b23068aa654179a45d12c439971a70a13160451672f20f1cdb133d75ede6f243763560af19dbc1e0b23d9546b1d160d25e77d66b2c3a8c54af4a73aff70a0f467d867f7ab6868389137059f67066d498ed696155349e4230ae5d9354f24c0458538f47dd2d8fd1c1be7e9e0d39e73bf3758b1f0a046f791e8c7f65cb861526bae1ed1ab025933ab562c01d87221807d973ef528671927ff50425d4ddaad14a6f6afecc75b550202c66aa113e18b58d4247e8e8e00055bbde902b943e3fb11f3f4879b149b58c18983f404b495d67127157dec120c13b0cdb9dafb4ff1216cd76099c5ea9a1cfd82ec07599036000d0d8b43ea665680ea32cba69555c4972ad7d667420c374fa98ebe29d740c14d9c0b8691d23363c43ebaf635882c162243d80b2e74a76cbe73178caea719e0968ee28c2bab91b1bec9d48d6881bf1e57333bcfa9b728b0f23dc22bceaf7e007e2071e1091db9bf564cb59201cbdf9cf654a72df4d43f8739cc2b6543d36a40a117ceae072149cb51f26bd5963147396213484ac64372417962c407573b701da1d1cc59d81035db9458642a3a2044fb3a86c75359d27dc63892021d7720814ec1be622e07966415d4ed377b050a3f8f046533ee8d568f1c9c4c766b303766c7c8bb86c9b8c44dd095312afe00bbe9d46ed5910a2df3bc92db19efa6d639df3bfe185215c0f13d730d1343e75686189cf8d82141dfce3f83eeba02438e4b4b2a5548e75701d43c874e33a430493de7f2ca58ab2607b1a05f58338103e8c250e35308784e46e51c51a0c5477abe0a19c0c4224ccf320fcae326c97263cc87198c2607018d02dd201e30171c9e3a055905aa74c2ccde16c1cf288db0b943c70d4227159d44c42b527e4d9260e3625fd7b93244e8be4808b1d040270f4c1cc17a2022b276029a710ea84fd678b55de2bdcd4bf6764c6f9f5b94fc9980720e7cb84c665246f7678f0c1eb476da2e72d058baeb905649412525bbddbd9ff8dca7f5a800c34a7a30b972aec509a6b832f2fe5a49c8d6b0521265b885ff0cdbefe0785915c2d9cb8bd432c05890409c3def99230d04949481d427d9c80d9b9e22edb5cafd03b616f5bf6ca73ed8ab3e37f15fb336e820eb993d8821ed11ff5db287258be21993dcc4b5bdd010be77421aa5521bb2a198ed060c0398219f16f2a8ab8e0f909c9a547733ffd1693205fbdccebc545a3ee138350cd8e8239819367621c5f587c9c1bb52aeec672244209b90ac4826fc410754eaea6da625b6c0ecf47d05bad1fc62b369daf02de32530376fd58d0fab34927d1a56570e72a21d0e4437e659adbfbd101048be3e1e0501167e45b0af1493a95453cd0816588524c9e556bc0f70ffa6ee16fd016b8e028b54b5b9bbdc19f59c2304588a5231112caec87e058743acbee8dd17ba3e886c60f68572b50c78e0ddb0ebe8e72ce4f88de1c5d2f2be9649a76009e96650c0d2050abb3f0fe81d6bc6355808f368a94b2412e9ec24779efc3da4f188df97709c8b65665670ec1da288e3a85a9408fe6252cf7c65f46cc3d2d01fc7aa83c72a43310293e5807140f300f687f2e68d51cbaae98e86682a73651c0b013b86f84703dec807e45f53a0865727c6d7558397b25c013f049f89784e9cb2603ad42bcff62f593d3078325ba875cfa258e3f8df2a8410c5714e26f520fa1c56fd0d97eff94463265b178293e93b412bfd0ad19aea94f3b1cee1df468055ef81250f85397b27194abb2994e62f431218eb0b0db798753e4fcdea1decb4cf3b971d366112fe3a4e3e3709a299443f00b6347447093f20d0dcefe33d7028bb268e5fe2f61993364e2a50637a35f160fb83905c2b6d252b253471cd85cc077488afae3b9dd17fe1303eebb640cacb1bbec33118d0f0a7059e7253b005ea144be498e6ff9ae85294c18c6690c05244ab9e5c442225c6af2fb36a86a20ed4ad6da70f3232a5eadef08c634fdef24cf8c4f024c0248a01120f66eeb50af30cb2d26ff3673bed4e9e8331313ac45d49d210c30a6d021e8331d127fba69a90440bbfbfa5c116ebd3b9743b582a4679bc6c8ce2f2051748f37fdc1ed85b2751cc841529cca541e48c831f0ca5be31f85d1c278af5eb4817f09e39f7fb415180f807ad84397f16549e4c9d529125f0ff86f1e3d908cebaa7d8ed033294e45652399f5b0bec6f4082ee33e9a4a2aa4b0402eef2b7e680d2c5b8962c46d638f8ee1e5e6c756f60f36386e21a429bbc31308741c8eb44171f3634e7e3d3fb71d9fc396dee706f56c8e2d778bd91c5f04bc2cf052c7d8b4d855982da079415072047e66a6a85346a9b38bc0de764d973f277cf198c8b72984de126b099da9355ffe0910f36080ed9281834f76c42b20acdbd005984f30286bb11a3fe7e5464f60f8b91ace45905c36f7d1e137164c752639316b6943f77b3cd36106e701ab386693f6eaa91c3217c75a4bf526e03b77a444a31e27cdacc6b1b17c0a41fd16548916aae171689ee0012000842c4d30f23689301116749020d78d97f776c8460c1b9e23e23746cb9fdada489594304d87aa0ceb7f6726ba296dd8d64015c1cb53400b3921d6a0e1469280ec44b4a5976ad742ba2c21a152d917f049c4cc620acc6826eaf0e5b57851f8755d1131771a5fb6743d80d8e6ec62bc4d32267bbab5297a010726e6c3693908b53d8ec58b34e7fbda0a567c83ac2f848307b514df1ac1a988216dece2e7196f6b496473ba26283cfbbbf93c2c8677d928a6c51670722173b76ba0f3956386b74b147c6d000eb513ee2997321402493b1d62c991a4e890de762113c6882ff2678340a2d1682934167585426deeb776b9a3a17b3386afd88c38fc73cf6ce6e30abd886c4e3bdf9e421ac5fa89f879bd654c479462dd7269983630ba408cf9462af0901ba07716317285d055eb1798bcff3bbd784ec55eec43d3fd5704817e9ffb885d2242a03cc2bcb985ad77b906db1b3ad4b561dccaca37419cca472c47f8925915cdd4237c9f2e6c0738f493051ed00fe797c815bd505c1a16803494036e56213b9755b33673397629e169cf1f0d7175b43ced2d11575d9c9ca38cf25367adf005a36d79b6d2020ca79063a701e3733c00ab834b691f943fad6f54e30cbe362cb846ac8487f6bcb7b7d1cd261bbf54580071b221ad937d3e42ff15e9a265cdee1226c373f113dadf58b0f2db47d10b19e86e9ee2bf8386d3b491bb761fa69637cca41817c4ebf83f5a34ba35c327288f17a0b2e010a7beb9450321001675513c2650836e5827fdd8c4a8e24f6fb1295038045a108b76c459a809cf4de464fb34598b3b408f52983d2c33498465f85f3d583a9d3c4c9653af7ac50f271f94eaa02e1f2b8be1525dc836d30e1ccb413e18c5ba6eca566ebd1929c85a86b2cfca61233cffac7f9f94210d6a214f54afaaf91b0a5c1780dfe4a1eca403f891b25c2e610f196ff4de283b47e20ae7c7496c5c8c2344c3e7b5a5ac7912b302e4ef192e320b82d95b92cb6a8d40819ab26697eb091bb3b2d559dcf05f2b129fc27501a380d5198a715b2323d8443a2415b3a054fdbe7706b46f821f0eda37abcdf830b49943ef1c7966f06deeb171f951a04f76fe231a53fadf2df308905c8a1ec35e834e0e9e1507fd1def15a0f1af07e30e259fc234dd65c24a14215b0a01ece3beacfa64eaabea145be81bffca81fb76138a78fe1679a0c8bf0d643d3b61694979745381bebd3efd102c4c380e75ad143761ad36a06db63efec7f0dc6409b6644402f54477b257791997054e60132e3ae5d1963628ad14785ca591fd8523854d39084bc7248fde1d63cfc7aec357204feafd64ce45888a81d8aeb7f9382144f5a76c110ffffc8c842115531d0d4eb879dfaecb326c926ba280ea59edbcf2cd5eeed4bf1874919cadb8b1208ba58d5fd2cbb135882f5322cc988d18fffb6c8fe9785934b909e964594a795f8ed501f7fb598bf748aa411d8ec414baab980d7d3c3bf5c755dbb507c7b79a68f2a52624dc5b8ca0b74dfe1734c1c7d46145eeb8eb190f99f32e45b1960b42a68c15c7a5180557e510137c9fb14f9ca11e80d51ced300fffd98e889eb17d935b192d9254328d450df3fe61f51cc4f142578e32791d90ad5e157b03c3e5f3f28c3adf8cd342171db2ccaad80a3dc614f4eecf72a851262ef4ccdd686e996612c0e8306e7a18f539176b06a217d71906bf0201180e9118df17a143571221375c161e751fd817307e40f15e6c39087a52758308bdb010e60ad7b515bb0455f7721da5133994eacbe5e55b6f1f8579afe5b83d6a51aeedd7f6bf7797204cb510a29be5afa2bfdee87a12dafc49148d53b2d5507070dd7f5eabf48e7a5f273c8166ef5628ea5f03a938400c60318ef7bfe554038f9cd1edb1c7cf45025cfb6d8bf9e191244ba676e3007728535666ab5719ae54876d37dce144aedbe7cf71c99e0c4ba5562a8553c04c79d46e9338f98f37e71d01ff84d40c24224ae16b483a86db060d40655b281f2ee6d0445f3d9259d5116770f0b1fefeeea13a69830413c83edce1a5fadddbe4ffea3a1bcce22298e57d36b35b244098034723a7480acdb7988b694759fe8b0c532be80243637a6a02b19f84f1741763ade96a1e21cf564494bbbf2797515fbdd8b66bf4c0a17258937f8985c8020c72aa1e59c7ad29c1cce4ca2f3003424682c41131aab4093c8a125f46e7454397cbd587e6ca9478b7c2d51f8bc1e75c06696eecd3c3424393a634d93f422e6ca1176e045e08b473494a1c53578847acc6e36ba938edee5350d84f478ddc76854e984ee51378ee821c43a436c54ca692f5838e3aeec37da4fc297fa7eb44228da74a93041b07937c349f3fb0bd9ac2e8949d4de86a5721d888c50c9869cd79e89f1fb1959eeacb3d13caed79e589e55ad803285931297aa233f1d44e226504d0151312e58fe8b180c9c3b5506c249e615d7b266eccd104ff923045a3b7c57f52ea8af7d59a214233bc1614b2d8165a2cb4b8579fb1dfd1d0abaa30725f70817c561b286d4d574f917ade65e6c136e658be238b072866628e59b7783fdcd5cad927367ed442204dbd5fd203f5dcc4186a0fe263f58a00d34cabf373bad8c2c08f0674718191274a15971a793ce00651ff98be0ccaa739f0f51325cfdbb06a0ff83a0f0e8702a5f79b389e3699bc4d5103b5503e59e200d744ba56f82e7d017f34771136a37504847ced5f3b58fcf415f174043199cce0fcf071a5498a477dced6c0ec0c3226387dccd26d0d30c6187ec8408a054bec8a54e9879470cdb13be284d0c30169ef0846d596ddf858350998bd206a55176a47f08b2084ae8fc950679113160245f76e4a10824f9bcaa3a77d16b20cde026a21e48e61ec8049a2577d1e4b5d609a0cf70af98c915d573b2971516f832531a3c1491c48099a0ef7b1ebc5e2a6beabb8431325f31ceba39045c575d5ccd6c27b61ad014675e3ade2249b03521917083890d6335492177a53e7ca487112ae1ed026bc533d7168cb95f67ab89e20af5903231a00a82d0c19f2a0439576ce90415dd9cbc37bd1a1442e8dc8bb0d7fb9e4cb6ea72814e1a79646b96a92222031788428b451cbb24618a3bf5dbc996174d4ef0710f3d4b29f9e0131096c13d04891621c9179d4ba35f5f426f01adefd7243e6fffe966ce60504a7f77ee2efe0aa38e9c245a464ec3f576a352b727746fa011e414470e56620b7238131ce629b306e52edc65d0c0420978630454fd73a62e64aacdcff838ff219cc4c4ddb050ba65e421ab87b3e207db40a951874a8727198e214e7502f727ac39302e5e8494314a33a8b77a0507e8a9c56ed0f4945a747444e5e84ac2d363c7122b11ea2d62095eef8fd875e429e40327275d89b0de1293d034ed36c0eabbfdef6dd140080c48861a6331af2d6d522792c1410c7e8211279b7f2bf2b33bcdd64c64d4f73056302048608dc972102bbc43ac1c80b21bce3a434d2e39c16ced1c8ca3c493e669e27a11efdad109843c7743e6bac879a789f148c4a23f28eb1c68c2d922dd9436342649c0c0f02ac29f07bc1554008361b92077e88ae113439d9fd13964258d699c711bc657ad04b464b15202fb8488a821163584ee977a427c9b94c91cdc66e8a23bbd8dedc8b946c2ef65baeb6bb9514829cd6652835981869c33fd2c6425086ea399da6fa216345b6895826f0ae7eb99235b7e22e0944de6651e76e9b30a19cd168388ccc9e66522550d5fe813b5e524b4a24770b676292cedefabf5503c336a3a5e88aba83def817702980123e0b4e0ddd8cf65991939a87ad6d2b82f4d8c6572a355cc011a78888b76d91de880c90ba2bc51467fb5f7ae69abd6fa239cbed206889b46adb3152ef2e39111aaa3b916abde8d56d9d88ca7156e4709125f980396d6983f3990b215a2850769dd57a489502d1d8b74e8b697be6900a11085c863e4cc106a8202c6c20b0c43874092ece4ba6f2184d04183ff5115ad9ba14b5d1509ba3bb7223ed8aa641d19e7bcc20820ad2abb4c82432c6704cd4f0305cca46772bcdb431281d355499e141917c0334b4104f5449cf8dc063e43d26e25074730971ed54ea78e1a7dca9e74d159f6140acaec8944c65345730e25fd02e8055a68718b6d22ab91206f4ed40c8bbb09f35ebceefa8e9ea918f4ecfa68c90921d6d3be250d02133544678fd243394dd0fb270c02bf2076ea658984440327133f76fe662ce4ac313c3eb947065e54b4b81c558abc8b8a0e4eca7c6e219cd20815c90dd55f16c6020c86dee3c6dc37e9096ba8f82d20a9736a543cbf77b51118f5c19fc520258a0c2374a5b43f8a40fbcdb842f1b50d05844978333420dc7f33e26f211277415ed49d16f1e50222b77048f4c186fea90505b00925bbc0b92584fbd68f635522e35be7fe31db720bab7dac8aa3f9ea8e5856c51248a4448b42bec2ea184faa9f93adf0a1e739006d0795f8bbd70c575ef3ce7b475ea48be362e52136a9fd2bd0540c51ae844fbe461de033a235ef1ddbc742b1be0edadfc54688f5ded1410e3612d60d9b0f4cef90f1f64b21a76db9a906c15308eb9ce57b9ac820ba14a2c00d9b42484dafa7c67729e41b903758222581f83914a7004f235331ffae389c74d0857c8ecb433993fe33f3bc991ac4cce3911c01f858b74cd1260f869ae4322eb5e4817efc2c50c7f9fcdb2d4ccb6ebff5e58645bccf423ea05bc8fd94507403d0b081bae03a655ae3198ea309418a426ad7b51c5869aa483b8c96832061dd0472cbb20fd08309d15b13a18f9a1852a0ab53903348645aa85c1596d362b997bbb22ef581ce536585fb49621d9fc710bf19ffee0d94aacd7f005e635d4e8610f7dd5be384afe711867c861b42128b7a862c7bc7a0e7dc72a1358df831d64f2076c20accbe3775e3f8d3aa4866e3c69801d7d28629cee3d009c453a250df758e74c5f53d788bc6e5cde78bea3cd73d5c7f8b24156c7106e4fa941c2e7722f63d7225b6217254fb286f0708bad4a993f219de9f94501e78be97e8799452c34e473781b7e3e4d383bc14a2ac011e8ac1eec574bfd9e196d8b8b90f0a51184af43cfb811d778f31e066b495cb5bca114f8a36c78b8d2bc1d1b154ef41e980929dd8233e827f129bb44b00018c8add57f11a789d4eda9e2881e53e2fa917344a24b8ac9145f898d20fb4b669e755d2641f8f77a9c4e2ae92ea157b9d893eb96147220b73c3f289edc6c6c89681a49c1d751efbb7a69fddfacd7d30682570ba19edfd34b4edfb3e092c44d67c03c00ac9f0364fcd0ef051bc780c295b6837ad3210015a180b0f2e05588619ed62c34c148c67d090fb9f6abf7d1e63b88c13fe0cc6ce330db874951e99836dc18363ef5dca0c03f7a81ea1728c6d4430e9721ae6428c3070e1ddec3d9f17556a63913b690306d483e3c9804ae1f102f1a246c8c9067792e83873d14d2b54b592d4975d99934ed3422660d6b000d29d668576c7f810468358e45015b122c743c249ec672855d2ffb09f2faedca686bd27b8ecdb2bc3a0a2cc27ac91d9fbcd6c35e8d1326b6d16c46a8aa8886319b8b53b37898d2c3b76d7fb25e8e535ff51d38d772fd21397bd8ed4130d868d205c3d0581937189cb8985b3ddf2758ee86fb5bb79b818616b398f6da6b5084a73d3fcdb4db8746d0ca1e26c0b584b25bbba03b54d91e709043deefed4a01777bb9ccf291da4bae5a5ea26fd9b34b30a01ab241f891f7f3cbe245da3ec42d1a303198982aa19bc68178aec6b747b1be3498d8d269e22cebe1dac53b8f3aaab6234b2a991fecc586874a30fdfb19bd404cf44d7d70c333876b5e313562183205ce427035aed45d180bfa90e76870d285433e78c3dd3b0e744d180c9f815cb49d59365aa3db58381400904108736d2119d37d1be5139969653c5aaa4b02bd746e49d73a10fcaeb517fdc4e969b1f15ac793309c2836624b79078e3e2f36fd810dce18f160e0c9f61125dd020a64d681291283b54bcf6ea7952b58a2cf1c64d31b9a677a09855cf8e7b3794327c1643d3c04d51dde9f0f9227613de992d608e785ae7b9989b07da30e69a763e9e5b21903953d0fcf607eebb03a18ac6ccc21ca703630028bde553256805aa9518aaccf60d88dbddc8a9cb6b8485f9730341f4d734764b56f6eeeef6dee235b762e5292481ac493485be16f9cb961eccd9cbf3dc8c40b3dc3738f0444030581d8b78d54738e5d179821482804add166898bd9b850c233b138e99c45c152477f5be8264d6a86f3b9dd591b5d2be904f1726b894695f8e882339a580da0ab7db5bf9900c6d5fdd32c72859847edbbcba32cd346d6c3c7de7bffb5260e7fcb67ae5423bc9bed54227b4a3295b5dcadb71624938935cbab5a4411c4b0a20ad9c636a17a62c8e1184dffd7e45b704adeb1eb6de5992949f6c4d1f428e4c94b852865ab081dc2adc98009ddc571a130ed8aa075036cd0a74198e226ae9982ec17fd9e9e215d8de1fa88ae0b2266200a3f5b81f17ce671984030c7dced2651b2fa84aaa7964f94cae5e253dea4d337da1197f282b09f4e93e53a30f322c45a5034b7221a34e320d5d51d15faff5c663ccf35a902d1f35b75069e8e1da19be176278c5da9688e35f8776e26b25887f76e0c7a3fb568522c97f61c354c6a80b06d0c3f76e98fad1bb39c4610e76487dc56eeb00dd36d7353f6f5533643f9e3db1960bb702c085044be177e7e20f258d88a429e22e8473704b000f3cacb7f1d7279ee8561f9e7828d21ba1e68356ab8a574e175f5f32a56bea9061544a2a8acf151998259532e5282a9f23cf028bbb251fbd6e9882a42dfa6b93b73358b6e630af5898d8d0de058ed3841e88bbd4e995bd59e31be700be021e82a2ccfe1850e4767130a9117ff72e9bec5df95a08847bad732f3d169df972b50a2dd9776a726c63b9ed79cab0053c9c7f03491d2332003d8898c8188b03dd2be4f856c7cc848f443487cb7174dac880d668a88bb67f0cb033f43eb25e96df4e382af019a932741016666cb1c761aa75ea7517faeaa58853f221e80dbcba5ee581704391877c53b7612df0d3265f67dd86c6840e13e0b5063a537fc54494c113d3765b0b3dccd125a85e3dfd36d8fc30dce0394000d2495ea452256f252ed1997af16e5bec7e6c5c58fbe67acddc17b3350c6e1509878906d5a8bd581f8ba19cffe676264cacbfe7dc45635136f13c9f92fddfc0530e4e2be1cfdb94f0dab25ff5744a1bcfd10989bd9e5e6d5c63cf10a248c9902936133cf14481278f5f685b3e1e13bcf3427e57d5ba1fbf6ba9ce0be983493773a97f336cad9148dcdf09e9b9be418c1287176084abd2dff996300358b9e3bada66ecf4d5ae64ab636baeb9324cc9caae3f6bd99b022bc808dbb3fba8e90694f3e0c81a7878af0c8a11a92e1f4cc886be439fe21eadc84022cf10e347c2d57c2753d5759539f90e3df044c90e20f2f48609adf92a6decc766c39f985e054834723f362585df3915dcb28e8325475e22021740b18f5df9c000fbad15ace7dae8904610031047adc11198ecc091b8f93e1075adc1c699ca61d91ef76a4ab5b306bf10f57bd778b91950fde29b8363633cb3bf37bf3c300ad350e3642b5d7f0f5af17aa5f9a7cfc0c897ae2d0255c6b78b13a0f5b2ce94572f2b8ed46fc5d675d707c4f77f9e748a3c892ad34bf170475b6ae8c07433bbf7cd0de108bd0ec59bd14c4120f6323965bd6aedb2370f1807222c35bddae67a7375cc017decf8151b5b81f23a0c63f05c05338f8c48da050d0a2b84c3d2bdcc7025f2bd4006870dedbc6f64a60ab9822cc986814875988315b83d25c30141d1ee5f4be85f80714cfa720441b1faedc3fe631c09d8dd2962db8483ace294775a6b983937896de49d1f14bc06ad8f3ad4baa67d3c16ee88b8b41666bd0999a72b3a898427268677d12791f172fe7dc2a3ae1773c46d4ff6aec18004421096fc4c304125fc452000212abfed9a5aee4f4435c64371bc0d49bd371cb9a35daf842e478b260c82ee67404d2d722c9e67675c0cd8f80c8c9b5749255e122fc4dd1b0b0852c2c296a1404727614d0a8482f51170c41012e21cf73bbe9138abd9dcdfababf1dc128e1c58b4d97e901c4f62fa42b5462524dd4fc2248d74e41682739a45d79f225c38cb6cb5b92a6cd844d829cad8d356cacedaf1d74c876fbd5ac78eab7973f44e0f748173c8c31ebc8379f3ee71750ba3debd8508441df99a0f9e3852f01efaaa994ee00c1cf4c54014acd10c7f2a0657dc58afce28b58f8822d84646e40d0d333881eb7e0f14460ce8b8f5a491da6ae469afa2486aede2417a90b77a7dda4ed0159937f28e47705f0c098d2727610d18326a355c2489885473025026b50dd76d03b5b067f5d6fbc29d3245296e7e1c50b2debd443c14064e940ef0d4e200f2ad874239040e47cbe9b25e9cd6bf04e1cf80d95ad58f118967e46c0a886d179e3e5db88e431c677f0cec619f9690c7a453a8c2f8ded974c6797b2e438f4480d754fbf1cfddb0f718b81e6260af6e6f427e501297218b9d689a3cc486cdea28fe838261384e4b09492229b5aa51af0e1097704a5117bb2b3eaf966adfa10c682a763e03b3a76fd409449e3068999a8b7df797670c4fd96d1f8507354995f9429fbbd260306ae39508e4f368ed02bea2c80add42bb6714fe374ebd6d07a8279f7bbc15296bbda3e005300ec1200985e69855a235829f6187763db448851c3f8419cdff0506b4d63aab8628474b6264fc3070e3610ea621ad49018e5838efb986fdc10f79df398361d0ebc3354b89faeee364d6b01f83a14ae647044f79b3e96117d9ec046bf4506ef670b9b400f4d8d1997a67e1b242c4f605dedb7fd8875e9fb4112f7f58e3225473e2c09e0b7ed805de44c66fef60f4d718fd9d1b94beba456cdc991374afbe4a33450201d50a2710493f5860c8d70e6d0859d8e3c7045617539b8d004809b20df9942812b4b97cacaea58e9659df91be608f02cbb7c0266e4895d1d9461a069d3ab24e516a432420837d1b15816db653295126dc04daa035528036a0cc609f47d2ae56a2b19c424666b017afb137ab361f46c2d9848e95ac2aa36a25837d6559f8dc65b053e290f09acb504d3c1f32e0df05024637e2bbe6b1fa79c54d1ca684c32f0e092a1b8cc11e20de0e20b9cabcd9daea3f36635943c9b06cca9c30963c0cf64965cfade05d8e5ba2e59884f1825d1780e00bdf35b55393fe827dbce5665f62e9bce1761dc94d124530063b69755f4ab39651a85abd495e7efc713a31d8d705bf5d8dbec00ae6cf3ea10aa22c1dffba91fbafc553177fa49097f513a8295d878ad25b5ac8a3dbbb9835c6e6a1f2dd9171644b87a4c4a0059f9bb119f6a000aef32aa49f654ef0d2d13b576354a318e25209dbb15ffd56369007cbc4046fb5f42d239e4c4f20b49a7aaf6089226f834d12fda74c6302130a4cd241049d3aa3cba95a076991de1a0674663878f227b01fa84b4730297852b11d9f84c311147fce9037e04abb9ff8b6e95dcf9787e2a311788c55a6934b4e8477c526f007289bb9df036b2de26edab9ce10d07e876f6678039240be8e1cebe007678fac89fe3a83a60d53109d69c6af27d19dc7b12eb37468e3a17d769f395bd5215c9a6d20349138571c6e788cc21354582d8de43305dd80075ee41be5301feb76333b7a703e9c782e02135079d1c99589e1f6691f43044d34bf5d5fd916f7560f8c769eb4dac8e9863bde84e3feb63ec24e196a86aa8f85e03d7a5573fe737ed47da58641c211c3f238d47b0bc30cf5edbaab32ed1999c74a96e4c2c0f479a0047eb8244f21493527a3918983cff48fec1fcc254a033db3ee3232886661ade9fe8850eeae4a90531030c7d93cd638ee3f67200d52b449377c9194f04fb002efe99600f28f1e45c54f2719bbceee3411e801acb0c3b9fd61b0624ac8e271ca74b9c78c219460a5f82efc2e6d35d2d400c95a1cbbea77bbdca32283919c2b377fb7111bc36d01295a50b426a7963e08a718c7816bbdef7a828c91fc56750715327d0bf8a08c9abcff38a726cef300b62e2f2de0077d65d80b477e94cf9ade987db166ab9369854db67e0bd9ba15ac0ba2577991ad17c087671f6408cccbe2e42f6ca814bd3c84badec181953e182281565779673198ed86e3cf19657d917b40ee72edc06e30ccf657e82be192a8599747492b8ca536ad5334a477373725625624f4f6dbf100e2ab1205381843186ffca1129aa3c66f99bacdbe5d243f85e42ea9e724acdd50a1707b6e0502e8826c58c1261c6e8f1e221086cbd14ec33c33bd805f4eac9a1f5bb80f46a1037740416166a2bca8eb7a0ec3b075607205febd4730ec4cd3e495706057ecd10ec43345795901f4f9e7355bc11aa18302d2fbe0e87de2e1847c0e17355afac6b74ef210e5ab0f869147d00f163b9abfed2040067c20756cc7880fd90a031eff33ff684c4c3e4b2640a809b5950ad749852bc38656ade22a5b88f1aced6845d14603daa52f51f116c8d5d5db98fd0276f8383241982a40ebe9f92024c6fcc1447c343dafbdc2ee69cdc6219c5856d7e4311ad1050c4c1dc4b320485ccdc800a29bf510129fcf596125710d5c4fcdd83f8160296a9ecc8412d4777d3cba0c9dc4cec91b07613c0cbf8a6f25a5c60a876ae69915b5c4db0a34beeb9c264d5236e162b6513324537ed22a22f50db463374f2a3d60bf297cc6cac1eb6f72c065a478073feb8f70a49a83e01be4f66648145ac72197bfe155782e5194be5a8900c31f6dd14eb835a7799849721ce7475a47c470cd3f19322ef9f432f96afcad739609a0d4bb62a5dda25a32435cee8fb240fb8dfe23f2963bb9b00fd42303f4ee778c56abcbffb043e7e37e2e154e70e610555ae959dd916e8410530efcea45a4ad509c66612fa873379ca6732c90626b0076f19edf558686cac788aa6feaedd89c6678dbae8a10a587b06ffb11c11aee80d53fcbe29186f35646397074577e6411cdc91e82fbf78d9ffd3a4715d0850330da32e9a20452e24847e69dc43b86d9fb367da395b872c91ce99893f5f7efeba7c8352887385abf35be99fc4784b14aede7a57ace27ef682710d35674159a9cc4551ce6f3dd83194ce5bad61552c83c765a195a0251344682a7e541aa31c80e8f7d97631346831fb1b9b3cc7640503eaf3f4e3a5698944cdda1352571c9a01d3cc149646181008d37c184518935fe8f07f684d85dd110427f24cc2621736eb2828dd18240b4660b3452b9f4cf325849e0034410c668c9091a2a79839c4fb4378220087fd962d85cfdb4957d9ee5b04abe989c991664578a917ecd194410fe3806c4ed013a57614c5b60c8a4a40e3a7e62aa88bcd5f5fbba2de27cde94879049fcf2bafa8efa1a928897aa4c30620a5986f4ee029fee240d7a90353cb26e885fc784057c226d5c0512fecc816b92d372cd08af26af8f354695d5feccc3d8f69632a5b477eb047304af04bcbcfa5c8a4daf7186066a345c5849c138b29dae3befa9790d3a06f57642c5121435905cc421a7a8215a218ce98b83be077a7138f6441261b2194ef76ca25170385c4caebba65fcece71c1a9c0d75cbae6ffdf49370fb645adc5990aac0c9c9624681e6b328a81f546e401a7ded63f51c11a8baf330c408c6df50ea21548aec4f1ec565e5fb829a93480a241132116bc9082ccea610425cb114a8a4dd3f5d7bec9804bd315f779e26438ff4c8a40e311c5e903d506a6a2d60164fd2fe4b07d9e3875e04cd374cd5f410e7b66b4b1c2743f2209d108dd7a0b61a584e4e2b0882ab2d6ad393ae4110316b327d50ca29b8b737d38774b4f26ee4e6334b5d9b8d8f654f5e23de9e11ad8079cc4c9952a535224bcb30eaa7c5813b253854a0ab496d385a23685c6570e0053a2a8e538b2f50df0cad0a4fc88ca59d8996296b63c920333e0a42c0a5ad3ad021a5994e191182a85274c9a258eacb84dd8417ba1c4789190a604cda9ed23942179a2c5068167e42c8c8a3f607699756086abe135899881c0344e8638411ae222c38b12a4acc6d2ea25b793f683d983072e86d7d46af2a3e905262d8b2c898a7b82358696b69c25c738a4b7332ab113cc96bc03a507132520eaf39e4485f1c04a5db77306b50448c63e6ede3b1c5ec6180dc7fb62ffe9d46c84c73f9aa6bfb2a72a6c9ab1efb7cb3bb3140bace8519c1b2c26c832744271c0a626e7400e04ba07f1c0d24be7646d02a7556452f680d50daf169b1dec03f6a41a0183c80f360237aca3288adeb0dd2b5b81ee0a6e2ab8691539d8d3ca898b25208e4a405976cb072e2045703f9ab884000226c3e282138a2243b4abe2178e1f5746f80f31b7aa02cb34563597a3aebb564b4000c9b6e2c8848a2be909880d203bd4f5f681cc8a28c79f6f550f22371dcfeed79e0ff82b04fa020e873d913e8e58953d913eb472601134c071bc41a2690a8b04a893032cbaa2680439b7f5cccfc6bebaea32a8aaaaa6564358545d4a7415226d872702b22c486c92a96e87ca488884952c32321118b9b8186dc60b060152906766a95a47c08376b79f3827e5ce358303abcdda18afdd36aa9fd93de7ecee389f5175ac6fb016985042c38a1236a70e1d6cb027910d386ca99001e5a80335621ffca3abba9eafa2fea8eaa7a37df328faaea26d7473c31e590b67461d6454aa18095183e2bc9f7fbe07e1ffaeaec19e1c38e9f1418803a2b62ef56c94023834994389585cf1c5d84b42459626828513e2064f2a9e96725c4aabfaf9cff3cff3fc15459223d3c45ab00304175b910a911221396cfadeff8f0635aaa49958079460134a0e9d20a20302b6d7f3ecec52f3abdac0f9ab8a73a668fa270429ea27da55a7dbe18940353a60c804c88bb6b3a3273486bec8743cba1d9d6ec562008f30b6a934a20f406678a832844196942a3c196c906753b9cb65e032c89debaf8ecfd36f32fca3280e1e1447018d4a00e66a088b8aa340f4707b22d21551039c7a026603589346998d2236348802b2d2ac88421585646d6c058b22bd5494418cd1054462574452d45c8dcd15b185eae5ff1fcd8a8acb557dd14041e1d4b4093763e47ac2a92d272e808664032964a8c3875287f6aa83d6fa49a3ffffff572e896cd61c087415d8b31d937a7972f1a01e3979a5886232212246cba822518582b579809dc09ead589b0c0938b526652ace86cad384b41d6b600198a20661ca50a7ca151819ecc3b0b5881062ca89a61ab6ab096c4c12a4b43619028f1f639c734bfab8d7f27abc2ceebf2f0b87d0fb7e400eedffab68719782a126f675377e8c71777777e3ce413ab3126adaba1d1e57437f08356374873d20b5cec9760e638c31eeefefc718e335878541be34a15987f46f146c208238ad1c093b47435090d031a8790d0a85b8e941be9f4f4390b0739a2f3a2480980b22c63fdd5d6951e0f2114604dc368cba7ddb9b9cc1b25684e60af17facec813f0fcbff8f6181f1e75d69b66e3513627b854017813d91465cb630337b7e1f336f50c4f6bb43a1c1a4bec3937452f6d9173214f3dfdf7f17ec1c34ffe4f7b47d3f6014d23b7eef23e58e614679bda40e24f6df8328ffc717d648c3e1d0087b9a16d933394359ec0bbabbdf717e7cbfdd3bc30156560d7179d922658cdfe7b6545a1e9d52e6c7b77348e7f66e1fb2ec25ed9b6e6a784152eae803fedc9f0fc7e7737fba1d5d85a7d7d739ed8b4b2bbb29d3703c1fc42bd8bf7952ef3f07d5dff8ff4810387f5e0fa532ca4cf57addd4c5af53963d71cfa94c520e1db2a7d5d4cb76e39b5fe7f8070b36a88176d624c66676c5f69a7bd9b66a99b0fdbf1d4f976dd853e964087bc06633defd7637b2cdab3a785591571d1d35d8d55096520cbf9ba890519dcba3dbe149aa25dbac3a5815591d59adb08261c5e4f9ffd75b66b341937e9b6cb9daaed6eb638a586a696435b4b4845835b1a2a26675264901504a98c5289a321c92b47aaab2baca8f79786793a6c1ce411fa72984028203dd1f5039b479c73a629bc7574b9d4d039c98545cc8ece28cb2c4fafa6a8dbbfb9036221d8814113922b282080c5d9ec2afc3bf0397aaee0e4fd5122fb6d7efb32fa46dc5f6ff07f14d8889f638e9823bedb5bc9e925709534953c9dad7f08bf855fc323eb19dc674bcfb3e8a8beb6ca4a875ce2375450e860dd3fa9423d53aa79164eb9cdf6211419664b5c04a31bc522564acc8e3284922e02a31aece34483f1d64b04169c9eccc8844eae28a9216e139387e5053dff55a5eef65cf2a24c5cebf02bf771a09984f5b26a9ca8bc876672c84e3621bbfeff287b9ad732ed537c7b4613facd93a9f936fa660b8daa665d0f267e77c31ff898a285184684b9182050baa31265948a3b3b901379a4d0b56cd37c8a6e27787e78c48b42263fcba349fbd60ff5dafe5f5a07c6987b560f7b540f707f416e2236804f7de4117e8fd017252749d33e8187639654c8ad1d74ce93a271b04fa797f828ea16545579f6368c10976e37c45055dfd5ba79dbba988a072b709cc8c3f9d831601c931c32b8b102a1f1274b76c7703053be7c2ffec8eefd9325e4c31feef03ba3fe0d2754e358ac69943d7398130e0beb2f7cb9865cd9caf9d6236c177bde504646febfcee1170732e40771e005d7bf510e3ddcf344193276f9d032c4b44749d93cd37bd5c067545d9ce60a3a2694916b3a7168a0cd80c677b533194bab8018546921613a89e3ac2e264e60139e2069804efc3dfbf702ed97617c5e779bebf3819dd8c8e6ade5264d7078cbfd1b04ae201636b2d13221cc5a81e2b8e2fbe751093519fee07ec9c5b77f712b6fb76cb496e2ff639065d9a43129192e274886ed95e6df22d4a63386d8d9a9f942a1962e5dda0ca140a09da153204cb688dea069b843f5a7337a279474bb4f951879c84a3d6f74b007b52c590929f9a427c44267befd67a2dafe7e31e851a829afeeededddddddeb89532a96eedbdfd96d6b9bf5bd83ad91193f62d08946705bbdbdf5f77214e777b77a370b760c88106d9d00999524802ef20ac3b960bc5bab7e31daf99e5d4a4616ac796b97e084aa0fb032a3b288b72634c090f94cd0d34355a484736343f5ea60733564caa5506c8926cc9841c1691cc8a4c4c9061110c4c16540a9a9764dba449c6e547b1890f0a38aea1544c8bf2a864abe6b6b55402965381188fd0a45c6f93b397bc756cc2b6622b238a9ae7826a62dd77bd9ed65a142e09dd3e77f7c97aad2a34eaee3e57ca7ff796b9a4dd476bd96d00f66cbf9816a6b804604f25071ecd23c992819cee5e7ac69f64ca0302f0e9b0a442e7819e2b43af64007ada90bcce6e1c187114910380a2351c02c011b154e2d5c00d89a5122b0cacbc1e08656edc5fc609dddddd8194f77490eceeee6efc5f372258f0af2c090cecf078f80acba9c0eb1131c14050a0b061092c468509454607a392f0a105fb9260e3e3a10856654284b5970484f76daa79f0e1a5b25033a47cc16a68868caf1499190e4befc3e1985bd241478688b4a46942aeb804ab00313b3c21884bd466608a48eeee3e34f3d2eef01019c38c145c783dd7ddddc39c6c701710c3b62cb46c78c3ca18b8f97c5863325441c5e2ba485ba89a1ca2e5828087452661b91f324993711f215748027e5ecf4ac6a9fb8a0af8d1b627cbd075ce8c759e7a76478a41b1eeaefa10ddf711eeeba9ba779e0091f689d0fb181911c09e483137bde5345be958b27dabc19381c5c887952a438e0081da81c4ff1805072a2e965d5b474830f58f28212b2824dce663111fb86f1e6e5661c1d27044061b4ce54861d646ac237df74515d5223264b0bad6dd56514e6c3f0e2fab4c6734d8d11d4777e58f2c2d784751ca883decfc834b767fdd3d89ab75ce2e2fb133355e521b0f7bf6050a30a47c4477d2849a63dd7b859ca2ed0e4ff285e7ffa749ffd6d53aa79718efc559d0179ca9a16c43bccd320f5348b692308c5cf1cf36feb8d7f27affef012c755e0c28b297f6b540f707545a739d5395e222838927e3c943169cd2124fe9f8d371d492514f66297d2ef2dfe170386247d642c5e9994cae60bba91504ff63a2532da9a5c4f9a7dbd1a5e9102958b8d488f296524dc48b56532d4584ad35351b2e5bc51edbb2ac99ba19234f74b5bc1b73cb085e1246960d59ae7e30d1a242a29a817fd83275a94a26af9a2a63b3c9d4e64201b2d8447c513699c85140d56c8a31434195f2b491c09e480c88e050e021318f9b624f2f26f562c90e5c1893b85ae292d3dff17a44f64c8689b1bdba135b64387ebf7a42937afb0326d15eb657f7e00765775fbfcddcd639972fb3c9335b4b73ce548eb186b89ca2bc1eb379f605171c420d414d610be14d43d305210c6a497b77e150cd2db724db13db2f0bc202cd2fa82239aa7429b3d85e7347a186a0a07f41c5a9cdc8907638e58572458b205bc26690efe74b2b349bc29f4a33be01dd1f70037343b3bb1d631deaabc78cc3d2f4071c1e8750b97f5f8c99eceef05020f41474189a71b4d1622a49131f468d35b4167cfcef07b9be70b2fffd6a30ad5bc821c5ffa221bdb07382823fefc339e3c7191a7b09839a913643ec203366c22507069534d3d304ca29a6670ce9d2e30448aef885eb295bbab858532f506510945434b2e08e205e983031a8196aa1c040ed217369c848c5f48829b77a984526147a9650316191d0f31231e8013352c1389235831c60720781de1fa028aea8ae28afa017fdd37787e70ac954147c6f4f38be966290a003611c2c3a7253d9d0925b4caf9231223fba0fca28814b9d8758eb9c676a3d3cda7aa23a9c7d61a6d8036357473ca862f2fcb34bddf68dc9e2fb1b2f193781ee0ff8a3ab75ce1f5e6aaebd3156c261b5368c31c618638c31c618377e316edcddb8f19b98c1df6b793d2da6d6399f7ab4a4fe734bfaee03ba3f2097eb3a277e5753dc5848584b5d3907d34ce5e5d1600bf4fe00f56c1155dfbd5998f5c484c1ca2656aee1ac619a73f1ea490d635c74554516b4e3f99a384b392ba4192e78e7f6ae88395afc9fd8b6323d56ef8c3099e4718614999ee49b25a385106b48528ab190a9a119a4a1e825740cc1343bc918918c4bc663ce0865b306939f537f7fc0ab1345b657771c44f8ca96f74e227a52b127c9984b73f06b084cdae8bbc393e2a9754ea92457574f0a2fddbf2b7c3534838445dd495d3907a5f90bdbaf57cde9edaac59a502863c76b4eb881d56ff731c61877eb82ded2ecab2e9f62395a3acd39fb70743b38b72fae08872b966821be2c638c2f0b378994976392262e3d32883918c726971e176b6a2bd31383f9e23d2f90ba5bb0a58c523712afc639f527ac8cdd776fafe5f59052ad7326b97c905d23d2cc0615f30e747f401f4c1fcdfc4b397787a75d6a8f229620cdc68a209de0c161c8da670f22d98cb9f46f53ed0506109252921872e015d642b0905e41a09f5744043b1e4c5888992cb564f1827b2c67cc7c0fa354aebbbbbba3de96f00d747fc02828dfd8a3bbeef641fc364a1b8e5401d81389c4c9893798996cb0e75ecbeb25b59ea4f424d793969ef4bae7c7491bec6b81ee0ff882f9a2f9620dc6d0e718825e11fc832ed0fb03a46249c55105948a36e8187c5272ee7b81ee0fa804a5d42a29955c1ba5e59a2334d33bb7d7f27a319e6248c548e66270d9ac2daf0f4dd83c46db1fd08558eb9c672ed45ae7eca1eeeeec6138386c8290d31b560b26db675f90a0542508f4f30ac92c15f1e316e3a02f78a3e124885fffd1edecd4dea00da397fcbe7b22aa19e32c34e9f70ecf0dd775ce9fe3198d53fb4e4a11a81196929334e7cfc1e3b226fd5b91cf8da3a050d05da020ce2ef8fee87676e99b23d980cc6ec9d43299a154aab8724363a9450347650f0a4beeb242139272859a85a635a39b19484e156a4055d860ad011acc0a4b6b0fd840b2508309000d9a148ec50636587ae01a4075ebb0a77283920d072966b08c45b68770552a9094e16a8c88f149311c6185c607c5927258853c7243aaeb65d93ae7db1385f9bb8ad2e4651d7b2aa73604334631f31f047a7f80723cb5ce29e59323e9f926a8737c4e83267d07ba3f200e2477fff7f9a0d0ae0e667777b79b1dfb1108a88e2203887c7b63579e4181f037a8e3ab5b54c2bc068549af30c8f7f3a5cd073bb2425889e1d104c1030a0318628c179f1dcbaca21b2f3e3c8803604fe5130fa9db54019725a814ec1e0b89060c009319040800602408a2288c6b567514800c20c46090a480581c8d49a3b028241a07410cc36010052010c2700cc460180a92ad0e1c32ada5f8acfdf8fd7a9f4c48a9db0570ad5819982ce7289be7edd2f251802d5efbfd44136a92744198f07e7a065ee8700783d8e3047b2ea540d6afb9f67d02163329321bb5971709f1caf4b91d68c1f96bdb030725f2407c42ee52939d67ba3f458dc907baafbbb502d53aa8fd16d48cd8c4f6edb1ef4c59eb7418c84252d96737505a533f4872883f371634164136e111149551960805bd7a70d61dcbc7555b9d10158a2e7c3eece72f62151882d8bbdedd80aac454f31ec4c6b5553df729ff46d4ea711ee241a30816292a7ba0f37a036dba44180475e90571f65aa29de1ab8340119c7557838af583e06a90e58cffde6f034f90bc82d3d006b98f25012a05e3cf5554fa02b716f319bbe98f758fc6b07b36d2fb5132b3d7ac03a01bfd269d0f2bff1bdd32d50337e1630289829e3aadda71f88cdd5f1ee5aa3f110a978792c9dc8c0924b2f387b4a4a2629b906986513913c10fb5d08e3a056bb70291ad4291bf3596597dacce511dda25ff7538534054364f40716310efb9b213d1ef30049b327e683259f8419e256fa334e55266d4eb7549107226c681e4798ec24db5e26bf8870f3a276112b3669c250a5c27d85e0f71919d6cfe9252f7a82ebbd4ad1ca7635206ad20e8a805c7c693c4ae38d17c2b32ace45ce306117ee467c819fdc1a2b05defc565c1dda80cd04ab1b77749d3c0524f88f6c4287d80612f269e850e98c83e60513441ae4ff519b24a338e6bd696c02eadb4c9796281421a31d0cf43fec00fa30bd0803d5b4027d2eb3815a089b6bb049870ac1c5ddad5152ac67b1c4280bda83bd98b4ea2cfb327e2609a3bbbd01e71c8999cc45b1ab10e23a9144987384cb1c81813a29315eb790a2036f8d4258e4807a28039086a6965c854b4c6507fcc99a8d23422e29b96150c1462865f09220112069cd3007b7eadfff90232961134ee64821786aa02c96a018e395185121031c5956ae37063fcb238d8eeade4b74e200db21c480108a7694d2c19069a4ce088f620b2a01cace862a097b5d65a666bf6cc04c0ab1b4e16974e94dd8cebc7a00ab7dcecd03391ca5443334a09ac63c0ffe47d9d2367872a5d2de883566187b2a4507ae3ce9c1c35c4d203385ef5984d696f3d2756849ca6d87755202adec575ce9864c1b8862bc0e8680269347dde3b8acd076d65e41e02cce2afbc0e4a9ff3572addbed58400d30dae683fbfecd7a7659769d84631cf232b09523c2707611719ff95f8c4d93035cfb88af2025a16935d5b1474ba3719921981707be12be859e2ba5b3ff38e6628ad2d39a642e2d19f0fa2028793e8d13314d323c89e6af04c03df70d5d6af6bef6e0becfb465bd67569fb8301edc84419daed6662a303cedf65e10da04b8f7edd41ad2a0950b2ac1f88aa356375b4481afff40473834c6d02a980b76c03a8d50b99b890408d4976552dd7c55131070514e40420ba39f1c128880acb23231dd4b4732ffa883772fe21e58e8ddab1086b8efd4acd2a36d08980658796571f71fc2bd2be2895425f34cb2e8b10d6e92108ec447469f3eaae5d6a88e7be82042a2a423ba872750d20ac96616ae82597531e2cf71efbf227968c143432bb13ef442709e5d362f8ae28df172b639b3cd8f4dd6259cd5e0e2e676d0954ab1ffb9b446199ace69b303f76aa9f110de155ef9ff8b56f2ba304a624ca32f26e7d0f0e7e947012aba7a155f41ffab954ff58936cce2766317323574630a6c7a1bdeaa8c97e36fafa798ce840ce53478d55b7f3eaaae399ad965f8fe8e2a731ae13d28e6d248c5ce6d20ffe8593f0f8d54bd83a11bfd42416286880fb73c1e4a92020893af0f4310fcca9aa08a03373aae380d2e230f238475f0b74846880849db77f68dd776a9b375c094aa7c13a17f0547424cd47e0ae81048e0ef000ee939061f1fd16f376f95fd2c315e9455de3e262f6172e076ef10450a9185bcb49c44f53da5f9c0db9139aa00e9259c371a4a054251460ff43c4cd4ddb5ae83548177cb8b3d828dcd666e58bfbac084aa88dd20a6ae9677510141a7d0b4ed80d4d37f50322bfc0bc786672e40e2c96782b9f35d7d72d74bf0d034b1d6a119377aedafaf4ac683f92c90a8611dfcb20ecf8f156b27beea148d91b79e6d745bb6e7df69f0a3a78f0b2fd33bb3298f6a62a59277bdc66713295550f00ff7d02621e2782c3d6e8443f5e7f86c007a1fb44ffbff1188a2b21c62987de7295a4d611137c65cbc9d22bfada061b691562e52a01c1917f380b9499e0f60cbdd05e2161e14708288df0a7af82f4d5851ace9c231ee60da9fc278a758a079129b7478eac25b68bd30fc898b88dc172c542f36d01063f4920681e8d694af087f5995a710c4767d4f38bbb28af779ab604a14a61a75444a4dd55241c42ebb6f8c45ee530a5227b36fd2e9037f3184cce1d5fde6f73fc7190ef0a82e279c1e53b179d5cba6b40d9876f56d32cd42df90f0de3ace03fb70e9123a06c97e2d4847b617d0d91a46d0a920632513052a8ea35eabc099cbe617554a0a79f4d9aa426160917600c10af59c9c3df35f50060b162931a4778932c883d83d3fc98427e685d508c7a7fc976ce2ab236da48ec8fb0e8581597007fb71ac919a42ac82a2f2ecf555181bffcc64faee4c239116a85f4d4480060d32b6032a5e210142d5fd9c1d4b77d6f7a49b2f9aaedce52817f6c7186067e5b829632f8ead285bc7182728f8cd6770dff339ae8918168f02d8f51141f939673f1b137dd571ffef0763a6aa08f049176f29586546429482dfdea928cbde9b8c423f19890d1b2e3051d4bca6355225891c1b7123a0f0f57ac00c6078b2b8b3ab53c7be2b034449537b2ce126565fae6f41d58f9ad8947cc77a206c6e571b0904cc553d4506f62b3528d4dc463e89196b88a9f029980394ca9c733f25a0941ffdc3762ab51684abd6349939dd1f5429c3410941bb2c05251c5085f10d8edb6cb3df675cfb9b4abfb701177c47bb2960840bf4c40a7f9df1e36f37f02341c6b0a7076056af13db99d5929b7cb2d9e7538c08e2ba49c87f294007bfce57198a6b8a717a7a0da94d068443e632d01c10b2aeeeb1336c8699aa181eda923c66ee284292f7c5880623f67b6860870fd010a7e3bd0ab17999da7427493e4ad3956e78ea8ae1c4b2283536b439f712c062bdedd5bd74c09288fcda5f1c515b6a1f89dbcd344a723b6c97b3fbdbc192d0746d875c137b98d7803c4c2890f703bb3415e8e374ed451bcdacf061cc3a49b2020076e88ba3eabb27b8d08e7c096de60ea380b85b35a9762fb14ad1e6f872ef9b970a5879506922b105fa37856ac8c3baffa5c12c31845672240aed5f4750e0804091cde9901c755124dce425af23ced88e290a9d20cd52838777bb1964c9427cba02bcc14f89c1f0c149e6469e93afe678855b09fab17d94b93a5754aad9bcd4181273b4f6b4e48ad4f8251eb07150db82e9963d957c582b4c0647500417c749a3abd41a028655322ed6c04f7a066c482d48e3df695fc86e11315aa26a941598b52581226e56e2686c2c897810204f08414e5f429434f13eea6a96177794b582749e500de2621e49102cb44ed090b5dfae3dd9326cc043919737d74bfa179df4d4cd81f3f7af7cf87b70c5117b7655b25d2fa32d27828eee0f349e8cdfbcae683058d93d12721db0d46bd4c1aeb745cf50f23299671fb497c0745493f9522cb232b06f363b7f4f11d28a6af0a4847012cdacb3b12441fe916f59b9837c621f8bf17c573c82419e94588f9f47a7aa525a71693d8397eca75f0e86a931d47b74ab86b400bea6adf7f41ec4d407f14f2b9d8b3d14f615e2810367842ad3da78933910e733ca64f49b052512b4e7e3bad909d1128c90dc954c0e30a99698acc927d008a09ef66a0e0c741cc3893f36ad921904fc821062e31db744f54cc0010a9076b63a1c024c7d479578a5d8d0e5dcd717075d3399a1d384873ec4bfc499484341511c1a66e753d6753e9869ca647cf68aa7aa576cdf055e5c7de0c063b18cf9b22fe7aeccc2018ea4e1a80d6fe94c6392c518d3f790725f259a10a6e1842caeaabe48b88a1cbb8476d2888e216693db51d5f9523eb26904a1b94b675f327ac46db3fafee3c69a0e807ad654ca379a02e788e92f30131608a5653423d8e211eb44a0f40506dcc5aaaa4b1a2fa958f0c892d1c60d5543137a6d15c0fab96a9884fc104a98b3826579dbc36597d80202456788b13745896db5e5a34b35539204c4fe4dfeb8a3bdbbdc929e9d368fcaccefbc2ffc52b48aa9b9bb9c4cad1a12dfb3eedfca37859f9ad8d03be61617fdde4803fa5e77e0e862d3abca4eeaabe35bc3f3697763cada3adf9ddc934370121c019b48ad8cc1939a2a46575b05a250e280ad320f08b26fd7404508995e3d5c08de2f586f0f6f813d098444ec46af3db931eca89c0595cc91574da54113e7c51470be499a7c444210e50a24d73b215685102a65c6be3c3bb0fa1d92d40fe35637352eec11a80178c8f1494f72a78c76611d3e013ad41881150ba3552142851265d457899501aee287e13a6e67e939dddd5fe905d7a0bc3cd1a437653ea42a1f0dce062134900d926b2d6033fc6f377f3be2189cb4c88e7fb787cbe27144c229fd02181d4792bee777c5ae9a1e0aefc3ea5f76f98626c5f0b61dea20282b7d919f62d644163d531fe20e1903a5778978038a8cf089be82a48de8c6b1f32c2fe2d21359d65302151ba05465a678b7608844df487c476c14584de8c961e69ecce2b09351bcf66a211120b365a6f5abc454199a43e1096e716e48615e86a8e3df3713c92a329249883967158b92390812bc71c2d9646e23c5af7db2726ee025b0025bb4c57a801320ce8cb7cbf45c33625f900db9c26093f740bee40932a7bef8d37cc62ee97a215d75a88c6f88f4a2429a6f1faae9edcb1a306333c63840a3ef584cdb8dea62cd1f65824e68bcbdea12264a061109d4cb34ba48f626c14e84a4bcd8b6e8d17d9140fb433418d1c573adf8c042736c17bf902bdf66c81f976d1f044ea685a01d8f365b48b415f1a3a72196557b906a4da14ed71a8b161d22cb6fd9e4d8bdcd5960964ed94fb7070bb4608ed4b8b370d7d6cabea5e110a4a6ac46c48a58b93348c757fc721c6ec6e27d7428eb13903245b422798cf9a98a2db2a34f479895008e795c657ee5991ce341417b233418ddf00e98e857a5d4cd25fa6b4640b4b4ca99eab1ecaf89a07932d1b21618572586563d2d553212c45d0c6948a7886cd7a8c7c8673d62ce219dea9c71669ef84ffb0aad18b544fafac9aaef1ae8e359e862f3c1adb03cd6e8a702638d5655d29dc73553dfe220df7c796f5aed67e2538693a18f995aee98c401a72437ce8417f06436cde55c7595fbfc89f29469b9a860e3d084f9031ad3f63b2b188dc7f0d876d5f95c4e0cdefbd098a62e34b82e56259abdf8a249d026589894ad3ac74dc9b727194b3ec8828e9c1373e6cd304353a8ee47cb3a878d2e16bd1c458a3cf42a2481be6a6e6b47701e3cb3e3926802033b9609c276985471778b15f02c5d8cb23b3995368d5cc7b1cbe22e6deb591d732a8d434503907c9bf3b6f315e79cfd57b749fbc6b6a107a3f17d182f72af48a376bc540522b261faf70a15f6579ced6ef24115816618d0c370670f310a4ec40879f3a7f654380cb18d44ade7ca28208f9365fc2c6bd37dd9c823a055b6ef7c2739d0de7d5f1f09dfbc4e6c9ec0fdadfe46bc3d6fdfe8bdb71812b7242f99207f9c75f660781fb770e3e609a11441c06dbde27886ac7254244b024006639a6edf7ac12b50febde3a53a2934e9e5c3c41596309df18f3cc80aabe1e8f98cd6a072bf1e4b00fc562dbae65c6001226b58e9da000e7942f1b312badfecf2a2b630bb0bb825385abed6558ec49141f3ebc3f9fa4c53dfc40d6b8d7a106dde7cb60b077c13c000c9ba691f4b6acff0dc6fb762f42e82f323c6b4c9dbeb84b831ca81b07e7996af1ff1cf7b3556ba3885c7f56be0819aebbd5065904e9604b2346826307e3848ab9825f899df9f2f87d8acd2c6f9f6fb7418c4672fb083250fbe1ec9f4fa3f282c1a045f340ca8f89e48b02f8be30df15834f0b9498d8b5ee3acc03c0eb90fd51e816989a22ccf18b63c00368d60fd41c61bf4ba3221d949ace132de94b1d3c8c14d81105856547661e677a7570f9167c845f9983ab3d6c8833956f1cdc1765de8997088b762f67d2fe5f8bf11d510e86ae79e77c46e058f56bef9777949151b30e19b01e052eae64545e3fe51d77d4e13086b63d6cab67de8ca1bebbfe036eb3a5a7b437b667fdd8a20ca9fbc1e2caef29a39c77cc6d754a10ab20898802e8042de8075d7b90bfd89e91488347c7ba4fe23596a391c085046948544d4bd1167f235929e872decafff296db383bc8f1b68956aaf20a3611723d3f33ed7518e7f768dca6f283c1225f3cc2374ee5b18dcf71340a2109d66e732c29c5c17d01e8bf59d066116604afad5ef1bc491d8787f8ab9dca52d2fcdc3d8b333ae28c602f0aadf0b5be9c936e1fe7665cb5a78cbcc2aba3b416d7b68a5b282158b02673debe9e3e5dc3499964c49cb91bdd0cbcb195f096e077617f2f77199a7d6f0632df28cd4a64a921e2b5ed7b40be0eebde78a6e8e60cb6d4d927052a720faa9e54062ea002f570189b60bfc140346dde8a7eeeb71f34d08b2629476dbd4c15cae1412a28f5864fcbc7bc391ed6f88b1f55b54ed4199105a2a1277c8454f021d888e335365def3831c85d37ab4a9f77edb893cbb4c72d0681885e9da980289f84b147af44f6574f2e37e09531c0971204c966a247ff8aeafb70be093f30ebdd0a30ebe4f34a1f2b5520dbba3c60f1ef0a4f22621672a395d44a7d1d3f8eeb4922685b33adfc534a009b8ebed0c559d7cabc28af223c45d6611a8cd736fcc910a43f69fcc84027deb0703e2c968f08e663e21e9e4ee11847ee898ea213e80a6fbe4738ad204150157b3bc2c29028a698d7da4939d4a8556c4033fe74468d0d210262f5b8ebc7e4677e68eba68310bd197e9d1f08796214ead9913824ce90f2f6b3c46e1e0982b03d1f37ce680e35702c80b8a77e31c7cf38adfa60444523775896975085b6f0ec31c36e98cd69e14599a02f49483605586399fff473c728ae870c7765a8c403d48597baff1a9d5fe49619a1c63937a7486cce601ce783e6872dd4a8161ecc7ae8534ba5da518f2534e905143a9cb2243f1da9d34036acc3ef11414966496e3098fe8dde9533740fbe2834b1c08184439f126241fe84d97157840e1293ee0db2508689349e99491593c4b4c2f8ea581d32f5bfd911aa3a145f3d9fdd2dc43e19ae0c1d71aa44a906343e17c10fc5aa2df521d78e4bd75700b0acf9598397018b0d7add96c929eb6c95e994a7041e6e41ef0745eda5e5b79cc15455453a0b16dfbca25384d70d02df206c60c5b8b04e963e215b7005172512519f02caefe7c46a185c3f78955550a89815d0900d5380e90a072b54c812d09165fdb97acc6b3e1bc1b6f622ca410a4607999bb15abba91a909e5771afd8644a901e231c01afc89636594d558130af37319417c043bd92ff404b6be260a4a3633047012745ccdcd443a1a68e73c2474a6baa4289dcefeea6d362081b85f238cd68b0b697fa9bd3fb46843d8e56be6d2419237da453335a68d42dee531db80d7caa69e188686a9c42ff8767713a44f136c19947a462e23f9dc87fec501bc7424cd64189406bb348017d6ab047488b2896c1256027a53fa0a6a82064f631726a4ae24302dc73ba22b89ce6be22cd2e6844b0ad07aef1c34dd27d7856b665117c63929f40128b6ecd433795c7a71013a787113bb2f0c9a3463da0cc63d25122b793d340d43510f1e710b34617505a880fce126a0a84f0b495d2e315fa17a6296b153a474d38555ee3c99c96814ac54dcedc2c3ad49c3d2c4c47d2d57e0d887fc13eb1a557639af76432d83015a39ef2e985f5832887f471e241c245241ed29c0d20ad375ff211b00ad967dbecd708397ac54707acf769419bae98f6e727632a9bc2b9ac33e4cd98e0f3da9d65b631d602dbc4b05e514d66f266dc1ecf184329e94b2bba9c0b8bffb24f028c828e0a93425a1c69b05549bea0509b02b905ea9f45f623e048b22d46412849b23de89790dfae1f3005480ea34a7868f51e44779b847091363198c2782eb905c624faa91847429c830f93981bb46e7145795f20fe57c13a613321ffe530f94bc40685ba24b985704ab21afe0691ea991046da2e54a282f3f1a6bb4fc608309fccb913b68865cc277784318dee23c5fa5d2ded5c51759c74d559ee597b04a94e73471e539fa7bd0d4ecd9d1d2417e4b244e7f5848a470a8756ba02e87907b6ce1b01f28633fcdbcdba2eb3ec2615fae3de7a5865c2c745d0a9087d53b0a2f25053acf5d9dd9b78619557ffa95289d9c66fda2ae8eb216bfc80e25db311db9bfc79210809a3bd7a957a79c4a10995a23e745fbf932fd6431b174053ad2e0fec644830930c8c71c70bfd4aa13082abc96f13b089f9f00722baa39e77e8193f5b513b990ad656802eb3a5d2ee793058367f0d7372f059097b03fc42a7aaba8ba26597519b780d39ee1bb6d5f5a922880a995e6b2457f63a927709b9fc3441ffc539f616be5386da38c97144c84cd234d9791ace3d2822f40625e511b26dd2599f8c1e8f165a35776bca41902bebeadfacb50c2fe28d85860de1cf3586f9770eb0bc285ad07a7a5a825378968cdfbaa21d8e568806b13bd3ecf21b8746299c7fc59bd5c55c0142d4afe094be1de191ed88bdbc31007aefceaa6bae9fb27b0459ef60be08c3251f2f024efd952000e2722bf346f0bc9e2ca2f1ae7da000f2da4bb1bae0d7446aaa828523584a6bdf710ee550e3628352a6538f9417f2dcb89466c754778580be8ff17724526318eac40df7860fbd01bf6a0d97637db2a6350d3e52435d8b32ec63ab36d19d654716379fb065aafaaf0d150ae4813a66802804c25320f1901ead1491398d786f8653f224f9379424ebc3bb0a26c3636944362eefc33600362c087c5f2bcaf1498a49b84c1d02f0f6e664a14bab8071d1823ce4a5545291dc8a2d37ffa451a34788e66dfc263a090b2626b684a64f3061e12127fd00b5efc0f1d2e88580f8734cf07f1df9d595018713daa761c6463098b683dc414563b32a58da81941ab40a8f600a5e3f999889438f9493e08b0a218869de8e1df8ec4d1a710bc866791871cd42e6538ab9b7f6f98f82a070fe27eba509bbc12c66d0b9d251b013459fb7b0ee6c82349898eb0418564cba399cc3faa6146bfc4150129b3e3a489c47c2b2074948716ec94ce6c906e9fc2c737ace9f117c99adfebdad1239b42587a46d368d58fc42d748ec6262b79132b15d243f2f9d824bb51ad26237168954a4d9ca15af151ffc36f2a26daca361a2690c80a6fb6db2241e8c27a16d8dc0cc6c07b69f9209009cf00d162087cd324b78a27654006b4ea81f698c7f88c92880c4e6ce44167a5f8e334783f2594545ed4010cd9b4dec46e8c7423ef6e6aaa7b0377564629de73f10015080a79f204a8a2859830ae6f1684e780d37e0333db38d24d499ca26845b51cd00903a00b9284cceb1c088320419ef37f1b612cd8271fd97290241dc315a589e47a89edb214e3710880268a8d3fc6045ea0dda7a48b1550251a202c828cdcd290475ceb0a7d3ba2a1c9400e74dcee70558f1cc5792996eba975f1a794ed250168194b9cc1afec9b8978cd4e0c657d125b3fd86a1c749fba0fd1560b18564f41415e81f519a5454c174c48bdbd89da27b4373410e4d23ee2584d5f3f4c8587906f9d2a1a391be726d347b9ac830c141d21270d46595907730e806f837dc9a8e026d2587f188eca22d8774ebeb737037c21f98aca190c32d0ce5d5610bfeb1f3c0f73f95414c642e73453b77f1150309852534700439e140ea8489279b8a952f3ed5a49aabdc64400f85d5198ccb0be60806205234db502b217e228dc10cf5d4fa827af99fbb72c2145e2b536b3138025620d82d46b9a304e290ecbb9d25c92bca1144361655486a1c20b082c0e4e31f527486292a2b65ce588615700c6d1ec5e031c3c8def5d0954c11f8781b00132439987ab3c60850d0fa5ef065e3a8e2b1921b4033932d44e0713a5094977a1170a5fe7106ce5e253786eee3795a6bb9c65b65693435db71c8432ccf43a44dd785e2be55b6df159101c58d21d4617d78aa9ee3ec1a35e3fa8aa08a883a345c964c1bd8372de2ec1db195a1f7a56289ad5d1956a4cafe39544c341c0d25afc4ba55086ccc74f820d4cfaf02aed03bc24c63219d2ce6a3a4aa12ee055ba0152753a6a1a03da092ac121f05bec6eecb0da0ab289636fb92ad77e4f163a647c8fcaae78e5b75d85c98e6d79061b411881aa88e01b2206b016cd0680b28eadd709d561d814bc97d587ac80327ae09b0bd160ac47d3afa279ff93147ebe5565872d1ea183ea074b8d0d062064d4f7e778ff5b7c4b772b16eff7feda5265d1d7245919e9ad4cc22ca42956b47f0585ebd010959d510c62ab429be228d9871de15289f3b408743b36e435808ea0d887dd28dc2f77a69e98c5d32ae5efdf905fbf58e74798045e242b396b1267ce692a8194928fb7d1b3e7d41b8df2fe63d1731ee85182936608276cb4ce402f3d5654855a0eae5dbf060fed20d0f5db63cca3b04da26e7b2b5f24591a91b533d3d7fdafd70638546d5775e0718060283eaeb44a6135f1d11937bc0ad226801459cfbd6b8e2d4b6e9949c279a6dd695f4728d623d38dd1c4745cef25005dc44fcdcc8baeab09f0ccfe8f73b20515e6ec65d43f58c2a84cf4b9776f616428471cbbd26751ab4af873244d0db5a2b3caec1ec4d8e2c91abdc79308e8b4b1cce30f2690aab1758a132100fa1e25044a568216bf6ff49cbca5534c2410575a769350b931cd9741cbad852452931ce25c3d6c06fcaff39178a82b9cf32502ddb182ec05581bbd4b0d9aa817900e6d8f898518771a4f0b071aff355aa1f0f63b840666c0f7e0f581d81e246bbff3a102be9dfbd90ddf30bc5cbb6ba2086d116095d90ec8e9102be4122ddbe9635274ba6b089dd6fd6148a8c6dad420cfbb8d9692c71337fbfd20d6048eb2cfd640a2b8ad4109c9dbeaeab0723583d86fc25c94d1f3ab8b9a65e34fec856f27283ca882ebb025241b5430207b4a29f9cd38d6b29043edce2161b8158f494f5c17280c3cfed4936e1bf264bd2c000d40cab0a6c02a5ef8c22d7142ea4c1bbc84aa3e6b442c8dc0721e2985697184409694ec3682f2e8afa5adf0881593c7e7caefbcfa864220f6722f524f81ae34eef355c99eb8b6836d8915a27e9ffcc1765cf6e38a3f29a78ef1a6106861b356879da85d70fdddea43568977de4041b19a56a642a676b5c18dda08343857a7114157172c141dcec548adf9d3a12eb066b6e5e6dbdc672c464573d941de606d183bb645717185ceb6de4188950b6638ebd8a06d8f3a86fee0e53309a9b3448c0f4b25ef4e4433a19893407d6c82a0cb1f60bbf0e7e7ca8aa80daa5e6a19369bd7bc67f633180331b739b7261a88dab3a79a3cee3d3a1953298b11e303a6e29f7a3d538694a3de13dc96574a0fdec0217c53d8e4a3247b1e5050a51cd1d806dea13195f9450be5d3db61e4fc62bac9e78e178f7247ab2ea2ccae668252f5259667381bc33d29c804f395ae6b7661f5dd95260d9cb0b8b93c71f19e26d05c1d3b3db1103421570a02e1a0ac5790ba75f9dac22ae87f1b5f83ee4521fbd9fc9903fa570b9a6324d3de58d2d5148965b01f14c3c8c3e3a0be198205f82f07580caeb7faeeb4c83cc575af846308198b8434da1d82b915ffc18a24349c86a58e5cd28c0fc3ce0c45f9d1f3c929fc278cf472d0526ca540171394fc9760e6c7b3a08a8bc5542cbbdc637783577aa86aeccf88908d0236a618698dc4b0f49b2002797bda12ab62667f1fc813862136e41450dc1210b014233a6f095f4a1b360b96dd36908269732f0482bf4cb08136779005ebc4a37b05b1d6479d1b23c4b23afb131c2d0df6ab029437cc0b80e4daae4e1ae5de3b7e8d030421770b6787cbd7000a18177062ce637070fe07c2fc82d2df2c0012c3e1f8d7e2183968d8e43675f0bd46f72f8b0173ed7d4afc0262dd2c6e610dc89042178177f46c8ea3a386670a7065abd9f3836cb71d51e59213eca7c8311c5f209e51eb5ccfb540b02b0cb1a523b924ff7099aa01ddc6982c5f8573f4628ea3b38667827065ec49ff8359363edbd071248e119acd248cf30495780744256c3e70bfce47c56bd31c62f7070a70565df5fde47fa95e1b5e27406cf2118086f5f99aa3a0c191fd4d053fd5dc73ea4d405ca964f63c3b8f75cf4570f833d0bc306d0a5866f5eddd33dc1f580fd4847aaf763447b3b8b794a4b8649ca10ebd11987cf9fee5964dfe66db6e7820c205cee309a7f3bb27b2d7688229d75790c487a84398741286c37d9a6b432e5db4031cc3ef6985ae01bf0071c9c89012077179f91fa07be176c78260c9adbddfc8eea7fe5bde0c3333100d5eee235d6a7b2615da8b7b4a8e1a3cdfbf82555efda4884a16e6951430ad3efa3e74e810c66e598b8544b8878d1cec970bef58e8bfefec63fc02d487a0343280eaccfa8168fdcb373890ec3cb2fe043ee5ef410b31748a096c7b014187d19d732f957a6667656cdb91d5d699010fdfb203192d09eff22bc54a42a83e50417350762ea25ef49c67df28f5e1f6951408b64e5f460147defd7cb5349ec8b5051bcd656a9720c44b34e041469b7b3e705a452a5d0ea5f22b551f5eb8efb77643a11e61792695e1fd2f035e08d09f1ee02f2008da668edff149594c03aa42ec1315eb5f6d8f0f78e2b744101aa762d9b311f350ec794e6cff4a0b3998b3af108fde19874111258e9f440ce0a18db013cb36ca7607940a5855ba67552d2fa568430383d9b2e49e5e400e0c950ebed06fa8406988ae4e2096dc8bd6c7786f0b48be5b503438b891937927fe1121adf63d7150b14c49fd83dafd731e0181a2d187ccd62e3697d71e134abb8ecee03480bac38343e222a92e61bf1dda947c39d7f1d3510bb3bc598e2070b79f18c033b75638f930b7eed82340dcf05526b2469c4700dfc8807873358908da70b030450fd275dc10e07cec3a312b7f7e6678c2745abaf94f9ea7248206c94150186d46f8dcf52c7ce5dcb1c08abddb80f1ff66a250c576a4076a25c05a72d74ce1773fb15708ab14396d76f1546a455ec3496bc95bd9a1547a1ca970b8612ef446d348ba8db99b1949e67f3127f042e49b363498223c40381dee7ad702cbb67910f8bc1e94d195cc6b17258d40970c76fb8daeb046f23b6644aee31f40f177ac3a37a5fd7a12aeb397e565fb52eaeeec423a80c8b3c3b6a6f6dbf9a9acffbd921823d3b33f0057947e14d76495b6b3d793a8f6e051fd8bbe1b5be46461bd381e112a5a6dee83a25792055eada57be9024f2005a6b0f7b6c52932cfed05f34ec46ea8b0839ae45d2f9dccc62a75e14dec6f67b6cc99778e67fd671dc63137a96bbeec5fa33f24532a87df14a7411c82679716c61bcd46afd8b3f6407715d6f703f642c362107dcdb200a90176f3ece35dc4038329fcc014a9a22345680bdb034062e5e02a2e27d4d9658ded413a004c6ec740f925021ebb57d32fa84176028044bc5521936955edc0cfecb44d1d3ce09188961583f515a55ebd80b0c323a956b02c3b8e43bae1788b52444d11870cf218e9859dcbf12349762a622570946508c998af4b06cc0648df08d99a740dddc0bc72c8b2456be7b4ba8aaa0ec120805ce0133aae4bcd69632629f269568273c874b2b42d2d6dded9b343fe9bd6bcd57068e9dd228d8340911652a23ef3ee22bda1251952e4f5473b17c751636c829ccf2809af160ba02e8a9d0e1779950bc753c091e2b6bf672618b6344d6b4de6bd9a6c3d6be74552b63e62a44c6803c1115578cd5fb134bf2b34f0dd5bba01b54aed1c64361869d95ebb7f0120f89d1ab47ab5941a75f1e528e80e80f3d6768ad098b795de4956bd55eee5525d56a81fa7a9ababf59e0b239d2baea23c65e41c7b2d54f28997630476cb57ae79839c977fddb2d160844ab3507bf9028b5ac55d5a2131214ad15140c4669d83eafd70ad6e5d6b940a392e229f252f0749befe09f8e6a322f3bf1947debaf99852219362ac5e52f0d08e96b5edd120c82e6cde7b33c0575d11d5758df3c765ae5e2be674a4b313cd7f8ff6463c643cef7616215ff29f6deb52ee91509be157d7428520bcbaa9f3a742028c284018b230ea4a0a0ce611918c2813771799b8054e93f40ff458277e1a62947979159d1c3983ec1180888712405c42b7aec4c41787971a71aba004287e89c0501adb4d54ec216e58b66481f020fee594987f0893ec56672b83aacf42b965107f745804192110925a148eeb8e4cd8a2534404a8ebecd08f9eb371d43fe18af10026678dbcb05545d4a8259206bcbb9fecba468dc42cd3ebde59d98a704862289b2f875f3c48be739cbd749b7a5c3f27675406449ba1fcb054e29f209fb1c5784ee8cd3601e649089455a53a443bdec78836f5dd0383f6fbea00a1c9a0fc36217c188f708d664571d6b66405e900bf74af31af00a2688219c0f7d34ecf1a01d6f26e99049c1ed65ad0d58e5f5e1613a81de13ef13c5211ce6b6ba5fbc40a2b2299718a6683998ca5e34b1e7be9a51e3f33d18df13c8e6ea67077e92d16b0b1530ba2757e1443ba48b5976ba1277557ef90c7ce1e4badca21c708d22860ff243708f772f564931c7b0acdc95a3a07a4b545ad2cafd407b56e2b78c19864c01e797de185d305748cfbc24ead5b3b5f16aa35e401a71bfa2a5d3ccf0dccefc60fe8956136ad11e809cad0be13dfd59aa77a26a34b0eb9da8fb4a365d8da90a609aacb3f8c2e0dfa25fb0ed9ba22cf122c87fc7a21b82854c74a2855d4758d22313ebd400e9c154279c042b544e1f8743896ba183102f254f8a6c1596a384671ad3fc4787076e91d6548f9234211de01816500af1f8910a2cd3fadf234031d4a348da4b9a9e0bc81d1c50bee663ed1563bd8a26fdb37b466fd6b72307b84a1403b773b09f662db8139ba2d22137eed3a19b859bc926fa8ea5415e1d41202d43fd66a1cc5c712ba46187285c0bc28b26246704cc8f62568a997b40d98a3b44e15a7a02e66219d96d52731776c0c94960c2535090e2745b2617600beb067076b5a88a09e44402ea8aed515f40ce419b0ebb27b16932146fc5ce31bdfcaf0de73bce81896497d65df762bb17770745a1e4d7f23aa86eee0e96d82b492f37fef01fb87d008d73e05d0849a505a67850a17145683195a8e2a5567b32d491f928c2a2de64efbdb74c29a52d0350054105e904a20eefe1e84644150aa257a0209c8c202c0ca35cbecc40003eee87d6021bc3680b88be1614912e841e3b65b71e5918a3304861829061965e619aac57ca70af4a39327ef70f2d09a2248a92382293487a596f092d55a7be1426a2d7acb3c303a68961f4292a8a0f182adb430005c9c055a925b07852e377b7449425a896b0e24da4e8c0df5515c328ce2a479531fb89555c0d98262c00e1db1f84a2d06de711ac4eb26af1ec463b7f682114f53076f78195fb11a7d8209c610ab873067e8c59664bea66e62646583dc3b01175eb34916225041fc5d515e82a082723a84ae5f0f4e510e3787ba3e0abe731d9ad47c6b64ba578b8aab9f1e4ed38f7b14b0a5dce66b3a180c5fb7675a9d496f38a997f5c36a16b6d6f269bcde6c3aaf6c8aa2e9502e24b951fb274778d3979dd4d6a0554ac106a5ee86eff58a8f24316f06c2fb2d96c3d84a08e8410ab07dea62e952241d3e52922f7f6767fa31a3a7ee48064d50228264370159729292e25103a69e486c414bac430c48a50d7dcd0cceb00402526038e5abbe68ac8e1538491108da19cd0492337d4af44eb6737daf9433bc2e9885b7d233ecf3d76ca6e3d322272f8106104e45ac49edd68e70fcd0829059f3f1b41f53e4658f9f7261fde73165c318cda7cae8880fe6ffff9f7ffffffef42504d533ecfc12f3e5f7098902b93b8c02311b898a4903e5eaeae7c3e4324053153c574353a89100ac114e393abfa21e3d325d7dddc3e421c31ebf46821064a4b0d15232a485482d4cfab504bb8fe9b72c4309a14638ad2cf0a385015f989f5e87c8dba318c4eb18ba8f3758ad064c2bb8aeaa8beebf07933a82649347507abaf8899bdfaed5fc42e9a1cbdf7adcb2dead6e8cd8b41cce15acc1ad6d96ee12edaa4511c908ca0577929d42d0a737704ee9cf9961dbcafad53a5245d7e9ffd96285e7bdc237b62a5fb67a8a95ea7b3c3132548fd0fc3d9f913d3a1fe4c89b727e5eaf2cf1157f1920311df15d76201ee9c310aa137579a0e1711c2ef6e3b3ce755103f311d66b6ffcc172650ea9f588f4ec58148b68c209e4cb22d5753596c5f25c5eff02825318c2a31350c25a76e72c9057ff3ffa76a20e2843b331b6972234f6e24ca8d44e91f21b83da112c15351084ba894b02482b79350f6ec463b7f68449c8a588e9db25b8f4c08aeda000585f7ec463b7f6844881a462b1800a0291bb0a82842d430fa7928e4304265a487ee8ef5bc8ee06231ed5e6ce91ceb8cb674b502d6c76430308d3ebbd1ce1f1a0ca7adc5cccc4792a0f0b0a1a69d91e4702446e40932ed5d0c06922a772b2cc4340c188ea66e30820555df47530cc79214318c1e25293139c14872abef84ec8e76fed0aa1a4613aefbab0341f9d8416c2556946051c245c9171b1eabc9aa6500c95004847b9d9d201924530e07e4616a6ddc0e8fd39353945314272a2aa02019b8f0816e41b830d63f4b0110540db9562f392af2d94f900cdc48d514cae0b4c4061918325841f9b89284bf973bb99c5f4e30fe2e84f9ea0c473b7f6857825c59bad2e423945774f87faf37dcf38fc96e3db21c923c0725cf81e925f4fee7ff7f8d95f0f9ec463b7f686751c3e8e72a546fa01e8818468b8e9260f4a0e47ff4f10c473b7f6823a85aba6cffffff3d4852d89d3b3c3a2ce9d0b4c3c6074a295ca16aca0131e5ca93bbfb7b0b350952a47a6e050cc3a88d1c307c30626666fe2121a16f0d54a83fc480413819415eceaeefb1a722fa17eb9169b9fdfbfffbbb3b33d7d859bd9b1047d59bc4785f69e70fad0bee4f70000e47d408ae101181a99842767e27f081ce209c8ca02d4c47c4779fd1ce1f9a10550da3405e4592796f2019415d8aba1cbd8ed1c73b3c5c420f3f747777777f12c40ec6169b3b7394576b183a73c8618e5900e05f69e70f4d852f2a8059c1c60a396afd6a00f22ad57981ff9f3d6c0ca34445472f7a24c9a810040b6e73ccdffb1b64ea3feeff8d722f8cae6c44453a742e65162209b7fd53410535f070bbbf9dfbdbf39a76fed08aac5475777775ff8800f9110215159c8e38320316242eef33a73a513d3e41706413a5defffcf71f5ffda95488a95e27bbf5c87080b96dff9945cbc70cb507103e8e7cfcc0b928f55fdb9bea04af7574775b328b0fa9dbffef3e3a05b71ba985dbdd3cfb61049c30ab82c3051d93b3318c12151d313333bb7b33f7ac8a129ad629c44808929020429688baa9932877ef6eaf8274e2c71ed9122e4bbe2c0133838d1264903c7fafca08359535bbd1ce1f1a931213139393d7253892d1f5ee767777f7f6af9fc428c67a6442c0308c0eb1f10dc941be8c2ca0c4171c38247921e7e30728389ad8e8ee22af5eed32be874041381941302cc1d004c3d30be89d0a9513d503714e9458ddb6ee3d02d2bf93069bd340e43414d170f4a221c9e2e8f8a0871dac487182441122c0f9707777f7f6a619cf48919123234946948c30fdff03715526494c9498303171faf7fffff77777f7eeeeeef6a69202e9bdecd6237bb27aca3d5dd560ab81e88698e5ffff6fe0427f7777efeeee6eef18141512bef7db0e8f0c4c0ca34eb77f21c3540842b777f77b60c6da311d24368651a2a223af2d913b9d22844a5112a81846c0e1c25170dda1e83872fd3f0cdddddddd9f6b7f4fd132e3b1d2172530446c10c941c4e87f04a36efe2941b8d7c54ed9ad47b664856114cb8b252eff238000b50215283912dcd881af44b9fdfffeee6e427714114f9052b8e1862d552e9a7db8dd504e60baddde958998e2437757318ce25e20b132ea6ea6db0c011870c8b068e70fed470ea9250639712812ce6eb4f387e6c2940b27294398345e45199d4ed07a9174b582e7f27a11e4c8c6cc0b16ce1ddf0b20563fc4eefe71e43f92489d2922cc2d9cfca2852a72e68b7792cd660381966f29205697cf8be4692092e4bf996c369b0b3420513ddee1e1a34ba590721c6521522134e47fda6cb6234c48f8aad7f5c8d8ea52291e486c159e4a2130818994d2901820462055ad70444e0a14b6d2050cc824051a2149b6ee96194282d98f8a2a39a12a99eaadb3c3e39364eafbfea748afb947665585703486843eafed447adedd62b0318cfac440f475773790bb7b0f664ed25f9f1c119be98828c9e9d5dade67b7109090506e28d633bbe263ec4692a414c33ae234834b54ba7202a5155655dd067d6098f2f9ae9c6c71f910997212a60617b5c28c4f11db0b3e468aa296c82c45e110e373241745856c9f25279da9a70f5c587444c578052bd1d3e5ee6ea0a6c6cdbebb7b876f76a39d3f342739db27250897173b65b71e9951109bbf0e24aa577f684e8eb0291df97ff70f5ad5fb1d1e1b4b49e00fb5c60553cb7b5dbe7572369b8dc70eb07ade238b4221cae96a113a6af5b7d047a9407559a85bc4de770861792cbbf5c84628aaaabe2349f53a274ab8108da15cb864ea937299f9b9be9008aa1324c05cbefa278d94b0e158a2c30b4e537ad011a4e9fdcfff7f22429f1b8af5cc680c7507f0127b214a61f58ef5c87c109df0a5fe0b358e466e48e83fc60278eb01c1cd042a777777af8d02e9b9ecd62343e2c230fae5eb4102437ab58626406263470c52e7d20fe661cadb71eeccccccdc5c1f4ac8e8dde3e3f4cfd50c711a89eef1a86241ac3c988ab0da5f6909d8a3e8063107856737daf9433bb26a18fd9c00f1f5ec488242d2c1ebe98183da71534204e45895ecd6238b3a719e64a45153b0588560450b33d96cb6156ef8a34ba34e3075b93b3a62e2c30f244a4e24e8a872021e70513ca820283a15667705336b3a38664dc76600660d07872603b366630260d65ea6597b95a6356b24062600ccdb83600d87a7c6ace9d8cc98351c999856e77d077ab6f322323333333368d63cd831678456b4a0ad1c746067d6fc562b82ff752d178fcbace9e8e0e074a669bead350f762e685d28648080d6d631c667678c1db0ee6779fafb48f2f50241f0adcbf4ef6d275aea5e461ff1cbbfde97f57a7fbd5a6d57d66a5c604f8c3e9fd8c98c1edc5c19cba38f8c288a6168411004411014c572c6fecbcec85820fbba33362c87dec6587476efe8b7429bc28a0a204f98a8c90045614f8c30beabc27e8da7052ba6058db5b12d15254fc3d8da94340deb461425651c12b435a0cbacd1a90bb6ccdaab04ad0c6867407b02b4264a9d0b9ab5b7f4233d1ef33375743eb1aceddc4fb18168dbc610cd1a68ab0dcb51b4b1ae71c592ded1742f9d01aa8db558ad752f1d03e8ad9de7ee8b71aa911acea5d1d95e740160e99117b401cbbf17d0052880e6b065ebb23dce42a02c0b967e6f6e187e2e1b96b5211e72182efbd6e6867cc1c6dadc88d665c33044616ec0af680ef9ade61022eb022cfbda300bd07a3fd8065f1b66e1fde0eedad89b0b8aa0c8bae24ce78220f8318e6845f0e682e60cd192b69617b8b9335c43585614490b96e455cb52aee19b5732b6ebec4db4dd0dec72aaf9951d5183dde81386b5efd6ba2b9aebb262e9b274046d0d343db8b92e4b2fb9c42ecbb603c32d589679680edb0680658da6f5baa3a509ba4ff982df0543ef87cdeb469f9605cbcf7ee9c18be50121c1d0328bcf3207fc8634f486a5df56e941696294d11b9a437e416b628c01da0c50902d6904886d321f0fc80acb0990a1adb12ecde789d6135b94590c61d9373bd61881f086e31883046d486f682908daae8859843ea0d81a7d42d345566983c6deb02e62ac28d6effb6a3963a4aeefab46b7e67375e0b2a18db138ce74e0326b7c47511cc567d540f3abd10131146b1e086b1dd20c97fdc005cb5adfd0fab841f8a17d3bc437ac1d7836fc6654eb02ed68e928d6f8ba2c38339a437c4b51ecde6541cb41b5ae4721d302591b629165c1cf9c51ed68411b81d1ec4a10cd14a37d2b72105ad0ac6d105ab083d0829606dacf1441b046b4248d3903b42e5bf389618d298634a28d114d8c31c2136128d6db5876b7d65aebe80a6dcd48ef97a09d295b362cdfca949e8d3549823662ec0deb82654170ace068ce08ed67456bc1123a06fc10d7c4b728645a2067d8afa32307a0fdcc5ac7c107da6a56fb7604eddbd19401420ef5156d6da8bd048c96553a2760b472628c21da199f39dad7d801eb8a226847cfd2ba123a06501f0f2cffd6b2abb796dd0dc3300c6f05cd13ac2ebf55eb44d14c5101b72c4b01b72cb3c605cbda77415bd640fba567bf1a178c35ad841b9ef900d7f0f8039d18238ca51f49d2bc6c1ae65d7ae381c7ad915d7310afffba14873026f0ba40552155c1597b83b382c8a158f0b3f5a79e7eb8e1a5534f50bc2e21ec707ac243cb29b5050aafe0491137d4bf1551c46d5d7a2b42055f6e00372e8ba98623b775e9d4d353b56e6fe77996057defdc575cfa44080e97bcf4c90b327808fd534670c22bb8c3539df450bacc39666666211a43b9212166163a690c09313333f3f7ff3333333f33333373b3bf4f1982c1770377dbbab370501e6e4e4f94f408f2850441dc6e2846596ebfff78af5346b0ee01dd827032827680e16183470e1e463c907804a9ef5ea50a9fe799af1ba2e815a1d429f5cf2be2ceeeeefe94bb488ce1511b81da3175ff2bfed73ac6a05d67e977b7f7812c5ad218b4df866eab86512bb27bed6a0cdddd13e85c900da3af9822ad91b2fcbdabcf439d761277a21b524a69fd40a79402a00bda30affe51ea55fbaaf56948731ca439cd4ea429a5b4710de3af8a4925b2b34edb63bad47612b2b39f973516777fb84b2d77b517a5640b88daed5de910975a21a1fa5576f7cf6bf5ea9c4117c438b5766e31e876ffdcab7fb45a7116de32c6f1cfbdfad7b5bb3b032a7569f5cacd9d0132f8dcab7f5cd97be0aed69a6203be6ce9ad7597695c4a7378786fa6614773a835c10a6f1cc6a1ceb5fab3063838b53a37e75802ec32f6ea4373a8fddcab774c25c038b20c2e659d5ead01608b41f87dcc2106648c6cc7d99bbdab5405c81fcb9be9489a436badefb4998ce9c0cf0b6d9aeb0ebbbb49c6f09031ec5e9b8c615673e72c9914dce1d0160a4a5b0164771da59456a72de6980ecc80e66000d2ef49a734e782a6cdecacafa33495f4e65aef89fa79ff799fad3178bd5bc1fe95a6dbd9791af67d5ec33ef2e5b5367b4358a7a39e0966d5daddbb28a5b46578a6632b2673c9554c75a9e5288cc34b975a05905d993fa44b525b4d17974b9b9b9bf901b56ea9cbc1e5d215b5521729ceb028cb8c3e9476c91d33a5117988ae099d716ead9bbbd9fdfbc818a7a4f51cacdddef573af37a0395e9f74668f91cc668d8c31bbcebcbb19c7edf7912f0afbdcab7f5c3bdac27b928cd10131003faf866e290e77dddd8df3912f5affd20bb8a3dd6ace919dadb6bbfb61fefa6c7383977269d9134276ad9cda78a965d19c2ea69bbb617497ad539ac39d555129f78d579744161e1ee6b12bee0ecdcb3acda526d9b0b6b52fb42d2b726d551cdae9785d95a10ba00b70af6543dbafd02686e79934dcc286614dc32c6c1887b46265d9903266adc695b1adb276735b34b7f60d6d6ead2d6bc292a50c1032b4a4add62b4571f4a9f54469698e67c912ec3b5a708c315aef8b296760b46c0dbd35266c9b18b8b93556046b4cd4d8d4984368ac47e3326f5824a9446ac05f34876d2b2c6b4237b49e5f6f86b4a3659c7ac932a656e3b2bc52b46319320728a52965809075f4f1ee505f772be320911694626a43350f76287b8e71f8bfa797cb16c5b6cefe8ee59d6d77770daf6b1570c0db6d0aef6c06e890dfce04525a0fe2754142e03562b8f1c114144ae0a32909cef2a4044e400f2051022537383d29a1c5855b355132f243c0dc994b9b0cd1e25e6e6e6e92dad21b31b49f2df2ffd91a96b5e05b310ccd1a0f0e5755759e5353377c718c40188e3134b06f5fcec586ba17cf3d38fa84a60de350a20b5c96366969cbccd474b70b4cbc52e058145614bdeffb3e8faef83ecffb726b05b0bf62857be918e0d927404ef7b5d70b85e7bde7bd689d8b8399d1f9278af56b28be0d0920dada0db1e7885e441d91287e615d219a333edb55db85e58aae5600d32bad3533b03796b6006016e7ad7331736cb535cf5dd16aa0811dc718df59d68bb001646003506200da6a805a8e5900718cf176469863c30fa98b9499094d03983505f89cfa49dff77d9f17da3ad25bed8a72b404d040838ea85ba8b0cc8aa1b12f229bc2ace1049a21a8140d9d178fd1c80000400163180000843014cac22c8c92cc61ce0714800c39b06ca4bc88542010c6e2a03090c3200662188a81008461180c528621e634a35b00e2d0e7f3fac9c2331ddfd3d5c57d54218010c32e667d538b680809a2a787452b9a34fc5fa0439dd042a05447675ff2197eda719f4fedb950b374b46b5504b7ea805ac39c9c6832611ba9defa53298faabcccedb383fa94b3f01cae8f6c384a168167a95563dcc0790f07085a5f6dd48068d3fb5b729bad90157246acef163d81ceb7bf71745e1cc0eb748e465a28af11c01641df8b0d7cbfda1ca43029989ffc88a0a906a1373ae7ce91e6eaf1347c44d8bea17d8424648af671b08e477f01d9877ab33b8186fcdd362599a0f94e073320eed35a998e033b56e07da9d4c4cd9110753be35f6a2e988cfe66dd0ba58231d9db9f32ded282cb052233af3b470350b054db11fa8ec27da40e886ea962334749f4c288158e664a6cb5c56aa34e95115d349df913acfcede63a8de2d50709834ad1c25bd4d31c8710dac0843e48652857b2404e84c0d6b14dcbf95ce1488d9fe3ec1840579ac3fc37f1ff24c4124431e612e35cfad20d929cc9f1afb72b019e0bc89c251a16afba45c2d291cc66b160f85d407a4f9b4a9f4651c4a5f5e1f321fd74a5b1bff6f81eab8194e67f0f567ca44ebf5a32a26d9a5259169d55040de310a6b8a78a3b6dfc18fdc1fb89290ec3076ba861a96f688f9e8c9c055aef26211d388592a0bffc6d0ef839dd66dda8df867cd968e3f5b03b0552b9f875fa13a6dd838cddd5cf06f861c02f3dc99fbe716df07f9d54dc799d410ab84424cb28e343c47f6c0aed84b58d304756740b4dbe966e5a5265fd2495d00498f1fa6b83347d364e17d7c563fdc91964b423296d3a31aa5e7d163e8caf14d971836c4431d41f2307f68a026c9bd08d8191ea2642bb4cb1b6e95f0236327973c6693156e89e86cc3fafc00cf9c2dd8143c4e30e713ef1af228183e282624d6d3e6cc2440935bd5bd5f607cb4aa7b318099b833b1cea7d0fa4b035dedccfef137af000f9b64f2ecd43a3c23b9f2689b7c3bbe7fd498e07fda052c937e91e78ce60a7e003b0b5e32d6edbd7c01a5dd6626fd8da11a1ce9b8b168b3554d389a0570966e738a4d8768da3abe1fe3da2387c614ea4026b4bcb51736966ebfa6dd9d166b09fa58aeaa8b9f0d98d295977502442230530c18248981782f2c82382920f2bfe3e28262cac8a08c1be6d73010016beb38b71b89d18d4cf313b82ca92034bd8c992a338040770d713b996748893310756ffd98dc79f6283d5f554a9bbd50706915f48ce24004ec70503a1635de56fe2a371ef9dceb63720134e69ea25dcd85b709f3e28c694fe4a4ece0c37a7861cf44edb3007a5f4a0710864e6b0f5ff2a40c94e2c465c0af9a6c7f096e7122520dc2a6705ebfcbab84162277bbfb86f621e28646728b5b7bfc1320cad8bf96982c7818490b2cddced4a19124c2d978c024ebfb90c3b091974cbea309ab5259cfdf16039cf3075f8c66e8702d38ff510025eb2586fbad51fe7e929640d472fe6515df2352be1706213fa706b5d7cda6aa3d121b0198f1cd08ae4a58a6eb320d99c7a90dba56a2e8c7b2cdbf6c7c7a1537ad02fd6c8fdd46a34c63ce09809de54d4cc4be1bc43a4f0764b8e1551bac4580635e0fa28f72721d3ba3032648d614b081799ecab472a017a0e42e6161e452ac94ed18d4cbbb7266e2203350327e9449721952959cfb061d04209e6a659904f9aef394c1b8815bf116d65bacf4d333c4b06119d07667401288016540fffb77b9545536214ff8b0de60e90c068bd78f663e1fcfd67b0f804b223c98008f60b458e1f043ec50265fb058efe65a0b6019709cafa8365631f816611a40aad7ab5b115715b823e02d2665d620b2da977ede4fd72d92eaf0618ede98af3dc9bf1387c62c85602852921ed7dc18afe815ef122edec2a9b3c34c62f8e3c08607edf0c1efe6234bd1d2b83d1a7bdb3269a1928f277678fb79df681bb99dba8587b18e9ac0bc0f6df25f84f6c98f9e1007f284be0f1f49ead4418a2ad17ca29a4cb29f2de501f9d84eb25776644e0401f9ab77a37d9e0f0313b033e0e74657e45aea39eb3a4d2131223da818c6d55b91b2bfdc7c2d15244f5ff3cda8497bb757df3c8308e1509a152ffe43f67274cd864ca824c1d1bb6d894af2c119418594a7d5a0e30d5b630f583d263289611205a4bee5de3d44f8460d8a833c1adae00ae98f5bbf9644aeb4a537d2cc0597b45f705121da7f78bd3ae12b79b43a070560b04d81f1c165b3ad5ba3df204d5690fce40bf25925862a3ac4386d42fea74f08452b3961076f026f585bf20c329f7df876e7e3362d9e2065acc07d4081eeb5e2f809755528da22c852f9b3d580f58c6e65cb5202beb315d5142846ef1c3e6f2b9b08bca7cf42eb2bc364ff2a6a3f72db6db964be9e900d5c23803049d51afeba667bec3b1750206244428b8eda9062676f9e8f16b6e05830c104129d54138e4d971a2a54e21979044a177ad05411a291ba2002f43bac83f40924e9173e521e022d38d611b9faf980fae36c354a9275982498c2526de760cb47c18349932a717c69321a88bafe14b084e4874e9a2ff8847248d55e3b18f14d701dacdebdd12503f20c558c01ef4ebb0a6ab8df9e0f523e614de6ca9ed31464d9932072db7151fc8e936758abe0535533b740f21314d843447864c4e318f9276c65b1c5a5f0d0a43040490ed15f741c82b875b4592a0b8e61dfd6a90f3b501844ac53c7db609d3549d75176a27915bd13bca77fccba092aeb8f3540294e16717db34ba8f50c8603c1f3732a76372ec34a48e69fd28cc9767888d738efe169519f29602399334d46237d7b6c366b33b3b58bc6094ba4f453c444cef6467723bb09554c26b61014cce066b85545deda7ea9eb8aa489e7e008f71669f4ba562a4a0493652d12496f6d49431efb291638bc2861235c059c2de35b344b5bd999bc48f962fbce454cafc5069401fe3cee7408015bc113e59a5a51b9e18ba5bf49c221e17790f34f4297bc7320047bbd0e15c6982f378f1e0a981f084049c33f107621fc3f9025c3ddd1d592b3e3e8c92c757e5171d2234bb82bb9456d73a1a2b9484b12f729b352fb015cdf4caa4b739f4c58d61cacffe3f24a896fbb7b1a6b7a2aeb324804c5dcfea2da3d17ac1d6cde973197ff3b6163a1a02be776cf7905d66242695f4bf5cc3312ebc12d3b633ec256dceea5e9fecd93f487cc9361cc65fcc139ea466c58e264d6b741a3399b69bc67cd4b7f42dba6eda71cd69207c02a867628bc3d31a24b05f481ea500d1ba4671c9da98c0ac6fdcf904c5f4ef707c0e9298478288cd88019da17eb9c64974716a29a7300f2adda295af939e2c3652eca308f2e288e0a28f6ac0c1447f9ac4bc8fe6c8f0080c87264716c586b9fb59752e295999f98aced3cc0ac285dd726af9c692620faf7c4f7f6a7e6db40952ee404673a07abda7c60a88ca2a22fdd79142b9dff9452376443db2642018aca6d1ac71f2700607a70702ce5901eb1eb44ac6e04197cc55db938d5faaa03bfaf35c6e4bfb8c6fefb3c71b3b9ef00dc4d6b31b0d0be1df45fb020f1fcedfcc82c3e97811be1d14eccbf4b603227e6d3706035b87214ead52f16297dcef59e4265746fe5c431784e792d7e119cf7b468d385d24fd9fca070d89837cc9f08c65950d0003215de60df062c332815e484c881a60a804dff86c1a9abd207cef254dcb3e4bf8b7edbb7049c887617e8382cb9c46718072ba94ae1d2ec1e3b2bce56245e397eafe522d28ae3e1c0651075661e2aea2508c00b3bd36a7a01c616cd465092725f66ce1ca2b123677099cec9af0cd1ff918511f283e56b5dbd15863cbec3adeb91aff40d312782ef663e15cb4fe5630228e1430c444106e15ede1320b37c8424bf54bed391cfa461e34de3fdcd70f2553376def2dac5d11dec70c4e156f559b33e42933a85796f6e7808519d8c6a6fe56971cc980c642fe7e7d82fdf3929034289e08abca9aa609df424bf1f10ed0597106c41263be099266533af7c022f81d8d75731b63035711f26f1bca7bfd5728239f0af352467e3c81fbbe22844849d6131b038f85a73e86bb8b5028e8f93bc6bc6a684df37a30c9564c7f0cc2bf58e5c8f3c1e8ce91f27821e9b672d07bbbe5b2ab25c2556e446286979e6886fb8ca41b330af283af80d6c5def75315baeebc9ef961cb49f58de8b12812c9017480ee92b1455548688452a7edb0887640e8d0746fb8c33fb4924b0293cde7f3500131c00a8cdc5345c433e7669c08c23d1224536ecdddc934f3e31268cad0dbb35704802df0a0883716a5137d780627212764dd85f5ed49fe8c66a203bf8b9fe284ec935bcb4161a4dd871b691f3681e5942c00158e0c404b53e1dc372a3f46d10dfacdc15a9db045c1f1b9245eaee8b8af0f3e72ef8bbaee16315a230259dd1eb95306febc6c0720ea6bc709da0a51a7f102b25207d4711695dea84f41f4a13817654c24045a5c530219fa137883e28f71380f18b98e73f74fa216f6e41b41ef6ed0b51eaac5ddb13058bdc5e0f77e628d81121d5638e3e503c0f323ca5719f0c41bfebd66b62289e74b7c365bb22a13eb311278bca7d42b77dd3d6149f77398550333e986eef3f5448a7384cee108f8585167d6d41785a5b2b703608f7390ef4120e134a149c0c97ad50ed7b679bbbf825b40be2318eca967b70d210f7e522293d7ac4c66c53094672bba37083c400f36880590a290ebf3cafc8e8206114d96a667b0923e217bab17336485635aa02310846882955072bfc778949fe279065abc1b862ef4cb4456f396a04a0a57796c1022e1d450d9eb63fb6674bcb0c986f87916b71569ad152f0b66a05b02984bef8592f203b22fb0d2b41d48ecf76a46d22423ca8d2a9afc6876232bd32b00c79bf213982423019255ec3182bdad5bf6c1a5e95a96b1baabd762ba6303383a929fcef3e11f21fbc7927c4570ab7f9dbeb41bc39b321a0a62ba4343118bed08870125a4a8a6d1c2babe6e17f5bf20e20af14a5e6031cbf2013e1b00b9d12dd5b93a7f85717998afe81b97af419ed186f6bc2c7850256dbf680ff3d57609604c5f2afe0d0ff311051ac39c297ee2a51f17255f410ffc806ab3056e5722dc2cababc9c33871e4a1196e680aa65737c830db43664737eda7e2adcaddaebd2d229929382e8b5d880003ffa799b546259a04815efb0119abd1341151344bcdccc2cc8fcbd775a17b4ba50b488015576d75d7bf7b38304c569a828b0549f1025941c476b151bc08c59e61e6c7bb875bf1eaf98539e5c60a41972f7e61b64469256a3e67d53d08565007320e8ddad0c46eefaef82e50e16b617339c4c41bcfe37c80be1fc5821cf1cff5add8b4f33411536afd61acd27a745a5ff0654079ca85d65b5bb0acdf181ca17da25be9266478413660339ec6ab4afe95f6b3670e66498451b5f9b6d7c64b3ac81f00efb03afbe12351126fc60028f38eff84173f6a3cd10527ae5f6d8796d4ce24911fa960ecf51b4729c5804f392dcbc398550bbb40b9ddf5fe40eccc4ec96ddd084dca64106f861abe17cf91ed857ad8def25cabb9a7e19525a7eae008911001c90bcc203eaa4cea9028e446ca5a12da82b52c326bf9830dcc59eade021d16e1bea489f785f47d10408705db8316d5fca09dc262077e17088d778652a2cdb954c3e5ee5d97eaa3b8a17ceb4fcad49990b05568685e33c4d80fa839d173845f78f6359bbe4cebb7798481bfeb542b9095bc9c574e9865113e63342a86acdf6407d3cffbe04bf8ebbb0a692096912749d65711fe062ea54de0bb16d6bd7d63d50d3c1eb4d0060d852fefd5fc77b90e990603a47ee1aee3c48d878fcbcdaf7eb77957cdc9bf75dd7616859122a07094c4f5aca40ca9b18aa4b83d00cf5f31de51f16fc572f1636af0541ccb5077c58a8eccccc3c384bab9209dd6e7986b40ccc22b7e3e6a272b37ea7db5515b2c0df5e30897b8b0a220942e309cd1f5227a6a2ccfce295dd855a3ebd49f4ef3d105875527c6216261950f7725e6d956fc8c42c032eb0541c78d71a0be477b0eeb6415b5b2ee1118d6b5e62d45c650840a7c836e4c11e512dc05baf1b0ca8c3f5a622c14ba18dbd11b633964ac7b56225b9b9bb61480770c90c740f16e4d2122dee908a999777f2a9cc82b791c762ee6493f90f5d5135f99fa899e524227c55a1163489f1c5d40c14ca8969d97b2a1586c1eae0dc51233cf306ad5f0d9a5d92c7d6ef22e6bcda211163072f86a86f562630c1d200a235446e175f840ad10b6e2230403720bbd7e8a25a99395cfddf8fe623eae8453ec763c755fdcacfed1286ddb7a287b82582eef8c62284b8e75c736cab4b4906fdb6dc58f2144faa17db20ef51fa74f3054a1b4ea8987b0cb25b5bf630de7196d96193cbd4f77538a7f175f759d348a5a71f283cfff4dfbac5fbea709c50be8458a09bd0de824fe259126695185e931b6b20838549b6100300fec2280fe864cf48965147994f76749b44a41b302155ecd26af3a9b41412bd68d208d88e452427f4f5cd14ab275125de4828b881c76c2460fb3f8f99620c231643345f49296f6a07e5cdd9df31dd79ced5d444e032e87dad281622eead38912a334ea3bc6593bb954be5a7c639d859b8458876b4007f8149d0542efd2285909d70946000db1ed9a76375010595f86fea938380e6c2866b61a6183a2baad5d397c5821dcadbd0fb66f3cd9f9792fcadc9381da735fe9ca274cd64aa101162614c4c5e883b8386433e3f25db206482964df2f26d0afa8deb49c3ec4c7abb898409bcf41b788cc8edeaf2ee8fd9d14096189e03878d96d342ea1f5a9d0efe724db3c799b7ca0d491b63806ba0bfe41cdb5acda2f146ab68a996715ce2496c67983010211cc3512748403f4d3389d9b76b95cdce7b7c202329a519dd94dea58e0b82f6629c66594eee3a38ee77064acb359ab37475a15b23bee5420e4aaf06135dc8143e6bf73313b177364d2514dbbd2e436641e075a88ee72419d0907d698cfd4f3d20cffe54a3060cc0df3b555ca1b03afdcb915578e282c3bd1251cd5cdede5814f74b518524385f2ac4b0a47a5916dd2f06c746a801c85d90c2160b312b43a86278c3855c1f1a8cc04e248081c1bf896086843a165c3ae406686eef5ba31f96fc7442707a2304b39000367334c420c105b99ccbbabcb0f028db96765c214be4d76ab6cad0d560b3ef2c6ee25cf6b1e580ea405e49f2faa26ef5953bbb18bad230ce7ac909a6744b6ae0a72acd32d43d6e37909acec1148eccb6dafbcdf666d765f0a15f7b77d528afdf1156a68540af03ccc37bc090c8ad4d7e2b72e7a92dce43f828bf777becd700ef0247f79b2f4e352222c5e9c23330f70e5b264ffd857d2ea522bc069a03dd68cd64b74e95f2a42abee2566b560a1f0ae738bc9dc64d797b476a371178717153f9124425750b2deb9f2a4d0dcd4bb7f891ebc6e0df269c16ae821bad71963f3e1cf380a18c7cbab3e233df0811962bfc8a4fe50f3650ecd2cff2fc7b57c1f0d3565f2377bab4d9f19b8d7dfe32c5730afa03727487b0754c7bb7eb110d32538fb46f08a97dd2a7cfe28e536f104f046d662d98b9156d2009d14fa299a13e2548046ba7cae1e73f3aa98869e6b7585932f44c597a26a30c239b26a431280b87e5c6d2343cc01dc2078d379a697a02942d494c07b1975f1c4490c6b45860e2887906d42500bf585f83ca4cd3cf6c5dd5f95974cf9cdb9a1c1e886e4745287b5400084cec7a7752dca2b0e0cf03df868d1b6382eb5f4fa27e667d26bf56f65aea1d19b6dcff2190f1f73f2f38b9a0addeb0b63c7641c06603974ef45cd4e562cac7e2c60162f00e5cfbcb04ca34bbee9fbe5341d39d3fdec4ed0a21cfcbb628e73e512c53b199a27e09391773376bc2795079206d011a40ced87d456e406a604036e4ac4fc9352564a263a226f6a4a406af822db87217085566ce42d07cab4af09793731c5b48e36606557e2cf146512515c2b65ca0c85063bcd476a71afbc8fdbdb1636ce10150d77c62d83155b033a6c6bee5d9eaac12190a8fbbb40b7a6fa3d881c88e4b415ca04ab542bfc8e6a0dc8f383a6f9600b215bebac1dec895ea1e26b605d9064d00c539b5fbdc6242335591172714afc55c4e3eb6bbbbf8a8e6ca28abf602caec55acf541e90f5167452cd30e3aa53e3bd70f9942ad7c841734f28a2d482582d4e8ecbc77e6c80199592e91297ecb537273a5bdc35869ef441a67740105868520457fe4944b2ea89adb80c9982fa199bc636863a37a61dc825e1f13bd6283e6a4d044ed32bb826a96ad78503b81c60a6e74a055a5621edb29a5f848ceb17641bdb6437e9ea8e5abbf1dfef01880f86b13bc177b67d58d7fa9acbc0c9a9395779a24830a2df44215e5b9c3e9f80111f0e3664c2aaf5f685e4d65bc03ef860ca1be056c1ac90c14f1a63b8d37e8043350ab4a38ef7a81dd44437963c188a9701f420e83fc68e0eff1104842f103f0b5345ff627155c55b0ffb5a524238d4b996abfb6c6bc177ed80421666b41aa02c44a0342ee4a62f02239359f80060839b196140bb514c5af14f4072b0386ec3fa1e121683993a5b7a60f9de02e355f56f26c756acc026d6176284b3b187bba0b4463c26e5ad30e45d60a83b230ae093eda19bf4551764605753750b0c91e15132124f2da7e09a6767fc9de0e0ecc5472a364ebf7e37650cc9e412faf78bc36dc1fc1c270fb51340a161c14ad8f339d138ac7defec7d3bc7e6950a3da6e0f46ef81c194ac498780c1ddc13a6e2841665e03371de9dc81252278fabf6e3a3efc95b2ef9eaf5d1bb4f5af090421dca2aa6f48bd0e60d449307209465eb25eae0dc70754e6f1937149a421be06420f067acaed7fa8ee9b749246e577b3f019899a51a48b47f2fc2bc20f0b5e7dd51923d0bc43af0e68c0481df67fadd3b41e0893bf46d8e0ad6eadc0c1dfa71a2c181ee1a87a3fbc863304b8426c00beed5aae7cffcdd4bfff42abde41eab95ae12f4b40484e8b85dde51fabb6441f56d8c35e0e9ef9f0dc100251bf01666f7217e71c97c894d606414d1bce0391183f3d8e0a895721d07503515ce6c6857a32eacc3b0663e83301bbe11ed6124ee7f3838918dbe115d954b41c7bc11dd5c59ee5a073ca53cf27d7eea87cb67f3c35ca240412ccb94cd5a27a2f3dcbdfbfd09f924b30532897da69943d6e36f6a4a00c262b54eb9fb930e6ef16085100f54d67ac8f8b31d0c74c1d7c143fe17ef1fac9ad79f5c6ba6d540e3f523f710eaf3c985f5460470d6cf5e9bdb436b35ecb6fec5e7ad1a7e18c661d55d683bfd1591279283ef41b5146b135c0150b4691822eeb58063c90dc6258a2dcbdd8e59502cf36a62820588864615dd8bc2f899b4f4bf0c47c87bbccdbf5e8b05f80a2cec1f46e2098e2ee03d71193f941f87c96e12e37a00c12a12d784685bb2e645564edaeae367db7987b92c5f9a264430e4ec55c0ac538c21fb97a15519c59901b474acd5ac3fc7974a1b200106c9c1ee9abfdf731f8bbc2ddf1933b3fb7fded3f6d10ee622a53d6886412221f87beb2ca8978f28b1a684dd15200e5d6167651f168cff8507b3fdfbb233bf1fb64d198008ac9353fc7887e572ec5dd004945526c5db0555e5c2048748ecc4ac0a27750c5e0cf3d32ffa5622417ed8db4d9cb1e45680d00ffa3e861b4715982d761e2e1494225d53d1e8729768f5fdc325be891ee533276ed677375ad341d47316f0c14d49427b89d349d65ee5e69b50dee164b5046c7000927a8faef01d535826a60bb300bfd0ca8c3a91b5fee7c67be59533546251fd4aab9448757c058841ed5a6bdb1aaba3970b9183e441e71005623c28a26e79de36fec1eb088150ba7e2482860d8244aacdea77ebf912893f1d6085b65d8dafd4ef1612d83bde36104df725284c95dc24c1459310281d30e60220310ed025f27446c5dcefc1e05053960007502e3abc85193b2591ebac0f4fba0751892a02c561cb3883240f42839651494f069ec154bac0440aefe5d2048b7b537e1aca06ac121e4b008a0178e0889a88385afe7f78fc58961b64856796c95e81e32c52c512e2393c185b6f99762928ab6e2304bb11298ecbcd7b48adc2ec0b173360a5099f3818286898e2c17a191d8a1ccef205182364e008b0d7e230fcd0c504f67b6671d9c1a5cdbf61eb0f3aa448b6b608fa8f783ff1f800e8743fd9345461ddb1291e2bcfe5cce7d38dfd42eca438b6dfa9117719372210d90eeb8758cedf2d386ab0bb6db7d9b0030cf6fdb81166530b511c68dd23709c7f35507e004f15d595c4d5ea1fb5eeb259a7fd15c980993aebdc8413c29bef80dcf281d21df4074a3b41243563a1ee4e5f17c47c6c176d4fd03e1281ca546c72087914344a39819ce9359b364174d909d8bfdaf1bd1e6c993137dc1beddeb1b6bc4c0065b54e2c0ef70e11e652c6db782baa50dcee68052ebff3c5e873d42d9fd411377f4dcf78a697777315c6eb12557530a266f0ed0af955138df14b57bd672bb7ae0d630c010ce2bf3730e746176d0f63f195160b019add24c3f91a23b9b0aef659f2c42d93987308c4e3a59add0f3f29e38bda9d463257d8846abcc3bb487a0bc470b7e93c6a281c7f74a4329bd26655ccc04e5fc9db1fa338703a6e1e126693d611b8d3d040054a9b011ee5cfffb3dfe3890381008c1faafe268264d24fb4f35f15f6661ff6e411447e10f1131f60bffae9354914ddd4d020d1d9953408cb170a25cb896c1e5212bede3674ce9568973dbe282461ee410a8421dd2eda222ef3f049e62e9ef9e1be697a082c935596e6d1be5cdea6d4487b79ff55e631ae61826e400324cd9d198b7d8a35bdf6864901eebe210b268fb22b9b71276398ac1d9b4ddfec7a433f24c7c8cee1483319f463d786af6780ef338c9b9d3f3fe1ea3fb6d716f512e99be092093d4d9b1d3a99e38b9d688dd95ca653c50838de22e71644e47fdbe84a382c9ab4a3df588652cf6456b440ba8cb47615bfb5e73b326cfda246f778dc9aede74ff9f84becb89b1bd3429c7dcbac985f0507409a0b3d47eac84d45d0e3e216db06656ec69077dfc393fdb12456f7f22aa769aaa88f98f986f70e7274f6f9af15f092b41795630f458de764f84eea7a4a03a03c80677a3afb8e8352cb2c8782b78830512aac852f94d208274c3feda0e9a5fd24c72a9f1aa05fc7e44cffe9c46438385748b996110d45c9b4dfb8411469281862e4a7d0c8c719ce977ee260630b7d03907054469f3ced8dee9b405b1825c90e13863bfe239a8f8aa86459a74bfd852b126e5dbc2cdb3bfe517a10327cbdcd917ab567d2dfa4f4c9c5777c21aafb0381b9e6f54738e69ba41240c7af87234abf9648b8a7e34107c68246c972752f65c8dac74527ea4eea597c4d5992359d8b105357c46b4c226b6582428fe1bfe44dbc2c95a67a56fcd7a94d979ca804304fcfbbee3c448220b7ffa9525cd99082c6e223aefe2f482ee4a47a060cda21fea7b390158d1c34161871917320e5ae38914c80162cd70e3afc45a9db20f1b13deb8b854212b899c3299ba5fc4892d769ddece3f53a030149a499da880ff13a5edfb84c06820ce76f3f6ac75a66fb8a6c3a768383ff7cba7826bed6aa1031b5b790d4b3cbc4b0763e2db678ecec9ab7f304b3ee1c461f464b67e55bb1283a244a3f512bbb5518057de9ac6de742525051174afae3de22bfbc090a35e21e81931842b20b6cf15a3a59420772e294f62c69523ea69ae47bbb4fd111181166e9dc4a44712c17cd47da83d1ab8c94ba995098565c2e9b70f5af7e62d6474129c8a8ec0c92b27b2c0c0c655206e732090857f0678928c118c8fc2c7106646715037f608edefbec060dd3a78b27e5c9bc1e686309d39bcc076509b5dbc31305655baff77975ad04046b44448603904d4ec5dc929c28844eac5fa60cfa7df7e93a745ee1005ebf81063fbb8cd3024a4831bab068af671740c280a6551456ed19ab429303bda7b97d8e6b249a05513133612b5af1289f43098710948e96b200aca7595eef3437e5b818e4e66d24ad030d57ac243f01cacd28dde8b53b26cdc0bcddae084cac96316941fafa3bb0fa5e3d51ce55d2f8baf39fd9149690dbd30c5333714a813f7fb2aaa719c2008392f5273c14478902210df0d8697ef7f99c6665a461e197eb1405e856026a70519219ea8c89bf56f3e1bdf04f641ab45dd5cb6af41abe7aa65c362ed0118dc2d473008294ad1e2353ddb907c2b9e97459d56ec289fd04555c437872248910f425478aaea00dae55e2f2281e9860044837e6ab91a316386a82bac055585f195de145c0286259c32a47df0fe19c9c80c694fcf9fbb0b6b6730f4f06dc10fe607c102e6770b185cb16a2b23f6dcf699d9ba49920119b636e3ee4f17ae005d77e8d0c6a53e4f14552451b59021b4588351e8043c54eb4ffb0f69a7d9179c72f68cc98d084773137c3fa1552ccfc95c043dc5c1760d2ea11c8dd94c54c1665c18a26b384f4660321207ba0a3e08e5318f17d6b79656092bc909a2618bb41c4fb3f54fe488fbb8bd9c3ca7fc7c79dd167791e91db12d36b98d2329dfc438061e5e946f64d6c9f88ed1f64ec9c63adf3b95175434a9c968d9f66f97e47abbb65805c5bc136f832570fb8d0fc1811bd0aa62c2303b158ba8095978e0e43ca305fc1edb64bdc740b38ef6b2ec6e0bc54d0856ee1a6b2700b00407c22944eb03f21fc9b048084e5dedf8a590462154e918650316f5a370e68e879b9f4e6623f148b8f1e9b481cdb03187a7989d9e4f78fcde167947b004f93211cff747b95007c703d5a2142780858e6895d939eddd4ee6332154442f4bce088406935887974cd6ec0d7a31f98b1e884c82d12734449086ecfe2654b1fa370bf248882b4fb60375f890d88fa203fb1ed742340b2c8d1b6b7d127df88227c328b3eff6c120f503959ca9539609533e6c1b9ced744e7b89e0b4319004ecf7ddf6dca216e201011dceb9ce65982cf7b7c542f66632baa0d573376c9fc6f0a8dcba110ca48bbc940009d28e3a5f985f5a62fa1aa6d048d35a3082c37a421b890888fc3aae37c21a7f5098c80c2a7395a567092e4f3063170fecfd9f08d10901c08a6c423036494336b3e69ec3b846cf65363bbbd104af8935638a5a6bb25f02217138441321e4a58f1a05ca19d02d369c8855b4d255216a89f85151e5dd46343fd16d3df17c520f5a5d320f2a885af6a0ed84130f62ccb7d1f0e0248d83cf55aac3f5653f2ef77c1ebca3bc2adad44326ce6cc9ec47e4ccc940d8b4b9180d2f29a888a888fc4d3903483580108dc06a58deab557593855ff30ab6eac4c246101681fa9414d397129a4d8e8daa5df511af0d12b49632609f613257e5d46874f7830065064c29e9343db6161232e69f7c938f2aaa18180eef4258a26895858987f4d8c7f9dbb01d2db4d3f3635da8bb5e71b5b64c710a0e02a151cc505690e4184b99e11b76787aba67cc2513c5e7d088c0bd0c85cd5b16a736b0ef00b3af3e6f3be599d27716ba091218519b2c00308087abebfa0b1324c1b978e327b6ddbcd392809a7e9a86780be0c92f4ce5c3ddfef77853a082d2229abe49b1287a09d65c6008426b5b1bf81e55971c0a463d03703d680422fd9d8b8bbec0648a936a12cf765353aa0f768d1052afb3ee7c5193c9ff18bcfa603799148a4e410d58b393864be570e294a0611fa66a4a3d69d99fdd642826b10f00059baeb6246da0c4291d7692839dd9d2c9141d91d230db0ea7d1e7d036fddc5c590f188fdf9b713b896095dbd7c0e6f6bf59a14acb00093bfef621443291d8668ba925415e3e6b81859a31292c41e0400855c189868ca11dcc247d537a32363d4a3cedf5fabe12f1c40ec43981b0f84c85b20e7007fa9bab36b3c45a8458e394eca6fe19e3063c4b09e4c98504fd2fa63d06a94825a63e0789805e17f414098aad04396e59e15c2409571e9b109050b184118d0b81d938d89de4cb37957ff6c77b1780c01e1605b56f9f2cbd49e5c611290f74cd0f00ca0d36e96d702513a95373b8cb503a90515c5b454594b32a29d0c11b30116d4d5abcc288f215e75240654e39063a9f8449b4f7f4d6c8e54093b8cc93e0ea6acbbfcfb332923e56615c70970408c833877c49ada11f3af5bb85e93603b04716e34927cdad0c078059beebf174aa81522bc609a0f9acbd1a3b1d54a386d4ab63822a9741fb47e37c3fbb8d030a33638e3a7db40c201ad849e838826304a3ee38e3f82f86a4e706251486216aa83ff9de905f440214d5eab671e0e4d41d7bdd7574539e9678294e7f3e1ba54c7af439f304b018ebc221da19ab3ea370af3653b66aa24f97e7b268a6e3a31c4a7465578cc4799f53bbe39fc91dda6686c0926390897c9d5b610dc7bf83f5253c0e59fd1f7bc77a2739630402f2060796848f9bde57d1d2e8fa22c77b724633ccdc8084b281f87a4f5a45cbc34d798b68cf78e3e4ea3abeefc85c36e627473d74e40ac9b9e8ba9d4fb566bf8847d0d690d0c9b3af0ec0455027e084e87349367ae560fa7a93bd93100a0aec76de449ce1c997cff47a870fa4e8d4e71a38bcbc52cb57c3c277c73f4edae591aee17310896e22946d483ea0765f6fa54aa297dd482c310bce439421207f9f6eb518a709dec73eb0f0d85f992391be2dec2bf28146d1d8b6761182db5bbcf887b77a14b0d4a6d75a41bfa3062575639d8080f11fc88e21df1380f5b1742b2b8fa059591917db912ef4c105e9cdcacd3a67f5586f2b02fe8ef0df022548688caabbf39f89e34d4f2a567a86efcbd0778674d0a9453db249ab5fcded5bf313ac19222cc5ed2de4b60afe5430db4cd822d190fd21596bf964e07c306c98dada70f5c0baa109a95ff9b4ce3db8071fcf42fda2a49b85bd5d64272920d81eac4b3b541b162873d9bc17b52655c56a2fd550cd43b44ada390215f3244f4b6513e6f210feee259847ca0f0e00e5e28612e888221305737ac3a077e9b296217ea271f07c27132c424ea8a84884822eae67d7de46f2bf6ef86a915e6d248d5cc33e3a5687a13d3b9a25107762171246a8511cfd27a373e80e128cd254176347611ce609f635bb49b1abe9196b3366852fbde9aa99f649c14c3c33362fce84b8f90a926d3a670d34b958507690be45eda3c5836fef2bb0ec268d573138c74c5ed2a78cb3fa5bef5d75ed2adf6e30f2bc5ef6334f5b83e3fbdc4a39ee09160ffdd88ccff624a5127c4f610543a964ac9518910600eb3859f6b3a282b367b37500d855092b49eaa2fba265df6549d4cf93eb72405f55cadb963056e28f9564d629e6aa12030b686bec69b1fa9d8c74951786d847ae0aaf2a9e9b83558d36c4e24791be07a22ff07a0f8d1a3452ec762b2451af38c886bb2178eb35238941416b102df99e891e0b6522094de899bd63928853ce44112a26590dc739c415c04493dc24c791934eb5373f5f4e90201b93ae59232ec4108efb780101c9ceae7e0606862ca5e9aab85d96a8909741fa61f3bcdd3257043ad5682ed31a36c58b4aa1c07810202099a75a0999ce6f4932de74f54ed11bfc05000fbe9504dbfb6d7eac3ef11fc162d7840490ccdf10f39844e4cf624a172ccec1a28c0556e570b1e1af95c2c5e874a89ed960b932d6d1ae8e1ee6fe45cd05bbc43b736a801ba42b33dc8a2c8734445e0f1b2639a6ab3c54883f2d86e790b0a30976cc7ea58330e4f4bc4c6957d72376fcb69c0e9507ca30148dbf7d843945e52261f571748067fc8ad5dc421dae4483ccb6c7eacd017bb544e228733634cc5e3ce4eb29edf67f991b16c634e8792da60788cce79a99f164042a25adc1e895658452e48a02a14c2efb421b798648624d1b384e9b4303c2676cf96a2598a1a6f647b29738897e70f0b8b74d0c14138f84b6a0032c3d47e1d72011480f6b9a04be0870f91d36018c1921e1a2b8ecf5d309aa8a3133ce703a1bc7366050c722cce8922efb2697a3552a07346bd2ef91a456474e113f713b27c6d2b44a628cdc86bd8dbaa7e1792d9dbe75423166f4345fb03250877c6bdf0c592cafd8a3a5a521a6b97cd2d7a9241d526db7703f04f757aecf28d432d8d1d4d34d0106b33ede8b808a59a09c8423b4394f27f91dac67c8701140516ec73e760f1d57e6281254ce0e87cd94b055ed8e960e4e3feea9d20ce366b8ef0394556ab06735a6e8f71e092b6a00817cd39a5b2ae1532fb8874c482ea4b03dc6eb6679622886663a2d14ac21ad257b31d45b8088fdcd1c4a54db4d4260804b5ba4d2c3edaaf83dc6e06d2c5007b554496ba150da2090f80a5407a062e46a254772644896a365f72c7cd5f9641d5890a4ce95a228d895f7b20902e4f558583de1b48241e07ba4359dd210b8662ba409c7f5378be1315877fff13509c9236aaae3009b296842028537f3ad0dcc476fd36306e33e2a4c775236fbb7c46dc943b9ca300f1f80afc1b9b7ec3a6ef623847297d9898e80a559ff3a15579eb1564d07854fda89aaabcf9a4559aa080ce05c194741612e010529a16ed3878ba22f22dc2a86c52bdacd5cbe091ececb24a409d5e29416ed94bf82a9548e290534640ee01c7b4512f59b2abc199c12b013748840aa43d077c4010f4ba462decc4b91b7dc6ad0af214683833d582199e3d7be043635288394db2e92b3db06730a7ce15fe217e133d0cf3fe5b2ffc5e2d93bb4bc77362c1d23c9554ed0c208c4f7b655a50a5172ae81bb614587f3ffea4024c1255f210010373f9d1b6303a348681f5664480cd581e94b4e1ed92b67276e5b215892fe63d4f1c17c44fc2831c281abedd26d4414d4c2b90aac809d7e18d9f50163ffaf3f2ed6869d6835579233081b5dad525834c9e799a3acb2e58e3d682b380a408610ea8d5001080df23e2797c3feb054b35e40280a83691d5a291337a4562b62f2a2c2603606fa2d522039c398dc888698308423118bd35fc52137d0472834bc28b5c4001389c84138b8c3142c951110d6d247ae04013ec686da941e1084443dd260ef7318ab2678c1afe132707f68c7ebe39013e290ac28fd021656255299128c634706051382509ed254e27d91526440712f3cae114857282b202bf0826caa1641bdc3976243fab695d0264bf9042f86fdbfb307caf877e3d4e47a9326482079e0501fa2e7ee5508a713562b13ddf509009c1046fb0d18b7f64191a5b23fb08df58c979a2c2f11fcd27c63908ca3faab4855571fea2c50a662c7caaa49468bc0c3e65f13bd7459be1c4ef7472f843b6b1c637f1297050190019c1743606b456e705db95e4405604443844c4217ca4ad14adde245e81b8cb08891460f51277480fe19e166bb027c4a20cbbb55686bc6d6d5b3f0edf7c6cab3228b088cbe315d1ea719e51e56ad87cae9077607d90a7d064002e241b9b7f4a4390e829703670ba54d64233d19399f6a346548ff9f0462b61d5a79d800bb8b9be4d54c3f4f50ca076b42ec096c4c9472bec1587556308a9bd359131be9963070475207e06dfd3d0310791e67df29cd170e6699f217861fe096bb482d8b28093065a3205672426135364c889580b1ba14047bcf4367c7fa0680f63ac8eb502e992a4e8d391b5907fd402108ea628a10d0062e19491d6e80d80859a22336617d25639f108f5c2f0e9b577b555f051103b902fb08e484a7ccd453912c002e727b11c1c8873fc8a9b255823ab1f75355b9f7780c95c2898904b21d5628608af8a19b63bc0803ecd782770453abfae0e5394bed478cec0cb982529ace64282cd4dc50f6a40a0adc4973bdac87a193830490e05fa764a2307f7ecbe34cb54f1fcde1d271e049e76c7437bcbc4b05abad89b0980822a8c651b1b3e4ec9ae4d1f0626065a4366edb4d83bbc9fa5ca83528da5f0b558cf27b1fc37fb49080f598e2bddd4265881493ecc9d339a56b1b7448e03b34ba8ee6f40e747ec58b4aba04375cc5ff4f727b9152f4e675947cded083f98239c600def2fc10991e4c41b3d99851698fc86fbb30aff8125ded1e796e4e7265f32045003e396e8bc247cd07db370aac4afc1a79040e85fe42c40d9671dff5d04ae19f86499773ea63d90029f2f00a2e9ffeee3b19e15666a61b0dfded8824f1cb2c478fbc604f189321ee9d8be9c040bf6027fb7e074f8d8f912e0ca39e11e9667c5e84b6653d92fa89926e816ec2566bda6a291bb8bb106d635aca21a951e6b8a5e14e9d8d7cac50a01c4ae5ac01c7ddf54e014ac06a5c6918e46beb5947f6cec24b2b9ea7af873afc63c342230c25838e92d5c17a9468e4ffb8d80c9bce6d860de57b72d8d851aa27c6035e6a0997d924b1dcc9324c50724dc45bf91d31fa6a2ef9ac39fd32b951a05b96498221f94da615b38dab219977ecb4d62737ba8e2a576609773ed90454d89300519d9845f19995d0a5e02bc1880a65e60a97da175b6f849dbc08a8c7cca6d6503123097ba60856681dbcddfa1755426383f69c681b7cff404bbdef49277683ff4c0a1c3e7e188bb4ffdc2ff54011e5cead6efdad8d886b518a2a4ca513485a1a6fc10c2b268218266183e6399a1c73cdbc9b6306d417532b15ce09b65c0e60e9e81daad5db55157d5c6b41e9a5fabff3c3ab7af3a64628e61c488fc08f4d5cd391e17159e9a5d5b793e20640145d9d477fe065f36cc80b52327b887f0f43fe2c2414183cabc61f876eca444b9c0fe3ff4ba4914d21fbbd79037e246b4f46740ac1011e490042aa7e7b854205c594d075571c0131b9663c2e148c56cc441ba618d23693d36ecc2727c781217c82393f68cdb596655050ccc0f235054d1a55f632e6a72827a15c063a8ddf1af52e11118581a22110a697befbdb7dc52ca24658e0b800b5f0b5f7f16c597ccd79f46f185e3ebcfa3f8727d8df95a8378bc4c7cedf0da8aa6c71d5b1c640dfffa34baf2db78695f5f155f33bebe8c3a7ab0338d7f668761d7c9be6303eb3c9101f31ad67912b6601ea620ba382762e8cfedc4be9ed90272d7e7e3613d42747d3e88e10fb9fa6c71903b4a65903578e422972c8984a491063691452d720636914141dbb6d1d04c150d4d176268f02a3fcdb659ec8243652839aecb941b9722a218e3ef8144b808cd96a7743cf4d48e879e82995cd8c5a868b6fcef7d190f0b8bf7c2d266064bb089fcf9c12f1c6de88e00dce605d1173e1366712172115aad5e523f299f542cc593da49c15c1ca160c040b14c3ea699e9e7c50b1d58f6cc2632365b58c4a28ba337f9cc978def7d9a4899948116af80a43b0b8a31eee2c2c97a563b4442b3a068030aa954da4124e4327309da9157f977bc8d54ea553d3b2d2d252d62c9c8e46382124bb745d29103bf087a01c439c1c14cbfb99d9e180e19ece2e2f2f59c4ea8180c044d2136fd7868f22919b9f85d3232f9987cb0121e9eeb56b83b05b318d43264b00b918b904bcbc6bd2ba99d942cc5c3c2b24ddc4ec9e8ebd13e83573e2f9791118ebcdab9915deec81d10c7f56a870b2c9f53e1eed58ec59f0e71131b2f0337d16636b452e96de0d58e8ca7064e02091b2c36240b0bd844890fc6d33270131b1fb6629aa4f9cc564cc8f34c36489fc59c86392da00821099c400794320e0205feb01ac6850c174bc82ec09a952fc43ee4224cc0b40f6fb1965749fc26e7d5ce0c1ca6c0269f02834cddc3f79052a9543cf040857bfa2cae3cbc0c7e5103bf88c12f80628c7f8b87ff7cf0f974effdfe7e62383503a7761c87af76660bf6621675e0ef573bf3057e0a9682612b57f97950a972dcfc2de00d9116f0a6e6263476a6684dd75aa770f7263f7fd499468bea1037d15e066e4283869b7c4a42dcef146c259b2d93cf6ac7c6d84a03aff2d3686971f972dcd6bb803744e88ec6ef02dee04d6bad55d65a65adadb7f55b33bec6316e32e35d401f528753cbc04db487c125a1f94ac1fc77702c66e0550baf52b0e9dbd74c7598573baad9e46281fa2c761d74d061b572f1592c73c821879797940cdc24c6c3c4c8abfc31de04c55b399b7c846e0a96d2f1d72a89b3c09b9a57ee85d50b55ca054a7532a954f6277ef9b6823738d3c7dbe548fbc3c07b2ee105de9765f2d929a0ed628559454b0a16a6f09e4b7061f2d9af770ab66715fb59523019bd53b0ed02853d97a0f76a67cb802998f6ff563b5ba5f76a67bfa822d47bb5dad1ae537d677a7d3bb3334db3ac228f3c94307898d8a633e12f4c4824b4a4c30d73663383f4365b5db852ce9ed8e6ed6eb4b1763fe036d5a77d1891dfd5b49a5375cdab2047aaa66084f139851761f6ddf42663cb71a2f41bcce9245e9cd7a7fdb9f2bd556b94d4ade04598edd227ad9ab4def6d1e8d128caa328db7cee8f0ae883c299cc0c91dc913b3c32267b9098ada2cde81649988a482848e51e86718b37aaa2c7bc277e2ce2bc05b268063229f31b68dd12b9b3b353918845b1e8475018862e82d8f27729366f81cfc077e67c9f7d3cf023d5dd5dea9c8a33bf0800b6b881f54dcb32c650afdbd431df37d531867a8ca152be57dae4e613065e84d92d3ddadf73791fb51ed05efda6d1249a33321bd769ef537d686b607b52d606e196f40a0b0bcc8350b32019bd4e714933178d9afdb84f704e7129fe66549b94564f9bb08ee9a1d86c9ee4a8b484f5e88d9a1d697f2b8369ff184fcbceecd1d14ebc05454ec1d9581f6831c67f629f1f53d5d45d9a25c928e6acdd50b30f550525842a4211a18c504702e86c5880302b6ad6122b6de08d7dcb712090eda358d35fd775609da713fee87b9e47adf68137a56fca4c208843f50fba12784952b8203ddb564010c84692ad1839a9945133d48c54faea14778a2b759046054d267ab3303162d9c12c3dda1f0a49365b3e4005451ddafb560205c0d970de8512cb4771d41c26f9dcd28af62a95ab88cacb4b8c5ed0110caa2cee146213543c70c47c44828c3aa594b248a6f24b9205e1babbf5b13f9682d3230561d37e76469d110b6cce22d48c66521026ad2ad78e53c028e563125a5a503abe95a978e0887991c1029e97a969d64a49ba0126e140d67077920c48b159d44335196b503b9f4eaa75462419a868a0fde7e4992fd48c05d185aa42d5689dde8972a82aa0aa60a93737fdc597daab76bc242106c5281109f10a9ace8886d3f2c47f913b6c8facf13a8028968c0e6bdabe5bcdba575ae734a23ddd36d5c4558bd24976563a6b875db3c058765878b40e4bfb9d1234869d6775aeca46fda407af0765bb5995c10d0442750d02d1462aad4859ddf6c04bb7ded30e2ee793e424c6f8a366770750484f624bc8e50ea28b258a18b244c102a3394a276d7a8220e646d70e559786cc8d081483665e8c2f81748a014b5dc2aad802a5b5a1068bd014fc150c8272f36208822f9f2e51a595c9e87285e58379a933aa597475905e408ac59fafce681acd221af470f666927ea6d5b4339a2f928cb33cd0b4ad55fbac9ddbf6514a398d6a94e3686c692dd414e2cb3e893db247d3b46e3e89242a78bee334eb7d2c714666872a1d9e069272ce56d6494d578d92e2ea845e24a0ebc770521512a718cee7309df444c4e91221a55de775ddecbc69e7440979d6f3a887129aafd2dfd89af7bae64a980405c88d1e969aa6918c749a359d3e8b032bb3322bb338d0fe533bc55934a3eadee94d3cb5c602d3a4a619365fa8994a556d263941cdaaca7549dffd7c8949bac346b4e7e1e9ee24dce9ceb59ddaf4620cc1a7995a6aad4659748731a03d1cbdaf2423dd53adba487d31be629087f2f5b3e52ef0370d194bbddf5735c7308be26769516079ea7ce9ee20c988873b10d46258296eb2b2c5d6e46a9395ff30c9c3b218288069c36592f521fd6c46336f556bc2fd4f132be3915914687f6b4f161fd11ea61ad4e2e9f3f094a8cfc3ee2e3e0fcbd4e7e1a8e953af6aef5162fc770129166bf8abbe14d8a4e456b39a4aa57249df73f95a40d9d2d2d2f2b980374d4aef4d30c8d49a8d3146920b785333093563815da1374936bb51fcd59d21b6fcbb36486962c813c19d62841675463bb82e5db47c711645ed9b3b3aa3a8230bccef785dc22de08d05ad4fa7799a9653ad8f5b990e6ef531277d79b14e6446a495b9cbfe3c555bc1af5ff391aa633eb580b7c402bb24a0950abcb1efb97c31565a7a21c9dc15a78c44e56e3ee324692f5f7c617daa4bad733f5bfeb21ecb03ed5f65525cf9acad4b43671443ff2d63fa1d81749c905bd8945e078acdc609b985cd13f9505c9bd3ef181467516885473b4b2c460cbdf56281cd96e74d928cd3da9c944ecd2641e9a68370aba0b6d66dd3ec932b5fd3b48aabb515d36dab786a13bea53fe19d6b53ca2f57b4595145da9ffbb88f115d36073174d9ad261c7bd8a4a015dcb98b74039b83e822398961b77d154bcfe3be8aa366c12b98053635fb05a1e60fe4fc4508f352da5f6481cdd79751b3ac62817568b09d91ace18f9ab9969ad4ea3b08846a8b9acd97957546d2fbadea688c616731c9896cbe5ea5bab2e91646d4a1bdb755ba4547d26fac439795c5f843e9b78b8e1f4bbf5fe8c8028ba28a9f0335eb61e7a0b7a7232c861e672ddd197918779062b286ffe6b4d4f53d9c45b2066a365fa41bc4d6aca49876120f50b38d9ae99430c909cd322d5fbd49b29f45fbeb2cd2febe3b23aa279edac3242741da9f5485f607bb206cd28ff6e7483edabf5404ed1f258e4d1202c90a1d933b4837202541fbef4e0b9d8318e3bf492ed0fe94246bf27d879bec6c36df97f0ceb5f9de2361a949f308097320c701106f3146fba8c487234986494ebce51567d324598cf1b74eaefc4d92697f4fa3d5495d9daf81415c5b6f037a7e8ca9af81375aa7eb113d3fb6ea6b20904d6fef593a5df32d57ab4ab9409d522696d44a2a95baa91209fcbc54c7a5525b2a6553a9544aab3435532997a954940049fb1a75a85a7a7c935e20428c1ea3ab52317a8cee9bdd50fa646259b92512f8791db759add2e932c6e8422a51e1794edd7dbacfb9b9fb4f174d7dbabbfb94ee1edd23145666653101a498e77979e7bcf7e119f3507b163c793e4d49e7f997515fc2d10576106fee51d98d94f0b88be5b59fb11278c3c2822907fad118ee762397e2ae09c543edb5e768e4b88ec5e238168b63b1ac655996773faf744b71924ef7bdbf7823d19795b7129af51bbee1e1e66d5bcdb49ab599d05dde48b4de38b0b3dfe7e1ce939135b6ef3c8edbba6f081f648ded2d8efa84a5f6367cc3f3bae770f7ac15eb6fe83845d778874fd8b5c7e1ed59d8e3f00d0fb967e18d44b35e82372c16f69ec3db7bf2f4357eef9bf0ae25d0da9fb6bf78f53430abebb8ef7bd63b1aeee5c08ff43d08fe88facb46383ae42dfb2c2ac4c22f76b8b36503435afee56bfce55b5c66e9bd8ec562b13a3c8475bb0e04f7f7a4eeb2b66bd6dbf741eee8fe23e5dfa67c4999f5dc6f53f6e4f705019f65495cf7d1f5b6e50d0cd269cb813e4eefc9441f6ea0c01bce8b9e4742b20467c19701875c8b22bd8cdc619f949f05a2728ddbaf711fe40ed2bbd85cdeae2f4b95739c04fe7deeb2de825fe31ccb5afb1ceb65e40eee59b9dba9ff7edfd0dd9ff096faf41fe8e33e97c18b7d9035762ae7b84e91401ff687a44ad6a6e2141004411064815846d6b07fc1a83fccbdc5dfa3b0e95de0ee6be6c907b9e3eb76f7e0c7f920776ca949cf79f6497f8390b20fb206f77753cde515c907b983fb0f3cfd7dd365017d803fe494b734f9207780dd77ef83ea86b5d65a927ffb8b1e9d14f32a08ebbbf7c1fa8e72fffdfd08fae090e81cd737fb206b7c5f336b9c84bdff36d5a5ed7d903ba2de4c377404b7aff192cbb3e04de42e16eb5999480c97fb2122212b6fb3cfe032f590fb96dcf235b305bf58e1f882f78bbcda7ec8bec6aa96ea69e70e79b5651b865b74f78432a150a1a883d31a25d21a9da26991d6a868edb98f34c9920b72b9c98cdf99af19d99b40eed2b6ff4df596778e7b9ff6ee82bb7d6e32e3c1f72a08847bf0bded5978088be5b1f2e6fe88d4acffbe039f85c1e7402abe24ded23a6d5241773cd49e16cd1795c596f6d34873681083962fb8534720a1366c60b846a866fdf67468f5651ca93f4e52213a3486cbca99cabe70e79097c311f96a9c0e2db99428d3efbef9c4f57e63bdc7626d9c67c19b8d7b27dca75979979efbbc29e4a1f61f663df89bc8c761ea4365d60bb7f4dc6f2a2be50b7c9ad564c673983a91cdc074c85b2c1c3595b96bcbd4894685a6dc49e4a1f653a80b774f21fc1f8b7b163704bc616d244c3437c19bef3dcfbfcde26d9d20f9e941c40290d0dc731c18a5b07011ab31f06952de399a8bda12f978dc159d78a86d9be5c2a543fe9af1da5321776dafe5b87473bf45cdc23954b37e06d6795262bdb59cc53954739cb77358fee2ed4bf808d5f667601d274a33deab9605533d2deb27e883c5ca43b867fd93235473ef6917534dc11f51733987ead253d047e94bb9c98c080661e595fd684387bca53d15dac22565ea93a9cc434b74a3872cb82bfbdb47bdb219c7b57dd6471d7f532a4487a8f61747af4caacc432a1e6a948afb9b0a69a1d8d29ef576a342cec49d68f92d1c621d70470590fc1c7090962f038693e23349c55f6ee449b62bd9be644b2a5b6a21ab6827fea2429367fec821294546d9f20a498584229dc8255b2a91492295a845aca2f7f6a23b34fc3585664b7b51d9e62ef0b53814a5c4283437689c3ef95bf318796ff273de573ece5ba5bd1bc9a7a2e57fde1b8cbc2f1592ef44fe4bde7795b74abe8b50142dbf25ef0a53e5caa3b59f3cf25df0a0b2fc539640dc99af1eb125bf8a966fca5b259f25ef2b7f25ca26b50761bc25a9eac695df4d21ad4969f3c703331d90046f4e243c9cef8058251a2d4194e300096ceefe3bf4d7b3e4c4dd51a88805382c5684173a066d410588041f3d5d36a79219534d277a4ed50b0d3d7f3a71d79e3cba6732993c534904b255b87beeec24992fdbe8f4e9c1129a8082b4a4f772dc958fe0cd3d9992b8a7779c43bf6f6aa102016957d420eee5fc9169e9537bb444c90a33fdae3a7567e5774da244cbaf4bb4fcb44b390db14cd145254c02dd47bef76521bfd3d1f2b71d2ddf26d1f2351e2dbfd69896df2cd3230fe5cc3548ca0d487f45492bc55f1d9f0f1fe66154a70b13d2b082ca12263f42ba868e415344d1935a010426ba868e56fc400aed691ff597ce935590379233f5fc2256cb48738ea629b73730b5cc37da46bf6e35b8b4d28f47a6d66aa620902073049b4f97d9771f87e23f4ec576a0ed57e8b8f92c865f90f60834e423e5e3be8f8bd45d16647e1d08846a2ed3e8375b150fbdc2b4bf3c12a2471efa0eda105bfe4dfc88c0ab14f4881e7db25ef1f184020ac5096ac049a152501ac160c516865014051878410a1b6aa429d1f74415db136678a173064d67646ec86c37b2f8681394fee0892638215531e97bb2be54451df4a3471d927eaaa8c365b69546afb2e8c3c26b0268c80cbac81480a4c842910c94b8c0267e3c25f1949e7cbe36643e55d13ba5103697444cc08b1f61bc886f5698dc0fc2b1459f524a29ddaf3fc6d0921597fa13d75fc64fbb4f7f4a9e19c53b14aebcc1dddb4bbb9f873ef3953a723146cedfbe4eff09bce82e7f9f9fcb4a0daea42e3f822e81d2cb4b3c794bd6bc7d1ebabbcbe896a45766706bad5a4bfb4d3cf58aad1d8551f99caa8a259dd7e6d80213d290715999c1ad9fd49a0c85d1527bdd3737ed3cad52ceea08e34d80b6c93363b367ca7ce6cf044a42c6282c9a9999f9c93323add08c90cc68c635ef91b9cf0f50d02c1a4523ef91cd5ae43bce138bc562b1582c26896432994c269315cd62d4c667fbb940aaa09f8542324492884812492249247d621b6ccac48fc562b1582c761493310aa76ae6339ff9cc673ef35904dae66b6ef7aa54ff612833e78ec5e2ee8d2301c91daaf4749c919c4d6f7287fded344e220fb5398b451df4fd2d13628cc4d248ced535767516e89f6c529fabbfe1239bd67eceb63bf3a48c3e4932f6cc59898282628c51c618658cf13d4b1a58244cc1913085294498edc2e846dd6deeba809de921bfb5e05ec0ce6af7320777cbc1ed401ced6bded6be7d82b62fbacb761663bab74ab8dbce74f72ebbd4a3bb8f31a6cb2b33b8765633e973d888d4dbe68de269e452bc08b34b364816298f8ef1f769564fe215fd1304c413f3db1d9592784b7646b3658334d679a2d1df2c90fdb13edaa76a56d334096aef59bb71dbb651cfa9703d1927a9fb72dcae8afc0ebc91d926e11aa17a7747169cef719fc4a0b63b94d29e214a1af29024440469365bde55f1d061d283e92330e6bd048f4502fd88894c235dfffb382c6d2436e95945efaf3b9a2dff9e9a3b16ad1d1169f94530a39d79c413d393ee68997cff2855c6289d39ee7c6b6789a7144569677edb3cba253d45ef69b1d4deabb576e04d298ad24e294989c75e717729b6b34b51688f2d29f5b88b89bb64298a97957647da7fbec82ff9b070a10c65200319a24da454a8ac0a305fbecc4bbc8b41fb18f4ea001204f3e53f129b89635d59792e3206ed62f0e1fd9dd4259edbcc2d18ca811dea61c2cecfe4743c021520202e484a29e5b6dd2ba74bb9849967624c0a668a78800527535441043418d9ec994329dd99b820045940830ce4165990c2922a5998c25ea1870ada90051adc5843169ae89106a22cdc1837666064042c288c1790210b2640a8ac1b2a28cae204dc4b0bbc30b4866d7523c6852c702e3d64a0852123802d35181a5a42533d64600538b461ba5001158aaaa9070ba080052880f70693285878b2793d7a92808512a8e0085738b25c0f15005da10b68b0375650842b34c1091bad550642b8820e9460670ca6b802cfdc96f0c00a5ad8b88157a790328617ddd5a24ab970891f693c9958566e89047e5e4737abd552a9546a7171a12470a969e12b41ca24f122ccb63c3acea02dcf20a79c8de7b4b3b13c920a5e84d932d45df50354ba6bdbcb8986f677d15a7e0d878ba6d3621a258cff4f4a699d330c5e84d93078a256c2676ae156fbd25fda470adeb88eb77c07bfa720865e9dc743a0f8caf1f56d507ce9f8faf627eab8f1d569cf0f0f8bafea538f308774fd6985e8aa401ef2c4d7ebebd3587ccd7cfd49145f35020fc5dbd898e3a8c94f3d17ee826ef473dced6decb5b5f9add25ef4bc0cc3266f55ccdfbc2f2ac7685336e62e6a792cd647f3c56d2b37c6f436e62eaa758c2e2a8420acc00a6ddff25825fe9261433f2543d7c4e6abf47f7a201bf802e001d8acf290fe070af1dec67fa09023481a0c72c4e748cde341d0078ff77860fd12f4a19fc77b11f5f7378c23af707c11abb71d79af70642056e3f82353e3c82807718ac82d34cde300e06b260f1c750d768da38709f81ff0963a5a7b00e0bd8436e271f05ea16cf6224d8357a80c64d3de91d980df742e27a4a913bfb7266220f9add2313a10fcde34cc077e5f0dd381df2a0d33a365c8c8782d63033280c890416560e0b72a03bfafce2189df9bfe992dfa39743a20f101b021f2da16f13f28e00140c4d78402781e04781a03fc8e8fde7ac06f959e715966bcebdc217e87e78e80789dbc3727f2de4290f7d540bc6c22ef0bcb5ba58178245c2cc83391f7a6833c08f2de96c8fbea20ff81bcaf07f256e920df8198eef14ae4bde91e7fe240de57f7782047f256e91ebf81bc553979bfeef1a8bc5f037987bac77b312379cbe81edfe52da3378d15c97b46f7f84d7fe64b52ed93c87bd33e03795fed31907f843cfd1913e22f90b74a0b792279ab86e47db590df795f0be4bd69218f44275481bc372dc4134181bcaf16e21590f79d40de2a2dc41711bb794a2590b74adfbc002290f7d5374f808f10c87bd3376f807f40deaaaff12cef00bc83d0a8f7c020477cf4300179fb14adbd07fa38e28f4c1d3d6c40de4ec588cf4d4add6f6ff1b63fcf081cf5f69e01f888776fc47b2af0c608cf64026fb615bd2d8f11db77f825c7f511ff02fa38e288bc11f9f4f6de4f70085b5af21e5ed9a7e1c4dddd918e3131bff2f205b7a4378d656101792fa151ef6d60978022701881034701dbf6d65a6b717ebbb7b3d676bf59dbc5e8128a83291305602aa34e3ca48f0353233085e221fd04d02f0253a02c64a181608f8794f6d0984fd1f4a3104d4abf85e02ef157893259e1b8eee8007eab0af0fb1e0001cf0302f2010c90f756804c809c0590ed5b1e6c95788bfed6c4f560b93bf2b0aae0ee4ea8c35f122f0a15f763b145573ec61a44e4bdb17442eec271f3db001a55008dcadbc381b2780701fad874972beedec6e16e6090eeebcddbfbed2988632b911b446e0ca1bd10780bd1fe060e026fd70208f736e5b9f8beaa37ad6090a9a7d00471ac9e42b0eb3f3e424e9848712ab4f638dec115263748de728ad6de9fb8d1439b833cd45e0291b7eb68edfd28eaf84163329bc66462b3455fe63d19ed14b23c4243dce0bcf75dd247fdd51dcd16b571b89fdef00fdcb521c6d08f31953a7d95c2561e0d0cf2bd0f9caf71cfdbd2e2bd7d3f2df6acb54a3cc4c1ddfbc0de0ebeb8ab82bb234f0707476d6958385c1bb33c1ece98a6df55f190be07eb8eec1bee9e389ede9bbc617ae42d9968d7892ded7578ed0390f7a675d0de26efab75d05ee7add23abc1773972d4920b6b40f3f460d00795fed7fc8517b1e79ab68f2bedaefc87bd3ad8ff1d523b6b46fb974e4bd69d7afe4c8fb6ad7c7cce4add2ae37fd0bafd4e0c6293aea6d5d6eb836e8fb1477e1c8f1060a477dc3067e0fe9fb80b75fd10336e232d888d4db8f34fd1a785f1ef03ec5e07d77c0db99ccc046680b6f985007bc630e784b19303132364231decee4b1110a036f981778c72b5878c7292f784b1d26535af0761dbd694ce702a9f0067b34fd14dea0134ddf05de44f6ddb88dc80dad49b0ae36bd9d4c9965c5a9a0bf7dd15d0a064ef7de930de9bdc797b80b033e8b819654ca4cf8cc86949fd4ef2968f1c643d4d32393f9f8fcfcb874474944a12fa5f81449e5d502a32fabb80bf663cb5f92afa354d8e7baf776e68bc6baa32dc7ba36c416a54f7fcf68ea4961b351da1dc518da1dc5566cbe2c4f6cd157ed8da6410594aa328b8f8e319898486298701b261c49d7c92682aa94a099874e6badb5e66df678b895b66ddbb4a718af30a15ff194d13d1a8f76ea7daf914adce5b6cdc668279329f30965fe4c2ae61573f6d09ac556eb4c4a1da235c8e699eebfceeb5e3cf41ac508a5a2fdefe925a4b1ddd9337b66cfec993d542b49ae09d3e79cd3fd8be4b8f61c813cf1e67ba5986408f9ab20f1e7cf3cc43f6629a4e58e140fe34f8f446868f93fd311899492059e97e3ca200f63141d5fc684cd2553a6e32ea95df44c1f2866e0a9220e409c3d72d79e5e651abdb86bbb5148e3f63237683ece6a6ea4c5d4c113e64edc15358d1a0ebc08b3274c57978fbf9c0a6fd5bfe2270a9094a0a1d914212a44453a5e5d7f3cacbf795c62e5e4e14a7e04cac190f6959441bc9c4c365be60d9a86ae2f6910ab3dc2d43c648a21c77d415d2f9bbbb6c7c2db1aaed4ac7f56de3c8cd6bae0da77ab86bbf1e41aa506d91778837908c2ac165776deb7dcc4f722ea1dbc39b978d928a52f7234fd887cba36b9bb06451dd65dee2e1369beeb5c96537c7f8fe2ae17efef3397e22c77bdbcbfbf17b9cbe55b5caaf74d977e66cb1fbc89128c546bf405ae51eaac4aa9421efab3701df2d0ffc57f85eb145c8b3cf46ff157e16af473df9d569a853dc2b60ade743cf495dfa71a54ad91874ef3dcc9f372cf8227cc08bd358886de1ee454947449783c8479a8e3a16bd96a9186bb276cc2a68efbcf24eeaaeef23368ffb9c4c2b453aa8a35a806d5a0d8f2afb406454a8320242c0902b9ab7cdb72ce8defee6e74e5e6a1a50f9a991b328fff733c741a1efa2be1ae58b31239090f5d09072051e5461798b6c47239ee94927b18346ed0c06ceee238eeed7b1ce682502e3b9737ed7433b599130b4fdc5d337d2dd3e950d08d52499dbe5349bf4a3aa58ba008415bac8108b02bd02a27cea17089f801e4dfc3ff471041cc395dd3a42502ff10c395ee33fe23087f227c6a36d3f8f499191a1a6168a9dcfa064ae316d49f4caf526ee096c338059d1d5a654974d189c3858e4bd0d1c2f77d1b15213c4105fac49dfb23de3c9c33530fa76fff59abd03a43533323736fccd05829a594d6528dc65bf3a3abe6c5bdc4353362a0f170be0cc25b5bfe11c618e6d0c3f9f369cca748f40c8dbbb69f5f23b59c43f5965741eccb97f908d59e697838df6e1ece50cf0f69b86bbea822ccd4bc4241e9b8842656f0f168cddd3d6f5c8d5d2e071930af3d67b5b44cb4dfd689a69a85a2b58d68650617e673784ec3bc97e3b674b8792cd62d954e7f3d0e559aa5bff88467cc8d50cd3261d7e2c85ddc518ccf7123a3d2735fe3f2fb3e0fbdd08fb0bbe0b27e531fd14356fe3cf4627cf4d0637dc9b570379ad12ad1702377d178ed5d8bc913864b89a8908735fe5d8b18dc4d9f0a4dd2cf27eecbb3b8df374f1e9ebc37ec4654acd185226b68dfe5af3aee728121356ad5f2c343eae364f9387bf813158a117375ccc768cb70655e877fdc64c67bf4fb7865f3bb3e60e0fd92ff29cf74c15b6a18315e7b9ac45dacd77e42913bdc48d6d05e53418913f5262ff37023ef6b236fd5f421efef21efd02587b71acf5ac679fbe30a03571dfb92b76a955d5ab22a7fa95b72813a9966cccb9367f2ac68cfca745fdd7a5b9f68ed6b602354cb602354c7601db48f815751530f75f81adf70eb411dbef5148bfbb1f090492b98cab8a73277ad50213270d88b01b8e073a0bd9e379578a8919e2eb9fb82cfea768aba1dbef45b7ccdf852dedc7b9984b9e79e9477c07406f6384c798cae49f2b88b23919eee784879e80ee94b5fe31c26bd46229148245285692c8f7a8f0563bac3f29beeb03c4de282256faa5dbce6225314dda1473bda531eed599a7b1d7791f29015cb933e6a1e5efbbae3ae521eb262297dd4355efb9a24eae0a82cc6c77c8cf963fc8ff1f5c2e4b9a8be4b3dea395c93c418ed6be0ca03ae3aa68f3179c3d0a68f91370cd3e3bc55a687b169d3bfe455dedb6dc9fbaaf256cd978bbc5f0b859ac2e182790279a83d2b57f122d8752ca8d4a32811eb35160bb3589912619607f1ee9ee5637125f086854a918cd06f724336e0a8dc0fa55db058ac3cc4e3b8dc64c697f02e05a7974bbf1c7773cf82c260c2f05ffe0546553fa7c2d5e6bbbbfb74f7e93e5ff33f6db5ce898439ebacb5d6faa7aab259ee0bd899f63c4422d124cb19bc08b373e0d1feb19666408d484dbd1209eeb6333b8b3a368dbe06fa60e9fa046d7f976650f18baed985518c39c27661a4bdce628cd3bc5d18694342b3a8e38596ef71e14a1f2f2f3a82382c4df30b2020ed441eca1c34399fe045981d635b0108c4ea21ac2e22b7c05e04e74bad0bd334458c911f65ee0a476aaaa79e7f52796a0c5b80d9cc971a8e73c7a9bd9c2df70f3675fca28b7befa5fdd4995a685ba594765fb9efe447e94f2d5ceacda3a98587b227c6c895cf0ac85d3e50dc555ffeeac75d5478df1375a8eac9443d9cdf9c74b355a3db7f76c3f4bbf3a5fd7cceceefc0eba4954fc32b282b1f0f5560ea715713f165fa99b0a8436a0a333131c94c4e4c46882d93117c8b9b14a61f11687f0a931466066d44fa6fd30fa865a6b018a3e4ee15856dbe92b9ec958f9e3d43ab1e2ddf337d1a5e31d95270b737d372466194e6155df9c4188982958fd415db992dd23d2b26767e09bc99decab7a5e06e3bd3dbf4b3da89367376e1167981f342cf6cfa8931d2c78ba6b0188382bb8ab96b9ba658edb86bbe7c5310e26b1a45bd4aa2573c5a1299bf574ab464436cc9ffd1f24d53441d71dec98628b47cf9d368be282cb69c882fea9b92a06a76e33aef034974469034738c3132afcce04e23fd514e528c6aeac2a6b55a63e8d37313fb316e7d9d27b3c6af74a964ae6193914e4732a5a481372575694fe37b0ce43b1823d0d70329a5fb101138a394d60a1b32b2d66e5b164e5a7404ca8247ab3cec4a5a75d211280b2cbeab2350165ad0aa4d077198e9bd694a1f060e459a524aa991221a40a2fd2398e31b38328bd81ffeb28815e25f2b7d199ea0a0a01d9c4e7e72e233f7d9f69f1af624a574fab6801c5264095d3fea2253d7f7e647bce514b15a23d111bcd9427b7323b1409115cef61a40a2738a582df310fada23d148b4e7df8c5f5fe2bcddb2b4a38e3a821a3622e5cf4af3cc47a64662e5ace26df174a53f119d89deb669678dcb294e29a500904ca65ce12ad5b6d5ba6134ad34f0a2d0495f3e9554ca3c33bd1eba4f77ff9eb8fedb15240de2478ffc7cb4f751eba4f6a5df70d51114527a595f487db909a18fe7b6794ae025244cea7831c67b0a874b44fee121ad1274c3f36f0b427f4e7984ea9d84cea1dd7fd8ea21ba97f9478d1f7eb2c92f6e524a9c437589053fd9beefe77bdff6e5b8e06fa6ffbeef037fe2fa13d34a35cdfbfb2352d3077fe2d2535c72f0a6647a10afbe9f4f4d78f5e51f364178cb7b1b065a54419cedbf97ef497088ed69dd3e2c3632b88ce2a1a4d7b3544feda09099697404854cd27bf3fb86d48f1abc01f3ced1e053bce987c120a59f7bab217d04c14ce4d3abefe3a41847ea1f63b835cb4c197fb1fcdeb4ebd37952253844fd9b4abf9b8b4f4bb82b2055cfaf7ae61795871efd4fe686f63eefb713d4b8cbc120321e4ad79e834082f0109c0f7ed40e02990f6619456a4fe6b86004717c2ba137f839537fe0b7223df8f3aee00578e8fd874b59021e7aef80a8415cc4cd34b4f751268887f1d07b8ac5fd1ecc3f5ec643cffbbef43de977a9f47de987947eca7858cade562a22b6480fbe47c24478e83d887f78e8bdf772c8f39e0810cc331e7aff8308776d9a20bcf7bcafa1d1de7b4fe34521ed3d0d77f97b37a28e305e1e227dacaf4061ce49b539b7b94d39279d73c6d98e3349e3a1e79a991977cdf7a7f1b955148a17d28eafe316c726c72a27da31caf13b7671bce214935ca01d9ba8e315c72bc725a02cb0d08e4f8e4d54562676fcda63f928a62d30153dd942042a428276fca2914c49551089f4ac730999bbfddc3a1943ee9f9b1a975fc24cf0e6078641b295b0f6a9bbfc6db69808fcc3cee93f97d032bf87530e91f14710eef2b776f38f3953bbbfc36899c2a84efe5171620b4dc46128b4020e3bfa45472baa50b1a24a944d556fa0a2dd8a370c6997b58895184911185b6cb185ce995a02c9997afa985f446e743a0c0683c99f522a102c5ce1e5b83f822022162921840411090415b1801f4110f19644820848c496fcb8554593055e84d92c3eda6a916472e1d6d762dea04b40e0a3359f0569eb413eeb8979e84e3ca4d7f3a2df10b9a1552fde8ea6bf4f3afef2188df7a489c49a697a8b899c4ebae621a6a7e142c447f08688af711024d1f551bf25b9a8af9955d36a1e82fa18465a7b0e8563bc87fa8a4daf61948f12ddd1b4f09056a11dd9e8f1947848793ca456d3ac97c4d3f1907e738987d476f4f55eccf23889511e2c0feeb227f3907a4c6c646f89095a7e2b0112df7ce26acfc99dbbe5e8210fcf591e1b9bb1d993c58ce598f97d67cbc7f902908102f6c84019d851e161f7fa0d880a0f69cde08f8f132620931eafe3bc2ce47242f28ebaa3eea83b7ebfae3b76eca83bbe0220010df807a854a77afaca03ed842aee84ea50954aedb5d10969b823d27e77425ac7d988e988ba21a2dc11791852a1eee7853b2c5cd009e8e3ae17941f778154b8cb02c574795f1d131363e37f6fda064d0e4fdf76df1de9eaa3bef69ee7691bcc5db5a352eaee1dbce92a8e31a6be57b18ff736f6f19be79f86897cc551fb36cefaf88a7dbc867dfc86a3de4c68bb7dbcfd8d8d685f840998de3e7efa78cfc3db661f2f41eddd9391092a08c246eae74c7d535fbfd5ed23ea2256d73f3275cdfbf55b3e32f52b37297d179b2fee88c67c8391f7765fb0707c8ebc371c3f83e30d80e3094071bc00328e0792b78c10420821c4cdcdcd0d0e0e0e0e0e0e0e4e8d1a356a18e0c78f1fdf1d010104104004091224080d0d0d8d8b8e7e5705bcc25d36280a3873570e4f1f94e22e98a7cf03c66fb1e71a9156e4a1eb1990f7b60520ef7b6db64adfd0796f5b4ddef70220f7f821ef9919199920f20ec321f2fee791b74aa580fc15913f1d79ab5477666f5a87ef2124402823b43c40f256a93eef7b61b49ee545de2a152befab65f6a6657ea5e2f2bef788953fe25de7e2f81ddebae1fa91bb34235ea32206836f929ba987f54d789f687c047dd0781b78cbdb65e092ea4c50f735ecf22b32ad500797ae1df0f623f08661918177ece1eb71c3f238932040fca881732304114c83c12b1e80b707a4e937006f8f48d34f00de1f4cd3df81f7d7b33f224d5f08de204cd347026f97e130026f97d5a8511f23eabdfa99f07d14762122864ba6c1116d3d5a93495e8e54534e5ad56e128d1a62fbd3fd0d0fd15edb5263e0a4517913d1444eda7b8e8813f238218f1baab4d69ce3da7327eec3fb1b5af3a6b5f6ab2671b8d7be8240b8f7b0fbe4b8464d76a098361d1242c0031e274a4460b3e927bd52a5b6ca2086353ea53288ae183b20dc08440625da8960eea2efedb8abab42a95499369e8ea668d0fb0444061f6d9fb358fb0deff86d04576a203e0810220f290f1c3132b4fdcdd276a3b4dda0b61fe3ab3baadbdba751c7ccdbbc89c4200de4793c0ddef669de0382391e981312c105f29b13e28058bcb21fabd0208813c4bb780d07e1e5b8464cf77197972ff59717cd16d5f22672d2f66f7699fbec5cfbdb654edcc701ef3d3322310f694f147749f61e0f29e70327e403101988340c1d81c800a42508e488ef563ece9897909b17e2674c46f1940805148123efbf79c65079c6b61943c00be0004f0003fc0e9ff82df37b46cfe0186368641459c616cd532832cd0bf144a6f91b9a1742f3af4cf3269a8fa1f9958fa0cd383d9ec6622def95f671475ee1c845acd65edb5c41e80341bf07de4462159a26fb90879ad7b9baef5a5a5a5a5c5c5c5c8458ddac84ac5e2bd32a66b5b2ea8e562f2f2f2fac7d356bab34eb696cabf48b7df58bbde9172fb64ac3d857c3d89b8601e3ff1fbf74e265138fe441f01ff80e7c77f42b1ff3a67fbd90eee86fbaa317a2fbf9e17ff8247ef80cfcf0187822bf1f8957c017c10db90b0331881372178fa7cf1101c1517b2be00d0f1e2c2c31c8e6c906c5f5220fd4b6276eeab727aeea71bcc53b9e07de52f3f81abc6315bae63dcb03de58253a96c771d0a86da8144d3566514d99a211000000028314003028140c8705830179340ec3988a1f14800d82a252725c1c49a31c0929859031c4100200000080018099994d0355627f366ec7546fbcd08f123025f0906684e61b93800ec0bf454e253109a8050735a74271b1306138b24fe42ed6b8acd0b0681cce047d4da33de5a373f813f7ab0805a63d294c47c0b1a1224f03d213830dbbcd110fc07630abebf662304c129e28a9502c08362761a11ea7bd9d9e12fd03e18714bf62604c6651e3444a847a41f67143895c86f28ced929b042beba91a7e44257488c66259f8a5ae603726cd1bb6ad45effe21ef8c8d432cf853f29a0b9d7ee8074b469790db3e7f534c7da518fe3dadbca9502c3fba52712ff1b0209b2da903bab55403aed7257a2a3dc2ef9b062ed2923d68a8644b3ab6d03f84610f674d53bd1e99ae1e65e80a153c3618c9d23ff1f1f31b07dbe32a1f67daccb03ff6096a9477e105f5f493fe9e0f03bc87f97817037afb1c5b4f47645651c55b6c05b24233da02be0cb90916c1caef7a8df24f9f7db07842d8e14bfc22df21bc55d9d9246c7514b21dbc39e97d561505d9d9943a4511a1442d41b7b732a8641b752a11cfaebafb62d71c9b59a0d22059071cfb80fef16274ec88ce3605f08ebed40c1089f20d2d48c2f22e2043702a7d926ad0d85c109382d854b5c3c101cdaded31dfd9ae1c67e96b4d54a3ef30286f4eb6091ec903f6ae24062db94e6c72a46ef17b82fe30187a7a9378f0615a358feb27ba823358591f35c57169474b5f06c6e1816f7bc2d28f7458848d4ca51c3a8b809736c911a9172ce3e54771dbd20798454df0237371c74dbb21b2f9e30e594262cb6d819e07069e6f24b38cacb92b0d3ff2524434dc1d427e3a10102eed72892b825995abd0faffb45163dd8d3dfbe7e783a12c46587e7eb3393c97a8dc44f34989d894bb500a15ebedd64ea13a8ae757a142aff572248e9c60c55552dec66e9dcc23525954173c68fbe148828a6df724343a5c19a0ca23e02f3707da145d24dcbdb7d0d62dfd71c77a0b1d4a5edd2776509da0c06d84c29e1a7bf46eed442097392b82dd192b02f5722b2a1a0dc73fee9c3622c90bd8aa10b52a6958d47cc0dbb5ec87ed78689e88cb5dd4830ebcf98e1de6052918a3ac406a6de5194fcf8d57a4407617808cd1abb9e96b14148c2053f50fea3f793c2dcaeba9e9a629b5b676ce35f62a3aff50da73aa56d26f8b2c90a411715a8e3b7f615d8fbbff8004ec43684e92a40ead900c5aeee9280be2a0ccf28a3308155da70ae343f3a1a6d3621f0b0b5d8cc8fe051040b49a589d31cad5fa47506f7fc89094aaebf75f6d746676a0a158abe0332ac0a2140b6049e40ad97108334991dad7b6ad710326b98c5625f14ed5198a33ee480a0cdd3b60010658927f4ac2d11ab402c30a2a5fa56963fc04b58f4b0274244ab49f98cc7128a8a4e2cbc2b35b9f616eaa1f26393136da07514d9c5dfb51889fedce17ab0fe91a6e02dbc9945d2cf701fccb768c202cadd4250062458256debce70f23bc6ab5d1b5fd6f48de2f2df7874179cb95bb65bcb4bd68efdb7684fa15fa892b12c2ef64d7ffd9ae3995f50908adeec5db778567bca938ee97b1751f172999d2f4daea66abd32d766297eedccda89557791ef916ddc946bd9291e723f71d9e62d42fd06a1536dd39860f8ca6bb34afbbbd18cd25f680d6f756077d8aca6c4208fb91eb29d5e7d6067d9ac5ed2d5edf34d1b9872db73bc40cebb5c304715a804c9d70a7ab9f92f6bf0091805f78c04295e505311c7ac19dc6fafc9a6b2bf68b4a499192ca7b7b654e14c8cb5d78d8b28a44ce1d1f0f6d7c1f884a30c72f68abc0fa60a4c910dae9c1c491e621cbaa4a25b8814c331259b3bddb2cb02e40103eb46836c9f230ac3a6dfd0bebf1fdcc1046435988fec79d0dc842cf63fa58f803315beddd2ef45d83d00c7630fe21c2d3f127fe8a981038648ab71aa263934dd074dbb5cd6a33aca08b7351cf5c54262e47d1a8dc7e054857702c94a66bd83e7d4d74aefc701a6a3a0d171f2c0f56b52c7639e0d4d372ebc52cc8e9eeedb03abf7b5274f7858ebe53dc99429598d0385acc994a49a5794783620a07314f03698d61f895779612ee9891b6ca7e3c5927083cefc588b334ca192fcf1d149f4249f0ea787db984e88cf25d667cd892d56ea34d202d1e366b2d9272dde19b0c31e4204afee682d1690091e5051c43941e65e2afc3d921cb2c008d21af44614900526537bb38d7c29c24fa51a83ef284cd958ea19999e49bf4384c14430a65273bec6f04ebc4535d2e5593f44a966037f50e062a66b707731d363f7a651b11416db4021cc134bfbef8e568fa429b96d92689b2b7781e576f28d1b5745a9e41bae212ba5854e8fc2e733e2281be9fe7541c5004018243c755f99f4342e8df573f2dca1f4babbc4014309ee086f64ff4fe5c9060024df5e27cc2d41b1257e6aaf8a7071da5ae2e6311be777150da9fd697f06389ba5af02277728adf5524882da0d276f090d92b43bbadf7ef39a0a36eea79c7023919ddad7248132fb40d9b7eae38bab4a4703265cfffdaf7b43c7e495b96684de9ada1caf8756804f37a5831963f043f59b413ca6703160ee4639ae086508ede9854c22b30e8ce0ba4b155c610efaea909e316cd0e43aca051a0b6d106aa8a11b8f01b47b8df9dc7345d1298ab3f2a04a41fef0fe6041af639e23573e4ffd8bb8424ccb5175c5dbfc74a3863250cf918e878c7afcb998b3e1d67cc77216a2f03516c4afb21d8369eabed226422844af2001c57f7ad6a314496f42486e7c8cc689d509c46840fcd4f6f2201225d6549dc24b7f4e659e491a1bf71285ffc66361e474282d1b62d9a2e89e1b8ee6102fa7cf5242d131e11c6a8b16ac5b17f16c97c0b2715391a2046ea99e93fbe76d597b917c8ca228257fbd0b4835941424890d02bf34e1e79bfbdbfc8d02f960a42164308ee4363365df175a6371f1970c8243714a5c1eb41019c12d22fc234d135fd5d53b7c2222720a5ebc191c7c6cf5fe2e312d790cdc5ef4409d5dbb4b6c3df92e8e70d71ddd1620ff27993cc7770887da26fa52ad3c96e6284fcb746e3d8986ca4eff7bf84f2308000a95a4aea3c9450c1100a0d4170a2e11237fd6cc31d7ca6a282b457a6be6177c1d3e4467639ffbc6f70de3c3bb96a681ec9068fd89a756a183f1eacd5ab4ee2f8766cb16e59bd6945fdfff6b6a0d0dedc93cbbb94409a6219750090f8ae175b71aa395644ad3f41dafe028ebc48359c0e69f2b08e66decd04d4fe141e6711b96399271476a826d7fac475209dbb2896f75a69e34a6639d6e337c0dffd51aa558930e5501f60c62207eaa0bde74ec762f728cfbc4d526f22ca7506dea247dcade502f90904e605c53644bbf948d221fe47aea01201a942f6df7bbce2b994a4075e158cb173d0734272a5b22578c7d608708a09b7b70b2b5f61c1e69f5a90015a0729679aa9552c4e9e07142f4ea282ce28ec21800e21d5764e7b9bd95f15110c2b0cc48f1bb570e7416e9d32f16261acc7acf2bb2723701a51ae4398fcaed2dc8546ee55bfcc8b3b638efb6a480033a0405ae54e55ef976e25a4980caf09abda952339217f985f75996e31425c37f6ac9f4b98075db73ebf9b45ab7fdfd6653a54b0afb81a24c60b2dd353bfcb741a00acd8d7323d2d4e14e8069efaf27cb9f0ebb77df1bf0c349116b9d9ee4ed3027142a896fd0cf1354386faafe66074786aba160b4258a4a037be4adfa2848742c96a3c8a3283e51118f3ca06223b3de8660ed8633130e31e5029d50b3ef6abb1527c005bfab01c81db07b41d437e8c80816c7637626048fe07c25a8750aaf0f98fc7bc8d25fef501b95b2b571f9fc5e54666f11b8322f8823c4d6b1dda3e72a3d024ef1ff9b04b05e39b7d2637cd5c6712e5527c42b760a796aac6b827d21d8f2aa405cfb0151e053bc2c31be9c114efc0e8ae0f5880f8a9e8bfc73806d1746ca2f30b2253ba574711f6b12f9409f1b944a63f2839ce5ce6be98cefdb663fab24563861499525f55a48d0a289eb8c007861462916f2b7fe906fcd477322489061faf4c158b8487b87701b4c1d9989a3f7492af5ce6cda6a51acb482c552ab75a2f7b4268d6202c992260ce161476d5cabba352c5d6fc905ee79d0c7c4e324108538678572dc551e6486d60e53c77b8e6558e16b2ffdfda17e2f6453526094b2da97d809817490e15fd72b4cc5966a27d481fe5136bafc9e411aefbc783bdb2d86983b0fc3ef8ae5454fa40a903359b743a191d8f0c149908801cb4b90e8c8b73414b4e91f11dec77e66336b97fa841c050922ec4f1ba501416b99ad437009e563cc5dddcaa5820ee127e8e02d2d1b44036e983e472e27d554f7cad9db07c933e0cd453e948506d6c0078fd616b9fb31649bd000c839f095590353283d87ab76f0cb1bbbf09105668e9ecc038759ff4cc13cd65a3633aeaae8c164731081af9be1b0983a495b910569ac2c4d9b8d7c66b0ccb2475917180d8c6b3baafcc7938c42a51eb8a097af9ccfdad1a41299047c0817ae82a9b49c2525b4d08714cee7c108eac73684ca11ea3f1631e70462c08a6ded588b39e310a61bfdc21042403c05a5343161112b9a21ed976da98d9ea1cba0f5b04b59e2772bd0908ea8cf8dbd4801218231bfa429364ac4a9b012931b4f8b016eb4465200e9af063aa2d16a8cd57727d7fa1c3a475a11aab3e38b13c74b4687c65a7cd1853608e83e5de160a3412d7213754aa56cf5d630f95b5148f6688479ddded8a5c17a4c0a90fb62d21000d19de347a2be76c189ecc313307ebf8ff23bda70e9914a61c98cfc1b407bc04a20c4dab83bc3f87164c20f01716d06a7ca4a5229744947f27431f64bd0ba606054c1cfb391ac1418960f884ca6a92da9d503f3fbbf29fcbacfaf344069a2a6ef7a978317f8b2a14d6818576692a25172bce704c06c571bc3ab0cf819147712f46b7a8a674e7aa60e7ace1555256e33559306434487a5c9b6a3c2bf11b9f688bae28bbc83eb8f9e584083653e70c9e23260a68ce4c4b7ac497a1126a8d29d79dfdff23d9e4f3a0bcdc4a9eb6801ea31a2fbae2cb8225b06902a371bd25571e97ec8717036f6b53dc062f39d0f61d9dea44275027b835f36eed84442bc077fa00c73778ae1f1bb73f460c4a98e9893fa3a2daba7ad0acf3d5e4e819e4fb1481fc6702c023523974a6a3d3be15658828d7084970cc446e7a81bf94f5258309ab14722e078c68e11a3e38d0f58ec8aad173feb972a0638b09986e6a5fca66433469ca7878ea132918cfb2f75521a9fd5def3f63367db61711a8bded8f5d6ec0c84675dd0b9a2387e7c66fb912c47acdd276720d5de53dde67da73ee918c3a2b8222db349aa8c872cc532b82005819377d22378d00636b66b8c17371586ce12dcc6f5f17a50982504006db770d2040da989378e135b33a68e96ac2792fdc46cf4d817093ce7fa8bf9689db70dd35e46a00dd3d7693768a68d146053d37fd5be2eea80628400996d00cdd3f9cb1e2ec0861421b53a79f46959fbbe560b7726ddc9cbe12493c99ea14c621ea7dbdc3f30ffabafd0c45c908d3740597a01354e2453a55ad78f4f1fdbd357c81ff00b42a5fdeebef1aca3245361dedd71d4818fffc153c6d325b446d4a98489929fa6e0b008f229f61cc5f835a7baae09206afb7456a55682105fd373dd3c57c6ce45f273a9ce62a440d013d91384684e0932ff535ba02509d7f5f97f28d370d8c882edee2880478a50e3ec6900b4d2febc0758d9f015eb2cbc72d86ed3eb42d93225d3b8f9c63b0c39f8b764b0bef06b5760658a5ea8cd00fa719ed489e52f7cb41871200e81760a6793b130844217f51c5e48af8b4d6d3cc5f825ee58afc085fa0aec6485025b67d208263dc673cd6aeec0677791a1310dba7d8992de92d50606d0cbbc2ca1eaf2fc310319e33532b31a2ee58f2bd500c133230cb9692f010c5cbb25dbb9914eb4748ae9d254633c9b63d019619125d30a08b89bc009c81fcc5a63f5f1c8a1d3b18fef7b4e601e4b1a010e399a2d08c8f0c9628811c51651259e0e951d82850d87554e76f0ad156c01064452198b7d47779fd2c188c0977cfd895d8322008d0a2f200aa617f6b4bc9f01b6e4b400e63c976d79bb2f5ffa51bd4a1aa779bf5fb2ac2b05c52bbf72074062260cea64263b67538a6936a8f2a3960eca6982bc907591109f300fdf94960f8573fec4a51caa55bd6b6b0940b0afea0d00ac4e0cbfbd8b5f5be60e4c5fb91c1f10bdd04993cb0b2d3b4ebb508c55ac0e4228e2313f6cf65db2b73eeb9a09956c0397720ed9bbd2fd996cf3057bbac7deb72c3b3871b1a33839092d50aa09055a09cf76ba0d63435d2923e8374f6a9bd91eb82dce907daec71ecc58d7057c1e894861a70e12843517bd4efbaf5798cf3a5758d9c15dc991da1324591168d0d03afd86f621d91e689205917bb905991a903046d4f99c61fe47b8db174a46a58b0238c9f315e0736626d6007a7568734ecc56c26b912d2145bd6b4a0a01bf70ca8f894253859b2a6bc36148d460bba589d572c412950ed4a5a1b352cdec39a9983a47492066c020ed1032ed442bcfd5cc4bf0b6c5409507d44ce1e495d2daca98624b711acba655a7dee624de53fa28ea040b35f951aae49d02aa646c1ad87898dad1ec5443c849cf64a358891f950549f15651404fa13021d9c89e98eddf09cee4c48c1ca970660aa736d85961d790a79b510909159a9250b0ff36980a9c099f71dcd42fb87ab6376c1e72762146c1e56421f6d1c754bbc1fef8e4a627207ac86d980ba6608593054787112d3be0d328833da3735c29c300124f86f7ee8c35d5b7da35efbb14d232d4823b61ee86f1596c6824088ce1423751b937d32e92b00d6a0d4fe755ae6b4926a406b826a2e4be1d9f02ba6c5f913b1afbd4fd5b62ec4bace61fab1716941b9194ad8a8a1acc6c534608df5f726799ebc8257244e9cb9bab02f8f946a6278b99b0726b023c2df71eadcc762a756e168e4c2cd52b0dcefacd2cc8b8a03bd274e84c2bbb3f0dae245df0a88ac5e26fcf3221516058af5205b21941dfebaf99973b182749644ebb1f957a3f277daf937fe878ce25bff39f217c94d1f21e8fe69cb698786c974609ab0d467d9d4071a449f9cf7c6eaf35253c3f1aa59385c8dfe4ce421751e73b20b99c3a3fc884f41e8d2395d4c2aae8592589e2aeb96531b248c5d2be0a5877277adbf248b9d4731b3fccaaff7e987f598a0dd1cf61275e4c11e11257439ef13fbd682b7152e818399b0644ab0ba95d8eae21f2782d63a30ffa9f9dfb3f957fe16e26500ebe781fa8ef2434255741bb0e73525668e9e21b8da60f678e4bf50c68a0c3bd4fea173a0149c373a21743fd997f870418d0925b4ffa2536bb2ffd536145c86b608f00b3b2c25d8331ff54cd3024fee5802279b40d5aac18548738f81c543742e8581cfe14761397b666f89f3d59858b5259c6a985a6b59154778d336882d531992880647f8bdf019db2b1c8011c3dc1b7cad7674414be6e8d2180c4a6a51433b30e81c138aec7ec9f4c23f117297ad21389a3d48e9e2b00e273306e64f08b98c1fa4494166e2c7c1ac00982fa2a65bc40ea217398036be9dded5631276823247ba53f433d302b4593973bdc98c816f192a70321c05994d786fcc202866691e46389ce5d59894e54298fc91ccd94063d1710df5f186ad9433d361679fba239778c0059fdffcd3309801052c36825a0daadb65c45b85a46ea31a2b62b2124c61d172eb481a24c1b6d2cfb6d49534d507b913df7c9a14a8c50d255fee4701b9450eb790d4a80d6f1030497e3817ea4d977827602462e42750dd70b2b52109809cff459cf2eeb2418b4f47e3d00d23544546fa9a8ab800ecb19adedf7a036978ae3e59a7376e90a9504dcf36cbd49bffb474960d0d81466a47a068d2e518271172cb42f640f4b8f50e3aae5038228cc4227ee817b839dcf68a87f1549230ec5d18256909c9037f1edb16e95680be38665b8e35d02fc819c0b39f5be3f6dc276a66016e31c299e81b063e8a76c8be84dde23cfa7074fdc1a9b1547fcff5b70bc21de142217df591f248406708807e19343df5c1047bbe2e147d0504e9afdac9295f22d21402a7eccd7fa6b9bfe21f7efe8ca19dea2b4d6569eecbe75092404338398b07d6d40fcc27818f2ea4a17691210d28401db2ed35f3f05e807d3047759122edf55116d285572f17f2b9eba347f0802dca98090feebf002acead38374809acd143870f1657d3ec4b53d60391c8d838d695774d7e44df0d0bfc46c1f243bfdd48f0e6984358a78ced13c0622a024365cbfb11b2897546d92bad8051e3ca855692206e8a4556e00a864717dd7d8335f840af5e64a08ff0d616e981b8ab4d4d7aa6e33e1e111544bc0bfe9bde0984f602b85eaee644ea55fad7857f64bd126ab1e5bdeea1379bbd98b3cc305f16d31e465e4bd4e97cfdbeabab57615f5d4fab83bdba56c661f470445fb83e7a4de1e845debdddf6635554a24829debbbe1606bca1246f5012a4c8a4a3a8640304bcfe63c48ad0fa590124be8e6d4cd3c699a98b6e342b66859fc5a5ad4773a549bf64cd61f8ccab77b70f744cf2a2dc055e0d911512e7f07e7d630d9c6956e1c2d6e2caacb686741a238700c121a45d35f176242bf6ea605c6687544d1010e848b05123d11d4afb446095f38feacf5208f2dc3bec7b27d800b07a8e9f938829ad84f62629543aed4fed8df3d862eb8324df7550c7ea9c43e691e2236c3f58cfa3fd9857be3d4b0b93da5dfeb1f9cf8206210fe47945c5cf791325acd1e97536ffd7f46e30a2c98f5b12f1496f5d45bef2b496ad41e60d83c953e6cb40bc19a2007eba7798820c40811a738cee3764cabe077b32cbf64388bfe1c75eb6adab341b3c26e4700b560b3eb94327a5bba518c78d0dceeefb54942a4f7bb843248debec5a22feb08225c7edc297c85b35996b89a746f2043871d639aab7ceade509039ff750f03f56292a36714ea00f076464b648c0a75ced0953d6057d0a7330ee5620b55091ca210d82f3a5906b996c358241d20b2711f53fc3a299603c3da7872b6c81eab78607df0f0673a77adac3d5acf11b8cac8d5046128c0f41757e5b97f24a7d8eebc45e131177a80e71b5b3691c047874ac8d0c79a0e6accfb879600cb5c9b04987b6f1e2b1f57a71c4c781638689f9f03012396eb07ec7ab5bd2fde25abdb5e70cee4101480519aba2e2792d2e32bac61a63130ed9dc3d449730dd6cc4be743315b5ee468de70db8edad8ef87a0e74007ee1ed353ea54780dc4c6de649c3e469085258294eab08f02e2059988e0f2614d485cb1bcc16617881bebc334c9c9211700eb9f35e54060b74b947aa8f4e73f4b085c6a73fa5a5bf0e24e6fa468da630d0ff21e33e4e97d08ee2c338c4bc4a6316c6c120fec43855ef8cb48aa683673af01dade95461bc0b6b82186375023ff5ae22835c8439bea2345551e1d48bd8e003bd79c95fd95487d80a36a37960576642e35989d464139fa32294c506e433edb13fe64e7029f00d5a14560eff1f9a13c61e0d506a3e594df4b2e9af70fe173130b133ffac7a3402a0ddaeafff3b407f15d0c67e83e618a1a57e1312d128f709602ab25cf9f8b120086a3fb8d44535bfd64a888b85d822205e95a5bac113bfb20bc50d601fd9a305b8a37159d87573cae7123e351a050e9e71fdb4afefbaa3be7b5ec22b62e2c6c0a873815b9dde183b98407b0e8253eb788f19ccd7e19931e168ce2602b85e907d1220ab5b20b923ce271c4d2e7634129687cd90db728596b0df335798d39d3d5551e3e4a6c8f219a1f25a5d2e3043af34460a05c36cd8afe060da7a658f8532334946501c2103f4abb13cc9b6b42f2bdb1390866a9d9e21e3750f11c56ab1b49fa1661417297f61d59fd8405f388381b08816e06680b5e2d769db3892c4e6de76a3e2a6c77e6aa17f8cc78dfa008deef53aa18c6c7b0393ed0069df4c6570aa51391727449da3b4546b92184816ed9e8fc582541e7ffa8c0deb22573402ba3d68b6e5fe545ce8f10f20a2452f895acc634dab8ef850cb366a96d1aa439c397c6fc7ee3c62a9a296132bda8dc4470ee1e0eff388c0a36cc703907f91b4eeb44673ec25e0aa5dcf70631f37b889c56950e96bef9e32ec56da65db2e0434fe0679e3cdac425deaf454694f3e40ee734a4f41cf2ec3533e1e6b847e7cafab0fa1c9a46510d07f14903c32a8e09067e22ab150298fbb22ea64761dfff0fe1d729292fb17285e29f9d7d2c4cb607257e80053cb8196290635d67768957950a6cb962bd8bd239bcfcdb7173c5e2ee04935a88539c672f87ad2c9545ed650d28d0e28660bccbf84639104b11485037ab859e2209d2a380c162a7b24d34ead59b7d0fb8ab9dcfab217f83604d62e2061b20df48074afc1f6ff94a76b1d487baf7ff2aec4aae990205df3e6b754b967739f7f51ba632a4a89f74e785794e9d19d92d5b6766a269bc730af463c22ead73b18ceaa14a637a9589e6d026443e2068c7e557dc59746de031b2a40072fef52e1fa317e3b847f63e7e6303e3a5ffb58c2600494416cbeea20f1603571e702b41335ae825c1488b444d35bea53e768a4b2680336d0a412b0e0eb178136825e0608e304443b3c8c6525929c0d7e118758cd5278e851cfb45867dbb957793dd57f4eff11baf7ce1a508cce03848340f7962662b3fda000b852c52da2e640cdc8dfa9db5095ca1d302cb1d46eb57823518b19d57947ad1f2b36923a868f528faabb52e4f92e91cf6cb2543904a345e3640fe25dc32b602d7f135a6c700cfdebe2c56cce94af53cdbdfd63e360a0b5620b21404f66e5599f94e1b2579825c44629edd514d7141d11b3828d4011d96c5e4722a573a610dfeb207320838f9cd5c1eed1caefdb2b5c9d2d8d3405a37075229a29982fb2777572c6c960aeb8005db10a1d0033d2e18b01ca7a6a62e6e967c6c6dfc856bc27299813de7c357daf26cca06f3e0a66181d05933912f12118184a3c6027f11c3bda474246bd60706d28e5d0c600e40b66d715a74eee0b064a9e5f30bab69dc95f4d74af79f5062da9fa82f1f16b72cb777d3d2988c07bc17445737f5e302efea5ec995b4da910a8b3cf5eaee405e3375a60dc6d2f1889635358abdae0de9bda58aac5766d0ab62d94d792f4591419b2fcb7c36df363974aaea882cf7cbbd3e13e6bf794afaa218bd814589b0a5464d4b03ed08a9ed532136d0f8302e695c643e6298bd21534c39d44a4563c9bb66e44a438e23618df10c0c65fe46d306183765b5511379874ea0c2676c1df69d50ffac8174b7ed06c9436279e96d0ff2328a1f98e4e6120c54e73b0e6313b7978de4e589f83aaad2f6bd36957f782000032178cfb4cd4cccf95e083344574f0b0c0f5650cad87ce052dd9cbbcc3bd20209eec11cd2ae9114d2d33bf55f34bf150fe56a14dd36301c150222c630a756c860b30f5a467d056248c388911f8b4e82c7538d718f2b6b790367ca59d647f8022dee5e447f43b69b4922caeb02aff30fc815c01a213411be3279d79a424839b18ffec8ce92620543d16d7499154631a6489519a89f86cd3d0b94dfa904719e23d07c2fc7d691075819ecbdae7dfd56984e646903b69ade93f8987ad29406eeb906ff993e8646ae297bf1e9aae64611b127bce1e9231f28257e4622b8dcb717a37c4490998bb00ad160e1861f0d39b6f59c557028a8f09530f4c245340d30655b7a1018e48f5d9162d3a51bab05afbe7a5938442a91cbe1f21cfe1d6bf42eb5c182ed339ca0c4d7b039ee7e5e208081b2e67175b7ca92cde828d238a0149ebb87ca52c17c65018d031efb76d86321467d8db4b4273b300af644fa81baea870f36ae26607f440c7e5662bba396f39a3b35da23c72b8e987f822f747d5d97884d08ff9a460ba8aa41a8b904921c69bfa1840ada36558cd049aaa4af10871ea3629b028b7916834c7e0fed46bb2fc0e8681eda1a666dc309dcd5dd4e413a7346183b6818eee8237c316f3e79a9f4e45a0687118d475ebb3b5725fbd4d8106c97b306541033d5887e25bbfe7fe64fa69578b89ae8dce1a4d8c49896c20feb1fa73b3a133996fd14905129f0c8b150868a583d05d6c6e29f640b712dec879746e0c69e2355f1c4a7c514ebdc32b042b2686d65cc33141803179490b8f3b5154f9c88ad29cf06ad8b61050e85dabb74b554089411490d760cb130b68e085fc2dfc44bcff835f62ad6515e15b065f662fa9a68efe531c8e71aab706ffc19c50ac2f9355de2d44b7a7f148e3bb300ec0de01ae1908bd865daa2d8c86c672cea7a628345656b24ab2edeaf9441e0b17e40b4d11e30522209499f97a3f9e5456588207611f75058d5f040022b8439412a256689ed7d20be3f0d3781511e2b903b2890ccff16b27aff38ff0910e2720f6fb6c8a226869f5287c58dc1dbae594606bf77ac532510c081350be9b065c9e8e356458f29bc575a65e20fe83adcdbefc91b1630479ea9ec575bd884fdfa01a1d753dad0ec01ff2383bd02a4142b9873096b2be68b93a8a343e616a96294dfd12c4748a7c580957ba5c6c6c0e9dffba01a83d88c0569737151538b6bf98c589fd58565e2435d4754601417a0409ac0731f415589de63754a45e24ad68dff500280dbdf8532648f4294c87ec9c563b91efd699e21bc18394f35fd4f221d50c7bb262a229b0e7da8dbe4ebf25a45c092d842ea876072f5f6aaa2d29b43765d597f9c9707665d4238a526806c0f42bde12850a3f84a0f995b7fe0f2812f1729c8d6eb80484c7a832df3e4a559c868cb27e7f41cc4b9e39a576f9e6334e2524db1d40376661140145806751bbdcec6551dace4ca026d54a1813c3e67a70676bd35ec88ccecf126ac5e2ce42544e153abc5b7f1613005d0607f490d93d9ce30eae04711d3e9754ed5f72151c0922994d644818c094a93293c2476418c37c3b7db07f56697b653f4e5a7210cb7c53bc0e182f4bc5591beb72e609dc74daba824f3c7c6ce1c4317f72c733ca127bc0cbbfec70cea3fbbe0a44893d81fe9afb197872e314e0d0320582834371e65a7371c3670f447cac2c209898c7e68effe6f37c79892d67de0de4c7df6d310daa26beaff3441c29d5942bce03dbda4d29498bccbafe9e255844a11b0ed29e0301b1c13f998e77854debfd8fe02958be4e96f87766669ca7dc8cf0ebcf15e40771713afe0316d5d034617a502192c4a920b3db06d505ca0f248d3a50bd8b9800f7f43b9f00c521b75b6e2851f85aa9e7cd85143d4921fb59242ce74644bfebf310886d485c9ed9a51b4bb3f585bc3fdfd520449dcf0ec7be0c8cc465be5d75f6f7b73b19c1a261da66ae71cbf39c2c6718dfa455d5c6b01e8229ccd50e100458c862130be474c4739348e8cedf8946110c5137a0d7fcf0811ead8094a5f2dc685c9887e768d02f5354e37ce9dcb9850b9dbdc3a18347ddaadbc2d2f45a634aebf886fb6167a1fde0240ae3677c7fed96d65d8ece74e652fca008688e7209ccbd71d0636df7664bc7487c47a8b8ed732ab01d90a21fbe41daa137bce0bd8bed11ce0576c131a7c4ff4282f26a1a788bef8250fa25bc93c1dffd49b553ccf893d165786e30f8a3c582b5147fde659fe64964295217d875f7d30bd7a917350354b3824b08341548ecb39e2ba4688f27c9a4e00b63920d683a9a0ee60030300eec85ddd2619122ad3686a38bfea6a5be2f12e02bea08a068c1d52b48a6b4658e55a20ce52ffc8bc076a859ee79960fbfb1c6efe2ce6ac1600bd112cc88ad2ee6a1c261328c2169fe2fca81cba09278e21100b91751ab9e48081eecdd9f98be89ccc121bd3dedf747fea21d0280aa611920436dcc1ee162e016ed36332971512cda3bc6d86133106f63755522fa82a9e59800acea10497c3de6a3df830df70e7f9a5d76867b8eb76f286d03bb99b633559daad804b9cb31b798868bfc7c930c45717939e781b0cd9bd66b26b47ca5e871ab6c9c358a86d8a2a846d8b959a01cfea97fae44cddc84d17f657587e8e90c283198042b45380d044ffa6b2347031601625cabea2244a6c8e715265632ae1feb5d4cfec4cf69c61a4b60dd60541a8d6875e4c622ac4332d625503b21bac1534fbbf25b0f0e3b38649bc0f9be01377125c0bf68786e42545e080e53748f788ab01d2c0a9081ba9d1c73a8610d7caae261b682c3daa9826a1831e170705e0c409bda76e3e88730c3c6aef1b4c5bf9d2c29b496b90ed1de3367d2364021566ac0160ea6ea505454b71bd9c333130b78bba03107bac10b69deff0facc6d1f28ebe00bc758c47bbede7f7035cd494b38761c968618951c04c3b25cf3a27048971a35df8300a1b4645f85e4c7f38cbe07dc95321536fc7a217a886a3bf63adac49b3ee8de37a3918c2d6decbdf9fc387850ed5b4fec4e73dfe8fc3a1d106d093b4a9c3afed5dc4ae842c2fd13e222860fe2fd52a6fe43e2c838a9ec013f2ba359604af4ea7f2a272f9fcf8ad423a63e7de6b5d160b99a35584e9f0129bbaf5001e972e766483f49a94fad10f32e8348f2abae695d4c738bfd99057cd3895cdef7bc55a976a06ef88976d47678a62e591d84a0d955d567fc334a45c7697245831611503621a073d01e72791dedcaad924560eb1337ff3d7afc82976ad5863eaac8667124ca326b4ff23ada765b4317cae44d1bd3b8b84fcbc54d034904391a99b28e5132b03b744b131e884bced37b520ed344566c50781f75eb0ca10098d210183a72da8398f77d239d0e8a24b389e6f8d6076aae540beba9dc085ba416ed6a03aaf89e17554bc5a41614f672435c6928081a749c3b27485ff4acf0c09e6bf7233893f1c1e42f12138d00285dec72a5d3d584db3853c9bf5e4b696300895541cb82812a4af04033d98c8b8ec4a5c76bb1cb89f124243e470b04d621a7617bb1f4c15564f2e216317ac5376f564ed912b28cba70612c91c6ed5dfc095a550dd6f0ea30d881fa9461a58a2789ae05a5a3df531cde5f65e78f2c07a09c24f5e682a9065679322cd276bcb7f24ab7f381c2800f7a12c66054322f0ce50e32c9a1489bffc2e55c7d746e75f310eb8c1983d1951e93a78d2ac63b2ebec33f9cdcdef49cf3be30b58202d42cd06613212aa8093863925119c6cce02f06209fc1bdf94bf93fe777d39076376e3ba4261c825a684cbf9bf648d8b091217bfe2c20f5bf67ffdf06e013830a831044365eb457475dc4a6914e843b0b02237506e9deb05bde71c07c2f548740149c7eb4241feb5e9e62257e3d02e797dae23d251af481ed4db053ed5951ec73f2c90175e170714e493c0eff40e0deb2e9d50e064ce55f1a5026966bc7ada8aa2992f53b2d1d59f4378f848bde0cb4a8843e0224cc044f5c23bbef5b051fb177086565904c0fb5e0b7a71c04e8da8379c25d7dfbbda89f027a5e078a33d00d8a7eddbde7ef27d89120fe749c2fc17eefdc5ce9b84396cf780499d664351982694aebeee1a2238f38bd139700032fa0977e0b9358b7c47bf7109f7a9a5373b10d2f6632670b595684a07d403ee101bd1f8674fe2380bee051cb05452cb02d771b4e99cd03a42d133221a17ef9d36380cb825b64dc7215525fa57f38836138e9549e790ed4ffef8908c16fdd00be6a8afc976ff468813987f3f00a271bcff26e86723d5ce16d062f94fb2399eb783cbe3f0e0e8ba1b56d9089d782351549dec8a8b3e8441c5c77f8f6c202d40b7aa9e15ca496cbb411f55967feda4081d8ffee6af46dbc91f47a66d2300aabb017b705d4ce6f94803499af5c3b40a7277e9a91ea60084db03819987a9d96c0494a04107613c73dcdde51a1529d3b27c069c4e6394797370d3e6831a79fd05a62b7b1582735648729ffec60a85b2c0e127c8ad43d0da84ca6d7da060c3aea30effe19dc6a9593b2ddb67a1e27f685bb8e0e955c01cac7cfd92b37a533d16a198d590deccc7e3810d13a268f09f32735e291050473a310c8df14b4b9f4b2719a2fbda99bca15b503f94884e3ca9a68bf18d3654a76ff3422a86018aa313ddb389128df7f1de3230501b796b7b87f8630099c776d226195f819946dc28d8a840dd0d8a8055f04f2e1e42d41c7eed40e7bd99f9c111876a383b32c4200ee213f638c03d35351c6c547501659227c2da5c3a64e3c8f0f990a8ef01d8118b15bb7eb1412dd0eb1f604362b3f2010342f97c945bb87e0a71f5029ec8fd7bc7502c76dea99b979d2bd5d0fe71d732609dc944255624dc1028f025e5cb106ea6dec8826c07cb8e95ddf525375f4e9ec279aea50796aa1f864f98f6e631030eead74f1351da600489822112796ad613a8e54a2e3a7b240ee8b91e3366f163c449d0f3cd96c8f5dd5df60a9fd272cda63ff05e9269baa94d0aef1ef99838501c311f64c45aa12583ee2706764686363d66471f501421989c9f4794aed1cef9dd205a52c90f143a0de4eb24dd577c454e81d9491f428154bd100e768bc080e0cd8fb03b0e95f4f6a11ecf467429149ac28b8b07ad7790cbca846e74f8eb3d7d318d1962a5545d335976bd09672e2804820628c09d1c477d0115832be37c749f7f2551225934b835cc89a8e61d9aafa843295eee3fc64ee21aedfa0cb3c96c5268d1bed3c5707c15437681def2d0332d45ba6ff388b6e381039f5e80445360ad0ed0bfe72ba656a1c7414721dbd0b416ea474744d70fd92c3c92a76cc63aafb156dd7023627c2a36279dcfefe73ac43b6f26bfe7c314459f5adabfd28caab9079eb920f3582326d048e014a9dc69d785fd9d395f2e62824a412a9c3e56c2031fa341db66c774ab4454c03924950ded50144b654308b78ec7ed8d03c8ee9804e71285f7d3fd8404f207ba0276e7e77e1cd24ee8ae016a6e17a21d431e464dfec3c3b1b352220663270c2503e7355faff704503fa9a48d1e740fdc5f0accbfd4cd70c5858e036b7766a5b7b81e9c7b7b982fa272788b3faf800876cd3b8aa3c7007f8a16c609f0aa19454e6696aedd0f6c50d0c511cf581ca799bdade5e98194a4f46aa3147f9c847da5ea05a3dd98badcf873e470a9aee97fb4bb00136a0767b4aa31c1b7e7ae06f4664d92d31fee44165b87a4aa6720b0401e212e375eafee2982559643bd0391be9d9c1021272f14c899332c677401a29c0fd52b7ba6a5316f29f874fb280e1b3d22a54e7056078eef75f248994394e838a717cd290ba02350d20809c06bb69b1da329acfeb327e3ed2a507e87441b98079c467b4e45aa78cd3bb60a1d33e4248c76bf6fff18a2a5db21c6fb57658a31979b37d94800538cb9da3e51542fda422ebfba5b0da18713fbb4e94459974075930a9d7f2756250c5a135876e567d8211255458cb92b1e726dc2c75177486e1231463bf147aadeffdc3b9c16206d23ef35a9e4501b25928f782a478e9412812d683b0586a6a7089782b3843a04009eb84ebae8649121a509f083d6bb818d4c48140529b7fe3a3c72e3f84fd10391febd209494c3251d6bfde3a6c3e1625cd108f2f875d97de37dad16fd4c8e99b3f00553a02e5fbccfc452e1a269a737883de1be372e9502c7ba6aad5689edbc33ef6e20f963f8a32979b6ac43449cf132850f003f8a6cfd91009a6c5f0121aaef328aa8ba921d2a8b00e06e93dbf930506128375d109d8249671238e36b029c45f53839740baccdfdebb149b8074eda75e91ce15b874dac6f58b1f2c3ebf12f22a1431f1249494b9239270fca9d9538e7a6421d01a64043b1b55978dc365c61fb05dd97a5f0ebea6c44d60141eccf66b11738d2065f76689cb3cc20dd85d638820ecfe5096a7cefb455932d1ecb2729053c64d0a11f5a519dd791847306e4f119c98c4f41674c5dd13928481ed3413c1d800e2f438d37944b4c388fa6f8d79a83f6ab0226da7969bb680e94855856b6622c25c05d8efa4d95727cd2b86d3a85346d9353a972b831f08831d12bba5aaffcb91a790420af96ad85a308c6ca9da19b8a92c7739046f52e7119f8832bc8504500dbdb5300cfa19d9a00c073d85b2ad002cf01048f8f2aec2a16ba5717732bc9c0734099c607a9365782039e036ba8bfc47a5964069e835d8410715973253ce03908239959e3a72381731699de9ed057ac8ce750247c08b8ac37d156f21c3e923120f272d9ccf72cd538790e05c7ad84be7c2c8253e589bb8034790ec3281526cf4136e2c7d03882369df7ab6e27cfe199d479e350fe92e7201333528b544902b24feff986cf4e549600752b8127cf819f9cb7ec0c084477b81adb63966e0b42f21c44e069a09ca125cfc1e266d875ae923106f4c42c01c52cb768c9069879a9efdc841690c08860e781a4c4c9027fe4291b5090caf5683730da0f1c2271569e225e4e87513b70da1707832eb3bbe4fb93993cf01d46454e26d9717236f0b71468b1274a92c2104e718405b459606faf989a5d922422caed5ac54eedb2d4d4458e403dbc3868e93f43eaa285674a3f0322ce9889890cbf1e69c77af000c7209c859d919647d5f0c4b88bfd36fe5c5601382d0d0ab8f94300b1df231ef62b90678f04b2a143202e255800c7accf1a2e45eb9b4d404270f9ec7b31bdf20ed2cacd585493bacbea06f7124c750c1763a9b02111052b764706762256857e75c919aea9c8d08804235cbe6de3e7389ef9dc088fe32ed12d606fa2bbd4bd4ae5956e10af062150bfe2d94daa9308e304ee4308b3efba4fa36d4c2be578463f89306cc9381512cbcac28fecde8526303efda23719b9b7c4eb9f2d61b9d23f9327d31c4ac746f19fb881e964daedcf74e020f9beac19adfba9f8af6849c46fb302e72bd38a82fabfd988ad12dc0ecb84d3e6db7343e0a19515d75d89968d83fe62a67b9684c5eb182b49b79d34351306aa9c014ab5ce174860eefe5c57dd7c799e7d59607c639d1fc14e0e24afd30fdcc60046a8f3bb2ae45c1855a7c7c95019ddbc23e60867e209bfa2b33b3227f98340ffb249187f37fe0f9bc4d7d910ae80a9acb45987c614ffee423ba1d2992e9e2b67c20b86c2659bfadb3107bb3a62382524b0e36a2f3e6c689a380af503b0cbcf1d3577cf69e33d5989f6470de5e842ebfff04473c98280729ee29d3bcc659aeb5df503499fbd6e2a527af059c47b07bd994130574cec1cf6877c63869109dd7ddd1f729e84a710a81de5c596569ec7426b3a0e1c1acbc4c6f9bda6b5213fe73564cf9fe328fa32718ecc2afbf2a76abd48ad49c99e0825320b19a9629d3ab2e7c6c43397d42dcbe9b410cfb94cdb6fda066ca66accd01f1d5cfa9895f402f71b8560143643f22250a89df6ef98eee52dac6b0b7d915a90de087c02e34c23a973886dba19b6e46def5bbe85f285457bbe40e155cf1509f8d8c3bc35de57060bfbf3639628c29357f9a51c61044c7e2f568074f41522e9cc6818c4b01290e6f28fba08604c08f7916976da8d530f928151b5c6ee594b1bf9952084ab2d74ee5b56bfd2912365ef0494d05843e907e8d31ad71cac3d5d154023c9794c0599d0232d9518c6c25b46fe2679b73e6045e10253b220ae413369e4cb9e523423f36f997e505325ebad3f78068b42a7fab7f8c5cd693b75c266f88a59eabfa736a3bd753a8ef2fcc829246a4b5baa3dc84fae9a6215b6a9dbd4b0b3bbda181da9006b53b84f15739dea01f97f862f7895cdf4f1d5029da653a21c1d6d93b1509cdbe751bd9772d5d15ed66ac5a2d2043d00f43d0571d14cd082d559a0ff7c1742940e1b824342cfef0f1d355dde3d109b5a98d09b375204ce72a1ec6cb842235aa3e48a39ee0005798a324ec1b6a81df35a758bbe4da51e47750b8de4d715e87f2c6bf65061dbc65a007be7c35009842de99fa368fa405a4b37c62f60fbfb393d755760e295b51a19bddda031989ed99cd60c596c1fac2661b45d4ed15657ff340bf5a7bdca0b80ddf5c83f29beb1b7553d84ff95d59b6351c96cc19ebb1e4c1c6a0daab887911ed7ccf126085914b819f3abb52d9b9012a56fb4eeb2f67a9cab79cdce3334b10343e7f6d2452a242f5ac1032932fe0f383a09e980e56abb3c3619ba4421369a63767e3ec25b2ec8d0d10a7146384f9eac09de623e3b0f71b697e4b95a1a9b73092989f29b3746ca9d7eb1768d182b3bb701ac3989f337e3ead03e5229761e5d5167f887205e1891c91964a77ffbd7af5e8f0526bd43eab26ebd54b9a1420aa4bcbb5eee5d7e0a0ea9c4b8f58a59d8eef221ce8fcba93d8563e75d00d61257f492337c50ad36dd3d0bbe9fa6f866d46b4a18753690032455a5a233f277d4acd219ad00e80275469edb61b828309a18cedcbc20754604068f14b3ab90f5a735046ae7ffcd8434e334cc5530e74bc2b539b9568405bc7e9d4bff0d00ad3d07c37ad0b602eb27e6745e2a0110cdb7d0b39d8081632dc940f60c320343112aedd40c6944c047b1b09d9946f0400c74cab6e815be091fdef2a36da3710e5014a7a18b0f6cd8de50be2bad5ed15ca31c25904f4c72b140a93457cad99d60b43e020d2c0d70cda008f2d85c410875213a05bc6891a7dc501260de3ceab642d764235d09c504813a6b82fe8a0d355ba64ac6915847678a43239dae2e149d5cc582c5a18fac851b387b81b7f5a7529738cb4d7b95a4120ceb93ce9e27481c787823c0d28d5c3b3d340f9786eac1f05e3b93ddd063070bada6bcf2cbad4eb20bd183efcc8a64674e587d3f26c3980ad86e8f0c83c58685b046a506b8b63cefc899b24a09d4597dde71ea6c4008a423b2f057b30cdf7fd2040d54aa8c5e8f8e0e0e81a144607b2a28a84d891fccc650c9663631f3e66db1e4572516152c2a108906545b93c176efbf1786ed95273cf5c29eb76871d0454d142a1b22321c65b91181ae581baf2a3ae4d76ee5b002ecfeba82228c117309f47b9fa83605f12074b4585935e5a469766431d4932d5a010bfe4ec654cfccb377082b26b2b7bcba5cc8977214e50e3a4e2180f4d1d6ff6610367c490c58d47ca5eebd0561782c69d917d3acedc33fda8691187b04733041d1340f63c2c5a1e919882f9c9d883bca1fd067edf1d3e6a26930569487ffe338bf32139a7e8d932f719faf51d727911e0d6b15256aaf77b99c382346c2cfe4992bb71ec7a48b934b5aacb5a4898f4a4a18a7a48fa593d4b95edab790c782c07808b884878fa577b811ed0e8b35edd0b497ef279cc882ab1b67d5d06131130f7d8d8883fd42415fe69b35e3fabaa3a0a82a3f8320f9bf900469fe55f855cbd0f72644cedb2704452c1c2253df39198a3d0005899fce61595d43eb7bc8a9f6c0dd84c97886bbb902f61aa80a50fc5a069d2f96198ad8462d31e6362480bf0d6ae3a60e0c4451236386f4dd5c1c0a8ef32e56bc9bd19ee5cbbfa51654a5f612c7784cdd5af635e0196277c36dd0a560c86d062d0ddb6e031ffb65df852f04a7bbcf2f91e4db31943ad7cec002af6b77187a233635842e4d759846686328b33d42fe63fc7fd9119a40cda1f9eb4abdb461f97d587fc5e9ab6c04d551962bf95812d8087436d5bac1a2fa0c5e47b449c7021d93466002417ebf11dd231207206d721c0533159fb5678739c4ea131ff5eb9e4587c3a80a528027782e7bf1bceb398ea71311a378247c7ac3431e5ccb2c99d4b0f77eabc8e6d2e37c90f834dfedbaa25f0c0229a732d6271a128f3903265ffc1b06a4e2fa43b1bfa441159d4e8603e4defae991552cdca6d4751dfbf7dcd659442d8303e99ff3f3c52aff560a6588553c443087bd9067372f1ff44d1c1f684c6092f0c29100af33602df09075f515700bd39917c5ef685fd9d0dbb7245c1b3a0a43eebd8b818eb4cd05b1a1d92361aead3c4509a4e6d64c0dd230575319ad7862397b649d370ef3927147f75c35e1a5354042d13f79ef3ae0b4bbdb0be2f4e6082b4ceb529ff08faf6e31f3b194898843b12f2ad0931630b2f7e9b81ba9c96995c85089cfc435fe2042a5cc400ed74e9adbf104574badea8f42436580c2969b823a0ad544fa835033db2bf30877f64229fc6e6c95f225dd4a85d3aa49f857c33da5a1e5789ee01ec1543be08c1edf5359d3722f1006e6489d03f5196818625db0d5a7758536ee3301072b7488f3643751670b4a90a0dac9d8457658ba901d332de736f129b2e2d4d76381e30306da418cb256124a3dd01612afc8f071e21aa7c5cd32f5b913b8ca29d5778415896303489808a5ebb9d27ff37026d69e398adacddfc899c0436701405799c528e250efc646963ae1be03dd50267bdc712e55d0200e422d0b89aef5bf44015fa008d2c84a5d2985d0cfd18964907f9391ef30fbf102fafc2cd70a0d2a9427a64718f79a3b22982a97c6bb76ce527baf3f95b1c7d74da978c021bd94d06b3b7a02a928f70553ed4d5367ce7bd188b32aaca58f3bdf58212da62b356995269345ca5b39c8bb82b41d0d2465495d5568ace8276110bfc9b2fb94d0ee85d547d9fd27c94146fdd9913e49e9ea4712dcf246cd6808de287b9df1d618858ba0c9cba220528ea9187e74e91702ec66785e0648307dd8c32d6a7e57f5c1826622ea5a7cf1350569d8f4f1e20e092451508419994515d536feb7595c9bc6671f555a7440a0124c12e29e207cbd5f9d3d52fdb427363fbeb5539820ce4a440432efdf2e5defa7fca4227b10a3ec256d241051c335e4c3f2b06c94d790d1ab57341818650b2127b6c8a5b184261de07cba85d04ca45639e6b874f247f441e439e41c1747b9c24551552c0ce696d9e207f86202b621c0a6e6b5377c49c223df0ce5e870098df5b88878b495d204dfdd5a45373e6bf51720a9965bcef1022cf3464681b417d23d670c3191d54311bcc23b72951c0e0d6444adb7c38350439b0ec55f54100e739004a42ce819ad89dd142bd0bb73c8ed99d2cb16489fdf98b1549609dd7deb49545549a9200449fdcec00e8f0ce9abb770f52563db5b3990bef99dd10768fa22c33e68c2107c7d85cdd7a4ec009f03abc8504ca5f8a95d232f95a6afc844eff112f51b8a296e2051df43989881211bfb448777f6d46d06297dca26456a94a3bfc84b4940bf2b329529e9c9eef045eed3140602e173f418c571e259f8f23ba71c52c06b052182d72e4818b49c8acaecae55f60ae34bbd326d9639c082b088ce9d5af13b158cb791756a3f6821b15f73b2ae497d40578489ae99dac1efb952944f7ac62c9799f526c07b557a21d9943ed78f6ce280dc90355e092322fdf4cca04f1a5dbf7428a7e5a4d3050e1fa166a5e763176c814e8781ae529f870afa817969ae2b7a08a122eefa5a23d6ae35b468cb046a8785d7cdf4d77b18e3d0d070fa88487772fd4a9477dea4dd39aebe5dda3f379baf11d36684ef5b6003446f7d05f74c88516368cc7062b79da3db187cc1ca7a40f3aaec0be5d56b193eb8ee1c24b8eba680b17120aa36a7aa51a1d610b01bea9907454b131d8a86230e2c72e50a8c2044f18768b6d6d2d91bda086feade082e65bc54fb433f69cbe56cc314d786241306de988f495b46b4381ec2e7bff1f0fcd21924ea3344af4ae2da9a2597c76ea9d9127e68e665f53a56086003151bd4aedc41382c8b1e7d4b76c41d3f45135f9b7270e2d40d17dd10813c1c45075a74fd186967c56d6d5d8941f968404a45a4b7da2c5e7c49e9c11a732b2243d482945eacbfb622494eb6582c31d258a6ba698039c23572e8f563abf3e4a4059c25c6b9390d511cd1037d9bb52a3544c9c45862809b0519c72372e0efa356a68617a0c7dfec3b61907a83343afc2a43ab6e74fd5282efbc776200f1bc558658e0ab18d82fcd2e14bd071a1b6ce1e1ca3c695bc67c206c0cadd959b9e9671de0ca24325bc27c446c8cd559c23a21631c2134366059deca549204c2c43036066b7897260ca5de000d0db6426e659a942d633e3236866ed6acddf4b3486da51feab3311f2236c67236615506184785860e5859b7d215ad5ff4f8fe77770c43b46df55ccd22301fb12b43356bb10e83f423b851032f835c9944a22d56d00cb858326d2d907aef36386089d9955e7462f65ea221c726d38681b877a8c18196e6af72427196e8bdb34a7e651e99b6b49668c0165b03d286f98449ef42e306ac545f9924a196f8b36901b301b86d7442ff051b85c43bbb91e177c5af9a258fafc2c5625ac2aa466b101bd004ea2cc1ba11b8ea6b1ecba449ab1a1a3ab35e42cbea0b810c2c6715721ac3aac6d11093e991a963670c06d38a6d5c62de35ac3a00a0fab55635b66eddea667603dee37bf23f2094487071a4df60812a95fa6dd596d3d18e24989a72915a2682ee7c5ae546f622e8d1c446632f8403fb5b79c94ca78cc66f7fbd3bcad07a4e4b303476f7bb29033709b63606f354184baa220b5656a31116a58c810238f88aa35e9b8826287d797eee71c3953078bd713792de7c654e60557f7ee93fca8073813f127989c6fd72abbae78426c9c26b152c355f7aab79dc6963a86aee2ab234b1ba466ceec26881c2b3ddd60b3eaca68d4f682ee9da77265eb23d984f03682e179c9ff2a7fc642b4169d58ebec707f811e0533d99d48bba16538c5d6bafc08da8b816cbc26ca5d356f8828a9be2e359219e0e8a32a456e50b8a86ec89b7952adb067b36d7e457e616de38b1457e0f6f8969250f861ed639468a21109f139544e7ce29775fa690589ddda61204249087e5b7b4957183a5a35767d66a42ce0dd54ce71b3030825da0e76166072077c9feb885e89e4b5787e09d9ab0379ec399e7a7549752d55118ea98a4f5770c42e09693efdf16571b736e3373748ce91b7c44bbb3302cf7061a2624744d2f08ab0aabf1f6bae27473498a95e26188b90f1ef60d81aa64a45917a15e52992af684a996771b209513d5d2bb51680406dc99739526fc1a8c9141600fffbea74a5f552e4126a092a6fa525048fc004af2b6da9b5aa84e435d8cb1f2fc7292e1d275b22aa801a08e886d3dabba523a30bc780b44f2732ebec0242d73ae40f3923f4dc45a9aa0ba580566105ac5bac5623753c50dbd67351899d9edf1056ce3c879a758c5a41b702a9345835ace2835792d22591b85837ea82eecd0e443a75fd442088fb8b41a37ecd1ce0cb111486ce37ab0ae0cc8fe80256b07da0edb7e1b874d3e54c3825590c1688834e5b061aad0b8aec27bf344f4b109b5ee44f3a4d8f5c8b6d7cb27363089388f69c60c86ffe9388183332c554b263b81324e52db1d49d7a1952137a2617b7c29eda7c3c0828b2c8ec7101e4c002050107ca349f9470b31632e94331caab3423cfd962d1649a9780259d2f38f92da20f2b04e1d68143d6bf8ecaff9e7d12ed14878380758fbe717bca6b78a6183d9e300c33b568174d3247c04c1d1cec1ce12df0ce3aad3400f9244370c9fa9b3a3d2b46e3018e20e8d924dbbd6850db7b38586357a1246beb7d166b2d5088850b1d688ec7050bfa1767aefbe414ec365f02e302a86c3c726024267c661ce4a61b0dca000115a7400fd18c9a43fdc8f804e5c81ee50cb3f46ab66ec80339625d90514473770ed7d8babd628fb9118dd6579c39bf7c821c00a45ab971463d1fc3c0da2d54bfc1ecbefbeb30320211a9a7d229a0fe501e5d0be498ef032ee9bb46069c4395bc93edbf2f3b91c81b9edff2b47dbf51222483c577eb3e8c00dc114a96e00b90824bf49feae6f296de2b2cce410fba996606f2df72bfdc283edee15fa67143e21344ad10cfaa36aa0e653b52f6bf2d9dd0fdaf3f3e2a948a21c0384221553d16f960cad4fb3687d12e1c8cbc915f0c7e997c2019c4300b4c7469baca8ec3b04a3f5e788461b4ae816776f6c1f8599d66f7fa3b6d5eca4af7a58a9dacded102b43dac0ad05abd91a52f7df020fb8819a59eea405e8a7e372046b0d3edfdb936487d50c2d056a1c5f5f5042f3cc44237f58ae099ad9a034a5f4d1931da51f1f4a4de843f8f1afb4302a6c91c6dc10b308bcd5a69bb65465681bd983f9e1790be1193da551ce83270e63f2bedffd687caa70e21086a9979d211ac5cdb84793bc16aef2761f65651c26b1089c7e2fbe5ce45832b4074504d7860a8b89875b3755ff6b892399e19d0aa27d983708b6004beec4ae2bc2a1157478a21c43701f861ac344b1121224b099b74407b108f2d047c2353faa8265cf68c78ab120ee9984838fb837b8f79a3b984c0f4e42d57bf39b3e024369d83ffe2de80456c9d83074aa577ad76d693b431d925612d5488b00577086a99d1a36810a51cc67b69cf9a07e9e46377326466ab038c0d87cfe598900a95dd407451821e5ce4faaeb71bfb2339c134f71f67223feb52c5fb296b5c3566cb46886e5c058bf913caa5ef2cdc323f766792a5905addd569d55d72f6e2a2a9130f475848014038e85fb237f44f7e3ef96816e50e018c2f2bb50b702289427e3b33d20dbb93c17f56d74e95bb6f8aa619de2b8140bc25f415a6d660efd8ee3b24503115e87cbd3fd62d4d2eab3f9ad1915e6722bc1ba1cbe9c5cdb0af35ff138d80e4c80de751b1b47a4cd591af2b06725e2d53082c8dcbdeea243314254d6f854d3e4f54fc0c201fe31dd6b3ad7725db9ac193c6a81886ceb90e5a8ed7054872422fb7ad3fbe50ca102611daa78c2d4dc554cc0ce5cf8fa09920835e24abdabf3b087223d26aef5e387ad981d10c6f5958cfaa38127de48bbb7788bfdf5b396ebb7350a000a7bb38a9e7b881badcf3a43d864a5af7e654a2c6eea83c978c85e3011ffb3441db4f8a293cd80456bffe721d2208c2b4a2b9e38570442da708283230b86f32761b0942d2c3808fda774a234dbe8fe4dd5dd180a5282849893048d7fd80fca8b5e0d58595cc38382075fbe232f60bbbf256f0eed6c348bae2913438630a295f00920fb24cf03422247a669328ba7dd604e12b412bf29fc1fdd704be4e2e5d4e7ba5c9996a529d56277d0c01c6494aa1f58483e0033647408f81eb054ef1140bb4df3e047628c1270c060f6cf2d70ec68c581b2bd50510b0daeaf463b0ec8713f286e2392109af1164b2921684af17d4b36382d84801555069c71cf3ce7685a68761ed4093f5425404827495f147f0bc52b5fb3ad802e45715be7449f3a06ccfdd4258fbd8c632d25b872d8281b925969ede01c4dc690f9a720af696034646cdef9d3c67b6e494f1fcc00d9a1d27a99349cd60241d7fb5f6c3320d566ed81d72c1729825b0d3d168318d1388dcc33ba05df5b2a05db55346d1b939fdb2f271510a914db64cdf42000380930fc4658d2d2c3cc3d774f9456eda897d57589620a925793e8a74df871090464a781bb7814d7418f30c286fce21c15450731ce4646fad58c96a3ec03f421aa9b384274ba096d64a0e82662d78a4e7cc10303df40476511437014dce57c83231d0254f398f2661fa9558d6e4893707f77a1a20400f4c947d1bf34e6643407c5a58bae9ae180a6470f0cb88feaeb528c79dc25888d829b0b10228dd0161bef2b0353f15e6a05393edbb83ef4d2ef59c9faafd72fe3cc957bc9f512dd6bf60e88d71d04a08f6041feea29bdf7edb9092cb532e07862e76490b72e0e44e825200cdaaee3962aabfa9c581f7b45cdf20792bb3d75ed091b9e67bfec23333caec373a95357f64aa830c9c9c242878d802b9b2452bb473db5854adb81000719f52f112d4cf373d2c9ddbd0e9380341d31520bae1b06578cfbdfaff60bb2a2b205dc38883175269e9de9d6d19ec24575b5a77a8b29bfd8e7c1bfd06d146d5734e321cfef7e3d10a90d010e0867e8c61527381649e212184df8463c8f1e725c57cc5518988af71b97cfc19995d5c7cc8d58c7aa9a3c4a6dba47eff467159a1d9363c9dc62202e9b32728a94018b8cc8f81037c1e873cfac1c7412bc3dbfd7892b1fb1a5554d8459cab31c3949b07851897e7481efec871d8e106648f74d21d158a18886ab4e8b2a3b9acb09f471f1ed93c16ee00e13eb25c0bc855fa03e4650f872d680d26c2297ab42817c3a9e4262934efa48f2e6b5adfe115d5d9bf2bb52b917c79b9325af8081ad2710147d3c2068b6db4ea0e1e2a42c075478118453334133e0ee74a96e8010f0a0c254f765352e290d411651384f460e1dbfdaf112564e4e7dfabb49bee6a8a9097d735443d229d98b79a3327e9a1822f6fc480003e08515f45ea9d35b349cad83a487998b9d8a47f5f0634d97493d453ab8762be17ca1b18f64f313d311b200c273622ca60f12b480b541cdface6c3209025286d8c0acc7632ca16c7d02481ff01658f6baa30d2ec3b71ab61cf68b4bfa2032b94f5de21b46e313b7cb11548240ec90c193d432378543900d29a1fc2b91ae001c625f91229c81db8a7b33b5f524bada8bb86254213df243963de47c4cb8995d48d1a26b4a0df1893d074575c334438b77c2397aa5aa222a6bc38c4bcac2ec01b5b6afc2782a3343887949e43b833e542800b8e2b787db9d254e51e4a6ea7d26cd83a709fe654fdb55b7db01d605b1b5cd0ffa94a1808a3718d93e0a21990eac1e243cc97f43842d8a5365b68fb55aef5d237ca78137a4b2c90514c3f9f27fe747f28bb26d7f3f406ffa248ec39afc800c674c1243fc5623d37c144ad474201fa951aff56d8c59f3e79acafbf237034e411d065b142e5b56e951adb412086672995d24693e38370d03643152d101120f048e0650c456ddc1b7395d28bc9486dcc3e0b4330cbca5286c4cc4431dfce3806209bde50257d11341429e613b58c9bec386fc5d6ae626793adc8be74f8cc219d083679ca6fe63f0f4a912b89608bf8a30082ef52120d1e998f369e185d20a09f599033d01e6adf87fe985c1b8ee71bd2b54a14d24e44aa80a913f4c80d734be0c6432cbe93f84a7a96a67189a34fe11f3e8a78d4025c5cd64542efb53840d60132bb1037e68ccf5385915419d371b9c3159e1e92c94c3160a581400494c5812d1b54f6c24de74512988b4023e439ab006267f29b4c340510a499ab0390712e43f68d8516aaa4024da7e2b350960f1a6185ef8f801440727aea205dc77872a633066e5b771e3de039f0d3d5294c59f77c8909d4d2e729619c03ce5871910122990033a846cc184f78feb83a0a228c4061f330c7400780001ce74af8e379a1badbd1b655796a6712a9d53a6678f21a3c91272a46497ce4d459557f9b631ade8dbc5f1fb1ba8a3831ca83a09f087f9e6041105b0cd5ecbe3356acdcb5d6e0dd1cd424c08a8cff09217bf68ffdb29b60fc100d5410d8cc1fbb51254db770a6d1069b4d9f5f69ea3c9cd8a642ea18a42928691816bdd51a24f66b5ed06678de76b271041a453bf9753fd9c130b04f59c0f17429e58b11b1e948b3158683f665403216ebe1e1454b15a9b44ecb3883bb8153ab4e50776c3dde52f7804bfd884bad0cf670ee2cf6abf4f5e63d707111299ebd5467a8d85edc92ce72cb4199b02d16f11bd8a747fbe5077f81a6acddd6b7182de2cda1c353352079e1874988d5240ce37057c203aeb087183015e2026ef95818ed03fccc921361e036b9f75b0b6b5ee64c452c9411f5faf0b97ca2dfef250d3113ca83d754b628f5bf6229e92518d0a01ccc5a9b66b0b9f7810fb76141ea5fd44523e736561cfdad178c53fbd95218d1f7a029fa8201a1a5a1c1114f0399ab89dc082e0c02a5f2d25100b91a724d1c7c1cf532c2a5ab00b165a2e3d7204ad319e8aa6365840e21d89a39d683831fe8731f0d12e9b79307da1d02c90992879be453ff640344871409eb15e12f5115358d07b1b155a441c1606db6633e81d77dc3cb83fc32c7001edeac1cc0089fd3cf4276af82e8cbc8f5c94d9784ac97216f148d46cec6b212478aac2b408c35c9e70a4c6a87c07ab56fa3d62496e3c3a502fd2282db3f427b10439425c18060d50899c93253b6426eff68ce43a8439fd6a91eb68a18e8f354c991429c84787125148ee831b0375217cad2406646bb9fb703dd2fc3f56587c1af2bdb30ec806c049b8eff732ca2d967f50a7b0cef25c5c0bf14021e15d6ffef1016e341241f4788c5870c9b141eba546809eb6690b2006889ca54e6681de75c085a9f7b561ff4aa33639b9a3f7ae3c28aad40472ba1426b76dd13a253e33294b87f7601da57c4a01ff6f64938537e711118865f571465c847ce406a77bf98014486c1d7d467290ce5cd8482474f3ff2bc1e6b115054e7890248dfcff8ef8382042a7b71a98a759a153856391606515eeb8d5aa96570c8b97e0fa33168dd0287bd3207c890086b4d967220527b620df707280ab367d3dca3208827b832779d8b27092732c60234f177f62f96168988404fac46ecee534f68f0bf33e9b6d36a39cad5f6887d12d08a160af887f2b5f6e10a22b8b8a1c9fbaf36e801368d93f9b2283885674bd36b633152bef4fc35750529d70c910c7bc1aaab6cfea400f8b19fc4171bcd032d2bc13e2250acc8219ade5a530ee0274261a82112445107b761960c4cabeeabf850d4001d662844b293996207878b0ed16c13217f07f4d4afe854cd45c7717164c937d0ebaf8732d804a88228a6941a1c605022a72b6b711b234dd4d145f1f3aab0d3c38befa8f350ea0cf890fad9aefdd7c8da58f1ffbe42baa6ea5c4e0397cb370f9bc8a83ae120a7ea20f5af54639cc1463877d8102ac1a7582b20d0392aa5e3c0d50539214bad9bda8fca59427888536d466414ab1d2075cb533a0ebaec7cf941e8a63f0cada08189f9bcfe0478954b2395c8542a19604bce7750b42250e228d6c37ecb0f5a6a7a984419370a7344d8b49260c04dfb78ec9cea65f122ebe89af89e303c7257c723532223a08a008ab385e59174f04982201b52790152aca98109fd9d0ea61c95044b5fe404a775593a06226debfc7d225a4579e4cb491a274d0e73d4905128c3d260c6e91ab1a54b0b078bc143139b01b6c0798d1613af994c31ff9dfa2a041087a426f910dbe3d02839203661ebfb49d79710cb1f4bced3f2a696093811fa0c9eba30371e618a67fd5e92a574c570b488abbd0fb0ab7602c0ac252456b0dbe65c96064312776dfea70641f3e59557147c30193883be72941bd750a5f2c5251b74db864cbcfa9f360b65901e94e6a5897364c7ba04a753d7358b31cb4405e87c8ea9ccdf85be4e9f671540073195d71ba5dd0526fd2162e15561ce6c0051328c70f0521b2b1559a38d51c0352e4f774e69d2474601391a49a048b9fd0189cba1d03621de4234e661d7cec3287bccaa74e96b5e84e59cbbbfa8d9680dd66e61d9d59cbdae8dd62e1106699f726f22476492f73656cbe2ef380528707a672d40f2258ab4b4be529f080c7411a15aca78503923f3f362009bb76d658b75f5610fe8cc157eba9d46b3e10aab427bbb75905137f11066dce051a680ca9b842a10c3e4aca308e1788426346c32f162b6a05d6b0201c6da6b0cec2e2ab981af80ad0ff0c2628a2b643eefd465161388c34fbb45f0eb1ff9009d0abc425a8c6083677d5512e615d92e9e221c46e54c97664b8396e109f26aae1b668b157e1aa83fc9da88280c2914549c66542e83dd6748259c809dc28c8defb1df5466d84ca1923f4cb7738eaa06349947290daf8c580debe5f120ed3af2b45bbdc33ad785f1e01451ecfe858b8c0211968e3d094d636122fe06bdc8b66808410b36ceeb2d6ffc36cf5c5b11d4ba3d7063ba0024405f9307a1250d01b7d39059109755ee7066b9dcde768c37e2bedb73c361e0862614127a88d99305224521167c01d9a78030c2fd511fcb2115e8371575cfa2fc747832f35b2d0fb54d5f6ace6f4d5aea6a59e95315a585c0efa598185dc5ce45b910f1a01e6ead0005ca1c820e6ac1256641a7151df683b0cb9f52d9f8741f09b23b3e50b621830c8730d2e9182734e0f13015a145c541707c7a5cb0e8c5d30e1a4de863bb8a3252f0e902d5866127edb559a034fa5ea891b483699c750eeb5559cef67bc499b18c49998d84463f22fc1b5756891ba3289ab09747ce2da4c38b8d2286ea80f94f73c493d4482259052df7aa36cca025f10402502e927079952c0a620d7cb33d0bad088dc3f4f005af96a136e019094f400d10090cacabe6185a1e424dd602c39ed21faca99b0eb2e6762b7971c1e4da1f8bb341c3a47be6c61339d42854cbce0fffe8173b640fb978928bca4753f158b186be049240f112c78274871fa696439bb6e4effb1c18eca1145b2ad48c205deb2a3b7c00fce8b1cdbf827c602d4f2a40e8015df18ab50f879db8cf687ddae41a796ecfd2331765663ee8d3215522affba6ed6a5379e7497f5b28bf68d1ab775fc944d17c15df4c5104f89184954ce9e741b8b1dc66a903891cf309b2e90b9319675b8a3aee4427ac2fff8ba82d01da260ae1c3322a5c24083f863c2ff9d89f59d83479408823333deabac091cb569922d140d690a69ac19e324a149897017c0a2668ae3023bca1e439fed7383475ff0a7011bdca81fc40133dc9ab4bc796eebfc95a4bf1726197ffffe2c2c6c4d23c2f42282f4d211617f1412415fdeea832f28f8fda444ea4ce4fb856d7030ea50d3074d5ae4a015cd621ea081fc6088a2084668c3e7c8219dc0262aea66c6de2cada1a2163954e74349a8876c1d0af6896990a334dc195167637c7818cec0c41c644bc83e0ca51342617437a6fb113b20fddbce1ebcf042c5e5c036044b60cc6d3aea0d474f76fe169f150272f8de561587b9fc7fb48f8c713ae7c78f25466b6202df83036fcc0830f33e3968a7bbe5df4642ac0de86764755e3f81f440c692285f58b91765136be9d0ba7f2a2fa492c559250e10da0d3ea347435cd67691f0ed1c22e00e19e8b36a2689e8c4707784f7e6f19acb9d2ad3dba7494180965ff0e47e3a0a07e06e9a1bff314e695344aacc8c7bb3b5a87aeed0d9e3cfa383634eda9f60c78d969b376e71adabb4f0fe075679f75022b244bfd429015b42486283ce1905fce329606a2181cb06a296d206dcf804d8b429832e7743eb6bb1c8b5c01b1e6f6276a752ce6fdef6830e4d77179a0dcc9644f78a7d69b3450b112d60ed33c08c0128b4352714a41df017680f554ec28413c51eb4d401b97cfd1ba468cf9759678be62c65f0bcd6e6d128f0a900cb0bd51f19eded7171b683a0678e8370ec20ff0a29cbe9066745350cd378fce63a6d4e401d2e75afcc1c6d2cc58313531ebb87ef93fd789380246cb2a82803de8194f61c1a3c1088cecbe2ff83855f013e227e1ae89db3503b35200f60376cc294484d099d392b46e37f72e71016e2a7be87055ecdc9c1a02462ba0e8c88da3f4e9f0cd243a4fac96e7bffbba3eac02bfe6a2ab368f6fc3666ea0d9b9f4a514af305bf4fb75c7db3af582da524cbef0ac40cb822ee8daa3234031cb03baeea23126a31d043121f5023bb631af58202acc608d9db8489a4d0327609a65460d6d00b6a45953d9e72005f67241c7a8805864ba1253bf2919007123898a10be91d6683de8015eb0feed91eb001603d5d9ff6b6ab000acf1cf1404b5f9daec45b283d203c9b03bf1a76b34a7dccfdacf7b78914a1688ebc39d010744e43527dbf6800073d098982de97c3cc4df1c8af60874614d0e7e13bcdc044705f1261273571a83b0bd3a71ec251e1cffb24a46860f81da289adcd68ae6a8e12a7589c68d45d2f9e83b5f885cd2348d7066406eb3b0ec9bdc6fb865e90ecc59a7ca05cc91543765ce0d1fa1c2f6aca2ed506fab538c04f581c95bd63a899bdb9faac0015ae623628171e8ace8dbe13ae46f611abe4840d322f39af939791739210c649f90f43ebc3b7c861424a84b12c112a02acbed73d33722b12cadd7cad4ba62c14cde4f29013bbc73bc88507e75e402c7663e6805a4e9ca4ef9d74d65c744f08b00ab508753daa2dbd3439f6ea69755e141622cc604af80980747d3c3e8a158dfb404b0e694957fc938cb7fed9eb5b8f8ab5071e73ff545e7fc11c107d905988c60e04898528aa6524ce7ce5aa0559e7f1cfed9d161520bd352d4412112a97312cc52dd37016f43b57d5e53ac4612059fb6a76e4619258622442cb69efa8db2fcda249678f5d4f81dcf4e05e5c21d31f287e9c87244993297b51b86b2447846ff65bfd239a06fc2dcd7713880c2a3ac276426c36533f2523877bf7413c1dc2bded44e54b2b686f78db881f6ef292ed1f02f8607e441c300a4b1657eb98d83da0b511b25abaf08b4eda70728f58ca84b39a7eff71b487adb0615b4173328e4cc0b7651a7ca72b8cfad41a3eb3fd618fd064f6d31ab6db46a155f42cf7e91ed48b46304483fddac426ceed31ecd5efdbd879f07bd693c06967a31246606b383c04d49b669b0e37b2e815c64bf31836fca16619419648b9809af00968b40b28a6469f2218dde6856d38ba77608f2cc986c3b99d98c71b72baa2742e83e0f11bd38b497721c273de0a2bcad5257e50810321566d7ae9731656a6abe57cbe9f1f8209202248a92ca8a860e5e14a81e45513e14ab4c0b1a65712053269cffaa95c43203c93e4e7d0ea8ddb71c212106ccd951b2d8879afb469fe45130d5daa335ad171fe49cb811f8475a06e652c96c1bfca836ef6fa1585d623c30c8392638775f193795ce827b08ff3cd4cf40ab32c47e745843cc395a172aaf6fbf1a7413d58206690f379242e8bc3788e607a621ae8c731c17aea2426ae5cb47f7e9dfa6456fa70ea52e9478ec82b96e4127829a15b04eed7c890dcd9d53cc2455a954b5989c92bf4cdb3fac518e2ad58a6c72517a6dd10fcc8bc04275c093f56ca1c8995e61f1d617c2abec0d144f0bcda924330157585478da6c04121e6b8fa653a4fc44d86f0ec2835b91789e61560394346dbb7e174e607d3831d55890399e7b64a84d37926f37fbe9e6c907d0fe9b0a25a627768fc2a2de277905a3b2b468754c28a749615edfe201ce330314c8bf546b749199fd2bbbac49cec090248b3955ab164c93ea016bb2bd14fdec6c58a7c67aa226639c6d3208e08642a0578013062bbab8171038b31fee8e4497f9f777aca10426bc32e919d8d2399714b2f5a564c82b3af4e3d01e9d1859195a6048282c9883fd8f80ce95576bb34ee1c0d298f7235e083ea85a736cbe0d558572f3cf11f5ec6a2848029538ea22cf4397e7c5b1faca8d2bb69fd2b1a9565ec23c80c855580e929219425824a792d6a9c444ea74b250c5c9c5c14323ce47d73c23d33be519076cc554e4c455270db16827d1c40827f73a1fed3baac7c5712ec1372760e814da0b90ccb9a779fa3b35ab50ee6379fcac5d5c357b5066383a721e6bc41b9b36faa2254748f29b9f41b053b38f48d0f7f680ef1ae5f4a2af055fed7f1cf82ae609fe831a1e881db741ba1ce3bc4f0fb9098cec9d133f5e55e7701cc878b456e5c5228684f059e00e2306fd5afb65cb583bfad9653a513c4653c84818508372d66ffc9d3a47466dc9c8de37ef9b0c805b5eb6082a8af179915cf6fa61d524aedd3d12c8ad103ae66b93f6a8a72504b104257ac2b284808992b5fe3cce109b3551c1e1d6c649145f4cd3901642b52f6548b05cc853532a227ac4899175912283c728779cac8569c2fe508ad7c4a37f69ad2d7d177434003ffd6fa6973807d90cb29895a98a7ec45f55beb94a4e53e8a3b19a2838526dbdafa40a5fbd8e64e79825a05e2a2ac6780d8a7607a1d2d561b5cc9268b9fe2a30b18a33fde940c093492a61c060e4a0ce4ac6a98c7053c375791b76cd3f4bc4334ef1fb326c1eda1fbe83cba8ffe47ffa27be81ef487ce41ffa33fe87ff48fde47f7a3bbe83f74e7e865cce871cc54959aa80b105a70eec0e19aa413580174ee3b9a8cd35144dce3be1d1daaff2864a660a1b39de04a907b0124a471515f393b282aa4848011ea015ceaf85fcde2d02825060b31b3b848991e14cd01befc09df42027ad21a53e190ecfa5df27a5c517a103bc3848c10b6245006ddd30c2f7a122ae4599d3ed26b308c4ca581794db8f208bb1d7bb8e07bb7c3d523d889aaee5836420ea548bdc92630bf7d2544e73746090425027ab9895c6150d019710e158cde6e1897bc9cab7facfba5769e807d575b6d0d41a228306d611582ff37bec954781f5d48772087660341f4bac2310c813006b0c80500930a196d3031809da5c002970f5a6c8229da22806abb77afd6480a5a5ab2724b99929401a905d005e905d6e66d7a04069ecf631ce16119644af4c46880c416378dd180053d90e22fc73305d6216d60717e837b1a1b5afbdbf4880d376c9346089867b0d6f2808107bf606d26611072e485275bdcf4480f571310733e9e607f134ec03d60c0e13acff81c974d9a1aaec33c0718c26d871bfc50e2a344ce108ec0c0830fc771dc0a1cc7f110d91c973b156e856ed3233604e962008a1f20c19d330c4a460300e839c2071a841011830f72ac109c38a2811fd4c063886d0a90e737acb5cfdda0202f2e71d6ddddddadb5d6babbbbdfb0ef71476e00c25acc4287046c1070bc035bcf73f2e3b35fdaacb51873d65a8b8403db5a8cf15b6badb5d662fb389cd4f08d681dcc490ca028cb5aa0b1d071ffdc9d62fc153a68332841d22307a20a0ece05e10de190b54063a1050e638c31f62c0db51f0eb0a8e0e18116912738f890bd880841ffefbdf7efbd7c20536a707e8c48fc81570f71c4016b81c6420bf806cfc2e03d1521944f87cdc17bcfe679468070128a353860111f0d2e4b0034ec8007100df0106245c506564bc030b4840a9610411b280f8ac841032cd70e2d0042108a2cd182308a22a075afb45d4f06e23c190fdcbd383c25180b11eaae97031d5c0f8bebd8841354e0ee0e8c31e60148c7d1d4e0581f2b32dc7600c1aba6830f4048220a25a010c5401a9ed0623934d1048a0edc8260c30defa560a5724da0510176820a9ef718638c84cde15eefa910afc581317e106700631914b131f638cf848f42748c6918e31d18dff206025690793830c618e31b3a3a2c03c6182bd1b3f10dcc5d2544ef1b4bc006817bad8ebfc1d171426e41acb85e71b440692c581d311408115dc7eb1530f0a2e6020c9ce005268861079fe2480d3c36d681c325e028d98d1510b0000b6e0a8b2208cf7118f9c16ee143cf901bb00003499cb4c0043e78f0c30d84e021e20329b689c34feb0911ac6010e4f36ea0b4251d70228a1d7000035b0f8a2c71db99bb2a78d3233e7cb07fd3233c527c144bbee5c9f69dedf9962e4b96ac7260d988823188ede36bc992d565f234f2da0ee720f5e3eef771dcff97ffe3b88fe3b07d105f8c31f53cafeb3a4ed70fbcf639ef87b01ce7db6a1f30631da4e6d79dde09c2812008729ce5dec7beb5e0b5cfdddfaf7dc0dce955ce012d06c33004b3b517ecc01b8aaa50547d9ce75d6bffefe3c7175feef33a6e572cfe7f5b06f91df6c1f91355d7038f3b8cffdaeff6bd5d782d4b084010a4ffff5febd7ff5abdbefdffffaff5ebffd7affffffff5ff43fbf6ffffffebffffffd76badb5f9daafcf71aa6a6dae6fffffffffbfa4d984776de6a0a020401e8acc60063f8325acedf5c6ead4172ae96fb84dfaf183031e2899d82038db75c99922aa72a4f0e80079b389a734b11c55979c2a40e86e48d2c1922489a16db738ffd73a62597517d6186bb96d6fb939caef689cfd7f39cee88c8f48b8b0c6990bab62d9be7a1c5f3be6364854ed833447d7bea36bdbffd2c4b41a54975d4b92cef8381b6918616ee3a36bd31931349ba8cbd8ecbafbd92455d0c50c903883ffb321ecf7e9bbafde0902caba9bb111e44703394e54023ae320188888a3623ea4a80416b45fb6d9b3a80474c6679945a16d8d22eb3a1c564dbfeff33cafea0a82e0f771f913555c1238537f1da4e61b86a1b51c8771c620189d714e7f4cbeda0e34b73141b0ed322650666e83b3679427dcc6cc81b367108ccea01de65448dd731a04fb94e79b41301011bfb9657d20485114bd8c71872f8dda2c8aaa1cf6dc60162950abd987b0e7fe6aadb5d25a4bb302e7aee6d776d78907f072beecaaf819eef19b2f3f26ee89aaaefc68404814d96f14f0cbe36cbb1872dfc6dac7cb32489cdfb5cdb77deaa3755df66cfba3a1c840309c7f0682611174d219cf20188aec6fbc5c4b190826fb5415a48922c3557b1dde5de8f399d357e79c7adbe6e7e5409a28321499a3627f43c642d97647916dcfffd9f78a227255dcb2019036b1bd8d498d098dacd5ba7736fcef7c2567920a490cb01374cb2b00bac5d562944d6fc55a9564ba14fb94c35e2e128905894662426a525a89a410d9c631d60afd382ad41a69a66c8eb456a885ea69b55240221b0d5d927dca63306c84422a24126985e846821e9d3b231d9128d6a2dd942c006d6ae568d3362100a91fced2ad7473a17d6c6419edc3c16c702050fe6cc466d8b0816aa1e9c61adc32dac74676a17d38329be1ebf6846527259be2cda4f3a9d6a7563c443166a3854c2ad542260543d3ed42e78d3577a3776cd8a881aa81c2c1c1c1c1e14a2881050b199ffa948cd24d46a6a15b609ff2970b460b196098cdf04563d244cca6785b895e68d1cd515eba7d4a64a33350a15cbafd0d973dd412d94436940c6d4a651939d453aaf9d4a76a60b8d03e5c96d13e35b98578db3ed22a2cd45ab139caf38d5e91c2579e38aacaf6974d91edfcd4481b69a55b0c532ad7e4500f8c6c7a914da2eac5df7b6fbdf7d67b61e4a7c93032155534d9047721d322f637225b6c7b2601862e3d7194e717daa463da11d944361765e9f6228d30c2082b2b3333332c2c32da0700b9854e6500e4504faa0cb544b6d293d2ad74436114f72268b354db9e63b4f9464c12469ba89750cb1cb9b667adcd9211f385b8886c28166dfa6ac524b2916c2f64a4cd2cb2d1a8886c6649c8f60c2add48b374eb364ae956baadd85a4c80daab6d966ea59b4eb516f0170b54176c4a4e7d6b6f3caae220a7596cd21e59d15e61f3d7fc297b434eabecd006ed944d6ef00b393d6e3044d9e20e37b8bf0da684d8db600a080a398db90daa802b40d1082481a612cacd949bc0a533f65260d76cebff7f13963ba2f53c39f0e9dbfa8df378cab3ea4d174e1d5a3368c4f8812191e1c8b0b999c1b8793d6a58278be7ac69b98dc7d281da783e42570843426dc2212e58cc7377fb9bb1f63d2a8d7108d5856718e54d97ca6aabb9ceed75abb4f7a9b399e779356a3ca9468d991a353cef3b8188aa920425294aa18dce946a3c274be7f629cf249959af56ad86a36b8e0c5d65b1570c47d39cd0e6840863994c2ba3d8a7603fad93355ab986c05842b0102d14a3a1abebe7f573b2ced18a5523c2449ffa7aa1a09c48ce91759eb40f479bd1192f95bcd7a75cb61a6de61a0273b15c67ad46e4eaf1447292ac126ab4590925e49a1c0e81c558aeb3562377481d18a90323e2372620277922395358270ddd3243b7cc5a643e58a7ebc7c6740e819daed80fab5683c51c1582c168a4ce49eac04230ddd36aa59c484e10abc656a385434627ebd5aad560a7eb6f481d970c6d827dca33ce0da943dac4287505e2283f4fd089e40c9d35b49a21b01a6d3a5fad5aadea4880de6a422396e6740d85449fbaaa89b5603f35959ad2743271b2808396a3851f6a10d0f1836d0108f861363a8d561889377e90914042c69adbe1720c39872b83c0b859e7cf30b42e6fa6bbc4216fa9eb5e21aa4007704b199288fa0185f33e343404f8fde2c5832c58b0f83f6933d910d8cf88757a0cd379d6581d095834d839628d589a058bb389b3542afd8f58b1ed21588df56ac16027137806d352c914ca2053d9641255f81f9b6a7f33628d35f245b680b04c5d09f2fb905ea495151696b38993480b8c0563f1f88d0948cbd9c4e9a2f3bddab482c160321c9c2c160bc6629d2cd60cce93759e4a9ca71509d039cf99ff9d87af7ef055ab7e093ce03087b92372ea0b38a733d11ccff11797f34e5eaf32c85aa0b1d0714fbb7706b2071ca458b2f3e355c4ef58400d1700c1131d7cf03851a4c33cb1aff7046b04769af7f946f9268d8d3d068ee0c18f1026b0810f3a22f8175837d62cbb0c3b6c3fe0c010331c41448ebd00ab07d2878cd2700d4e58afb29aefd1a4871f3b6a3c4888a0e7756ab8dee11a6cdd3501939b1ed9c0aa0848e33d5a6e3b1a8cb1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb3b08700f77efbdf75e7c6df78ae0963ffed6d6e0600e7318c4f7de7befc5d776ef08fcedab003b41858b31c618df7b31c61823e0e2cbf5e018861f6350c7df80e58d7befbdf706ced7bf1e24f0ce56fcad486882070c4ee0d2416b09af82062436f63a1df8c88e1ee74a5b339e5ff4a9e6a8539393ed745ab98d7982e274739b276ef3923dc7e8b80d4cf61cb373ca30d9f3090a3a838ea71e59238fa33c94cd96954a36f56ce471f103f6b8eaca71e5a267e30a54db9e575a56a559da09e930d9666947cf5a562a2ae32a54da61b1a1b6d9b2d233d0cdfe84666967e5d9bb302e8344a8552bc532f21351460ff4f4055b5d10358baa8fd25a5ffcb2bbcaaabca8a2e5ca936206bff08a5f2639f1cb32485254e5b8a28a9694e65f42529076d68a2ad07eb95b01e919a4d5df5e0e6394ba4150f4f4a3e8203883a2a61b74d305154fb9bd21187af4136b7d11cce058398e1355d482c2ce835814bd13c403bfef135516d47553af6e19a4b7c25ec6a29882a6de0d5245cb8a29a5d4524a2da562c6dacc218a443083a4d0d316e6697093da67fcd458f24cdd065742bc4950573ac36d52fb8479f4185f58628c3951059a0274033dd109ad6e26688aed2b1e21568807cb4053d0192432b7c00f04c1d143f1c0514ce1db367fbaee6e05e4cab625d832c7d67eb055b70d85be1c12551fc62e03ac02dd74e8d3211e21960a48136cadb69ba0db6eb94d8fdb70d97b00dde80c6a35b8298c473ff1bdaea0e0acc35d4a01018993d80ec0d93fd75c865afeddb20546929034ddd9395e3b382dc9ed8e8f27b556f79eee080f8fb5f65e14709b1eb1c1878708b7031ee191e14d8ff0c4aab7498e721e5ed5df92bcaeeb84dca07077f7bc5867373d7203101ff87d459070c0fef8368539a981e3382e0c9dc4d0755d278a4e6e769c82448ee339e48713ac150e2f1790292489635d48440a282585f401140281ec076ee4685323af1f21955068866f28b2040ca491570f95152a2a3607ab43320204152b442b56d86c4596a081b5fd74468070221a8944a14d8b2ca182a7754b466128140a8d46b60e16c5122470934a2c5884b52ba2841290ac642a95363582871c6ccf614808d38ac9146e6a040f3d08c94d8de84187ce163382872a6229e85961591159c27ae98cedf62fda6ff35a770784a58585c5f6a281099b438ea560d5e2d2d2e2a4066e3a044811336ed3213f4e4b854b0893218a4dca61d5be294c06279bd400ebe222aa2e9da1b96a4b6768f96d3a04888c6607ab9a43069014e624b6cd6d76a628c01cb2b0b0b0e42c5242872e2e2e2e5aafd854c82d8832d45aebb274328ba14008a574869623ec0053a04e7eb6196eb7a1fa568372068d1801c091f10286cd8d0b1b332f352d4828cbb22c7d15734ac904c0c649a626e6d4755d8d1a4faa51c3c54baef112737a294dab1b1b182f5c9c646a744a8a06d5fc7c2a142a714ada0d56a14b2715439bc99c76ace8acb064d35bbd5c276bb412dd44398b5a42ae90ece5a8201ce5e242a31cd5d49462a9f4528eca19314c26efa74522d5944a2fe5a82c01c60b99d34b2e21d790482c5a3c1c552ad5bcc8c4d09811e3a42203e7c606c60b172b5688ce9d54392a5f6260bc707192a9494901d5ccf0388ae5a850689481736313e325a57d6a724c8b4ce67402d245be569f7a51d6d494a718ed53935332a3eb74141047d59c625e5e4e312f4660329aee54cc8936d219a1e491a81ae9702494b966125e685e5e6868328c172e644e34332d506549a34d2f99e6e56584979711645231da67847c1ac1f4f329172f7984179916b924aa5adc7b6fbdf7d67b650090655231a7191996a3785231da07954fa8d2f492512fa698d34b16e12546fbc0e4134c697ac9302f65a9b34b0bcb8aa9c4823412ad500981526856662c31e8d4e044e9d03a4115801f1560486439029841c3841d23df9b7d456d70f2cdcec379a88d4dbef8242165c3e645be7985dad0948042a15036f44e1099162e60e8ec58b55c2750217c89b798921ab516306cc8b4f03c2f85149e94420a3152d0a6544ec19369517a922a4b37171333594c2485e826b2d1669f721142211144a2588eae390240e5a064ad92ac14d3ba1cfd8c5aa3d548477413d944b5524c4ce965c5b902c88a1e98502b040bfd847a389d54a21a9d81caa1d6dfd840c9a6c86603057bd119cff93b59367a461205590cf642a134a5320ad9c6ca0a0ba9466a4292a285f5c4c56564922a47da480bf5503205868c4ab7044a942851a2448912254a64a0b37d059bfe0b069bfeccd5e52e43a0db9f1713bd8cc5ef32d7c54819699669a81777b3b95c1ccbc59d2eaee5e27e5c9ccbf592fd0daee1da0cd768b856c3351baedd3cdff36fba56ebb65af7a7d57ab560ad6d697fd3cdbcae46da48f6967550abd96575ee2c188bc5f2629f729a16eacc2cd2ca8be1d2fc1b8994f3eb08b2cb5c06396d72b7ee5bd8b5bdba70cd718d73576bfbb7ee0d36db6ebb9985f9657d5d79b1eda617f39c4e93cc2ea7d326097b2839a19e7d2f84e77f3de6baaf8b40b7bbecc5fee65f1ff3f4bf48afef8676a08186196658ad5e869781524a29a5948ef4fb0c8e94d25a6ba595524a4b514529adb5565a29a5f40970647525427e0c9b4e218322429ac8400f4a80c30a6a6d7041044dece0816703170842081e865a13ee5a2331b861ef002960a90321536bad3960b6b528194fd9f01f75696856f6cd2af40667cce66f91c608daa0e49b437ac3651a94de09124ac9a076408640b75532cedfa810c3d15705a23ba47db88c92a259f094e7510174c67302a80bcf2a3a02dd0695054080b8008d0305dfa0b24342fc445d4595a86bd771dd0aa913f57b1ef6543c9114b5ef51fbacba9c1d2e555451c5107472b81cd23e6406ed70b1a590e50e497ea2ea1b731573cddf585247a1e44f54a1a0749f38805b86b60175fb70e5f7206b0641ce82d713aba56fefee4a199cfd1f860130fb963667cf02d5057b412240d08b482289248ee07004c388e0ce51d5931c80e6e02ef42424cdf7d5388dcacb0aacf6a780748b2343614948cfa168002f4551e5eeeeeeeeeeee24947074d2dd3d542149fb2449925ee98862bab0299dc11cc617db775c31c6231b403ac41043147981d2ce86a45addfdada540cd9e43d893cc40fcffbdf7fefdbf1e06f1e579deea85a0d6774fe276d502d084c2adb99696ce54cfbf5df04a80d70e3a587743c702223a223a223a211d8cac99f2482289243a167438842433a364b667d297a6f5b024bb5da120bfd66add6badb5d65a6b4ceaffffffffff37b9f7dadb4ace241592ca0ac9855cb5b5d65a6bfdfab5628c45d5d7afb5d65abfd6aeeb44d5575b6badb5d6afd5abb5d65a2b49bbcf938455547dfdffcfd693d49741aad4fbffffffff7f3f85ba49924c494991415ad0ffffffffbfad5f6bae2e4892d436cd4f233b9a6de5682dcd67b269bed7725c67438cc3959c492495aebabb53a7302854ce2b244a29a5d4518e8d20bd34c32449928c9ec4b08220e9be5da6389739dcb59674c6ca76cf93902ae7cb20479e930708cb59ee3cac33d483ebfbe9f9e9e9a15566f079fcb378f0586b552c238fb22c4b7d79588c3de30f38b64620756c8d40c69ef184c920c72521513258bb4a1f05646b826df7de7befbdf796a026202940354e5481a450816e1864bb01aa7d6ae419cf9185314aa9eb065974dd208cae5b4481cbb8ebf2ec07954d7b8ad0813add188397d9b431d9ec76974d7277bb2b8966b3edd92cede86cdf5d47922452ce2cd944ed52a6ce924d9a5d3295acf2fc9423b1575a568ef26bb7eb87442291489b9447a7269eba3b415efe6793d914cd5a7e5a5a9f6a496959a564ea2dab143d03c1106b13fc42165d77e9e24b06c11046d7cd52663084d1748b6506c590a4ab2721cd96d5d64c744d3f51698ef20c53668c31c625c6b8c4b8cc30da2c4bfd84a35c33f9c41b22d9a7585a74dd5d4792a48d8292cdbc43319ba2d9137b054a041dfaf91449d3cd9d8270d409464f2f3a73727dcaf5139ae692a9a867a5ce3946d31c94a63957e3bdb347590418ad673742e7a75c93a47b2d4bee44150b0c4c9961740e2aaa7079b239ca4f4d4a7daa9530e54b2e59b45cfd2bb259dad9a7a362f4c80a4351158aaa53599a1270edd26540bee412145527286896eda8042a740a5ae9664602000a93180000c2301849922088621cd1343e14800f5d845a5a5a4015c7a2911846611445410c84308c410001628831cc2853443900adbb6e29329602079a7489b895c278cc307ce15ce83422d7bee3829106c63859a4041bfbb169cb68ee37c60367234890f1209b34b01fd808e0f61d59c37cccf52327627e723e185446d5df9803afea371eba4c38b7e2364fc1bbdc2ebcc61fd891f3afa78c7720b2c5753cea2f1f3556350345c681c8de63002218fdb7fe55d6981ed9e7ef01e65ffefe932ec502acf9e4d51f24f3a6106cd65b45b472c8062cbbf14496cb24e2a62a36cfccd1553340d5e2e8d4cd4cdfa3f20cf9fed068706e22030ccb6baf09a45d436c910658c318e2cbdd72e5ba731b9952ccdd92e5764fe27907150acd22b2f8f6124d01fad5f21f6222301f2ea2e50a7351510f5163587c151bf958a13faecd1033ab3d0263e112ce3a523f5bc709ee2b7be2df20270e18ce1f4405521cb794810b6dd6e15a4ea690768c886953f23ab66648a011e68a04d9336d452e071031b621df7088e14e3e958c917c03a4c464a1dd75a402a41f3ad476ecbb0a724c5995fe4a9de531010accae56a999f0e46cbda1dca34d4b9449babafc25b7c2a567a0d2e4757a7e69e4d17f66a1fa4d51e6befad047dff959129c33aec03304b6a7b5261ea904396193e211eec734ccacd89e2e176d6f3b00ddc047a4d0f1db2bf8731a6b7ba9db5adf722ca1ff07cbf2f68ee7df552c6b2aaf457d7831e1af1ed96d2fe4a392c26754e1e9f6b6f4fec5ca83404127eb94dbfb5dabeb4f7ddda9c8fba25eb9061af48b86163d48e5f9d3f8caea58ddbdaf66d2b81244f8551e38ff6dfe2a3f861543d7eb03a1a619b0468b27b00a01ea6b27af23f730e382d8b067d3ff3dc62b82c8ebc00b1023652144c4724643178787fb86e5e3fa29a5edd9d061b37d4dc1002c7490d184de952a86c735119c2cc679a1d831fa9b20dd1fa25fbc1574cd1635c266ed0b4f85c4dc22cf746c0d002a75e4c8366f59954c1d7e8a133ff3e9996813ff556f5a4975b09016105112f8b9946973c8ab340bb96490d87aafc2685a54041080301c31ef1bf4e83a29931a025a687d50c61caf368697be51b35b3eafb8a0a895f9c19e99c5bc1819ebb24acc7058aadd1f25d30e627ef5cdcdb5602904ba591d21f865de961cf47ffa5edfacf1bb42ce3c1a85700b0dcf3d11e7fa26c84d74caed4c77cf341d53f6fbda6897d81cbd1e1f82fe73b9780125bcce718b47b4b009e512d8afb4eff16b9934e757a92cd46f9de19647301d911eb5299c1846099e78a984b220ba9e6dd24fde9084a62955b9f61cee46468bb7a96085351e185f322e465502000772bbb29846263fd6ce113d410d25f7b2b13adb8c12525392ad08bb444dc81d2b91d7d597f3f16e81187afd799c44fda11c616b3b631d6673b5e353afd2d3a99736814b9e68802d4f3e7e3ddb8908aeabcf2c7abf230992016101335e8f7a91e65afcd22e1f6fe07fb8e4415c568ffa81e2e5b95b94f1e8446c9936716739cf39163bc6aaa41ba7c668cd279abdeca218355c5a2b0da87d488fd4f1f9b436b416099a488e16ae4fbb817bbfabe0a2ebbacd2f5b0d9204f78fa429da12336b46207d02706922f4a55e80a5d47046dc4430ccd08e5c3874cc477d80e22b2f949a67c7b7d97a3af1164274658aa2da00bc8010b0f54d330d5fcdeae9d4e5104f406192b63f539a2927964a1f35c86378b4d933a45e54c22e2924970f63a9de64d0c544b84b6f6d9e5eae83216e31d8ba479fe4af404703ceeabaf0bfac144f9f404bad6809297fd2ea4c17421571ed575007cab2ff020c1d2c172758c2b20b7bcbb1512383565c18aa598722e8232e189402ba54131ef30dc0784e1c835b01f7ba94584b1f8836c308c6934621b5e30a6f90835a0c19b4fd36bacabdce5116fca39de9199687f5cca4ff12f96a3afc6795927508f6fcb20c53ba89387476828027714609a66587e29a52c2f1d239de900b3d354c65dd87759bbaea9b19e9d3117b1f320403cf04cc591eb74636ccd83fbf2e35f6272dd43be8acd3bdadc80c819e9e16cc0dc00bb653d889db56c9fea6f4eada487d804fbb19adda5f76049a0b2844ad06eb0a566622937bc09214f92c8bbba6d6ed9e75cdb8126dc37805e7c6e5f730398bb5f665638193dac536a851e7d10acba7eb6da67278f73d4ca4217826f4de039df0ece26aee8f58c322d0ee38a543d5ffa746ff0962b379b293189aea58b0e88414676796ce243094aa6491cabdaf17f65dc79a33b35ac8a8aab89a3b264c7414835c3c7cb97cfc3420a6afd427e8ced5a0349518d1458274e2249b172dfde76dff5d844478a815d8e7ff5087af79ab982af89538979665714656dea713f63216d87d3b979356d102de05230e65e1cf90f33bd66da73886548d9bc29ee01878b41b8129b0980ed739539807808405b2abc654b99e053ab77899ba2317fffa4b7a8a12c821f8d929bdad6058602941c1bcd08132338ac3a3d0537774d14108a057c68c717359cf2cd0f667cb33e5224e25781170cf435ba5ecff6568389b5881526c615621083a0c09e3824ad6e4a017438fb7e1c1838410895e9d7f1a21fd51ee81a418e1ad500166b0a482fc447a9794786bb5785a341c532c0703f174d2142d041c860571efd0aa81ac5f15c47925bbe08b475f0f047c473f8405208c9e421559527840f1f0ce27fa91a0295057db804c53efc9b625c15ee8b740dc687ea8f87221a1ac76031aaab12c6aa604f35960f34855dba3e3ab22a758db12fef170c9ddc07d21b045c1e26723230a1802562f57fe1978e5900acf74f39496065c25a921811b7d44a1b3576dac50cca09b2ece5c69c4a4c0898dc94970d4cce26889737c8c6acf6860ba40f7fbcdc60b33f6227467d3d3f381528d18c36d38ae44e7e46fef8a62c6b9ca6772113c3dbb6291383fa362afa00fda5b52042ce7574d29296686be7b74f6340cfb3368486f4d20055c96b8d8eb2528d2760ae2acba95125cb07ba7b2e059606fa589aa267faccc70c8b5ad20bbf90e67ea866aa4160e4759ee9c948b906c007c610c79727f2dbbf683628aa3a4870ba80949bdb3110434583aadd7894652c2a082f0ad5033919274b77579ff0f32588ad8e3f5ceddc9b8546921554765f3e28a439eda198fcc8a1db237c523b41e20e613405edc781ab96d095cd484f34188e595565dfb97c71302704905009bcdd128dda1ca399baa274fd07b3a172742eb00e22a3f1e736b4cab0808018836e6d682896f49b13b63b949a520fd715b480cc11ec0dbca4e31f4e97574e053444d92e58ca47912e0e42bdbcc1c191cd8f974ce09e08ea792a9e39674ba9010712965ba0b44602099e5bf484c050a191390beed7ad38259c75e77324bc321b89e380f6c658f6e16148284794c6d7107bc08f737b333f71aeabfa8ea5e63739489defdf7fbcf155f16eeb83ab4da88f19c215d09cbbf09e43e94d55e343b1ef25a996740d88f2e4116e73c64d085a766350847c2a8ca036261b002704c0e595ae90faa47d8bf3743d38327d498b30f04f9fe50342ba7d501988c302e24cec3356f462249153bd7eadfb9ea07cfbd65d75eb3722ecc886329355ab64ea92dbc5000e3bd56711b2fef5a5326e84302476e93f12be39317eb6bbc23f9ceb2a24c18d7e29a3487890328547bf8aaeeb42ef5cd3b20cee20a6244b1d1aad6b764359f9921435eb781649b8025bfc9bf684df38dfce43c8e8ce13e741d9af9d6a27020ae0d0103b49596ba350978f6482a098687a2034dc0703ff96faa4cc28f084f47455fbaf94bf3fe877b0a9cb3243e360f17da7fd8232a2bf4fe07e1caeab6efd465b97e289684fd53aca9c32215dabdbd81e4ca8b7a2d49dfbac2e289acb998b3288c5716f371bd49bf6871424c6c32ace6f457efba62a3ee204d25a7bf68cce90fc12ed2928552de8df5a92c260c38877940e0a1e1094af1fd0317e822fc5a6ca6dbc04c4e0dbcff65be8b86ab075ea672249dad8c892d519543d0c78fe1db11ef476043e2264f13d71190289576e68946d8a946d40202756c8f70f6631c7470eb1140632bbabe4541fa837209f898decf37d690b13ca7413fbd65245b9aad1dc56c20283ad7b87c888be4a280948fc25e853e81e3b41e14a8fd910032128e5c3e63a8b0a54539ccaa03267ac1235f6107ec053a9c3a79fc521a1cb01c0b0218cc74c75a600a3a3097ca369eb1d506bf4a65b2011b4b3bb364e2ebabd387327b31134589c356efd8a619fad81323ca03d59be621cf162e9815f7b6c10e13266f3ec20e87bb3bd8bc74768a0bc991dbd34aa780a2ac31846dacd25c64d244f100005f5711d46a0861b405f5b06b5f0d5d515809af211e35c887082a8a55ff8d28b8542745548dffdea58a9b72c01d73ada260c524f50a39b58b00e93062e7a93652c230ccd191a9754f8c741c0e2b84725a6f53a7d8b65febfe9629f8b57db9edba8368a46fa7887554ee21b8474180ed4a738c0705e52a9220e0febaf1facb5424689b658540cd450e981d926214a23919c303e84e8492d5d1faf78cd4daf85077bb13a10a618166aa4f83122428bb03cde40595207b7d9185a852b3d3c17354d8474d814e093535052092200f9540e8d9e02ce83d3c829364d13f106a314341c5ca2606ec68bd815176ff95f24525d48ca8f8e458515451411112389ddea3a914f9e5864a2624ff3046860fa03af4804d04b23312feea359c606252956e2d93858af61fa4d8601370b27198c44e98125b5b9f19fd39d633a32c258e0795af89645dbdb5c147473581a11236a575a1df086eb6210d1f878eefe57ea9a3b52334d91c6a235b4c383094411161ab9519223eec1b6c388d678908d761b056dbbec6cb278acb0073fc491f8ba08f6ee3060db687ef90bd35737616a2ae13a3e9ea78a20c35502bad2093b899eca53ed460ec492dfa38e37a607f9d13b6330fb8b1ea10209cda86826b4f5760f090f30175305a74c966b62f188e98510f50b9723442e62154f0b1dffd7a20bbb019ab67f4b0952aa24cf4f4d890d53e8932f240a86d5086cb4e4039611241fbaff99e0e5f62e96f8fc78c476dd2f407f42cb62e2cae696c8e1715cd363ac7f324ff7608ea84af1ca43157922ff949de21b439b7845d07ae4cba0f6ae6d7e44e82343047697eff028fd18d0616ad8e5d5ba0537798ec173532f37fd880137996db0199de707fdfd511f2212487fe743769c35761c467d96918b589604cfde001f443b61dab2fee73ff65ee3b92095eb3d54f04c0a6e53d2a1fb62d96aa2b708bf186047d4f2bc5998a525b446b99bc89c1ebfe04e29a35bcfb51b74b2515b6ef37d12445d35ba1c070605ee77a7ea667baa2e2191440765265bc3b3845a8fbd57fdd6cc348122fc7915b1aa0fd350b1bdc1f10455b01ba020224310c56aed9dbf89855803062c20b78a25f0c8bb89e8d9ced7dc08faf14afc8e17a4c5c692033b369cb124c49f8a06ca0a18420e3955772da2d9d945c80356c445ab8fe5958dc1e6bbbe54edd838aa3ff9f9282ab1a3a77b95839cf4d8c77aeacd0b4156df9778ff675fbbba013a080bc7a5fb65e46bfc3a70f8ff66bfc3722da6fb4c7c55ea3ece5fa9c4cbc1fa12a6be8e28e0443410de7cbe19cef6f223ed18deee3620074a183edc43b83cf80015aa86f5a47a5a9ba3d27462864398834e9fb8fa0c422f4f9aa314c6ff983aa23435d4a297d4eb24ef7984ab3a2ce7cf12912daaca9258ad3cfa95152f9ad422ad432fe31cb425ffffd8cec073314fe905b3ca380ccef0d5323ddd0c94165c37bb3ce6f7fab61cb27d4b0ae64679cf28d54569554facec0168df0c6c7fce20628e337123485814d0ca19dc74e690671d282ebc21781243000894c33dc27f76915f08854671e915c4515ba88a18b85595a4199101dabfe708144f301674925f1725adf3b48af27ad5c0268ad221c02176119cbcd9616bac03eab6930b35d6230dbfb00b452d7d61f51d62f0d6e7ccd79976a65c70804266e5d198bcf26b224f47ecbb7bf8f967149c62c5860ce6e32224902c077fe7deffa7564209ed8e6488c9144b4daac739ce5faa7f6db24fca50c5e6d314461a73b364efc091bb053dd138032d8c26de291e05d89e678eec6492ad062f6e6e30a444dc4f93f779c7f6f8c1edc6e63038ec16f3d2d64b1827a688169033b73dfd122a758cd217fc86eef2696763b73d7a195a1d947095e68abc5b3eeaa532572ad3333a1b15ba25578832071bbdc55a4349dbd3be71da325f32764e03e44bcdeff37bf1f5f82ccdc9dfb4ed47ef726fe93bbd330c917d0e069b3241c185c6ae0b1ffa882ad1a90376c7705feab6e8aeadef50f83a1256709ff9fb0013ab8cf6ed67901232fed15298d6def176c76266aa49f70326237f7d3480875b1707cf61b3b60de34751b6018d14fb5d44bbe5a6577ee1da6eff72f6b0746680d6c8198dde3dd36cbbe5f3bc3d7da4707496cd396a520a7e013c051d888009cb62ebcc2e7b6b68d1f3e6287373fbabb2b3beec5f6808cf4aabbb9eb1a1abf6f5469e60c62befb08bc1613f35ff117c4fee31adc9d3f3bc8ca56dd1f8ffeae6de553b3469263b2c90f298e9f9d1e03b6ecd7c4ea00ffa7e0a2d09863991ee2f119c6a3b9b9b37b28e1c7054629760b727cfb4be40e05a119d668eac4b00434ac7d996bbb7e6d76e15388677f7ea9ed36719464d404373676498b97d8921a3b8d525545816812563532e6c4a328e2795cdf45d79ee27029c48d3e75f6ddf881f29ea8d0ea7ffdec1bb387e2f064e25df8abf1104463e66b8585fa31713443dc4be168c0a45a4b6b12f2bfb79e2e6d45ab56280848f344241b9e222bb18dafe7064792191d24e9fa95abae2ba01988c01f99b232acacb07a340effc03b27b0c8058ecc5164fe9566edbf7038dfc96377402c5a3501703b5c0a1cddd930962c94420d244dedfba42acc9a39b611fd8dcef11ec53ac59445054bb4e20104ac7a158cb9adcd6f8d14d88037beb9b7182646be50095c463354769d8f2db7848be3fa4693840e61f7ef6eb3bb8938d71e538cf5f24ecd4aafa8bd515d53dab6e334dced38a6d61d9c60386b0063fce4224bcaad5e6604b3c8ede9bde39346315cc7ca1b3d4ff47f1b435391e01ed9b509d65458298879b4998edfa2b444cf4e6fa0e714b47043a6b360cd10a0f9a4bbd1e39e6b08783256f493c5fd2b1e34e23f3fc4ad1edc50b62ebc7c146e1970d65edde82cc58db465831603032a1372ceb29a1b6d730c3fb7cf447d894c024572610a2315023ddeff7fef606207ac65103a53dce8ad3c6f6b5a35c79b48238dfffe61b2d4db48fb4aca3480c68856b742fbfa22d70d1769b784e5e80075c6f3ed5983fed798d6ee37a5bccc1559922b2de6c9bd1557ed7b480512d699bc2988c8495cd05e426ab4a3ca463db4ac8d57c65eb89749df5dc48593d66a632392653c505d8a281d8a841366e844e1c2f4b5d6ae4900fe1266a371d0461ab1834313afd1debfc9908d328f9a7bf0904b0f0c8a6869246ffda4b2ab1d89d165825b2630f2990ef6be255142c127c846e375022a163622058cd8e80cd5afe1f453cd85e018b80559208d4a5846bdc26c760d50601bcd106004e407008781ad2cd55c6eaa892086ffad6f98208f51a5a917f6ea37d76fe27c4b16dc438f5ca730f1f35e03ad530af8a91d89e60a6882fae3fd68f78dbc002d305e3dca965a6fc31036460ce5c550f2784cd97a959815cf98518ef084cb17ae01553cde362c89e341d0a035d0983b1cc4896c08e9c03bed0f1720d1e4de08b2d44308ddf4f603785403fbabedc842f5bb3897cb6a5daa235676699098daa1a1797f0c74d2f849c61e35ee2f9e5faec1dcf622cbc35bf91108438966a681090801028200089f5e522304c2e99215c364b1691fa263e8a697195ee7a75554ae09fb02ead413ec943cffdada22c268e3ee787870a95ba38a9d1303e2aaa51c1de21de328f00e1fb553d0202b0e705d687665ba161cdb0d55a15bf67c9ac3a82baf60c7f427d77f9ed7fa75db589922d65c907f1ce4b2a1075dee5ddb7170c4ecaeb95091ba0113412d681914e7baaa3d6a1ba024b1a31c5501066fd821f93915b6b710a95cdecf7c07ae7343fc17d3b972a9ffd357604e88c450c40c24a1a1a45901181b4f20daefc2e0ab73d383aea0615757808b87f21d8b5b1966ab7353d95a346b5e76a1397110975bacead4dcf85b1c29307e45ed8dffaca9d4802b3c7d244142453eb01f371c8c0ad8b2feea48ca41e3540333c88d09e8d6556fdf4a25342a2a1432839e05f11065a717e627b1cfe6936f2aa5d4f2ac327aad24dc6881c7f27f630631817874f6afe11cddb37d228858c839c536692413d7832d6827dc9c6918e0c0f159f5d027b688c4930b57831bf3a6c29aea0ae45f311d96ac1b2a7ccd8a1a839373b38a502be63c079b91c2c9658254d1ebe9af89def49a3b95658a921b9e9cdbfaee3c60d638a99c3db37334deae312217b62ebdb4ffffff23f4584f20a332e282f52e165e711f70a2fb844393110ec5af27901a9a0ae7c5ca01aef88c449b0a3c59186d7c7790b60923d12660d42ce4ea2bb1343ac6c98d58f807ba8c57f1f4a5cb2dab66271ea0c8bace7c12847251de540795d947687ba166438bda88e1633ad5d20e014ac38108ae9bbcf988f5a545afc63567a3d934dbdb20201c8b463194a291cc4a835e2cd87e67014e010383d9df7d4ca06edb0c30933402ed07db58789e3975e8bc7cc1a43e9b19758f10331f619f6c30b02581c1eabf0260e3e2c36177162c0edf48888d3844f7337d298a00a613a8537e325288a4fbe660900083d0b622417dda4d9b446d9f6ce82b7964f59f424425443985c5de8c7887a76b39c2bf64570a41b7cbd07d25ecedd0b4afaa4b3473ace4ac29f6bffbe5c2d65791fc77a57c17f0d4bd75589f6223cf3f3caa2dd3db8213a129fe80012636ec3eb1e9baa2343233f489cd96ddaf761e51924292ed09d4a3d8287409d30c82d9faad10012d0089de4234afc890005ab6c2a5546c6e9badb97842a4020d582ae4d0a2abd1b0e963689181b34ef65a9ecc4489aa2aaad72166b2cc72fdf2c4af84ff7ac4976bc91e054aa269965f867be21c123e4d324e1bba5a9800bf9b9e69fc2197a1fa5848ba94423e6c413aa61be0ba5ddd607bd2befec38209c31a5eab9d2a994b3ffc1aeba2db28419f1b316544b186496c9450295f2be542bf4e5722714e11f57ed28de961890318c990f7f5e567949c45519533d1f46e3a51774409e030c0bd25370b3429aa621c46c4ddd4b9c6098e23104bf562f7e590e5674dd9960089084b662a8b4b45feefbd86586f8aacda0ccd2d449b69406c636f4bc7958ab325d0a236ec6ac03413e98bdd3782255c314ae79f7f9fef08fed239bedb578f040c9b8e2ec58ebafce9e9e43511080b27ca821f42b968030acc5bc11f82dc5a52394b5d8d2658fb85a651cf8d58c85f726b89ce5b99fc386fdad016ff87dbf4038cce0facb0ed16f18e4fcefb7c0ca709459d284b5c026d786b0919e851f0763f138995077f3d8384249c6f41bd14cd46c48c01b1451c9dd0111a89cc7be23a5fcaf299e0ad9690e5a3e554b118ae15aaac5f7d6cfb6c0881cb9570ccae4747a00ded506eb7d59247069303ae617b9440e9509cf86c1174bf8bb48d118f5764a66ec16b66d86ac90bec7237fa68d41205c441bbef0b8a5aa2678679126f9350faa35f762f698911b341516169d4920bf36b67481eb47e3be7b78bab9196654bd9d1e97110887a55dca5a825a7da18eb4e10c0e9e3c62694474df798921e655ab25dc4a6aff9341d9b8f96003688cc094ea3ee37ba060d25592245709293428311394ad851a0e4f99d162d395a02caa462243bc558871865b1193ecb5b32ceafa82fb4a4a5848803f020b5e121219a726f25b46427e958755576014b8596705f8f86ac14704dfc914d20424b1e1a60af03ac2e246b305b424bb4df208811ae9a4270cb43a8c280abdea87b88d98496e491b5368517d45ed9145ad27a5183bc4329496bcbdcc87fce67200d9c6e97eb70a44c19dbcc7d6312c2b69e25cf9aa8753b112072d94ccffde058039c1a90375bcb865ec357d311599285c94f2d88c2af34166a586631a2092537b889fbc359f2d5537f8b7c62e204cb93a89b936c2c022495129b5bb82458fd64a2335eb439899141518a84dbd872c71f6cfe98255ac1ee7e6b9261c8c1982504514b68f08c59f212b5c4c750639630cda7389ca7fd4adf15d3a6ea197c599281f842c7f659de71f35ffe6f81b015acf9da030cfc37f14bd8c6191554f6294f92364165d35602cf8909abdb074396e07fa1976980e9d07316e341598fcf4c8c710dc779d7c25ce5c8fb98404eee4ab3a848dfd228e9e6de2213a6e216b2a94457ffbeff082924a0215f152190f205a69b58b1e1beb7a9e435905bb751ed37094d4a4094fc78f414eed71960a9e4b15834401a03adac938770b0d1ab8e5a2ad18298ad51e14772dbe8da9388542299a8bb3f239882756b1948cc3e66e02122956ca8c383ccf57f3047cac1525527c7d532902d6bda5b841d95845eeb27620e94c75f254e7809aa77570491a32ee6a0f1b06cc88962fd419e106f715472cbd79e92755d6035cabb60e7b104f82b642e0bed629666111aeab23e3f41df0911a42f8394683804799f312d1795dc633ae641a01262150db756b4a5e89d090d0c8e829f300e4e3eed9410eb397d332f3930da70546d3493de948842efbecab80e30a2aed5f59c92f3ba271e3843ed9506433cb8f39f65cb9e63d1fe485ed2e2504e2bb00ab65054b54364afab68cf1c32727e8a5ee8ae1e7cde1eaa2b687375a974931234318588ffe18f17ef26ccfc1dbe2e28ffe353f6c9c2248d9190bf98e45db8b363ab1f0bf5bffbed048cf5e2bb7809c96066e05f1abc6f41552513a04350acc98de00277acfa852d2ecaa7615adee6e64cf68789d3036e7e9710f1f9c8cadd093f5b3b43dcda6b461ec7987ea2aa47fa5e8a9a84c0446fc737df75e4d0295cc1220673428e45dbf31943f2c87061a751164ba00123cea5de18308b598d02db735086745aea7610ba472e2999ab32417625f8a477859ec770bc4ce4096dede7366d5ac0133eafaf9a7dc15b4ea7d0585f17db3dec2f0a6a35c3fddb663e95ca203dfd198359dfa6cc56541293089cba4d0bcdae0ff7aa88024364076a4d3b835d632c52321e4e038e8f5e7680281b6be60db53c300ee15f9901b4a08335aa0775db6a06c68ec6b733324e070a56d8685638296de8c7d5f2cab82046e046aafe317c3aba15ff65031b09a49084700e247c6b7074f9f4e2103a68d2f3a62a70f0e05d2d14dd1b48658445c73d82aab804fc252bd4685809e02459707ec32cbdeb920997a24d7da432122127457de92cff45473cd5aa4705293e0b4832c04dd7b152f65fb5689a03add5e8da6f55c2e1c5d1de9543149617ed0fdaadcbd08e48a01a61322a280c3453f808adaa8ef4f28a32ff3d64045d41a63403262df0d7052c934b3260e5fa41c36026cda12293cc123c980c20ceb18a06897e348296f485f482fdea90305795aa96dd209005cdb80688ad9a6a620eeee73020338d8d6b3f7e19bfebe101411e5b1827266c1b07e4712e1a1fe9f3b437bf2a0e5001ff8cbd1c60da97b79a921f57aef645244dd8a9bb0c473eb2becd81c4076a5a4cd0b7794467ac3955b05c55e908ee0b22068645896798a9b5b5cd68d252ab5ec191a0361560a47f0d1dfc51159d4617436dc002eeb90cd3f843be6fe1a1599cb5e68bb6a9c7284c9be56b06c7d2c1d12a27473bdaed7058c9d5af8300d027c779f59080017c7e4ddfd398f97b559a9249cd352b1f5a3532339439ec8b17a722574f1df519ecd09a7495d45d512f58cd68e254618bde2f324216ae24d5309b4f1ab44ad8266b6935d51bb68dbecdcc4a83c7169468d85f0abca76b636291ee2803721fc1322abb3e618ab67fa5f78311527bd32bddc88206ef6cb4a92e8449efc8cbe0e65907785e164d836e0bbb1c7ea59b93589b5e099d2f5b6ab02c1507e7b6a6579a036ecc149ad28a05c96e060bbfc50690544425ab92c1ada46c0ea8eb1ae18e038226c1edd107041b3744b44f25125362c9c76bb26319fa16daab488876d7b064ed715553bd7f6d8c4502976bfbec0f119e33065b196acdccb1a897af9751900fa56b1c323bbeed7c0624ac6db2a2673b9c0b0cf0dcaa79b1c5ef48bbaf003e399c7c0d01bcb117155a42349ff1ac7657fb7f25fdc068902e75f9ddad2fd7bd267a904bcb7bf112879d8c9d6dd285b71c4a0a96c39a347cc71fd7b14f9364d9c0e5606f82e7d6dc1cbebd8f68c6d1f19fe92e19df81f817b8e94f801d215b9713f9604a36119b889b5e028e5a3f7d6a9f3a984efe6c69d3eeac41aa591d290102e604233b754d2a5af85b343277f7654821653cce6674809f7989da4e5fed05a2498f33e77b315d3cce892e11d39347678bc7fef481db96a89e1d883e51390d6525f143518db195cbfbae57770178672eaa86b246c7e29852cc4038c35415f96d282b1db17904986198250f88e83b9c95a78493751db39b1ce27ee42d2bab90873915d97283e394b82d6cd2a19bfbad4b280a053a44c33b976f3d11c3e10a2c6da3f9287144b11ab17cb726a27a512d1c5d1d9eee565d75d07ad3f1449c48fb8b2e365c48a762b8604bb9d9aa6189a194f8b176812b33504e5501a39022736d32d732966b6cb0c81c6466ba7e33f251d5542836ec69f82434250f7b7053c459356867d912eca9125e2c09138ef154ff1f1ec05e8bf741049cbd2a65855b7e2e5af3a86b26aa2462874353bd47e9179f12e07074a699dbcc05186152c13dde7f8e492792f00db0636b38b7df12858bc99a5d231e7634cd89d345720f9c0471c3dd9448f96c6da0052065bb7fad1c824d7cc8eb8601077902acb9b56563b7186e846fdf6905679bd3a9b16f37e509be1b82685209624fdadf377371627ec4d0a44ab6c1cd69fcce78bf0a711a4c9e35e128f304a3c4056efaff70751486ee315cfbda45a0a939c999c07519c70f16c14c6aaead749fc26f0827f6fe1b90cbe1ac695dc1797e4d678e9be480e237a441fdb21a41de86a666bda1f0b7d159de20c897d43ca937eb312d530d1a4f1c632c261b6f046d9e37901bcc36596821e961b241974627db3a1cd1f3ffa64759f521faa0c671c2aa531f49e90a0017aa4625f8bc5a8ebb967f1cc2b1d8d151893d4976ea5db5fce0fa47229681bf94e61cc71b1ccf9a65464e2b39bc634d554ecb07acf78bda3f31e8f9d3e8073924e7e410e3a04c70700259ab78b9ece6d49305734803857d00c6f004e30c927d373fc22c391f5565a6ba9a8f56a313ee0fb319747bbb908be366eeb193a78c86a31c9e0d8d0382d39bb21d64d6930b869cca447c28bea24c19a191203965c5d9b49699ee52f2ee24de23956194a452b3b60e56b982ae43466ed957d0c14f12bba771110f3bbaca6a17166230edf59ab9d1154cb565460ec615746e1aedf12451df2607ed1194e5e8d7741c4a8b6e4950be458935403dc7d406f94a802f0bd9946bb1a8413b73d9baa11f798376eb462e312c49e1a8ddc15130b7569c2b2be24859d0e71b69ec607b6985661b6dffa512be3108c240cd95b077cc071e93a4bf79e775cfe4c473ae94b86f9155b664501c498913406292f7274f72f76d64c43d6f107b097f52c7ac1363337100367a0a4d44b8bfdf94116b57fb73aacfd1e5dbcc673c40286cef77a462be05586ec953026e73effb17f31bc1fad2cdc3f043512ec80ad984eb47c49a81d5189a3dd8de72b9bcf925b49d55adedc75663d34a0ca998b431c4cdcd76bd7c915caeeea9cd63e55b84b6412329e1b2837692552d47a19d6d45dd6e8324d840766e9b2261ecec577c776c7e4d0893de6f595b2856156a5ddbdfaf60821fe1d487406d65c44376e4b6075a9a46b0fc61489d050a8ec93480341381c6be5ee19aed24fcb4c827d6c2b1adc563c1a0263092cf4cb6742ead7fdd1c5d95509abd02c05f703e0ef4a582499152b92280d1339107a73f6deb75de9d45251564877e9a0edcfde83f5fc393c4810b6518f99a7ed503fbd2039a2ab29340a903c9eb57b1bf4be5a9fdb695f3c712bb8806cc4cd671dfff6002a578a1e5de54e998c334deca8f605afdbfb91fd902c6acc5a552ea5e05647a4becaaa06d4de85754ec598ef1be076eb51a9817d565d0f89019ee6a0c5266c0dc0c3e926633a6ab118c44b6fcd7987b4119495a57d536302b6757a3ff11dd097edac173e464e18dd84cb2547039ba1af00896103ce429f87d87ffdb73a40127d3f019231fa234da7adf2f6cc9e3321413a20c68e41d9ff468f592549573a5002f648fb4c8dab9d2088a0984cdc5590a7e2c706973a19e3600e186ec797074af8585906ebce8de0d21668638827efd96ca8dacd52ff236fdeef6e077de55c0cdb070626372120c31b71842e21c3fa3da321a9ca366c77f4c8c7d5f412f996a88260033cf704b22c8f846556e1714b441b04f64f4fc3ca09e946676de31c0d0274c96b315460509be334b982166b62bb7659bc3f085017a0b9e17e0ca37c3fd989d612fb08a398e72734de2506ba431edd538b5969a8ea519fbf8946033e68e41ab7db8c936e9d4ae3e5642969bd7caadcb1edba3d2ea769aba248dee647e39ecc2cabb298f23b8f9838f2de0fa23556e348a37d011d6c4412fb056a76dc8c18b2db11712b20c941612b6b6587968e9ab6a7efa16f25160459d3390df7c1c527f16bd8b2d6375465be73a8a326a18d47cdd50844a44a46a1e36fac6b846e76125978690453536def5bde508914db34453882271687d02d50e53a3875c4179e8568a9b04d2770e7eb4f476d078aeeae3ad272505caeee33619e134f4bb79112a3d4ffff6cb7378095467d3545b7d7a67b227d7f7557d4287132a27d88ff03776ac2d905a2ba4ffea4f2da33342123a681a1a71d4378df5885857a2a28242dc1b51fc72411536a5cd0d74376e5e91bafbab78f6170001e6b58f5336e5df9dee5fabab9d006b49545be41fd1f6294711b057c507124a0d311e44473bab351b5737b42550f88e82141f1d66b4a0a0b81ca95c2c4d54a4dc3380b720a80e0410f1205353d94c009db97d8397d7eb1c6e6c64ec29d19a8771d4696644b90e8bdf678a8be37cbeba05db8f791d67cd60ee1124ea81a73d4a6ea6cf3e9107d6030df8016bb4a49a4cc87ce4de14481015d1408a514b26f8bdab8af24046ee3ce72de6da98d9b16e64cdb4aeda8d36acb3ac947b676e6b0da96cdbb965545e5fd089dcbd4c1a9c4da087b64ed91ff318b4bfd0af66269cd87745ca46fb67d794dbe69ab8056be41ec77f64f28bba141783ecb89d27239840c06280323775a2e67f61c4818b68b9ae486efa80b9eb4e181e11cf165d0af7f0d4cc8a046e91809b0fe3875a09decc71ad7e5c51f5650dd45425c8ceff02d4a99a3a3adf942597e5393818d1e6b09ef398c00216bb093806fda5c8ef63bfd3f5443a291b186a854cf0fc1b2f400af2257c63d19df4d6d957daa367a1290b3cd5240a2f09b0b7e99a59c2c4b8310447f6f05d8bdc845e32cd0f43ce4b06dc173489888958454fadbe1ce8212657f07898ed3027094c5aa9b4c9aa7f154cf216c3b002ad7299424d01e5c8178dc69599b2e1332732998e35d50f6b33aaa6d93cfc0d257b78af85a5c6c991e2338740994ab83ac7ab84f6c733075fce78f40cb17d97708264b979a44582184ecc512a471f8cb2edc1dcd335ea5eb55b9de4e0dccca1af1673ef284fd2c8c027da01e27a7b8988396fb6c3259a10b26011454970e8c0ca836203db3e876369fd9bcff12da807e9c705651bc9a1c495a30066c8ff80d12ff679ba342aadda89b3e94ee69dd58cacaa3475d7cc846a908690d478b5f0f8d85550f888b6624ff8a12c5f37137e68d64824715ecd70c71ad32f204955524fe1cac5f7d0f83132b40b7eaf69e99122e873f3d68a90282208bf1765de3d95f9d45a537a5d45654242a2f707adfd69ad240826b03aa2959674d54bdca4b7dbfe2190e51abf13aef1e1a7592f5420b9ee302894b5b3b5d1da7f3a9025c0d7a874bc89486794b00d0bc7e4ab5651a9202cbf062162c94af0f3a67887e1555f31ef119ee582574095ab55fb607b6ac6066d073b2e51de5a4b188bc1e902b9fd90ce303e72789bc9dd340a08edb9abf1e6350d024efdc46d5579735ed937d5c198316f9bd5d4c02bc6b6f8b86f63aadbba00fd0e6c241202eaa22d585e30ccba9a0e6535c31deea1637b03c3930683f921b62f47feb10a67e264854e81a16d408138ad45c2196e2b993bbe5a86a82c70705098b99f9ea33f2f5d340e2e1ead9b7a41ea442dbbec15dd5e179e5f88b211879fec6e526e29a5945206e60582051605775e5297972c2f594e293cd43eb1e034bf07ce1e0e0394f758117d99db9fa41522e053a541e63c6af631a5f0c031e5779351ee8ca4e9b17f30a0a0b1eef40bab3b5d93df256f941b346b407714b127f3649e135d72aaab2e7559773aebc6a3d49de7f45b42960768b26e96e79233877e6bc8a8a916016e7550d68d73dfaa3cac5bcda1cfe9ef9673cf3d9d17e8fc9c0e1d8c574a3eee7547278e0dce0274ca6fbf57084e8e9a22aee3284d886a2d145d36e29b3f39224e29052b4d3dd763bbf0e3bd37c6af7106afca0778ab787ba452d8070e6f7855b34e8eb5f7a331b59466fcf886f3da5b85c5f729149defbbae8c91be1606716a4e15e285ad2ad621dcde6b41215ecde168f3d7ff5cf7e69c3fe0f5fca053ed0d2e97cba6c02df022c411412cd16278e2c165134670b1a5b5d63b9962435b9c0005105cccd05391b0d011f5c04303232c9ec0b8e047f81c03490e50538c31c30f3dd49f73ce39e79c73ce49e9cc431fa5d3cab4325374d239a9b5d3ce69655a99563efa79f35a6bc5da509c6ac5a3945a2b56f4d20e4147c2e72239449ccfa103838e5af9d7d1c9a103039d23badb42c516d2029700250aa81c22cee7d08101132bccf0fdaf3b1369c665898ecf1917209ce85c57d4e073f13925ea09b77c4e898a2a228fb1836cde3aea074e0cbbb5b55c14d109a2927c896a218c28144c10f50203cacb0dcac90b14d2175058780155a50b2826a2a08ca0a0644f5040d8a074e802558313d40b5ca08e34418dc0f404c6d2934de9694bd213962d4f56b43c51417a8272f4744496a720b8788a6df16443f90483164f29607922210b5b1858d8a0aeb02959612babb05da9d99eb86253820a9b132bb621a6b0f150c5a6440a1b2c0adb0a349b09507439c1135dba70a20b13952e5c34d1a50a26bad0a6749132eb8284942e2458a28b0f4a74c1214a9719a07461e14917216ae43406259dbea0493871a148381dd112385d419d3849419b384da1473891d408272654e63402cac429075a84130d94044e2e50229c404087702a4285e072a34170e9428bb868a14070c9828e80cb14f4072e4d501fb83ca13d703182f2c0a588eec065098d7111015dc2250454072e4872e0f75e10262d888b112217c64d26c0a1e9e986a624254d5a8c4d54501b9a9ca022688a426b686a42696812822669da81ced03452199a62a0b02615680c4d25501898bed0103045d1179896a80b4c5bd016986a94052628e810d3127405a61250159888a02930f5409130dd408f30c94041c0344451603a810a2d89414f58f2829ab0d4444b085acab22f2581df7befbd9cb5f7de7bafc54b566c6a64298a4d47589a6d5a6429894d5f4b45ec31967ed8622c11ed132c25d95f965ad8612ca1b04db0f4da602879d93725a7ed4509697fa184c5f642a9caee4289891da564b4a19464fb4909886d53d2617751aa613b29bdb0b9281dd94d4a236ca62430f652926d2b256dd9494958f696242b5b4b12958d149404651f71b609bf370bbff7de7b396befbdf75e8b87e0a2872d70289368e10296a423592419c1228c2ba2ac60aa224bed8a2b55a868c20a94299a5419428a1ea2c08196040a179ed872c4892d46a884d14414134c53b2ccae90526589269480c2318ec231c61863cd7118638c31679b4009d232c47cc2efbdefb2b99cb5f7de7bafc53d1869c1414f520b03b42c408b02b460807401d20ea40420e940e241da414200520ea403201900c902241da4022011000907d28da3011c09e08849e71c65d1e2d1153a0047557405474d681b475034ce51130d80a321745871adb5d68a39db83bef7de7b396befbdf75e8b71f824355ca07174e4e6c8884d183551344c33b2b8ae98a942411332a0b49ab08690e96185c39724c605982c4754598c786174513ad5b4913416ee4aa6e129f7890d7235e16c15e9bb6c803011ffd805022d08e71b18bfc61873a18e0d45209b458cf1142e7ce01887a20d690b357cc00d33fa850a5d52a16b5450d1e95a655299685199d44a2d70be79bb1adfbc4532328421d7929ffe5eb5d76170722e834b52325ea6dedabe6dc2d7bf5ceb16a9f28cb90c68ced99a26f5d5b5afc66bdae6245d00be797baf2d8feaef7f96e7efeb581ed6dfc71c8dc987bfb39a8c5245261ecc1e5dd6708f997c3728e655a1089d1736b227e63bdbc1eeb924f9c1f2f70f56c2d775a9022f0bbc453647666bbcf600d91c4ac2d735a9c1aec1de129ab196de189013c58c7cac196e26d36c0ece9882191605332c6e8fa0a9681a952a521a2ff2d5ad2281d3afbb5f50eb55e17e7d3333cbc37a5ab26e2f163843da1c5aee491be3eb979ca1559182198e82194c395115b90f56454a43153da83d315a8caf7f3015387b3ed677ed9a095937cb0aa7cdc961ff3e7d826ff2cebaa95ea91efd3c6acced3a0ddece7a33c0a09ab3e7ad3074e2b8efc9b8e7246740bdab93383daa5787effee45348984195464c45e4f019757981f5a58a527cf65baf1db26e5fbe4e84db3c96e2b361fff8cc1fc6d7759e77d6cd260c59b72e68e01abc9c7533c177bff2ce036b82549389a80bb247f5447a684f46232a56ae1c71974cb06d9121b1996646a420c5355e617a12a5f6048da2fbe435c4d00c0531a8908921ab784f62684a5a1283398c331334e071c60492d50fbcb73c72c68414de5b2da11bde1c604a24370a5090b5b99fc1fb5d06bb0df7375b1b7edfc6823877830385dc20298d013551cda1aba7791d93c1ddd77c77d97099b7a11e65401d03e393f9ae47a250c76ac039458cebdfcf426ef0db5d0ccab45ead5715f7b75e20ebf68506ac2fac1b8bd524c28fc582e985174f85aca490955445fa32f631ebc6fad27aeddda57638a4dadfbfc30c548e4356538bd47786c3af4d8bdfca73c9fb37ec426ef0fb7aa6c9db77bf6b5247b9a4dd35ecae1af3ff2ed7dbd0b53f2e26d447559742e40f6661ba642545a93b35acc00d6e5f3f7d3da39eb6299bba816f7056938d8b2604ca579aa8ee54c086df8fd59d79edc517dbac6c38ab29c4f92a525612a7cf4a6235d59d214e3f2455a4e127e4c98438f5643feaceccf2b06e9ecc9379398177d66dd27069b17801c5036a47a7ec6874c34df532c2a185148e976da645071ea87034a32f466044a991c0c19a20d1634c3564340613476470112e42e38a8451abc186cde6f1a856c2a04b4aeab2eea86e597404371b01e988ee23492c493028a1ca45463944595193c293194ba3254c46232f352c36c8914b09e56c690aee865e4914219308a2c6d4695288275558f1458bf682c291b317530d8c599125538e2071ef6b8888363362e51573f3c2b427562ce9a12757c4b0822a45662d6a9acca20b0d3bf5c2433a8880a3e5a0440e5a060d8f4644455c393b41f6c3b6954f9260e1c62927745104b6b65c344bc20bdb8c8c35f954242d7a8d3325179ab8db468f5049310115eede2875c7428197984264851418e6655f4e3632ca842aae70af3bf484a4a29f406901cbd72a7a22c30d33136a4e9766878c9ec0c27b3901446a8f658d4642162370f9e6cc79432f4ec92730904536292dee62956d0a518cda664e8a1c91c325ebce34da618bf6f2417999d8363e5982e45e52c490c10a15f847ffa3336594938f01555f7ceb655bb2ba23f3f45b4ec85694ba3379ebbd9ff1f45b31cbe37a0a23e3bfefaa67ada5b79c4155a0b2cd9ea6b8665036b36e138711ebb6c33d8da6a1698d455fe8abeeb038fd16ccf2cc1e1f3e1b8943f942dda14f93d2dc547116ec3a17b000d716a88a40ac1b393342d2425277a82e8feace7c42dbcc1cee678037660ef72e108399c3e55000722f038cc2b96f81decce19e05ce99d3817a8adc571907045180eb215cff4c85171081eb9fe18d52457ac9fcf7aac0d67de14bc08797a8beabaa1e2ba2e75915b2be54d6ad8af497f0b02bb0b77aab68dffb30ac9bbdac1beb468130d713e22b9f8b6b72726b6e7ed68df5a5d522a2f2b0c6d61223ad756d4f6fc138ad245414de5b23a72d1f38fddeca1c50dde99e4c0297a417e8925ec0bd0a5d7c9d750b674f44fc54eec9ea4e0ed2515f087756c30ebcdfb0f21910103f0f74c017bf031d2e20974fd83f20e0b4f43900a7cd11c30cfb01a7cda19a7722d703ddf303dc40ea7d58de39b03ba0f281791781f39179f78056f9e078ff00ff01620de3f33ee0e40f00fbacf900fba46d00f639d300ecd39601d867520fb0539903c04e639dde7ac04e6d1cec55c603ecb5880160afb15e690a007b9d6100760beb566807d86dacdba26e653c60af493b60af360480bdde7a15ea7508d6e94c07ec94d6698d0060a7429dde003b850d20c3605d8708763bd46bad8e49383dc37a864d12ccb0ccc1381957ebdc4dc3744ddf366ccb7619826ee1f2795fc14258c16e1982e65d458690617668d3245e342799611790000fb22a79380140c4f5010b88d8ab89f8741989166c17c985755177a69118345bdda114dcf1127dd95c926dbaa49d36c796f6a88b9bcd76499bb983f239e3e16173ea8e5d81cfb75f553de85b1e1b7cfe9a3310fa41f26f507772cd2e8d31b8010f076c60451d397250e135478efe697e6d28f23dfee774821d87cfd751b10eb18a39be866f7effaaa3ea981387525a9b74f27fbde0f7bb43dfde2bfe7cfc56d4a95a6c6c6c6edcb86169a7d4567c6fa5bd8af448c86f75d9cc02d41bd622f7ceb79f6db64f3f88cd379cf3e79c73ce39e7fcfcddcc33e739b93d73ce14bc19ccafb9a608e3e4b85cc75deee2cfa0109c2ad2c927df2d7c957b35412cd613e9f19e480f919ecdc267f35d02be9abf79eede25317f6958e2eb93060402ad25346931216ed53cfdda712156f51062a78ab3f2e5a12fdf9ae72612c7df8930bdcc80f4ea89790c06e134a0e1975ce1eb604f1aeba65285d3e6883006b979ca2db8a4851fcfbf95eb0b765baa32d0a1fdfc1a1892c4ef055315a4bceabf3fef4d5d4edfafb16110ee6f6ec811e11de843f9cd63b07332de6b5e882df9cdcdcd7d99fbddcde7fcf37e0742ddb921edfe7ed734cf3da7fa91f9fbb3feea73d8bf1cda303f4efd0dfbcd40f4dbcf8fc16e4bbe431ffaedb55ff30fa81ce470a5a4c67f0653a9e7dedeb026ff7dfdf9f7736f6b72e843dc228cfc3ee5b5731f0ab1658d9f2a20f57318a4be0e83cccf17ec5c0d7138bfe6b1cae7c6074d38c472995f85371c6279f7d3fdfda9fa91b9f82d4fc057e3615419dca7f1302a1f17b4802d398d2098efee4fb78ffb10cbbbb07bc0fee0f0eab07337dfaf20dcbf611f62bb0b822a7c41773f8c930924c5f56710e653a9b756d503e6bbf979f53994f9cf47ed5e069401f3832b2538f519ac1d8c7f322bd06251c59c81cc30c37c0d0ea7ea87721d0681f9ed0326ec44b84d8141f24dfea9a259dd603b0688f014c661eae7eb9bdf5d67bd4a72fbb87b9a9592b7e0ea86cf9625c76fedfc14f815e3300394eb095a958fec73e323fffedc85432c178201df1f7e57bdfa1820d231a87de8b083b11f7e17c278af791b0ab125df5fe3f96b36e5303030e0cd8760d7808cd73c08760d90bce61fec228cbca646a8e3a3f153f58308a7112e51fd547dc0963d42604feb26fcae05ce9e9aa09a0394c2671465c3f31b5e9e0fd63dde7579c316922533f4d51a33f93a0fbaae83d973499bc3d53ab949abdff8c134c0fc048ee3b8d7f1543db84e7b39865395161e66f2d520245ff764aaa7422d2454f6c126ed835df2c6baa96a36a79c394a5d80524e8556454dd2d7fafb9ccc1d94d3df453eee795890f279a5eb5611fecd94f4b58f7c5370fa5d4c5813144367f85204d913f3447aee92afb36e73c74c8b84999ad027a4bf9b01557f4118be41f00995bc5f32a6c7d16335551105968d9524f475d62d895b1e952ebae43ee1eb7a24f2643731d70cdba8641cc771745199cc93dd72eeb071cb5bdef29633afd7ebf57abdc61b88948ce3388ee338b7e8e999c0b4f1e00ea8227d1f500213c74fd7755dd775a9542a954aa5f6de7befadb5d65a6b8ee3388ee372ce39e73c67f6e2cce5a4742aa5e74ea560bccf9939f42dd0b181803e20073f5dd7755dd7a552a9542a95da7befbdb7d65a6bad398ee3388edb603667dff77ddff781948b9c01639d528daa113588ba039f5f954c9e0d6aae6392edf612aa43301939a3d5c6711cc771dce065847366e33ffca799331af6e985d797218ee3388ee3287a39db781a1fd17e60ad155d337c665c55cb707d58963ed4a340acb1986863cb08fb6af523ec336680a00c1bfa73b9fe3df172412f58c1eed1dd62eef8af4b74726ee9c37f4023311df54450f3ae7a22c8f1ce7a2298f90f387bbaeb8920e61df6c41fd0488d317e3e27f1bebe085a9e615ed8a90c9c729e08529e619667977305a317708016807e8de17d973bcbe45141e93ade77b95330deab48cb43659839f4ab124e7b0ca8818983fe831b9838e8d3802254913e07207df95018ada5d65a6bad398ee3388e93c96432994cf67abd5eaf176f80f755a9b0ca4245a11601e34969f2d097c549455af691aed9d3c49a2d57abd56ab55ae1721cc7711cc797f87abd5e4f13760a04afcfbaf7de7bafb773ced9bbf7de7bef6a45c3f581d89261adb5d65a8f55cb51c9388ee3388a38345c1fc8f871efbdf7de7befbd77efbdf7de36ea579aea5369f542994c2693c91ae0f5f070b92a69157cd228e8142323f87c1ac4e4a1b23b69917e7d42aea18789e36ab55aad705952190dd7072fcaac8f6cead02dbcfecaf3647cfd4cc3f581985fc6d5fafb5caeefefe3cd1dded75fd1d56ab512c39587cb2d70894b5ce21297220e0dd707327e8ca38df0439ad027a4a117d65a6badb1582c168bd9a88ddaa8cdd6c38bf16aef8d51255406cac28fef1485227cfe06260fb5612b267de9aa7d73b55aad56ab15b5591961d751f0fa3fc2fe55e1dae295a88d26ecd50651ebef73b9fe459ff07b0e0d63f0b85aad56abd50a86b3f7de7befaeebbaaeeb3ea4097d421a7aa118d65a6badb1582c168b65e07d55a66d2af5b9459f554c3e796a16330ca69ac2ebdb08bbfeb07f34617709e07dc29c58bdb2a2e1fa0f5ec68f9fe2dbf80c9b3b70be7e9661f2ec7d23ecabd500c23e630608f29e613961cfc9e13dc332d81c2754d1085de107a18cf047b84b1be1872b184dd83f9f90865e28867befbdf7d65a6bad35c7711cc77139e79c73c618638c712d6b5972f3bb0e0b7e38e00102b4274f073f77883fbf9696a78350653473ea036d0d64f57130c3f5d3556457d592db157815431539714cf1f55d92e3388ee3684b5bdad296b61c6f39e27295613150df2eadd6bddb65f765f75dd4d12ab2a654644a45a654644a45a654e47eadbfcfe5fa17c5154cebef73b9f40aa657b092e34aaee470c9e192fbae83c79cf138663c663c663c663c961897b8c4252e71894badbfcfe5fa17453bf2daa5b6e6f29c38f0c4b173c3ecdaae91b258916c666666465614db302b64872ccce572b92ccc0e5921fbba25d966783e339ee681c07ab32595b519ad4643434353a3cdc81aab4555b62ba8a00220b08e320dab4275a8c26a6a6a6a2aac0e55a1faba25d96e36363636375b52599bd16a3737373735da8c94c58a643468d0a0212b8a71302a448728ac468d1aff61a7303a4485e88bd3cf37cbf3f349b63e6fa28f8d0702a7cdb111020139007f72cdf200fdcff739c361183e100884fe8059667982be7e86599e9f87c077d183ef3a1d641807effdb43c40dee7a7e5017a1b41af0394d0a874cbd8f152ca68460000080823180000200c43811c89b3248650a6e60e14000b598c4a5246288f4be47138180a93c32086a1009406000000100088310439647000c60527d9e77a32162e445c182f9252b6aea6895820e1756d30c1d33c4cb9c4b83859a109525430e0b4dbbcb1376615d49099b8b6ce0fc69f43a0f8667b51b7150f31ea2237545d3113fea881a7e59715818c624078fb2fa8d87fca5756b1759d74861af84ab1f73a174fbcb8f1c60ccc2093befc16f07ebebd5528b758ffcf1fcd6a5f0f402dd72705294622a600a9b1ee3d6bbd3125b7c9345688095f6ae82f7dcf0728a25c9a002534d74e2737dde8428bacd2a0a2824bc7e78bd274418fa4a1a363047bd7a7dde098bdb04790711cbebc20cd83c6810ccdba286eef185bc28f46be6f2c6383c04f0b9e24723325e1b79c1b57e1af87cb99607cb53b3b9ebc38a136831cc4d746045cd2fb9b54dd2b38a5b5d8661b694d1724552a744c60ef7876d19a6fa8083a2d2222b84adf12aeb300d4998b682530364fe312308c96807750a317dd642a1f1eca43fce623cef3242ee726fef314f7477dbd9c639594daa4c2e489ed8a0f80e70703cfc0d01f43e80cdb32f63ae3a424b4d6f43a3abcb203d6ac0757398389d8df56d7a21deee0aec05a564e799e7fa5aec4892e7b0930f6acbd4e19a1e62722392c1a3de1648e4bc0514b3e5e2dd937034e71b1b573457693f0971d48b4b3275b09c1f17a46c0e5e03884164d187509f9fa8242016568410568091e6398939daf5b10b493481d74e7b4dbf8fa975f7cf5bbc4dc100f26a0829d6486a17bfeb7e298415ec7bbcaf6f700487634fb79af679a10e30141da95361be7ee5f90e32ec4df99bf4f88a9527a44e9ca153115f919a08d671b310547883f948bdca205678f93407f7d822aa7ca29586c243532e97162089862635a18f2480ece54f6d34823dfe4ae844db21aca353f24efcc8498d02d06ea6db8bb67bd5aa6d744602df81bc716f1e57810ecca0f215f5959ea0c4f281f5ed32cfee3566184fad149a9c01c19879dd4260743eaf0631a4318fd10cca5b2398e6d9933e829d2bc77adeb55fb62fc69f8343d33622d249fd466956842e2172c0e8fae92750f8ed5a28a7d566b09a8cbdd837d69d0ca529d6086102a85724564261429b8a985e63a18ac413a6a47ef5467149b3075accfcfaf4055e74216dab68e4e966fc77c5999ac303fdb689b3195b46cd43e95a7083db66cab2630bc46eb14fbbf1befbee09a820e1bdf253985599a2f874425ff308a82474796e24c21b3a1f56a223952ff473a04dae5db25912acaec3a1f1e7f940e8ac5c469a3b19aa61cf4288b29de7b869a76d4993d181e296c94cbc556e89a6732353b46d7eed97db3a5288a4cbc0e2995f3e2b55da9ec1aaf2dc11eefc14bc713790662bacfc9f3b1e25bf55ec1a97454649cb0d13ed38d7316638a7981c6b836d19ae5129646fb3d02934b2cc9717a54b03c1023579e52226faff373a9334679fdb7c7948843507e2ebbfcfcc4334771344bcd99cddd415b5172c46eb05af2d89e5f8a5bb241c72d77b3054d5a5a9ebfc8098b6204a210ef98d25adf9de1276705c094ecd7e2b4f72d3c79e15e2cad7a57e2a47ff6e7e588438e70c0694d4f333418a3e0370c8bd810e9ee545eb96748fe200381ecabeb9a624ac7bd55fd5c16e651dad3b6b06b4873c9f300156a4595679f322b75b989c36529545bbf769d758b07c65e2718663d0c5fdffb66431f29cbf83582ae3f821e13c728e707ad04f775cd85eb7685ae0f281ac750cc1b2eb5d1aaac29281c9741b51126e8dca511c490504c5ab7edbc7406429b572142865941428656352183aba0d071aaaad021b09ce327add7e56e7b76c02d8f42665059a14123f3bb6fe28c7d983f002d2b4b02701893d7e67eedb0f6da2073a180695a2ca3cb5faab4ec5d1812b0b31983425eddf82aaba915efc2ec00c459c9c421e6c81063f19c8af248883fd854b93047c87b7ed75a75e9e93dff9ecefb6e1fff6413ea4d021c95690c42866312cb7e17c83c9b0d2250b3fdee80da2cb1a9722072d740a38d95712c6df398fdd47501e80a704d687ff5c2e468240c87329bd209441c126c3c65a66c0483b68994bb57c7106e42c72c9339856b5c2dfd58b839fb9b645e20160990e76500e058d2da2de88f70e1a667e7c6183f8e09e85291980956a958ca004561a2c9b362ed9348050c59c81459f9db811e9cab3d362740184a96c629d3359b466ad15505cd9304bd3919b549c1ebff56265ad9795c32f3c79c0abbb7788486aeb6c99c8441907dfceb1df7cf72975339970537bd3d19447fc54c387498e3290ce608097e39da01b5d61296d614903b313b9f6e9157295323d80a67431fc196383b1c09a6c6d998936045ceceac04f11a49200daf2e8dbb8923ac1c9fbd55f320e7ee575560e3dc5baa0a24ce9d9caa38e15c53a98a079c2b1d55563de8f5c8870b3d8b5274cd37a5a101d27a7bd7209aa4dbfbe0732a8be42285059efb23ec24e264cae24ef00684330a6550f225e4646066123cd9c800e808061459f8c8b94964c9aa4c725e2e42a158501b99b2041998d924030b7ea9dfa672558430a845ca2dea40433df9ca6798c660a0e80b481d867a114123cd7053d4a0b881325cb15a056ad690936b07b34693ecd234671d1009ecc75e9a61a57db86a5bc4b3a41be524e5387558c0c489d6d74c2e2b410dd98e6073b415e864067f04fc0eaab845b8384e60f515649b83e1855cf748dfc5adf65d062f9dfa91daf79bd3c7b5cbe542d5ee1a56bf5de87b3ce4ea0dea15223e56d1f3d41d44b75bf705d044cb296a904062f9b805d96fe5d11ea47e2ae36290d74af9f405d90ee5d11f243b0dec71e4e31585952ea91e08c2b1ab3ab6713022dd1d80c0f86475eeab4f6bb6de0624404267ed354552f54b75989ac2b26a636abdf69d7cfdc44b517ca91853997f7ae4983e9180aa3d318625a7bc4d82e14c3ab8c18bb89e4bc40358b59b391ab57cc0bee2080960bf8acf69500847dee069de33368b71cc84363c86eed8bfa502d62298b62bc884144ae7325a116d096e6931b997e974efc912860cf2b22620d2c9464deef1711901d78d9dd019d32c3e97416ea16ec46d50df45c8069746180eb96c20a1d0f97a4c9362675d5fef7eb0dd54b3e4fdeb157da77e0fa15e5418b749ef70597e1da982a7f0fba31738758e1beda3a9d1bca82b094c540302f5aec3a04de8da071ea10bdb3d88f85ab5ca06ad9b0e572fe88c745c9320ae77c538f1a6f73a2a788126350b1b7633dde4865c4d41c784db4e8723d5e88eb660cf88a632f999f24d219bb5347a83770024bf1ac329e977f679ffddf1ce538b382562cd46112f8a8aa966659411f1ec13a3066b5672b25ece5146e827caf04c7124c45e5595f38d8cdd13327b64d9b876d2d22b9e8970403ae3e160dac0394919b07041b46a7dc6b3e5d6014e170bb713d42a2b2982fe6759c3eeb5564b804a4c0a673de8574f461c124d6700c71b0be565b10362d9a824e5e1cdd539da58c82cf876e6a2758d452fd49d44d2a05b3f9871501c5395ae0dc626f4f66e2f4c2fe75ba4b0c106660ae39456266bda91aeb80b862a0986c52f7de92b499ab361413116f5cc039a0a67dbdb0387d38ad79e708d840f78aec0580601946f0bc3d60970400101a8b0cf7b520f352aea860a88a150f688c17e631b701f5b0f610a2db9b8ba528717107c2ad4e65b73a322185753b9159477c132200d7fdc82407addd8e999d43f3c3737532003e258f4af940dde4052447ab7890caccd3e23f619d59b746a0c88d1d250765d583c06851cf613636d863bcbde9d0f38a49bc18fa52c350616fec8cb1f120f16ed2e17dd94aa0f0f98a804717f5eace487d09aa84e3118dfc872d4c203445813ed0ed7c7bfe29ff26db7c8762a40d441229b38d0dfb9a53567b4d6eb33f2c402ba1bf2ca4c887cd1fdd31b9f581d8ee174f8e0083740840e93b4667be068f3b1eccf84b75011d93769869403b03b0b95eedaf5d046de2223cc9bce48d5d3c521f7554c9d4b839ac92d7cd12be5df01ea4e64dd37f851cf612b9a5137e730e87e68136c0e836ca0af44e4a1cd8c0c17ac74e72acecc57bf472c6088fa9b93fcd34e2c7c20e4bf05dbb112927cf0b3a7e4239293f6999e0a86737b89f55299b5be90652bf8a183243c2c20be5f5200865075c38eb03a71ddcb9a3a6205070e847eb50271594b47fd132fad0018d25cc6cb03c0fbd3a3d4143925834481a33a1fbde706509bb7af785d8a71f43cec86afdad6a7e46f0a64c50958e4ff828d96b45eabeb594da41bca4b09ac282d73ccc41369743738d308546263fe49b735b272f0cfbedb85540db307d68b59d513a7b326730f50c9836f7624ab523cfa573cd4695293605dcb83630f82c916113daca69ecdb2ae95193d31aeebaa4a8df184a2e582aeee79a97d1522954bdd09bf50d6d57910a9aa5cddb88b47002ebf74b5848584727b9bc64f5705b85f80694cdf828ca2086f81132bd2072502ce741bed19883582a4aeae4498ee8b6397a8394ee114b48bc4e992704a801ce2cb1b2314ee2e6109cf14d43f30b3a76beee4507bf523754836d03bcd49fc75d867e9108d0c60c0c4c01e6fe284b642bcdf16d6dda72ab5612b4634b787d56e201dc510b19c4995e2fdd593152e4ba56cc533220ea44a5df0e282f8e8be0b82b7d52f08fcb352607339a6360d21a1b249a1f92c9aca22e7e8308839ad140fb49ddb84d00491227ba6676010d98231448aef5c5ecb31c07f41e8595bab0cdd46621361a16885ffa9e724a19be217c404dbd708f279eba12f2629c60d39156852db5b5793104db40c0c104cc28a44ad330608077d6e62496b1b4b1afd00368b2a096f73835b3b010384e1ccd86940ea55c4a642add2d9530c10985e5a9ab14d97c6afb159c436e7c36a73671b49172014ae972235f464182098337b85e6dc3ffbe9bc308221fab6d07baa9cd38fec07933aa8cd8f3fce5c90469239ec03457c95b00b6af05baf87a2085a63e7046e0249230f1ca1c0ede28486ade080dae98f8637d723dfa26b0130272770c22ffc95b9d37898cf8453d5b94dc73b324e1f97b38468292cfc711d6a0aa8b35594cae52ed3daf23f4a07bd2f973f3602b7ec354d03d4e0c47b6100be90eb07a88d2708c369287ece152dc37679057fd881d1c44f8ac365f592957bdff096c145c39115031813b5b35b73ad3e759d15e5791cfa8a7836f152334fb012d3fc437337a6dc496491e1dbeb8a804e72463151498ea87613cbc9c572c41798d59c3b75fce35ef14719e267d02c25f3773476f7d1631cf4b5228b8eee283268cc73d9e7f086e63bf17150f8aff19f6345b89884ee42bab661316fd906619fad4f1181acbf039a4596ce6efe24b073a7c45a435c24f38a97fed96d8c9820828d367e3696d35bf9746d1ecdbf86108a13fa8dc27e4581f40a89d07153380e7cc7880fa0e6366a3a8a85edbf9cd73a7c1f00c529f43f92d0e3c802db18f2b4cf4ba4d30a9b3b6a81663b4aa7cd448165772831a0960f97c0802ce00091a290d0a709b34c470c1c0e93d1fffd6abf773ca24a6855f219b750622b35cdde4d44032f618c59b03b112280946de4b3a9b7927345d467abf783d125201ecd0c0d7ef4ca6a8ded88cb378a350811f69043d502b57c00e06d6e1b3281d2c543c1ed76a3a6386a2e8d386b13b8214fc3635b9f3698d658cf3f704e546f1a6826f35c551701461caf9a6cad39c9930e9fd5d07a35743ee27bd16df1d1225c6ba6bbaf0e9d6b4dbe0ee44820f2b89799871bd96ee6856f227bb855bcb70bcdebe7ff5c6238f934436b550fe67640983b4118f0d9018efecfc19082405acaf910b1dba562ca0184ca5347ef493e1381d414847f9291764fd5e3cad8843ef28a52c00e61a969393cb6ba02106666bc5eee7da66c160258eca99d333470706c2efd8b976bf1cdbc9697d521a54e1b64b768a46e8a7d88d24ab5f58e6e7f7efdd1f861d87cafca773b99be8ec5cb8d939290d9402e3e2f9ccf8457399cb3319c86f4e3803adaae472ef2bce933efcb7f861cba61299ed1d5dda6ec5dfa85c24fe6e614324a9942509d83e680e112533a27df4823ad5a36465dd28c7c4c82b431d39d31bec29fc1f3fdbcd15e712b30556f893616840ceca396c91cc589392be15d103716e80cc6742b00aad77415a93f83f0423cb793eb6960589104bb79a02fd9d2554d9815cac19eef176b8b15173d980a5c7754996fb6c81f5e1b1d0d23c869dda8b8bdea013f1b62cb3a5c7e4543fc71f4ec4db09d8d80a94b558ab5568f3e5d7142c57e50a4df73cd8b35a198a0b3019b01b55b4f90a1ed8f100c6ddbb0a1532c6ee28150181f1a7f6fb160d7679ad0753d618eb7b96a2cc205f56dc8945e413ed7eada20168189483041950454f83c26f6554488a39064dfe8ea28157d7d3ccee6d28ae83d0c1d729b03af2758e4e6c4d20c10437d6d0d4b701043a3acdb0dbe74f92777b43c1b5b264684cbbbb1b1df781dcf5c9f9c3dc48253cdbe3c3165487066f4cd3779e5e85ec9d8c0e460e60897ae69f5982d539b35822197d8a0ded172a173d9b1ddc8a64a55f96801f8377f62ac6a8e2d6c9d0ed35a90af46a19db618fea35065653321aaa9607163e90aaf0c01d2ba6b124013af138edb7cce9892b15ed3cd174c13e47fccc67900992504b207db1c3aac3dd0d1e178b9ba1b3fdc6b35aee68dd745299476348f967fbe0c71e554555de5969a9ee78329f205b2e9f9dbc0f9dc132933b4886e293b1d08319fa058d650255e21da6234607400a083720eb4d6a4877159b003de058a1adaffa5e43908b010e68080e8191e9d41d5551ed2ad5231a094e82fb0ad110bf086e9283f1c037d2ad0a65a47011673819291340b31377d83be48ea81f49de756777f6cb68d472fd92027888a5c049cd40ee03921cd928b54c9fd2ec9b670445ef09e8944478868602231e544c14dffd5e58e70ea6012d4be3f304631289bb4de1e0d6316b7746c8a51322e8a2cc8a7364a267aac1f77c94ccb4a67f53cdcca8f287575b9688a028f95f15486b436fd0f2934c2b02e5f5ac9ffb60fdb96cc08104327b359f2bc1c89395ac232e88027e143605d7f35a9c1602cdc0b51de1b4699c2938f93ceb1629f58cbab43f161115c0907854fbc6645f2eee39753fe54e06c57d8e9261ce4726d195f7cfaa267362eba42ef28231d5d4b0e3f3ddf243c1b8ed3d54fd855c492fcbdc0fd7860049160091d8b28995fc1aeff638d35628862dada57fea262b660aacf55411e33d096b439b9a2aa076ea8a639ff8bdb3a96ff3c59430fd138969d84136e01ac65656df3f8e997d41db32129df1ba1046efe2a9599d698d1b92e5cffe68a37def345b939746c87a9aeb0ff020a5114778cd972243ef2f12c86851e2bd0f9095a62294ff4598c7b5b08c4af191630e8a0831c616b8a40bfb0669fabe82785c2946e3e5ccfad55a0206b20cb8008854eeb42261e02f938beadd91392c40c0b064ecf1a81108c75538f13314002ac4009c7c170aeef5824fe44261d4138126cdc8b53609b9e24b33b5505291ea24e332bb22a91573e6f11274b65deff998ddb6248362fa6b3ab28f330db4f1a8a558f9f1699e6a49606d1c171924e4b780d6c5e21eb922a341b11a8d06885cc517438149632e89bd285179c7488a295625d5a52057e7f0b4b689266e652a6443300284666587f3460c99a3163e893834e14d0e5a3685c9e218bfc066424f452088da858d464c6b600aafc153099af3d13731afb8cbc40872cc5ea4a68e8f0afe527007ab1a75fd1d5ab0bbb1d98f5eec20056f26babb69208e53f5677b1e78ed4efe4e17ee31dac97bf97e8a5389722defb9b5ee7c440bfe127453f9af0f17ab86b8d7f442acc7f6b7944f5d9bdffdf1cf60b44c74dc387773c7301b24faa2ebd70cab882cadc25b1feab26547df9d037b97e036d71f5c1e8cca5cf9c4bd226313657ada19112ef6faafc8d35bea1ca9d370282236ee007f60d0a254f556183e77d072bc81f67f3a10a62cbb668ca9b52930dead17bbad75f663cbc148a8b77e1580f4e9c5fe2561963632e9d44cfefa3a7fc27bf3ba25707b813b99b8e88321eecf53fd60bb7dfd502b41ba188d7ae46c4a3838407c8ee7f3b706c2c4dee0583106d2a13244abb8c5cbe4244da4c9af100cfc428dd3dd09cece41360c8a1cb90202d3f1c20eea12af8f2bf8a4a734ae2ea2fadaa6e433cb25e5d42d8c5de5757cdba7aecaf605317c2795fb6e4c77b8ea18cc32e35a280b8aa89d8fde6c7891249c1256c11d61cc55d3b93c09a7f05d48e6b0ba4844d1589c1fee8b2c20eba588b922d32091ccdfbb759c4a54e524d71489550be5c2911b7b8bbdcef5bfe0d80f92f9e3af9fd7740f2c807cf142a827533678df0c0f42130a710efa1f28034dabf900b240d83e303ee2d0fb2795aab41aca8f9b7c7b7981f08375732ddd9005a26b5295a6aad8b1b897f00c49a55c6df118793db950286041d84bfc3bd797c97c1551cef6e69a00f162f72102c996f6158ed8920997900a83499e069f4ef16ff5ec3a55edb7a5c1a0c184f969a2ee9256e9d8e97b5e537de3a5e6ee48e014eb042a927deb3f0bd97afc17e3db355ca678c48136fc3b6b1f415529600161d6bb0d874b163129555a0e6967fc19eb39145bbf82a811bed4fa0f524b7d61aed067bcdefe8043ab05eaffa254cf79d6a1303093b61fc32fab425b9f5256e4fd3a68a838f6b2e0223644b74063ce5f518ffee2dd6711144a8058968e9bdacd747b5ce7de317d99953c0b44dce04c60b2780da3f6016c961a817839a7bf5b659727bfa9a1e41be80deb2561547d7183273124c66d8968c68c5d1db8b3b3eee18def5fbfaaed50db3f6a2c1feff3332cd3ac05bee106e43a8476f990bf0bb0eeac7c14ee17376b5e0021f560138550a2c7bfce77b60cb64ffb921c576d595ce985415003e8e04ce5eaf46155502f3cba13e32eeda6bf9a3b86d31739bee309580f4fc39e0729e43f0980579fb7a2b3cdd3dc9d2c98101e2bf1636006076a65e103cf655eb638761d7db0260a93f3cbc2400592f84182b5c15ff79a78b17ddba6b3983b9de48c295d73fc0ab2fce312967e51235d4d97242d0c7ef9213d051fc548a11507cac40f0afdd7f091caac5c8ee987e16a1b120ad6e93e314b2ab9c80dd3133281060ad71175232b9d1d328f46ffdd22675bd22a2671ccb44a401bb617da94c274d5915b0b4c94422cdbe46b28c58a413ac9d29b8dee1e6f7116213eba8d1e8fc1193376466c40f9b223d088209bfa12b530427d290661654e18ae1a99f7b714de5b7d024d57b5fbb30e51d338da0266986298d192e756fd87b4ced5d3d808db599b5cc01da928c1321544b0476c73cb5dc0737f9cd11ef391b9b9503d295ea6a94daf09244f8d18f97c0723301b036c232c9063d32c02197e171093bf21258f8d89765bb461bece66422f0e2acd02eaf9a9cf036ff667a1648e256a3e4c25680a9ef7f49332af07b61f55181fea0df253efa70de9e127a606975b8f943a009e2f82dea4c523d1d483a8e0f463dcf52f3b09a05e5db13e87a21ba842cf760c58d37bcd2134b8de39dba7ce1e1584810e3146bbb403cbf994eeb7ae7dd8cbcb6b8020875755777d5e222d22eeab15a7cd83750387ddc105b7e888d6269fd675f26481ed66a650dcfae427a8faea249f626b5c406608bc8ba50114d65734b0019f741cf35f1bac62fff1a2039651c6cc5b9e4460fbc33a9af00e3bba83ef7e277813d80ce0df29432597dba99d4573ac7cf0a0c0621c920d6690075ba227751f08e9064f1ba2b0a373a07a28636134cdde441f4b742bf87f1606889b0de5bb386015fab366b2e425d38d3815eb4ee77ab5f8b24dae1eae8da7c1281c0fd5a5b069ba4af2cf0ef0260a9408feb7749bf1790050bf810a1cbab2c1249c0bddb2fcc4b915f8e35de02be6638d00b6ec40629def6e20631920a9841d459d9fe2b0699b38dd269b7e9cc05c737d09544536eb25dd05980c10516d229aef85dd0678a2d999db5053b4a0f5854d117dad7a0528e22be7a47d4b846870e21afe7a4cb03de6555646c68cc57eb76ec0cb843397e44fdb0276da6019f9cfa42357263ecc8a6b1450061d306eb49388386890ccda853eb98b25c27db1f42a2cad07ac18b0a8dd419ea94a98e78bb7ef445038cbc1350f245705f009c49ea78da06672825364b726405be29e701d36c068be9554a236bc8384b4e36cf28884ad1691bfcce378b25db218b40b06980637bd0b7dff6eaf7689f67e1b902794461f40168ce338fae0b5317313bf23e49a485cd185e9e480a55b9b43ae172e6588c74311ade6785e8a9422a666efeec29a49c0e247196922014d2a06a52d452d1a1bb18c8ff07927d7927dc598caa1190a1ec95622ea1fa8e550dddfca06b145349145852f02cb2ff9fa207059486c35cab2350c27404ff8f015f716b167750d598db0f5e6bd5f7c398f3c7107e3439e5b0db20ac61e6a5a209176a37a4a23b11c2a1f50cce77ab4716d8e56b57a499d8469bf622c4c1354d20585e3692308c5f88daeb09018d5d0616f1a308cafc36e696c438302c2353399776c7b70454ac621a955742cdd99689499f7af561f50d0a3511eb080459af72bd71fd5331eab21d40a64fb996d63697dca22597c72ea0c27f713d91cbfc3c72c3543508e3e5531ac8ec03988b0609565745c86906e9166a1a8b25d51318fdbdfca39d7e1f31213c3aaa06c096b1ab86447a356a744f0301d193e2dc321a08bbf5d88b06606adbabcd238bb96844576546378e1a646029aac1444be27802770b78677e4470867f9d6a0a10024f3f5cc8f64d5f0f8a9d6f7cbd5960b0558da0d5ce91e61c695e28bfaa031d845f59b89981dad63b76ccfa57b8168bbeb5bd2669f46a6e165a36740135064e5e1aba69c994b1507a2811a4c07ebd769969aa92582d1391c7523480a6a6f85d30ad1626d1a040e5cfff89db8dda4a7b89da71d0443b31dd6e029006700422ffe2bec2b8b0d3b862ac1a06796f441cb1a4f02fc1180cb3f7ed451860d1b658b94ca48a2726142941cf9317e954068d1e9fb1ca8309ead8a732dc69b27604529c7deeeb8278b705129d23734b78d80506d744e716b1aca82b648e7ee3062707a8a9f4ae1fab46bdf8259677ad4594e645bf18f84bc5a980743a35ab9adfe74f5339f04be2341040b4a930094fa630d4c897d822b6ed4aba83707bc1429872b58b018a3a6456e4efbf0a51c352023c2a8a0db6d05ae46c87d8baff303813ccccc3dabbbdb9c3d14c73c7c051a207ae0716b4f5c7d5faa1eecbd834316bf324751dff0a93da3ad106772c1aa29d407340cb93160314477200ecd897763b9ae6b4ea289d51ace8662ced092307932562c8bb534c497f615b3d263671aebcfe0a827e1c53187f4d949d261be7fda2b081e8a8f5f0532ad49f9db7aa6ae7d589bfbde8e218d205b0eb748ef0c28323cc29bb33e2650d08e82faf2f3898d57389d7cff25cf10edef2537a357bb02cd16bc5917872f2bd9b30037ad3af01c6df9e34344c69d08a29ce7a71daf7f4abbe2e910e2b0da1399097e70143afd22afd887af432ab25bf0f5e066920a4289c211262b65232d254aac6351f8ad6d326f68d226c05315e4e918acf6299e48ab79fe0302f4eabdb5ca50d61ff5d6454777a4ee1963d1cf5187056aeaa5461f01d50fce00e9105c5bb5d8369f6617045102cc0da72f8db49d15de2a1f201b337703b91ff52576fde4ddef2f1d9546a3eb8fd119b3044bfe8de628acaa6d1359792dc2794fbfa8ef0167b594cd42f0f5a316580d9123b0ea8f1b3dd7a9c5dde77934e52b3362d72dca38dd12f05f363f1cd8f6f0926a5d2cb2471e88d649ba3cf1764bf7ae5ad29ddd1e7c569aa1d5b2401869abc2a834a4d956ca8538fcb22d00bc2d20a3c254d2ed17a61b8d8a962051b05ab736330d9e8235c74df7dcc79075bee4f4d6c666d626cfda15f91af525e716bea80624e8b75154b925bc128e31239c156463ccc4a42db8daa3ce425cec658dec8041ded35cecd8f9e19e30818fdb183100286faa8ae2d5bdafd3914f72d3e330dfde8b9526b17eaccc08ec8df62cbacea570b9f8ee438260c7560cf9fc26ae5f1ad5574cd5258f5844feaf22c47caf937cae7e362a71039cc47e5570bd9993caa4906e92ad102ac78a1b8d3e836c466900c3145c1a2571b42806db0035fc401ac55ee5b178ad91cc0b6ced2a3cd7f1ccad2d4ba3ce231995918c0aa8441152ad04ed771e4d16b973cee795b8e36cda95edc7651f9ceadbc71d3ad12d00ae080130b010a3c754e27e2b278b96b9232d7ff5a0ab460d67313b94bb43f1ecd8f294ebf2d9dce16cf4c11a7f5467249c45580e40bf59531e4e66b8847ca4c401fc1841ae8892df2c91c5e8bb14082fed3454aee4ea4be5d2fdf2d6b034dd9cda9a35e65c4b689d241fd62c532d17890c2c5eb3da8ae6aedc72917620919b0479e1ef357019e7044c3ac2ab7f60aa94fd266aef219c791824bb45cdc655daca57c4f47fd7ee700f1d03605ccaa8bc4ef881acb5d3db5aa1fe79d260468be85b7fbfdd89afb5beba8cc697c5b9d85f46cdd598ff3286c786f3c924a811cbfadf8512c956e584caabeb94a4582ee598e5416ebadaf883833e59e2987309e873c25406c8d231c538a18ce70941942d87c9881f2a88d456cf4017657e20a950a56739067b59b42a177b478b58d8a6dedf856ba3b0eb332795a0d5dd1b6a8ff10a5b42bb5543b4cc7fd9b04ca49ce3e70de456009743c29ec506803bdafcd4c804029a92a4a0b16a99b8ee8ef2634754358a35380296c00d1c0ef434003f1fbf8b0aaad3d482e3b3c59ffe67180641bd49dae9b77a9cfe9835910a23b7a62fa28f9385b22fee10e628d73ac1d8bd2c7d39ddd1d2284f78d310dd2a7d2607b89c7b5637de95b12ecfacab319ad02e6b857148c04d56742c7e803228a3423c38a284959f0bf7e4e6635618e11aa9cf6819bf63454faf7e98f4c410c26973f22b20c9068dff8c4f1c51752a6143fd4042b88bb1a61efd2ef7659a0d54742b18eb573123f34e6db392a00a0f7e8b8e8511f9eff1c2ddb82d1f3efde4642ac91030b812f2a2e3124ca39812ca3efd840f2370333927d4c1a191b5c1f0e8239fc403747c7e9224f7b194cba2501aa3c09cc7e9c60d0f25ca4457558d896e46343596489d99f0e4165f4b05879a5fb7842c03a01c812a4c29535a500505b0c2091f893bcd40d6ab10a2a9e74403193ea315312883fccb4c2a324df42c836cf3efb8dd82051810f0c363a8109d5bc7b9aaa76359c46d270a79d05b5da1d72427fc0cd7d1f64db68fb7947694f9a9c91918f5f3cdc2e1946068270827b9f6a2a320c24bab8f05f4c677ce477677459ddc4b64d46465edc3c05d50330bf9494d7130a6319e17b84c585a04d356f2df20d8c8c50c5797b2aa69ed0177aecc957d0d6f0630fe890db3d2e93f75d97a18e8e0bac6264b4c376f0e7d705ef2a225fea5f14f723df0d9022bdc7173d6863e5c974bf68fb1f3d703dbe78fefe4163932e904d65cb2d83fc38738fdf82bbc01169efa2d6e099d3d02774d94efc914a7979b4ca920a5912368cf1bb8c2cee3281bb5a152b5da2ed5d3ece937e4f5e3c3aa984b7acd8a4db9698f46bf1b20683a021d8a8f2255c1e4c84982fc198bdc5fb9b11bc3543b06659e4a2a5eac2dcfcf34fdf249b56da4c950fff750a524648da8beb4c8f8d3d21e48deaf72fc49907d553adb313a4c4742714d1cf8a12fc338f0b45a66d2e9ef7ce17bb8a8900f424f811aee27d1bd9501469292b37c949a6130d90c24890d014f247359df803fb5fe46527a0602dadc6613bafd952b80823334772964fac4a8bce6bf82f51570a3d638689aeb370f231a796ac73e79d7264612504a1cb2ed98ce12d561924956b55e6221e723b42b8fe07dc1934eef50217f198cb21c8fd37e6caa470af14b8080fdc2e21dc9f115726857badc24578c0ed08e3fe06dc9964ae15253bf931973384fb33e0ce4070adad70118eb89d215cbf09774602d76a8d8b74c0ed0ce6fa18b9b393b956152ee201b74380eb77c29d41e25ead70914fb81c02b83f33ae6c02f74a998bf0c8ed16ccfd99706512b857145ca427dc8e20ee67c29e4de15a51e0269e71b903b83f63ee0c40b86e9a7135c171ef3ee6122181fbe823975532176d036e1193b80ebdb82d2773d11870899ac87df2cc6539819b8611b7c829aee3cf5c1610b8691972894de63ef6c06521899ba6895bb464ae830fdc9610b9e8f238fc0c880dc1231a0c29efc62b9aa5511a50eb1e09cbc80b67a4483ce1f45eeaebb9a1d65c7d0d37ff01971b1437ed632e1113b88f3c725b2173d13ee0122189fbf08bcb3232378d032e5113b94e9eb92d2770d130e21639c575fccc6521819b962197d864ee630fdc1692b8689eb8444be63ef0c06529919bce984bf44fa0e907937e12969658150d90eb52c29ac420612ebf50314369f692c6aa3edceeea385742f3869bf1e5cd6d2f9d700fe439f70375c87da11cb87f8823ee07e59cfb409c73bf50875c17ea81eb8738e2fa50cfb90ee439f7033de4ba500f5c1fe411f7837ace7d20cfb91ee843ae03f5c0fd411c717f28e7dc07e29cfb853ae4ba500f5c1fe288fb4339e7ba907274cf214efa71f93b6039b854557bdbba02835d46e65f805e5aa9f50ffbd3e32464ccb70e398d740391dbf498d7d5c475df44171fe95e5971911c70bb83aecfd99d4574af945de4b3cb2decfece5d5954f76aed223eba1ce1eeefdc9541bad7d62ee28ccb35ccfd31bbb292eeb5aa9b7c7639075d7fb33b83eaeaf5bfc28ada5e5b2c70a558f50de9c68dfeeddff229ea2cba833d286432fb4a0f5f57febd41e7bb5910bbe254fdf4dc5810dd7d2933d95ecb1db5c3c65afbf74a7801309869751f0897aa571ece85beb8f5356e8e93cb1de2fe4caeac847ba5e0269cb9dc21f7cfe4ca26b9576a2ee9e0760db93e037726c9b55eb9094e6e4798eb3f716551eeb5251737e9c76d2e87b802da3d37c5e7c56daf84dc0ced8e9bf0f2e2b6171f6cce7edb33a8b01360e77b77203e6a7846ba69a7c0b00a17a70db83ff4957d773ff5bbe4b6177b8230baa478bd326667f4c5b5db6f7635e472edccb94592aee3a7db02e9a29fbac5d2eea3a7cb3aeda699bac493ee83a76b8976d30f5d6249f7f9db6595e2a633e0164b660e3483267647f47617ddd12d96ec3e3c5dd64937bdd1259aea3ec9a3faa149654aa9eac8880360c55de3bd234670910823eb76c41dae4b02fe21dd710046d2c74e8a55da4e08737792ac77f4fe042da24eb03249ecc8b8a14408474d28bc052930adc249ed8172f6eee44134bb15f20c917b923b01702ec4526c0215f74230c3c8ed714b8435b16b2bf9ec51deb92062f5677aa5adb3ddd34a49363a2fdf462443b366cf8c1baf6c6ea4c7e95505ad36286f44dba032c120dd92f156532506f72590ccec6e1a022c384d02003354e931b09e467defc2e2bd423ccc956ac57544be329d41a9c23ad2a9b38c54b6564964814582e6fafb8da2a1bfb4ba26e1ffcae390021ec5b58f7ed83b92917aaee45158dd2362f10c39a286500b4278db0ea1078b4f95b6cd6c4334c1cfcfc6aac40196f2b308ce92f7ed6249ea57e6bdcfc0eb1130d3b1b686f3206df12775c405f85bf401313f500fc7746e62b1ceb633ccde3e4c39d4fdde904084da1255adb0d9aa7171d5f094e00a6946ac58d038747a8dbcd8d4fbeb074461ec0c05a3bfc03f715637f8f10b284c817d6003c2cbbc4ff6bb4ecc6181dd033a45cc971527ec1f740b5ce602aa371a705520a0d1360709c122a84b4030bba9a22317a2b0289366d2ef014d13c2fb966b66ada79eb95aaa8712a103ce39244361867ce29757cde8ba3f54f410403d6aa9f817ec52ae3c68edc728fe96365a5ada444a29939401d5063207e106cfc34580a5d600963a04f8e5298c0f1ac8d13b183cb50630921ecf019ce403f933432f7f013c9304043fe447493ef081877910bca6712d20c83aee073e722d1f781e0e02a961f0cb0772f40e48f6009611c7cb778003f9e537d0e3358091f4c82f9f819787c18e8197bf007e790be09924303f8535c618638c2cf01a0cfec80d065fcff3b4e61b0cbe3ccfd3208f16b7020ff349bcc6e15a92c83a6e0592a8000c7ef98b2322ea0ae417ca817979182c3510fcf25acc385b611ee6257a464c33a03c429af126f55813c108fd25c630a2cd1052bf601c223c1717d4a6da2e886b017928f9f223e7f2201c29a63ba92242729317912b5907a97250a2a4176c6428cb206964171225434dba85711ecd939ee7791ea665589665599665d3ddddb22ccbb22c6badb5d65e94a3502814cabaac28a2c8b22ccbb2acd65a6bad94524a29f56caaa952a9542a1b7e118661188658adb5d65aa9b5d65a6b6badb5d67ab28114044110043d0cd7755dd77565599665592663b35edddddd27866118866176ce39e7a4599665599659598b0be7d275af496e8b9cccdc374ff9e4cc9483e19d5f8ce361d779373b3ae7d41ce49c86e3fed7b9f0508f67baf478308e831bd7a2c9db057b6d9d39585b670e522555d6b2230cc3300cc3aeebbaaeebb22ccbb22ccb5a6badb51ed04110044190d228a238f9300cc3300cabb5d65a2ba594524ab78df37086e1a4825a96655996856118866198b5d65a6b6badb5d6ca6db70b33a4545cd7755dd785611886615db62ccbb22ccb5a6badb5f5fbbeefc3300cc3300cc3300cc330fb7ddff77d1fc6b548c975dd476e9b73ce49e99cd37a3a73a05b670e1e97eeeeee734eebfbacb5d65aabd9e973ce49a9f04eadb5d65a29bdf7f3f9efba1c39aeed76817ed32dcbb22ccbeab2b5d65a6b6badb5d64a6948c5755dd7755dd65a6badfdbeeffbbeefbaae7a712ddb73db47aedb28e550daa1f556eaa1261887c60e47edf14f7edff77d1fdd828fc2300cc330a4a1533143237c1ffd01fdbe19ca1d517c9f65599665d55a6badb5d65a6b9df5fbea162ccbb22ccbb2d65a6bad6559966559d45a6badb5b5d65a6be5bce3f5d6693d9656937a8271aa05fd0c988f8dfa498f395e6c7c72ddc275ddfbf974d65a23be0262f9a771c841c31b59e62d5335d09086231a5a6badb5f6f38f865fadb5d65aadb5d65a3b6badb5d61a79784bf7daf671c34e50af2b9fdbda990defca0d21b5c53835ec488f9bcc132aa3ebde632265602b9f8192622d1a0e52f11a3dd01e7a982e7be801e360a128aaa1ace1e7c91e0f471347dc14a2c85a8e0673186f5a8631c6c1426b9a73eb68573b6b51cbf25c6b75ee722d40dcc8b5cc10db3a2cc3783b2a6373e9666c32657301e1e88265f82e61de5c3e1f36016c12c76eeb08b0517a802fc79680056c2b5b670e3a3c0ad842316671c78d8fbfc51550f7dfc363fae48e1bb986f2077f1b002cf46189f65fe186e85ebb21124046ca66fc81008385b2b04c972c2c18921e8f8553d4237759faa4d55a570d31997135f176e1eea88aef8128aadf28eea09f8c405c71f930d6441ba761013d8661188661f5a3e13705b039378032687f1d371d10a194f667e186901c18da5f23c0e6787335da7f073784d49c17d6bab04cfb8d9382fcc1ad89b3458e9371b6f78ba3c15c14220e7f17cc1d8169228e1e184b83dc41430c0cec8bc8f27977b0b0865858d550c31a4e9135d150eec8aac5228a3c58784c580bd7d2b269594b0bc6e168220e8fc963e2687cb0a6016c2ea0bf41c348c319e14b1886950aed2f6badb5d66aadb5d65aeb43adb5d6ca03b9837ef20723be02a29fdc91d55a6badb5d65a6b1dc00d9719d65a6bad35fc301443e812dec89b52a1fd73adb5d65a7fc60bc8a5a394524ae98d300d607c1186611886a14f5aad75492c860ab0b98036e960ecb6bcef8d0c72c194524a9f82e4e622b7cfe117614803637ce3412e758b7ac457400638c0265194524a2945d97800d850a9542a954a15a6018c2fc2300cc330a4df755dd7755deeeeee2008822008aa542a954af5030224119108500f35543ccff33ccffbb638a2c5f77ddff77d3e69b5598661188661d8755dd7755d9665599665596badb5b6d65a6bad09e05ab6ac31600361a95db0d4936609f3085308530b1dafd0f167155134c178cdd2cd15ded447b5eaa6f77ddff77ddff77ddff77d137499e0042738c109ce3068ff8f8bb5373e87c8250445ed12d64fc7d6e12869186f17ee9ef473ca0d21412e3f65f8c516ca700b3f04852efe69f17ddff749cff33ccff3bef8b4f8beeffb685c90cb76e79c73ce39e79c406c2e72c7166bf424dd410eb10d5f88218aaeb46ebe0bbca70fea69ba9a1c36dff77ddff7d1f0fbbeeffbbe3b5df28d7c6f10da3f455a9305b958ebf27187f119fee2375c7ad76d0f7201c1cc78b911aa94524a696eb96728ffe29470b994d20c4d1529d311a32346478c8e181d31ac8e1857470c93ef8861f9a4b4d66aadb5966559d6755dd775757e4b30aa3cbf7568933ff94d848cdf3225ce6f21372d9c2adc19bf857cd735444a8a1013288c38e68748c8d1c6f9d8501e098a9092763992299f9ea54f8d5679f0a681d2f32fde34f006817a3e07ef941b3dffc2d93bf63bc5a4e7a794340d23d9fea4888bb69f7f52da70c7c8890484307352c4e4dd54214d51c7045a4d514a2986e6cf7dcd8e49cf94d2c9e9022db936150fb4f26efe17774fd56a2e99ab88637ee49090a3a99a162ae2982f6da8306b638a92e9034f289a1b8ff4a53c522947f79f5b932347f79f4b536361e19aa51bebe6b3fea5265853272a4f2b3a92925ef2b93046718a222abc5257f55e47ca11693a1d7fff62b971b8f29a261dd6c8418f2a3b524db0aaa80c294a7ad534a5176baccd48e21b878af724c991c4fbc6119d36a60f3ca1686a4825d387a2a9b1b90953a492e9034f2b552abcd1f1f96e9a7458b3048220088220133a3edfe5d011823aa63da1686a6c6e4c2693c964328120088220c844543908d26a32994c26930904411004419549821575d1dc9a8fcddf74a177916ee963faaf034d2693c9643285329421ca644925d337721b93c96432994cd23359d78af421d55cf7f35dac892352e9c2e1ee7b4d118e232d5ed6e59dfce92c4aa09e1115486728e93b29e9821229ad6a54755862a352a9ea406728897ad4b3b9a688095530a1a4e3d7882c51462a43efcf16f4343f60a0458e78e72b31fecc17bef1f74533056ddef3edbbb5f663e95e979daa1af1f63ade4863bc3db8fb7337fd7c851ad19b0b23dadff5544d95f6f8f464032d36e0c62bdca0a4e3156a70e3061daf50839446792c9c2130dced31c1b0782003407e26890636f0fe1ed44c82811f728d2cf0be92c4fb7bbcf0950a7c052ef0ce810efcbede1449afc70bb890e3713e0e0da7e3753a349df07a5314c5fbdf6f8aa478ff4b334531ef7fc3ce47ac89363bdeec98da51b5e36a4bd2fe2d4b427e4bd396e096a72d5132bf65cd9636f266cbd496aa2d57db49db4bdb4ddb413f6d476daf61c1e668b6df6c4f6d576d5fed49dab3b4a749e280a309f27b9e262a06632629f01505be6e66e8425da69565a16830036c5733646f6230832d3843f6f3301644e24056214b54c81bb8008a163cc0019a47100950c002203052429264e4155308d9d20692480d60f08302484cc0c71146f470c15b6a97d780b8928bd724175862818422bce4024b23bc9f5ef339e936394984a749b8c012095fb9167984af58bc16adf6f297ea5a0de1f72584df17fcfd41f2fb751784df9dee80f03b87ee3c369f233fd882011fa7088a5f79d15fa60b354547bcbf7563adbedf57dfd0e2c6471fb25880021210048f8f1a01397e3062bfbf6551f6c607366cf4c0480826ccf607f8384529781c06280001421f89f858c44709bc4402f6988e803d464ed8031a017bb82802f69c92608f122eb007e59dbf2402f674e11d16ca21e47d5d21e47d3f60de9f4792f77741c81208d963334513f423d9c6f37ef06d91e5a545de97fcb25f5910217d906f0ff26524ef2b04795f70634b88909fa0e7e065917799f798df578abf51bcc9b6b11dbd60243d5e62213d1cb8e01d8af794c9f4a6d782bf1bd7d10b4672c411ef314d7f899af37a3c27bf311d4d3145a78aefb0e0ef9b3c7165d48de748063220d1103165e99b781327feaae03776238c4881e79b2226de5faa241528f80bce909bbc66b78de5e80523f1e1e33da67b39337e5f4fcd907fbcaf59db0b4622af788985bce23d260f3845f206afc42ff1267f5fbb300e12249e8767dac3299256bcbfa7a628c8bb90f7f7d514c9bcd481f45ebee0fde71114787f7aa2a8299230f809bccb29de9faaa648cebc3f5d4d918cc1bbdcc1fb57d0bf9efc2b6a8a24e94def5f53532467f0fe5535459206ef5f575364c4fb73345ccd14c91abc3f67334592c8bbb4c12321af787f4c35459207ef8fad5ef2005bf00a6c7d606bc276b5036c4d005b47e00ba5037cdd58813153118cdde40063281ce06b5505be4c256cdd50812dd30db045d900c71992c04b2258d6001b115734c07186867839031c67488897242c65701a82e30c45e0650c709c2108bc9cc17186462fa7902918e03843fa7fe038433c9e0238ce5010f205587a5806c7196ac00bc141709ca11d1f83e30cb1bc14380aec020c058e33b4f22dc0718618f02cc02bc04fe038430978156027701338ced00fcf048e3374804f0146018e3364803f015e022b81e30c85368e2324e20bee5e93db0b1ec06bbebd6001bc36b7177ce335babd601f5eabdb0b0ec06b767bc1f9350cc338f6056f0f8323a63b806578f7f21cc04948f01ac01b3041095e03825d9b406e4048f0306f8212e0ed0b97042f302f40320cb6f4055e1e0890ace3c200c1524b0ee65fe2cb6bd60683add6ae0d0657ad61db06b0081e0318c9088060aa3940ba4623f80e602762c4b165e8976f4288a73bf0da08f04c8f1ff2a31e39090ccc87e0452082ace3c27ce45a60029905326a10ae59890c25cbb2ac66fe1573bfe11da3b7775c04976b86bd46e365d8781af909ef6c642727cf63a23cdd4f681bdac63fde9bb6f12678c7681b5f574b2cd79292755c0000203fe19a6616488d52c40c8d9289f0ce06e6e19d9366f6f4e5ca3b979a65f7bcab4ec4bb4ebecf64f27d6616d1f2bd48648934cb5e05abd48b556ae45ab26ca37565f59623b045cdac787a3cb8afb1ceb6334c44158d8e5f73703fdb94544f9272ae976f499454338d3449b407b33445941443f2eb89e2218ae44d0cc95fa148b0820652d052a2c1ce68f9920c5134bd4baa41cbdf9030bd7a8728f2bcb42ff86d67209abf6d159e979eb9d5b6f2e4bfa99474594b63036eac19a244c79a24787ad7d51093aeabc8528f1071481996e0a3698ca67bd332fca4b04aa492bc93358b88e3745252c3a85dd42c5454b5a937158c4a53bf2c7625d523f5cb22b290a6a84ab9f2ce7a9484e193138cc6a71e21b250b944aeea1771c8cf6a96d5ba04b44a5c2480cfcef84aac11434abedb8c61466fcb09c77085ded652cf5772a0270ef4deea1759dcb55ce2a24a7269f2d1326c7d9d6599876727f8689b95c07ed4f921549ee62dbd18399a7f718ce76f8d811cd5554440e7bbf6b3af60ae1f10d76af5a47d55526bb58f5594af68d9e68aaaa78a9233b8bb9eb22d59eac9bb5d4f28efaa9b92699a25c9ecb52bfb9ae51220ae7df7b21a57f65a96ab0c679fbd5ce29db491f7d503c7bee72b599658c3f6e49ddd5a762fcb95774bbc1071c897ba9e2aaa73837ac43b29c15c3f1bdcf9bb7e5abedc6e3685bb6b3dcdb05253f757c1ef8f441029ee0f91a39b55fee52a72f993a7e726cfc1db2ad1f25350f0b65fd0f267d4550b7d0c9bbc0cbc97f8686a9265587f5b9b51e16e797393e598ec72515d65792ff1d1d947ef2896ba93c58d9ae67aca941459a25ce2a2f9f29be88c31c618ba2aa94bac56e5839eb070f6bb9e9478273329dcfb4848af2284d448e673a63749da8d9119c5787ec87d5f4d91e72b4bf4f6dc536c4936ae7c70b3c7de93633a3fe4e6244d04a1eb0b19bd12f483d01d1c23471d8a9148110399d1cd2e9839468e628604b91fc44866349fc7d424270492fb3423912248e7838c22e763ba60e6181f75aee7e0d5def496ab6d896c15e52bd9185aea68699a2b2ad71314aed4517e3d5525a01d2dbd515374e520569662fe1069334533abd08fa3f9f2258daf582cc9dd9126878e19927535bdbad2d20d7610c316f49e1e77ba42a68c15e2d70f2268aef2424b63b516cd15b1e586901acb306dc3b20cc5a9c2e98537aa540dea06b58a343e27a5066043285d0977d2e0c6ef54cf3947eeeefc199c70bd3b9edc21b52068a72fad8e47aa1a93c1dd5aa908fdebca0f35722f951f961c5959e5fa38b25e66542f4ffb3c9a77a7a49d7666bcf30ea9c359c3dd33f5f99884350973ca996446a87d5213937726464c3e9345a3d9f8cae6dcd0585ed0fe9ac9574c4cbe6244e33aefb0d726122b65ad154b990de021ff2aa71734105cd0f277a479f997bc3a70b8927a9e0f9cf70e7b2b97228be75d7b8b668aeefb5b351a27396a70eedd7a4d6e5c1c69bf3513d37e199dc3f9eff873de3bff06687fcd04e37d799de1252f1d392b5a71862898a1f6c17d7019734628b129785dc0252f29a794f4ca21ad2bafbcf24a6bc9cbb2b54aa9e30713610805cd49f8f04e8ae1aa9808a188a998775ca2fd3b60e3c3575c5f6985fbbb685a27ba7b6870e31216a6f3c8ec62a2668d17139c47964c4a6bb5d6aad65ad67561d67561589669589669dab67151db368ee3703a5b181c8fd3b9445c49166a6ebc8072257e5ae245bce49f1b716fc9ca8b32dca4c0a8f18246129147e4274f920b59924424c9533ebd30eb50bd6023dde7a4b44a9f93d25a2dadd65ad6855917866599b665dab6711c87d3e1389dcebd1e8f89c9890c193366a0a47822de0bd0f24f72cce086905a9bb1c51af2675c1b75d18cb3721c474ac6cabde29411448c785f3602558b2dcb109f874fcc637eadd5a2b55eb556cbba2a963559331139a850035210ce6043a5e75695a051287813268502add1b40937c5f2c2b355e3ddb4bcf06e5a59d053fe5b34f40997be8a10ae3575c2dd168d8a4d0d22a0d5b568b676d2509617be22ff7ac0f6dbb2820336a7b745d300528ed1f6dbda829e0f0a35949e5153176def5b9ee10ccd9f524e4bd21453ca0e52ac48a9223260be734268da734a47092838ced0b611eaf91b9e19f2a3992177f47994df5ec5fb60d0181101f35130080f5101f3370cba4364c0fcc909c169cfa06b0977a79466c77461d78e91a0fc8649d70825a714f1d04c29ede0ae28e7aefd4dbe62a47304c79323de4df9eed7b52fed292ff11233fc8c78d7f9de52e1764c53244733a66424dbc937455b3e29cdd03c39911dd30c499dfd3c31f949c9bbf91d38dcecf74949cf8e297b1e6e1278f3a696d2b0962a838703b9d31469a9554aa5afad3fb91b0d6e2e35453532077af2cdabd55b79f5199de2acb1a5549b6a0bb79bed46fb6f1a6ad3501b6ad350db16479a85e38e6d66538286bb99b46b29bc791a076fa41932cd90b6dab64f08a0cafcd7529b3745a0ffbcfff6fb5a2fb59496dabe8fbc1cf81a08f414fb00653fc3f9cf8803af6b661f35b2cafc1ab3c6ffc8be46e7b39ff9c72786f39f971921892c7e2de146417347d0ce85fafa9624b2c81c93647e8c9655e46733ffd0fe936368641599b3ec93d1781a39c8e7b78fa3d514d15001756ea608f4fe5acd14d178ffad85da35948f1995077d8deffc0c8de7686160ee04a281399a4e1cd5a85ab89a2a95adb2e73e892cabc8d75e66c47d129f9cbdf63fb2d7b20ed7799991f619ce32cbfaec7f589fbdfc2c7b4e8ec9acec841072be1052650272647df62a40b2e73ce7baee5d697165fce6c06d05c690ff9bc4bbad521a4a43599d00a1f11f1a315b6926ce9f723eb497f87a2a340be19acee7405f91b1060e46c070510f349c125f8952b829e285dedc493b57a37d7336daa57023053da596f295bdadc2f09569855ef9cace6ab6863ac92694bcb5954669a991a6d2525a6a5b796ede5a6a5ba900c9fef39f1c84f3d9c711e592e07cf6b483e348e2ac26e2c86aa608a51f1067686734363591e542c24756e769a6487bfff95d1fb7b779cf1afd7bda64a6ec9b21ff2beee6402a6e1b622ab2dcf7ed05dab53b68d7e480a5de566e3f4ed7f6a4a7689391b1d506622bcf964f3276233376b39a22ce3b276ba96da53d73729c218c610e9c212ed4a90d9c22cee33eb8db9eb4a7c1481a3c3de55735485cbf883f3856a19eb69ed6e656cf7037176af7c1dd38d184bcf4c481fcc1bfce2aac95f1966b91f1334e5250a494299287a7a0cc50a2fd0477314b11470feeb64ab4e486d08c5c5732ad31f2e06999312ceeb634dabf0bed286c4a0cc3302c5a708ae2c8247bf2cd9babb17973369c1c6d983b61a93930e2f034c6831bb58a8f99ebb1f768a955e4732ff38f2d86f3dbcbcc7432f7339ccc71d846453ee76546372a32ffe07e7bf9dbf69c1c1367883bd5a0b4734860575cfa43447d2d21e2702e63a62c5f274e0854c4e1e92eec702517868b32531db43f9792fed775efe7f31c08e698251d5a17de39a7d2fe99698a38e74edc121397d2a123478eaefbff7cae6996b20f3ca168f6ace1408d464379e7afa1b809c4518685fb1c6a8a668903a74843c5907fe9c381da6749bb86b2246bb29fb6a9ebbad7cad603c59a1cdc2d4d278e0b6c07973b71a00eae8afd18fa0aad295fa93972788dde3555a45a713707f2d0d1802232c24b082653e9880e5ac490bf4f91a5f203fbf831c7c4c7b2cce85e2af62d159b2720473f439ec514bdcfbcaf76330c21e9193ad6c440a5a9ca8fcecf9f3946e5c7fcfb37c7dc9f2f33eae4183945690da5911015209db7bef3d6cb8ca20f9b3b75b6b8d1a3c58d626abdc86275f692b4d5a761dcf9f7b9f75789def188d846da68ce106956dee7e6662fbf8562960bab045b14095330dc499ade9e1ebe31fa09f7e038e278f09c991e14343572a94a7da9dfca6c7a34ab1441a5006918e2d3acc4478fbaa1540429c5f554d6cf6a97118161181272a4d12bdcf9793e90cecf1c24c90fcfcf0f1267a89381cccf398827df4cc570775de9bb3f34f27e2cef4e6f5cb8d8146e95d9b0678bbb89d04be8d058965d3394bda49177d7bd963d673af46b35c3de16c9302c731fc9c76a46f2154ef3299d83cda7445c44da6869862425e29d7ceaf1127d25b2afbfb3ec9e13f18e02c1437f575bc45736b5df1289a2e55b2ee21b3292af702f9f1291ef5e24e29899a45c9f92a668becae846c03b09a24cb8995b9b6d1c8eca6bdaab689fe7acfdb804752d55c28df4ed675809faf6354aeb5b972c7b95af19d69e6a547bfe707e8b1c87077d8b69dddea23ce5bc26c339866bc5b07c37ba7987615ccc9777d84bae08fa281f9d3b62b3f19c8d8f5c8b8bd4285f7110cdc1363ec3ff846b1494145b978038285febd3e080ace72b946679f7f0f62dae07e869f6f91a9fe53de36dae2bced36cbd2662b412993fcdf6eb11db635fb95cc4f6d86f19cbb1be8d97c0e7b7e7e146d4ecd122e52bd6b4b7d8d3df54b0e7de62b908ecfd3da6626f523fdbbe963d5a5c9b9ff0948fdc119fdfb21234bee227fc93298db781f295460fa0b75f6bcce0bce580389c8c63b38d6b39c9b68c63b12d6f9bd9af2bcf7a27357b6b3debd12527282759fd0c9f9cbcc6bdc6e1cf6b321ce61ca13d8dcc6372a0ea9eef46b7a9eb73f8f3dc73b47cf2369e93a3775c3ec95b86c7fce04de34d7ec3ff20bc63344a0f2cfbc8655b0532a0df9ef3075594c7b0b96dd7fe1f28f4a6bd96f77332c781def17fb62d9e01a8f46e15253185684600000020002317000028140a8643427118654950937a14000b5d8e506454348f88a5f14010434b0c19c200000000000000001988e8017f1ed489de3278b38fdd64e1442671673224837321bc379fb9c426586febdb6d1b7df862546f2953ab9c4b2e7863f3cb6fca9fc85fd58f790dff392af6c4e661846ee9f8ee9d5650e628224b904541cff2f78c577264511099f6b0b3f322b2efbc5503421482febe823dac4691251c795560157eba466534f80bbe741f2282c2853cb8a206bfd12060cf7317efa8c6494c01a8901041f478a2c15dcb0246591f32ad6c6967ba3f6624498b12faa51a1481ebe461cc768fdf47aa48356ec43068cababfb835c815a088ba0ec60fc9c1ba11d58cf6d8956bd57df3b75b790c088fb53b6db9cc765f0a2568a973b497d722732a2d2223fc69bf88c30cba0f2478f616d884e2ab845e419182a3f11791a2bd2e21b6bca190ff9fae5369324d465b0711470f42d3057d338c36960756271dd8beec107fa90f994fc751f11d637185ec4bf6044b6102f7e19f758e193c07854d33bd8a485655840f91114ac6b73a2e06ab5445f05392c3a36858021a0f023519ae49c054a8efb9d768562ebdec637318bae2faebb7f0a0b0a5b5628cdab9ab17e9594cd12131fc5f85b4912d44466ea2b5df27f8686dddc9c46681dfa44cbefcffac5cbcc701cff1a009da2d082209b4d5690dd8ce842d0bbbd8a4213ab6252ef1f31f61c16cfe54d880a6a040ff6946ec59285cd0757f264c56b2ef6b8f826bc9b4c87e7c1e1fe122fe68ad175852fbacf821bdd5f084826b0d4980194b70153c5153816f7015cd1f38adbcf5689522d23344e78a9756fed093e0e5cb5f83b3c15bf66f0d8a147c6dc2413432444fcdeb6e99d37e021ff215b7cac058df234c351e98f9fc8a2c35ac7984db6fe4e54dfd0f57b7a2a77a8c03d9ede34a6921bde8d7ca4446b723abb8b729c1afae1c446c47d0b06a1e548c3914c8b5d270c24723cfba42fbe697bd7059327c48d8c133bf3e1a484b78581d492067cb36f8aacbbe8ee63372af66a2bcd1f681e38c0e1af6e4348807269db03b0fd8db846464dfecd07b52c5983cf7feea9d95d62ec608d9bd93737a84cb845e88c04ed5920883489614503a8cae15db8dc1d57b1d5ba2196459638967d0c2a17bc3317c45c8a8171b7dc11c47dcbdaa9f1051e94a4ad84c9e187864251349d9729b27f8d666f50f9368962788ee454e259ad820fef3edd8b5140e92734c5faef68025c57a39e52071e6b6997b5ce80fb1f52e0824dd06df1b0cb3ea5a530deb3ea7f5c9c4f0380e41c762f6c7b1c0d465466fc489dc3a38dae74d552f1686d460cf0b536410d83daaad700c8a06cff37a6dede16860667e97019e10a003d42030cf3088b4262c51d6b5292d8863180d8ad007cb681217bf919b550e3cd7c77089d628e932acd750d0217c738b57dd1ef3027948cc341daa04952240d6d9529c11ce7e0b223b156c245322790120e9502e476ff75d5596f07ae97700fff66449fec8787805af5fa2dd45f96983f083b8fac90c2675be50d97e6d082a2f8d9f9b73309a492928fd84b1495f64c773e33148d41933ed8601b7c496930a989f1be558c936eacbd4456fb71079cafcba84cc12f7895850cf3164d23548f0dab016ac697b35780d1a23114f3fd9870e1165355ffea3a58a643dcd0c43a584a3718690f605f3bb7e2c958f2cc345488a80e82df13d61712c1935ee0996ad0467e508926fe36c137b36833117cd0eb5f7ec1f47f3a24d46a88aba81d6a77787019742bb20ac2a5bdf85b19dbb06b747f5693aaba6507f106a69439c8e46573a4e8db218707412f682587f0c434ba5378bfcfae6af40c550e6916f3c0fd3c4f25cdad216ab4a34ff497f2a7aace78c56ab88911e88338c4d2409e8818d1e226ac98ac3c6444e70436fae9979a5238b438326f5aa7da682f3e74d30bd3f0745226702ef81d67472225414d28e96a9c92b4db92ee4f9144a009fdc7a8fc19ef48ac6d78955d6ac932af83318c1d8b62564568a017114aa3f83913518105d0bf8bfcc8e8074e5ded42211d41b9a753ac5211790164e2dea5098ba8a30d0439ae7bf73fc86e02ef68443f462df5f9bf3552bf6231ddce46a4b272ad35c8e5cc3177c894097b423c6ce9de404609edcd8073de400605b7bef810bcf0577ec48d443ba23e494b1e8f43c3ecabb05a952a2560c415e3cc399c31e0eeafc05d27c80f4548c1f15d9fcd065830f3c28e329338e45c2aa885f1f500b66c13119f52244574d835e3e21b26074c217693f12c4fea4ceb2bf0e7a426055f105ac69d03c0c3343d9243d63e734b215ab7ab2c3fce48fe45614160e190b019c92ef4c180f6fd9bf307b075e1bf9c5b46cae4caf6ced95ae4167741fa33c7af91381e471a661cbc797ae61eca95456cc8d86a241539983886df6144bc0d8f5e0b8cee76643aee7d68a1efd6a93167cab83bd6133eb86613408999a1ac0a91c1f43d6525dde8da875173a8b2cc80c2ed7650d17fa681a621fb93ee29160ba0d2879d846043f14ba831e1e01719d0174e4c664942eeaa1338c4f2166dc3a2850fd764ef7bb0456508e8627d51b584bf79278299a67153196a59e02dce8aff8b93815e6dec5a22b3fc0e81b68c092cc8c4ec20fcc603f2f34b5bf12607295cc77380cc5d69f6d96df951015b85c3d4acf59a9dd4dfce3387855bf5c7bab8933ca115b25a9bfd0f901e8c1a07cbf7baf1b443939429ff77387c74b906e875cb23389862a48c1652b2bc25c26a76f7adfcdc9adc9bd7cce068186f6d6102587f6c7c15117b848b9148cc6b1ab95216931e670f8643c1b82c6907896a4a4877ad2130e033ba3ba1d04adf66348ea7ab97eb52c69ddc396e3d94032a265acc9bbf8917c56f4a509d25a89f4170e968f0cd0feb001c3c5f731e8f0e594dc2d1d1b8d65a031267d447c027563b95e925c4b8cab4b18448591b3584fdcca3d2a45a80c33e309c555ad89746e582f61cf0d240189e22fb626f8522a30b3d8099347da9def6127a6f5e35b444fd45e10d2a954206f4d59a79970f73ba124cc8b80e4d4f2b92ee1534d4a1049f88aece7fda702196270159cb8b1f839e9fb0c17ffb00ca69735303da14cee411ce3fbc3750c30a9abc190dc43f91dd1beb639bbeb82bd4b7f5a33428a8200913937127567a38a3406bc454f759da2b48cb8354e5fb03e9f64330547f89a1441d18317e6fc2bf83a25ec00d79200e8d0aeb8b86601aa0165e1ead758cc995f8dddab56a123264be427f27c128c7dfc134e221a5e961cd2a4902035e8fe7dc8a96c4f87a1b3ca047995e66fa9612981c2c95236d40ef9b4b0d07d7c418fe8c3cf42f658c23db2cfe5ac49874d82390ea730c0d1b2e0b54bcf1b0340d87f832f047f6294f51a5cb1153f65215cdf3bb2329553b5ae8a436b41aa23d3d91512f779f353832e20ec79d8860fc3b4f42808c9db411e32182ae0a16086a1c42a206efb87c2637e50868666d7539841c18b156ee748640923e706420e1d00b98183a8b66bd1f6194eaf2cc2dec106ae6ffe5e38de8acff3ed4851080a3373aaccd808234cc2533c3210769015d32feedf64977cf63a2833e51fcb0a21a74c0197c34691e384b02202d8003d7807969864c4f39b372128d57a246ac28b2852db66f65bfb92cb36382cc734c5d600c62a3df6393fd817099a64b3675eff7e13d658ae3ebb9be4f671b62ce8502254d908e4c9836177d819356a1e2ea6868768be5715ef3180bb3ff7273c29a029708d624f921fbbaa5483f5f4ac9418d592dadab61db48ba83d40d47d33978cd62e94a552cc872d3449dc41dcf0f7f3ae357b9ad10dac4056982253acdfef2f23120c3d6e76fdab4386d5101c224b0479e83d0779e2fe0e4aef3e44c0f2ffff03801185caa67af9b276b5f3cc958e1416f21d0bfabe9f4ea4a70b0f58aac1acb673504a408690d86df1b871d5a02d62a434ad7636826efe0b78fb56255915d53fd0a1b9cfab5f1c46b64f12e6d987f13eb9cb5f3cc39c7c637dde1c6fc6db8ab5d8ee7780c41d080dddc8a5206287078eaf0f13b95af25be0e93032a9c21974b808a9afc4549428d9647fa9b47120a83148cfd04b34181ecbf104618d146eeb4588f033d0047d5d11124ebb19f50df53a56bac32dfb1ac99324d5e03c8d3986019b8c52e43dfa004658088aa7d065712602d92eb2904100c75215fa0ed50b30c8d4f57557e125cf85667b9bb02e40ad7a3c30a1b0de960e51511c3fde2644fddd26f1afdb84dfc991a8011351d549e71fdce47efec1cb5110b9980d5d5ba0c272200051c81d0f03688a333f5275b52119282718ea518503c5dc449ae5cee5afb9c9b6c19885e2a6af43917c1d093ddaf0ee63c71d6e5eca89bc3d37c9a99f4ceb8f29a1ca5db22277211ea32e658b9f1413a13dca129e7f1d77cbed31d85a001866118b2593e17dbc4bed26fcd41aa2b95cab0782c80a1f516e7421afb40e893a340a4e5c60162264fa3cd20d916941084ed202a61f3841d586835b10b9044e960c76e5f72725b8095eb1b24c46c1dba1267490e07dbd092aa002d8e034f1e930537fe9225caded2acf09c0d840e4a272cc557fb1fa168904461757362abd7512ef95b00b743ef5765220289f31a1405fb35f7853c4a31c83ce7d6e25b7c1772adf440e7a0cd3817f7823f62612c34d6e95c3474547ba751bb90e0cb2bed87ce2a8fa6f812a77feeae610323e9f50968afe6f82c2f585ba8eb6e13577b6e5f9208566877b2feec7fdcc148b533ebea1286ad1bc798158c2801643daec402eea53477b0a3e22d0881399892530f8e2d7ad8387c409e591f5bf6d50e2e46075a461722e94aede97c54c16d957d038c98f06ed8801d16402b6208b6e1ce192cfe3d30d8cfc8c737192cef9eb472806d774168a15fcb069d8d4af71424ee20202ab2a1f0a3151c689441315f2afb48d13e59d0ebfc25e52acfdd669b4c442c7d51d1afed3d2e149b2c5fc128da15a5a9e90cc9c1dcf3e39cf60a858e9d09a0ff0b91044c6a18378835e7f35184d698934dc861b3a4c62ee9e32963ac857d9b596931d70e3a219a39a957ba1c245c608ff659fee948d59a92ca9010de60e56b6e613d0ad38c2010177a842adc8d44a7b1b4f893426b8d83a148caa4f90f42720299b3d50ec9491c7b340550a49aa819ecdec9cba21de93f41d34c8b6e636c6b945f4d241fd942085d7172c576ba9da1b913872c2b58a7c5e2b25695486b3c88f47b55437b0d1b8975747470e176acf0132ba2270ff94b3ee66fc8e0df90f8583c2f167d076fc2eba11fe21d2a179c35182fbc1326e1eb16ea42a4cf9abeb89069e54b8e980a658c969c45bc8e63580825ae7bea09d980663a1db3e7def513cfb940fb44e3ac84ec73dc8013c6463a65bcd5646a1b7daf0a081f42732d86e3a1a146f3e95f3d6699d3d6840171a913dcc3f17fe5a5c58374d89f92df35bc9c686c5d77956fc7503df7e09b8b27fd2ceac8bccd982a0ec6935d22b1dc0b7a8022cbdbb6e48f1b14afb7ab42a463d851d4de56d5cfe8b915411de8be2fbff52c44a26f1816c33f9b2f7310341c2e77c71c793057ae7fa82d1ef8cc83a25761a4b94b403abc16f4b4288427c4e449ccac9940681e91794de3b62e40f5270123c1651178b0a2a27c406a77ca2a1f759985b1f5a8061ec60d999faa3de78661d164877a7c1ac1b39eea6f8569330087b082da589e65a6c51c22e8be1561b27dd6884092f09d9d05b2ccbd1c567cd994fcf3c14d38a971b7041c04900778db0d4dab3af6dd794c4a142df767ebd243809e6b135a77c19b5356a5a2f4dc4bcffeecaf128a4d7278ce1a10c240ec48b9ab3e8e25b6936f94638310115b2ebdcf287583150962bff348d5c340663625bcbdb31e48189d8e14cf386b6d0cdb1703c1b064878154c7fc6130c8c21705145696c3cad94be07fc452ec14307775eb1850f928672cc7dbea8ca0f5c2f99a3f9903dca3a907f7b22222e7610047b3d8549240c52ca3fc83484e15bc08bcf25764305ece5c22bbbf4c9b420124333e7a4d7cb283592b9bf7cae20e56a6c809f138151fd8b4e63bda3b7de17a35b59510933352cfd234b042bf92088825c44ec46c147d58f604b490d040a02cd2f37ccc93b3b54e3fdc8c805712037d6cfa2ad51a3c0e714bfe41b205362cc5f090acba3cb3a4fffa2b5b54f124015966d352fb146bc53c3bfde8d62656c31e890106dfb63beab257b06e8aa90637d8debba2b1879047d8127bd5bb4651b282c396a6c199877bdbc8954e87da2b995e935478a0791a9dbe8584ce00312beaf66d5d7f2cc0ec0e4fa5af72badb74cdf2441ab698a0ba52c81da68ed9480f31c30472acd197a4350ffb1873bbc0380d59b01d97f86f3e5aa891b34a853367331e30396562a85afff440b09f455c423f467b792d72764e200897c1424b1f25da01b8d8ba338b1ea2a5fc57f415a9becace11f1c2df50d21a504f8e130f486a15259fe19865dee1702c311b7c4cdb076db99b0d5846a518966c7341afeb258ab428664959eee7ee5edde682fa014e1733fe4b05a971b51b53f4f7a20cf0870d95541513909b69077c458ea7e7474078b3b359e92c7e880f03d2ba07b6702d6c4183797e555f774c1f5dbfbb7cfad4f5437548c33e2fc3fd64a44a64c5aaf5b0aa685b1999329adb3cfe152c9299d4305818ddb3bfe0746694ce07f2141c8443efdcfcfe886e94558378ebbf1c25e2e808bc2ba0aadc6fcdbac163cdbef9168cb9c0a9f59a3361e26ae2c32216d701a735608082a75000cf7c542d46dd9285ac451d4e0a3d3d17f25832dc33c95142280a51079a11630dbd4acf5808d8df28b98b0643c1228ebdfdc5fd5aaedb10da811082981a9fc2dd348d0464eb45e45c27a742c1ca0a6afa29242f12c574ac722aa594564219987e69e0c0c56db73cb801cce4bb253b9a2a0bb383020a35ff7a879c7c84514e96bd4f9f6bed1c6390e945038b098e32d23a2d223b0355cc50e0e4794df2b836e9b0cfadb35541a635c38a732d93fd80cc0ee1fb9b36eb8dec44090cb772ded253e41e3b81ccc80bafbeb5c00b88e47bbfe226ebdddb91076c42683ec23e999c25df92fb1108b739066854256b97f49470cea6bff0db448d3a078f3afeeb938506d324a8209c6ed2978cbb13a071e4908b76c7e7d71b69be82881bbb146fa6d61cc717223043e7e304c2a7a56784e3a2f1be5460d80034cce11d36123448668adf413de01e32632958e568a4bd5b71de34238d47be9d92285e95d53f787ff6da608ad67a1d4600a13238a615daa6842df9b94754290c6bd82ddb172882d36681065684368ca54a62aae5640efdf2f53837dd4217cbf082013301d7a0787d277821b99becdba0fa0a8ecf6ef34f47776baa2c4e221bad1886e540bf4331b8f506043af26db8ff9c5608c8d085106483c7bfe2121feb4a435a39f8962b3b8dae5cfcb3fca1a61a2d865505e8b58a2de976be2859011c35674b4b799f68a65c6d03151ca98a03f5d6fb3ae88d10779b847a9b7999c1cb34dab0ebc944856569f08fe1053046e8ca4003989ab2e3ecc5e6ba685b458e6b483b45884d2cc7ab458fd0293fdcbf9b9cf7cf4463c622236338fd1e255db9ee02d5b7b35e9ccad68b125e14a23f561805f0093eb78feef32f2d7d8cc9ba4b07a99b8780e129cb2ee201b54b97e7162f661dcb1a9bdcc492e296bbb8340688462d62a81e18b98a75a1d2c71f5af02eff2e2c11314962c6e9106c38321a3d08f440c5d702333c77532711ea01c8cc64b0cc0ecd8dab80ddffe0815fc86dbe86a9262de1d9646e1303d0d3442eaabb7e722e0423b7273360a65874375c5e1d8dc7f9484f788733a6dc652c11c2b158a6bc5bad256e2d5b0ca9663d56031e2b1f69ae5ce2251e31442233a05b65fdf424dfb96ea685519656bb0be0cb4b481aeccb217ec538cdb76902228c71bf12447e7ab433d14830a8511c23a66f27f2dda5696d21f30182922ee5fffb8d9fd3644c44f45209fb7d2182f6dbae6e8392d17031a5e1411c79f3402c3c50cb3291dd6e3772a4a1a3160b50de0e9dc3876d470e9654f7a8d8c720645d2f016d0b0f3e1c739b8424bd045414b700d6e98120eab16efc189cdca38c7dc4763a8e4b37ea8ac5be2cf84a1b25cc89d3131801ce2c81e2210ac08b456dc430f80a1f646faa7317a883c2451b49783ffb82333d1415933ed87aa8dd8da7fec404d40548714ee423abc4d1384495f872e0181463338894bd3840d97cf0773f141f206f5a920df4bac9139586f57aa6cdfacf8919c7716eab5bb860d1b566f39a234b3008706a27d1d29e4c948643947c7b37b1422f748d01b9aa5eafdad37a2f2699c3880c7cc2d05ef90713a02d4461266e4ccb5a779dc5a8ec04142ba70f7e1345d69fc0acd14129ff0ab9e609316d82ad9be8ea9937520c19001b138d9d412532c88af19f3632f1c3650036a04764c4cc1e0282937213c9b825b9321842df2789abde5118543bd239dd506526d691961402dcb2f79ea0b367263a770073052d47026e2ee4f44b13a9d68ab17ca90181eeeada3eff2779cb0e56f092c06177ed8081b2cec04787a824e4178af49599d89286e2f5ba03e9d2d55ee7fee82dd7621cd4529092dd051a2686e9ed8d7f43ca6da648c439514abffc59c11fb51e721fa9dffdfec53ac6155224e8e522c4d5e47f8bb70af0533ca301255f58c399afa5f676f4b4bb0ab50508b5d7736199125bfd4cf9309dd4af3899851ea0258ac34160a58648ed097f834a3106a177d073c4f0f46459fc3dddc10bfb774a571ae758a9e815c7b2936b7d17790ab3d483ca429b84158ffd1625d4bb7712abbe9ecb9f546cef7158a2d005d162c99ec861e3a8bc2d7f7568a92e90884dc3d12aacb5515d8855ff7a0b5fea8ee1a7fca064e984b2fd92dfe4e570878d0faa8025df40e70766f8f6b67d8e2710025340118ac72f17a07e25484ac29d920a332145ddaeafaa98f5810f692d024765cca9dc54f82d42a40a233ac9a8238a7d988a529aae659227a9380b9d5c0068c824be35070c3d7c1574e1b07e1e8393b1ddcc156b8146e0def37b7deb7ad6bdaa93f7fcfa9ac65ace247bff04e3f3d7852c32453af46470f6c4caf2e63451dbea5a16840c2a8e517827e039ca94bd16c29d6574f429e39dbc60045d6f8b53731de21237e1ede746a7a50281616fe6a17f312efeeaf0a8dfc8448c7a44f6dd99200a5214e4cf3b5aa199698c9b50468920808510bdd217c97fdbee951ac5fc6fee3188aae0e449963a317666f1a31e10fff3d3bcb5425950e106a119641cd5aa7ddc9b3351f61ba06c45cd29d88f22f27354177d5b55ee90f9606ce0e2abdaa907859b29aed36f9973f4cf891654780f54cab5267453b9d33dd2d67dbe6417b66102a1bb8b1767f87024afa0cd721c682fe9ea601964578f109adc3fee0b29431197970faf9024788171a993345260f8e3987a41a3397831bab597b5aaf8191347307c31a2ec3f7611d1349b70e3e02afdff7cb83e701317a20374a13c8913d4d38c886be3b3092bbfc42e9e002e91c4311d93c424127bb5ef1641e5cb18ca3077271d534f2e5d7eccec0f797472af6f3a9c18465eb4553b4b8b50966a9e12be693681954dc3678bb4bc64277534b3e75e5f6ba5ec121c546c95711eff1c02f70d8f5649a0abbf96dd90e01027e9dfa2724399426c9ed2efa9c427d01e56bf99a784ccc7d986ed40bc548d9a1f5834ee284846d79e1968b05879064b4f105f1e76777d678a1216fddcdd95bc5140b164863c86786db534b89755c272db831e4709f3a4b274906d2565351d5e4eacf8b7873a416066f57d06541fd4e4cd6ced8efcda5cec2e5bcc3e247c079ed86d0a0ff73423f961274ed920c4b2be6222f1de541c80154d1863b5fd18a80120ce54086c2f55da60d94fea1e04b89dc38449af1c87f5099864350ba146a6e717980b8fb5eec10a74de61ebb54aa768fd6660e0510e5ecdace03d0b5239f1f890e72d96ad61954e61bd024f28e02907bf7e6e5abe7b1bfd01a53296dca49a1bea8db3730fe58dc6a22820cd5bc76fa9851f1991a93504a3fa5eddf1f35ae709de6a12309a24b1fcf0377bfa56f83eba6421163c1ae2548a1cd9d492762f3119fa15a0c7671e05b22fedeb2b7ccf9e3640bbe5d2326088c4fdd83b6203a4d83223cd1cbd63a43005eeb9e544640d3434e1cfe078cf2fcd36e3be88b00b085028da954051440c22f9acb5edc16129f9099ac09c92649ddfd5df8a425bad1b4f3ba8383c662eae981c24c4bbd56716d638cca55c1bc8509de2c88ae9244df76b42f31473ee1af6380183c68b696ec4d3fc6db3fd2a3ae25c403b07f0b396da69083327611cfa6add7965e1f804cd25a3d417d97145dd7b3c4bdcf417555ebca0259309451284bb29e6152ad5e59d3a04023c36e29a1c5b3f06d89d61318df62532767f9550ab2f05b20bc7dd6fbda088d8997fbfaa0ba987a7a67aeeec9c10ffb77bc6384023e2b3265b0c69126d3d8888a4340e554e2a5d881a22cb852f281e302c899fe452bed8b451b391442cfb325187250112c7d3f2b4f457800348af09ca480b078d82412b4e39c9fd29c14d073429a3950b07b4e9391a038badacf745640e3dc223b66bbe630cef4219b37afaf0aee318dd63ce64f8c2d6094e519373c2a3b28c0cf25db9813e687e284a3038c1bf2fae0c7c7dbcbe3848ad849b3a7a86e3e8a69f350dd57e1ae522e18224149e017f9c3e1281a8143f2a03c37e0036ae022fdc2216a4d4e18f401f339c408bc5cd888e265c9c79b1d0e28f3c103d299e1a50d44818352193e4835971d9aeea079cb85a86cd6cfa4827d173d058d3df7c7e941b305bad38b654b88f2c7c7adca6c66a3bf5e8c05fc9cddb1ec42d81f80a3dc9874441256c32f1e9dcb60d9d787c35f8de989047735d36d616062b28ad5ea754d34e84f7eea2d4216160c4ab7ffdd0022733c8c6d17f705b6a580a9b050240608c1aae03a7a168aab0bf0118c639e24717c3e85f237689a829b7b7afc57fd1f1a906e5a330b0e9867daa2f703ba942929a693530fc662336afdb08a3fd2694893f9a5015cf26d2b0a9a0f6bd558d728594ef84147fdbb2d1dd708739595fb29ce8b959202c376899174b0e2753470defec909ac595cd0d124689f147467e2429934544d4a1ff104a4d1029455b967738004726725ee805e689368731f8de65580d350c19716484d882fb974063f62742e7abf7efa3ff500adc24aa471d50e8c71549f8c8946e62482d394a15822345321d28a6274f7d2758b55883997f6e743df9c1efacdd1df27984197c4681115edf7d26aafbdb1fdc195d5c069b09003283210177f8713f97a806a1ac0fa4461321788162a8cacf2dd623e3662cc8470bb7eb066892fce84d404397f11cba6d3513428732197c4cfe6d040220c6e004d75d865074f701c34d389ac6f05f32893e038818c24c551f14cd3dfb5da04ec0b72971d30a107460c3d2fb92304f34a56d05c699b630624a8115c5814cd44b8ff78fefe6684f7640473f1e0859bfb3b4cb7f921bd400389e982a7b77906a0d70e618fbcd2f521db6e63bceec2e6ed48de4cd0ddb037a5dbddd117510044dd0cb4095cbca5c40d2ef35157296960ecd25e05664b859fa815f2e3c040ff1bfe292df6a186cb6d57bec643fcbd509a46e7cfbac6d8811e4a1819a841555c647c85d062ec0886b89b4634c5c105284aa6918937b7ad75380286dfc6ad4d371bb34a50a355b8cb64159a005f2f385e68a0504f70c198ef815d86ba140076f9cb9e7e484841d9858299c0b9ac2af35e8ebbb9b10903a41f40d29e0d60e5f5de526ea592492511e56ee16c333b015dc993195405ec1e878c1c8d6f5f63519ba08b0a8bbcaa2b9901721efa1fffbb4240237c06874418b213414652625399b4b5ed66de311464432bcd0556c32c8abae2f177ca186f6cfca8b1617618952eeafa4ddf344dbb507cc682c828d1d37bb20fb0893671c3e2141453a0388a8c163172a4108fb2731c38e4e4d8c1b7006e2d47305a59191f2c6cd65485d38a72ad2ed14a390ad4298150072221033b12745d6e0e859adf4ccc1c14731204c7f7eb785792091618838d70f00727fe9956a27629020aadfa724f77444f6d226ca285624402f5a08ab7faf6045e865336411bad88d5b79a7174e2c4c9176e8ba58c469880c8580cd961b15e82d574e99b0477fcb8dcbc50d545f71e7481565a9420d0700cf7b70dfbb9efe6c20e1e994546114b061a103f226a448470a7d8ac0da6114457601fbb80a47ccd35346a88a1177a1e81bda9df6fefcc93ddc77a52ccd924bae80851a2e30c903c8a2a368990b4d8e4a088b1c905acb1c93a3bad796cb222829203337c254dd2833839ce25051fdcb883f39fb63fed255a994a1c36100400831aa822155c87b8b208172f55b4885191c29088f950bfde40b0b99faea1461ab90db45d5a2a4c97fe4d0f94ac89dfbe8a1335693df70522823807ab18cb6625c397d442f48906a95f34ce266188a57c6687ef910f24910920012619409e7e027e2d22d0898a262a7a1cc04036920e078a0a2ed3211aca6c64a3b1d9c8e9a2b39176af4abcfd3efff30f8782d8fb44e2ea685477f78e77c8ace4d2a1a82cc6d89d6182ba1714424260ab007e8948750404ee87a4acc1cca3b86402ca79180aa39ae8a138c9e642ee4280cbca1f659e79e42f0fcd90a2721110ff9156aed4050195e8da09598d4839a29fb75949253e2187d8ea18251b52aca31100e91804ca1f8744f09416e6af74f24ce058a2dc4c43b33255605ec201065b97c5235356921040397a48b97831894fe2ab83f961fdad4003517e047fa92bb713c5583f4fbb51f8fd5f78a55f559c7f490622388abef5fb44583f777b9f1cfb47870de154d182f07abaaa64e4090713a1575edb4a886f7c6e80916ad98f8971d97bc9373df9c99b36198691d8a6a9ec826b6874137d272be64d35d8858b91c235aa3b186fdac613faad74e94d5bb20d0c810ae871359bf6a077151d5f0c11c3c29ebfddf9bfdcdcdbbfda101ac03625ca3a4ebf76dd70a6d1283ee30c9491b41532bca91fb7d0a37967fbd055fa67114b273d7c7b1f35653cf6e3510d677567621d43b1dc2a29b448f5a7c55b5d56f189550bb9eaaae692348de8c0653779ffd52ebc83458488c9426371e149d22ae1478e95ecc21348ad339552110783653f21fac7e2408405e43a252914975bbc61d3f3067bca7de2c368152b505c3cc7c7df3ca20a0243b172a2fe60d201121ea05e8f3219ab5d09a0c57dfef739647116e59f525f3c2d967bb13e94f73ad209a174a46a55d605051a8eb7e5ab028ee9f0afc551f9c4ffae3fcc6ab8290cc89ec1adb2afce99738c44509a6183ac15b65391ab5cb73b34f1fd63d73d3181c5ebf6b3b1428fc2b6eead39a0400ea79e18224b75a64a4ee681e371707522a34417a4d928c47b8417514db4a8091898c43b9a981fa0c63d92b5d0b907843578a7a3c52992e47aa15b9dc37a9866f6e685f9652a081376b1f4d6d945cdb9ccc3bf51ca9337469106341ba19822c023cb1f8a01c7990fe2d08a400a9960e0d8a3a04d36e42cfb8bb42dbed23bc49ddce35acb1fcc5ad6112ce59e6e128943d852c4c9b684f142765a8e30f132d71f99a61577ace62f572f8e00c30718243ba4022f9038a8658980c2c543c395198ff3fb2b14cb4e13e8a5ac99208e150826e9bc7ff2ecc93e40fc3ed0d4ff52a400683014a0b8f67ed6110450659d2eec9a400a475482bcc0818337504efdefb9010948382508b2d3811f0e9007b27b2a7ef4613307612dc49c4510ec2603c79080b69533dd0004e457025c1b00975d3e7b9301b65eb02f08db4efd8bb93f55240c470a743eb9f4f5ea5b92a5358150a27c48ed7b26688cea7f6a1453744aed1fe2ad9a4afaadde4a10869e83633f1bcb1c5b66d3ace1b2b58ee06d6c58cba99da6102a8ab32e5bffb9b9fd8372eb18fc87ccfc089d3f6406600c22e94735ae6cc4bfa01702547766c6c8ef119537185b5d44833ab67af6680bcdccff78bb3866928d07de188ea3b922480330f8141112b2b320744592ec536273555aeb2d7e8c690e82df8ac15464e6cbce1b968aac8e28f40a5d6aa2bbf24579ce42152669c3c5eea5b0c89f55f7c4aee238915d4dd12e76dd1581f14f84a31abaa6aa90004d9fd59399aabf4e336fb3e38b2134c80dffce7daa5d6510eb6e48c5ab509cccc43a6f914c9a0945e920c577051f8685e27b115500aa8ec278810769ceed1c336f9e9151a0928496194add7c8281b205b1e877cbbc21426f151c59897622a9c5ce288fbd4883d3425e3c73cc9351e779288726a8986e2a99ce302bf08bdb3d13f33d3b194b24827d795803b125985a7b8049f981f8e4597af65a28de6fa408c908c4c8daac42a957572679252af9dbfe007af6281234522879cae0293a93a88520da8470a693c4da14317b02d84d621682852947ab83a0b726b1292a0359d408f490a8592a467eca7f02d706819fcf5e8a4d5f450e31817f5285c93723fba530f394cd5e3b0a79293fefd717fd63f392875015642777f5ac81d2384c1fd0435a63d74d403f8f2b580a852c5686372704e2b1e39288021dc6446cef03e675bd6a76aeb6a32d57861202355cfa540ac224bd57de696767807ddedb101f3142a497effad1aefb62b4f3ed420d564e93535c386fb9e24e753faf965b5d237eb39cd2815106f1a5f4fd7e2f1a6ebb8e11a5014c3cdde60afc66f51db47122b9e2a10fbee8d0db20816a9b0123f1447cda43efd2db74e4b12d99c193b3767f226060c409212edfb019f2a26f025ff0fdbaa52ea91aba8ae74173e3ec263f5bd62dfa384f67572acb70007ba2d11736ff10369dfbe219fd341c5a2c1d9e3b757ae363dc7bfbe2ce54b009f449b0917ae15b3d87faf70b61fa11d0a500c25fa6e47a4484c15a25d4bd60dab66d546d71139aa4bd668ee2b870b459595dd3d70d2ac0e8f7bd97d485d322cb82604222a1854d5fbf8ade6f5a6e9180425fac035a0f4c8844c7919f3d0d02940089f27e361f44aaeea205822f5aff5464fc425425ba38504b74206591f58c34e4aaaef40dfc1ad62936bba4e1355b9c9a12954679227a534b4f35404e7af62e3c6d969922fa5704d5cb8d5e875d95795005f00a4e9572dc799ed67d3f4179f2d223fadfb508150dab5056da78daa75b7eaa772232347021b8624f74d5f46e0c2ad9b87f49f435a25a094b2e8571484a4150ab3f929e32669fb660c2920cd7029853e0833cc5a58bb019f5e13d72d6a07bfe2ff2fd1374fd246cd86e4f3cdcf84f5796ee41e00a976d7346fcd231ba2aa5986c527f842c3b350f50c21d219e2611214a6fbd626f030d431334fcaedc5ed78a0a929761d763be39cfa63ac7fabf5fa105043a94d30245f341dcab33d16e5a97e9efe0b4e6af0670937984be1fd0409c234eac5723cb28b0d371bd13712dc0cc298ad0515b6f3b7deb8073fc918da20abb1a97eb804faab03dd2d13e7a833fe9425d1d213e6cb8956d22fec5258d4cb013b1d61ac488ff6ce9a51f5b3870280e06648d318fe8d43ac4f831896a8a1f3937312577c2a871a92bc4d1a53f3eea23aec937ac0019ef10a235461de6f61837e21e40538c9ce90bf469af094729282d72711086a338b0ed84ebf644065e5183896480e45a2449d46ff7052ed4f206981bc3e1a0abb243dad65c15e4bc2ebdc10879c19895dd0a7345e862e3c19489398e5da44a346896bb48a021fae6f1ce5fd7ef471e8f8c40514cad69513c06d8c070e9c544d411504861892f69a2c5915e84ee947f823c63d6b90052240722796d1266d7de03e715e18c106627ce9c87eae340832ef614ef6e0210e641fca607c2f8fa345db0ce3aface6c1f16c843a40275c9f6818adeeffedf1a009c3a0267b50de996f482639bbc48a739234725064a16fd32af490bc4ed16b6e7f5cbd37dd8e4ffd632ef8ff87983766c2f87f6c615f5c615eaf0581e9cbd5ef59421375881e84af7d71854f3b327988afe47bfd6ca095019ed6ba8e04d18957baba442d981a9ec11f4ebb2e1f69bd920b0422643a395237783d71ee5b0baf02844106c00fb1bc45cd10abcb36244f34b479551599185fc97623c195d0168e91746688460dde1207ac9477c1aef9dd720db397fd5b3b78c7ab1ea86b07c85a33cffb145736946d43f14c173267ef8956b5987e3bb7c06572a9fe20d1640fd0e915eed3e70c9c4c74192d26a83ce51af5c76a49d1e7cc5a37f63df03bd67e1b14b4fcb4ec25080c7c854fda61dc0456dbfc90d1d286d0291b04470c93cba16a09d1dd2837ddc0d12226f9879ee9f70428bca285f7832fada2319975d42c65c2d11390eb745584a1e6d825a1bc27cf13aa0bf184409c3f4ee5fc1dc9b0907be16c970e3a2996e4946080520ee514addbd70a9c7667dee7d6692264be6890b50c18011ac88568bc3f03742c3c146d1eb8446043e18ad81ed1c4c9ef8445df262569e33c403b9e044e64af91887de3d3a71b571cd3e0d96a6d2308a1408e835d458a2cc9e22d8f264da83edf9ed7b08ac26f05f706469885e6395fa5703fe9fb3436677b6fa452232faf687dd35a1814325a823eb9019704a2feda1d4eb75757fdf26342746854a1e11fa5be969685ae1dedbe40d8fb879677cd5899058e37220d18f376052fd505465211ba35457fa4496bf82c8c2fafa7791ba8cdbfbc6b49a1e9f81e4e6b6f16768677b445bc1bcc609d7fa02982376ca5627c5d1560ec02c2aba1592e798eb36ae200f6ba4ad74c7ff265ba06b801489e2c09b524ba5cfab02c4ade9d62b7655c6606829a2afc67f47bb62ea5093006201de19f2fa1bd2f8e1f4122ba58dd183ae16969cf683f12c188013bf277c6fa8f047be0c70636db224c809af69c23a04c6b21ab302bf83bbe8bcaff060a94e39c0e40b369941bb2000fcfe75a54547347224a2ccf62b4124078cf88bc6950f56d70cd9b8e1523ad4c091a390b811cbbc41e1288dfe81da1737ad543e54ab083d01ffa19c48a625afecf80794d3b3974cd08bd58fe186907dd4d1b5f86f761b5aa23872828278d28c09adbe82674cb8e02a0bd8cc8c095cb580cb4df8e05b79a86b98c536a918c036d758b1745fc345405ca156774aabb73f3d1766080dbf66a4b7f66916c91769fcc5fb891a76e711792fa1383a636004be08119d0b6e9201645975922fb00037568cd635e4c6010a2d0e9b10d89254611dddcf64583e7a51ffa46b10a3bca89fb009a809a42281c7c291de8c41eb9e593a2ccda496c3643326ac1e594c8fc7ed0bcdc7595e5ec051446630c19c3b5079814b185902ac48f0ea5e105a8125348ade52d0b3e1148c5508e1a63333986df426b43698391c6799b36e0daafb26d360c92cbd04f56d595805cf1908c1de34d43142bb57f4c4903dec93d0591019a8c610d24def6326ff4d036e8e3f80f9a2c8a68f7da07b133676c46b50b5fca7119c73563318b7d1c149f9a348883b45d1818317eac3ae182b8acf510a39e6b7a709032075eb0dbd4fc7893d5c60c28557d8f48288280e3aa9451d1e05f1390c395d3a2c756f41e79e1c86d51b6098d5ef8f8592d6af5b6474db7ad072976dd38c52a88d5654589d8533616012f8152879b174004fd0c24ed017b27e26d7eda8fbc83b8656fc544f47242cd2485cf03914fd8644a120e1f9feb6f9af8987a6868aa2295783440ee36d21cbec115a4b8e17e7da57a4f66bc55a5f43b8d7ee5adcc81046a617ebe34bbd0de7cb159e06e6ea2826060125feaf28cba39d63e140a2ff11fe5ebf84ebaeb4fa234988e26d58f5a073e5ab9f2263c9db3ff89ac390cd7cf68b2511654eb58abd5a2b87c91e652be52d9fad26f5c60aa4b9b35753cd8d38d5da639a10a1c35ef5200c2e3773689039c40f698432ee34fc3be6c7234303c4d8e9ff23565ab977cec7ac59bd210ff4e4893242d8ea5c13ee96688c1af4d736607efac9e66477b67366d5d34787f32286087b9910878a4e889599bb0db57f37c206de488e1e5c7e126f7c215e06ac99a7c32af130c8e989a1fcf2eaba41cff5b6baf3b86b8d969a7142be137a0b24cbd412d87062ad50ea00918d1a19e3ae67fbfab77db0fe1b309ecb7b337aee89546d374f6302f0cd7d45159ee61533427cf33bac6483e99db819005f3ed7992ad0c9d948fb4b14ee6a077919c396630de8d9c2f1879a516e3773555c14d7f154e6170b26b1f75795bfbf1a09fe8db20e53a421e8c881521745bf3047cdd4e366ab31541c50c56bf3b85d27dcb78ba3e150c9086557852f3c40b44b4248b4e6daa366dfb44cf68160585fe6f8f24ff1f2a75efb603ad4b6eb6a3026284b14025bc709630da7a6e9797e31b433ef6d0ef824a1cea793314710276ec46ffc34edc709996ddc26e19628660f4eb6aca4eb1dff79cb99417e002f72ea63bd13355e8214c4ba34f78010691ad86abd1d0519a914d50be19e8f73ff3a1b5cfae1c07985b8738242ee7ed7d9ea5e0c4393bdc3d84dde29dbbf3be62e76878cf5305ee97da66ed9c912fc35f03ca40bf811e43be201fefb81872c15087f17cbf4ad3830a3041699781c1328aff1289c7a2e7ab503754b14cff70b60378b3426e6299de83d6ed002a4d405527a3d2d62fddd1f420617e6903bed200efb28d05dda02945e36c26d6bd17c29bc43fd05d6dc9048384def01148cd8f0abbc19ac8a8bcdeb93f64856e5a08ae8d6d791144673e5a2f399ea042b82184232e7c2aa2d23321336c02a41a2c00e9f1e4e930ed1704b59e07fa0a66a0cafe50616bf39e982792101845c3a05010de89a02cec91d36faa16ae2fec918ac861befe239d492cdd0a6b3268cb7e0d0fa27eb256178b3c70beb30cf480a4b4b92a1fb5ab5775907f19524051ad2dac4efe2895e0ac5f36d311fc9c3e241d185d96e57a22624f730ea84a510e954d84eb041a69f42f8f7b5f365b2c753885435e2e96be56b170ea1833684ffcde7502afd58decea06c36a90ed57450e0bc014ea6a13cc87d23176bcfb6c74f6fd20200de5a51e881ac1b9ec4c558046a5f897da540c9800676d5e1f08b5b63e92acff2343ecc3c7832f038026a7186a907635b7748896531653f412cf6489f967cb54fa2816d7dfabd9d36ecae81518e0d515c4f488cd80f1e734a5c8e44256dfb30116c7f6ba8764cb8b42bdd2948cfeee5aedcbbdf6c5c42d99908be7519f5454e26af34e625f5c905f787ad6bdd44033db65a3b9ff2101c655e3a0f4154e6d2ff6aca81ebe56d74825a8e19912ada58d73cca82caa35abcba038cd4294b3b272fdf1e950bf4f1161c1ccdb1164ff31613b8c802b0b4891f9a7a194e80c0883a2afbb549e8ab9c0a6fe5d69876a7bdd8853f0e02336f8e550b5670cee3be3f72560290a47861f82324e99d47cc431c6252565dc8117c644bdb978869a48dec4123c3939e71fb4d2e9946143599d0b3efd386ad3d40e2954654c1a322768ccfa39b0e7fc6308d609eb73e731f39be01d045bdac2f2cab3d8a69deaec7b6270ae354dea0d18cf7181394bab3448fb61528518b04d7a39e8bc6dc76f8d25c008ea140bf6c76a730bd9e3245eb11c30fc344b54dc67cdb35d08fe510b4e0931dad9d0f4bd3f1c14c0864c0339a11b0674f0c150635a2bbe62c65c4a6af23295193398066d67121f06335d03cb5fea302ac8ca918a0f6a74b1137679379bb0d2f449a03ffdac1530a8d10d93d231c19c1a0da672ee39c6cb46dda09cf3ca3a3c59ed7e596e80f69695718141f9e58eaa2d00fdbaef38e2c78ce228e17cd20b4aea59d40a330871fa604d2ca61b71ebad2d89c9bc6128a94c2e91a69acd5d859624c38c5ba294f5c2fb72d72187d41fd1cedb2007cebb2e1515279aeabd12e8096e0932d98de772ac19170d4040c31fdd29efd8cff14054192bf1df13fdf0cc8bd1472eaff3dc91aee5ead61d5700dd4f5ec31f7e9a6ebb128708198e4e75ce0bdae3e227394d1ec4a72aba07179a82b898ea2e1d05a416d9cd130ca75945b2ac0b801bda7f073e6f14f4d2f6766628076ad82d00dd71c2f117a8012264edc208b5d67a5776345c3a2d7d5c55da6cf45059771c6bf17e05d32706e1de34c38807c0279b0b5c670826c1c9acbeef6ab75d12a477824e21d4fb8935906589c0cb16b5ad311fa1a8e6a046039cb488089450140ebeb242a5305133a5a697046c7caba320c1cda76180aaf40aab0655c430ac8c4fc5c4f40332610bda17930b653fa548e3f01cb85c0e850373ee30f9a62d293d7f67a365fc95cca18fc00962e7050d663e6565b497d0e26fd1ddb09dfa62544e8d0f682244fa5dfadd354841f9a63ce2c30ab31a460717a2a2b1a0b5fbe7200e2d226fabc5821d3601a46ab35485536e56578c1f73ea3a06a5049f8bbb8f18d65c2a4d6e88243162fb88b9a553f5c8a7b95b9194410baef7c5a8fa085d0566390aa95955e9ed13ed036feb2c763264eea02d50a12282ee149841a8c014ce44e70a5f2ee7c6dcec807494e468979d52d1e5f9e1aeb40019675132826c4c7cb0feababf1ad5ab4a7f43ad8bbda5c81e67c40e530f6d2c3335ffacbbf33b8d4d2292df2816e9e471e0d78d00f7331f4e7d0c28e7cfbd85eee046efca51855c5f2443f54cd79a9cace44740978083c3400e6b4fcc7d0fcda802a0751231ee58c31fc99c76891321a427561e2dfaf2e740a1788abe78472e1a787049cd8316753eb178cb6b6a300d3dfe8d7f548a339dccc2cd110ff31f647b3263b4ba099610167f839af53bb4757a7e358e42b1d5057a678708a155b079ec294868a70512118d9f756a0900a113eea0640a51e8b78ac29955bb3c286a81f9fd1291a1ff9a0555d9ca8fea3f1fd57d4d0abd049676e08bcccf05e612ac727c72fd3450aeef16caed8345b978e3285787e388bba4920abffb35fbd2046fa7c9996ac2de48d484303aa7095e7516b93272423e37cb7173c4d38b7e79f64cd4a8cff8c01d2a3d9c946fecd865274061fd27580d84e3445dd1742721d267c139202d15f96421a3dbf74fba55b5915b0437b91a52f9998b0cc9089448255397f2b08c76e86104d5270054da05225ba9409e86f661461303d7d47fb271b78bfbc835ee27675ee3ac7127f4a7a2c321e43efe36f566e9cf4994b65132776f32bd8ab15a47398c293a3a770541e184c1613d39ee131f7cec838fa5f384c504a3d8b7b8886000af0430b1cf6577d43cb109a98f91cd097e2cab0066015135312bea8fc6a84125496987b1856b0bc63606b62a81cb1a82071558c0fcbe341ae12dcc03c5c3c01fdc02ccc4e01d5d6a3564eb46ba64af7ee62ef59a032570e78d35c543725eefa03d08e1fab80a8b1503cadc31c3f8cfc268e045b4d55bf5a87d8e84814e1b069220c72237c30b4f160c68fa742f8f91761d2e7f2ddcee4559e065699ef32bec563499968906635ae6cc4abb0ef30253fff1c7947a721e47a90544f6bdca4b4c8906c81670a20682d6aa2997943baaa73283ba15b83bb93df7b661c8f297301e218aed6339b98dee73b19b2d997f4baefc02da4d62aaaf9336c2f624e3ae8012b5f9a1246ec928c1ef02bc8fe65469fa4e756a3319c5e1367721a938ba0d2409539e3bf146b8db66e40c71d72635923557ee6329a8bf317dc474a9ef43b32e962957883b5b3e2a73fe42ab0c3107365d7fdd6170f1f49a7498be0c3a586d3e7e4d0b65c55f21635f2948107085879f2a29b00051ddb405ceeacf845ea703d0402a429bff34ba2cc5a7c512de683581252a9cddcd1a1089d0ddaa3d8e272708bc286e406f478e6e67777f88c2ce98f47485818fce06cd4295fc3b8e795d10d447974b71968bb543945a293e2e13f1cfbf2987a3c7abeaa5bc12dd44c2c89ef4f80ace5df29d73e8beb3e678a560abf3e5a6b49163a537c03856c87cf667c78490d823e79cc00de16a6108aabf52a819ad90cc65717a46aa6838b16fcd2c6e01ef2c442c3ff0aaee06c5d615a8763b0432d31c350cb5ce06cdc0fb00082e1a36a37f65445f40c6afe11b870359d3d15812346c8ea0b4fa5ebbbf334faad2feb53a8911f66f88938c68262b929cc4385d3563499805b48d4cda42ac10a1678f45bdbceecd19fd6fdd758918f597281335c404c83cb9956cec40d97608de12129f7c6f186025f424a319d6603056999d3489d8f8b5f457a5a4399968c8d3f2dcefb47888bc47ca5e06dd0b8c8a321f58fa19a9e017b8b1a0300a78005b0b1ac38217a0bda1332f78823a0be2b33c46381bd91ffcf8a9942062119a4dcaafb3a7daab06a5e6cab8d5fd82c49e08f1fa371f9dc766c4885fc3fbaa85af0585271e635cd5bc1455050fe33874e8b9448047305ca4e5624046150c55d9c7c64c8912217a94741e3f6e71f88bfab6761df07cb78b3f10dacd6454445111a34540fd2013e49a6fb737c24bf3c6721fbc518e6c37a2d3f06f0f6c2bb85a5a32c06acd7c444a799788127ce176f5f837f3c91b2486ff8b587b6389c1379f58df306155f8c82c442d2ee931652166653cc9352a1c0cb13a29b9009cc8af4479741e5c2ea2218970b74e7fbf35149b5107c7dd91fddcc58d076840025a87f8c525eba053803102c1bfcc7595d026d1240e69a37da631b353fc5adb7baef76dabf246ecd40b371dc2a41e986c25979aefd6c5a06d8a050ea1fa9b500bdae5edc0c027680e61db6fdbcc963707658d1ca97fe03b68e3c088fcda883bec213d64b113706c79798c750c15fb341068a5ab96944b077db7c149111f14390e25ebfb2d6a7f9fb69ad86cb5950d3f0c6db4dfecee99a4b13ef7eb9e4c35454bbc6a3103246e04930cfee02ccdebb38c577e5d8b611f31427746b68b15ffbf72138a4d382acbcd7a2301f048f2e5d4075f0b7b08e11ee50c320f642d790c1a0cbbc552fce8ff8c35d72d16ef99fc0dd4f1f8b6d3c0cc0e17d8adf7b76d79ec3b11be1d8ec0c891dc60e131893517b66a13692079f40e151a46bdeb2fb05215e9f1a013e5396179addec87742a4222243d5a80258d798f831a9a3a2458f1c4a901a638a3d53429032155a8a59a10398ca1cd7658d200404d5145260895ad08f0f1470eb7519a261084b831930eeb1b3664653a125f6cd69bfccec5734bb6fedd3ea3740a34e4ffd40edb32a45eb924397cd553a30507d2dd3dfaa2a9a93b4703f0639fd937ef6d8efde5cd4d73664b5c341a0d5228c3588a70d5ac94ea4eb32eb466b511142f7ed2ce68378beb4c3c3c237343a059ea684470e52202055493a5933fc341a07f43534e57474f427c9ca8ccee324ba7292faf4c2f72b040f70f61e67f95f2a01418a80bbebd704123b4865be61683c76f6421b6e6fce91dad4d1b5b1ed460821846c4208d952ee140e6d0e360ed2ab22a076ab37d4cacc08f38a176007000f29e7fce181b100004579679aee474e32c93d57fe08b998cf13344c237f7e8cd87a840549f8c563419dba9c149d8230115616b102611aec920b43444312499324088d410c11c60d550ff64a2f1c4518ae21878eaa9c3104a9388a32f227c25c46581af1814398c38874caa572517fd815cd42e8891e310a18e8280918c3bf120b96b1a28815715914f3880a25994fa72e56648574ea6e6f68b78a1541a3e842a105e29bc59d28b440506861278fa21ce21ad0663e598f652c40cbed58f1ba30a34eb99c8f15357645a74ee7cff46c0a6dfa4050cca7b12140b0d8781294c18a220cbf234c01f1780ca64e8fdf60aa65ca2397a3beb9508c08c57cfa63975fccc7f290cf745684098592802920ce6715c0d4e97c6602a65acee71470cfe93467268782b6bbd096cb9fcb08d7b88818065ffec81f97ad28ca60412ff5ca18546499429b15616246f1570e6157f4c7589176c528b324e0c73f51f9047e7c20a8ec03fcf85810ff22e21a72ce2bbbedbd8a30e51011a6944eb29e786df27db6f3974797642ff7401ad9c3d5cb4046a2407dc772a1d04e549d319b2dec430694a0b225a9a453a5caf73caf5eaef4eb9d8d6bfbb9f7d6347bf7b6f5cbb7f8b2716fe96fdfaa0eea92429beba5cf7453b6a79a26cf49ee516b4e7b8be63d7adaf5f9d86dc3a5eba5836de9287a397be7752a5bfa45bbab695b7abf85936d63ae51effaf8d841a0c5fb972ea797f502f158e551cd7a7e581beef2dcb7d764db23e5dedd0ef919e3377a67c70b761777aeb7eb19bd1ce7f28d73f94c4bea3da57454bfc5b78bf3689fa32fdf36ee74bc5c7efbe15d995d662dd7b596ebdab5ed5705d2df6ab45fe76e683f2e77d3ad2e479783adcb5f6a690733d6a7bcea76b85c561b976fd5e697e7aa4e655d6af5cfc74e47e9f2ddd5bcc25a75a26df158015175a2453d9e3b08a0dea25e6ecf1362a65ceb6ca044e9e4f44d72dbbd4b54f46a1565ecaca753594f7f553f934efae3969fa480a7a3e8fd6151bf68ac3ad50288cb739d7ab9bccba556b7ee2200edbfc56bd75edee2f233bd23bb2651d16ed63b10545a17976fdc6b5eb8977b2fb556fdb9bc5097b7a0557f2eef6e47e672fabcb7559bd35b4ef5f2d88852f9456da48ed276a2f2b0e332ef2ca8e7bdcbae113c2edeb6bda5f496968a6b9b1d758e7af46ec07a9e76d82cb85f1e77bdc0bccc0ee6aa3391a32edeca51de63dd61bbb9d0aaab6939773a4a6f79cbb96ff4feb01ba7655af6ebd7f66cdbb667d5fbe6518ede1f5d8df7ec11f0e43df9aaabe1ee1d7637b87b2d3f6d6fd9685bd972966fdce58036abd92e4b504c948eedf272db5ef527777837bc8dab37886df9bc4e65e5e75b3ed31bb42df474a2a55f1e767e85de0dd879157a5fecbc89de1f765e1e752a56e904e555f7001e8b52752adbc78175876de9a5cff4a47288ca2138ccd2afc45192f2deb679d9bb44531c15dcb9cb96c1ce5d96db24bd40ac3c4651f1d8bb7b14f56621f248a260b24fe59efeac19cc2b7f3ab55dd76811aceab4a5915745f5ab3c9244a28c1cfa91478c82159c6070aac1e9743a9d7ae4914f94e11e39248f7ae4d034f5704f949147b1471e654b82449e52902605e16be3327c81211e2c84723003b40233f5a98a49c5102d03a556b9c21cb00e700fb69f310a6c6398a410c260d817654280823dd4817dc0cfb2aaea442c251bccc08cbf12c90c846c75d9903ff0d2a958846bca90a43fae0198333dd316775ddcd5528859c97a6506630a398255f2b2539596fd6ac7aaa66955bd8cb77ec35de1842784f030c442243388e28585424dcc60d92846e44edffce9342434034e28336340991f3ca00c8fcfe8d46db1b194c5298678682836d141987d2166b4b40a67e42156d2c48f28c346e43c19e942142cc4430c04d4a9aa321186a253fc93016132b3121e42e99057043ab0f2b083004a1aac7c66042a9911ba5c3584cb4c45c36cb7be315679282b32b76ad1606ad50db7cde460c3bcde801170333964652176885d15751f4425f0101a861fa353958d543398468696b0916d46199e02c2f0bb20c760f969b033ca401a397908c6300f41182346926b36d2cc468caa121f3648332112173461f9f3f4c2af1c10233c144327600a2f4a6cf569a9e17ad59d5b28d6e6a4adfaa7c20e3925974505cbe7adf74f034519adaba394489e8a8928cab4d49672458554efb79ac24939e7e9f4a7d00019b11d45070969441551c54a78a83aff441929e73c9d7e0b0d933b85f28a7dba0645fdd33f5eec9348a4cf8af27e6c20ca70afce3e51467e46152151f5f37d1586611dd73ff377ce7b9547ac28afa2bc8a9240d77907b2bdbb577b7040b423deb78e5e198d5591d93f90464b20ecc056ddaff7e87e5520474a0712dfbd547b70c72a903e771ad9a178c4f7350a693a68671a5a36e2ee47e2a2538cf8e59881751868a0085355d7aafea96ed522faab5e654aaa0b250dcdfc5bc8559dafba2b59657f7c878dab62f2b90dbeb445210dd3c838bb1bd3563847d8eab0da8e7d27544fa8a4f005d217485f902425f3725e207581a404b6859a3d1d41c51fc0ee2401bfee3180955f84395401e49ebea43311a6df9f1db864b8872b06a4acafde73e11b6cfbf427847bd8475aeea169e681011f9006dbfe0f9e8655c025d25ed88486df80995dc8118c2b86592e30ecba34aa63d91c568e0670f63a865d58c5de358710d39ca092213d28b0f01517bb1aec557d7f5c75385cd40fcd7bb21525b9fe5862d6c685c96c0af3fe9eae061ccd1c335798173a396561fe833351867b204c1f565fa762119fd3c8faa26bca90a47e48beef335243bf3ff682361e91fe0fe0d129d815320d765955262976595555c1be83124cdc6054635585819403cf872e2e13b1b2c7420aedd5632145c1b7651e87df9c981de8d485463da4ede778004d1cce00abc38afee01ad7fb392c63f12105b6f9977d288451010061fa15016c2300b2102b87311c0ce685469d9a3f3a858499d3325cd430f04258c114d4d03d4c8eacb0449aa76384c3065ddc2c0a7bf15644a7303eea1e3e6a5861f53690c75539679fb68ec62aa3bfeb1d49b6918e424667efa8dcb68d421a1672a4da2277a11ceb9e28e3025966a0aa9f2863aa7c84a255754351ee2eb4bba4daf948caed223214afeb43435865ae1cc441f63aff5cfcb3b1b5ce304beca4bfebdd63aff3c56994790f30e6ba6ea5615e26225a32735055fc3c7738d673e6ad8aaafe227e4419d2afb34ff795a37c4694914749b9a49c9194bd447964558890eddc8568efcef6e87a991355551e5e4555b17227bd0777d2556e3a0fcd91944bba422b3e82345aaee0ea1ad8ebe5ba8cd82b0aa62a16a39504b87b27a23bcb677a63a1a8ea1455559404bcbb9c0896a3eedd8585a25037188563db42cbd272ef7414cb5d28ca3aa4f1be0931570e3b1bfc44cb89c588042c2d4c06eaeffa4ae59feb34b3189d3e4958d8d940f1f03e0148a3dd3b90ec9b7788e241fa04200da90239a2527b74371dc876ce548168ef2aca34c56254fa24c1711dbb8a445fa670bf3e63de19f032859689a20ca459c24518e89e066a234da47fda878f36d0dfc5d765748a7ff5afeb5914164f07e1c656628049ca34f25a47e5949db494580c5b62b18ba3a708837da35b531e1a8df2d0f487755d989046be8fb28ec21e23c260ef94ccdb3ed8db073b86cd010b56480c61b0172a99893058c78589ead1974d24c26058fb580c8618a6d073b268a00bacda4421cea96e2fca5df51b532a316b13b946182b9615d71ef0cc551373ebae88185d11ac55168a30f15c45f59040b21a81224cbcac1b77446cd9675abbe4a1e9ae87765981c86b1532cd1761aa7a8a30a81ef0f2b202813c345b1563844232caa022aa8a576e34f64498788d469f08139fd14c07f3f2101345a01e2b46d98421abd3b60427ab7342d5606faca2a0e5b15516e6a384d08a4d6c60efb497872a7a59ab3517c4295240a4d37ab238ccab0d657198b24712f528e919eae99e386409f5c422bbe46429b17d25fd6d6f252676fe9554442317d1f5138511202126ff228250ca7a314c5e445715fd69cd1751a79a10758a997f29e9ef2252622fa22a2ca316cc7b29a9c1547255d13292a61fa5b58ca20cbc421068aaf7151461ac214b09b7c507dbd8ef6503db77199254d87b29b1fd2b28ca704251e80a8a4257101122268892b0cd11f5c146318570f5c0f651bc81c4a890d63b29aaa3d9097541fd59b548c7919e3c79f2071aae22918278ee40b27315450477ef5e45223b578fa06045d351527cd5753f10a63b25dd4f5067a4fbb17d4e85233a22b2dd13600c8c4e8a86e9df2ea8055d5097a4ebe9b13e2db0dd05c198eea2a89d7432a150948944846c5f0b02a4619100653808138d700d865108301601a6b06f2d110c433fb238cc288910f1b9bd05feb1dc34dd92e66bc50596e468ad2a05e3b9d3c1dcd05ad77a5be6c7478aaaa97a7a7a6c656157c33d3d56c87295b106b305931f9b30fb3107b3cf67213676aa691e89d0742462ad3298204c7545805fcb7446ae2c024c4128d30061fa7228c2f0613e31abce48a76245c9fe1adee8543497582219fccaec9eee978a44e0a73d4619c4df93dd8afa8b569c97c54988083519b296542ce4847959a8694dfdb513b66960af75856d6bc992586f17d441a0b2459de2cd4243e4a27649b1b790d4284a024c831d450476ed5a6dd2302d85e2bc62acf725d9a46532230dd38fa697ebb35e17f64aa352bd2fec954632daf7e22e4e2fd3743328ec669d615eee88cf45b04719aca2f84b30cd1154f578141f09edd9b1cb13a13dbb7624e431ad9eb22381d5df8d07533ebb9585793b21481c8947a2bbf6ee4290e08e9d7b56512c7b749293d74e44760c6b1a145f872daa7a8feddde3d9a2f84860e7ae511457545525b0bd3b11477a70c78e44f7ed481c89b50776ee486cef8a3a55bd33a2869758d5db29d1b69fede787354d8b14d2c0ce068fd351137c88c09796ed1437b096c584b58238096bf1c15adc3459e7a02863fd4418eb2bf5c6a8d4fb99ea7d4abd27947aa74b6df9b17a051086659da5de1829acf5957abf24586b08d6baa9de5343314d284c58f76e917ed168bdae2bc1182bcc5bd9eb0e5020c31ba2b55114ca4e502a3be99e8a760f1f595b45bd6fddbdd93d2a31e739eb7cc447dd539ab27bc25af7e88f0daeb64f1566277f51149fa2b8de608bfd622b054651d5a165eb892cc9e4ded18a422afbabac731610b57eac2780ac6a01593f96750b884794e1a00863dd0ad2b1d50a7ed561072dec6e54160788c582fab34e85593d3bdbcb41d9ad37a05355b57a487fd6ab5fac6616652bdb43ac2a871652003f682f4b1fe61d72501107c8a8ce06f62ae3a0ead5d16c22ed7305eb9783823a8592967b95059f9f7bb27ee09156ad271ac6a2a8ead5fae9cf7a86645e2bca583f10c6ba252debd6670cd1a928c349d3acae198479ac788ac2f69b41fefae3c718cb3a86555855551575164cb6dd1d047ac7962093563f07b4d777a28daf6a8422468e325fe318c163371933349824c6109d9a871a2da2b577b3ebce9debb2ec9356b0d96a59d77dc603786c5639a26ab26bd7b249b938352935adb2553ce4b09b7d5e581e26aa66be7b37318d9ae6c4e6197b770fe0b158a36a308dbe78dfb83b9d3c76f114bff4c7c7699c86958b1fdaf958552ffa7382e48e4429b4455456ab17fbecc1230a1355a35db65a954bcc0d28c1d123a33262c4903de4e4f90ad2603b7f61588743bea26ae4b1637289d9808c0ed1df8ccc09f342a1990674ca7a11fd75d7cd63df26cdc13182c77a8730069b9f14553a0e663354a9d660b6f49d684b751ac14f2c84311a6d9bd1edb0c3c11dc79398bc3aba135158cdea0b2bb326cc0b7fdd03f2b003d8fb1be8051cd17abe81478f2cc8563891ca80313cbbd46443d55cb79e73e8e2beb22e0f29aae6aa36f1d7e512b39fd3367b5675c47a5d7527ca25667c756cdaab608726ebfcd90b38222b63b546daabca8266c5fc87538ce75aa6696294121e61addf17315cc88034aac37f525eedd8a5c4b06fdcd5c867af3a95d5685d97f59d2b9362f2630461839dba3807e7086b138f8349d9a99c8b5d1e0708bb13adf6125cda55d51c3634adf67d5c1806bbcbc6ba8fabe2e85857b5b18ec9ed4d6db4fbc8c1e96f4d7570306b591eeb89cde4af57d76561d8056d753da7aaaeef448b83ed44cba3b12564b3fc1ca9491c1c6db5ec338dda8efda217b5d51acc6edf8916ab97ed86691487ed0e843117ec705c38b2eae06030a6eb45d548686105637030cb5fb61379326e2536b9c967cf2a8e113c567ade792c77ee32cb1a0fb5df6833abc9f3b7cf4409c466c78936ab281df257d6cb0369e4c86b157543b2b0b00769dcec9482f65636f30ebb1df2d9c642b77b9ba43bd9a5ed24e91b65b946516cb6726921a49183a31dc7089e984ca75b59d1ba9595dbc8be79145a52c6ade068b5ebbee9741c0bddee65d7be4273ba95a3d01bc46a2779f476b2bb1b128b3427be743e47734c9fafe8dd68ceb671af50de596dd6ed31e5f124d2e7a135519c23ac0d4ad589b63a778fa26aa4d5bed5cbbd3ab4d5931e4b73bcada33a2a2afcc46a14470555731dcd46e5d2cac34dab17088aa43997c76a33b1ab38d17628f4f274dfb8a397670aa337f78eb61f430eb6878e6cdf94836f92e24018a31d252b4e856ac741dd90565e47bb113c56070743398f95dae57757a1399aca4d74a37ccf542f8fedb44ed68dbb1bd2a2c4ee335d5154f5dbed1b0acd9152a6549d68e5b577a58a8359d267dd89965473bbd59db8e3f6f25454cdadfcadac53f88313ee19ad3e13b9eb5be40e87b4399a165f498903da7b7de3e895d63bcc8430e114feb0c4de0f4ec10f43b6ffa26598066e94bbccb339f23ad1da90150793af5e77a2c58e73848d17d57dc7ca6714d5d51acc6615879fd0c031010e66b307b110c6c84bee38fcc46612879f58943c0e66ab17fda164ad8142dbb77bb3cb5fb25e1eed30fb55b3b6c9fea2bffefad391d518fd5931e5a1c5012dce0c1bbf73d9efc50e69e365ed441b7b854d56d8b60d7210c20a2baaa6af032bd7d9904ed0318268513afaf0105aeb9d8af0728909ebcc9a30ef6d1500b8802317957d27da78e8020e9104467344befa7b01478638828359f99d682fcca4269a05cd326cd0c58d61834069e20b4782bc90840f44578401074dc84235440c7460820e968081149034e1092a8e64c10b16c5c229b220e4e32511075b6da41558010cf5d5196cd5c5c00823e4e00f4b2471040b4c6e70648a2c0871555555497082ad4e99854888d4c0074b4025469220032b7a9a40031ad8e027c7bcbf8bef050d50b2900020269c18da01136ff0410d9a5005243c61c38a68a0073d478ec0821798e108f1670a2a7e908425a01a5290bc000fb6fa0b244498f0a685435ab0c2b65888e405530cc5aa79888de1e38687b48c9906f465344c5fd6ee3a2dfbfd0ddd249d11030b3386c521636bbed5d97062decf362c92d1a911d018332463cc94da17f27bf197fefa943a666d81816cbcddbbcab2a46ba43a6d74db7643fbf699de20d751ed1b259d6c37133b1b1efce934670761e2bb7a75acaf3b8c08b37ac3feb80d44999588c90c2e49b956ea75154a4aa1a4ca270d654a8866224cac627794dabd14e1ac9d576f68ef3ed31ddd5ec9fe38ab57ca7a67fc62d819361e32d06cec0b29424c4b8909dfb70e25c6cc1523c996d826f0423158f80ac01a0f60187c08979c7ea11540bc88d129948e7e7cac280b9e5ccc17d3898a7992218f22007a401ad00e810140b9e7e889586f349b52f9447f1500bf5d2550953ffdf10f0d84d0e300f0207e590896b90796f90696cf43b846f6965f7e01ea9765c04eb00b301fae91552c8861f0b9bac90a610c6c6914e604cbb408760cbb227a9b6cd942a145e130000bc29c800549e979d2f3be619e6779f1568723c66e89fa2c798f317af486b39b0838eb559bd8b2bd85623e7d1465781069e151cfdbbc967bc7600a75ef1b4cbd76b3e7795eaddfba76b7a00ee1cbcb37abdb2e69bcdcdef4fdabdb4ea3edae08e65dceb417a9e76147b5689a56358c7cbc2e27b3cbcf473aafbdd498cd6f5aa56c4b54e7878e6583b8ec7004f120be093103405d7ca68fe85410e76f41d07b611ec43f013cab97daecffbf453a806f1225253fe1d3290fd2d0b0912823a47b8ad08628f82c45cb6846424550222336d32dd4d3d3d3048d10b34f80690910df7536503452679a292cd3a5b2a0005019c04b8c16e3928134701860774c34208d1c9dca7ac721d99d1505401a393a6de571a2dd3935cafb958549d2fb9969a7f24829ef97504aef9b5456e6fba796fa3e8a7ee76a0169ec4c20208d1d49abcafb2e02d0f27e101fcccbfb0478510018d7fb063800f7be0c486307250190c68e968234767a06a4b1c3090169ec54d67bbf06a4b1e30d0169ec5c0b803476ce00486347dad8bf200d96f753de1700a4d1f23e0266208df8191322b1283463a1d94fd6449642b32134cb2aa5543aa12a34a3a2b32c4926944991056549a05914d910388a79656907f2a8e5382fc7d1b63e4e942da817ed36d2a745bb6e2385bc5cdc6d648fc66db7c19c5c9b771bec88f3fa3658939c7ee2c4de1d1723ef395defcdd971b1f53a97a5dce18846d47a69dd59b1a87a6de4101c6ea9b708f652af4c82566f9154bd7208fd711116df71b15bbd128afef83b2ed6abb748f71d172bebdd71d1b9acbccd0dd6052bebce8aedcb1fcc1691b914fdc9d4594a793d1b61ca233ec26cf18b15358115b5bc6857469419e9940d2a0d520c61087e88228a24242128480a298484922419ea944d36f4848a4ed964543c79e2c4f233259d6a0b6fdc88d6741cb6a89a1989629262020e5b46468d217e80c39631c03712bd61448b9e9e1ebb80e3a08e13e338308e5380e3c41c67e53828c731025362596e0414b22a0ba8176701df71b1a8e3e4a062fcc69f2b068cdfd8841402a300bf9188568098df38c449ccca6ff4795941f98d429a3c0745e537f6c0fe5a8eaa370cc861b94abd3b2e96a5de1bac0b96e5b78f8a8cce6051bf3a9765a93b2b7601f5dac821f1c9933f58d4e313ed04bb61c0933ffcc1a2eae5684401f57e43d4fb1af59e68d43b85a857ca9f9f243f29a55929866118866118168405614158101684055d16e663311fcc07f3c17c301fcc07f3c17c882e2344444490c85e444444444444a89617cd089791cb08aae545bb2e232fec6504555beacb6544bb8c5c9791a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a1a1a1a1a1a1a1a1216b886ffd583fd68ff563fd583fd64f5151515151515151515151515151501534e3326fa957a6fe52ef64111434a3caa128536bad92006970e553f9c8a108c36f79d12eee6c8479fba809a4c1bc7932761f55422251248a449108b33dd44e5aa6a9681896e92a86746ca2659a49c3705f1181b88c08d230c2cf5093a11eeaa11e1aeaad5ee9d53b65bd273bd4f57e452972d6fa43eb11e6e5a24e225fea9d5abd27aede8f8b224c15df6b2c4a40bd5246bd1301f59e6c8b03d47bdbc200f57eb6452dea74ecb8d88b75c16a387012709ceb38dc71bce3908e23bf3d79f2a48774aa2b02645ce7b207b8a25311d52df12c6ba4f27c6ed2a92da524afd376a6bc9a93a3e3d995e7ecb4c56127d6bbce6551aeb3627148763b7335274787b30578ce4e6571d8c86ed7a96ccc754c168701967beaaa393a28d600cfd1d16c8ce7ec5c1647a72d8ca24e692fcfb9fa4c52798e8eb42c27799d4a40cdc9d199b68231d9732e692d18935de76471a29551238cc9ce4700651893fd00b4614c7603500cc6648f41258cc90e836630263b47351893bd00748331d963280763b26fb48331d957a80763b2a350128cc9eed10963b2abd0128cc9ce4251604c76124d8131d953a809c6642f511518937dd21518935d52161893bdd2138cc94e690b8cc91ea90b8cc98ea2281893bd85bec098ec4d59c098ec2fb4058cc9ae5120604cf68b1ec6647fb0a60a614c16007b99decc88e513805e6e000fe2f130f4261a45410569b002f8476f80bc00c9910e6c000ebb1b01b800fe23087a8477687778efcfb40e67fb470471b707a0a2a4fca675cb0e3505f1f7260a230c0f4d0a8a88889200d3a41cd2901e7fb50028d2a45009248de860024920226924230c8a076c62f2d04cca43a3002142349086692e2cb228b4443b253150c2f0aee4600658bb56b521e42ac9edc58209af1402aaaaed821747eff2d8aaa2951452c26309ac627735125ad5d596d19d8009f92415fd01190149202348c38255c5b4eb1ac167b33a63b6c520d4ea0f1f164e4109256cd7615ad3aa52497fd247a7acf36f7e74cacab1eccd67617f570a05410a1bc3422441186237864d8e2caa8de0b3a16ddddd91e9031e6d5f11b66f59f334d24adea2df08a49574049fed181fbb201fcd910b077c5f0a75aa8764159db2aea4c2b212cb960482421a01b202034c80ba6fa003dce5b1b13d0863baba81fea0ed4091f80d1669f77163653c223a72891068e443042805422ccda6597249a7a6d003069bbaae16ecc05e370de3e38a99032ed94007aa337669249bf4278dfa6323cb974a84882c9c8313f6c2224c8814ea8f0c9c17649223a28c049240746882bd52a85f8a74c05aaf66d5b7e8cd8badba24f35228cafc8040f1d45f45e37d54bf2aab7684343249c374954255985288af14ca3a1e2d08f374259383084584c2c5c588d8c630b94979e3c25637fd75d529183399d19b86e9579df241795247f23ea24c7659a3a43ffa6bee0b53fec2a29bed563d52625767435ea33efa8b3459ad8a220c1ca0dd62a743de746a0491888f1f9b26393b774122119a23281dd8e5651d412462abfe60ad2a223dfdf90cb19510374cbe98808489207baf1e888405422e225713b6bf916aca90a413002d74d1c34e84745f51bbc91023f6eb196285756121922141963b1bb748495782823326f3363e6332bb303d0ba70803141676366217f111134636080b91303134c4b6b010c9902b2c921604d9170b91b4e009bbc1cc07f3765151c68699a333ed95048ce95f288030fabab82e0c6b2965cc3a1ccfaaaad234ebea70c0eaf7eae18c09cb2efc8cc16ecc71090a5b31b7edee68639c107ed1727703879436b4b3562bcb96b5ba1214936f59f618c2980ab213eb02ea1457279dc26af68379bb67b686597dcb6230db666a98282248db4915d5630382e2431aee5b457147aa6d5474f55c3e3d578f0ea0e4c3ecb3bd7aba0875f54098be80ea3d01497b553ea892eb0fc24ba118a1086ce2b14804fbd50363fa990ce6eda21e207ba19155c29d0422cd560f2535aa26466fac379188107bf5f491932eea1444d2822bb0f88bc68bc663f4722472bd820c37ef06b197afb1b5208f650aad25a4bf3e8a32fd0608d3af434fef21a2a0897077175d3e574f7f981d2617f115ec83bdcf3d424e474e8e00c2435a88bd89446c06c4c8c67715e6066185f02612b1f282304617d682b0abfae3a3fe3ab3c2f6ed235bd4565f9186c94732ef9102c5ff15c54b920d4ed18526164ee1057819164ea14489855dcd65b96673a6a10b586313b2c469aa5b393a01fd8af2e804f4ad38cc2bcbb024c2c0a2691461e05184f18930b00646ec954440b6ff801af4c03ae009469d2282119545c38476db7a09b40e780213230bade780275cd129543cdb581df0842bfa8316dab8824dc20cc2f42123b1b511ecb4a6a6c2aaba01250ba728831217c72b78962d1fbae01ad068c9067e845a5adae6b1a48899299aa8c1ba921c420dc8688f78615729624298adc20c4f38f10436d4e1870753944189ab16c1a33f292a6b46d61c420dc88104ac923183c7a5c40282565dddad82ee8e71830117aea0821bf84084331831a2e91d5ce10b38b0dd7d594ab0b601a96dd77be3c26a1f2f112200ecb2363053f9105ad2dd9a85487e88d80b858c529840037e080b850260e16364ff02a0c60cc3e81cfdc1ce075f1f5c430417d220018ce9ffe8ef08ab67bd248f04341001bc1c3443530591ecfdece5a0af0664187dae7bafd4a87c0053da65286c0dc93072c0a9ec5af6f2cf8eb4cc9702c6f48f88320c0508d3e7264018fdb6ea25911eeb95fd0418d38fe714cccb3fcc044e02d7e02e47c17c04d6985c841f700d1310600a7bb3115be3c4034ec9cb3be01a2f3780a9eaddc44ac5356e56ae52d9ab3c45e6e01a3f4c5ce33b710d1e0cc37be11a47f009aa4507db8fdc84eddfb4e1684883edabe4e01a906198ea652232f48ffe4233166cbfeb652a6c7f7e4c05dbef7ab90ab6ef55252c05f8f53bca1ce51bc0af2f312dd8fec555d83e6b19abc1f64f00697014600cd760295807b0590eb6df1c742d2baf20d6e2a0b8c5ae0c3e4d58ee7973f7d0368493d055441a348190fe54702271c20a9ea64e45204b6bccf38f8fedbf7c2f62546090426cffe5459450d83e97c47290a1254b90380942320325dd5dfb8a55b56a607f5c0569b9164dd3b692a651ee255aa4652b95b4c3b3e556aed27d65e52adfd1bdd4bdd4852e742595d3b5cb96ea522a3149b656e24aa4cfc95da393e3c99d4b255ab3dd9b2da5d22c91ce9526e925cff34c9fde3c893b9350bef165f9063b52bd8d7292f7b9954a8796a5542aa16c95f4eb2db3a2746c2fbd546dbc77e78e38c2965ea2f7b6f4d2391a657335a573dc6722b79548a47394eb658e3b4abd3c1645dad229cede4aefeadda11d76a594f98e7ad5a278de563af6ed291455faf694c3ce06ca516a4e0d777ec9fbb66da6addacc93263da97c7a243abff2956f5be95b7fdb0ae554beb2b242e5378ea26abaabbcbb8a0aed54ea65abf2ee5b773bb459558ab8742d2edad4c1bdbb46bd5289d4753ab8c3feb459b77f2bd25261c3c04f12ec4fc9562a954adabb96b750d8a5524d09856a9fb3bf52a9d6b0a01c8552617f2452ca51ee993e57ceb2d1159615524aad59398af4d2537e49ef8e4251a45a537a4a85fda1a0e6534efae6795fa12a2a2b9e4a85fda1986a8df73b6b4d89e47935a50afbf32aec8fc4052f98dae50bdb0dbeb04b4a6bb2f38dabadacb2bfeb3a49db7e75e2dd607fde0dae929e79f51e61659f44a32db27df687c9c886c18ec9feb0acda5c9645d37d231df677b9474baa45bac36b3b76d8325d850d83d5cb559d68a5dcc1a35dc7680dffaa5a8d94f456f11ee1236696f5d3dddd377823dde0f37612edb6735b8dded98354a50f89fbb661dfb21f36bb32928d1f331dbf511bf93ea9ce08b369dbb793aa8c309b566de479db26856dc37bd5f9b0db4916e8aa4e9093b6ead5c8c3d51b7cc9d76af8b27294adfc4cc3ebc423ee0f0b0f0f60f99b65f50042e68a73d8f6e3afeb74f68ad525b5aa0daa866f9d5f774070792c1b61dd08eb3b256b5523f83a9d8db5ebd52d87aabac5af8858fe0c7a2cdffa46daaa1e975523d6eda8aaee5fdd8eaabbeab075885995bf5daf2c805d3aafba1dfc7888ea01234c056fbd7aec76f0adc36e475b34876d5575d8c6a8841e6b7de3be51ee1e35d1cb634ddfe635da7ddbb15dabdd7d266aa64ddbea0df299ee2c40aaa5ba7126cad6e3c0e9021322990190dd7eaa70769ccef21df3dd31ba0352eeacfd300bb37acd951d45e9d83eb4862458005838b406221676b2c4f5b27c275a9b966bdb9c9eecba1b3653a3dabc77d34926ee93339dbbb3fb466f909aed4c3291baedc70d9beed06edf8eb0de39ced4d9f03b6a044ff7ce86ca4d36e5a67bf4c63c77683d6618c330267bdbeddcbd95152378b87b7cd36fce8f1eab13ad678313c46e8736a3383c76dbb6572378ac56bd5f9709a543b3e177d7aa0df7798446efb57dd2287b6a9ff5f6287dce8d7a9f94ab57c32636cfadd4cb6357e4f6539cddb1ddded5db759f89d653524cef28576b85e2449bf2ae5a875d0a8eee4c6d52ea0ea3b6148adaae3d45a3a8959a5333cf7dab35dd797aac5677a24aad993e56ab36a67b26da526f7a0ae59e8e728ff54e379d3b1ddb4fefae86e5a76f1bec2c40da9a3bd1eeb0d3c1f253bd3cf21abd47d8abf38ea26ab6b37c4332f463250bdd5858be756781d26184a92c14da922c356164f9dab71d2a96ab8d763ea41adc5050e8d6f528bdde23ecb9dbd1459db8d1f92b7bc00813353a6347d983503b3c890f3b0b94aa0703293021922696587e0d67875decb22d4cd67e19c1b36d3ab1d35ed289b63be48edbae6973d62853fadce0bb1ff6ea7c873b1b97776cb6b3a17df640394a7be9246d9b54f3a8f6493d7a4dbff3dd378a324dd4341dfe74d3b77b14e56914a5f2946bdf4e94e54437966ddb3cefa5775fa128aff628ad1c9ee52b4fa128d353ee7d9b943bcb65db9d8572903b5ca1396cb977f4aad41e2847995e3ae9d7547b944ef20edf7d4ba1f3286c49d7e87c0ad58e424b875d8fd2ac9787a4c31d763a0c60f93af4265aadee74a685c9875846c5e45f528cbba735cb450c1b01208b980627a613d309a20e030dc8501dba10625ab21689af7a4c9a580b30851c69083fd39395d886c2f0844cc0f52b0427833bc08c99043009c0e4e2027162c1fd16c0c2206eb3df9697d32d75b4ce30ac5fd2468461583572300cb61cd770619a5ce34b31718d172827ae11a3f4dbf6856bc8687bae3183f4db4c846b0cd139b8c60c8d75176dcac391b59ef2820ed6515e58eb318ae060ad9764a4610dd6fa9461adcf8064b0c25a27cdb0d687805fb0d62d0886b6176527208c0ce00ef859e7363b58eb5a1cac6506c8df8561b0d669208d08c018aef10086e10414c244a01f8452968dd97374caaab7affdf62f1cea63cf72484b8b5c35654882cd29e4486c06f2b22d40eb96b9b3be5996156127a50c779a5a98ccb2b3916df5ead88d93df667ff3143b1bdbd6281d72049ce52a28ad256d558bf47962d71731b28ac976836d73ecef8299428e548711e656f6a26eb0e52a2d67afb4170eb6f05368b20bb6aa0d730053c891c6c1f684e2430bab371f0ec18f15738460c08e70f558eba9eb19763dc3c2acce0de8cf7a0e2267224cdba762446afbb40f91eb15c5ec76d1cbf214f346a0368a304333286b1aeb070a6b3d02754a422558e4b87dae68adf7904ec1a12c5461ad77502769196806a16ea25370480b52dc177bdba78918e9d1821516573f9dba3280ac5b33a2b09ee85474020a6b1d5e6b08d6d281bd2f31c5dd827db0d6137ebcf523ac5b9665b238382a0b610c8b7a2babf2facb413abd59d42bf296784b3c26d55bd21f7dadb03f1502505ed2371d154f98fc7b09d5f72f2bae259d128ad182f23cc687494fd45f2f61c295b651000080d2c1afafd5a6f6517f9da4bf32cc6ba85e424d86e9fd7642426dc59202d066f2c1d06ed24e5a68ec8942faeb4a83b9f2db6ca43f9647220e727108652ea1527db98496742a7bdf63d22cb4930875493aa5d22996f7ef2dcaa9a56536a008d347790bb550b52ccbaad4e6a396552b0b8b7ef4b1569d3e8bef3a6d7da629bd6dbfb3a8df675508b4f84737e6ac7aaba606f0db583b1d9a8dfcd8e128c0ebe59622426ea2a5b3c195765025457fdd05e10920084f00df366ef148efb43c4082444a2b507d0b6af307b14c6fb4f11fad97c7d2aa457c8bfad3e2957ed5a6c5bfe38b31e01a9d8a01e35fbd6d7f18f5766cc2560178417442e74ae965fb167f8bd7c716b5a27e16b75e4a4741209eebad89e71df15c1f89700d7eadcc67f11b9bb0962dc0b10e473d571bfe77d9ede06c7cadf406f8adac556f4307503b1e150d505fea0050494ed9b668d1a2458b6ff66b4123118611bf75d0b2a0fc48593c06b50e830ee033b100dccf0288ff02f19fb7e60ac015f6c7e29d509489793f88ea5d00f59e62ea251461bafe8751e6458511a6aa41324d74b2a52004d082ba70616de2ebefa7a3feab974fea7909c04bafafa8ef2c6efd128a324d0018202a9f850bfbdf1b17b61e88771d8edfa656987bdd0ecefe4d54df87f52ff5a57ad40740617fb502f17a61ac188397ce8645ad18638d6537fb0741bbade825b499f41700528f8b0a807a258b26ec65f116f4f2d8162d58de9d0d9633bd2e2c33c561adfc013cb6deb2516b6559fca794deb8b0af31060c83c581e8a096a2532cde8f31e01ad0b260f11614da2cb6e8968268a57498725413b9bcccd30b16aa52abfe986b9c691305aaecdd8084a6bd4dc4056d1d959c3d49a72e36048d2fdfb78d6475c6157c7fa308d3dd7d698564d2b289937e26a49f0de91491ce7e6c634491b1222bd67845631611d76b0c935d60732e9b73d9fbb68261f4b78db39ac8b29aa853ed139be837934e41243e5062bb638fed38c47617d96e62fb16736d222228fbe333121fecc0f2f5ea5745596709a201c212447301d9781f51a66962bd3791883cf785094f11a69b88e8128230fd26b27d095918d85fb4dc4100b3b23f2f4c38e486242c7fa6494b4e41321e6e9e0004611e0692868d296f0deb3d020b6231cba27d4831143c33b1dd84651f86c1b09be19bf22f6a51682d660261a3f830529e8bab1a6c75b2cd8c26ead65f9e7a6181317d14c79831b02a5655bd1897832536080bb19083208b051e60610757d82d72d651d5241af5156cabaa329394dfcaeab44da9554569b9cb219461f17bfdf4195146ab28bf52d6cb591494b3a02794370acae765d5e45d686907b3a5de70b6e577d65b59d35d7ea2d1b65c9a7e3a77386ce22bdb526d4ab5e52e251ecc1beede7036e52ef55696e34fffa95e1e6259b64979cb4def4e478b6905e529d526deb2b1db61d9584d47a99799d8eae515b57e75365e4c37b6e21b938d2230d9aadaf04b28ca944df502b1a657b49eaa998813570e3b1fae81f2abd316e5d531940aab18653e86316347a133cd9d0d36d1977ad9bebca22b2bb7ce3e2b2b67269db2bef2abb3b15267cc6ec26eccad50cb44b9abd96cbc158bdf1b8e59c035aa21f6566c99050ca37a0b8576ebee6c1461f109b4784b9533f82d2a0bca188d4fa1b2bfc8718ca3f4d862a270c83a5f2ff7c6042d66623adf58944bcb29df58de7466ae9a511e6ba2b5315d9eab989212eb4a4b4ca9f73af32f1e4c87fcb561dc75d9d9b831d9ec280a2dd6d9c80e654cbec55f99e914d75e390b04acb3cb63ac17f5aace30618fc7aa18efc25fe15b3a501e8fdd1b6baa28ecfc9657c75e7a4c31a5d47b6351586da9f7c6f24bf5def04d37e55dc529e757d80e10d6081e9b72ec265345e58036a572653a0abd29bf6e750f381de556346d187711606b4239ec22c01185cf99aacde928d5c6e5f137a653adaa4b77352e15b2549d68adc30a5575a25d81c0ca5756187bfc16291699bbd6dde86a4c763bd31f26bb55dcf35b4c61d3b1c7157ec558bc29a5de8a23bfe2193313e5ec82c9bf33ec101c98524094c7cb36e52df4ded896c7cec6fc063b9abe7253bd1c291663044c2d3751b6336d32adac98aacbca4f0ee0b12bf3d76345a936f3a5d992426da20e89324d73a505bbb652ef8d69e52857798ed852efb458bd3726bb721514f9d237c881b872969be8fd8ab018f63251d8ad17d434d9176b7a8b0b6b7acacb61b7a4fca4dde5a59a6050f5beb8b0d87398ee52afb4a6ae775ad3534c54e52b29f7ce826175872dca576adaa2549bf8d2b9d3215fca8161d8638cf1a6549db637962d9d542add081e8b751180d6f4484db404c53459ec299f897662273da504c594f61661ef75acde986ce9f7c664e3afd2a492446f038ab837f61aa2b93a636e5b2da21d76414c344776d84a152b3f9293ef058f194c4d764694a93966ba3b1b3c5630596cdfb230bf4209c23cb212c0152421473017178c31c658af437a13896cb0b3acbfcc9031665c467f7d824c6754bf316658abaa33abc38c2f8614b62fe3f4f222339ae71890beb838d161de1831381956085d2898f672911d1aa2629a5c5471c4fa2946e6c83156310ef5a7a413d08f3b989787e09208342f0fd9e65ec3e40d09ecdb210d1f76456015858a5845c52a01a6c10e69b27a8a309397b0121e1ab226c7a14ef1d08c9587acaa08526048b60d76aadf1667f686f5ade26277e358555d76bb38abbb6161dcd5ddb02487457bc3d2b8acbb6169dcd6e1b0de598c31c2573ccd951f9830d9986c4cb6357067a33b09340df6c85d194fc0fb8832d8e17f4499eef0887d3c78b884909c4a866daeb1880a937fa310ae119908b1c2de5874f9c4a2b8bd638d45b6b79ac3368b4c6c8469ee6c149143ace3f4e8aed520282298463bd368d587a3e9ee53d108d1be84a4e14e44a4e9ea12499068b4370d4699a66f108e32344076ee6c6c98665da3101ac0aafab32e1f26266c1f8b49acd6128e05937fad253ea24ca4814dc3dd03782a8b039fd8eb9f120b01c0d68541b1c118731ad9c0c7f63992ecb146d55127a0bf6557180163fa3930a68f0363fa3fd88131fd12b0e5a34e411a5507c61c55464d3a0519d61f966d2683792b2368114599ea32d2647198454b604c5795112f913d14652a5e22814853558be84a23db44449db2822bc213b2e7b24185d52fc6f722c617e37b11238b7132fa5e0cc15d316d5b61fcf2fe6e0cdb32e01030c98bfe648c28316019c88f17fba23f79a6372ea41cc2463984e55731c65dc418ebe59b216c9452f6276bbc8926ee193268556d42cc8d311a2387615887c3808a39521dab8230a6824f4cd5455fb04eb55da3fc1918a39db52166b86016c4c77be3427bd19ff6cf05c317ee198df50e61b3ec5189f7979d95d8986eef94dce4dc48dcd6d9986f987c3d1e150fedc9a2745859513ae4adcb5b5d4dbcac974ffddde0cf4413d70cb31b6c67c098acba19c2c667873e33d6537fdaef493baf6032d4e88df652bdb0d7375602e3eb9ee5ca02c6584062acb8ebc23e5a5c04e2beb7973cb360de538ce77f578c314656c1bca7ef8ad17b8131d7b73b375662de135feecccca7c85c4ffd5d9ffd5df54aaee2dfcccc6c9999b31839fb6566ce2e337386bd53cc15571557155755adaa97475ba5aad8363e79d2363eda708c31c6ea333dc3c657f1e471179598f76463c4f8bff4d7cd307a57c772adefaf4fa7bf61decfc9c6319a6cd0858b18abaa921c84a7a2a325474410429923224c11909f68983ed6d9b0804cd5fc8db6aaceb0c6ec5e5d420eca60af24503f5132bda33938fcc492ae63c4a345b09784605fe234583d521d85caceeb48255a04bb47590957d130fd497374a6e52c4c0161f451e88eb4a4ca544041cb5a8b5b358ba49c84dd945285a4a4d42315e9db2455ef9bc5a154d65372a32da9f2901c26ecafeb48f7485ee7b1c7792ebcee1e29923ad20ba93b91e6fc366767c3f3bc699a73e2b02d82d5c8c484fd09314997dd8eeade376fab4a9d0d1293ba1cd0562f753555e5aafeb60a3b29b50a05665ef7ada3d0c6565996cdea652b6c5f9d0ed9df1395b4a48c2e2e172f8e382aa20b720c93d320a38bb184191d5f309b8db620cc63592846d89630932bd8c7a8a767894d2d61264d7888f5c146bc848bf80a66e2860b8f8e00726385922f6c4c6ca44090218948862476e3301cc1460abd60b71683101b690dbb453148a112c3196ca403b09be563231580dd2e22d84881b01ba6051b298bdd24c7144e41c4c4461a84dd328e091ba91076d3340f879fd83e9c620c496ca4b7fcf334770bb695213e0cb104b070680f4bec14435158202c9ce20a79b0594f1d74f0c4ac847c08c12321a605311fd008664b8c3a6535915202c5de40a7ae2a99f467dd615e58e443480e3d91459dba0c818afa5bd21ff393fe2cc9a46562572642f347f5d19ff764165d15252d5765c1c888b381bd52c8882147afaa2a4e944240512604153350f50163c42054c9c10bf6c2a2ca095df960362cba52480c5178624e29344f4249c07b3c11f3a47b8f470983e93ca4f78827bdaa3d526eaa40549e7220a44d85c4d3c374520572a43a90d24daf6a0f202e5f390fcd95241a69bce944a49c5491203d85f49423617a3ca4d9482652ca5195e9a413613aa92271a487cb578e44e9a613b18284cb570e554efa4c5791a2aa7b67f9e652e2a17169f9e92e2ffd4a2194f57ef56d859a564c4fa1434d7bb0dcbb4525c0524bf75ed11e2837969461084df200d4d343e3721616171e1a16d34f144698161e9ad3cae3574e796856944821141134f1900689233d58be724883044b455527a1aa4a84ca4957a9408ea078a87c029046a512711dd1200e38c0c1504f0fcd8c307c20417a7c9a46e5a45f998319610ec3510a2694b0852d305109aa75a874ccd3d5b122764c211a01000000017313003030140e090663a160382215d458f40114000ba2b04a76529866499052c618030800000000000000000084260000d4a87e80ec0548c4462d117cdd33f587875d6dc61985df4d593372dad95824d97ad904ce6abf4ad9212b4231fd83ed9153037f25d8a6c030748141dfb403dec38746963945bbca80be00e9928178072d488411912a8ae4c56da13160ec4ae4d009bd510f3e420ea2a7be03dd82add4e6197254425398f884cabfe416220f3f6f2d11de408d1f2d20d1a9b55704d015efe0fc9184ad297b703099b49abfba166273ac85516a2b10ca8c9e47694db610ae5f594f1e26a510d3177a9e781870a1eb16c818ad271693d10e4fa438d93da46392476adab2f365420adebec4f7143c9dbd9ee3bbccfedda3f60a4944d5b3b5126d9649a140c7334ece9dcc0d96220353321286a57b820a7b70d6461999f22d4ce70ebfc8a7e75afa2032e88f6a7fbbb35b1609ebe53a7bf1cf996508b84580a801fbbd91660bf09fe091773892509a4250c3777ed65571463dc104ff5180031c3938f2230f5b6250012862bae704b4dfa659685849fb3e9e6ff1c54f3a5bd10ce7187282a4303a94880908b7917c2d4ad33c3c6d1d403ddac081b1038094f91866d28b3bbb32d6a6bf6cadc646ba9cef6fd23ed60ccc9bf3cdcf8b386ee28f71a1b1b7d17307a26c7120ade28b98e3866ff1ca85fcaaea3a7857910fb40d6cc0db55052f1f38c03d90ed4fb87bf75633ba1a380bc9726735d4fad67706239c94c48de2924db2207dc4a251fbb9db708ab6e83c9416470e50401101f90106fdc9488644025a083710ccd7fbf37a925403bdfa7a74739aad094e2122c44453b6e7b411f10781f34a0d7c5e074815b9100133b59178255d0252ebda248b4d45bc16fa59cc64146b4238e0c0e029f87a17d204a95ab2fb2e53dfec2e8166c9383e88736026507d4e5a184b858c74667f3fc0a931cb69fac0bb49ab6ba130f34ce0534a4f061644332c7a02b8bff312316514dcd01cb6e327f3be35204e3641e680e57799504c371f0a9ac835288ad8fb2fdd5db1effa0399ed81d6c5e06694acbbd469e1a5c72e68de1067940738c5f6b2e0e7adfc0bf3978c0b97700835416b9b0f207b9a088bb67f72c4333ce4a0f696c029bd180882cec3c00929ad6ce00aa82af5575a8c7bc7e9860d37b6205e76f3929499a14b2d524840cc9f45c193c43373e8c87d89ea42119c5cf0ef111267838b4b8aee70fb794ac680ba567d51c14074e725d24c42412be72ef0eabd270701c642c6cf8dbc0d094da3f179ff453a067cb0aa52a9dfe587331f8877d695ee336d1e82f76f43538fac9900eab6c380076bdd049f9cbda33c0827e1c0059e3d919913a22dce98e12607be3e33048b0c754de356c0f00e24175858840352665069f4ff9ecad72cb3ca37e21aaee00657f5a5fb04f89d2c5c29b74148b406df49833396b7740077772b9ea84323692b1e7f9de80b511485419e8b3bc1b56953f86570a935c1552f83dd5f59741c1948fe001b5d52ed59c218d204c21f905a3b6ca296a5c5fab57c9883bd49cc5b329c040c9989fe45ec947fc0a819999b227e13e1a008b16030fc7d3a31e18b4d51e0017c5da667c493e49ece3b25b8c8b82dca064f543c477c4925bb19e9a72024f99903c4e33df625acbabae5fbc833a4b1609956c750fd545fb50d79115dd1761e043448b260e8fcbd4cdd6ba561d23dd22d2adf7b56c1f0f0c8569ee0f7eb1bc22c96a74107fecd5ff85c388cef8baff77972418d37ab0ce035f4e163400612a69e590ea120f8188edb3144b1b3974dec8b0111e063a86776a1045fd0021fc34cc3601e34ec283d3cf893802121dca594cd90d8c113061981a7987ae36d9aaf6f92ab4d19464227ed0c93b80caf005bc0693f8305abaf20b12b9d7739c772f84b0424548f9318305aad0bede06f5708eaf7513ca6ad1bbdd9ffd70ea456980cbc8e238cd8d6917714c7e6f7997ce7c9e41dc095b28538155b7365e1c567c1da1e59cd79a3c966fcb7b0b8752fe73ab6d5ce03ac93d134e30282dfeccbfe2fd3db8edd61b32df160f547cf1d8a7e92c86f02226f24f5c955a58c5beaf202801e02d741344580128e9322453efb7484f74a0f497697dba9ae2334243f2f8a43820f8539104a5da74656dddd400382b96041ed6aa9601f13836a1a8188363053a88adbd0e7818ec04b0afd9a3558be4567b38c00dd3efd26e009d17177be0a6be903bea2aaef634b5bfebba52294fa8593fe87a370c5abe4a803ba0df0a03134f281f819036b773052aa922b44bfd510844a22bdd46b40246e17607914ccaed8c32c428e25960b7a24c04c97ff2ebf60a6107548fcf22fd72db6e4999c874c410ffc1423abb9b110c1b1c1572ba148cc198ab30e1f0e4c2cda9347aca467791e0e127dba8322f600638039599c43f2901b8c2ea1363417291264bbff42b510935b80528294e45592ae01cf8a0d0281be9294296c411e193557cbe9c9336f4bc2c59ebba0b34700412c5053915507cd25f093833071db6dcce107e46299fcb44512c2d8e3d6e19ae025818320b4e714b998074678521410da019d714acf0b06b01006016258b0efe3459ada2425d1ce9e4f31c9238074d77ade8fc75968a3c52225a225a26bbf95b3bbfae7345adc40f2bb18fe731f0f3f7de09953aad8ab24fd7e42f2895c159a6c53b578838d85bc09de7983589e8e3b1cb4fa0b08dc8295b5683bfa2edc122fb637000ffd3c8ca1ab215b199c7928f4e8928a0fa12bcc2007fd91228eaf8bac67a2c71fa134a352e93e25c22fb51543f2003596807ae5cb73e42d7a8748c9300aff0d3c0c135647af9031cca31d11a75b59b370d0b903967865ffa686002e694c6659f4a13e3ab78c6f1d5a5649ec9a52a8e6ba0bc7a242a03df77a2ca7dfe0dc71bfc0017b29911254b2e9e4b930a016e5204378e438efa2820efa568decfb53bd7c399a74870294f9f5d5de3660d133366275b911c8b5d5b9827ec537342a687379deb28b5e93cad58241a9fe3a858c9a78b759cab4f8db60d1437a9fe6a3a693dc688b44df1c960444b2761ee4978e391bd3ff26176ca0c0da536959a5f7a3a30307e820ce4c44a8fe4354fa988bb7b910316892b778ef8386330b6425e58fa8a6d68cfc90809493896dd402d5c6fb5c114cf2ef046c6af93a9b808df2c73086dc90611b2252809730ccc2f07cc2d8dfb2e3a3af6a1616874b4674785bcfb60dbc6adcd15ee8acdde518cf704ec5ccb3bbf58af1b994ed3cf31ca4bc7a733d9b1b25d65a7296de8be27a3ce5bf3c840ce23c49c15a1a3349decc346bd5155cca89d66adfcf0f10ada8ecb56f90224b591dfcf981baf3585f80aab102c21d16b17c5611e5a8ff06f82d4455f19cabd12c90193967eaa8ef2faf323e9cb2e3daea29753df6fed3e9b3721923ad4aef88b336a8fe63b3fa671c4be25fedba8485e3b08ba062f54aefa45b3682dd6f740641a8afbaa16c49ec2f9405bb50f1125c6bbec9683dab3ba0ec57aa621e8f03ef1024984166655d06ff523227881af6c8a40384cf300898214f43a452fb4e55abce2c24d170e4410ded06148d76af6ab805ea0534d5586c8941072414ae294392fd1cf082724f38b447e6eca265e54c9cd2d7034d14736e29be30a62cf60b86ac7bbb3985358a392a73105b73b1d0a0683768bfa58e3cc29cedc7df6159eef925c6a817da6df79eb4a3e28f67d1a0cc511d4de22255f0630e90481c6ba4a7114b1323a24a3f868b42cbf7c0b664ada2a1c61d8fb295c62c8ea95dd105cf23cef1f9c4398eb0cfa40ea1dc8219cf7a492f8c2a251dd0f2cf3462b8d88465db8536ffd4215d34c6454734a701c05418808de05c80e9611a6f73e07b29ea8122f24f00f32d1a4c8cb7398a0080fd29cdada83daefff64bb166ae7f66bd1bd767074746491d21cc7dca0ab215ddc41eb1d3624f7511446d6da292475cf525700c620bac97391a227372f71ef26b53702c4e96f0b1053a8f6f6e70701d37c40fa171e001248732029f113f9413b85d05b629a77e1868e60ce4e290bfd4e4d4d94e8b834f43101bee5a552092911d345ceef981a7a700d56386605491cb0e04c0ca6db9d9e7be990c5935c6101501d21d27c43c2d9aabdc7ec1ce2a7de4a77c12d4825be02b44f11242b92876215890f92243d8a41faaa93946e3c25a1f47ab3ec3660ad2c37110012184fa084b4cadb5f129e8fcf27c93288019f3fd2e3100239a631d7726cf5489c2b34966bb681c0df943217eb700baefac62462127b160f3f3a2eb7670dc9778cba02ff08bf666ec6a066f95278b2682ed55ba8d8003254f0378d8539a19674d2a837cb5bb185278af5d31d7b7d0c0d5db4f6690dc4f9ac0095bc63f0b00f8eefbbc63ab9e0d116f5f154495a34cedce20451dd816fda33304b9442443298e2cd4a5be71c9dbb937cb9023e63038af33d86f68aaf0c69bc7cbc271b88ec963925e686f80399202050a6199be6d6f3863bfdb8e8f4ab6d9e1e1bf2ab46ec2005aad7af4baaafab0dae934c09e4026938fca988c6cedb1334dce124a03477c9674de076dd5e7a0c086a6630887e065785c6869fce31a2105726b0cf0290e14f923667887f403e3c565441d6ca1aa43bb81c36eb832bf1c580f2e33ff16fe92f6f25a5eabf455ad670dba3f40c4e5e5c3e5df25f6c2ab9e89ab0e8a2cb9bf8dfbb38880297605c77edbd290fddfa4dc5e4cb81641e4076e21aad52c09ce1d66761e82656cc286f1fa0b87aac38c9969f1ee77c66036a817acd8970fe353da2b45940de37f57631eda0072b826c19a50fdb858068117c2964197547e5ce989f7234fe704000984c90fef8284eb80b33e25548788a4720b80442f353605ee6d2146bc62e383598c51848ecd7a67b978701bba0e1ad9a058dbb6bb5b2d7dc0eb13bbcd902279520342940ed4cba5f0fb5e57eb16c56807ee0e1c61f2a5fcb18fbea9235cfdd5a12f013e403fc2a75fd7b3b07ee4b8f2422a77c2b301aa5ceca04fad863a4e3a6320deccf497df5c6db73dbb4e79c208312a059e41695723a29061f4f96decf79426008ed9cadd646ecd51f203b10e5d8d618e22ff69eb8993f7fd46465595402bd07e7fcd4c68927afd9167992669edb68a58a2e8ef4d2682bf4d91802f95c0a979af4eb9efec18c8f2b363995a4d27486d6551edbc0902d6ceab47e88496a0a9f1c5f7b0e3d5b771bc4bc58dee59094ccb88c476e4283e3f398896abee628330faa5f89dfd7941018600c2b978613659d1b7c87458ea280eaf334c6db9610b2b6044f6b0194da6a1de42d8230a40bf99d9e489cdc0c45114155f8589edf811d9eb2279e4159f36ad4e4547a9769459f087585f50492cca893c241212a41a07d25f798d9186c696dea752bf0493ca58c614d987389b5beed64b30d7c1a71dfa2871a3ea4b4407296fde4857a137f8e85de326107764f44ba1e54080e640ab2b312ab639b27112aa13663de0ee03b93320f0655b18bb9a6a11c2ace55ea067e5cce29a1cf1785607d3985d6a2feda9de5446c593242d318290e5d4519e747f12ae6b899c641661c298400e200189a58fe8652f3486354484120bc6946fa080497b81e61f1c06675a108c3a5154204384b8135457d54ca2b7615ae7b3d8c86db5c786bc61a36a85288437827af44bf4ca7d33b26fced0e2a5d5c360e1d18365d960c2d71f16155a70d900b12c7ce53b71eb9c1f479e2ad68ecfa7d488fb2803c8923c543251dc77da94e5d059eff8e857b38f83d8ccafa8fcd074cddea9235bfccf7184379988691501f2d6fd8f47602285fa59911c4ee3b9becf12cba9e274b07ea5c5a3d96c94c2993d17a82b3fa3c18cc7473c6783609a02b8293607251f4eabeb59d9473ef3a5082d8159350152636fc26fd5f36f181d6b1f44ff9cab3822772171ed960ff1af28c289d8f391c8dfdae55f2c38f73a5aabab6d892118080a906693838a076e4ce13a82e18fd4bbe7233856a2965ccf9e17f94bb983a45ea9f5660ad6886254f1320c1c83fa2c9e9f47c411ba8637a94f7e366745893ff7a2923550391b410ef2e76fd3817457611e871c5bc94434782074773385841324d42191a9e25b2b0bd5a0a3d5f0a0f2018d2143831dd366f16510d6220c2ff442f9e3cabf46f075e2a0220a84eeb418218aab8dce5493dc16050ab485f2c4e7cc7b8314fa9b217742f2a42546611147992557c8c1cb497db27080d3b239e1d3a4101522be02cc24e8b1853c9e15b59339cc51ecfbc0cebcc34f49b992b220f7fce7258312b1e649099c814d3800fee0336ee913fb604820d479171b1469ba2897060bb42f12ea4217f583cf5dc98fd03a46c7e6b09604f6b26c73871ca72edbdb6f16513d29fd1b555c83bf9cd4000b5287a73c2739224b4701e2ccf57dc0ef38850afdb5304918d5cf351a563a98ed6ba50dd4354a6325b5997e28b862b75bb6ecdfea6e06086b84ba75b4c4de78c2213a70fc5e14af2a65107adcee602d51dabf2db5d8f02888e112b9a625502a25d154b596ffeec0c5bebdc44e0ec7015f89ba0334a01b6a9cfee9f7b03d8c6d7c22fdb844456051b5a427085c6de9409d30f2166e7489a3a828dc03b4333581514e26b107d34d9661e1863016bd2f279b6482e4be4d99e98c03c6986a6fa62d34a2179a3fd0e6472d5565a9f8123274af4eea0e1ebccdd7e83e904c4c676fb33a8caa5bae1ec0970cae21d1d22150c3e3546f8bd0a03589803081024783caa7235eedfcdfa48659d624b770f00c178c43103c9affe8f981ceb7cf01b8c23037c14fdcf2bda72351d7732240ed6244ae54d9532f3ddde3adc87fd850cb21cc078ad84f8d0ffe83466277afdd8802525ff5c6c5ee545153cf8750d95b0f4fdd254ecc8bd32e03294f00c48d4223f0a5fb4c3a8aea07b90e7d0013f1d6b446054e007c65178361d91a64193ca681ad1e87306beb40bcc4a7e846e0f570a12ea07cdd24f9cbab2a4a52df371f02940fbaf144e28cc36f3c48f87827d6fea96900452bb780df34ced7fe4199597528d974d2b21e59e154834574e95abe1f6eb5e07091740bc0bc9465dc6ff2ad52068a0821979fc74847abded0e7f3393f81a7abbc7e5d1f943fff3485940674ac49969afa2b86bbd66587ff377d25dadfe7d3984f85de64640e1de88aeefc5a1358db3513eef89fffad16b5bc0699fffb2b254068cfd8bf3b83deab9aa528f3ad470b32755c4c898fa5db9c6ce4362781dc7d18f13a034264d2c9e29727bd7a92c32efc7b05b816581add927a396d0276ddcd42972c5a900718877abe78d1e98861ab36214407a9c9f849f12ff488bc322d8a3e5230a3eec5d79de9cfa0bdc28cce5df995140d38122e5d749d38591f4e949e948afe3075324f872010d369043c2c241e14d741c9538cbb3024a7619d67c83ccc0da3e3e23813fc4883f5b8f9e73ddf85c4cf7121cb7d50a31b500f3a991d24509be6f1751c26420fc6dec36c59fe7af9018d97517a200bd40082b4892ee0b8d90eda43e0108c07c85bd59218ccacc48d44cce1d7ad2d93ca2e2144a9f6f42934045c23d110d5c0bf774896d88cbe46191c1db7e23b16a1269f0c6f112480480f7afdbf73f52df78416bab2c715a0f27885dc11de105f3be2aec74953c7525c0cc7fa0f915a27a2b1e1d308994ce636d389273c16f29c8e003e847372221a8b67f592226d103596dad3a46997e7695e7671fa77369925aa934acd65dd30249d3cb3b1cceba9c2b6db8d92787a27c4a4f76f414356a63ba895b40b1b046e91ca141f5fc35e03a0e48a48d2d1faf75aae1fb2eb9f62f6c4793f283f498451ae219bb45842e5258303d93760993c9e4900b2bf29b83d03b1e11bb510e29a285235bd51f6d6a4716df4d8fd482b7fa5f0ff2183e6a1ad9339c9a177a7fc4291a50ba78a33ab9e7e518f8d872f9b305dbe7998128194a2781f14676d26e00ea47d2dcd99a10887f0376f503dd1e287d42e7ec8e4de88bb1abb11d563923d1001f41dd82ba0f3b0ec2aab75eb0927eb80c72a49d733528a28c7c42ed0aa4fec3ac931594004777ca37277f6d70d50605cbd22c0f544bdf849877cc8b4a809cb06640a1c9f068c74d1a16979584309cec15cf25e359815c59514e4051489a983318b7ca591bdf0339074eb02d4b0d69184dbcea25f6ebb294d70da21384f66899f9a3311da131c51a74d610c482ba458e299202cfcb51764a45b72424432a1d996c1423c27efa850447315c1644b404961dafeffb70e775bf558b9a2ab9aec18def84f9ddc1c8372486765c2c7245debb172ebdc9456a9b27054ae2d506f74d8dd026d5a946a4c4954788099153ee62b889b120d854f4d85297cf26b7f3f5569521d805b8a9b95b1b1ca04bc31a2fee2f8c1d007437818e1ba60c1198c3f86de30f31fefea364bfb23a113652999e5e3dd5eb9589ac190b06ff451ce9f922f4d9037f22a843a9369eb4e9527623356e8d3e055b77b391fb10b8fd8a4e6a48eea25b103e6ed2d5ca6ddeea55ecc77a85c2fc25b133ef9e2b083d31e7453f62e25bee2801c233ab203b45b3fa67f7fdba8162a9c15768c4cebf43132f6f04db74766c14864949d874c81a0cdfdd56667c18a4c3ae24a8d5e671f9ce16f68546da7239a7360f4b29eb217a823a8ce507dfc28e30a1345b8cd186a7b55074c626419094b9fd4fdfa93dc195ec069cd852e54a21786da13cc4fa9c7ccc8e285741acd486341213faf1562029a597cff33bbc5a491c1c753a14516b0910b8521d250627c8799fb90e186dd98470dd87d6e6af3612f046f1c093530e96e880b17eb37579f491496e8b8b735b7d8552346b9da9b4770b9646f91b98c8d8e1773955994c519735280348d772186352a87c631dc143a562d704c7148048d904fe548a10bd7deff3574dcbb092e271b9a1e78581f420d32dc5b9060aa2e558ffd93ce54d33437c9bf6339cb012df9766b06fa5ac9bfd158e8a99209ee76e6d6fe0f852904f168461a408585a934d84ad6ec8666732f8220117f7c3f8af231657c89dd49f95dac444f348757900f22cba03e0af05d224f93d118aff7fb0bb2f39a85611c3e6ce597ad0efb87f7b4c1c0df08b66e34b72f2a6fdd8b9e860f5ee9ef7a6d90279eba316e652467a331ef00b678e2ab2e9f3495563e1908805260883412aab76f5810df7d88d9aaa6025b4f09c149a1f269e8e6e38690cbaa484d00ae42eaf01c0a32f8dcce1d557c8d3e333427a9408526f05afd1e628d96494dda757b15b07ec764d0f93da2f14a6131441e2dd08fa78196cc3a74d30305803194201741e00c4ecf210499aa5882fff814e3fd6f9c558b3cec42381cdad7921eba4c73f26f5b3e9c7092de33f10bceab0684db0293ad958c25eeba0188e54aa259f8c6f8b303a9243f671d8225588e03b71eb365723ad0714cbcd1a87122b68fd7e5fde9cbb94070bca191414567eaece52e60d11719103daf3919836809f5138c61a23e55f714ec86568fabdcf533d6d392f10a85aa4fc7c0bdfafb741c63483087febe0788f9c21e2230c2d4286d6d418bd83bfd111c603b9d6b477ddb891d014e86e2219c61a7d40771af52cc786654a61d70343471335f7b8442c37a45c69927dc2b36a0f8dead920c0af25e7888a8c431eb8321977ea8192f85b0e8ab200c23b7282c7296e39331d05f11d35595066ae9d643a338ff8ec26f9a9e8860f8ff1c7f7e6ede3b45fa1952fc4a3e92285d581713090f04067d99588242a82f8d1a10c023998a044412d7beba063ed17e5ed9a40290ed090388c89b819ae54bfb6771d80af6f38c710bf4fa378a175502b504a35ea0283c888f76e56f5d036c9ce617adad04703445b9514108c9808622da4ac8d2ce4a1d41b3c02e2ba43f98e9a4d807882db1f87da782d45431996aa731c39a99d893d9b1bc57bb7dc9ff77dfbd8e18b257a76b07bc68221391515e485f25f9732b5ba110824df31bbf1af94bb3b3e6a5f5836cf6e2cfba24e2869c30d6a7ed2c367401a6ad74eeb618cc7d5883ff6895d252e5e686a82754e7ef61fa81aef4871d8c68dcad5b55cacfec7f6717e2745caabf3a6ef04a8ee2420c9c1d5d8bae84edc6e8c81a06e2c912211f9c5c8c4cdf0047ec29cc542fa2ca0301df9a5219e2236b7bfeceeef5a126f210690b9169377fe5347a2846ddd1b91ca06513ce084a2450d44af89947f7803553bf3d98f409dabfe756c36704827b0e24f3076a670242b397f7dd207c4e72512b21c283be87934dbb05630124c655664e34abe6f9d71fe925fcade60fc922800161026c7e6263d0959a45de2719bed117f63a8f62eb094e3bf935e311e42642845c40e443ad7a47045005072ad1ce82e3d242ed8af073887ea12c9ed7995203183e0e52c0d0fd0a93a10eadc144f70b259b4737b8715da02e5d8d54131c1fbeb59484b80097540ad73648f9229789a0c5b01fe250b18d88cc1904654ef44ca4810aaad7a95dc29517ff0acbddd22b08ce22ccb4de502246a2768b952212304546c33ecbbff25d293a384a936f0579fc74b5b6c7692832f5533e75f6168cbac691c5499569078dd0cc212facdb4778ded08af34914dbe08ba370434b1c676276d842bfa747f1343c14153157edb98b66683b828e221f3a2db1fa065ec1dd828de6be56a39503cece398243e5e8b50cd99a40d3f3cd0d88015f27cd3bfe4a4f05ba4c1ef815cacb5a2fecc055344252005a6be590678dfa28dd0254ffdec6d06d4bd20f0bbff27115c7dd32821c8867d81c55ccaa8101846807749b7f5983960c94037f6d8ba497b27d472b92a25d5e17623945e27317fa2d95e2e35cb7d18f07687986eef8141db0e10bdc1e8eff659edcd1aeee5bbdebcce17c15f0aff07fc2e141c5ffdd994c4ecda3f193cee89b83abf72da7b5552b3d6cc2302196eeb2f01c1f6d99fe7844baaef52fa6492900eccd0a6b581608533018ea9f0a62baadc69733d9361e327cce3cdd076d7d8abaace1ef512806ad9750395810baa8f1431838d700f70ee786b610fdb887ac54f225f018ba342a953d43d2493110931431d344943ea352283bd44d001fa0f4a47c90ca83f7af86e35e7a3f002b7eaab4b272a9bbe025b2a797524a6a2f6f0cabc6188088b7a33b55d371cb54c66df013c4da3d6317c5bdd8d2b0d026c05c600fb625f9529a5ee3ff47857083ef70c46262a3735c602d08390d9f536a46c7ae2683c96eef3d26ebd6c11f1e96e7b200b0d4f0cde0273d7ae81fb2e64285d678db4c491c66230405d1df097cfb25b2ebb35e8409bfbecf0163eedf0fde3ea03addcf6b65e417889b3bd86b3b192b8158f003bd1a85d46b7e8642e1c13144e52ce51f063b2b6910434e2a7cdbdf243d678d1dbaa9e29f7604c66c911e628d337a28b037d10277390c9187f62eac52d0776e2f855daab30c1c202bc99359446d4b90d9f639cad03fcbf7b9ab9c3690c8abbd087d28aa55a011610a1e648350412303162f1db8470e5876cd8b95a676c87f7fe53ff84298c2aa13660943b11875a696a2b0a580ae4bb09dfd33c59bd0af59439585803949100812eb5313639d041e38d15354f1ba776bc1ca8e5b029256f36115a5f2a8b5bc1ae93e4a533d25cfb61856a4d863fddba3e7a83d59730f1d7863d7a8e41282cee0e49c4048f10d009db00950da9d375d57d3766f104573a2c85b1440743f0b705cb7d41994ca616aafed9b208668b14b8587594cd5adbae4c462e8806652da6a6ec3191998e98a314cb119f3a08abf22b6b18d61a75442128cb8625d46967aef46a2fe217e91542309eba40a55469b555a5162be7f2c6861c3c177bd9072120925e8a47eb8847521994156610d8dce99cf8849483c8f95938e21302d331332c707e458bf497a8742067da2254296c6e74d10d50b9201fba71763872fc7a474fd54402dfb2fdc8a917fdc2fb50fff05ef0d96eac7cd319590f5695c3bcc87411e4fc40f76839283ccf7f0192297daff6b0d6c30587b428888257ca3f8de135d0d32bafad773f3d4c906651580eea6436b2a720f030add029d23d7642271b494fc31f4425b1ad13271f0d2e163681ab619894e70277bbb5d68f55cfb67325254634cd9c801075993746319aa16563c808e46f66bcf225197077473d9043d2126f06a85f97a9c87314785f25a0d0f0cf7d3df39c7d30d3bd65f1c5fa11bcbdacdc23e69be37342e2052969b273e2fe4abdf04e708d3e9135253822e3483429a45ce244db618c657e74737533dc4ab51a4e2ca6389949e86e3a5a744982515535af630fd74871a095f9df60fda6afcf9a8e95c82107ac8a16a5d11fd07d9e35003850400c8904fad359c26bc9150c3a94b8edd834219265cb8b68fc3eaeb43a8c80dff1bd7547a7ebb8fff52005c22712b744a536d0c0de395709fc9017c7fef8a2b99d164c57e396f5af2918c2aa3dfd4cd72a91b765cfd9ccebc7e61abb500b57b0ab7973ced93819c8c16afaf1acc4052d229d08c2d002440e8a2fa1da1161e5b3050f7d38134e858f386c2a8f82fc67e1e260244126d18b018cfa500bd9c74b53e80428391e0d9100b0668f7428a37061c60f8350ae088e5f9cc0897c2b1f48903d77e999a83dfdac26b0284d0457320703b8967c96f2f2cc786e7f6cc73b85a7d79be1d3234c783901f8a185965a1e9c17c6a6971c89a8629f80a3452c9fae9b76287f489cfc8c298bb767bc5eb28042859747185d98af3a37fc198f29797ee7299ea9add8cdc3ee59ce20951f57a9d502b8abc31ff6beb69791de9aa9e7f31fbda5cfa6923be1d3ef18eb4a59d7ce34512a69b7ef11a4b7b4dfd507459710c7c969361481ab069d9b83bf6b7b56d70055a3782312ddef7e456648d981a7339bce796f273f59b42cf1a9ee156e871443f6db02c3fab258cec0fc447546cd8367611632b6ed30661a0050fec9d78091bccc8e2bf48ca61783d98df0a55fdc4c60bc73fa384604d9b45564144e265be7bb05b6d65060dc8c76f860fa0f3a978b5ebcbe14d6d8ff6fde9b45ec6badfbccf35423a45c2b8c17d6cd159c76fcbae069742826a2b9ce9bfd31aca930cd3460d142b94e786f452f8b2a8e878763507c46ebd4047ef07da38a9aa4a39ec071ccb8d0b994989538244e7c5289aed7766d336d0fd2ea1048432bcdf374ceff190eeb782ede7cb74bf83451bea50f0913d719e8505a5d0470efd16498a36e124f32293a7e33913024314f0e83b8d4e397f4f256b23632687b65c4a607d8aa46fd65c027991905161e68e6cf2b60d022128f68ecd69115f8b2490a111aa8a4408bed7644a075dee1a193fcca3357cde4f7488d38a0a2f1092ac14d20f24c3d39c8ac86ef4535e1fb3f675afbe251e0151609414005838102b72601bc776e7706c8720e743d08fc26fb56ad6cb9e0cf90f03c236d1cb0a453199818f37a6fea00013945b9f561b8e562063c030b7a84f5f0ce95d139a384a378b0fd558c2a060430c08434da27c21f0d1fdcdfb2b02d5495ba10b68d6231d18405a68336e678b2246f226884fc1c6404283fc4574ec031d9cf8c4078ebde20c3bc3853daaae3f401c16079790c28a045b2acdf87d4538137f1eb830189f630ee1af039c6dd4cf2ddbac43a74a45155cb93ca0e1bbe1e67979f3642c6429d1b7acd8193a973b9a75369a9fe8122c37cd60f51967d5c461f1fe9c580315090c0c5cbecc6d6341c6a34ac41cd0275ad8171786296afed010b9bac9a440bd4fb99c01ea054499d360ed53f4f56bbdcf42bbf7558c55542a02e0e3e36a75f083d5f4d783e08886cc16a15ba7eb10ef81bf215750c1ba926abeb6c925d1f0638424023eb1ab72fd5a56cd5566a61c17093ff05c7e632a1e4c0855af20da3fc5f9550ec673fbc3c6f217b8f25acd00dce6f842e81c371f6e0e31b19ec7311f7e4b8eedba225f7b659bf624edcc35f716faa3989b31d55c184644e94bf9f9653e3cef88189da02b2b557c78af3d4297f5b27b27148fd625a9746d10e9482b7cfdf29f9dec96071213f08c64503c6ff99e894444b2ca713e1edf59348315d6645950fa7db2d5fd9fd7931ff14fedb39623583712124bcc9e3f3746d63f4390235de099c0721e6aa0e4af1391962a2c3f435081ab5c52c69e949388d9d7267e0a7265141e8b48f6490a4c3f42b0eb2f76fd5a9cadb74e7b112072d1e6fc3119c827599390f65484f71749899ad2146a347c3e0ffed3ff6014171d27f24f72b9c248379244291016d9a516a2530197990317df55bc08a2f5c48bb78aef9e07a5db826682e28b026312253fdbe3fb792a05ab6a4674fd3aa09e6383977a23ea78f5fba011c0da00da58f99cdaf67afb058f0f0a0cf6311e55ae6c6a7b1610b34c0238b4fb0e76de0e9daf55bf360174117d3f4e7d1aa2d9be36d511a601b6797088728c48dc70c2fea0c738c59b67f8917fe054eaf6448c1c27b521ae816c8ebbf0a8ac3a5f0a13e044b87ef7549d966675c32a24dfbd4cb69e820f1eddd601d5a049fb005cd90f7cebf921a7c1c62c053f3901fc7042e7c0278149290f85bd452695baf8c8613894941c4e3c9925907a3b8c0d8b7a7d276f355facf6798e7f2f74f0121067e7d1f710f76ccc7b35c058114051fcd81f6fe816c2c4ed71aa625ca905bf7375c996bfbfeb5c95736fb2b7572f8da2ebc1dddcf690f69b54a820b0d5706e5877d8fe0a608367a03d689bac4a85ce4bb1c318230780a33eeb29d2c72bba3a47717850d12d6ca367efe18e3fd846ed2b1306ba1b3124346d521666f842deff7d7344b8c0d1479c44436ab455edfa41bd3abff1fd3ba0b8de2a4fc336ecc187cd314b488f1d40a5d9a6216ebb5d8935db1fb194d44e2c13434fdaabb4b01f0f62e3fe93a3ca6790c3302ca9da5cc90fe08b2f3c21a5cbcc3696f95a2c6a3651bf0c636a202528162dd9b29df3bf9da402cfbb597d2bdbd6ee510af10de07905980b300be54eb2e0a372a23170167daf61d1c06ff6eb4e9d081f6c18228cb4de96b9b064613d121b1d0b9ee3177ada7877d803263662680af5dea93795dc69d7e339dedceec881fc0982e6020972c353b9f315f985b409b3bb8dfe0078af4b205ee62a18452fd4147340fa04f12bfd976f81484e1ec272ebe6db7165c315c13f555a95075a3c434bcf7422369ea7a516fb22a0b78edabcdb8d21ad7594ff2291af0bf4bb1358b765ffb869c33a7cc0e69a2346a90056393ac46c2bf085dcc7550cde44613e3e675ce3702adce4ff9ed43ad4213e376cbfac8927f47deede6e0ff1da659fedd28050e1825d23693d0a0a760b1cc93e071243d9e8c47706ae27b8b4e6735f617e27afe345246c018b86322055a5cf4d439f79fe8f90520b5e1c634b9fcf4509686c37732fece0bff03790cdb26501ee9e8bc8421dda2604831c7a6e7f86b5a369b757b72bfecec08254660148cbadea7a1db1d5106ccfe939af0fafff353c3db7f7878134c00754b49ea8031bbe7e3524e876c976947f7e3baa3ca1556022530260e313ce055770af3398e8078dd3cec408f739a1ea4662579d40380be1d0e2e12305eefa0f6e14628d61cf692918193b81b89e38fb4ae4673db79c268853a9ef2288022e32fe3b4bbae2f7d9c7dadab8372e6cd198b71f4179770977a87ecf6d95b3dbdd8e0e556be4f49c402d846c03b1e456b8c8e73075591bd673fb7ecd54e8bc351dbe00e11d60023a1847a69e43f16d16bfbf4f551b1db1ec8edb8e69d8d3c8faf4fe772a2285f39e0b8282448d94543b970f03d8d9016287b9045a79f41d200497ca7419746ece4e1b3f7379339ebedf3c53991e67aa802602f8cfbbf6d80075b239c5df2eb7be05345053075abc99b958a15bb90da439526ac81154948bc01a9b1612b86fabf902244d27dc88b0899eaa1c300000e56cdba2836dc8e1ff00992e8b4881c7e1283f2a076e44384e0b2e715539b785ec854154ce04d7a019b1176a685439a99a9e000eacaeabf42a874e6d8344e55625e1e10905a94354798e42500ff0ff68a9ca219a3ec08bdb715de5d6640d03f4306788719710ae4578e065653e11554e3b17e033906745c7c380e045e64f3099d1790be5b471714a97a73ba8e6e0eb120d63f0f0b87ead3a62e61c0694f3582b64d0c0ca9acc5e217b502413b5b5aa073fb564d110a133c69ee50c6a7201478819dadd086c7cd63cbdd1e9d6443bba9c1dff22fc4f606e0d5048486688f88a53d506231edbc39665a708668453b01dcacbf75707ec99c59ff25c0be0b6f95ce42b8d360495d469d6559d0e4e6a0af7dbe11a84bb97a93176100b50c806409300ed13648464ed35c05b6e1984539fca3b0a5d686bbb2c6772d8b87e5f21f8d845ff6b5fc5402b4f9c23f20fba1d59cc526a15972d0cce9769280e0cb8b18757495d43e52cf4ec03075df084e97cc4775ed682867639047fab776e818da1756046968d982d0f1f4a246e28ecfef59cfc38ef21fe6eb3717ce70836bc1f1ba342cdc12f67a37d5648588839e2c886c818871b83e34d2a87cae2aac5763ab4cfa597936d64afaa1a3ce05e92a1c7b668955b67e90a61d3b5498463e7cca4bd555b959d39db92d73250070f248f6e32047003026d641f65f3f17b7e8233e74f3c2506ae895225f91083b77c97aa69bcf6a6d51193630ee7a12dd1270b7d89c7c86937923faa4684e714c541678a01312d200f706ae7ed73d9f124633a5bcb4845d959cb737ddd4b712b1addc20aa0c468f32908e830e25ab2d93af89a1901b9e864c8de1cfb455ff97cde26e5cf1a7ea89ef8d83071c02f7a78929c01581665a484955862ce4242d85bd7aba64b6810f7d7a753d83135131a65b4ef34f0aef9c712f841daaa5b593327416485e312dc115560f7229725bfba64256a5df895ddce55a55edae692ae61463e7a14a2415d3cb1e3e16d80048c71c90b1df6167183ca7724f7496279c03edb7a520a2e6bbfb0245efd7c4a8a0c8b895747f4c24f7b5f2e993f0ffcf4b12a45e17d0a2c40bca6e5e72befe7acb8f1ee1e68aed5eebca0fe2afa831583bd2ca3c0788a593289110e14ad2d9922a12d0cd8885c0bd7e238040939eb21a0988067ccb27c23d1f2a940b973db1e90438020ff389468b50594894b33265928c5429f2732ba4cebf4550b149f224168dee1173ed35dc45dc012c0d3ef90fc3c11e4444a32abd88b24c40e8215438cd69e8f7c7521d8484fcfb52adf1dc2561035c137a1a321b52d3be2bd7703e65a670bdebd324e0d259abbda48b9935fee187e1cba31276657fa758dd46c93eb30cba119b9bedcffd23a9d0427b45ab5210a0e121eb699d973ef28f1b6a2a6da1f00b2cc0179f9bd6fd009e92d6edd95b100e23a60e55a0bf336c6207fb498dfca28a86a8ea78bf04060a53c22decaf7c6d4a0d3ba873bfe6a8ed2d318ce08e8fcf932374cd7dc44c512869da683b1f8098ac66e3f056af2345031fd1a7e4c8a70cbc73eb859388f38cdb88b24768a820d49531497f27e44d55180627e9d1b6b4f90e6a8e66e64d74bc5a97674ae7a090e337444c31b54d6aed08d1d2cc981d6a2f8e9bc1f5237b0a15dabe2612be5408a6720dd34d14262422c845b4825fc3991f4dc1cb71820aac55d1e56a81694ab3d6538e889369845f9f16b728eb0eae1cc6cab9e59228f1c9fc6028435cd418d19fd988b894f0a6d26f59b040c99bd596a62da715e0036c9560d24210ce1cbb3fb531a1f300feaf8af2f1a3fef1918faebe03cdad580126b5369b2569dcb4b8df979e2fccc0f5c7443fc3e92498e314874fdc138d252522c860767dcbe163168ca65a2439eda3f37eafa94e2ca81975815c204ca0eab26f2eed27ce8e0bf288c2e9b40865758bb21434710579d52915c3f089f99fc74b809ea41e77c5d886b972e8ecce61e5334223c749a348a6d1fc7f145502198f44e60ef5cada8aa945d14b5e7d8ade6b45a8a9c20283479c25dbb0ff86eaebf459348f17606888d75616c4112ce0fe1d538f14bba5e4a4cf8df342d25ad6075192767adca15307ab5076706a60ccecdcae91a088688db98d1290ff0c3247e4621f35fe336770893319da85e8761894f19cb1f05e5287dcd9c8d55b52bc56121a38a44f896ba03154ccc081122421b00038bff76a285f0ec3a6901a84aa7165754049cbb03c02a04039e6b002b8a4f26b75b16206a4f66cd0c8b9ba654dd3808b6c285cbd49c0d468a839dfd2b9cc4ca7ac3095a7c72548339aa6c0ca20498465111c7c4144a5276ffd5e8e1f68d33d957122d6dcab291b054181e1f5c6289e0ee3b3d6cb1ab37f4cce4c3a905da6a6f90bb405051f520f8f5525eebc943424017afe860ffe1ffd4000e413732976e60f47a60352938418d5fd48797aa682591c1e70e4e505aee7a75d8a84519b9010c234ecd7e6ec47a095b700dbf3bbc6513b4380d0a7e1a08459bb452492fc1ab0dcb73d0028c93eb54c8f4b0a8760e590b4e6fa9478715d092ad00781a06cebe0530fae8aac3c3079a04189b378b0e28af3dcb583302160af5cd07e71deb62d501609c06e51de893add273802f189b1b78972c40211d7e5039763bf2d9466d617e6aa23f562b70c6f9480002c9adde295361a2131f78a5d809e59d81172c28831be459c4c1ceca42a8cbb179ec922140e6a68d1a00f538fa14c6ef1cdea1f590aa37dbf39b26c14aa0a15e3477412941f20a9930c89f95a8a59bae3c18dc7c7b058fabe64d74d6354c6d41016e7b26aad7a911fa20590920e5d7c099fe16a21395aadbb55d7782ba05068b4d5331e3550cb7443a53313e96afda068141537c62279bb8a0121ed1ae2f42d5f44654e5a58a50f487eb1a74c2235e602b39dac46b2ed4582a4c8c098ac26a9c9b8021531f697f660907b2983e58720a4727bac101f2a984ee946e1a7198fae1771da43603f9d068b89d9dabdf28e8825bf17a9eb8633a4bc28d400aac3152d4a88e878de8177ed90d0f1432792caa6319ebfd9e6e5abb7841baf30cb1eb4c00fe53d08a7b39a9c55beb22ac2ef0e3ab54a0cf7ecdf1c00c7f16eb9537488848424faf712920d8c635040af3f9a1aa9cd0e525fd73d0c971ff16024b1d3e776a41d928549126bd23dccb6fa16f8317bfa7941d338f0edce0983f0b4ce008319726174d7225b6f7e3b9a95869416db8a420f2353b471e66f6ee08b09862ed5eb4d3ec7f22f0f10a36588b6667645b7c9403296cf7959e1f495b3759c9a6114d5c8e42e9671fa8a9ad165dc4a36efb8d33f15de9f8fa23a5fcbd885f6c99a8bffb0f08f8600320c6566c27c5281d34a52c2b7d22aa1860914cda29a31bcdf8c33c2fb335520f7e42c1f67b5e1f3288c5057df95fc4d9139e1bf2f5b08e00816fbfd72c1c3f15e2d28955ac7bd8abddce316ce293d9544871f8c9c50772540abc1201285b4afac0ac996fb7612f5613d183c9ff77e0287d9590654380c9461cca29d2b2a268b450c0b21c7b0625baebda7c7b20ac6e6a850b1fb65deb906376a036b9e9ba1b411e377a205a31a84879b716a39b69e5038eb86376b2c007b343f966ae87ebae65e4827759aef3460bc7b3847db1d6ec740f41e24972dcdc05ba335fb716139ec01e29c1f8e8209dd20105c32a7d75b2e7fb51a00e253c210d218e6ebd55831d7d8b7ac0658247b84bb904e57185e0bd8eeef7b5bf8acf1918dca24146ddc01da3572bb2d744bf484fc792a4d60adb4ea26436e9be80a32e9ca915971a829ec7b63fadc6754034dd93ed549c8807e7eec0c73f64b7ee0750b6468ddb33536d64fc12fdab1cfd9bc65706bdfdf4a2f332ae4ade330f22969fcea8e1f7a0d1690772f44ed754ba68cb20980382efe9d043cd4811401dbf84e3cd44c07f347b45e30710e382b4fec890dd1db7c6db8ca7630b2623f13141f29226f0ec933e6f6dec02cfab166bf602ed87b75768708f94bec5eaa62739e0ad9beddd4656bf04e6d1f4c3f821eeccbb41f3998a455fcc2c2f77ddec2dce74b53ee9428fb05955706363530a8b5f150bf17a3b470a6d6d1c8ec57ee4ba2a7097d39528360a0b5fa5eb080768d74a64b0b3eaa49fedd03acdee8cb422558000fa4df82696e36a1f10001c287a406b70e805ebaa7f49ba2d32348f08e6a80812e0994d8ae9e982101084c247118918a995a04131df7fd2722534bafec665a08f4c0e6ed19464c24f100df72146e699f7120c478b399589193de38a20b591910a1411f1d4c46c5a689ccca89020288c7f79cf9a85ecefde8d2022308ace736bea7379772cbbc98c11c14f3a2bbba26d2d0b74760b07a577d43e278d2bde11eb50abdfd1e61953f18b6387762f228e3ef00eadd39c5ba061f353a05ba7f10c1a811b6ae6212820292f0827a2254ae99ebbddb94b6cf0c8c316df802866f04625a21b2bea88fbcdbbaeca4442141b56c504bf5ce48808fe85ced91e54e847c4c0e6bc0977be7e05ceea06cae9219c8d9cd412636e0aaded9273250c6a996fdcee5d384960a7db30ae8c976081b84ed662077569cfc32e219d6b9e133d1a58c7db333bf7d617af0dc2293812352bd0d2bf6817536616c7400806c4b028fdfef480fda3c292c1a6f5a4cfafc65d666bce61e4b4a1d2066f2194704db8216bad00dc2195a510eabf55bb79937c3243692cf311829065faf125b33378586197eca80782b769dc3ff7c4b93ae1630c18212b7751712438a75e7b1884535a12976d4911f5d97279578ddf2b001cf69c3383e0581515c0c077c3ccc81d37b6072901cb9ca301b6848069701c8918e6a8f3b333c44993ee217e46ff5d67abba51c1632c6fa04a449878ca143a362341adb76bbbc591f581d26b77063e5d1b28a2065120ed3e9fb416466c54b4e4b51993e81b1f6b1bb0e00380c81cc00727a16391ac277d6b33b37afd805d5fe3d848e1571beafa7ce82ba7c306287983aec64db02fdd46540fa499ec959f2839e7260b89210bf26872c5ef3576fedda799885e880d873d51322cea42687577e92e3c15d186106b130cbf5a197d61f513ea25a5e453aedca98f8612cb8b77be591142f76d5ba7fff4fcd226d3efb21357a48aa62dc9aa72e64d1481fec08ae80915b07ba7545c145e3d6a1b2c657849d35f7d1e64c77b2c0bdeed50516b08d25076a4a667cbdd2e5280dc57832861afbb69bfc659350c48c87419d2a37f6f3d89eac30a87b93a38a0e95c70d2e91daa4571182cfd40fe79507830bf53f085c95fd415009dce2efd109e0a016feb92eb0d614cc6eabdfeb6a681f68044416e38bae40d6ab187b851403cbc01a452bb85b9a675f71bd3f537cd6108cf2176cb7025b2407ffff8ba4643389a67b9d08543f3fadd6b6594d39823c553347de150246264285704d3b396cbcf9288266ea8b96bb35dc0ecbeecc2fc32207503d871ee2c21ab0108b9d115449feb1bcd96a131bbfd3ec81080051997dc7766b926424e2c479307833c852893ba2e8e28796d15359b90eb619963306b39bbaa5be009bef34638b99b3a555aab1f053342a48bd28937e7c90efabe1ecc5863559c288c86f5cb5d0946d2b040fc57ca73102eb11c616421c48a532be8c0918cd8f1f9b5f03f6360acd86ad007cad59860761badca3063a6350e4b1e661229ca3561946bf600bd6556d7289b66d36347225b007f65f21f3558a8e29d692f1e992f16a7864cb51982a07b1ec8b804b46c3d475e671d791ee72764859ce83891641a6b63cbaf8861497aa8b8ea80c2822e280177e5df1cec0b9265e3e51c638688cfdc2f2bcdef53f6281d370363db57aa3dc47542dc6b6ce2048ca765810f9264ab4fbb3c8816d9aa5e5870e5a0b503b114d50fee419690e6d4cee927e5304c62c8db7f85731a81793c013624c9361ea2988b7613bf07f2aece89b22cfa852130088040f6e54ba655704b5ca080a6605c5cda98038069823e99c3a08bddba4f0073e849a7b942bcc1cd53a53365443c7ba7ca00c97ca58406239b215bcadb1107345d53260b4d8e00cad006c2accfeb856d54418a624b08a03c23dd5076a70481b266c1ace8ff17d1217c7ae018eaa009d7fa9e447fcce9b66ad8e63cfdcca1d673df71e34a94e0cda48eaedaeecab6b81b0c60e8e5cbeeae7dee0586facc20331c74f2aff66e876a584276289b8a7c8e201c7111da75d84019fc4c92d779a458f241cbd4f66f2ab54f3b2a377ff4214840e251358c2b76b00e2a389a2b328bd5e5d6f473caf67b3a17aba5418b245b9ffc92d6dc8f33a36e7ea2db46a62f39758fd5f3eed98074d8f34b6181ac5f1db7ea49d65a5a23ade108afc847c5a27037e7c8b534c0e57bce75683a1b63fe177fc9a836af652f4c2e2764bbdc2efa0ef14d52263e18a6b489a82304a5d9032653691ce7e5fac8b159ad5067a455082a98a766a1e409a65af4573c06b039ca9db119187b76900d52d63dde41df400e790f479c693db562ea777186b52c27e81a69cfcb1bbe29b4ef5eb51117ca0a0304c24322733bc6ae523332e0b5c184ee344c99d08e49e7438d73c916cac8708e0e40c5c0af3cfcc10a521da0f03713207ab79f1de7f7c07dfef40c174f23dee229fd43d99880c2ad6371813184accbd710464bb2941dbda7d39b2d63201f537d5454fc0d60e9613f5f07eb7eb73306d45ce00b311014f320c774145149433bc9259ec4922892d3ee08f6980b62621219cdeb1bf21394b7f48bee1ccb2cc3c336a2812d6ce04cd4c0be30eca8676d515f39dded5ef32c33aacefa59b2c2823d0306995adf3bfa6277f84bee3a1cb382a0d013a7cce4204833e05d4459d25a588d3017f1a572b3d2cf05b4e0df4ef3a33e9f19f5c942239ee1cdeb729521bb13613ac8a942f1640ebd51ea6932468f4afd872349a21ba5ee23ef00e9654be21512ddfe033a7e9a5c3d33d05b743838194b6c3841f8750b8cd4394071152552662f32c00a7363a0ba3811a109fad50dad64b6a4bc909304e9847846e4bda3c399b13d356efc0a1e0049b5704e7bab5cf898a583c6ba09068fd84c6c581b7521e20e87899c6ab50e95ce331791a424e778d778176e17a9bcb80718c2efd7e23117f8b4662faab6f8c8a4c9e84e949781fe5134024435139984a1ec0f9b994a6ea9f434703f1dd74677f74adc3a86d4f582d3e49794e33727c6a7496ac0f06bf1fde17e0a3fe7a0ca53bcbc5561fb9b9928d70e574400469ea485b4e02bff84c97a1f6994a824e585796943471edee540cf9a13483c9819603b75d290cd0437f2e723f03f2694fdc92db834663d1effe32df581b70f98a5b0262d7b7a5b32befef2b411714668caed3278e0c94d5f53ff7487edc3d4664b5d94bbf4ec8b8945480693a7307c58a3484c583c7ce1f7e6795211986f646c93d7efbe12b7d5e9cc837eee01e86575250592ae2cd358ed08a603a4bc5a6d27d7b6111964f830fa564c949d82e3465036253c44bb7e97bcd3ea472a997c999770d30c8d432eb9eacb79b428fc2c6c435b5aec3cdcc2b25494387f228149e792d4c5be54e104a79306b35d7d58c3f3cb269499600fb647bd7bc5835dcb449cf25737fb898527b0e7c49e586632b123901093be4b4730642c8d392f9afb3e83900aaf134938aa6759c9dda02cab43b258085fa455f9ccca6c1060badc3c3b589447690899519fba6888172d1040434a70ce5779f298a46e9ad30d95a4e9c01a07925a5af0c283aafd3542cc1ca0117508fb3858ea7e7d8e8c0a308b886a556ee60e7020d6c260a8cfe875eb7bd7f545afe235e580671d0113ad5a66cd7bcf1b8c7a2a6558dafc22a03d0749307d203ed128fd67e5973ce82e161c723106e5f1a4d37a18e32136913d302cb72d85cb8e5b6f9a8911ede5cc4275ea8762f18e493446db2457041ce1f71d75e830bb3d9928ed14f1bb2e34cf13a4e3f48b2d151581ceaeb5ec03c07ae0ff4403db975d1a2ccf9a70f0bb23115b4c16c04e3b0af79d2573370ffb5b3e4d707bf104ea02bff2fb1a691d16707c96b332d90d1f6c68aacbf7fd87b0b45aed308fdf21a8639c5e1b364fa4aa380d6a1bf96ca047aad663bad7ff47a27c6b31a32e435279c5e10ea2314d462a2a6153dc455fc44b032ecc291038867359603a3e60009f1475688707b2d73cf1971af96d3e2715962a666578ab449edec3e5a446eebad8beafeb7936ad3d0091edfbe84161a30707d4c86b7dfc680c6cd78f23006fc48f36d7fc8c822c65fd0b76387296637352d270c8f59a50ff671b600f34ebed9cb2e5079a4afd1bbbfc786176e80e88cb2de269170cb82bb917f7c1723ec00c244af6ffa2e4525fc4ca5c9982514aef192b991753ba9a714e92dcf372a1a3f58006192971e60f390011e37e76c1e30ffe42e15c19f7292c0cdecea733c26b6b5162ccac57f9df0aecaf1c6b6ff3fcf8a57ffa2704176a2854dc4c4a9b5192e19341833459053a5d3080b49b81e86ec6e13792011ca260ae1029ad14b9703252b575e997fa59503512da7ae8b56e6d5e3e1c54861e54072000b5e1e762575c5b447cb38680951e8aaae7cf6f074e0c829c64f1830301a80bfac4b155462c1a4887af02190fa001a80b52c6703c863b8c1e5b5c21c97b210030e5f9e9040d704da25da7f2dc67625ac7b004e67140a8294c754c6e2f1108b46a3e3497de7c5513b8b6100052e544bb12abd35328e5aa093082d2fc47c0feb19a1d061a458485b782c06ad2a39fb24280260a3feca62e061c4c829e57e81f5febca8ce00935a7dd566a52b8b85ad01fff15919236fdf671e3f167c7258dde8ffd0c71fe75e053ec29143aa7e9799043f1b0311c7474c41a0dd89284876b7009368e48163c563b26702f0e4b2e176c25e001d7766750b4cad1d9d415fb1f91d4028459abdf6a760738340b887d0b40fd1df46ad48ab5eec54b603d2996621cc31028c0e26b721a11e29e69a6b7aae8b815d97c850e83ebf3bc675a6a5d1bcbea6c57d5f069f587a04fb35ee2b8a2e603d04ba81ba55964b78d088ec657882555f44ff453acd13a4487a39cd3a2aeed7df4b53f371fdc8d6c27b19b6548136565ee3d8689502304ad800a400e3f0875b22ac1caba3e0cc2944d520c3f4e8846de310b8c85064d9a97a6e61a831ecaaed31dbb1e400749264543724c10db2cbf69f652c38f567d6c1a1cddfb6c5dbd615b4eceb34da0d54567e7ea630f8b096b8d8e9fb43e366bd8a1b274d953924ba2b8b1059beb34ae471c1fba53fbda8b095a48873f53c489c19844e591587e14916729b4dcaef5a58ed3eb0ec7aea5db34b1a8f18ca975c0a234f2b65a8aa406b70e3ba3fbc61e298f7c83ff153d44106956e5182df1b84131e9f42c7c4d062101b54890fc5d69906fac3627d52f20c030a70c5d8ba3691c72a972471193c1072ada0b1982ab9dbf714bd98c44ae87ffa21059ad36491a5eb5f7a194d84bdb4bf3ab13d0f45abcc35eceb5645bd92ebcca957648a0f497f2f3f2cecfaea5c15dc329f6a21f61bf80c7e84af4542e8c2a812fca27470225f731a75684c09dbd2dc5d4226aa324d0630193abc87742b21195b90be13cfe65f261ae7bd4523eea464e7ace907af622bd760ff28b1bc338e49d387cd176420532755f1240e951a6245173cf91301d71e404a438a580fdba83e0225ce04b372eea6e22b2305ba1bd0cdc3340a0a21eb53d5c86120e80c6a1f78c5bf2a4ebcce2308ebf5a8ab2468d64eb24d3533bf3f6c4de388d69490a60f41997fac0b2d470b6d470a77b09078fc17049977d85dc2d28867b9a3d4949e192732c4b6e6c2b0eeca6bb004c82b24a0b2271733bc1e469c619749e351f0c7c942f41ee5a4d08b881973edcc032141a785852a506c91a79683ad5b00a41b0566e1556bbebb1740f080242728d2fa5354a3b4f8110a04bc727cc1cd6e3f5187d94460e8e1aa5a23b74a84149429fc820295b88810c4217b7c7c061f7c17fe6f04596a5dc38e941c2c4f1ffdd1c5f81548d10429f85b62fa8f90b7773a71cd5c84aaa9ee7f7bfa354b2908f285523ee8122589b469d04484066e88f3312fff900dc6d4bc99db646d94e4556b09d5726c0baec4fafc1fdceb021ad3df2e9a53cff4582ced987b057644c120033742b8c21180ff35db990e22d12216379bc913cde61532fcec7499915f4cf99a98c228336184b6222a05024751776d00bb2c287d3bad8be2838010592dc08085e444f0a8c0c28c2b145e0ce4e27d0b3d783b58e991a8d8a46ea7a684795aa04816e7743296d5967991dec97af0b491a5d51fc3b540ee8c9da0fb3f9097b77d7501e687181e81774fd8a5972d1784c7e66d04b8c8c9f51578d8778cc5d6ed58de23cc3fdbfd4ef75c61e3683139eebf181bcf87a5ad8d753bff7876d3dd6b34a72d5d099aa7c11aec1708cf393060cb2b80251ca080184da0888cfe6513d622ecdd932435bd4fdc3d868ba9b8d2a7e815347b37252663656cde4631923fab3bd5626397c8bf027c71c74f618c796f7063957617deaf2c95dff87b587791b3581b50f0c586d815747d79981e65278a3a2a993ba874c35cf52e733a0369083ab1d90606b14462d2403674b5d38e0ea79eae30f6b1190435aaa9b2c64d82834303484105c2dc2b671d9606a1b8ce04cb0a38d78c06aa1d28d8f9c95a8fc6be063c4b7fa339249398805585168e6de1d8582311291b686ab5a8eaaa3d9b7e87fb23bab387570c13c11969dc2f4efab3f0cc99e36fa04f305dcfdc08ab657e275e9793b087a45a245ca0581877f5dd24d43b60532a7b7894c479012cfc38dd86496f4843a049bf3f6643a383a0e25c1077996807c16953121e1d8c4971d488a06f14920aa66c445b8fd01ef098a15e80244a950e13a37a9bad6c762d841a5c56b830610b0c277adc12e6c6a1271c6d768d610ee468101d456078809dbafd64dc1c8f1a46924197a9eec43627aeebf2b19c32e2a7c0614d56254b2c1cceee091a5f2dfc6568a2ab62e5831af91b1612f87e5db52f73aac1e6bd5995572a50045ef13037688260140f698e1e357bf8b52ac2dd755ac6341e7587832a7fde1ca2663fc29c00d32ca29d01b2fa7ae6793badd04b20bb18b1cac277bedf5177e0dd8c67d754cd9b39cece5a6b64740d0075c7b4556f1bfcebab89f84f86d1b7a3f3b9b255fffd09278f0634fbdb44c6b220553e0250e2e68470168b18b0f0d38733369e0fec31c12359b6a140cea295f9b6d47d477493540359ec49aa487dad9173a94a76c5511ff6a45210bc6ceb221ce34e825a85d8928c8dd67162c889fb53a582d31ad25493530a0892b6929d62b155bdf8ae9c4620fc5599856693870cf7cdeb9d1f46f8d2ffac2170f0c79c45e7af519ac8ee2ae408f1bf5908f001c93e557b62d2dda17f35b6be747ea736a041e09238a1594bae9f8a4070d6d04329102c0b64e45b969bdc66e553fe8cf3abefb54befa0ab9ab80b5d883a3c0e80168b28ee7e875a5df1de78c535c0f1992305d1a1c512fd96f9baf48b0af982a57450ef31f834bedf400b9b73c00b07d720271300336101dd18da5d3b11977225d175bbbf374442cd39da06b620bf79e9e14dbbad7744d2ca2bba3ab63f3ee821e5ac1071fc0a7cd50ea4b8030585013202302c84074841b4727c6eadc6afa5b813edaf74f27dfb4a8f68bafd8c1f673120e9cf40d5c4f71d3397297ec271b6604652605006c05f74ab159379adec42aba737475ec27b18775f8c20543dd26bdd8fe36a62d7d06a70eb8b9bd607117e709ba1570e2a5f7c101c8b066fdfe0d3ac137a0bdad26986459bb26121800d8ad887e7e6cbdd4cc578fd9a0eb75070b7e3cd326ff9a781ffef570800dfe24221fd94cd4a95798b434187fe47a44b20210b5e54454c5041cc96fe807778924ec09c87989ee3afdb3180f4a180713a18e1e32f5d3d5017b1528686a94872e45915d81ac0354ac5569c0b0a55f6346d289ef0550cb8d173ca2d4c65b719e6026de4a4a773e686c33fae7304fcfd62512884fc31a5b4b0eeeaf38a8a40d8d2d92ec42618807019151f7a78736b83a740d8bd1d4d714b4a34036efc206cdd75c79597e87797938f039468e5ff8469d46a03e1348411302688e7610a14e65fc1acc508cf16b834025b346aa4f7fd9d56bad7fd665535b98cda01d607d253ddf11b63c7514f5b0f48d7e91be93ca8f71fb3a4ccd2dd7a7d84013ff4592be1d4de3186313baec4054b12120babfbc5ec507be74c6dd0e72c849af9809c6932d6cd3e13541286e465146ac26a590eaae7738893a7770094cb118ad04ef5eea3d0b8e6d2a04784927047e57360de51162adc4b00f98522e735969c1f5ef234c37ee0b6db11b392f3c195aa1b79bc8ba14bd2058d987e87475b50a44cafa6727a3eb25ccb7763c34d6fa5a56a1a70a5a79a70a649aa408fcaed90d16fd20f57552f481f6fe316164d731b2a48e0eb96aee620675fef40a4c07918054ce882ba0755b18301d39cf4edd067610e6b69010713f5a9930297a773c709f8a86ceeb35c4474cc045c16bc7b2c700e932437f7443647a5a900333e0df51966549eb633e0b93a2d9b4596ff06865ed498b00fad4bd263d9f0a257fc7152ec9fe62c9d39b3e5b931265def9bccc8a634eba1b0a4582ee4f41ece99954cb1f374a93dd054d1b07a594b98c4e17797105f7d0a48eecc788a7b8c74d4bff708cf0dd5d486a4ffb05b2933d13e9a8ac323f82e92dd424807d38077699d33af67d51f8d1ac2d6ea8cafd60970b2796fc62bb5486630b83c1c7886878005c11d1b658193f04d62499c5f1a9e7861b05e00bd80f14a2b01afa2e33e348dca853b259538668a2ced0a1738f6e3f4557ae1ec47803efa66d08278fce9934f52d6445c10b8be2af0915978eea4a52c099ea63eda61645f1e371c1df62b08683ca752119856fa9d84bd6ea46f02782d253339e94aaaf4745ada0424bc4dbfa0061f75440f7b640e4f4eec3c15b148da3a6e4afa74df189869d5cb45d3bad4a289df6346252f0208889d35b669911dc76bdfe86da4bb8fd04f8a4437224a98be2c1982b09225e6707d9c218977b2df53c4731511ce2457e9c6846fcdb5523db7642ff2e0b55c0c3f1f4110a90f945879d5d493f774fb70cc5cd182e23562f1419be3d0f7fc9cded1063377a457731ac822613da7741329e7c73a54c89b3244f9eb02afc39f6ed34faed348a3a96bab9b0c074baedab9f6c5a2dfc33ddf571c495fbcdffa7fcae3e3d2446d8999cc3806626589ce3d67431652af1761916cb466e97421087a02ff3258cb2505d43248a1acac2af9e46dfaa4072e810fd8f1a1d70ad617db4f1c42285b2365b54de00a69e52f92c2de3d0388d9812374a00fcdd6c7c94161fc3f4151ed9922638a2de85213a6aa82bd4783a517d8fd163e80e3b236049b51cea8afd8276a6f025fd30dd5b79e94f208ea8a5a334cc30f7785bd3cc04269fcdad4bf820883e86d4b38ff2ee560084643e5a655559025c32baebb89f2c73e3cba01352fb0dc7d0ee7626e26db10dda8159c0c1dbbabccd7be54e0cd30d70ab430b320e062879454af74e13c5f2ce379e5064e2c98a2b00c1d129be9c7638a07209a62aed9adb625f5eb3330d65750bfe43edacfaa25efe92a4c7193956ae2c9dec7cfb8ded56e76337a59ecc2f713b6ba0982e6fa4e4956094bbb39cac65a64b5f27a767f72ce8087259f933f81ac124f13fb52e306316f1cfec7650af16131f77a16c5a9cec4ca1bed9ac4ba88a067ab60e67aa556133b700bbdee1237be0c46183b38b83e55dceb8dc6e9a27444254069f646fb4ffcdc2e4ee7f5af92851ccd7cb6761b62d45366bce85c77129a427a7eb1b515c6443eb96461ebc98280e812d959baf77954bcee9665bc68c5e1730c2ec80aa559c0e521ceaf9ab025912c06cb60dba9042acfdaad5f23d3ba538bce1df351d6938a3b70267dd6d8d83773249dc3d408692815a29414ba5c10169af0329dff9fabe761f65c716f7357a4f93ff6556f5523b0204466910a52a84e93ec62d361ddf05aa82f36554f4ebc01c6fdaaef2ea976520c735d9509bb9c870d2f6b247fbdf31af1285b2ba87f71fad7aa615642e095b24f845e1cc6b96a873fd80753fa54f29d3fcc02890330e4b7135acffa396e2ea34b8aa9ecae7ab94f3f9801a83de9f61abc8c2e5b19e3b5e2320fce8dbce3b33f82a36958b951052768df77b44b179f00a3af132f5cc404d0783ad8658912af7fdf85f318a64d860bdd535f0524733e42d9421137f8a6c1ff41ffe23777e48e42ffee34ce4c76b9ffd97bdbcc49f0b65a96c07fdebc9f477fb434fcfad43b084d1d9a8fa00f5031d4604f879dc5c375587915b39107798ae820645f583d2decf38ffd811004a7fd2de2f17f9bf2974e221be84e16471406287bb484eaa7413f1025e2414237a0350acdb76ea80b183ca40a5cffd91cfa4bd1f8e294c6e538601e27628faa6fe91d3409b06354355e98d5c7179b20134e6eb6a2c95be167fa3e1e4bb0fde5b6308a7e1f47d4c06dd42cafa7b5cba7c53f2230492987f9a709fc0dc25706508cdd69967b761b6f29810a2d2906d5263f95f1d78517f63b9a97942fb8f8d95f0ee770760b3581092904b96d76f851ce6cafb74e977834e49c2c9175b0e0a12134ede5d09077771621db41fa05811a87918a2675111e12918ffa9a35331c76e00898b99a006281cad6c72afd4c9e9840a6a3c7d606be3afac5bf237fc53ccd8485fe0cc86ceb9fa86ea32d87c0843eaf438bd09d206c02139006f57f470e77232803c1a561b0b0627dffc92cdc8d7538c4042d73dd70f2ce1aa47b85f093aa188deeaa0cc4064e300688709a03d0eb1ae2c5cdadd0584c08fa4ea1e95a0518e908ce0a2fa388d728e951553072ff2876d84ea63949567530d131c7f683232f8d40b7e70cc6b96974481bc3ac7ed5bf07b0b4da95397cde146b444d200ba7a5f9ed949441ac4276d37d990841de84a510949a1a6397028e979441d130e8d3b84ac22d21f0c820f3472a9cd4812285de3164b5c6715de436e8ac25c8fdbbc8310aabe3628e59d8b6421315441d539c9a99379289d6c3f4bac8b49cfe9602d93a628c8b8c2882f2fb47af3c2256ef310e08160827bb8e8f6021d8b0fd68f31f7fad3092f63cebc1118c99057ba7f6065744f80a4beec4d47d10dc400d67d81fd3640843bdf66a57c314d3351b9d332b3236dcb53bd98fee0bc75163e9138c7f8a68770454f305cb0838821fb496fc50392ad7a9ff00f8f4e0f9249da2c91d3c5a47a2dfa675c1cd16d80840195d4a100185c0700b7a883370cf401c704aa3b1d7eb58cd7f8bdbcb351addf96bd93a4f59f655acdd557eb05534b6b3a5315663034fdf988026e0b79cbdb7531906b018abe859093064b7ace93df4bb632b374b5afe689bda4045b53c5ef7a89b35296a9829672195fb5f83e07f6b7d830311b6fd9e8c79cd8c29c933e5af48c6f7b931075d0d609f0d838043a832cab84b68341cafebedfe0e378832f2df356dc854cca81fccff5325671fc4188715dcbf274e7e0f74a5fec54f86c031d9581095131fe635ec37e25877a70dda38113ca279149febdb4b08e5bb80771829f37e756255e5d5d29a04fb956ea9a5ded41e612a4b4df53a05c02a7a07b37920adc6b6d448165e11bf2b49e7b8ca92f861587754741afc5eb7b8c7d7839cb4dbe697532aea7dd834d97a5018e82287ae3e3194c858a37195b99b3f515858d85b18985897a5a6bbd3699a8dba573ec0b5c7691e3302fa34e21caac5d868f8d6cdb7546f346dc949ac6832727512ce7580018ac7d9a3596f23806c5940991c9395939314872a44ed14f67f6cb8a70724848920242d7c6083324f584197f7b7a0c718baa27d536d9a95780ac8f285c5580cede8b3b3fc3b1c2fcb8ae6ec67ba49d47d8c855e177c0985bfce02e1705238467c60bc9460653e117b812718f294c80ef1518a35db480116c00d59f788b6648e18bd54597459469c2eadaf6f313b69106709f44e6117f45754f6df285f4728bd1725c72d903d8a651a71486fe4e45d4d031295708e5e8a603a8b356b321d4fa14fab6f6a74710f08f64785ab7ad1053f6b55b665dc6f9cee6aa78216c5fd7a62fcded35afda4b488aec29ebb508f7a7550b8df42f9caeba40d03d49e1fe9033654181ce2759f1fb0d79a9380c1372ceb40db46de523699b0dfb37942d575745aa3755de806a922d0b517a9e04104b07bc8071b506eaaa2b1888d806e69b954661f370c3d940e3be0b515ae5e98b81331d8707b2c48cd844e4dd659b5e7024ce89759be4f7f4db51324c9d3c85850189ae4c2e10c146439a780e933bcb71314d1c02e59c80636f90ef5e2a5972ce559a9cd3e0117960c6c176345ab81f5af4586c34c208f438764927a5943af2eae0c55c1da5a9fbbb20f0694e60caa2ab8a0db6c0aa87d3e654e43b5cdc89cfeb5ad70c7b0604fb1a6a45f9a1ae0f723173a05cef4f159f23478fd79a08da948724a7df7da4cffddc98be336402c4f075bcb18cc005aff322113f701bdcd429811d68838769391feb9ed41d33737269e8321f66d46c6906fbbce32deb0acc09210b1b83851a2529aaf6b37f3c42098721525492c0dd042f09aced5015ab4d0f1b325f6d8b6405c86c335cf4068589914a55a1a35c70cc37c27bdb88429929123a032abf7d0403f203c9ddca4750525cb9d33ce82342ef9fdb68cb03b3029662af405c53252b3dfb0a1ed72dbd2c9f44f551aef87d9e0180d70874500f06ff3aafad8bcaa35bcfc45d87a1b4b67e91b8815a778dae78a60f07284433780112edb5c5419a1bb2b722302a2340b71a9915128d4d5ca28fa20dda36ca78bba5ac1a39a6ab08b95011b2479799763bd25d26a04b8a7d539d9300eb12b07c2c81343d2883b3cdfeb4ebc03b5e2ddd785de63e179ff9f45f10812ac7cf5366adc2ad9ec4cec0e1db0b83bfe91c391ae2ce308093cafad829059444da368198f234fcbcecad077f12c3cf1b201bcca46e704f5639432e9998fbfb44992662bc54678a941a235b98f11e774df1b714a6668303a9c7d9cf257c1c0f9fe3405286303ff6e6c6bf35b113e3b98ed314249e7bc6e917ef2affec7a8271463939e25222e379866297f500553cc189ab2589f7b88a271484d4bb60d98c1cb6041f8a4abb8e96ab352ea78dc373dd92e5080fd665527ac9a25998c51185338554c51316a892a8f41399578d0c9dfbdb38a5b2efca1a92d2b5e25c3523a16ccab1b64599001724e88320642c487aba0accdcbecea7ff3299799c6cd781fc4132a2ca649c8776d457d4ab6183519f4c1ad643bdefa0b5500bd307e12f0beed1ba079c78aaef051a70e1c819be8819ca6cb2fe2d411d09658a8dc2961d850dd43e847b66867df66616bf6603026b7c7bedb09d7eca6bbb11201d4c57e4ccfef8a073291c747a21850a55ff53eda740c2b52a691dd3c4068c84a97d7b2e98014b4c4404d247895362a0157483dbdf08696214dda2fe3bb87ccd4e580d862d8f610ede09d76a76c29a8fd82c7270c6bb438e30227e07a9390e2942c9b85d61b972f6029635f235729d68c8ea6419685310d03a9d88cfd8e9dc48e416a7e39b6d71e85c91b89c96b37551282756605187aa789b72292d79d83419cbd8e0010a852391c149dcff946514c94e6bdb3aa17e12a7d5f04de1a9131f5cd109973e1a5b0b12d61df66b987202ed4a4c0ba3434878b6262d80e8c72d42051740d0288d552c40333acae1ffca714aa7a89791d89076db1d8b0cf182be003c56d15a41647d0dec93bef82f7a1549662ce1000ce93e62670d8b40b584b3631a2939c1a3904cab4e285ee90931e95598a20759f4deff153b8e596fae93092ce3f4dff11a05e42b96d0cba11390a964c6cba42ec3bc06ee8cb043b4133c0f27d932777f790dda0975d6aa1093853ba8c40cfe02d71dbdc81cd21d2305d18b18c2161b6726f2ae0986a51bd04e60b9e013f4919f73e193f8ffc4d3cae635f2062e174d15a83d023272708d5b8e75862beab0d2bbc40a8ee043443bcbd012e54465ee79a9e93d2fcd8f1dd49126fc38b15603d1a3cdb2f5268a74b3af15149b43c5948db972c5d9c36edf91a8079a43c269d6f5222ac8f577f1eb9698c9da417a674436293ca8c520a816021c451b622cb1dc72c3154e860c0b0dcbcb9f376385f6cc81c32458998eadb7bbe039cc01860cf762f197253db8d533b7024809d295a38bb5a27ddcd6a990e96155edfcb11298de528f0e2bc0255b0150340c3cf6c65764a5c892b5061cea459f8f27af92c9753bbcc989e45e76a0be1c440f4c868d5af9805df173d56180e6288cc521df435d10657da6b7b0ebfe827f8291150188be892736f4357e7922a96e134c10f419c66aac197eb2149bf122ebeb8a4d50b4e3c68c5538f0245fa0ab832c83746aa9f39f3531bc7a0f172488a712c7b7cdf580ac29dfb612f1aedd07583b414f628b4c36d2266715128886fbe6242ef94e1b020e881a9abb0f12967c1ad35eab7c882632f89f02680a712759b459bc380ec6a004368de7b822e59db789d6667d0ca5b6fcd170669eda970396afa94ac210c28e4117962a8b082e57a5b4433aa3b74376747802167ee29633b334c46e3ba85a42a8ebabb73e886c16ec7b70e37a091011c5fd5e0b308438a40c6ed818ab5b25ea8d89b222af53c1591bb3a04d5bd4f36f32cff4a3a78a939cf03037594d9e04deb66c9fd6faceee27939bf3542b918fee0660414acd902ccd65674109713d1d5daf56864053534ab3a6c477d7d57b0b156c304a7b40ee66c4d1dfc3560695d41bbfbc46418aad7b6a6715521b38fe68edeb751e9224ce90c518f77fa47729c8f572fcdc929ad001e867215e51292597bb9ab265331c68d9c1b577648052d2f9ccdfc998f50e3b7d85f66a314ea6955a92965bd643cc0b8f465970b46d05b9f4f8f2d72aa83a9d7db16866ae6b8954586ac5c72cdb2f7a3ebd9cf08e3bb0751b5e3c1d99636361e8e016c5cd094413c4195db731bc0610282b2cc8eab50d3e377aa796804956bc7388992ba9ec15b6addb415c24f5000d7ae7f516a81bbbbfa68a3a5e8a464ba51afc03263c776986d2ebf63e57f2a4b206517f525f382e53cacba51cf4f80af69e5ad8926a0d839d0fc414e919cca3fd2cb31c11e45aec1d050c973ab0597f11bd97624c283b9cadb7a4614ac4e8cdaf6bfc63e53f96260f60b1e36283064652ee675b93acba058cb778aed61f4b1056ed1e09f7292dc00ec9e68f274a9313a8c71f7de69f784f629f884331ac986fa8804e41e8f3c31c8b8c2f3e170bbd10beb7c67bd6d3af6a388802f5c65a015f5f39bd3f84dec843f5ac6ae817de5a009fe723e861c197988caa31e6f1496924254bddaea8e78a6418d007f6387897b5c59c46e778bc773b375b7a689165c470065765ccf6db5929f5ba58f85abbb139950d8045b0801912b67f8efce0456c36653bf98cc5a1c02539cb609535001f09beac658c5a23f298a4a637df93b7e31f832162e8d5288d3f747885faa6e10bdfa6869540012196a70fcb7f88dae7117ab730a8a16d690e98b2da30d1046c9c5aa851442e0a05358b09d024b2ea41725b495dee072183d34c011ebd1a315aa6b41c03a7b62c93724c20abdfc866cd710aed3c03a9d14be6667154b41791c991cf344d7078521e29c05ccd7f5659efd285375e60773722ce85982cdb69d91dd08358e657b5cda57d7bf2824892f202e6c7985e99a011f137760a8810cf0f3bdde9671042f8e9868ddaa8a03151afd9167a242a32786bcda6a9de9716959153d6175cbecd557708e6276f5404665b88387b50a3cc53b73c3c2833ee5cca86a401737825ab3e395eae29375c64cb1b62c32eabe03c0061b446cc3d59e96d12182e6865176f24780d3f74727391cbcb4d0e5573bc65b8599b9a85910514c7293c334eb3b944bdb04d29451f2f972147b02366da448a60b07901b792d309392cda7e3e99e8219e5429dd396bc9b732ca58f1d33d12d8524d803fdfaacece542be8c5be0580378645c46bc6c7c99de53e3d18d80c6b6a707403e6821a840c4b13ebff59e87f52735000c4e6988d92dd03b1b8a451b35b8a2aec743d65bb42333669ab5a59e7f6fa6f49c14544bff46556caac311268d2e45a76492ae440a9f0e9269c99916881884bc896ce9340fe1926ef9edf79fd615eda4673d83eb387099334f2ce46b11a2b60009db29b9396e7ae9c1510f342f4a9586fb4f1a50b9243db4292f76e82fb5e2064949e468ba10715aa5488f1bd5ada5f58148ac7665ca59142c5d4c466070b853a5a5431b4a321211a386df07125c33988160bb6618468f1759a0330f524e69ad956982c13a3a1a3fb7708f4fba14296c9cfccee3585c874d4d7bf44a02fb3de163ee4a709175cb3cf90dfa44d8c8321962353addc26555a734c1538fc95cf10bd03b4f65d180480c57af172e76604b724576bb142da04314ada0ae8966341385c32449205a62bfe72768406f811a0882a0e32d7f7a023ee21824282b0d2e0f09be38060a07ff9e25b48f320daed56c050b8b2e3794ad616dadfd0f24f50876441d4f7fde32a93059cc8e238a16426d5f9eafc30c6ac4e94b33c9885c1176c443359704f3b0517805d8e54237072302480140f84370976d8d244cc3873ad15c0c8a86a41daf57d34acb8c2703252e62f8d180195759dfaac1542c978d00e8460320d9110689058522bad0c23e2966055cc2b7cae6eff8163d01c5e6dc43dbe1bce6577bf8e40659617c775b6f4b88d641320c853c7a2962b13e853d75c3f3e75b195b8df81c12b883ca2fd63379a5548cd7a7e96860907b0618ffec6083ae69ee2cf03c73853380fff20e62ec32b1bf0ebfa4d39a6cabfc327e9334c8aa438616673f29a812c4b2ac08be1646eb374dea2eb6982355987145e66b976c2a0cff7357b629a7e9fa26cf89847e70360125615a6ff308b6e3ea7828fb6c0038c2a40f80a3dbac8d3b401ad4f334af391c48c6ea914730a8f165bb2d8dad4de293d09303533a2421dd58b991a2a6f34a86db9a6736ffd75d97c88c0708c3803a7fc5ef644f8c42a787a8c4d60335fd8a7cbca7f541a376906ae1c812717dd0f0cb52a20c56c2721e947b5aaa4938850604e5246273c073dc2cb13e043fb7510a29ea729610a20cf4825bc2088fd642ae88d1767b8a247036991d1a8666a4b62f2337b92d3ba2ecf0fb06918c7f0d3856e059bb151e9c53a4734e8b360da8982b99605129cb2197c1d2dd5fb4764282040f9352a27fd9e73ef2cc288bd0f048ad9ee88cb6c460259779a65f5b7b845062472d416dc27705426472c2f94db727b71a5ecb6d14d516803d54e9bb06f1d24493836412516a4f441508a982a3e13f6214fe97a9aeea41bc8a7cc33a1863e60caae9b44107826bc76820206934abb99ae4f033626c9b4e056d720b64de9a4eaf3e7f191193b454bb3eb726371c094b3510e7f0b530a9d1c0f09714004eaaf1131ddafe2463dc266e12ba41e89a215bd021acbcec2f8e9ca34dba80e7e7e058339c03f17e271d9725c55740ea1a77816778d028c1f5cd5cea0538e924a49c5206f589cf71cfd4ac3c21137077033353937009ce3bddfb3bde246b600e14d26cc4d0534e5687bfee9b48b7679e394ff5ca5c8913eb5e6a448fe3ba87a2cb8cd6fe4a340b9d575512920a6b587b32c539a0940eee985c8ab6ec2a0dede306bde334e9eab8b80fa3fd36135c91a6a1bcce715d64d70d17c0bd4a0c512b58d2e72f2bc377b902e5a7e0ff687bf139f89eaacf8c5573a512fb350c3db00a312d2c55e5121d6ffaeed33d97f49bff6081083c2d931ac8b906c4260e662de709017cd9ee9fc2283508112bc054f6a694e2038fefbae23ade04a58b262feed9911b9488611d68d9aef0fd630a12237153cd12cc2f0a19751a05b3d6cf55bd690bf3e542562a92ce9194b2a3017405481c4ed61e43033e1f08140d950e3375efc630f5c16fe951c8da0dcecbeaa11b3f7532069dcd341db15bd079d4ae957c14f750a4e022349430881296b6b686ecbfa9f5390d7e90d4284a2f76b27393b651dd51c809423a4b0fa6b5802de2327a436f532acfd722bc7fba3c440c61a75e083a3f7aa5f3d8210113d759841978886d300baad620e61727ed69de45dcd1608696762af516fdd79dddfc08729b006c13cecc3353cc4301de2ca94d0aebc329cd6086fa03d87ed2f4c5a76029c41c49c9507383e5dfac29ff389c3ae9cce68462329eb0a5deac7bf614e8c6331f185d2f80f4032fb57001c2f24bdbb085bddb0d1c09c72b52b9949a6e519cdaa0642a617afc688b5a95b4cb140b91fd2ffdff9ea79b94bab9da7c0137f1d6f5fd10895749f8e3caa6068a60b4342855eeb116715684e48c1ad46bb5f36052dc1333cad220521bb95817645bba983c0993fc66f63e6830a1bf8029b873887707ff325e99b4db380525efa3b46f3eb0af02f288eb2022427c94be87747bd1aca7a829d2c06ca17046d4b13192a13fa959e44108427f998bdd07875aa81839854024aa7fdb29303f654e17187187b83d8376a0ecda16c15c86f68631df19e6cb2088ab4414771659a6ad3e3c98029b8c3aeb05ce8e4bddc4c17c93a79b5b48eab1843bad6c419db0d99f0d8aead8ffec045e703e21429ad8d4a04961c22907872c580007099464e4bc0f490fa60a10b218b2b42cea3976b4c6a90ff762fe7521ada1e054702213ea27752f7e5820c8839d1482cd33f4c25d910e69889c7d9bd24d9fc73c97e7b241ba8b3fbd4ad5df3713fd439f4478f3d4c3ac4a455a028145c080402d7768fd75b393d69ed3fc4861ded601d741fe3bdcc610ddcde5ec4e5bd9ca026a3ff8da483a3daf15ead23b224212df959c9e8b831c233f4b81069b1f47720cc43a3f741bc5aba635f94e7f957d9c6c0ac22af92c3f2656bf7adc3b52f9f3c00ac7c2910c46448120bd0adfefe7db8031ca3013a7872004640566a14143067a5073a772a0374aee62a112c5e710200097c464a0d63de8f5f284c0940a9232a195ba0b788dd9f78a81fbdda2f3112e53d9d2bf5e3a8a5ae3458251b70c6932e1b59753e6c896cd6a245d18bf1d4ef12ee9ac0a6b5842e0bae9464f7586d73095382b66c512ed1423bb0172d5d6e5f72afe37359c1ed10d33916d9c8093774147e571116ea44c2564cbea8f2e8ecf5bba075e5c8b5f464495e5ec12f6fb757aa0785a081ca79826e7983cab9e9d3ae78f41c00eca421f9a1921daf6642f4bfb2060ab543f2acc880250f1140cd747b4321c2f74942c54f58184b2f25d1963044b500db3f3b41a2833d8a23b87b41acec73d990feaf484a84e79ed5589afb6169b1e16b174b29768bce9a8e4a837b57aecf6c7f417d1bca4c0e02842088d44fc2afe6c65697720ee6a3f2cf1d35d742e6eedfc795cdad3fd97ce004fd61c263283e9619703c82e653eab99fcef1f9888a03726d6d1c334927df143beefa3011ed831217a39820d54f9f6407ff7a01717edb8e961f0d0273b390034631b2d897a08ce222e44958a584a581e56316eae6852ea07c036d0e258b8406b84394124853f688689372e648778d9c773d785109dccd9a384f661003bb452941ce5e7ee1fb8cd04b12fff534746826e8a8581026371b57c61754ca648b73cc5d100d431f7b13a64fc055d5a99989dcb775752ca09127446ebc70fd424bf26d36b537146b4ec941332905d30c56cc35ac7b05ce3004170d54206015a703992ed2672a5e91762cbfe88265a99900a632fae85db1db6043a10af9240b4d5d516155b14a0420ea46080af5f96b58568127b336cd4f9c55306851954a109f68ac7d2321216defdd4dee2da54c32050a0de50cdf0c3c51c059269136b3bd2220de3a9a83fe7ebf201ad42cd2f1cfb1133a1c4b29a514e1f8e70fca284c2707fb97582557ab6b34f616841d17216b74247f7f22b146a13b52325a82c3048682185ec10d4bc10acb98ab7cb02ab2e490d0134cada039d040b4d535ac681b92044d73d035a4095a4609e4e3f37abd5eafd7eb45108a7a462e5176f3639c518e92d14ed7803e728d5c9aa6794356d7688a421de17d630704a1913a1416928f84f7f24332f281843e05e4bb42d4273de902395558feb04fd8a4691ad2c35f22c2f8130e681a1e17481211c683d03ca42979e8a290f05ebe77913061043504c4da431a24da7b1749f6d9d5c13f3cbebc2b14bca823ea3ba069ea4300d294be69ea4faf014de35d1404204de8214de8e5952b30d42c5730865ddab0224cfdd28f30c4a4377d0ef5f0c418d2fbabf444959d18634a79f9352aef3d7cd307a1215912e9e1934c1788ca95394052ee2b080de75969491f8406887cef9190ef3d7ccf7bd205e25dc99272d5345e7c1d8d4b2410895aafd2a2b0aaa88c5c3b2a2d5ac4639cde794137bb25949beb11928e12ec126709a574041b2d192919e98c5ed90a6fd8413ed85f0bec4ffcf3f7d1a93869eba353e94941156d83d535203601095672a8dac70f5d949f08535a9156586527c6a4505a7d7c54767c54765c3e194d72c21072101421845c0481404f6f9618346d0e8203761e0e9011b4413403812ea534d47333cdde63240d774138405c17afe8060a413500d2c8c630ec364b5228adf574faff5e180501f9de7b7704decb6f9aeee6a41d4109e4871e48e8a220e085defba601223f743bc248af014d23af8815611c092a0a0c64e482ac912bc586c2da9db8149b94149bee9e1edae3590987c6124e2ce1d056a984038a432de148968dab40d2d535ae5c653707a1f19736080dc5d1a1b0ae01316dc59668e582badd2c42f98137d3d111da6a1910835e5057359295391ca983cad2ae5c699fe5156a0ebda81daaf651aee4ca55ed98ba5cd156af62ccc875a2ad50d7c2f247f0ba389c79236b244bae46ae916be4ba59630187a3d26241c7a8ec44989866d335e653196856683c08f568392a3b9feb0ef61f857a5eed3920826c40ac08d38a31a320603702f6ef8b05f687d7063583726811eaa22d102bc2f8c8d532fcb34a6be4ca1c0e0d280d35abb4b0fb9536d2a4f8449a149f149f142d54708898561252296010e726408552d7c1f6fa46f7775da371f6de9bc15d77e5bc196e9e0ed24fd87530cb1e3af13c1cd9b4ede1e8ae8ca9a04cf4a1e738aa699af6c369a3681abdf987865282288036b4e7528c28ddec78a33fe39ca6715a96ab974156f61ef4e16c8feda5c0dd4b6f47c45af7dc9dffc371e7794670df793fa9ff0fc7f4b76cd6b8651f5d96d1df3ebbf947e4e0ec6c865d06bd22b62ee33ec6a4ea8b76749f655cf6dcf5b26c7a4ff23c1da5cf6e8fecb7ef4a5e5549e14abfa980526e89e4e1f028a594d2edd2ee33aff1b4d98fac7c14eb7d47b28dbbc69851e8668a3fc68c6e2ad340976a19e53aedbbf66ecb3ebadc75dced71f373701691bd9765f7d02b82cb5ebbd95e94f633a65337663f3bdc71deb3740ff23ef37474df83bb194ecf880e773fc37de4b219415df6d4f3bcaf1e0e2fcb322d735506b3ef3adb54a31126bbf176b7fd6b1cb7ecb5ec47c41bc8cec419904f75da355cb3399b89f276f45a06fc6ee50b3870896aa8781ad38fbe5f403e3564b2272f80ffc8562f00ca1435d7943fd5533c956c9638a51f052525a5f4d0490e8253e28cc7fe6f8fe3fa490f6d3f89835dd7fab671176394b063a8fb8862430fada80b913edbbe25ff3ce5338cd0421b38e406126919fe240b6bd032fcbb58ff06e2c020409c1ab15862831b0b98ebe2c662490b439c18035b11c6773a181fb6e0504fa6f7e7a42701d38ffe649b065e08008169c0a15139594863a2676889701ac62bc4812ddc30ee15a1dd4c22592f4508e193be61673041cacfc4c6f047c4a50b510067907e26a258ef49b6fb9185ad0853bf3d1c37fed59f71e8805a6fd45e64f30f8144a00d88fd735a38384c92e86cdfbda765b0e59d6dff3877ed61a6cd0902519c3680b415acc190556ad9d80c7155912de04b4a018388244a0fd72f5904e1110c61920c7332d4c110cec7c17d4a631796b32fc8c1288f22bb179cffed1783868c8cbcd118fa0884e0083f8ec1b58841e3775efcf376b934c29d87393c5c5d196161cf5e5a4498bd5c95351fec5107d8351eff3a5d1166d640e37981357fd405871c7915c98144708260c598f6989016acb9d9c2c64f4e92d47cca98b8ea00ef2d3707c12daf058c47c06f2c57b910e22a216c5c05c41057fd7043c4552a2d57ed28e2da8eb8ca8819efbf2571d5e8fdb71c57a1bcffa6b3b3801734d77cc22f38d3b7678a4d159b4ed8f4ed59a6019f530ef8fc3d2005899497944f49f1e1243a814e3d2bed1a8fabf0fb112c291601b0b468001850c4e71386a914c37c7b4cd7f3a09c9a3d86e727e0218c0f920d80a300627c8691f1d916e0f38a2ae63348e633c4b165624023eb72513edad15f3bba32b5897f13c532d158e0f831624183a4bbeec4bff95b4f8cf170dc4c737c1037571caf80dbe3b5220ccdcd54014f809b2bcdd715f647e2e6d3036e7e07dcfc35806bf570b30cce5c4f8c09855aad18137af970f34904e27a40afadbc95f7a4157601dc4c05f0a9ee88ae85fd8d983fc33acf2bc6847aba9e6d27c670ad1901b80cb845dc7cea86b83dbf806d07fbefb0232baa7df8d1da77987ff3edf51dffa60a27557e5051b9aec4bff9c3ccf2ba786b475654f816426bdbbf792ff470b80871a19018460f878bb78ee39f10160a29717b1002f1d1d30104105e044f6f35dfe7ebb899cecfe1ad308ed6fc206ea60ab8b9cea7696187451a66fe113c9f005507cf7fb9f34bf3434cf0fc6f3eea43abf9a29be99cdfc30a63a0616610272dea7cafb58432c1f305107aa542af906835ff069e3fe3e6539d1f8050cf48b49a2839661ec68d3fed0b659f9000b059db82880ea64d4c368374404db21799b14ec403c45c0bbcc4550878ff762d70fcce5e180157a64604c418d1b5a04172800c06210e9e3bf8bee6c4551d8c29992ff5ddf6bb636ac3e454f8b9ee6025ae72b94cf40ebe5788c613f60e0d1217f75bc1d32655c655333764fcf3993963ac07771645563270c3ce9002ac71a1359eae01712ae7e60750a00111aea0054dcc077fb8613117e6a28c1e432a51b8441797e8f277ba5c6b6d0e82edfc685d66fc3804472538dab8c4395db86b1babc421314615fb52b9aee3df11290ce1b43e5238bab01c48e11ef4bd8f9603290c6f8f232e2e49671d8733409dd1c3b787a387e77aa67e1f73ca7b4f558ff19ebaaa87f7be73d5f79ef7d25533de7bf770ccf8ec958af0e653a4f1d91c047f2f633ec5f8fc323e7f05f89c527d9689f9dc2f99cf0d33c0e7dea9f1b979626c7c7cea31373e7ef5987ae3cff81b963a0c7c1bb6866d8731806d8791b1edf0636c3b8ccab6c314c0b6c3c88821bb67fefd2fc80dce3e3a86bf9ff1f787d3b0037868613c073b1a03f88943e5efdb8f2edf5e0e979b81f81f3ead1352500cc4ab58272086f12ecfb9b00fe3e18e76716d0e62dd3342e5eda5fed98ff6feb42e3fed47cf0815203e5e20e0c380f1330e7f26bad8c60fe38180f140c0f8e1a187c387784a81f1f7be29e594c152603ebee615717ad38b07c0cf9b593e5eaf889487f77efcebe2e1bdf65dfe4e95bbc3becbdbeb72fbbe0b9b5d1e885fc00b06dcf93ffcb5ff1908be0f3d23e045b93c7cfbf3a345b9bcca4797bbc3e55dbc8b0b04477bb3cb07e0bef8198fef3f7c7b46bcf87b7bbc787b7b98feba58e8f8c595777a43c0f8fbd2db6182b9f1efcd008029a794fb77721e8e15979f3625def92ef6e6386306735506e1cdf1e51f2c83654aecafe8f4cabb882ffac5db4cf10b7bfaf6745c2352fe2ff5efff5a17af624d2eef19f140bcb82eb7c7cadb956b7f269e6c3e7d00de851d0286cbcf6f6fba70e1e25d7ee5efabacb8c0786b7fbab8d9b18b7ff12a36d32870cadffbff2912aba47cbb4ae2fb2aff3f1355ecca0b95bf369f9e002a170a885dde05102eb7c77c0be3ed7c3be77cd373deb958fbd9be8be5ae5579179b81ec50b9f3ff67623ebd00feed05e24fd6f440347631dd955fb1303e5a4e0036ffc0403c016c8e0203f101b0190806828b699a1fae4cf5e1451e1141b00ff7876308af1196a519c0b7b72305c318c08bf55e33aca7c443855aa2101e37782f572971550feff605f0ed03bcf17b8018800d397198bff7bbae3d1d2717ff1c842a0f1f36ae430f6e2de066421d5898e35c6239eecff808043ce29fe955befdfb9b42879f7b8dc8db0ee3e2ad0b2b809f613d25405c6f8900624d5cf916363e07537ec5c39172652a10a11bea01c0f7cacf7807808fd64787593e9800c078f1436bc84d64452171e54f9ca7a7070b854b1c3df82e5c783aac7de9a5c0140b7bb05007fad40c96bdfce3da50a38bfc71b9d98b0d314a45f526a024d49cbd604ecac5e9f4ff7d3915e406c7dc319cf25c28c641ee4f0fc4b77784097e35e31405b5f1bd46e4e7e4a0ee3dc20475b512bd7b381c0735fb8053dee555fec7cc5ea1d47774f11d633225af96b1841add3dc24dbb06eafb69e0dc43fbcf3470dfec8306eeaf5c37458dde8ebef19ee08fabb4f880e78f64e0f9db37e93518548727f7d257d9596e73e34306a362f0897f310e76d0c755289f1878fae0c367173c53f04ce109c3769664bbbf9387670dfbb9c3d3054906a33ee53994853eb19a8a7a9485586473102c7af89329cbcabfedfc91c03de6e718d8befd17d67ecb5bfb2fd77e0ff62f147870830137164fa003e6bc7b2b7ba3a2c227bd9772b4fc4f9b63bc787b738b6d3c33c4503816fd0bdbc3f4a46f6f8789f42defc2bab4dcf64fba902dbfbd8bdd7e9451f369b4581d2a9fdd1c2a9f7df68de7e849a46fd2b539069ef3b645f9ad513f3f269457e13e4bb9a447c98fdf34203a32d275cf39ed8844ea2e6acebf5fed8bc80b79a21b18e9be5433ab7d2d652069b3f930f6e230df30f0dd064f12d4fc3f31e6ce560bfee47ff8931ffee4873f421439a2a36409fce851c8cf8fa7e04f7c9db2ecd405ae5f5a4c5065707bf4d208032111d81fbeb090041b00f70b0b3baeea7ff1af05cf293de6fb29faec3991ad96fe54d1678abb5a725513f133c4a10dfa78ddcdb5de7c1a02f433c64cddaf08f5e4536bc79b2970e26c2781e1f75402e3889fc3710c1f1695c331963aa8bf9d009402aef318a885c3f477d7d92db9aacb2ef4f1af4b5065620cf4f136dcc0421dfffaa5852efffaa38545fcebaf5f9a46901872746237b04914f006128139de345f8c180de25e28cd3e9f62469feb57ad66db3b2f06ce6cca0c15e2ac65624c12325c12fe94360ee5fc7dff8060eeffbee4e46c3f2f843c5854ef6708307ce760cb98efaaec784a31b386eef8b90b2928a320dab463d02061220686f77d3525c8072f260e901d0c417203c96ce2607841cf753e314619b3ef9e8060e7e3aace545e98655996f90f8eff62731f87c9bc52399fbb7b02dc756a6559e7b39d5e7caea7ece6adf3d9b61b1c5fdc5c5d383e273feb7c5c158bd4dcc59ad0e8621babe62e86e37731ff3a1fd9f93c89f0e70bdbc56ce713fa279dcfb41fe8caf8e7375068f8f0335e84150e7de4c9a28a21f8c56f9fb30536006e26d861954515313c00dc59545144bb715516f1601bac04fb6b435c159f745b684468d79e8e958737d3b0a0118e22d28f4637b7135193f8a6d7bc22e28726e8e69add2e16713c7dc7176f44bb8df2276ba281e3a3bce6c345b1a8f8f7042f6e3e716d484117c3080d7ddeb89b6360ce64b3c4269c56b48937ad96ebe5f3b37ac59e08d3d3e330bfa9f1b3e7bc563eab9f95af56ce6aedb4785a3dadd80be795f3721b7a535b3e3fac983bd64f702bc2f833392d899d0f9f4b303eb7e01f3ebfe01803c7cf6e2f18d607db31beb7628cc4c169e1b4705a7267e7b5f3c29252efe96211c641b59e4e5917d36c3a9b08e33fe38c73e2e0b4705a38af183377765e3baf9dd7f489994d8cc928add506675b65ffafd56b15b3d896c5b6d856aa756703995ec63faf88ed5f58d4caff9f94f8e74bfcf31d2b7ffab7a897efe14fa05786136324ce46e9f6da5e1f8b319b4b2cb6237ad18e6847fac498ea537daacfa4b4d6d3e9fffb52a92c837317a3d4a70d6907858443c221e1a0ececb88ffbb88f36c43fffcc266636990dc806a72471eeaffc8b1da2873f3df71694f3f28f7ab9391cbfbc7dafc6b5c0fe9d8fab56b0bfc7f26c624c4d66a3028f88c7d4805e5724c1fe5e118fe13a2d5cd559a0e0c98b7d1667b18dbb9595b76f6f0ffb2bdf78e57bb03d9a6079d4103dfccbbfdc1ef67bf8c63d6c54d417afd9f897f2db14af157bb2f9c5df0ba9bd4ea4a66e9fb7158889abfe7d5bb9c81f96292cb7d7b33cb1a2182323934abdb8f973b1ade0b642b970939af9f8e7cf72b3987f5ec862dce967dc1d432f47c4a7ce2403bbacd9f8119c351b50131b9bacf1748ce5aa9a4d76160e0ebd7ccf7e2913d4f9f99b1fe365e2bf946733e83b6e83125248230e0d927939100383ae8f18f89d88abb2dbf8106f8b278ee2befde604b22d27d077096a177355f7840495b32fffa09866135a45187777777777777717a261f07a5bd874b118d3c51ac6359b2ec6c9b80a6a327ec3359b6ccea03e9e431cc66655359b2e1663b69766e3ade4f682431670d66cb657105ca29e16293cc8940d0842f6d5d7d343039793534b8c272fd96db00842687d74b83bf9e7233b7a6ece39e7578bca1ee2fa236b04741a7d8e3f3ff410571951dcb4391c7bcf71f5e58f6ceef0e8216bf4f934127db5a2136c14fd08891c899d11d6d3805eead49e53c3f4f83c21d96cb7861ae8e4147d55ca6c3d7d3106f6348cfbea740a02cb06770f5adc70686083fd5bba942a807fd6828a137377d70e0eee2c765edfff92aa2f0ef3a2ff4ead4279f82dad223dfc94b6913261f8a356d587bfb56af4f06387da060da8b50d1938c31f6610867e03ceb03de07f0ffafc2f2968632688924ce94f373bbee16f52d9de534a3011741319e80ac008f4e7cf0022baf71741e8fda3f0bea56b715577d1475fff74c4c9bfd1cd7026e22a8ad8bb5defe4f6428f01fbbb8a42e8c189e1450d31a19838bb2d9d474fd748bca29a4b259822050c02a34607ce00b5bbaf8cda1f04c2205a585cc106771d70636185219813f9f78b5f20281a67ac1eb1d33ba70873c447188804d2344cc120d0211cb81c107fb5359077ff8362efab88fbe6be0668e29115b5feac5dfd7a3d9712731eb5e938c4d12a0a715b26fad157cec351af4c15550bf1d62d6364b51675187a160a8abbdbfde5193304fa1c20d00b9ef4bbe3a5de18bce5459c887f2ec43f8f363e62e2aa927f50927860cf1326ac9460771a1e2d0cb82aeea088185baa2e8786e1ca4febf2914824e29f57ce0075c5c5eba0185efa7af199b2b0b0b0b4fcfc93cd109f6c0f7851f2e15f94bc42b4bc193e141077b4a3ef69610ef797deeebe2d3f7fe5e38a6dcc629f909808e762bb25ba62cb76cf419bf1c02b2eb005b240d819420821e4b1e2b0e7bbb4dccc02e384f0eb293bad8cbe3e6cd930a77bfac398161ed34db051e2aa8649e10732c10e79b0c327d8e18d63f1f3a28547cbbff87679fb7d33eae34d8207ee917d7ff6f0b92c76bf8b96172b2beded80cff2f1e79fbea5cc7860d4bc2ca7dbf34b71e5e18c8fa160c11d0882678c71aed83cbffef48870f91597cf2eca731af4180071f62b2efd2b776445ed0b8d70f9ecf670f995dbc3c5f78f99e5fd31b1cb952edac57df1f1dbb6b43c84df225b647b9e878314953065dfb345de6c76123c78985692681e254e6fd2e9956f6bfac962330fccf231d38a5d7e4cd85676773fcb6716e2959ff10cd5f22f5adec509b7bccb6df9ed5b4c5fbfefcaed61fa938965da9ef1155336595a5c1ef4a76e988c85cb2b8f42ad9c4edfcf71b19b6f7acd60295b5c9eb23c28c5f22f83339607d9139695ba6089f97779f11cf72f9edaecc5bfed867971f3c9c575b959064b9896bbd90f4b54ca9be4bb9703aea0eccaedd17f1afda9ff24a5e4bc5bb1a793fc15c90377e730b1bccacfd30ccef559ee8f894f8da3572cc426dbf8644d263b7a9883b46670fd92123e130053f02848fdb6f5a31340f068f44e443c7ae9e118e5e86c51614e6d9e2494803f31bc2d27ff3c768eade689ad7ff12fb68668e29548624733c144f641608e1d6a7fb446b687160a88e1665148bc8b0a7430a4b5a2d9ae146d873840cd0bc73f40cd0bc76b448aed22898fa43392f8f12d6a871fa0e6856113cfc4016a5e58627851dfb72353412b85863ce0788dac56dc6f2fc5016a5e342bee5148d0df9e5e209006058111809e5e54d6341b04b6e7b88734dc0582c4014d53825f1da0e645b35dd4103448e045a59ce014cc01d5a1a26466641ab6610e421c11ab12ee443a54188bf8e7aed8f2cffde667176af61b1df88239f23fc2c87aff08610e7cc7a09ffa84c4d96f6e9cc88d17c139b6727268c0d2f11b27e24794e4c496bb72fcc65b5ec489c4568cacc88a42222ce294a49041b249a3055cbf64b883658eddaae2146e7c8af905b78704fc8e30eef6640426fea81d138583e0a7f20577f0c071af95a6fcf94168fa698cc95abcffeb1af4fbab8ec65fcbf85a06f46cf72f5c4bf7d25dd812a98a6a5ffd835a19eaf6a0ad0728d7aa49e141a08c581065df2fd9b4c20e8fb420ab65442b574f6a9628a882255739f1ca957f92256be095ac2b6bfc737893e4c8c729aa0f575bc9922b88b35ce52058d6a820c40d1bd238c45c5bc8e2a9dbd3a841c79b156dc34990b1f257d2e8298928bfa0dcd1a5f705e7910b54839a454960e5e6e4b8aee3545afef5773c9062a3a91de7a7537f77555a16c97caeb96e0e0537136a84f40f34fed3a2b86f2738facad41f3064c598ee188db0e5d92bca113204a5966a960515392c3bdd4b494f1654f46420914e4e92965b412507940985617f1523ddfbabb4fc3d2b571146daac54fa4a49442b8324f22315974a4ba5a5e2725537d7cddd3c7f74555afe491e48b1d1849e9b56c5a55244a535af8aebaa14f1cf5f05abb45cd5b5d0f8b7cd50081214f75c0b8e354cbf0f1cd2259c21ab5b3c918e7fdd5850210e15679944b26887e58aeb972b57f114c1a716136a6ab04b964d107096ae0e0716feb54d49ff5efcf3af422de1fc9809534c814b4960130d5cbfe4d8932a499965d2fa48c5604d777cfa2757f977fa59bff3befae75ee9630c8f08e39f4fa3cbd58c5c2562a900771de93b91c842165c893ec31ad1934105d89dc77d28adf574ca32afa168cf510fe54956e20eb60c14fff9e1f989ce41ec3f31a6bb7ffaa78b379ec38e32447a9702b60cef411b6c0f411428c38ba220d8ab7115131dc3a217555114c58ed120410de1bde84597898e79577ab079705e1bfa401f0dc69bd4496652c21413299c45ec09794db82e40ccf6d9007400b803d001815b06ee1f707fc3c0fdfee27452f13e8f3a93706ffe99bec0195e0346cbf0cf91c20e030dc0e8878f02f617ad84485e0b5700ecdffd8cfefc37fb8186f107d90ef4e72f55d89f1e00fb6b9914b0ffec2bc0e81a0168191e03cef8403b69a200387f9fe8fbe02a8b712adf2f59e4839b60083fc648533cfef99c10640464b355c68a4105c157650f5bf1607f2d5b6535196b45619407c226722aea64590d06461063f6906479f8e73db0558ca130d8aa69c06c70436174096d9209c199ef18013d8a124c82916e8e9f619418a347615b0d6018d03c1c59f74bb82a4325ae1a3d0a08e5b6cf0e267d76797024bbc4092a090377891c9cad444e1c068e9e1b59514fbd3908aedd84ec65d740691826fde8399215c5443d5554d23bf1cf298cd25a4fa7ffef83c9c86c8d399be89ccde9fffb6c64b80eb68772103cb30852ac6c19d9833c1c2959cacd404a37096f87c4285709ff5ce4c4554c340c67a298ab3a1b6532930dab0dc34a544a6199b38189ee767bb3c1fe5403829783392f87da2720c680ab98f01d1e4bc4189dfa0e56e2761408cc9270d5bc37fccb646aea69b68265ab2738385b25f1e94a72e03a55dd062becaf8413259280ab1f4a82da2f2c13bb46d154e61394a72492883120f08fd71fde288e402288242c9851410959d4e0d420017dcc99d99431146a510ed2ddf687c47113dd08bb9cae6b156d2f8a3918c6f08c731b7cd14cfced0aae42dcb673421c6814fa17dd384515bde8a9abb6dfb6fa63bb3222eaaa2cfab6224b452fda40f5b768411c27ba4e886ead35be287eb5a1b76d4522d1841d43decf78f75e06b3975474656a9438ab41cf260a3d97833ee8b9086f964945b8793a543e498cf03be5390ee539ae0b85425daf84425da78333eab7d0caca8b7ec6e115d046f71b8b112b97e566dfba6eebe2ad222efe26e2e26fa20c9554dbc37b297014853e56d157eebb507d517773fceedb2b22f45ecc74c68b9fe3cd3f1c72a1f7bafbc3e5b6bde86688badb457547c498d3735cbc7987e8e38b3e6e0f93401bf1b7cbf2dc679813f2746c9e6744cd2d99e5a23a4f87e87b6c37434eb46d2d28110b4a2c140a85429d0793c019a2d7bcc69c8d2fb2dcafd4c631a37794d13d4553a85350bc1842b93d44df7de8519ef3aefd4577fbbc5dc7ddedf15c77398563e8a1574417dfbb218b82f23ec6a452fef4a49b697c2eab7c4ee18af259ea087d8fce880e87bebbeeaadc9cc2dca7dc4c512ebc02da08c527d5aff5ab87a372d1ce0c7b16629148241279f18777ee22d1f622fb436ea28fa2e76c14dd9cc2f166eefbd6fa3ab6af37088e363ee7855e6483e0f8c3b177e1157006f733b19fb3f041968357741e0ee8a9a16e5aa6a1240ade538bc35019d41c43de18f70284af414e2dbd4c594f456a495a27da088cf7952e06ba827a6308b0f806ce0015ce08e24e9ea86a28a5cf34b0caa8b926b8775a2a8144109382b850a7699af5d1612deb48b6eb8ff429b6f647fa912df5477a19525e42c5d2fe48a58a5370ca7502081e91debf64657fa4d2df7055e9e628f0e8fd2361e8ed90785435f770889684bc8edbacbc49a81ec3bf17fcf2f12184f00577abda0453c0b9fa8ba1d6a008f627a265a9fba9781a397f745db724c0b3237583411d82cb63f4f126dec4bdc90bd74cdc890478d732dcbb0e428dca6cdb0d996e1a0de3b4f0e23da1e617ef86a56e895aa8d8e1e3fe26f80989350c2fa5da4b0aeeee1e1d0895be0f6f82bb1114f126a387d68737f126b83e576d9c0e33582d0fbdd1e4829970bc5aebcd9ee7793694c6a7f5bd478627b5f3c1fe75cac149407da7349a70ea6793ab9a5cf4e967137dd311ffdc84f326977f261c6ac2311d9126138e7ffe2cd711130e9498ebac49889b58b09aa9c90616cace048742af713ebc099eef0da9f3b38965126251371cc98624c4bfee75d08f376b3b5794031b422cca5132e92d19d13e7a1f53611e43bd7726ee51efca546f82698c5979e23079450b9ae94ac81392c26a56f159000e602a59e3bca35794e3829a29c1316b3a387e7d173daea24f6f4ecd14d79b359d95ca16aef26e86d787b6832302b48b82fe2a3e2a3ff0678e7faee39f4864724128045dd11a573515744c2c9310ffdce472f163ca7195aab1a8818dc9653a62d21129717fe21fc5a257cb70528d7f24d61429f1cfb14847f48a9f2911e9f8f7f20f04824518df62dbf624e6e39f8b62fef913187f623e2227db735cd7759dd700100d4a4b0bb51331f178fc730a218c4c444dfc73d18e7f2e5212f270c42b82f9e731469112ee45d99c538aa28b442211f45af4026520d004c9e8200802814c2151f4700871187fce64e3aa68b2d15e1e63aa1f471f6f7c938d89d5821a3f9b58d824c4741363547cee0d5d897256d8e412829683b3c975c226970faac9e5788666117cf4b3d0cf78b5100741ef8c0c42044369897e4e2621ae6242db31b15c05a3e6e180d0d239b51d1a24a8213226b41d1c84ec6969f807e5f5c7ae86f137b9443926510e1e02ebc58c293c709daab3f58355710e9945321c5a136d07c28f31c608c339fe796b3a3aa8755a8f1e7b82b524aed2726211c6b558d67a341eacc1b0ff6ba314e4314a359a51ecf5b4f16fba921b1d9b24ac234526111f30c42fd42ce3b4d172b497a6c4a74da5fe49298498f4ed0411c634157a9068bd5ab97db067910317769c7ba7b7803d138d604a82fa95d52f42b48c1d0de3cf0587b226856bddc1fea5140d252d543c4df6fd52533238a8b9baaa71c792b73f892ba8f9254257c50b85d09238e03a5565be8f080cfbc7a05d0b8d7e41093fb783105c1e8bdff9e8b09459d70cf49436ed6ae9d4227af1726ad21cc5b4b2bf90263d1c1a3744c435f4f4d25067646444f41cc771b666f4543ccde82281f03bc8d2bdc771f04ace7beae1a89ef7ddd3af9ee67dd7799ae7edf06e7769c86baa51cec391c17f516d37c3ee87c4db96a5a16e3522d145027acec3e1813ef414f4dcd3f7ecc88a0afad0f53cceb28c7250414f411e08f49cb703744bb252209dedfeb8dbde0e8941de1034036d2a2edb2e6a080d0a89a57ff46ab7657aa7d34b644385ef4d0e0c157e0e0d6f0f6768dc54fbe73f648ccf2722ae239068275a784cfac79b98de42bfd870c477624de768833d12a911eeb82abb139ce3c499b84a62f726d85b945e6fadeaf6dd13e19f07f12de8c455a09f31dff11ddff11ddff19d28ea13b885d738eb080fed6ce19fd40979cc67efc418f71c8f792c27f4defb8354d9c7a09f69fc4b743d275eda71104208bb8fdb16e347cf73628cc7724efe21e15fc7f5b413ecedd35af40f3c4288b7bc48f6568b1058389ed734709daad9f74bcf8638feb926b71dc1719594104208a5b32084107a4d065df008fc813f2af9272555c7a927f9f969e8f223d8bff3806193c9820a7b78a64dcdcd649b51441163a0eba77fdc210f4f280a2021e944c61f1e27ae8af15b9c74617f4f1ec1fe9b4c025df0c725633122ae233a35d853d848f6b404758bee61b370762243ba9b04dc02ba7c057fa08d427cc98feb872789c80304f260f7bb6a49a12b0ae84222954aa54017fec0ea9251f8e724a055b0a03daea0e6fe899007059b4401240831e92383c8c9d203ae53b5082fdc5918a1858b60231361f8888cd3f89298043efd48c5d320c9124778638ceee3d165234e74451cff3e97c1a932fe7974c5232e13bf8f681127856127c3ddf0da4e5a49fcc6b9fa8de88a4748506764fc0535a79608d189ae1823a375a1c2185d31caac145dad5d17964955ff4efef1a04e195d2d135b26bae2ed5a862ba9f083b083bb07118c73bff3c59457c6f8d0afbc1e64c2580797b93123d3c30303ad4596893d91b941836edb06fab4cf16c3150cf308c31818a6ba2afa48a01af32108d44d5141fd65afd98e95c1f79e172f92a9a39b4f0e5991529767dbe5d38371198c8371b1ecd2077d0043d905c8e84b1418be17605ec8d1c019056534cb68d0b0991a880ca04e5a88a16d8289ec7bd0efe635b2cdf952ca99c5abe7093d187ad945e570282f74e230f1e5853dfec5a726a8a75a84e313ecd12c3c0289f8177b62cc299eb04b273406ccae916ece3f55ffb2ef9fd9b77c797dc498f03b1c2d2a7b7f99236a9193330b8e3efdee1838e4cbae81b3cf2eb8b3cf29b8b387fb27ce3170a6bdedb13dd6b2fb2f25a811fe765159f6da7dff9416631798883818461c2c1f25234e0e50e0567dc430424ba09ff18e8a0ab7f0d0f7c3f9f005caa1b26afc7f99d3070d1c7f38fb33ded073b95908ecf2a79cc20d6371f067e2b4f987affc637937ec2726fe218dd8ac562b2b86f082284458dce9f99795020bd2e0c2c969b16ce24d5cc57c7e7a603b3cafe8ad586bfcce55f1e61ff2f3f85d85a78ed4550bc0012c9f9e80a795096a8eb1d5134700ebdd665533e445b6d464d969be7f8b9df7245f426fe922c0a24f0dc30e17eb7f348bf072b5764e24f4223bff627cadb3d66ea6b1ab3366595fd52784758849684dcd11c748d6fd7ff3b4783eee31a746e9e5344dd3344dd3e69c53b319b2344dd3620e0281a2a5f9f1a64598edc69c881393441c97fb4498574eb4c139b5aa101f3cf5e0d8549914354236841744610c58de0c61b871a4c082348801e76893dd27055930c10767dfc9c1d9726aa66e23a5945b116aa6153ea069325765f789363a44b0432399c71c5ff688fff2469b8f1fafbc718873b1a1876cae2a7a5704594a438c31c61cfe4e2460ae60fc97ef65b648e54fd1f817396996a1547b991b31a12052cda45fcdd33dfd846ad9ff0b8d1b7e8a9208dc084229b9d4fc6c4ac2d1472b453c30bcb97b88bb9fa568391e18458b5924c5d173b1e45d86949e4ece7d49d2d17fa3d7e4881447375e1c33de21202ebdcf6ad52252131fb4052bfecd2f1ec66fed5dbcbcd9e52f6471b6f4523e8d9fc507a1a05cd4e8e3931e8ede7bc94d6e72931b916ee6c103cb3c7a53b410e5e3e823e4209c70c209e788fbf8907b149b47df698fa23d774756d4f9f0559ed3a0c70088b9e768c7591414eef6d01ee5f6a02fed8fa95d498728eda0a07771a5cbcd3ede0ce3b45205b2c851cc6ebc3f22961fe3c79b7f44c85ac5e83d8b4ea3bccc108f9e64330f4cfae8e160794e72d2ce39e7f778722e994bc65daa652cdfbdbc28b707cb7b2ca491ed2187281501929ce68292e6571197511e3541537b144ae93defa5f62dcfd9dcaf193ca78b17eff2d59eeae38c347a172f5840f4ab28f45dd2e550a76f41792d7a3be410a5f7dee37edacc63be0ec8798762bdec3dcae4b8110be9577ee4754fbadd8ca358885958586c69a5fb93cd33b87b93cd3c7057934d8f8820382505975ea2a03ca4de937e54e24aa5528fd2b7c4a06165fc0bc28938e27e1b0caad45e82be317dcdc6e7503e77cf71a7f89c0726863d389497168a8903e5cad408f1b438e29346a351af7c564ae6c67dfd185b7a5d8babbc0bc5c4b1e3b438b99f0958d524a9f9cbed433b9a821b0b368c0167b8caed534b9f8c37b1ea176c9fcfa708ac4ae70f42e0ba4ebe7c8cdf0d5b7eb43e5ebaae9fce6fbaaa39035cf9c78a5008ac99d96c7f19e591ef6e10dcba63cb2d965e302eec74843b62cb9b6e49c463525632b692b4725e4b5cd115a79472ae403008a3bc714d1c57419c3375f07c4d25383e10b89a0fa18d7cd0c38736cec2921563e2b671f2c63fd99237dba3b66fdcbdbcf9b41cc77155febe18ad2249b4ee832e8775f5c5568c912c9fad2c71240b1a41025f60842fdec6fdc6ddad7bdbba5c319d43e6cd24228b6c42a8b9debc94ae8869af12111f54c184315c01b342cdce11dc6dc08d451574f0bb7852ad568b55e45f681c913ea29ff1ce4206b6e2fcec91a0e8b71311cf4b0bf714b0a2095a059bd01f8435a1211afaf387d5118cc114a4dc0c9f6088069e924d7dc30cf0e8e69485c1fe500006c869e5fc6301e7472389b29150489bac1f431f6df7d08abe7a2111c521af33b2bdcb77b9815a451eb75efb07d5a1ce871e12f2e7050269e4adb0c5d3e2f916cf152e77cdabe16a90c42a3fca0f3f9da7d34983f4cad9862a5ffae7b4e19443d8a95d43da48bbbd211ccb5b5b06ac5d2352b953041cdc30dc58ece8e01484cd6821f27a48a3afdb0f6a4e61ee67dc076d2d5e3528231e8304b57d3bc120d2df8cbe633b2ee8cfa6b9f045c8e3825635815ce80fc290d49c8a6fe0812bc60820ba606aeb412a2725a557ea504a289d377ad2cf501d91281e5591910e7e34dd653d0d7751f042173c924a451705d98ed6538dffcda4202c055d107605ab27069119f7851b3491f423021b386a859ac411df3dff42037bef500c1c8184db8671d930218888d0870c5cbf24a1048ffe61c1b0100261f3d02494f834100a04a2eeeefeedee4e6532ec7fc3636834748ac96ce84bf91afaa1bfcc76bdfbc2dd4cb79bab7c02e2ef4bd1efc32f29e9129a882d718317f6f7d1a1a7e2a1cd13387c7c331e3b16fd544522db84e873c744b30d35b77c0e2ef1a1bb847fee4374dd36b1c4fb6822003e3419de2696e8259ad8beec03e043e31f125dc3b1d3e4c71e03bbff061ac6a92341cd6f27587eb45b0faa7fcc0d66c0b97e38b656ab8d3176d07a1fb2d9c78741dcf5706799f8707cceeef8707c0bb24634e85d293e1aedb29e265bc2070f6aa64b24c103051e136e26e4610a984d0c2225d703ae5b65bbab7f507e9ca236953647293d42c8c3f58bbb4f1fa9ce3ff95dfd93926eedcf1d91c2496848e0f933f1e6d4d359863a99e8307c871243083b1a24533eb5d43f23a096214f58b63802e6bc31ba995f28a454c69038bfe0ac05e23002facc0e1171d699a49ec5ecc6f04f7e5dabbe7ff2e5cf6f2c784004c3afa23e8edf2225759526bfe4aac6523ee775532472914886f08c9f5660778d14e6a0b780c65d0c2aa51d6f60f8f3f68e6f6fe0fa8525fb89314bac6c62f8f7cd39bf9d9853fb39a736334dd3b249637637a8516630cb2e2ade8634cd8315ee37409539fef58473ca50b70c1ce8b0b34195386b5b60dfc2551e5d51561535d3956ab25c25b1df27b4514ae939d96916e5b9293d1d100e3530831830cc015fb359a759958fd6e2f9d2420eceec630ce0eca605c5a2a3fee93dbbf20df3e3d3afd01a3160d3678993dd54a15216a5425d75dd75ed66f7f4f3c6930dbdf70454b159b2622cc2a22bbe7f0dbdc84a26b96390f5b3a76b409cc3823bae1d9c210f5482e3470367c89ad94d8b21433460cfd00dd3b31b4fc625bc1b8b55417f0a8e72ed84212c1d323ce1b58339d4204ae8810cb8000723456e9e9c66b480822bb690821bacf8020dfd2aba9f02f41d7d1097002610e10a2ff480480b6240436f15279a2940cfd1df2e92c602968341b78a13bd55509a2950848cc1093d34c0c20c4a68a4681ed71da660e2240b78404233c5cb0dba60051612212cc0020d12f9fe5f76d3af1e08c19946a67ee35354883b0b2308c10b4042cc553967370b40428cdae0ee2148956206c9e2e906f25d4ec5d3388e17e0bd4297ab60e30f07ba70926963a4e0fdfcdb62ec8cc8df8ca034dfde69124d7a18912245838488ee1e5044bc4483ac13fdb6031774b394e285e347cf88f910d48120385b22fc9bf1edc80e6afe68075af2c518f72eccce6357dd76fd421dd41c71e8f5c0c43d408f9304deed413d98eb9fd688f80dfa687bc06f0cfaf62014137337f3c0db8f298dc88b82f78be13030669f035d11ba5cf1ded3114de3ae18f3b5bba00bd27c31c679d0ee1fb1c8d0e5ab28282602486405a74475dc514841165efdf045a77ac53def4bdbc5550a478a3e79dd70fd9267ab0a3818853b8b2ab4004bdc51307283e54dd7e0fe61fca9e7143bf99c3ab60c8e4c0ecfab07d63c51fc34bc29fde89894ef2d703f07da06bcb96903eedf40ab48dfaf81b6018910b940ab46df6f81b6015b45e00c2fd205dcdf80b6015d8d05dcbf80b6018fc019de3f816e95e8fb8b6855e8fb73b4ca7b279c685c810005b40d889380be016dc02470060c0b795e9af4d0739db8195a86c79ef8b8162e071e6823e6e4f0f470cdd035e2135a86bfcba16b442d18619d68607c8ca598b3754fd032a985ae21b5d032fc73744ab0259267e70030e40c26117f01d682640263dea8604702b094597e963c46f40b4b8fd2c321fb85a3e58931c6d9d118e334306cd39c620ce4a9a697c9ffe12c83a14cf4267086fbe03d2f445ad0863be9a15504daf0d82de28236fc8975411beef3f0880dd7e2c567cf8133aee81af1082da309b411757c68d2036dc4d74b8f1368232ae9c1490cda883098c725f6890fb41177761cbb16d046640267b8c71c6843e6c01947e81af2082dc3696db991b2dc187fa2bc39f1aedcd3853fd50df84487e726fc1152dbbf9b1b2dd3c4805da201bb8a8c94d61a7f7874a00da963d279411bf2b5bd94401b5249a704066d4818075b026dc825da921d6843ee643b4ca00dc94432c1fe3207da9844e00c7984ae316dd03274e25c01f637e9bc26159385fdb797923c4c1260ff4e09eca70ed85f2e51b959ba010ed85f5b9286274c2419b0cb32607f2999e01b340c0d5a86a13f7fd2ac02fb8f6609b07fb503762dd680fd3d6906ec3f6dd03524185a061168433681336ed043f0cd540176c9d3695cf792a706777394999723feb6c59f18234fa75ae3cd4fec4f4a29a5e48214c38d44c38d7403f68f3732ae8007fbd328bc1d14cbf6f690f6330e83c8b095fa174b5067aba30320c2a4f40635d8bf9b3b5847632ea6ec9ce0892bc98daa718c8a4d111cecdecaf1972f991d5da58a2eeca02cea4dcb88ab0843f1744dbf59c598ff1c9760aa04b3228ceb505f6167c518da7ee39fb79c080e6a9e2e04b0de6fe409faf84d847166b73b5edad75b11c68a9ae974619f4788c09a3b929302d7a97a82c9c82cc1fe3794c015cac8fca691144f4b638c8ccc890d456492c47ac77d228dd4dd5073c332228e90f17950a3c3b1668dd08fb6619f840d9208414497b4ae5221880842e6066d9aec738f0a2103b0baa8648d74964d2d199a1100008000b313000028140e084442c160442c1a4621f614800d92b24c7c5a1bc849902143082104000800000000000000820095193148ba11d894ec0c8a5dd285b1d7e9d7a5c8cf2e6092968cada29498d06746984b3e95cd6421cc155a99f6b7aab007534d10d5782e0f16ecfd71847e2573eb38baabe2001d0376c66d68a6b950ee0665166631ebc7432efc9b28ccffb883355ca21abeda9555f9112444ca18260be8e19fb6ecde7dadc23daaf17cb1b298ee60058fa8c69b782bfbd1e929772d0868b2df88321da822341d988611fc9dc47fc89aee831a6c13625b3fbddfb3ec88af0ae43ddefdc5de7fef8ed058179d68cc7435fbdaf81bf854bc95b328af8f35a803ce84ac73e5a80570f2573a3f504ecca269eb6c1f06a1258f6e1d52ba5b61ea8d56df1452d0494e239c09609a9a5ba8d1c37993337e2639b58aab0b6e38c0dda9711a3f83fd59ad5c3866956df1e4b020b08e66ffb0557360fabcbfad5afb065e4d5bb1260970372d1b9775dec83001f27f1dee6a9f18466614001d9130b9f2fe0d1287649e684c3091891ed7544aabb0d1d1819e1dc63a36e4e01ff33b4d9a6763ddcc267366f702845ba06fd2e527016f08c8945e8ea05b4297e2234d7bd431ae13f5a8548f50b49465126212d32f078628796783d5088d2db03efd5bc4be47ff49c259b351d67dc68d962e7518b0309a19b6e0eb10b5edcfa546927913aead8d52ce427c57c63a6f7ad1279cc583ef998a510ff744b648ef64951cc8f9b2e0229654c73a33f5239b42a70545c3a22e62b8a04e8aeabc6d148f4a9979c978af7d7c36cc52bf6ae33aa365bf5c2a33daca11361b4b82b9f1bbaa0d8ab577609285c2d469ed72288f91a6ca20363418a3cf0497d753be09bc5e8fd385bfc70dcf7b8703727ca24c0b8104994af7a89e1b3eccb423703d69f800872186729baec47a505940289cf1847ee2e9e9e30a11a426825088797a2cde670c738d26ff9977d69e5dc1138ac8d78362492c31b17d09656c66bc45534547f19aeb872711f5b5cee82904365bcb93cfff3fbb09bbe1dddbc4484f5eeb2f0044e7124f384e3c1e8100c984d727160cc118a3e177746083b400847d59bfd9f8c5f562d8eff346da6956cda05816558a59e47256d743f5741b736bd2e8af07aa02dab58177876dcaa1c6012b0a4dff5c9594e21e74d6db70fb8c51e419cf703dd9a9a568e19c10750d8d456cd78f1e08d14ba680eeba893ccf2fbcf93747a5121742911116b92a689b277b1483043c67c6b0a63c8655886d37404c8d1fa12acdbeaec3a7f73953c0e6d0d05c66df20373eb4c7c58f72801e81a03b64a9bee4be0ecf1cbb0a704e3ebdcfbf0ca494b4d5e2c7b68291d89bb75d0540f1bfd478363097d6fe2549f885d8a267be3d8cc7a42b27b2ef2918ff45f32c38c4dd0294dd471ec57a24e1ebf45a17ea2e3a726fdb8dbbaffa55af84d9278f58d5b1bdb20b5b4e802c5032e7274d44b433489cbd3716db15772dc9a3cb37fc0a9a41c696ef0e442f7b096bf839c6682604a71f82b673d98a4219e712f49a68e3b3d8acfe9966434c29a5b65cf88c5e3fa65ac82d655874ec5177c57847f7a2a68e3f6cca24f043acfce594ec9389003f134f2b5f1900308fcd3419b4281a78b1116156c43664587ee02a385fa1c56a3ac5f2dbe15f2f907d8be5c676cfb22ecd8764ea12fc269445294013b9fde5ff1cafac2439677cf34205545ed026d2b6fe2b55a322dcead823dd4c39c1aa9e039117efcf5a287179a6f8c277247b126848e1e50e8bf50f4cd1c5cac2e7658fb3f8cc4e7c70cc63be425f1dcb7ddacbc3247dce756a01af5cd21b05f6ad35833f5de02521364b0c4b1f5d6a9f05d008edb1e9d3dff8c56483f57e94d1c90d34b812205f4479d1ffc168368ad260b7b05531496a5e629a60da65a916d42bb2f093071806ed695d03c9e56fb66f9a34025117b9996384f8a46250c0623ef28da9612ba9250eaf36e2324805a9126fa89aa6fc0aad0bc2018b45d771ea6250cc444b0c5c1d6393c060a6f73d5d390dc77262683925b9e524b23efe3dbef2838eea45b4ffb89b6b5050602f6231cb27f43d76c52aa369a274be3188292385d258e763202900f4acddb217df6e92235e799530e84e92f7bb490efc10409e8bd69e1da2cd0e6ce7451818beeda2071342bc00c74883cbe5d31d4438efb00d5bb2befb5782c82c77f8a27c35faea334d1883ecfed52b8f15e3e292ed3d76a23d67da25f6a5cfb01800241268ddbfa69f3cba9c57899cfea5818ce4c3e4fe75ea8f120c2eb7c7d943c59a785ee71a478701dcbffa1d5a005a267c7ab66b44f7af0c0be8cbd37f5c3e50c729070c18c05f8c9003ad5ee1c9d9d1eb5fa9e4b84d055deef293664610c81d6adb7b0c1dfaae30d65d0dff00c6a58baff792f006d5cb4eb0a97a04dbc17a0fe346526ba1c9b232b0607fa84645ebb7473f5cb683695c3902c36a71417771c7fd7afb231a176559af2f0dd5e3f92c2071f4e003c1abc5a70aa5ca788ef46fae14253d8ae2c5f30807e407e0e46bf4239e01706f04c092f78880887cef8cba022d3d6e2d85c050820e7aafb54042fcf9171e52ff8a5076f6b4eac48ae27b14d5099fbad7d724daa64e34147abbafb584c6ad4d818aabc515095260b94096227404e5e18337e219f8a0a1d4d60937bd31e2e1e45bfce3758af31d4f086c483fd33dc74c3f96f282aa0d06ca11cffa8031519dc0ba61f9d066e2bfe2e896092d6001702eb173f31e9837a4994dc4741d2bb3058976ad463e0d6a63a70c90dc6574e86b2cb30d1dced45fd4c7086a952f765af53818a0999ff0de243b41220dc5b51f65b3ea7ec079ae8e4a73aada140632a80ed399c34d85c66758622e81daaa5a187343e4d055be231d2e8351907e9d21f296caf3d17834372ed7e6cd539da366d2b8736a16cb44cc8d2f51315d03e002e16b49726b9455ccc39fec99d7951d805f667c8142c897754cc77a7869f235aea6799ce74ad622cd3389eeb35c071446f3f1d88d50d52db1b675e584a77b08e933d955b488500a02cc952fab0420130f261cd15f7140dd1a3ed9e3716712594c69a6e0667ba366aa0e7f7119a0c1130a3c0da1530ff78781997f1dd61a81bcaf4da33fbee4b192479fe1a697000b28efeb1ab808b3aa39aa83a519f5b53d615db5928370b8bbcdfb1a085fe3e31006668d59d89bc67c6368223a13ba97492ca370c1b29334c185e973d05734479da48d77f1bd02f4b62b3243b075eaa694137060339ad0e951505c76dd0dc847561dfd5be33bb604f612d22c868de85d9384f0b3ece1e7caf61e6bad84e17419c801669bbfcecda11c56219a0a0f5e14840b78041a7471c4ed8f02bd14f150b78ef8186585d3570ae6282d85d292c2b239ab749cd98ad223f87add41b52b73bf4ee1a3ac49c9c020bec6aa425f15a7e671fbf4511b06408d709fa7921820bdbe7373495058858cd4d9f4312a23350807a7a3dc4df10acffd2eed1491d51c24590aa4f9b3e1c8c1120f139ca8dbb0b48088e74ddbafd6698eb205c2d8b6e0fc74dadad2d9c7fe49317487d40f13ad42aa62828d896a741bfbfbd4748da9a39d3eb19513121a4f935d54b311b96abe9188487e5243507c6622de5b74158da62c0ddbcbbf8c77f8a5169f6874d0b8d1234b8ea338df0e7509f697ade0f3b379f0875286250fc418a2c90647949ea51864485aa6aace93ca2eda94742ad143301a253d42d4f423da74a74a4ed3cc9b3db75838b05818ea9100e8eaf1eaf2c6714b05f62d6d800b95530a832bace0c91d8dd3cd02241aebf8118b32d6c846a012c6d64c9788322d7d8a0f24795ac0f0237835724d7f8467b38ec1c8646558618e6a4f01a40d5e6251917a7c4636579c2e031457af236c2299bf60d79cacf087dfff33e38aecf6583f26d684c608d97b0c9646f8d6358f918d9b5a846da60e2de78efd531d19e3120a2154515fa0666503424c320ed0b90e9ac6c88abb88cdf51aec1d9a46b6865b29dd8a398a7dd1b44ab0c0486cffb71ab705ce79bb81e39631ac9c4fc09a48e31b5edf8572fe70b67acd70aee374c4b297fb0651be9102c9687a32b5eacfae5f87c5cd82e3a0dff817d2d36d381f1491bbe01cc16ff0cf2730f4061afc36cb00333910a36dfdc496c308d9dc8b253a43be43f400b144f47dcb1f0cce154f9824fbc08d886e99f833d87a9b41d0e67e7e63ec7dc7896b6e254e1138922b162e874461c401ae1a866e243c1697ea2a21d1bde8543e3242d0196ce3a3acd61b25fe8bb219c21ae10e54a8fcd6310fc11f011b26b75ba1c3b24c6574849055eafcfe0ae8d07f1270560d067729053c86fa1a0921cef14a0fdcea8df042c8fe7845c3def0e802ddc284c3e7d461e1f3e80eb971d9450929b8f5cff7cfccda8f3a41996f1e474415c370307d8e05c965b183d8e137ff5d324b092d902f8f0de9258005ad75ff727549329c9b1a8bcbb67ada19c35ba0e8d0886b942566f56f372040f679e4fc8678a3d6bedf56c682540f9922f5c1c1310cdb9820e94287879a2baa6234a9b4cc7a3aadca92e5a877bc39488dbd19583e2778c0622a7bd060312c3ef5e8a378ff559b72964fb5df0f46fe7097f928d69bdc055f5efba7bc1f38d6a35a6a21794aac67db596f94c8658dfdae4664c6c7c9f9b204136fcb9329859c4956a89e6f6f15747f92bf1d043a0bebb1d290f33ec219d233e6bc626b3b6b305beb0426a7afd3c31787fe55b5071def3eab06fb6a20f1b23dfacf10f0d343dc3c088389e33174f99bf3dc7251f3ace9b7c9cf92f6c4dc1ee0b7b027a6b76ca92055f3c60cff7944f125227c245659386630b780e9b5932d17037b2a9b913ed52a7b00958289aa84afe4dadd508318640f764ebbba7f5a1f92ea1fd11e7f9fbdb0a3a20f283813f7b77e07f8584aac0fc032e8136110682fb055924022379a7733ed036e438ef0c12e761fcb3a120508991a72291c83ce29fac4ea1e8ab6b5c6b1f0809280c6d6a35a42fec97361b1de805c6a46ad2fa0af0c08eb5bf0429e83a4c14dea718b091a567e7b408d49ceba06b95c19df081137b211e7534d0b393d245aa37a3a43667b104c0704b787bf49842492439fba45d0a5ff453cd421a851cbaf865de85fe352225cbcd84359e3640589266ef94f74c93595c6e83c7cb2870f2a0757303ada9e02acbdbd875cba88f1b638d5536e704a577465317f38444595ededa4779c05b4fe82c6ab16f60fa1a2bb0cb7d882a8cf9de1d4819981461b5cea03ad56177217b4287111127d8b942dc5b0ada716bb7441075e87c21c910c95c2e6d3a20a86c26c521459a66e4bfc6fc10b9383a58bd6213ee27398c43f00550b5bc902330624a1beda857319d8975279c0dd73fe0e16a44214f244c37232bc0108a57fe3138a3e7a4a57200be63a660d545656ab8c53ebec28a5b1859df0bdded441048a4ffcefaf27b8ad6c1187ed531fb238200ba3589bebba832751a3b95bf402dd37b181ae0904960f9eac8e1de72291d2bb294f984d6a9305c79883319c582e75ffa7c73f624106d8bb935e815a4f5377a417e0e9c92bc1e0898c7a0659bbbc0d1b54adc724d671ea3987820be24ecfa5cc4fcc26abdcd90ec78cc02076379c66f463798a50afca438b3f4fe91d6c4b67cff1d7add9e0e5f232cf5bdc9968861091b1a24bbd62f42425c989d9d34aafe00d4533282b9f522c032e86b7961db8f12cadefa00890a5bfce112732af58e61b642571c88c6b33f2028ecd2a4672a2542c492a99481b7d2b700154041f692598147466f5f47e1864bec5d593a82c91ed40304ea49ac5ccb0dbe67d6486197d359bafefe1562a8496d1293b22ba7109f59a45578b05fba2541f146016cffcd0e4a67268434fc2fd1d049579c86d95d56a1be046f2974fdc5b487c2225e107d2816affb41a54d5a5e65f057f53b8ee8d53cc9debe4e639a680ab1195063bc370d5c90d03000f57c321bc33383b0604d24ac20d847d007e5d6685df6253c9c43e7c0d40e02a3d84d6f0dbc0413a0947f327079ec144020a0e7559ca994236cd72fb6305076b968dd1504d20d1cac9164782cfe99e2b587a003dedbc3b932c825519135bfd17694b40efdaf4fa58ad6b2a313b2720acee4775f49f278ed36a21c521374861841bac610ae27f11f9858a7ad28a3644e43ca71dd40759cedd8b647b34ef0893135808e133945e5013b9cc439d1f6a5afc58e33d4842a0d22d7d3d284f0303d47875618693219820a31e3143de5649c94045ae7f92878b30181965ed8d4fa60358d3546361c780ef59d005d2534d3534905206987e192b95305532f0d6424d358c07c13059b8dc17c096a1959daf482e830ccf5fa0be529304d9ab10d738ac9ba7eaa6bf11912e8312497b20d44c14564fb6c111d58e6874bdb178314ce907506aa5650c305c599b90c317125f16445c96355b1f00a52b1bd61ce5073c8772f1e4059c0ed31cb9f69b2a53c9acb13b6006d717bb0a795c778a5d438d484ecf7a192770c2d3e38ee9e4d499f7ce23e91fece2baa60adc9d39db6006e000439bf4565d6a832343847fabf36cd421df131d14ab0ffb2f34162701fb1a5a436935e7172069c3557323c701a18b603e64db5ccdd7f4c7ca7064a7f1363653de076e63f0479a9102cd06c057f93ba5b02f4ac05a38dd501c8cf766c6a70c23271bef334c4bf0e1e98a05790d33b717b91baf2e60b868475efd6ae3f0eb8ca78b4c23ecc893c8e6edbb20904eca70dbc25f86b1d30cd1e51648d32b0ef6a674d9641728d415b244ec8a9ec9b149eb2f9a5d38bdc021af62390ff390f452bfbad5c55c5c0d856c68f9988f2f723e80157d614bc7b49758d5d51e12a5265c45f846e1c132ef0958f0b6903473d9a97bd8d587076ddcef0b8f482ad5b29b8eab46caac985fe72805a0bb203b217523e71ee315ec607159317c6a2b3cbaaf42fcf4d3b1b282e01040759e745c594c050b552d1c24928cb88f0e501b478bb63e2e206ef12b39e22f4ad946c79f0f70c4a303d1d1858553900e0f63632ecde46a0f0bee2421896b1563aaded90e882af124f1b5178c97ea3bc57ee2a0afd1adb7ac351e23afd9a2d2a38cae18581462c6ca5c2812eaa0f03e28d6e9178cdb89b6ec535772826489177dd670cc4184db6255b1828cd05767ddd36a190f63d64fe78f39ab012f7402880cfd836b32171f66960bb86b947e51ae9e305f089d6bb7d38a2f9f9af84cba19c933200265f883307196a030ab9a33ed1898ffd36113611ced49ce5ba21dce91bc1a28feadcfc811bd7ddac20ac131ce21628f2bff139069220f0a39af0acdbd2ac302f2bb86c44a89cd741890de0c172c80788e4878f6022c6c405084e80b5a36116b2b9779e66f2ee91c3e98e4a35ab6217f18dde669bea8bad92f412a4032ee7e6420412a040e6c2c99da07e3b9b85015df75aad96ff735c8d5b0e42322b7c4ad68244dd0908cdacc79b431110589dc1d9ef71b68d6705cdcabb13ae12278bb5962e41c4baa88846977f87c120acf9cf5adc28235c7d712137188fd4486a0d880ae7b77655f18549ca1d803dd34c655f1d7a8fa6d5edaaff5aa16fb4f4d71498aa229562047556a418952bc9268ef6ef4aac6a66fe8bb9ad51fbaf94d9866172c469563e9313e4137c6f7ab0c8b306ee0e1b838ef0935d95aa671db22c8b99d768859e5cda5c0069647394f3cbe2bc8261c13f55da0b33b2525a303757f987d83ebab874f939e0f21f4054a3479814e5466461b7ba3eb10159e2f42151c2202272ad4f58e52d4160789707bbfda58bdd5e403819c36e48ab993649cdd137a066d0d6d138df3972cf7a545331b6ae27df474c857680e5f8a3150ea40c39be23015d0f053c31c56f8373cdc6ce8a993b0f57e3ca7d8b287a4a710c77b0fba64d660907e7550196294049fcfc46d32889e92b4d3615c454df26b8e930642e2584c4341554e22ea8b935b1bb69829c480d3a91916debe242cba1249e02dd342d9e8e4206f231d795259d3a67ee1d0b9cc9dc8d05bcfb3c9884e4ba1b8f1618a07a63e17f16bb8e843d2b098ba58d030a266cfebdeaef31ab8f43f8093f2bef8f5283c95938c8b7d0e1b963a30cb607a6ddbe8c3a5aa512276eecafd74cf88086b002834b610ca136383b2040d285601042435260d9735f12ba6e70349dbc133b71f03023729924a4140cfe0737734685317cf64f6a33a85bd62ab7fab3ea97450fbab000bbb89a778d24fba337997a526d3e51f979416ee5c72f00e41e2b0526f01483df48dd4d9973308744273a844c73dfdea8b19ab5410fb8ab586cdc9627f2ae27c25cbe2c73c62148915617133ed1f575c9c56f156547a84f4e600889cb925201d1261e26fa4d834ca528553e5a06fcb3a648c4e0210c16c2c2d25bcded194f992d889d6afc8f474b5d5915d5802e5ff4386589d4fd892aee928e9abce7814a1d76b89c9d3ec6163cf20e3ec9702ed2b2eed97c3413fabc141002b2252e410b0a5d308d26ea4c8044af692b08bf61a1213f551b082a44ab649702308a53c2d4134d092ccdf02ed048a5e06427556f807f909b87ac0667368ff4e0eb80053c74224874d481336d85eeb8c64543f2c41fc8d52ec2b44a4d4db2d14c6526a03ec5124e1110c49854712b0d9b62ac7e79e282a55893f0bffe40e10fef8dc4d793fa37d9fdb6d334b8798e61fd3e943a1f6694609b290edad208b968dabc7faf7e34b0a4a3906880adb0e57791715114cfa76748ad64183e4cefb9b96f2088c7931f69f1430c6080fb9bf094164737d6f32040302f7f2d10e68bc3be233623228274ced0d836d45df567262ebcd3d748a63c2bf9eee8da9a23efbbb1e1a973ea76894e1cee20a81793cc5bb610c89526524cb1018d8840e1a31b26318c0fe3a33ac17a0484666530f612cad79220d42b48b0ee729e8af939a0b35221e18fcc3defcefcdbfe2851c5816b8e85dffb907d168b2406bfd9f858188be7dca807605da967c06ea528c2982001dc40b18830ea85859c991120388348b04eb747c9b0778fc22710b6ebd325825363bd0a395f0d6540ab203c26c2dcab56d40a3a4416772d2ee4f8bc339a1ef868290875fd4b47ee7b57df661a28ef13041409426d7e189999c861dbce5e6c4dc36ea82d4177753b835d0a8a43bcc4dbd6690c6cd090fa52d41b2c6a9f30d2b7c5f417c5c664f3c515ca0399de5dc313c941a98c903c948bfcd0d958a5938e72cd191de1e402aef1bac1975fea57e80d5a91164b2a6aa8bf2aa0c2440b321e6749954519cc0960cfa2425b37d84ab7b37840c8da9ede2d78566147f37dba057da276944fb6e03b774d0e24cde9d0cbf5d771b75c7285045eeb3ffaf1b5007aca42645d2abe21cc6497ae5bde34c000038af1d98620c64107b8cd28b60fefebf1db631b09b15ba28af9ba249b1b88099cea30c2b9e4898a36b7ce9923885769daadda0d0c3386b918d726e058f98621f744f4cfe3d92030baeb238dcddfc6d4a91d8650285265769e4a90f5c995db5042e38cf55222237587de222768dd556dc7ad4f78a33464552a15765638815b6bf76b5f8e412cc7599ade5845f0d4083a2746b93bc68c645ea5e1fbcf6630c14402682117ce384bee51febe3e4c5950eaa979965793f351f20bfc3ced420ec9b09f7819141b4d23e3e90e4823eaea08df424b80c2c975c9c648ad3a019b8b4930bb7d24a9970ce331dcba0b790843af52418cd30740bd28e164a88aafbcc805b983ae6cebf0382b7baf697c5ce6d78ba0163cc4b0d955d3e323b0fde18c82ec38f4a8f4c6eb40bb8811928f2bf7c4bc628e7bd20fcefab16e8a2f8524ebcd4df4a28efedf843916d63f0556810f7009f34af75110f081eacf5e622160b8f832fd63d25b9b8be18dd29320c612a6430f251d666d1c76574a3d584001235d0af21ec0c606bc8979719116a25085ea5ca03b9640e2732a93bbc60243681e48fb43fc5b563dc92a471cab175573263b2d1114e60b42d1d29531d5b6f6c7cc88010950608c4a3512f96328323f1948b72a765d19bbeb2e7b5ecf3eff24dff90880dbe7d2f8fb92e2469527e102db7a419acfaf3a1277f16914f7d03eeae2f08c445a0a0385a040a373ef20f60bfec1fbce19a87562d7b06bef69a22e507ce5355b59d4605d2d9166ace4405ce7125699dd0d45b656a5a282c8fd74ff47038600d6fc4672d5762ecb04fae081357af1678cf4def87fbfcaada93bfa6402c195e136281abe182925c50ca054124ed70e66ff92b574af70456bf9e5b95eb2c1ad8b53bdea935aff660905f1cbb7b566e605e252663b28cbfbd3386f650d3080597464e52dbc7e15c70b752d9fb5c5efb578ac8419445d5282a8dd6d66e01ae0815f5065d69eb10c49f5e9809c47ac9e83de8a5d0bd8eadf5039d03b8972991ccb1b484c76c889d4640ac887e9b442defa0d6d9976753da3b421566e88071b382e36efb5f50352590612304210201df4fefeb921dc07b23a6b932d2bced40f7473895d21f81e24152023543267d5e4ee170710c9f970bf0d80755ab11cada1f8b210c240409eed47a523ea34d66b4276ef083751d17aa189d339f798716f5accfb65503618de1349d9b2211a69c3b863403114fc44014826221209247fe6406fb7a26924dc469ff6bffdb4082cea7b1b7088a6f47977379008cfd21e55767a1a0d915302f812a48765837de0ef1684fbe06c0d1bedd5726f0bc12a5b5221fff8de1d44278fdda15574dfd915651a525e0d3a421ff4b7f679199e184dc1b7f776934c39db92217ecc2e8d2aec680b1a14b10aaf004446ac6a5b05695c6dcdfd71647fd301319351db55d2bf0f0de929f4adada06549b9e0fac6f2bb92ad1a4e034382fd843894b6f5c42423cd655d8aeae5ca2c577d1b9c62678cc1316cfb70282426a54641a10fa09c53bc12202cc5b340fe37d558cbe921f05df46bb462937a1b1713cfc8bc7c5331c0e27e0f8f815878b63f8c8835d8087afdea7ddff39fa6c2fe20b10c24157292c101d834ac2c7828a8f445c44e4f89b90b474316d263f1eebb2329d5350db04807df4dcbc7432e51a4f2d009675195d621127117391af68a3bc5195b11a05588589908660be589d98ef47dca69448da8852cb6de1af9373d53c1b02455565478bbcb033784fb18778ace626e8d61cd16cac13089f491d2933390ac60d542595d777af5a51ff5aadee05fc1ff471c4d9cc93f0dd88fb772fb2743121ba8c74596362ba4afdd0e1db44d833241e0b13791a1ba8ec4eec3bef6256fcbcf93e2fe1cfe17ce2cc895ed9148043d68b41f421aa4fd76d84429cb7697e70595f87bd542bfdf77591086ec8caa746b9cc622a590d71b84fabab3b2628d4bb0df246efc197148a6fe13718fe88f42475938f320bffa15a98d28d133fa21c5af86b0bfb8e0f78571723022d78dd5bd7f0026f17ddb586c139e3585f097c56e8f204cc77ee41fa57f6ab9fa22c41e57c8307d3aacdbb71aa28010e481606e79bae12008f5fbb187bae12928b1d442f0e1518571b9e425845979eab0d8e348839bfc25c6c73c3acca8a32b616571328ba307ab98efbf86fa70bc3711342b36494bc1b004596dc5eeb2dc73d2cd7538d45e82924bed232dd52dadb965cb7b17161b9e98c8b074bb8ab09da6d8e4f6ed3047692f25a97330d0863b6d129329fe531dab89fd737be8b0b9b40618e694e1dda2f4c53565963c9f4217f52f4bb617a7aa14c3af59af8ea3414a8a2f877ffc74088ca658224b83c06dcfacc87cd87334e9eaeca6b153ff8e5d6d1dc94938e85849728c52da618d5a43892b61867652538dea06a1badac9a0938f2bf7e328a6f617f11a168da004eafddd2fa868537ed7f3d25554836e19179096a20f350651d1b96383d0aa357d40d30161a93356228eaa2d124eaf9a1a07405d5a8ab2f7a9a6db2827285f4fc1c481e4f81752b8894218e1c04fb1daad519bd8d2f2eb630b17c30e0992440f34a0509bcb77cbce8029358fddb87ded9c7ef7a861edd24e3e2e6616c6ab693802e2c0c49291a9f403ab9e7145c5fb84fb05323e0160091328f22b4a4281ec835396d38e7e42077543c6a55c5c333a055c52d179add84024a17afa91d245e1abd397c1ac2d3554ced8b0b0fcd766bfa3db1b799bfd2b0514df6928beefdb80976c2608f43a9d989842e5779976f93abf941db36bd5a999108fc194429c4014c69210adad09e8b83f8be1328498c3831b4fa2299e6ed62e3dd2717a27bd27528f39cb7d4a2496c8b5a656b627b330d2d9bf7b66230cc05db8889a2ffd3f39722b4893a5440a40333e3660dd1c9c8d46c7f06f2dd30788d0a40a2cc4671f0ce21d0f405a24c5094d00639d9eeb1f107a919089262aa7e2caa9f4f96d906cc12898e40ee3100aa30174b5e264ce126a6e4c6e26769b089ee80923c23e54a71a5ccdd5a51939104f699d91a2980b56cfb29fd387f991c4878c11ab7ef022cae38e05b51dca3325c6b82131a8160f11b99eb52b447e43a0dafe6c773cd98c7f87bcdf550fee576a1cc3d5272834f5938cf623c1208a60e000e9d739406103f871f1565beb65c94a9030331a5fff685937400477fb4b6eedc8f4b82fab1be59b96280f37eb63ef7def79d29bfd36d1e17988089b10d96d2efa9b2fbd701e2bfd7c76e9da8a48443d58fd57209418c5276aa92b3067913abded3254964ec8f3f3dda34dc139740094be875c49006043e78aae3d6c011b41d175c329e5aa394897273009a9145357ea56f7811546b20a39096d7f9550f926ac1e04d3391fae962ceafd917ed362b0c0a232f1c9c7878ed11822d04fb91bd9a594465be6c0b9e247038cd7f926d21a2feb2815432432c8633afe8aafb95f38af8cea3cb3e87f319942a57c11649d19b8ae4e899a637abfd5d0b281a394318b33697d59bc5472a9747da9c0b793801500d00c2f84886bba39c971ae569cce50e3ae2f6a639e24bf77ef0058b0a382f7bcbec3f71479725c1a8c92ca2bf30a1e7b916f0c8123dcc710809024c77e2b33b629eefa6ccbd083b2b2083ed4896b4cb959675049f171d991e354646c68dd8916096dc58dc0b243c7e21c7c85251d8346bb922412c6228796ff94ae8bc5e1498f070495e047a152c6c5255e17104fd79ea74eabcff18b7d908faf5d48923953d23308f53eb5327e1fbb3508ca0859940fee2d1e816411f48902fdd44327fa7f833c951b14d38e5adbbba9afe6d08108e20499720c176ed2c398df23c6e9f98109ad88e36355cc4316982da474a1380db344114e934c1dc006a82051f722459d39d4966b63d4932e0068f89ad9c151075c96d946ddbeeaa2d52b7ab97d43d9021dcf43f2a505b6b08cb9cd338d7d95ac7a4f112a028649d8e6d7ef21c641ec39a8220b12af424ba1b02c1483806ca7bde36fc6219da7c9adc9f5e1da4f8a725f2238693291cfa412ff551d9980f16dc0d73d318ea4fe19b0f38878e72e16ea683e3e0c9a64208fc9a5a25f334f912070fd2fcc2e8ac40648a9978eb02517f8c0f97d890b03da061175c4c4d2c79e25835219d295c9672d389c1bc943c9b8e030385080044a8f6dae07f11b67a320e791caffa196207c91ed9735310dd2413ba097ba69dbbb643c6954596308abc09b086c77f0f8769f0c7609d086ca5f868565a1d396a3b790c1b3eb73af5f61d6352da565381b3b2236933eb37ce2d7a4904f83cd6396b5396b52696bad3b50d118b647ac0e5b54daadb7ef55c9771735f1085d55ef1cbb9f0af468e1767aaf84a5dbcd58070a26c48ce77b151fbd65413b00ee747a6c900d6ddd059efef062bd9860edb8282b18442e3db524f8821101f904a358e0f7a65db3f6119627d9973e47247a0470b0700c58e1b33ef759fabb93724f0603b5a75a16855539d09a8b48452fce02d9b8cceac766962a2a9a8b2940a518b0f40de85a57004a22929d90dc004effcdbf6640386a22ec4d8160512010613b514bbac99e436fa0080365475e69c1f66d68948ceae3c5c4c4e2eef398c81dfd10e74abf9f0f463dc5face4b5d08b08caaa35f69376c7f19cafb4940ac63cd392031423489b315954c215b2bad136ebf268d060774e8f2be4a6e6d02ad049c8f5612650c3b2c1767558c00c35f06a3a6c607c2aa5db602ed19e0cff48ac2ba7f9ab1bb0ac8adab8773d24c6485c46cb71be7bdc26dc2e02d5640787b9dc544ffeed37077a363dc5e9d82fa0e7f0d3d0878b6a2609855d60ad2a20b54a4fc0ae9b92810aebb17acd0518ffbc6099c54d9780ad0560ecf329fdd688adaaf5817a1ad7f3495746be13201ebe76dd81f97a2aedb9c75b5f557008474521a0377b3b0a2b8c2632f80d41d010aca4ec76a6b3e763534f9cdb109fd6843519c640a9fc216f08c72e478d9b7fa6a409e411b215bf0f1bdea10b39b5c5b158fe909d7a7c9516b2a31ecd670368d279b8f22122a3d3ccbc713895f2c5bbbe266a7ce85d22f1c2c7b7cf3adfd29df611ac31c81a3447a992f4cb3a15f18ce6395ec9f54c18199aec8382c0e59948d66f6ce4beba780789a3116558d488fe164afc422d3fe0e2afafeb6dc46e2b032997f1f92ba03723d648d66b517677a71c2beaca7a20f1253c4d82f66169577a470e4893cde80551f3838ce60837bdffc1342b8f1b0dc3f28ddc9d1ea373a3c66007e418d0bc720c1c0d7e86de3ef57305b5db4b3e01e83efbcc0e660c11a64bb13e0f1ead545e136179c17178221361616de4fe8b850a9508ae4083cae55b902f0719a0cb019b10531100af1fae803a11d68a4cc468b08844be34d1e4efbbfeb8351d018a545c8cc3d2714510e00326c214281ea8955d35b88230573d72fae3bca28018b07db0d02dba3a5ef83891e4c0e6c1bbc369f97f6c7b32bdd89c319e2c6cfa376a73c8a1a06a5fedcc08ba4963a4940316b097cb82de228e8109b03e776900f9838a38c53acc3139a56ca40bdb9045eaffbf5f9fc56dede68e00cf0e04eab3b84eba25af4683875391524ea3892369b43d48b20775c7a77604442232fd05984532d5f50fef0668dd6a4346070a081c14a8ffd183e80c5c7de2d468fc49a4b3d9f0822eecfb23d43e8b36f36d13051fe8324d00fa2c8ef69d2daa82ca67a662c0628abb0baf954e3f4a5b01b49e2413ecfe89206e842413efa7796ffcbbbfdb1f511c24c2fc4c96070af89cca932cad53a42c4ca8b598ec5905bbb6cd3f05df9b7fd8d880714dfc866543f9a84307b56fddfde6958929a1362453b109a507513309d38d5436c589835d519cd8f84721c67d2c99e3e038e415c185786c80942e22e4881c6c288034469c09e20f844990db5ac6c888ce0aa8413bc0a6283a64608583f433d757af6c4e1d83a82bf2dd3edc3585a91f430936dc013ed65665c2a7bdafe25f200c9741d26e8b11eea0ce581c64a69a52e87b32b21c259553c11d64dbac14da734810dec5b834c19a4411c45dff0f569b4198875bfe70c8f6337710d68c831dc168eada591377a01bef3720ce20cf2148f2ec128441cab41d13e8d0acf682331531535551ac5c1ad54b75a78c6600fa84e00ad2d7ed5adad2dc13dc65a595fa697281f23bfc6331989b665d91d998e3bcec4c777a13ed61fd708da901b32dc5020a1c93b2584b1437228e7c80bd23616b077325068a3d34175417c7685ae8dddd9ea34236d835b588058643c1befaba2fd6bbee7e371a9c6369c1f7a30a0cdd5e5b5d9e7d3ec15654ad6b0848fb76ac10c1661c208198c62b7cc39bbd3a4ff7e900c61f151246692d4685348a367bad8b2d625672a316fb3d545daf1ccec3094078cd1dabef0350c97f3e0b172c28a322c05897ecab3868e0a6ecac38fdec889fe0099177242588b29bf03d32b23947cbf502c15d7b3713159f55494c930b04314080ccaaa36c8f26e813227151216786b054aa5e078180b6ccb1b556df2de48dd1645e9c6c6e97c309a0ba2098b1057e77b724dde315cd212ea511b12f43c476546b4a4ac8f3581559229701b8e4d588621d229873d52139a29c693e378eb26b3366b25978f97c4d863e003fb74b570b7f29637b429d3762f0c9144182ccdf0b1cfa405892baa68204b80ed15aeac5c2be0bf7eef43944ea3bce00d95967d02bc3521edf0f3a23c7a1a551e1f8ae993119c63c184945cf96a6d8ecd84812a6bd85066b64e92050d90133660f225ed91da25c3e0b83ec28bab6990b1d90b9ac69846c327228abedda8fc3645511b7d425eba0da933ff5cdf1bad7632e07a93ad009bcfd31f9d4a65d53216424c9ccb0b684fe1574dfcb026e60ea41b657b1b501a9ccd185b5b4f2c07eadb2ef02773d09f909d229243d8142231ed1795e01ba22e2502f5da66a7496d80f19ca62bb1b83faa488bda0d7aa934d2eb7f53429f9339eb9365c91c33025fc5de3d682ff12f48deba354bade61958eb07e0b3527d8cbd78abdec14a2bc67d5834482c58cd1c7dd5d63a37bf9a23d2544d02b27ae74883327493144fba9052e7ce5eb81c540385d504916bff8773e7b450504ea6dc83c8c2425e55c6204cc669737b065a151ba66050cc5bbaa621fd58d5a50bc54581d7844c7f45a6656372741b0ce51ad65dbfb7b74f33728dac271f57a306f1a8e0fb264c2cc624a593a8142130d0f3992c4cb869a43e19b5374f14cfd478bc965984bad15765dc07d07d0c860026dbff7aa1e1399aef878aa847fe67ad171d4915c0cc804f35d69980d3f8b60093be594d1f4f1b9519ab0df601def2f90603b0c3475570cdd6dee3e7e6473701a2bf3de8e039ce978a46c13b4fa480178824188a4b77e44fb1b513864f414b8b623662c2fb88085c621284196c0529a199bf0eb3b34c7b8e6fd93235eccd3c4b5e5dd91461fbfced75a716a0127f430d28eb37f831186b884913082db7b40fca7180d121277ad4b66213d1715a7c951538818f1c859b410eee78e02f7061ddcffee192f5883af52c5139a46932f8e4cbf409ee85ad887df8a7603c7ca2a3f2c56748cfb9a22aa1eba0a138c3165a012d25255e0c5b0702d1f7ccd5a512634d61d819b41bf7a9ca9533d8299f20f0f0bc878b8122c9b02787336e3e55daa78769161450c6154f30f3f5eca17811bacebb2bba2121e3ca5ec3ee012b5a949ecc776661b692fd7dd67d9ff60653e6ddf713a2e44e01934b42c77f6d27ef49ee76dcf2a665da3e22019f0eca6ca87f2378538478fb0373278ee5e1b5b22daef5f5425bbe8ea504cca22f8ee0f782f9416d9d02c062ed3c0815c82728526da535361a4a34332bb173e0cbbe536a568459f56e89a11c4ce404a456cf3c10dd407b90cc3208e7768a647bc096e6941e191e21586729830085d1931a4d113cfceca73737a9a20c0e20f697a2df7f45b389356c0904ed568873dc6e25731a9a7f27b3218e262e4f06057eb3a1c4a52281a0709572494041816d879b4b988c4c9663606aa25a95bbd65d2b38b3dba9a6cdef25eb1c92bda15d6531bcac932e5f909266b08e481e605546c2dab439bab69e8bd8ff46df78c9412497cd6152d3059ac83b928fb6c58e634371dd406d38b315bbad77ebdedab3fbb2fb77adbbffa3f2f4a706117ca39e28e2e0f676d63aa397734775a1b5e562968b310e66abb48a11a5d31532862b99ff05e4a1b46548529b738825bd5db471c88a8692ddc6cae740c38a9addedc3ac4adbc579add65f7d26d4904b47259e8a94f5e0d8958850986ec852430a589a03130f7b0584cbd028e6cc8c201c2e324814a8a3e168873a9024c0d6b3915f9da0d5396ce59b9c875bc0e7c7c9a331a08d620ec0fdca6a200088689924290e425d7485cf96bc639ec02c1d02650980e390caf1b360f4cba79363153d63ad62e631a506fc909f1ea045e6ef4a0ce6b96ddb9256eaa3a2815fc8b24ebe1fc38c1565631d49a1a203e4e7b836efd8eb32a9534aa66d8f257aa3050e182a4bc6f321951edbc351e978b68a10385ac6cce46065f269c4ad25909b8043959161931fa7db9e29c36bd9f1c98979b6c453213fbb3ac42aaee648879c7fd0558a511b21801f3c46f0ec8656e09679601856d04d0c7249f95f03d021d51b780545dafd2f1aec7d8e8df350784a9341ff44ec04128ba5e67e94ae9996fb4609e6899d846a1da4789b887d5c36ee62030385ef610e0f9a70ca02dfcfc838e6af95863f7af6b27e6b051042a54343a7b44b6f949a1e18fe7ed2d4e970d24cb27c71b9846c03edc086e6dfd47879cfd5a3d662af5f43230eea6729999006ca197d82feec7d84855ff60ff768faa56458780a17acd11642e66bdaea8939c63815c4dda28900af3d759c8d56aa2c1750222c1672fbb18a63fc6af6d6427c2b36cd1f570f179184538d64ceb39fa55ce0b447992ea2787996b53dfa38eb7c84be1a9c60adb6b7865f1582a190fc9f516f9016bea01e66bc3d054c9c17577e83880600161e5323319e0568b510291f501889114ee2b9805a74c55cd4c3cff11e0dc515e3ece7d6886693d0c639bc006b132f7d39da5b01a3b3182e7ab09dc16bb21710829c1280183c9b857cec9ec3d70ce17c2e82e35a4630394e4047d6a044fe61dd149dacadab904bfdde423c3a0781057d034a0a622645101fa5b9a25810a7556ca9c0738fdb4812246d193ec7ce9db5751ddf10389b156c745a30a3186f38463e1dcf3000b22cd698648e30809f839f99cfb733a7512dedfea64530cd966456152236c6ccac9e43cc2ba325744714aacedc71eba3a8407ee0780d9b403d8bc8a66608cbc1290e04ac6689505aaad9e4893243b32a9c0008d13739baa890c777dcc041704914e0e65ab51045385457c13f2ae75740ccd305bfc562eb402c6f10f2f8c35ee43af30bc71c49924dcd75093529e3967cda03b8c96b070cd7498bcf2fcf349ce429fd61409dba0ba0a01b9dc1c599f2754ab1f14633eb89c04e569b9cb407e122fa7b949e450a69e6269182d0cf0e1a98c3ec72fe3a3e1a8c2c0d0bf24a0798d04fbfbc5a8a400740313a8ca29415d72b4a9e69837343a389c214df8270cb0545e2de5bf86aa6ba70572cc0d517b2c88e34c1102ccbbd7abcd90b0306fe24dce9477e796a532ed02c976fd490550b049d043d0e4bfa5c9c8c0384e1d5c2359ce5f6c8d54e625237e000d633ce8f609c6725d7a175d0b93c9b239793f4b26fcab0570483d0391ce38d652937c919bf809908c9bc12ab8b351db1616121130e0174b7f4262b71df325c457306b1c1cbb6b0d64f14d32dc90c2ec3aae6ac0a4354306f278a1d5912cfcdff45e7caeecad680cdc74fd941417017df56fe120b0d2535e6a2d52181ca302e173804d2e278d58898653cfb4765f3114b0ee21781a9a7edd453aa5a214a578d3172ebe39caf7ffac5933f9848ca6425d57ceac97933eef8fa707dbe49985c7a3c5f57150df17d8cfe73c43806241f6dbca8d17cb9280e82fca038b479ccad3c2ba91d08202aad90889373a0c224c99ba6ead3ea9ade2dacbe13ce9c1b51df584a1637c013a1d113285d7b9ee07b85e33925a09bdbddc2f709e9356890b21a56bcc0c1220f709e307282050ad6058ad678a7e5868d264f0279203cc53c6e33b615348876ee0e984d3738235ef66968e687c57c6015aecd0e21153e47f3a0b41bef78b35f252eb2e626a88c6ddffbc8d9c0cc86fdf2e8c097b51fd97c681e54ea56a50b581f6a057ced5666983ccb3ede870fcbfa2eac143e5eaaeabd3a0006b81389ab7413dcf9bfb87850e5e31ccaf31ad04f32f229d69ee6d1f9c8929da09b05228d9705c6605ab29cd6a076a60bf0182450c6210cde4cfa28a70466d2d343a6b70cc5ae1ca31a93ba5e0f44182458ff3882d52991a9936c590aab7c5d76d935d0f461e16f191c93532aa750690a4fd0e6b9e8288a767470a35baf944cf9565518a847015bd435dd28bb844ae1ca0617e68c68e4bdb4405bbc6e5bdb8364b5f91b4608ea342abe23270f952454e99f695d7eccd28b9c7668bc9cdb5c5b8e45cbb5e300e0ec8625f13dd5c767c4b26b04a19c8abc128d8bfa0dd5a4bca8aeef25df41a770bd1027ee7500b9f80840d27bcb0b993b4cedf727582ac8606dd12545bc9fec82ae904d1dffb4ab8b2d024a3dd140e826adcdc4d4d939e031363b8b31e8d3a3ae8428c50e679d0a1e04f3d3c07deba3de5a4f2b35e4852860aa9917eb5b9b4492b942915aa2eec1795624afdd986a045da33b7b9e369dfbd8ccc49660339931243646e68009769160dbbae42fb1607713cddd6b873d12b2e7e1d806e9dd7ffd2f9daf7d116d41f59f428ac7fc8236dbb2be9aa7dc4dd8678b6294c35b5229b3b904d1b8b0ae511b369cd6b0c960e213168eb2b89f28301adf3242f15c57c2f18ba562f20904cb6a217d8ebf65049fdb4654d26204388a9678333d5bc358f706a343011a2024fa8c03b4a57c243dafbb5ef4f29cd83262ef90c129ab1e2bf48337a0fea61d192f3dd540fa56692c072d5ff8e67a2f23084d71cbe439027fc86c8c3e4692242c00097e0dcfe07cdb6fd66a636c84faea8b7188b5326357994edb6588b5932be074012e24bcc0d0d7655b480cae2497af6508e70748f72e162dbb1be26c711c4bc7ce99aedb095c83c7804da9650f236b56b4bb63c03b2991ba4ac246757a72ff7199e234435ca19145227ccc0605ce9c6f45c034a4770e6a69618e9a2a416a9c0b08f9c8041aaed241870c8b7f724489ae5fdcfc9a778ef8d40676827908e706c214c5e1504b74b3d3077c08003c5c90a805c29dea363aefb51971df60897bc6d821e676c5c52b963bc2636222ca796278e0c213b601f1079270d15bb1a99a001c2415a29fb84a35552ddcb1a7d7e222f896a317167bfe56748a8050daeb496737731f2a9ae8280fd59bf4711bc3ff46cc5c49906661ad5a2cdf9d4836cb4fd0d6cc16936f489ebb77a786367910fea1569b7d5def6c98a324b558c01a2dbb7a73a1e73fac8a42980dfc3e65415ae968ac38fadc9998e98c348cc2be3d24a20cf0de860ab7a4b17c87f1ce2f0a76e9aa4fca3558faffc5f56d2b92d6d36d932fcc68665b697b6eb82ae54d8c25754581c6d6c25cfaa5441b1315ab7bb0785432f228ea8672a93ac5c83000c54ce0f1eb5b9b9981b56d60e7e4a309d8bc7f8956e0dee49d4c4970368ca2cefc9c19621490e27002d153c84cae1a067c38a1150198ffd437681bcba657e2ba9f82e4ef11d081c5b81c14fba245c4b42e86b87aa82bb89aa8e4ae1dc94bb7aec31d726c57f0dc00c362205e00d5bb9f331e501650f2dd680771cc95fd2856c9fb43a4fc7b5bc1a1f7642d6a8638a0e325576e14d331d05a14db72e7ca2a5f635d829428b5dc11c31857da2f1ac9846a9ab71aca8b241449953e8f875da4a5cd0523083287a40e90b0c9eef6fd215d06bf056a33c653702ab8951abbc6f167529a0458bdf2a532148236f69a3a3f674bfc56dff442f8ac373cc83dfd44a459899f51b42f5b65a447ced436a89dd3ff21d2b584fb9988e9b1d29908d1590781b3136a01fbd69a911d170a3fd863b8917c2d14d974ed57ffcf30d60b95d30b116e35965390946c2656a4b875cfec9d437468893d2d2cd3af26eff52523c322bf90af31c61905e95d25d633ec59c6aa7b9c988911193463bdbe2515a53b2848e8f623fdbe960df36d2dbeaf5ca5f52dab400f0a3e100d96443959f4acbba792128cea42bf28cfdc6e453abcd8143836f30851e754edd18411607a638b78c77b823609b018403ae3c952e98dba729b0a1854168528e3ca1580be5867966563114b1ea89d181c8ec43a15604c05f8e45e0314ed9426b1219f92ca193a4cee11ff13a86171658dcae5488b773b4aac67b9128765649e3cf96546f1e99e6c74e3b0cab1fec670a8bb73d3b9444474c04be062b6a9fa645d78db90b84e4f862a84b85952e7a81c7fd4457bb1b36715c9d365e060cb0f4db6078db03ebaab3b1d295182150a30803800cdf100ea542c89238f631e6743f30f9528cf38e8a672ac0b07bcc565a66c7b18b57e7ae36443cc9e3f37583728d1e446711a7d01294d21ab25df7a1aecd1150f178b0905b2dc23da934922280822260e66c6002380a192ee0370e2dbd289a52f8383a22da68986ee98156e5a7b8ce219f280428fae7125de5001bbc71be1d0603f14d5b5882e29274b3fd37d7ef7983e7e456fbe69f0b6f887c22a86472af9ad615da21b0309c9e00d576029061466b89f8d012f0e9b15d1cefc78e46a253b16a24e586d6f068626afcdc5420734b8cd2caf5da55a0c652d01ae03d21374162dc76cae425454e4a1a02f266d57a4e0930dc60c9b6722c661b4826e1bb2aabb392d7fa994b4765a704385cea4babfe92b10c52ec5d7d8762b63ecc0094b39b326b2ed8b960d15cd016b933a0985026ba87e7662bc6b010dd312f724a4a759056b9e9438eebfeb00799828d75beafe235c02bd8ab543a6e9f5f55d493ec4c4ba4c361e3a702ac88f2df11655b68a3d9976ff6ee78eb3439f82ac82525132e9d698dfd94c12600c8ec6351e7e77e6941b8b812f415dad194e717dd56787c38abcf2eb267e17ee865666215e5a7ff321bb2635e409515282d6881176db46be6c44117c84485abcf498cccbbb9a96570c9d0587637fdd3a11ab1d88efca50bb1c35294fce54cff05846562a517987e9187bd05833190345c6846fc839265c3945f848f7c7da8bcfec115f8c77ddc74b3caecebc9e12d9ebf04c9af37cdc449f89c19d6c8a4aa275332e4d0992a4d300d41f803d7568d9756c63c4f0ba8364368c64a9cd04aeabf945721f65c9c0595c388a1aa683c038f4a62f87cdcfa158f769e01c4e93fe67fcff18a82ded53648688f6f87c7266126b086f19789451aa038e53990c4d59332bc491c0c971c145065ef177e4ed95eb9656c954fd0efcd87f2300f85149fc59c1b6cd8bf13129dcebb6a0e40254d7c9a7eec0af438535ebec11ab4512f02dd4c44ba4c191653106c284715c369c7afc14dac3b6018016b370e7edaefd015bce0443b7c0515110edbbbd2448dda7a4a4c72b072596b19b810cc081c6519b854a26f895784f59756da557e1e431b4e669042b9b50afaf8afea6716fffb83094097b468470a4053888cf6f7b4a63138fb696559770645b141421fefc5bcc94a2b2056cc8b34d41436c183833d8d9a28b3bf37af12f52aeaf7ed74937b5e3cb208878396d3ca5d33dfa8d4613a673794fdfdeec9b3eb2448d406cd6121d1a4ef33098d94e505bbbd7ddf03c12f2d3c1b7f985c1f743b5cc43cec27f80ada35f0572ee133802e0f78546e6370d05a0c990d8d4f73ba051656b9f15e58c5c0945a978b3734fbf102e4f9e2424594d9f1c564c4176e411b91d32e72c6d1a0ce9a28c3a61e58061104914138539d9e628518dbf1d966757e6cc82ed4f06016a568eee0b9b20e3070acc4caedc549638b74fd5e20fb237cd948d0b765d406ac49ae4f165669aef0c6a9829dc4a18d216383bc200c0f8836a8b8d0bed912f8ca730e39100540811112a618d41650f7ad066c9bb713ca480bbd5e0a652cb06dde3d4c44f7ff1470375e65ba86641359b1f5303bd2a306d8258c821547452f3524a422c486227ad2d5dfe2dc85ae1054cc2685abe8dba3b7508dc9db37acd6fd9ab9be4652f8453bfcf400722a099a105e40929bc0254cf86e5100de4ee1aa088c8037cbe43121fc784b093f3c4dd4342b04e138e2cd08d2b2c65ddc267a82cd526e957f555629d0946426c8e4dc0bf5569f5d0d795a3d72d84ea037d88ab61d9031c048899abb36aecc1851efa29d448b4a365f2971fe23856359b88594986cafc65ae6c4569bbdc320da79d5344becb01ee2467ce0ec7c1a2589707af062a5fb2b60a64acc2eda2e36dff64a6446c143f9135a0e83ca35cc1d78b0a2ffaecfab3750631209ea72245fc775d04b90498e702442a6ed70d247b480ad7c9c2340f07c0f00801524da063336e21b1c9975882a41da9d37765f2af183620b1e19bf86d7f16a8ae77f0ed62cc4acd018b91036f565639013d92b6ef4e9aa3dfe6349cfe1b6b4f216af197cdecfa7adf85176fadf2dddfe61954ce70f6a52c323b4a1d3b5b5592944a422cd3db7e366353c5fdade3cc109f4dfc331142a3f0572698ebc45883fe2b64bd5d08a60bdd992b4ac8226762b5b3c5abb6779e75df3f66cc3881a1cbc0662da01017c819a61817ae9b85789f91c6985a86678599450235c35484088bc456e47e0431b0664eca8ab2028678cb5e8fb5f1d940ccab6e3da6130cacf817000ceb7360803db21b22ca498e51e69d0fc6b7fc031d6454364d728d397179d65c8e76d5f88ee99fa08f62e8e7945176a25e6528629b9d7bbe686eb0efe861cc4e588341adf07230c276f7dcc476e72c1155e4d3bc8507a8120c9374f12f6a6145008f00be107e1c143857d88713185ea61b4a42823254dce205282aaf9cd0d80c0ed8b63f808f66b76a3b9e5465b23a001e1bfbfb41be58c2eeba6d6f0936a9b560e4ae2fbcb5d98f8bccb2f9eccfd7c7ee1ba759377cd38480919452d52a4542a52b7f1f17291d6d5c434170fa962367d0b243c36ca1df9653b4c1023f0ea03c4bb4bf31e67db2db03a1c4b0bf35d68748d5fb6fb50dec7a9dea5894bf2f7702105742a304a2aefba252983a10b19eec043b40d1a4325551fa200411b6373c1e70b33a8810a58418fd79eea21d591460d21dfe44a6b12066621c31acf80f7e053759ed441fc45506cf53f4eefa326e5ec02e5511908338f937051e23b8980907f74622a1e681ba0f62ce4f9c040edf1b965a687237690702752cc5134053d53396dac25d66b84843841fe447dbc025413115df3d2952f9af8aa3b28682207bfef571ecd9573b8afe91538221fd80d84ac469ba87c478dfb14147826676978478ca373354f6d4253835efae1c3b20078b5d99c0a088fd0a081009691fc3b60390984503139bd4179272b4bdfe3723bd5f3349a6f7bf9445b149eeb40f83609b9a137927935c4199317e7eb7072b43710a82b22a1f8a9106b022fbecd07f557404cc77354db9cfa80e27200489c7eb6b97d22b9c62389357d569bfc00ecfe15c6ab83086a9d3a6d3b162e559419e5c64f52f5a625de1e9c91accec0f55e1f7010a2c1ad03429250d0170fb546f615feddf5982825d5a79b13fba7aefdcde35dd3941feb1200b4b8d7c0ff9509ced97a1bd570b6f272697e6950380c067d96539a8b581f56717459180883f495f3e4ef5e7399709a1106f89b8b234a839c84e9627e4a9e786fa8d405966f182b497f198a9df4de3716cf82ddb6d9605366502e155e569477c51e4a0f025a58fb2e3e6d4b2ca32c3d7a56010cd1d0b4d987d51d4de2298704a2b0b9cbc02080ba4ed6d240bb7931fc6dbb8e03d3fd53f415da7d7817ad624022d2d73511e46e3de1d7dbc026afed4fefa866c52fc8203f9225c9211956b59be08097b8aead513233291357fcc2a1d16761b848b149e41a43f2bc18a5b5e9cc0cdf4ae508fec92251070af849e2328fa3a3e270014facb3f5ecbc6b7d2f1957ebf95bae1847e17e3268265da18a3adcdeaa277b46cba966809c678157b743ee6e49fa1294b12d5ff92ae610d2f584eb3eadf1d320a5eba8f90d5356684faa75b2856cd67e3af286b6688a86dc825b08503ccb29439a9bd6f6f0bf5e4ae792b1107055a0592d0b0ce7e7e80364a6a9bb353ebbf7836c1c45a4278593538751a595a1adcbcd6baaa08fd8022842324dbf5075dc74cdcc7464acf38fba402e2029a6e454529c648fe8e46fa26909a9bcbf4b9664a2180db6fd7ce7144e86a6e5f545b095909335d0238fc0d56247b535a30f7de31a61b545e3ec7096d69c88117caad1d0042053849c3470ac57db042c39c7036a31eb4d46a1fd04932e35124ba0118061466b02d248b079cece791dafb9c8fce9be422f280667ea4997114eacec5f7e0524e471cf78fb0aaedd82f19e223c66f3158c1f4c168af886c784b3a0fe8b647f95f0b8167c624698c2b6a00a84b044714153d10e245266d2750cb50bb2bb0635e4109b23592d1def2529cbf1fe10ab4a024751a18cbef58f9bf7b2222f85f85c44ef9d4326991ed4940c0bdb5f7f5151479e05de4930070b2f7cbf6143367c196259e7d0f7d58cd5958c3e29ac35905011df3cf226122e18bd5510550c60e0723ee21d7f2be5bcf25675fde9308ded895e773b1d849da8a650440b223269f7f52b3eb245858c1a7278dded989feb43757bcdd13e5870fa2bd34143e9e29edf7ded3551e80e29582bf6a4f80d207bf9204ca70f39df9133ad90220882efa697e8f8897002a21eb582812a3160c436dd39503cd855ea66b2578b7552d45e23039f9976dcc446c6a5a879b50248a8428e3ab449fd9ddeb493425589929bd9dd3064f3cdce3c65dadf12d446b67b22d757ff2a9e7ef324059fc4eca766d16f62b78448d46a3b60383297a86bf87e7efbc05e45ccab9091736814624e7eda2f464613c924a182d0e60eae11f2c966f0cdc0906b0deab8e9f62930d4ea01ee986340403ad347779a4fcadecb1aee2ce8b7d7da009684f05a013de8dd61b64368383825832975ba87b37db66048bcc532d40d5721712ab7990855279c4b29b67485119985d839ada572e42c1c3d474ad3570c596f2de224435ada3687c968f70845813955cae5f2ad382696976c4728a8c36361f9769ba6c577d0c4ae430d43d0f31411bd61434c7ae5fd7372cde7d4a6fe69bfdb5c31266fbc25e9b01b6887fe479a1fd0d64d7f7a0fc69b2d3ae4122520799b4fa3e6d8ad7b30fdd36009911bb4f77037743157ddcf7e19bc1fcf02d833e8f43cdbd7d88dabaef52deb493aa5d1a33f55e4b01c4ed7f1a9ba7787dc066763a5c9e1ded2408521c5070905dac49a809e33c7a4366dc8eca9495224c6a4e647b9d73557d677c5e0a438b6c07c17f520db6cf7173bfda6048c3c65776fcef51e80658159887eace4a8b01bedaca4f270043e8c1bf1bcd9302442c3ccad018a815a02d88f4dfca898c0533867e6ec1e716042c8ee6edcde7f1ac0ed627042487e5056c9ca9334a39bd813fc2942e402cb45aecf3626c82c90d87e3ca0c59ed6aa9b150cca0c8544cd07d2235e38af3b38be7878b8cd8713d49d0799740e79a5a2c8dc9989a195daded5da02203942054de2a1c30387a115422659e41a996c26a5a3b25f80dea265b67119a37419cd0cbced514b12f942fb14dc2391e4a46b8a6aca221a2ac6715ef133476d787445fea8c4d53ea9e51d7eb6330cefe5706248189a4aeff4e73cba4f1c9a2ce5d4fba2264958f8f03555437b555502326ab0cd2d9a32b04972f9004529b776247f5d6074055fc3606f026927c00b90f0901ad891ac9d87798f570cd86c43795af3c81383428fb6558a22b956f0e89d652ff7379ed689c6e1cea224573185bbf8d000d993227b2489f4cfce2a81660fe8e0c56b1d10c17bc8cb04131082742f0da83753021517324756cab66d7643fae7408cf43ca823f2c745adc988e818845785d80f076f1b384681d68b273ed68db4209e1d3e932948fd25f150a8cb5b85fe71724591e465995772daed1c68558201b72fbe3d5284528c16fa84956a3d024780c0829d6b9c840fc94d8f6e0eccbd3990e2de7230415df8a28d461b17656a2c2a06b9c530f24f407ffefe573be7071c8fb17c99cd7c6c9584202225a9a69bc34d93adce6b1dc606dbe6a1ea244a41d16001fb1b54916001a6400336736310463a3144d71df3cfee2a6efcbd4253205e11b81bf4c96b80d6cdd282edc3a5b21d03348e023f1daa8d40f8409ee44f177aa019c59158f69032206e87471d32c666e78891ddb0eb8382b660ed57e7756177fde4f0d2755790980107fb8b4c78460f3a916309d6e49240176524852aefd60d8ec800bbaa9b002b795e88aaaa36bb828e50c86f40e65fc28d579e752dcc7fc8b48c647e52b760c5bc6e5507871e62134ba6860a6a2cd5a989772e28cf66328990bdf826894511b1f9330fbc8a250527093bc1f8179b820437ea385287dfd934e837680d0ab54fb03981eeb059cd0049772907bab98966d840f1e6263f4dfccb7662935cc9cb7d2f5f9b6164fb652a219e4da12b22fdc89803e5c5b6f277aa00f268384c274a34b4906fbd08e8a0cfd23a17872655a2327c094b9293d6428912a072e8cf53de33c4b9737d1861a1fc8b38be1074e1fca6bc764908ae84154297c7a0c00ca93312847428ba3b5a6b75142964bd1aeaee11624e57a2d42dc6500350858e5690af9a4e2df1d9b08e3945d7498928398cc8c82b1d3b4c893d1909a4594679681b019b3f3a91aa393c0360f060ab2522811c492a258d2a605073e88e9259111aebd1298e676d4a42e30807370190c450789d837914ae9d65b9342996c1e0d746d31f19d49feff2bf7f145f916081d360e6225d528f3effe0a43a08f717336fc34b75312bd92cbeaa1918215d9b0e40442f6e11c541aba84a83eb5c30750c3cef68d7fd2553db02e6b5115afd2803f8262999434c57c031dd11d736b9cabe5861e430a8a8fd41c833ed62b37a9a7694a80abfb8681cc05d850e6aafc3f9bbcbd95ec69fee2aac2b674753b690dc85475302258431e583647430663034e7c5194c40cf2c4b72e17a12f7e2a7279c8eb99bc08116aec878dc151d1b75bd3cdf949c5dfda0d707e97e1ddbc426b52f29cbbbdbfdf13f97a31ca750f1e37e710cd72b8d926ca98c1564d112a22e5c9096dbce53cbba4dde896072c1dc180b0c7fe6457ea3b5efb93d384ae796f419baa4d0338644e62e4b17d469bdd13afba78ea20e0bd6849d049b1d68e0cbcde63cc4da7417cd125b08388c88905e4f0e0ab5f79b09045bfb8d3859137a87376780e07af69fb2dd411a171a6916b5f6992f6faaf9685a2c2cddef483e51785736b1bc15d121035d5a0d0f2699078e137c3ab51df30a9ecc4b7a58c02529698879cce316c40444e9b90eaa79d9a6908c50f82a1a2fb93d14eb5afe149013541347e11d59833a893e3e99cb15bad59bad35e9cb7d6e2361016f26e849086cbfc0a70fb5a0a57402a4a48810780a0a0a024ba508bb62c8849e0660d887e7b538d0f6c27e8a1f80b1db155e83991d3364cb5145faefc177beab0fcd57bf81ae654292b1ed65533ebfe1cc4e98b78305512f9e03a01d261b77cbb042f14a1426afcf2f29b09cd46451a44caa16588b312a3a365f1757835a8ce6c06d59b099a48acdac300217d85376eaa34611e77995e9ec3523c6dd9591584f385bb22f6e3f46b70acf16bdc0c529e083f693b74a9b6b1fe8c0542f51efbb45ad27091cf596c5483187a8b2cd7ab1ea65cfc1839d0a88975bc1a7d87d735f0540940e26cce865f2dc74eab2b188da426b6120fc5177adf00514ffc2d71e4139d1d370ce4cc7ee4dc86375b33e3a988620a0cad11ffbce124a0e18f9028b355b36a18190b381c4ca60fe6bb5aa378250fc4c31eec2b6529f41bf9b247b05290e79f9642342640996bec757deae03cc9f559c5e3326c55dd76ac6cc06ee64e94d041b7d00e49ef218564cd9f8a406c27d32e282c024da2c25d4174303b53d2f073ad3f69224cf5e7ac6a18dd35cc987bc612e110121490f0343b71454cd3361d804aac1e6ba9b0baaf15d50fa3dc7310e631841195d419bc3a7ef3b609fa2f1516138e2a69f137949450a0429791802e5dc2426f7521671e207abce722dfe0c8475921b50fd4a7050d6cc783c849894a0501cfe4bd333575188d1521913e48b31baa020a40214752d5a12c5216d937b59626a08378bd62fe10bbd3df8e04e115451a2d301bea80625775593cf6ca4b4bdb46382e4859e8fe33dbaa0aadb5be30a63b5e02d849a17808ad2a27ba9b77b12044e062263c6d285b2b6c40919c1739890a2e5c7a0894cb0b59c912ee0684e9d1dc69992263425c8e82402719cd2cab966b40f2af421986073e6c00fa612cb07455797b67f84121d2b431a78444b23aa0f5f4a0f5d38314ca51b998246efa42d4e8ed9fd15b50a52d990beab40ea228ec6e5529ea7bc89e55cadd5e39a88fcbf9c4d8b2253999c9053871899e6929c4ae96b2e07471a8bbb758d83d08d70e12442c2a2e42ba5ddc895039f7853872c7e2a5eb513a46b3f91c90a21530139da53945ace654fd1e8c50d074f337db2f7484c07a7521b8cf05ada113b564e2dd2a8dabf3e301d2e13b38a94ac10601e31a25fe4ae421bb00fa1ac65bf1585cce5db72ecc04ba0632a552403b5fc1eddb0d58bfa22bc6410c4b38c0f56666e85ba9901b0c7dc4c17d6eb6c9df688930a22fab8645bb87ee1f836cb2e9fe5199fd4ef9704d823cbbd0845040601614046829aebb379d02280391392373e4af589c7ba60465597385200b7be1f56d93ccd3da02cc1ea5eecdf5cf17b8a5946517e955021a8fbd1f55868791107d3d3c627f6ac70a1c8fd270b711121c53968892ad32e451b1aedd01aa55cba194e87b900a012f407d6f2acbf10e81e42ce25793f3f98e86d62b55a8a12028579570cb4785586403f80fb6ea9c341e7ff45094fe875ead3bd529c87e6d9ed836ef999af79e1b448740dd017fb5387e941e7202a212f46282ce09bdc9c49da1ec67a21108040071589e520d880758033d7431e19d53bc3afd1300669f822357cc0aa192b3733d4bd0e95d48b1e83a83c7c743889afc07131e4e6a9a8f780f6cb2dad77ac3062dbb97923c55b8ce1f30800ee99d48415cb4630f2f90e4d8bf42f570a0bd31ba26c9b6859b648901375e7d14b2d67ce838c8b5815c0591af894c0b8eb89e72e8a08bea6ed6ad0fbc6389c5ccdcde742c0402961279cad11ff022121876f6a9aa08756b75b64be5277a8e1bcbaeee98b379fb1a9a247a23eeaf63578abe34dfb201c10b5d55cc346d32e82a8c5ba3bc53183d4cf10a2a6d541d068a1673f29a7211e16f1a1157dbd707db8cfc6b4f5e91562bbd754f90473ede85bcf2a68d654875868dd474142f680514a436809400faa2370eecfd1844961ec344f78076836c626fa4ac034479937eda8e657f55d89581cc01bae0fa4ab8d3d374d9b4cccbf20336af063d1ce1fccf2d8297a0f8323f3bab54f5c78440b23737d0b3bb2eb1045cc0568879996b97a7f585f7319354c3112303482d664137c915a1039fbd635fced67a51f2695f9a4d34faef0284cc130a58a5fc509184cce19b427550808454a06d2d354e34e008a828f659193a3a7e90fc2488a36ff973c91c600e1a20157b3333cbcf4b9808fcf815bbcfad8ef75a6d8169bb9a81cbfa6dc3a4249622ec42854ee79f95c9ff4ce941a26ac6dc9c218fa1596b1144d192325dc5fb4a4799d0eaaab85448ecfd57cdfe96277170694f194c119a7c1f8dc2515dae6d0167562763845f6b7cb65e4eaf5850b2ef1a8ed2a02d40d8b6b8df7b10255e67059871ea21639ef0b9af16ea64e93f338aadd07f3f59b2592384f82444837ed7baa947c7587138e1cf82e05e0fdb50de5ac21706ecf59d411413628270d241d65cbf712d56c95df7403c54d4b0e22011ad5f9d4cee6efaab6dc46cee966049a2b741fc8f634b0f8659ecb7fb66e05bf4c582d03bbc8d9a162a7e4084e08f00a06942498463a7cd0fd56b136215711b3f9bbd521a0710cdea2596227d03cbc4e4dc0bb7ac4d8eedb10ec76cff3e46dd4edca8d97c7757bfe79744b5caf2d13ba342f5cec2c9834ee1516d23e9593d17218863a1d7f0a1d41d62ab3e94abd322937ed792c285bfb472b4d6187e75f0ac3a52400986af09da2b3549da49b51a64d5078458ea4a3b7473f22a7cf962cc17c5f0c33f4b3afd949470d7d7085d01fefbc427a90e0d220d9eca3ca64861fc84fd877d8abd6029396ca1294e758efc849bd4b71e3d1371724502ac9fe894a1dd3594854f7423b472d78f7dc61e2134619c1655049e59714561fb4045c6822a2668f3afe18d0bc06f353107d8fd57fa38e402232038bac1c171637bc0dfb59d4f0f2be4be9220ed52fe2765da370c12b177ec5f5c558f0d942a150882e693cc5d141d43b0084a7dc244fdb18c746d3484629c23234ffe95f339e6e5ee8da67b09ee14e8572039b620a743c0b7020487fa741c8875d4904ca5c8601300c61bb603f7c8065b53665a58223154f763bc0f0f41f60ebfda335874bbbdbb2f46ec7f051c5069554bbed1f52508ca36cf711936688ee2f8c3cdd5d10c65412e7aba492ff8502de9493750086b7c4bbff79f417a0452b040d6c52bd869c1ff69aecbe4171b93c699147159d52034e9263185f7a99441e0e3ed5eb1d82b01921f118ee9eef40545d596f3a2f58b4ec64bf3c4809b191017da2b958bd845263e6aa554cbb6aa7bf36e8b8b985cc73ad63efaab5132750c915f294f4c9a25b60b35e044e7ea1620347ce5891e04e1cd3f536f19ea9ab47575a90cf21b5764b9c8b8703b381c8f00efdb8340b82beaeff1078ca815d5c264977768bf3c588640ee618910ae4ea9fee1c35b759182df482fd072885fdeeb321f532213865610044d0b60cc7a76878a1b8273b315ba9e5064f11c5f170b40dc9dfc37bce6888e1567ef06d39e02a069374051de87fa4bae05c84f95c301b9227d95417bef0e6d5f58d87304c0d5b4d1aaa43b8c9fe8fd2a4d7fff56cf9c53422d5258d38c387655d73f96836974cb2c5503a1f9dcd11fb011891da7d6c81d38610c58894d67a9414d20ebe49ab382ead5413c02e22bd62db3668bfe1b5a04ba052890b7414c02c8de01d121f50daec3d2e83767f64aeedbdfd7bc512b67df2f80350d8e6cd09a9b0791491531d5921a2476543a0b8d28370f5d36a6deb6965bde16005b6a1277a0fd958edf188228f8129de0ea3008cb91dc58b2ae802bb678e92cd46e1dc0170e48892f02c56a429c385254e80e6a5bb8d23274278ee1cd5d28e814fc9f9818183ac3604a425c21fe7c4b67964cc980f0bd4ca0b6a1bb64b5a02f0eb0e8cf4e1140693a92c8e443e8af4f7d68b5576beff0f81943ed91f3d0b960587b94d051d5a7191b8c6767798e9df223f602531be43329919806c74aaca099b5034244b797073cebfac580d7c752352c56c1c174bde09e06bb302822a655417604e464d40b26faf1e59dbc68a253ab21271211d13657457d2dc07293a4068123279f8c22a0a6b1e71f1688b002f54e4235bba8076fc8d30c6bd244232b3120cd0b047eebd4b60c42aceb38f3c1905387b8ef4c055e2daf9c402a0d1b4017996a108f28dbf3dfd77f61181d198c08bd807df9f90050382a27a6e220369933bf42e706c170ab8c48f88c240197bf35da89baf77211232814e35ee5d88909cabd8efb946de0f1147657c0183f250c9ebb50092b2b1f3f26132da97b8e5920d0a318ce0939ea221fabf34412a4576db3e3bd7c46e07f7a5291d13cc2f5ec6dd68d1187e74f98354b6324061a2e8b15b0722fc218071b59d5410fc6cdc198a274653c64a61f616ac047a10571dae05cb90c3ab256a958461ee0d3e4b6db01e0ecedd412c85f52cf1db0c51b01f86ed703826d385fb2c7bc22cbae7cfc155d9590d5188d3b0c84a6a7c94ae984c5805b1b785db82f05da02fd801560afadc3d8146c2880c91095a59297b129ac618ff1f3b39f8fbd325af86c957399d06e50e9fcca916d581a1f7da4215d4a13dac4cf2a18931c4753c6ac8a8ff5fae5eed88694c867467585a83c56db4f09e4581c600aea0818c84cc9a02ac1bc1f52b138454fb6d0a82014746b0bc0bdd5f5a38c167f565160c41400e10e25b611426c25af7b82882cf933fe3fa29fda961d0e2dd9a84ba186decb39edd6b3a1d3483e8f64bd7be0896daf58483e17be273cc10ba571ffd695594cde522f0e0b4c6eda8712032bf36eeadc940321fc4b7d9842ee915c0c819371fbb053bbf71e1a4a087b81e55bb2056d724a256d0cbe33acf382066725fcd786afbd0bf0811d2bae86f873b823b6d17963aafddbd536c2248d5858a3222c6762fb27d46467dd0570b77c99adbe2d924716f0b6ad0c238b2d2a7ee79ad01aa690463562e4e4bc043ac9212f3b3c0d2c3a65bc6ce06d63bf93c980472058cd33a58b9dd60e922154ff22c4324f831a14495ab36aae3b0fd7e4d0632fd0f39a24b8c4938bfbe496b4246f21f91cd1f3248bbd0529a75baadb0234b532314daa19e04afb785f326b0e4c3faa306a46519d12d0f30f0fc7b1a5f2a0ab888e575426479239f5691d9c49f048e57a4f5b7700c26ab2bdbe425be44bbc091e66845726a1e9a8d43c73c6717b10e564c36992df5a39abaa53d26136c694ec8b3f703e5e6849e8503fd265c5dfad633462c0e4366457d6c36282d3a681b227552d14c7250e11f589f9060630cdf9a17532f3a40121451e4150ec36c91ba4f440d8abf7a1a2b9797c4fb072b2721e97fdf134260b4586c6cf92acb7f85358dd4de4d75a653d4407681f85043c0068ab1ef104c7160cf6f3a61b61769492904b9169e6c2222ac38bfc08131b694adb8c7510bc58d9656946ceafadc10bb14d8a57bb10088a1972c38bd08ad864a01b1adfc4a1b56fa41cddd5e037f5ab18c67a9938c25c4a38b88e8f6e81590703108e2165c9868208ef89f7f88e2798dd95cf8c3f657f1437a9ec5526242c0fb8b6e4b347036c680c41772af7ddcba4ca475dc267f6b0d5b01d0c07f7d32fa839aaa7a9b051cd4e8fb982da6b3dddb0296928181c5c00ce0f0e3e8cdd221e66079985ac2ef783075c32faf4450d43e77927b727a6e9900a100a397486c531c1b9404c398f931634d6030db4d313e828e329c4e50ab8104b279d19285b30c19f03c55dceee0ec21755090c5df718ce904cb0accf16d2881a27d64f3035e675148e801055fa1bd0e362d1df775b35fb12225167fb70dcaa94ea8232eb9afb39feb24a96d79a0c02fd592370125664867d1848832251274d9e16485dee858766b97a9912290f27204523023219bfe35917152757759b9d88a4e8a530aa05a8b72e803a7b78f724e510656c182d5a815d23f5fff1f6f8e5e2c17c659e8a9de1521156485d24844c7470b347a49dff9a5abd78c0938bb9072d6c8e759b91a68975c79f5f6c068ed8f17fe6180900c567736bf5fe04bc51a11bd5894f06e50c43350e591d508109ce49c142595e2f8bdc9607a398a03d2d255b1300c9e49c44ced0e3350e80f695ff2e6b9bb387b6d833aade35858827ac2eedad63d81e6b215fe8ed85f731494004da4bdde0da59613c759eb87180b1f4c9f0ae5113bbc4976b908f6f31a3e6f92dd841e938045b37bec7cd3c4c7c483f85939b9e1166e02b8c3c4616c9330bf060652f9046d1409b9a90eaf87a124529403de6d0527d92197d7282800a14b1aaadff2edd98694e247e0df5343b38ec266526efc8800f335b7d039501260ed372024c1d1ca36f8c63c30a01a4cfd340c72df1503d3ba88b252354a6b5d84399b56a9918c275f9e7280aafa9a16778373d77365ae3527cbc243931fb7cd1899288e8046001fd638e11f81b35446adbf40c77ac9f0b853c2969079b5b0098f14aabe5b881ab53e82075a940eedad452ec8176bd039dbac94f9ac55134b00501a1a98631280a460624c2059aa7a8a09694736dc8882d8b82df04685ab507e2ce967bcdf7fbb54cfd0e7548b41aa6c09eed78ca15a18fcc122601ee9cb0a1b6a8e40b0ac202029b9e0d74f358fa793719d33070ad70b642dc704336d62a8fa26ceacfd266e9b22e8c948e9ba9efc180faa9853e41e0c1e83bddca4f4483a15c69271afd30752940672cb05e3c813c6c3c4b0b83e9935f61c91ce9f65ee603f73c0e0d790249677e2c4a9fdb4c5b898196209c218f379c05d82da7b99eb26a893f34aa09ece2ada4601890485002c0c916745a67945fd70fd4c533562b602ad324c10a06cfc2fd806beffe5db1b411e8d3b99b0c2d088daa53b50c87bfef3b6d5d4be433c69f977207119f4a6a3b472a602080ad90e0d03f4c03ea95c2a6031c39df2a7b7b1fbc3240a69af6263d5d950f6b191b6bb146fa1042012880a61f60af0c5745c0b90e095f9b556412146baab0f594b96e235e3485b308c229bcdb05ec2b9d8116a89bfdbd83ab72a19042ab7be8a68fd0bfa25c817a0f9388ef22ad2e14c718fb00eb8c186d016a3ea5dc3f06c608ef87f256ba5deed10036b7093395686f4bc82fb6ddfb0fe02ea1b96560a08e37a7543d57f747dbde5529deaf34a7e22d8f5d63c0d9c717476f9d84ab6cb51ff0b8c6b05874c3dd5b7dcb1a41400247916bda7399bb4e64508be9c924b338cb7b3fa649a863697685108a0534a747ed76baff120df94bade07cc735bc123504bd8074f687934af90e01efbf51b880343cbd24c824c11f9acf445cd6d043c931d331ac43c8408cb50953344311dff29b7db86401a0980e4c09c4282e8f9398bd7d4c7f9f9e97c2defd96a20a0417800e2bf0dba05fe27ddd8c8f252b37216b18dd1b2c4f72f30e775e6ccf0e3c5e0a343c6fc74e8cbad1b84776d6c8322e4a0c9ea340b8ffa4661aaecdd850d852d238519a1cf53955fd277dadc26fcb766662200a236d62d2ef5c23763fc1e0a8fce0843a3d2809937253e80db86104ec8aa64fb00982a3c52b5912b9454ba37f1d6f0536e1975a02e9bcc9077c181990654995978a77055a25b0279ab8e441bab05337ab2b22baf91dfd9a3b71863a2a313fc89bfa13cd49b168bbc40e11855cc857db2c2cfc21bbf4b016a6f5383b29cfa58dec3cbb965a988bf974f315a8c2655d3556cbf9361333d524c5ee609edde620c94dae133ce0161789a57052b722e904c7c3904dc3763facd7adac39882fa128f68e0fdf0d5d19c24b6aa4356e0b99d7ec52e10836114d0df625b0964312a2ac0f5a8007ec42c9884b0e9fb90de87be586f20e82610e3dabe711e0443c9eca1bc416a10c14a18219fa3fc8ab56d684794d8adf14c8abb73025545fbd926e7c8bce98e0e97ba02889e3d5f29a48410575f699f2592b7812cb173a41ea0408a60636e58886343024189f6d99f5bb848d6f2924c50b1bf49f96f62050f7d9a7874e7bd1ce37d653c2542d7df9a7a54a686543cdc884e11c1a59ba0e092aefc953fcfa4ab710700efb0522b63b5c4fd717185bfc45f7bb71460872fd7c08d1d6da38dfa144d2b97b6c1402c955948009c1918e3cc09c6a3de01c7ec786747cacb7679d9a3936d50bc7c535d5ee840d7c8a12dcdc9ce3ed6d6ef842038c2aef86452a9c33234ec8ed04978f03b95ef109c8136caf4f95dc3a648fab13ada0bbcca1a201c1f90816f7eb16e522e215a181a484ce251ecf5787c75a43a28e65123ce7628a4e427e3082c40dc05953f0e0f75ff0954fc02116d526b444411c10ec8181a95aa2cccc3bd7a28a6207c1e4a41a8069c68dc3a8a62eb0646518cf3ea849c61b5642532e81a9daa0d0523963efea908076040dcd51789796d1937102038ccf68f4f70b94c6ec803b2190d0401bf522b91e535d54ac1259fe2188e82201713a626d9d5c697da1a9843da546aa28419d40d76be494ac51ba09468c34bb672d3956089e8c6ed5b7a3c4be2e560343faf3e862733f9c8786b9b97bf1fcdc3f3dbcb0874e7ddd5cab04a60fc8519c87fe34b24bfb08ee04c5563c5f900b328bb777c94740cadb99649f40032b99f8e3fa0534a95dda572b2b4f28d1511673848c8cd69bb35984dfd90950b29fe022819956686e57a23f05c4548d6626060bffa668df5f5874c5538056d2aaa3c5b70d523242e29c7652f1d1bd4ba76d685e8c8d7879a72a8bac71f45b19721a273e776ff431042a434685ffee005bf36ef343eedc8e03ecdfae489f65b26afc543c91afd24d6967deaac11e7072f41626f830cfa9e48ab4688346fb5431fa7c995a606718b293a4a12811e731a5be66d4c7e2ef1763e43f23a8e1c8dd6fa53a3269f37f34ed3fac3944cfe708c9b9eccf5a8b8490b6e1ee0b698e4609e6c448d2c8ca195686629e0e66ddb026eb10e05034e5f3b80cf82a186c4d7b69a3b10886e483c204b36403e13b60590e027d386ae1c7708340b314fb1621acdad338833403c5e06c2a575942218c1effcc408ed80e4e58557b5eb2a3ad63995e13d85d2d040934c45cb248fe5cf13f01f8c30c64119935c869d9a3607dbe4864c8416360797edd224bd56dcecd7690528fbc92e70a2de5abf0dcfd8ab13967e9bc18ba1f18d6af26020878398996e70c5a9adf80b8c1690fc1ce134ec7f8ae81bba7381912c0c3c929cc5572d1497472016a174426151d0567644f9fc140322c4ffa1b431471a2bdc6ebfaeca09b6485e3bb1d4659cde611fdab5d4aae5c55fb2ac808645e5efc7e0c1c5d91e2447e8d8db6b03de5b59cd2288e00db8c2b2b4ae52bd731ae9c168eff5425d529ebb670585f0b4af65f0bf662ab62b296c84018339c0ca297580ba692c62da6303a8abd5f64fd6dfbd262728938ae6b265c3529362421a085caed56c3b9200725f62f6c4d44b0db8740578218e0523a50b04192a1fbb11a55b8ef63f4bdb8e970b1f35bf94f6b6e45ebc1bd63d22d539c4ccdffac2060f127c1fb6953f8ce7dacc313f5b6d6c99fb7d311a796dff899ae3a6ff7ddcf541b79bff34e0c56704980ae4c0e5a58d18395a10328875b45f688df36c6ad2281a777becfb05294d69e5990ee642f5c2151ce08f822233c2dae4f87254ef5d4643e1460e196fa05fc8a2e4186dba68906298991541570785f81734e7d2a6311e633b5b9ec028cce1031e3519fd3f44df85576eae33a072ef126ad91d7ae266c9ae8176e80d04e529d9893299e685598889a1e9f32fe9b5cea5a31ed0fb234d92ed47257df65513f5bd9df2aecbb12c70c0ab53912876ed3b5efa72070b39d13ca230270c73a3837ca5ef7bb16e3794602113ef9ffa62f3f78a422304737907b115f063f0105e31b0bdbd84a2917fc7c3937e871abbf67f7f15b3e98b8e7139eacabf5a26978a1aa70094890aab9d6b6db4fade59cb2003ad02188c86afeba256402f19575d8e82fffc69a7608ce254df7fac6d80ee5feb2eb8d6c4e082dcc8d57b3f2815e5c72f612b05e1bb780c19b3bc2403b799544c764caa22f3df1361f886a5e4f3ca3a853931cbec13afd045795dcc9355ade8184be36301793b9ba8b0925baf1e0c4dd444e9959b62fc1c566c863c40ac5afb794b8c0e6ac24c5fce4e837bad0cd937382733bd5b8f44202c0889f1966119c50f5002715fb72d984f65175d9b9da4364eeabfb9687883d527af321d4bf0687a46a3ada352e8a2b702a3ca15dc73d1a1045572c8b2b9640ef4e06dd9b054432c5798db0b736d98a24ab75426173e15b0b51a7d26e7771d31659f829650eea418b802004289fe0f155d8d4c09ff2c7843e180c8b634e10a2414b318dc6672755a4fc8059731de91b21ebd90d79d656b9335759580cd822406060fa9ce4e1402275d5658b01fc050d511864fa0adab9f66ba72fb42341aa38d3a5200fd9172d20ab9337d374920af6daabc479908ad7e7bd94d03fc11f1b34397e894f39fba9e149d024a44b54134359c17be865403c12b48604498352fd4855a02a794c7b5fba8ee36fba3eae928ac3d8e7a246c421c8b855d85aef97a2bb538996c4b6a9b4376ac910db4f055b07a5a0481d80643e35b55414ef06aba4ff933059324607d0a3c49c46d81e94d854819ccc58e8cc57f403e11f31c7c12274436fbbaab174c2d0309299d440335388158d59208ee5ac05f371bc0b00ea1419dc4d64b432fb88342c284ff53732fdf035f8d571cc57821fefbe5ed84d461cc85048e833383540d3e6059c400c8284675c00374c502c879da5c24021330317e84a8572b450054fda7c6332424ca2278fb9fa4a621943abd82bc3bd0ab8c94177a03bc33b0a1e2e4f735ad94ec639d0a9c82ab850612454d4073e6520af35f8e2485af143a3a43f69b927c508a5971a0786541d267c0ef1fcbabe113dbf9ce223115e8145ff55c1789e37dd948bafba060a8aa7eb025280db4d070cd337943ac67a860cb574286b6518e2abb0c05e5264ddf5f53c1a60827ad23ea1d159cce404b7aff307dddb5f10f833c08d956bdc75d92176d9f0aed701e3eda3b9d4907283135e2c27110086eb8c06ef5c90440154ce81ab8ef6c996c112cb584b5391aaf5436f05ff52dc8158cfe27c6b14d316075e8e6b10f02d5a2a97d889e6c00011031ad65f27fc89a7483093be8c8be30c5149022a8802b2f97411a0368e7218e4b2ca8f2676f09b1e7075e66c1f66368c618037111c13251c095a511b61539fd8fbe03630192d62e73c4c760121a86e8d0d04b9cd8759e6cdb183f70de3c7584f6ffc5b782fd5c8d5e3daad1568ea6f573288a3b608296062d60127853260173cb6499699b3ecb091c4abc7966fa0b6588e844cd05a4ec9e51924bf207822e54f8b7ffe002709073e5fa1e8686871a7952cb2f9135d39a9e236bf268fe8b80d9c2d5952cb98114fbebafad38d995d5234588dfcb49612c5755239dac76fca05c6031052963ca7aa5b29e9e8f8b15248611f714127e4f35360c56a31624e8edcdcc0311a7e0a3ae99e113eac246c20f4d78b5e65eb03213066fd627416d32cd005349e910f98f4fe8fec36bc000ca0e50e1a37de0fee6adc8c5624e334e845e46614c375331aca3943a4d43912e01c52d0b80eb6524354d4e8914d8584292f65b30a2281d3864c659a1add0d9fe8fd94130b860841f0f4fefce62f6150800239b94289aeea8b6c2ddd03228ffeec3c2255e108132e71d231db401f348aaba53e94f5f7a806e966aca24f1ffefaaf54f46e317738be9b921ab2d7eeb01757dcf81fefae4d31aa346be6083f46441ec2e8753558e2873d6c800e18dadd8db5b5a2c67b0f18a0bc9e107156bd58b087594ae0a49200a859e68ff5a075e0e2bdf9f3b7bb04c81e25ca5ba372b768d8e43485d145540f884170d6f9fd780cc482600e2d7ce12ada42536f340de21ad67d9ab48d1b6c880987a708f93f60e68e5db4fc23677b2dac20b85184b5c2d783484fd21720705d41295038003b900d22d69d0cb87943944c4322e98e045d6a6b8e9f30ea893d651a334b6c26b1e7348eb38b36c4eaf328e9e9c3c29764d2edc291f84fb1b42a9025035ee9d9d5fae80e2b708101b7abdf5ca35c7827912ab38300cebf860fe1aebe523f39d4ad65eead59711146811cf01d4cb5226a3b9507653043ec4ccbcee73a2e6051c4cf878029402d0d727875e4e2bbc263834513f167902eb97535080768b5b800308b5cca4a999164979dfdf8f5f7d4d8d9daf59c9d6152faac1e418f9374653b9e695c2dcd71af6c46d5723f1958bc5c9faebd831c7b39b2ebbae4d8a41a7732708188bff0593e32ab0dc888bdc739d8af469a4393082c810e2a96014d13bca26bbd1678df88fac61c2c61fa9c5dcfbd642eb1264c48b21eb24f5f1b5d8d36864166f64954574b121c9064001595b7ca26be965c66a5da0d5b2dda1e94e753cf64832e58c6cf4d86a521a3540a6b661b4331af49def3a432c46b40a1c769dc7150f7006ea6b33019d4c0e19a99118e526db27382b77166af141e4c50f3e9e502aaf5b385a1ae1c339ecbc4a3b890f62c73aa2496305386d4fbfd457c267d8dc6a943895f418312fc319313698f9f8807d288cca6a8cf82fbdd17c0adee12438ef4e9c2d3639bca47acfe583c07d82c275a2abd82cee5b324f98f8863712dc9dc26d1a04d4615d692e01754096f33f01d8a71690d40308518c1d51e678017588b1282a8a74940608a8032c5aa633564cc7907a06315e16500761869828b8ba866f037c09a8a35e2da8e33419eee217ea5873e69914eafca0a0de7d9d1f782d489ac64f3ad4d1c0118dd5b54983ae6d4945bc0e75f8f831950775d094f15781238a102f5299aa08e841eb85b604282f27096801376eab83dfe46c1cef8ae77bedea1619536d9d8caf431ded85a0ce9f72808adaa18e8b8edeb307541e00e60dedb3a2017ba6bd6c3acd5afe8880f076b377076f76e087c0f4c8c8818b4d1fb1b7c3f161aea3dcf5706502da005aade3a97ff452ae8c1df2f9d166a1c2cd32f89ad7e27508a092603d31505ee02dd1219bb366ba4e19b751a2d4e8bd8da73a8a85923e0e9945c35cc46768b1605a67a58b43ecc5388e0cfa88007504c2285e518decc52d26829fd8b85e662a57181b74f8fc685fe3036cd19cf8aec00ae8d54c0188468bbbe3caa187b46192b11e04f6f37bdc589d2ad8da2f7261cfab07a4707f488accb2817f1ee693b5167c80c64c209174f79b9da8a510f545efc0ce02216e80963ad1806cebe8202a81ee5e6e985451a8eab3b5c791357921bd32a4fb54e3af80d6d0951bf0bf6ff4cd65f52454c2586a6f48ea5eea80b484377cc383232753951a8c69364470fedffbbdc76e409f4bb8a90e5df9a1bf235c8d354a28758d86512d4d33cbe059d550e3c4126936cdea7bb4df97a22716e9c0305f1e8f69136ba44a9645fed225286261f8bd41847f3a9982602288d1c502eaaa64bd70a40b0ba3a688e2c07aee8c241e41a958255fce8048629546fba09fac5d95553088577376309ad3d151520d1973b0f2a13727efaad1a19f0cc4773d2da762a0cf0c77877318aa937ee854fc9c1362b880bf295a64bc44d9aaa8e8200acb3c34282391b4496acaa825fd832bdb8d38a6e94cee10ede07e7c10918097ec7149eef4fdfac98e96805fc7f0b6f75ed9819dfd4b1835b72ff96885b7042559235c9208bd4fe59a992491e43a41b1234316f24a79578d4499577574d1ec4aaf24ae5587b33efe4259647d418c0033e8c35418dab087bde2bd2f796feb0dad1d2ac91de58a0167e9b2f13d56376e9c068ab51ec62fcd1387acee2943d14e4f13f9b618aaa6c594ef6634fa3b4d06631b448c6f92e35e025dc12f9b588c6bc80515876539b363d337854026bbd37a60e3094172649da2cf988c3b776fd89530be70279eb30f699c38a12ce8c15a2cc9c1131fe2572b106d449604bbc8154d5af80c198ec3e424c3b6d884222595cf23cba313913ce7dff471c577cc917bc70434df3164da0d8ac5308a46d4a50f7339e6b46cdba0374c42c853d166b215f16d1b29767460f61a98e8005b8ee57f398e4379e9c550e5d31603d5448afc49d25481150a106708275fc1ef3f01309e9b907ec668ba89086a8dcff8a9bb123260ec56344a54dab944b503304547cf8ac6d7335a7429d85af9f0c23bfc3745fa0006f108e3fe0c5af9067ae576faeb92cfa7f6e5379c174df6e7db75bed13f7cf553e15cc3ce1b7039a462d0fce05b1901fbd4cd278d0b000a45838f64f96244e890630ce1a8f2b3fcf11b7a6583dd6bbf5ec5239546ac6d20f6f5b98badaf1a80c9a620a16251dd6903d2fba1a334755c4f6fdab3da88ae1bc466a6d4213823924614a6650cf11f27747b2269b801a3c6e0c0cc6564692406b8b06e3adbca8d55649812326617ae7429f208f9c489dc075e47d6694251076aa595b9614ccb2148b853736c628cbbc23dcf64dd0c714cb31cf85cade8cf19be67582571df0f8ba2760d4670852f860c312512288cdfbc02407c919111726470dc17a1eddff0f973e55f145d1aaf82e32e984a5c88c847f97f30852f5447adcf0b5e3c547841031824f474b931b40331f3bbf3561ad907ce7dfae9af2f3ff836d01e675b15927aa6ef992b07a3db9c07e3605bbeff12817681d3ab38ce585bebaf6d8b8caf5556a075ad9b755808ec23d01de37fb7f22000a684f6ffb701ef6af0fc9b689f7a57636c61d3e6a5fed420bf51062d22ea304730c97dcb7797a36821dd77fda53b145558b89f1866eb35e7d194d438807f734ec1fdce1d136c3a85ac442c6131e455c8dca7b6b581494d5844cb21812f37809a47e20fb4836700f334145b15b6bf858483d5261a0f3abea4b378d64719a113091c48288af04feca285e99d1edcf0cad21e54aac392d90b4aefaaf0631dd8630e05d68b386a06afe5b74e55ef8012d9ff5e3d8736c229f6687f9987a02a9dbe4bfacc34d72cf93443af33bf7ab720d15671741db2e822e465f22074c5b06393141fb8a2d3c9a338662258047e348fec2713d61cc583d6239b323ff58c69ee61b5042fb9daa45411ec843552228bd1af822cab0e8ccc960877069deef31b5dd2896d94c7c42126c59354cd35b70e005a3eb9832830bed06683b783fc1ac2935e4cfdc862bddd4125d595c204bcf5b86a5edcee2fc412132d238dcfd90c35ffbe77d588711f2fe10de95d06db8edd9a7ea41bd47a1d186fc0a759044e49a30e1d45afabd7866dbc2913cb0bf2c30f893089ae2696b343dc4f2ac549f822a181d83d13ea219a473df6d9677f361e52c0bb5243b907255d9617f9592c3e03ca63267c5b3052b29a0eaaf0684d9db4ead68ba56dcdd5ca940fa4a97b5ec43336dba0edf9d7dd904c2d9ed55bd10e4c962c46ed0cf1f88e7a1c04100451a9ddbee5e7de47de1b75431eaa67d476c8a5316b4f0119c3a25adb7bcb2da54c49a6780755071708a86f9ef8a580fa21f115703f6a36041aa7711fab1602cd1a699efa8e5261fbfa23bc1f710f7fa14ad4ad9325d2d946f9e04745a11b801d1f6df7fc118942d77b9ce25067d46033cf3874713e943f3fb44370de7fe2d045e1d821a897cf29f942754c50df813874e5abc1692514892400bb922f80ff8943f38b38ff50fa4bb743e4bb7cc779c7715f2dc01fe771381085e4ef349121a8e7f732e6c992e0df31e996b41d884397c88d7690f035503d3300df46c2f7f21287789ab8fb03dd8d280586d7850538a73bf21bee71f351c7872ccbf1214fc1549e9b4899e00d002952c1372d0683fd1fe7482418af5b9cffe6da8836d7dd946c44f17262f845c59afee69b8fe45122bd24d24b227d8e1c1da9785333c651c139f7a8d6eee888b3ee47366cd8f86bc3c633ca072bddf81b126f71e38f9102c3ebe2c6df90ba6f93b10df915341304ca86db8d3c7b592ae6c978dcc8056dcf7e13ed66d460bbdd3a54d21684daa210149e5152b7c29f28d43f61dd9273ca16b40559b0e94a5b9b5e1efc6abc8e2fccc92191409b2ff48be3430a753e89c442bc31bf508766be606ee8477e14320e6ee847f3064a48a41af47b79986f4bb20929e9560bdae6ea1651b75ebe43718cdb90a77db809d5a6ba857b1746c03d92c8c3592391a77edc9ab41b4ea17ba48a977b62be24129406fb157b8838441a60b831a8596e639b2fbfe9f9723a5f8ce2b6192eefd685fbfeb20d8b6817f57f7aa4065fcfdae56ebd428aea9195e35c3e302fb52acdba3082ed91449ecd73365bc4fd4a85c8b3fd90a21018893c4221d01e88875f37de88aa80678d00f16c1f513d45b54a24be79798e4f994b2457519844baa11fb185ddc833b5ee23271af749287dd32678f316f95111c7d939a56ffabbae51d3ce9713de56d98f989fb2cfa05248a428ec364dea5644323a4da07fa181fc050934b515525063fc0823b74d7af2b7ef24cfb6da26a7245d49f5ac0dc61eb20bd606034fb3d5f25f7f4e8a67c394273dde694e8a87a4fbc197482ca3a310517a2041949713b9710fee11a587a09b6abfa2631eddbb7cf984c993a0eb2c6ddb8a5a00b543e4f7036491d8d916e40d4fd247bc737e1139510be896966d7fdb295a11cd4563d2751f8b7858c4e70feddd86b5fa9035b21ce2968c8e6d6e2ebb00f8e4c1d41376c412fa23d38edfc4132490da9105934c02f18498e595e5caedda8428cb124f28f2711f515b16376c1c62533331f1427eeda020a4483c21ca6209fd334e4bd412b780209e10bf181242bce2f6c7a825321179adb5e7624333d5243a66b9ecd98d5dcc0b6999eafd2b32afcb1a9cb9cb1a4b83b36a5b36eb1996efbe6731322c31add458dc8871620ea2d6d2b36ef2204fd24b431df3f18ddf7dc7dfc5c8d6971adc42c9e5ae8b71753e73a518eb4a71c86fda976c7c988ae118fecefaacc15ef2d9c7fc4e4f89b161c3d44c4c8af9307e3e537a451b639971620e561d6343a0a01bd39c148f3f6c595864c67c45341f31bf45a348149f23510b5308ed8bb78db887dfcb9fc3fde9b64b49c39cdc97cb301a88683822a4e5fa659810d3edb8c78b5f571fed77f5eb58c33a69c8574cba3e3a3232621287647ce1c632de67dc83fb72d832c689b1a1b310551f0bf1aebebe7dd4adf8a7e7af05edc6b08876ebcfd88675ac5bf55dd3eee935d48fd3137149ea560bda8df999ef588742f5ccd4cba898185b447b222ea7ff869c3e9e7ea75dde08bb4bdc041042322c5994dcfeda673e73a51c1db12cbe4506dd963b30b5eb705f70c3d387e2be2331c432789ad4475279fe3b9787f9d3b7b2f1b7b35ffd88fa313fdbc550ea1d8df9cdc6c4c48f315f8d6f3a9fbeccc728e3dda44a2cc52658b0044382c9b3c89818abb240375acff26c7d16971ab444fc951accf2f2429f0d2132c467ae14ad67b99d2b4940e6a935b28a79fa918706a6a4e5c6ef58b76ad830de8e8571e8848070de383fd4e2574ec0d46efcedbb2dc684176f8def988f4eaaf9f937547f8aa807ac7ed558965a0b3680cfba45847dacdedf513fbab55cefc338d45ab001faf9ebd4d74bcc037829008d8f9c12de5481fd262c222f919f4356efcf4656313685ee87f02be01a01e2a1ef02b5489a1051c0edbe79220fcd77cfcff463bea2694340279dcfb668042ed0bc0b3cf30b01b5469a87460599a7b1a16a658984b16b6a84df69105cff8874d297604fa06ce1e276efa1aa9377f5617cd5874356d10ea91f55271954cf08a7992b752dc8dbb3066d63695076c4ab77c6aee2cf7c11a9fa227e7d74df7dd8dd3b20feea5776b580beddb7b001a0bb5a40f7ab5f7dc06fcc03dd21f53df5f57a966e455f9241f5a8ac8e17a3a581fa11dfc647bb4aa1bf3760e381ae8def34940a32cfdfb461fb28c5a40bd98916d0a12820f34b7861cb965c1fc3cf5f13c17c20b831b65d0dc27ca8af11f616dd83ce82fa7e3594466a302988c7fd1685176f7c1a79bc2708675d1881f648228ff63bbd71aa884a817bcc79a3d00de35074314ecfe794f0a8352203108f08e8bb3002fa48220ffd300ef94d8d433e1b62242139bb8c83be1081bade4a9842c4d484cad5a4dfaa3ef3681708bfebffdf95df9e4ad52a3fd560cb9fe15e7efff35dff2ece2faa7e804fa7084f27ba0d3d9d2732082c998ac82a643b48a8c1ee32cff17ce2095d373d2e6ebffb6c4ecafd80f9115e15136f10a9e013ae708f99cff16194e9f83062013f96e31bd5a3e31b359d7207fa90dfc8f1dda7e3a9049f829fe3f93b1710049f67f8fdc6bcb0658da5650d1e110a629cf6d9e132b0b21a4bcfa86d2529bcb0655fe7a799cf6b9e51333f1ec09143c7e733576aa15eb72e7bc97f49096caf7de741bc64032fe4a58efbec6b27f0f3d7f1d17c8eafa65f9ed34bfdc2f1c5cbbd738f837b1bee6d6c5871d8d04ba5bef3138e8f6f916e398ee7fe07d5c371383cfb85363edc03c7db0f6fdcd43387a99baa37e56e637178de737e7fc09c56ab5aeba99e9e512a6c7ffa181c063e215a168a78f7dfe6fb3d887bcc7cd7d024c1f1a1d74bab99b744ac056d3ee61266be0a73e3d3d47ca76ffae0f79ed5adde3ecca37adc8641588c1382207ebbbed0e672a815a55afc8f4ff0e112fa230e97cdccae85f867be786f7c2c14f1eeccd3bccbacc737dcd7589a2f7209dcf32719e4debfd35719e47ee6bbdcf7b446fe339de71eaa87e769657d4418fbabcfda8f3664755f1884e643b046e2d8d12d9e61f58cd267caba361f52d6f5ec109bf7675dcf0ef19e3e9f6aa03ceab1ae071ab43f3e00b02bfa00f8152daaf605162f514a29b5b1a1366fc3a29e0c879535e08d1bbaacfb42d6ccbfb7fa42d67d6a3bc0badef6e75d5c49bb36df583c4dfc3dc607ba3bbd7a899af91eea1bef35cd09373acfb6500f45a124f36bbed5d37cf1ba2cbefc1b5d094ff3f19d34bc9bb19571561f1b71bba26da24e293275ac1a78a1cbda15feb0ae472695eafd0b83dc696bbcea8bb1f1a538e619d553e365beb8253625e956076caef73035bed3bcc8913bc8b5b8d42dafefc208ea23893cd51a893cdbbb07f6c03fd53941faa6eb091ae012fadd87b8070e5c7b8840dcfe17f8fc34d8de7df9181160009c10003693d2e93297b9278bdfcbcb09c5a1be13c7b173eff97820c9a3cf97fed8dcf8fd2fa1264f276a3f302fbbcc409d5caccfa8156565dec9ca2427eb908c35e439a954c5222baaef322ffa9cd627109e941aaa47ca13b32acbb560f2817f11e432bf41e67930304964e30509d42f38d09c0c58d231abbfe7f5afb1af5b22b10cd941740ff0e2cb06d9935a6b9ad68138a4fdc438bda5e8b69751e86edcfbcb2aedcb2b85c27aa5bfec34a118b50f35a959d9cdbcf9ac695aa769dc56b528c4d364da0e44a13b44dae963746c134e1ee3f233181ebf06986727661e1c98426c0169b063eef2a14e815b518777b95cd53213c8d1c595ab7c31ce94522a719f2f5cf9fdede21e4fc3f945b42b5b2ae91ccfd1a64b1965c44fda8e83545249dfb81a6c57e27249253edcf58a41d75d9ed3aeea7d33ce974b12297bc25e53fc039c239de0e80383ae069de01cff816f5aba1af4415e25f2c53832f6035be12e79e5fac02d3985c16ec926189cc28b44d1c5041ef384d115c4157bf98d44923378d7eb954a7d1e83f2e30ff27b0652be74b9fc2d5c2ef954ca97527e2867b114cc932f697de4cfda60ea72e49e51e491c7ed74182ddda941c99dac57cab73a3a2c4429e5945a94dc79e50a0d535cb4679bf014bb34f0f83be648948a42f8a4887e5243783102bdf12312512feee495c3114eba27270de64fb8a549c160b3107b5e84c0010c8ce74180c660a8f0003fc2f9a2304b246af1c53de27be7a4410dd621cd57d71d39914814c98fa6ec90e88cf6a85bce3d8ee05685d52818ec90a2e056b5c2608d356825469637af67e9568c97b9c77cfeca3875e9324a0a6ed51b30d85f637e73036e31dd98e7541fb050ddc29b92ea0356629d0f6b4e37d43940726daab66e6950561fdc7e59953a6773b92bcb0f1a2fdfdd7dce64a998077ba576783675a633428773e68b732412730bd51db1444924a944678444924abc3c47873932b3339223b14714fba0f1a81a302fdfa17abcef4cf0b4a4065b8371310aa3309a449b7210d12bdd115582d125ca44b7501917eb90ba156ab0ce09a7c166a07a286cbee694c934b7cc24a48965c2e66c2e4d2d3326918eee10373c5d0ae31ef23614623cb92d9ddba89eeef993b733c1f37902bfa31df366b431614965ad5eadb57ad16390cac037545e4a5f06ce619e96798e4edfd00f6be8a56413255de36d6652f9257cf30dc0bdf61c5183cd05c1607332f04d6f61c5d91124d95bdce049a749ce6b1f92e769d27a8ea85b9c5183cd2d6124cfe18efca69f04241cbb03a97335b8845b9d0f0cf66fb2582ce5d1280e5d295390cfa797ecd209d1117dfc48a4fb4e08693b26302fec88aeecd3fca812c6691a1a1a9a099bb16fbe7cf89a1bff35b19a58cd87f546d38da61b1fd6edb9285ee8475c14cfc82a3e4c68264f3a9ffffc6412c6e99caf48fbd657c41d7d2ae5796e80cf7db059f977470cf6ff2ab68aad42ae69a629ac4e7f077d9ca74f027d126c58716ce8edb061eacaf0c87c274ff473e61e3b60ddc2f11c8ec75bcb9e63ffda017c5809f0cc3905781c5cfadff3f874fc867e013efa04f8e80fe0dbe252fa2c4a1fe7f31aa438703c378e77f9b81df4e9efb4d3efe44966c7f7fbdd612be37877920f837ac0e9444bf848e3e977eda79f6f6415df08108ff62e681f79ea3c3d7f171c8549096ec8e299f6c50fa10a244c2db002461949515c05a080089684881c48b941f3424b47630ca62458726513d6abb2882bdfeb3a4e4a2993b8127c9b7f940ab421aecc65d891979619dc7eef65875ee202ed4086113f90218a0d31c8c275833438775a8724db2d4f9db303a6e22be9045294f0c083142401060d7060ada9845f600143810c8ac2d801951b844829e5cb2aa5649994524a2961574aaa69554a29a594529355d3344d0535b8b0b2852b69871c600185a621a105aa85bc7c662bf8d8a0068e154894983cf12289294f683ba670e2eaa480290c2a3898620c2d53ee084e8c98c19231ac5c5981bbdbe0babbbbbbbbbb0d294461c1185b349145194d785cca751ad470e5baa454737777d7dcdddd9d4e4aa9e6eeeeee1488cd29bd06f7157c3103ecc8125b9878dca35c77f7e932ca89ce39276b4e1d2ae79c73ce39e79c73522a259562d4e89d191029819418554122081ea41c0106cf6ce2ce29259554d617e2399a0d22eba4b3baa4a77a85bc7c78b6820fa572ce09547434c61139b8810c4894f04c7fdda9823b679554a3dabc614e1d264c41bc8868708203cf7426ee9c73d2e942e69c73fa9cd2a93cd182ba0d932f71f9091ba660f9a28b21a0b812486ef8e20ba5a42b8cacb8d88b2a415590c05025c99441872a3854e181c370628992143fd832851050bac092234e114477b8a189112e2ae0a060492452c6b8ba2430485922090f9d03c0b86082be48818312304802c6942c7c06727519c68510975e8671a1822d0a195c0c84f1c4173e30e2881555c068330035a901d20c52f0b044460d4944516506296147aae0c17a56db30050b25788036cf43e700326cd129b84030d460072d3a98418728561033a9707d0512ceb0eac1a4ae9092e575e5ef60e9eca0c0b0d3e5268a94345164a42d41ba2584c18518463c995171c2f252ff36e00e963b7c52a6a8e2c5ecc1b779ef3712bc4727d0922524e001892753a810034472a5df267539ca125bdc1a97a32c51e586cf9a2e7872895c49c20aa12d4bb80803e6f5cf62f1d03900b35e0870c50fbace9be142400c2d685a520419478680c4911a8eb8589e0e8b07eb599b122d96d820a36105328411038f3c2286239e88618919628ac5238b0c3f18c20d592f4a8593cb4ef020eba288227488b282f8da410148033c87b372cb610252a844e9a20731d0f0821d4fd000849dae7b171b70826ed801f2426187b53383943f5cf9a9cd2e6047fb74783408c4db410148035cf0440ddfad76c1950fd6b0e4cadfc1ba3b1f0a7d13ff8777e372941a925c97cb51681823a61d31e202215d9105134a46478220450c977102a2abc9d3d56aadb552adab9a574d3b42071d27e4e5335bc1475312032a59f880895684580d54488cc636a394565ae946b7ca51e72ac771b53a477dab5ca51ca53dd864344ddb3856a54708c14c16a59aa6699aa671b4d24ab9add25a2bc7a164ad9aa6699a060494efcc80bc500052857260d0822b8eccb62022075e44138ed26d0a9916f2f299ade0c3515a698512c3c59d1947e9945c85396902d5b510d7b4214d051f5600042276b0e24a0e3cdad1d534245de52a57b7fa74abd60a590108b7fa0088607043284e202183891c4e40440ca24836386d1aabc118b26cced93ad950435315428881d00f54967022b2dcf929a33b378a3a32c3165e141111b1051182e0992f1ab8f08084a20a129449c89c73ce39a94629a595d639e79c734e3ab728271a03a54790a09345a98ed4b42a2ba594524a354dd3a4d4a8dca1546a5a9595524a29d55094524a29d5344a29a554d336bb4919b64d13a346b3663c741ad46c6029b2e4608ba2a61ba020c1439bc4ca80620a1ea4a66955ab94524a29d528d5b44a29a59452aa51a9d1936c14a8054229a594522b376dd3b617c2514a2985a28a0e2ea59aa6555929a52d06cd41e8521ba441cb0d4a264a29ec08312ea5f461ac04606e58614774f104cb0d791683744861727de4c08258920e45405411c3f751875648999805476ebf04d2002c27661d669035bff7e857ce914f6d18df67586432b68e255a9fb94c36c3d260cb18e7e5373d78b4290c1d982813c364f22533d262600565056505556573c5a3ebee291fcf719e2077231533d1174bbbfdc00b25ecfa3b52837ec438feecf29b074877cdc86f9c0bcf3dca2dd6ad851a51248ab444a778376a411be7acb6eda535d264b3f5e51bd1ac0fb9bc21971d5cce1fd8ee8ad65d43eeaac2e31d5c438cd394a9e9d26f767b8952cdc6e88bca6e3fa5b0db14c96f2cfdc19716c138d352a390225d1ea983c7369446d4be00e1853ee44d7e4385179f93100a72ba83ce042fd6fab2a36396574100c495dbdf80b85221f2d0e7eb0df0f19b1a0069704a90391936bf35797a41ba3b72334713bcf831c659f13ec6b5c6987f716b183018603e311663484b15871aeb8b37bbe1cced7780c7549288dd303593f2687002d8b70d2e2ca5cb21d1feb0e4fb47d9443fac1f168be52c28642ae5b9ec77d93ffb6977e7794e741b0e83e8523ad6adffc3d2b697a89efad42d334e6c9453cacd19a78ffab0cee2649e7ca61ca5dbe7f11ce2fd827429671db0f9b1e1762642506ebf1ff1f9e12d922828c8975c9f1f0f386b89b5c4a2346ab8d090073528936191427287ced11173255e722dde248364125ff2f1a01f5e2ad27e6a3f51f19973b4d7deb1748ec642fc22f5f23b93d26dfafde03bf3369de5a33ff3f1e5f8dd17b984eee3d7ddf847ad5fefe832a65e5aea2c3e1cc771dc6bbefa66668af2d177f52e736f6eabef27dacfdd1609fdcc176f2f752b4be73033d3a71fb1b020f9f43955c63625ab8ce3b7631e5ebc3e8bb5506fb4f14a834b596c92c448690b5d894b334b83714936d3f7f43c1ed3cb770316e506ec46d247a95abd509e47a37ef1de8075ebe5fd6f24bdbcb02fdd9dc671c38aeba8df6246f898270e3169e1791f079cc963f23ca6d38ddd873a5ca503c7ebfa8d760418e32079e1ea058bab170af5dd08b0ebffb27aa1f87a4c57e651619754e375fd6bbcbcdf6999191ff315cd904fe39347ee8b0d6192aebfe732e3e8fa732e5a6a30ad5e301d46a71b8e000bc0d0651c0d245f88401ddd210535043e8bc701741a94ad84c441ad5a58ad1dd9c39ddfdbf013d275773a943878e2d4038c44416d9238a84d4d6a53450d81d1751c9b9b658cb59b66fe5330299819cf7de63f0593829991929b6d40f0677ec626c5cccc1c638c1d63ec189bbbbb3f7233333333737c1a3c38e1c40e95891da80c4165089b50006c64c4424741321f4ad708ec4a351ffad2cc87ce44f3a13725e5308a25784b957aeef1522f142f9439924432da2c9ed011114bf0771722a2ebafc13c8706cc6ffc6928cdaedfd547d344b3a5c11aa19a2167d25446ee35b626c8a50c2fac696f4883a99876dabd67860b8aded4577483aa9896667ea362a23a5221bd54b095e7dca839ba31850529a594b3ce39513d310f818d87e63b8e1d639497e872323231e660d237aaef36d56aa592398e56aa2f87110d4d0ae669cc53544fcc1127eda4d5add67a579f0db24784649cf48d5b9923255ea83a7d2a6555274d43f5c4bc8682c0c6e37dc7b1638caadf69555fef3bd26486cbcbc46460dfd7f46d099af9ac901d9239aaa1a1247334e3bb0e262666c6778f4b8c31d543828b71fc677c398c72a4be1c47455ea832522175cb8849b762de5f75d42d98f75739e956f8235df7f430ef2cbd1c461649a5b2aaeebb7aea275e98c3a8064a4fcd8b3b75155d649f7132c1ab71c22135e82929a59452caf8a92ffcb1354e1af41a280dfac778579f156ad0dfc6679334e85ff3d921bf39ddd4578354a39ab9105dff113e95cc6f683e150d98bb4b1b7a17767dc6aa8cfcc6655446b09aa36e49a5ab3d7d9551839d0f5e287324e32fe3a45b331ccaa591c328c7518fcd1e750b654f271bfe38d345bd8def4e2aefb34c78a76d7cd688092f5ed48716f5c33269d01ff51da56ad5d6c832f130f6b0b1d3a145baeee24b77c67b1ff3a85c334f2edd14077c29f55deaa50d7de9c78c1b552fc31c46375a9511e3a4c00b49705dff550fae8d27c1c53de277375a171b24b85c9e51a750da1f5fbaa87739f21bff5a6bd85025147657648e5cc67f048e2b5767c4dfe998af48e879bc87f98abcef8ee433556fbad283922e0d1b659c51afecae8432b3ebbf7d61ad3247d75f5319b1206b8e6ebd9571a4ebca2880a0cb385e9040f28546d10110756c43bff035a0aba552f589546ac6a7bb60b9fd21785db0748b7eda14777e606a2601b29ae0f6135ebfcbcc04db8dd665c638461ef8a137c2914ce26ead47208a34a6a0a0a0207601a556c62712ed07fa4a7b1aeab458a8c52e9608c838b923bc786d8d4ae4fb47d93f447ac714ba6739874ced2bd277f61785bc69eb2952e9b85bfd9d8f787dc638fc3020c71878cd7ca34bd7f9c740334a2ed8860c43d5188f260580c7010d701901976dd85fb9fbb5a8c5d7563ee2edcbdd6a1bca1bd2af946e5ff8633ba94121a8b731d7bf71e5e6fea8a473f9431d16c80ae86e4aa90de9f37383d2e6f64fc72e7f6fb15ae9426fda8662ecb887bc39e929c6b80d45fe7ebe0ee4b18de83a17172cb0f06483dac904ef4a0fbf16bbfc2e5878b5d6dacd883fe878060abc903d677ed1a4524a3a7b34c6915f2885ae7cd0e3c1dba8c08249a1cbf29c2a85ae149a1ff3783cf0883c2cbcb0a65e7ae18f37ddf8dca33618935d746c13ca1c45e74f51feae8b79d349055e586f2bf54d9ffcbb1fbc50934577e9502a6c3cd3bab8caf0421a4baedb4bfef98d577319b97b6a329fc5a62b3f2af1424d16658e7cbe60c6fc726a305e7ecd30849b6a9019c7bf88c7301d305d2d5645c785176fe8e2c23de2471d2d8317fe4da56a952fe58c5bff9d3e8530b7c6b6d2795ef51cf9fc1e4ce71c99b6893f7fd5be17203cffef7a34ed143def1bbace048f2b148fafd49efec4e269ef9ae58016bbd40e997288db9803f380b5f4941c64970143288213502879811751606e50c414322de4e5335bc1a7494c93a1264178155705196041c50d78c08492212447c151ac70c504649440862b3e54f152b18b3ec1fd49427403113b14f57003275d295f82b8b2631dc9d1e44af90229e550111597b5707245952943591031a37962a50440c8d2821a7ee0e92b562e97e1450aba48c281063ea82286a78071f4022b539458914595292e10126358c1021f88a0b42516e337884186cce5284cdcc0140b42670eae1a9a77b2eeeeee9e74d24967777777f76cba84d366506363e9b078e85413d020a1c0052d28c10c3b10c263556ef08136358ddac0935ee79139e79472a7a6b1b41c7220a30979f9cc56983968a1b2e79c73069929e4e5335b611e81a285d41f6ad01990170a53eb39c39c73ce29691fcdf025baf620940212a0e2ed54ce84ecb88fcd8c1be6320d74b8825f3d8344944b73a5b8191063054e90d14510c46002dfe6bdc7e1df7b9b148c6703ee90e1ca8bc6924192926b032d502de4e5335bc1a709ae564a6d5023eecc80bc5000d2c4501354780d2e500960f0c20a2090e10218b098bd783a13934a16cc06275e596ea3f04281db99764381c5e4a8bb4bf00264a7c169651096a4c08c7777f7a71efc1d2c9d1d2643dc7e14fae57214263ddc19379e42a8340dd7353dec14a2190000000053150000200c0a864342c158402228a3d21e14000c7aa8487c641b87933408510c42c810000800800000800102233335530000c6e979c41bcfedd1bb25af3377e37ffaab8dd4c6fbc693a5c6fddefae4f07bd005e2f2819b268693baf105a85ad8f81a1db8b7c68abbaabb15efc9aa8d6ecb66fe3bfff9d1808974b036ec20acff96882d89524ad737de511970a340ffd29c928d7fe034cf8d67bd346ea93c07aa7e0215453d2941dea2e76fc2c5ded1667bea428ab92af1a9371eae71fb46fe15b449f95f23dbf41481e7204f008ea63b63d2bcd6ec3907fbec4fb3e776db47739aa27e37db6ea27f5e731de97d350d03450cf73fab77cfea0c90cb3f70f628087d7a18163c8a6ef3b644ee0969014218512d3704cf3c725f8ea58278dc53df6bf724539768315dede6788b0c92a97052b8547419faa6d26cc417e706fd1bef013acc825b4fb50cc8ae2fd1285daaa9699fcaf8d667123e4da33716ac89049e584f352094c07a9f4b0af1be93842bb449456468634175da017630c9dfa860ffe7c96f0e2c530a74a9d617107a6a8123b3982d47133995caff0177e7bb39826ebee67a12013ada64bfe709c5937a25c1aee0bf0d21c981b9f813296d40723200b8cd786ecd6e20dc95f0d41d0e76090a04e8fec910beccd572be7e17499f30d5aa6fc653c39b6de2d687416ce5598ea5050e61d599bdd19d8b221e2b65d78291fd422a326d896f91ba947e10417b515b97e7ceaf45ab44df6b99202169359b12133b416447a0f83643d1ad7fb1aa4e42ce781bc70fdaebf6a3c08f2aca41690eb72022d46879a4d527e2e5f0190ce483406ceb624bcd391438242596e439e319eab49bf9a146afd03446fe07cddc850d6a195cafed8517912cae200e8058877e2e79bf03003abdf575e622c8603acef3620307097ee3ef4df4d29e9eb0d7c49cdfd1b2d02fc07d3fabac6d453e96834934ba55c51b580e66ccf3c96d8323f145046c2cd7e49987d2c1c8cb19ba989aa3b1424fa47eed8d304c385e712466c7fab5ac968bd99e11e05d5b0ab0acd7ed059b129411627a4d22bedd3132d80061c344a3a3ac1c4cbfd45a282ac8b3247ac24d628ec1d5dbb9d5918a81fb861f6b97d56096bd116a1163889e3b5cfa50c2666ff90f906a4a867b781780c0adcddf23f5dc10315000d91c9e12cdb5316103c9e56be56c122097810335d6e4590043d48257b9ef855988b732d03a6a08aa262a4b4970e38694ea7e7f8ec4a24f34a5f219d790002c6813132a91315b9108561ba23e6686a4456a0106bdf4770f53b7d1d4b9bf4dc8513b9f50629e6d5aafc57f0c46c604b9e5dd82a3154a9ff111422002882ad2ce5b26c984129eb5f37c8e6ba83bb984fdcae45e6dfe9d8b345cdc257ddbb70cd304b2ce1380e4c449af9e65e547aaf0b59849e82346d2c3b21e1e4056de18cfc8ecaac59f2509e973c9249a42e027e601601665ab3772a8fd8c2336cc6abe65289e780ea816545688057cb1d3a12cf58bb456a2754c002ed6ce4f0d80a330d31777f8bf4921c00d1a02a7fc74edc997fd178de8a471d198d54709ad31df9d7e3257c08674afccae701e79254e689267ce42e3680493f1416807b394ef961353a3cdc15138840be06545a496af147e94ea536769825ba4fa162775bb61c82272c454a02e136cd16a28d2b789b64590dc3dac402c66885305bb69b90de340551ae6ef127b56cf2acf6007ca0c046c964648a0494746416ac537e176204b25035848aadd2434cf98a565621a02bec523ac8f8cfd3169904ae532fb42f4b0b4c36a6e4bbc4ad68e7d8acb0685e5e125b1903f40c7ee7b36bfed4daab45854a5e517587d409e87b60b397b0c00b8871005e914b43f4d1d9b2ca281a340ce3e8d2f5bdafceac56b0a556bb9325084867acdb61dd70c64123a1bd199f36f19be48bccfa6723745930cb0f084ba16dd56c7480eaa07194ecba1996f74adc74ba924c4dbe8ec285693cb357721b2de19143572df624f232b17724621125be8d13650a6e5171a97ba1d4ad452770ebccb87d2c611fc96a49f14a01e091a9039a362c7aae993069168b8bd0da433a9d89054c814cbad6219abc26d52bc611eb200a7e23222488c829945a6ccdafab4463899ea4cb22bdaa97f371219a74849063a22359ef2d25984a2feda90c8d7f2bbeb335b37ad5fe8fbf1656ad06b2d9f7c07d01d145bf859821651a8da623b154453aef0f0811412d1c586878d3bcb4fc358fc05658bf56dc05d2eb74b76501dd7957e4fb1b18920d502fe93129e049ec4709f4000f75cd751f3528ab48e5e7f2d9bed1ad0a29061afbfdc0a9e97f8dbf1100cb03289a32afe910fda1c33e2d77c3b616e59b8539a2cd1862ae1ac351f99057173dd605e02260bd32bcc196e528b6ea7d1f1b505faa000137d24a1650aebff38f65a265294e7cf49244817d99ba0052e2ed7dfdd54d642fed7705a7a5c0a6dc6e7f3291921b31375a92d0813c325324559cb0764cdb196d3f1b8872c3f7e1843834162e05df3e25f6da008925b5ca20f43046df5afd587345ecd39f8bb003720cfa4c766935e8d5afba747bbcfa51aac5ab0349881075de383dae360b1e37273e4d0a2a7f3c472f52f2ba3027b892c6dae7e354137bf8c1064e1cd5f3546dc311f785c735ab4c80b966f54d2b3e94e7b9d0f08bb528d502fd10f21ca7aefeeae1d850506d1b854497fb9c0d7ace0bbd1e91ddfcf53e78295f6e16a1797670679ff1a4ef3835b63f10a56a8731d3ed87bb4477c20979ae96c9a00bcdcee1a782cd1a6f6049d6fd0ca1ee6fe63bead5a58ff1d480d242bf2a4a917871c2a3a773d793245cf844f6d074b2d77caaa18a1ac0bd0a717c1e9067a9fc3edfd3f11b4f226a36cf7ab88fedd07a30a3725c5ecdcd7b8f71fab8d05bd5c677782444f5c70694471a0c2bb41328b7eb0ca8a627b3d197a48b566cde460444544fc01e932cb948fc04ee11b8cb128950fa5c4a0f1daf3629da428a588d5f8a529068f003b99ef2fd385e7528db95fc60ce40f35bc90e8cb8caec0b5f82e79ac2d5e8aeea2f4d232033e49a8c9d5beec91b8cd15c7d0ff458708ae64c36f6603a7489024bc15fb1a04f06ca98ad538bb3306bb0c7bc7b2a0954050dd013d943785dcf04b591cc8d035ec16b2c6ec399c072b452a55656adf54cf05d16c67e5748832e548a23ce8a2b6c96e48384bcc43710ec7f1f2c732af80b2a03c4e6c63736a2c697259302434d76d70e6a4f4f3db673c99c26b2ed91509dc9ae219a2045d1ab6662e6c19a4d95be93e74108239f3f8e29b29e2c48cf7cbf2184599678af6c8f5f126187137bcc288d9d02ea3d4618eacc71b09e568eccb01083e13ce4c68a4b9065c7aa20ae58f3c8c500bb874b0945e2fd03f2531d60e70a759ef89e486240f3e130f3d81bc42fbdecef02ee667da1e23b971da6a3d204b3f54c275ae08661130c1da593a1bd8beaa4ffda92b5423e8a6d8e6e7ae2dbb5bc546697b6ec53c8e49c39704850590446051d2ba33617e7654d7496230b529e817adea0bc140b032638512955d7e845900920bfe547dcbffb09826d668b5672f786950fc0ea0b183c6992d76f7d57618e319a40d7aa7e9359be347e29e8730bc6826dc09044c5436fdc5a6c075ac0f399fc17e719666ee1c5bd9f40550eb2f262eea4011049642f1f8907c20636c0fd50bb13d71c36a93fcb9f50bde543baa99503c8fdf25eeddcd2f03fbc870f9a8699385c2cdb92c13ceaeb53a1d89706ff04a7e0322ccb7db6f46b15aecebd7874ccda6773af3c9f3eefa840dd047db7f219e430fbe63234ca7ed38b342a5e4c2154c7fad5d7b2abc3a6fb958fc4a403cf658ea03a76ff8574c5483daf6f98922edf997b8c51b85b1c2b32d5c618e04035aa28fe15eda50cd057a7635a87b55825947cfde09a632461f9873bcc0ad35676317b86b3c244b1105e84af950f13a2f5e0c83c0641afa8f5159314713aeff5e711bdbb671dc2e1ee0f6099df7aae1bb73997ebaebab9f7de23a47e07228f18fc11a19a392a80e22a8931dc5cbee359c8e387ca03368990c5782fa2c0c09baaffb83240e31970b183f3b0f9015f2bc0a001cba3f864ca91e5d7b5b3a9f0adb3c0413436972ef4a88cfd64106e60aed59f7db78e26fe79f3979dc946d1e182a448e83742b2add9f217d184e08623a3d439bdb12be37a508854fa814399ba036da0174aa3eddda12301efcd2a410a1a789f65b8fb56c772a156a0086d3b4d22f29ade335c80bde528ba59dfc884b52d541aba37efd33053f2af0290590febee08f5024281747bbc426424bdf52b045d0df5a03d68e5cd910909df3e3358510817257157611c29d95a92c8a3cc7bf446326b73219607b424c4ca3dc101adc22719b2e59ae6e3d296a2a6bce520882d90146e9caa89bce841dca0954bf68ea2375cea24aa6397da5284d14573cd1e8d129bf2195c2bafb212fea853706eb1285750a6d6408dc6d105f53c9a5d354ce6f7bc17a582e06e69c497345a30aca8e94367cc80ffa16e925818b5b20bb49333db5eb96c91c99846b1157981fb5961c4cc99e5dcba59970594824ee0bf0b0854b5485718815a1b24b8e37cefbb11f0c4c48739afe88f830c0f5ed17594b25780eb8004a76234ed85eaaf348cb16ab25ee927251203e49888028e0e9a7fbe628dca15001e689b5c92eb86ec589ca85c2051729b20e23a7e0da9e5ccc2f4bfa43e2194988efbe17d7fdd64d7f8e111ffc3b592b16fbb423ea0fb328aad28643c429043107d58e97f94a90c4bd38f5c5b10fc1016407fa231440750c4042c38c15bc2be4a586fc69a24bdd96728b1438eb6cfa777b2bb1a83e775bf28ba105bfda9f5f2f6c451e38b86467690404f71035c2e016b0a87e2d7263b8ff34780daedcc5017e18ee200dac241e4df749328a24dd8ece6b42ee3accc23e01f4ad2169b1f0212be701052930375dd36a3400fb5880f16daa43fa643e84bb271dc5b14b55591bb9b4d9393e324f31727d8bc6e108be3acd6c38937dc490696ad9e4fa8becce03ef8db462c10d4a62ef55562047e902d13764c267df7e60943855eae8ccb628f4641c2700ecd44f187e7249c3d1a0f09886336f29a39c142a58f70d5302418041cad9abfde8dd8f27ce400f56273e97715b6190f320bd780fc31ed9742c1ce5ccb9f15be921c81fea0f91348daf1d7fbd944cb0f420f509a81b1462206df86879fe379ff810e104ec849ea61b4adcad2c905ea1d5a407f5164aad757736f69b8718a595dea6046c3410bd8317d19f6e00ecb1e6d5e78850235a020ac71fa6468b8e886e42328b5b104580cdf94c9839b30adb644023370e51c829449f2a4d088a40de0ad78bdff9247aae2bc11aed3f216ae8311a2421c009d58ad81956f74f7e0e282e7b45b8e1bde506664f104a864e9a7187c3519fcb3106b28d5a877335c3c1c342056350b845c1fad56f27c111dc1046a03a04b868fbfd234e22c125b5f39e76ed6427ddf45024975b5f78b6c33a1eefd83110f04bd50dfded40dbd6a835d96423e24e4945e2b5ed3fa14fa61d753f77d58e1c520866a0efcdcf43abb075575d393866bb17c894cc51403ed679b9163550b5c84afa5b9b1eb22700e9e09bcbc8346b9d2ca16fb4b8d258d7875838fcf66b80f78e4efc2e8acd17669a17ef8c35992564f72d8f33758870e5d6cf5ec405a5ffe434e1284fc56351a10118e1bba3a1b8b2d0747b8f53da6dcfe9e0c798986ac765555fe6cc6fc6fa5d8540f5b54babe352f14bfbd2783c47429957927d9506a2e3c1e730ed50e60ca217880e19f622b4491a02561b06d585d9d86f102b36dc8b4ea998c82f0b732223683aa2348ad06fbaba9cbe2f8e4036a4049c6ede4dc0b7f0aa5658f7471a51ab0214268e4ba5db47c891957ac1bb12ce1b0fbeeb30827dbf1638a1bc47c532a31b8bf620387ff0b9da9d2db756cc6b65c48d7f7da1a1c3de401440caff6d53301e5b27383e2c6077fbafa66ebadf32a19c889f7df602e956e6bfcba4fa0577c1cc0165f76725c145ab3b389325a126fc517d2e7385cfe328999c7f9e255e899c7672e8ae997df93aee92b5f0a75d2ad712babcd1cea049bbf6e8d8343cdb3d13045cc232aa1210cfd1cd7ad38c09a0fde7048cd2b79affa385937e8fa950e788bc16c48e4777d9f3820c7b697b3d9b0d4ae8603918ed49b865f6571d68b3b74943e1bd4b193d70c62fcf36eded63eda0db6f265fa5ffda465067d3c9bf9a806b0362142c970f2d4ff0e6d803fb86809c35e48c35985be43f2fa5dd46a07de34a3ca4cbafa894004de92839b6b29a66a3abb901ea1d4a0622eb35f69da6a159438f7b64a597fc90e256bb14a0a555cfafabefdde2b35c97404015a4e70c20064e9949b3a7e554fa66a40b109a81c79e9721c926654dd427e0ae40e4e501eef02f76b4ec5e2fd3551ad24b357ec1cd771d005ad7ccc9593dbb174fdc8532d0028ac7e4bd17d910ad30f55b8e1fe965c5cd3d16a9552fb5fa030913bb7cb1119060e347987ec411644292d2dca622190722196785e42eb78254c8aa9eece4f415a7321b44d81d4343b2456b3721c9e43dd1748bb22328e8cb2cbb1321553486a2150d500886da116a4536006dfb217684514c8508ea9347369aef0442b80e37bc778883a93d6356e334272af042eb7a9c31c5daa12d5c33560819d79033c5c4459de58415d2e7c5223f882869dd5c69312d60f09bc423cfaf6da5160c09d8a44a0885a485f09beed6d5c02bb0f397053cba6ef907bcb1afe52805db0a45d450e51b69014f3368cf3ef8e44b96e72bb74119674d749ee586aec527ef0988414fd4cacb12530a9547defe788ba1175895b9c11ef58b90efe8e29002950a9519e3a5d2ed4240d1d2e76e1e6554dcb88e0e6e554b2308c99ffb6d6b0786ea7fde0d5d910613c2581ca71ee05aa8618df5e6b923b73474424988a2de047f0c20376431ae1c27d41d34d8039dc882f84a3e0601242003a4576328c800ebcd11d06ef290e7855c1ca239f517a15a386089ebaa537f914cbc2d3b1bfb54979abf94a385db9f49df2c96562dba03e339a355f25468f17cf41b5ac5dd390b12fbb651fa837460281b29d4a5265ccd4f8c3f3019a013a5addd4ec3adedb6bdb6f88c1d4a963c156c681379bdb280286a7c60ec467f6efb7c98febe483f4064b6ce22e1ea04af1b51a360b97c73e5a79fe60929eb3bba8282532c2b1ddbe5ae62d08a0b9dfa71f3160e9682a5c28a4a0b3d3052735ba5e1464849bed884dfb132848086316176fc1adced71698ec2cc52a65133e50b31e9fdd7295a138bf9c24b54ca3329fa57d3b494e5b3ad7fe71e3058683a17eb775a73b56d95d89804975933fc1ee6c6970dfeee3de1a1315f045c284c454bda924cc70da10f90521b74cfe9a1f05192644ff7bd800f7d2151c3796122235c18c71bdbbf14e9df2aa1454e4bd3f3dfde38942d4cfcb264ce96091900edb5101fb0f0797387bc2b1e0b18363a27d60f3a1b712e59bec77784d2fa59d8023b121c4c0e087015567f20605a17b002d217a040dc7948071b47c7396a96be0813da03818af8d6cf907eef201300e9b76a56a22ae3ce451f85c09b791670718a18caf1bcb3255bba98a84ce773756aa5884ec31a26a77cd2bee5706c531adadd93c01917170e6ad421157d2cd0a5255c4f4ba78d0a5cbb786e2dee9d24c868ed94a81f2ba49fc65a051e106242094fbc62fddab145ee1c633c844ed6e7786a1a2857d206435b8c5130e738ae34db2610c5d7e7888c8469ae5a44bbc18a8e9b92f47e7c817f2039380ad270fde77d6b9e4174ee3d020856ac3780857353dd43dd965c894bd2a41ebf9526a7916da2225385f63e724398ad0334692e76d93cb20c9f73207c8ef394ea45457081bf1347ca38bf0ef8bfcbff2b071db6c907bbd18ac8cea355b75a4e32ee466d801577c60554559a82f69813231f58ab549f5dd83952ba0d1cf8f67cb602806f915330f0a6d6bd27c3772fcf376edb795ecdc60b94240951a595ea32cb69a01933046f7607efd4add6cbf9d7ecc1110660951921b1d97b52a1c10faebdcf33e88ee0df477520bfbe1cedd9f05b999d3ff4b17ebd7a0c27f7dcb08fa9c49257e7de8a0f90f7f1f980f4c724e15aac3842fba0082358934c8f633d8d537ac1b9524b1ce260ef191b6d7f82eaff1809280108e381668082e26f7cca1b721b1d25aa842fb140a06c878f40e8118b95af0eca3b8713b5be657916b67c22a261ccb88328b162fdff311852019f187b7fb55c2aebd74083448eb4266e4cc562ee5dfe4209ec7d837311888d847d849bac6b12c3de13044db1b6c0a71d20a91270353e0bbc75afb67864692c16e4f4971cb4c7a4a398d5a64ba1512fbc58df1a7b9be7c626ba157ee46e6805c2492c8af25c5bae13ee3a2258960fa090dd42ca285f38d03fc0adc08d06d70bc648df11979855c6f665cf9e0e50d81352e6f44ce816ba0e0c2c22e901c87870182e734802d03ef0d6adb3b9168141e6e7043494696bd2d2936b7c7d114b243ac403c21917a0eb6f1edb8c4a6ceb40023db911ed787e7383eaf74413d71eef17c5244bcfb3629dadf66762eb8e24e8f72f6af8d7abe62089110d42e4542b5a7d048f723c1a3807cfba0d9b3304674ace956713bab6c0f667044e36a702e5174c8e39ee2cbcaf4340d0061aa750e98af8e1890e36e24dd07d8d452d9db7e403bc83ad899306b77f22f4babcf74001aa861508ff7c8d270983077ba984e9611a47053cf71f41152415137a8be6fafd82414b13f4651a550cc32b3c254b2c510e60b16e19b3189ae65c218868b7a786454eacbf75f030351c301fc2bc80d066254eb6a9acaec574a19b86c92dd8e40e10484949235e7a1aa8f130fd8481c2350e605a4e808f93ea05b52876e21073f8b70dc96be73f2d1eabe4712d91445cb40fff7c68c204a74560e715e45a4a1b218e64c34d5702140eb6cce4e2e16b6ae33b2e300033391422a78a3e016f243581fa06851848e29b17808239d262d94301a922c38d600e561530654c7e5f8ab49fa63d789cc33efb698ff4af4a2d4104143215a44aca15c590b6ddb53d9b663191995215b805cc01b33e7c7941093010fd10a1bd9ec2255c1f3ec5c77c1cad7af227fa11ec8a7d331f6e287cf38d01d5b77db29d823e941be3fc093b4c268e822a2dff3ded08f0845980eef8caa164aa03e74fd0573f2bc27c5a04f2409b83c05d07f025e8f20d712c74aa9390384e7c5b8e94675a4e042545138ee20fb30c388faaa070e5f689151be74f22ddab0b4926d5bcf97a5b7a0571322d85f78f8e1cbdb97e55a3aeb486e958505d9e724afd1a07668200e5fa4f2266e7093280ee4b6b26e5db45234ddf7f5ae58ba3df070a9c7e15045a1bab23204678ca1228d7557eac08db705b90a06bb20e805beb80ebb825c7712530fcb404a2f1518196b806361516b96ac5634928ad0a73fd9e7f57b40eba70a72e4db1b63062a2ba35493bc8769b85e44fe5d2881cf98ed28e2c25fb30e152dd448743b57d32cbea0ec25376db28a3dc27b26a21b2394c5d1449ba2ee38c53fa2e33ad5c7364c604f72dab7be4c4f6d53e596c03242add140dfe8dec9ecf2841aa982811dd308b82fbe6e2371c60486b16ae486f28d4a239431d25c2b0c2cdfc628ab42a265f7d1e21a6bb1ba0468c6d6d0cb218e13d0a93656d74da4dc0c57a827320a75b0fa794166a80abe1a69bf597b86ee93913e84b90f39c17a7152750bacc37478758a27382c1a4aeecc929254d88e327d10d9f8e9737b6240db6e47dff318693df53240bc93658bef30f897a27851d8d827158e01bd32cdb24090f082c7a5445b3c3df715280e30b0516287b0c38c6bab053cc8121eff8c7179f158cc377e24da61e2efeca55b7d2a6e43f717a7c1da80651694554ce7d51eb14d24ddeacea796870c1aab97783a804a10643932afbde5062921ab2f4b000ebbf60e1720014fbdad470c96ab935857797f2a03a1fed68e3498f4a3b813f7848b1ea66816847fc652239cb1ce2a979d8e2aa7aa2c81f772f105cf655ddc17ec201f397e564ea3b4d57153fce3e7bcb915af0320c9b7398d678cfc4b45d884a9cfa2e61b641bbecc7eae4996091d606a18ecd234695e6e698109516c21748558702ff5f13e749e7adcc3f49a01fbb022af71f1eb02bd549697eceb4f207c7de40a2249042170cca87299844a5a9053ade666046dccec892c8ad537126c6f3a64a8ca8e935aed5bbfe794991ac4ff12fa300cc733ba5aa81e5c910db1f805cbed14041c541d32513cbd2d9054b811ca576b5d237da2ed4943a4db971884e13bb2b690504aa75ff1b00b0be42d0d8a01e175df2b0f130f7c1d25e513f5e65d0f3258bae30f5af44b4accec9178d22444fe722da9ccd51514d943671d26b3630f570d25b34d1303710148a184f173e0bc18883d9320f43c3893bca39a9bb0dfb6847c7c15a7b715285538657dd98c61cc71cc603a5f1dc847bed3535cc92f89e272245ea8ea931d6a33f6edf06556b8001c86826afd728fe006e012f826158aa1fa158361cdc31a17176c57c09f17574285901aa1ca9e57c8347604f821758c9954f73856893064221e12141b305ce2363265b7d8cf3460d67ccdc5d3b18f10afc55cce7a0913cc91657248e77b420780e2f49e110e5d5af690df5620ef9804ebd6878c3c15bee0956fd233476466172eaa4701393607d07496df7c44db3158b101eca3173dbd3c529d19bc4c6711d0280a99ca0e11b9c0dd79347f4c3d68c5d9a5bb2471b5870845a5e56fd836393d8843137040cf85427858eb2240aae04f7fd41f255727e4398de34d7fdf0da5a2f5682ece07ba172b022ae90983057ae34c9c0ab9d24ee56d4edd4207d47f21f966245585ff6e43812e8a0a6b0e0cad033d5a58295290ad21c48ec28226999b5fb44686920002c7fefb1622328cd2f7a55cc7b8b3bc816a3b4f79d561965d8b0b73b15f81067730a748c63870b841651df6773cd98094a5274d24fd0b4a2f711dc5ef0a19a55d390b2c6d606c72f79d05639718d80b8574c28ca589f21a4c83b6f99578a75abc97404333541cb3fe2e3ea2c97161d61a8ea6d25c7f9d36d5590f47f3d93ca65cea258faa3693efbbc92cfc0d0a6ef959469a89059f821edddea6d0d4f01b9bf98766fb1f47fc5ab90146600d01b052f1f23de52d3f9fa0059913722ba9da246e37cf9d804ebc963409884b045f6885117b84d48e9c179966434a3ebc06d6a9f7fd4127219546014ced72fdd369bfdadebad2008ea4402302006014248b13711ae7c656c8d807a2685f530cb0a9bef0e3649ead70aaa4c54fd86ebaddfd07759a1651cecc6043dc11b32fd9b8d2a6cca822ffc39ac9dd7134e08d24ff8cf8d6e399146c05641fc87552c4bbd3f0a55c2e5ceeebcc66fe692dcb36a555e08d971ab586223cc0aa058052e588bae8a0b1e627adb76d8b48cf5e5b12da87b1208294515ce3fea3e690b342fd02ab4b4bd09d43e3c25c06e5a1bec7970f0b7b280e1142bbdfcca99999a6734658ba6a47efc022ef215ff73dfb04db992ad9ffa851965cbd53641d2516566af148947b9c9050f2eacde31f034216d277cf757befcce027a7d6767af7edc5238cf7ed00c7eb6016a4152e761739ea8c922407d457f1b34b65b6217bdeb11a46284dd67993238136dce880af329e2f79849bd4821ddd54cb07863a3709fa3682e4c49388f2c8e04b0900dc9249d2000789d8f7cdc36768829d67d48d0dd1aea91783c9c291fce5dbb87d6a207b0cd05b3fe3c9d9ef953e4c0d1383858b362ec3be40c4c84efc62a0eda61c0b774197ef6cb0c5ace807561f79bde568b89c0229027309c98027ba317c779a607146b06e64acd26f09e2eba74f650b5723ca810135d16de25a48bc38a46e99f6470e354da5c2259d6d9132f85ad259faeda59679e00bb6771686d448781bba2d4ba82f463ac70c30114c81a24de16b158353d30f38cc1df007e8b8921364f8a4a634146da028321db06d074f7ea595aafea03e39cdccc9e33fd4b95d165d58907818d139f9fc22e72725250dcf21ea0e4a21f6771154214b1e3f0271199b9cba5cd48fe63edc9c6d081a6cb3251e2a7abb55833ad2f67ef43657982461bb209d58b891300f96c446693066accdf4499f6023bd32c4ce5d8283f18bb05d1553c6ebfbcc55a3718969f5cee61c4aba02a193cec542b3f9f7838c654929d56a48bca2148d65fad8fe3c3935a331c34ccb43b27a45c60c785811ba6525ad20499f72177f28e27712df2c4aba50e1c1d39daeed07bd038d51bf7be542cd5e4bcba0811add97c023269a73c120b025090323163b46665d120695512bfb4da5f9a661ca6c595761f7e91adc92f236d645bbf8c1c38fb21582b0849a79cdaf143fa1f89e07bbc9f560fcc10aed340185b0e4de0ad27ed664abba64593875720ba63f8623090ee149914addf39d439b4dc467f8fec62aa34533e916c77c19e719f6b79f2cc1c86f9945e721cc0ea8a31e10f8dbe9909573bfe945f246d8f77c6cc15e4f31c4d4f00a30b56bdcbe84fb05eae7140fa731fe6ddeac723880c053cfd7f2ea936c7cbdcf078af119d413a3e667efe6ef56fc562c7c349a131fd5e096cff56e08f81705d7f5fe50188b748f5e800080368820365d288d043c2ed54b905b40a3aee91ee2c5bb037b5e875cd1e4308675720686793e70e9aec5342e3558413faa57df9c4cb8201b957ad572488754fdbfd5e244878237154620191d4690a3cf6bea583112aeb820220bcf3cd64ad9eb3d57e649236a5ea76f1409b051a20edc39c9e244d57fd3e7bea0b43cc0e85777ac6afa57943e870c7c90ba83aeefee0dd1b2e71ea78925b37d2f5922f5223ef294bdbbb3f2712c8deab21fef294176eccd52f2cd41077abc14cd72f04283dfd0a1a8cd1dfa5670666106f914a270c68ecaae7c6bb9130a2b858042a328c1fc24d8f8884d371e832b4690fc91358a9f8a29f2da50fc59e31e1f478bd9d01e5d8392d46b62b6e1a8d202c793ac8761e8f7566366747e50ee700871c68356a5f51656e520c95dce586004e0475d85c75e947f59c0c0f7c895eb034c0ccaa12976a3c1e2cc58e4cb260dd33d193848d170d5c2ad1cf1d1ccdf25f56d2be2492d9c46aad241d240c7d722a87c85e25ccdb269758076dcc450da4b7342653b051dafcb718086c1ae610dc76466c696c035067d6b3a67a7c95f365f3600de62e58c3a46f78a7821d1a434532b7934ddf5b3948d9a5f3dda30c1cfbb66acc3e9088652f11211ed96b26639ca844056b8d330c4e6ff1c00a2d59f3479385a42913ddf56c2501f98911552c0ba47a90e6cab62034d5555b40c56256624d5119dcb6164983b2113405db3fb57e05d7510ed3ddcaf5f09545a0f2303569ba3bcba884dff40c0f5880af1845e64c20bfc3f19f30a99c543983dd73aa52b73f8569789f537684e93bcf37a4481dfacd0b1ca9a249a9c550d728f99bf806c08ac6a8574bde67223f453bbc211c177e620844cb199b4584ca0601f3b8029a910c65b88c232cb0b92c35dd08d7741d70f1b1307bdff7265e85a315a27c9648168cd0b45c75827a807a811f68515b0ca64026d14a9a3a3c2c1b7d1726df538d616ad9c9d35815c793c7f8d83b69e2fa978f2f8d34badd9a81c27b1330b3ed3d0f2667dc11e745fc4c4f6a7c66771d853bc8fb29f0351bfd179c0dd57148b0939c2d53913f8f5b061933cc0ac035d8aabce017a8a107a74b867cca44d197b1fe507f28d1d29698bed581f336cc2a70028f9aa59f7891c58215f0652f60378e3c4b6b1d984796f57be32a3c025286e754378196989177b47e8187451396a40cfcf646477b5cf123d018e6305ea123abb7eef7f4e12ab58d25144cdb15ecd2022f4c04a33d2cc0fa2f544fcaa9fa393c5752741e9444bbda9a08792c96302056c8fe484608d5c2ba4cc2c9a74d759f22218eebd42e593ce46370bef20abfc485eb51daf850b36c534d16a90a290ca8c8b7d06e5e80ed5506040b0caf8b33d6bfdd81f5bc0c00179cbe9c699b538eabcd057ac69061593478b693e716ff7b9d90f342b5da5ed8422f44b12c01c508f7239d6c6150b1500a2f540278dc011bac85203664e53ba7200fd94856fff57206c8f7a78f0c4a55ec616aa5c3a5fdce1198674e2787a3b34ea41578ce76d621199e7b3c74094dc16c70391ab3e7025a3ce41c21479218819d86ae55edfd704d0923e3a17a904e313834d0b847ea65b46e997d2f775b70ba24cfb094674f22f0cb9e3391b422739f1b90e04c980f2ef3864c1d1cf079ba460240e810382d91cf531e66d7bddea1eede8af32e0d1bc21fcd3736a15b18801c0534f2ec3979678f8c6447a8eedfa4809fb6396442924e74f0f013472f116d503ced8e841a49caddd207db489dedbae15650ca312d7438c30653d161bafa2cd38c722dadb02969339330be7d48a7f6131ff7c555c78d42140174cdea4a090e5be08d4306820ee6a7d46dec475667bec6029552b36d379891f06af60ae5e902b08ca216d0e32959d3b11fc15b6bd705fc3885276e72aac26db46fe81a710a6ff7b3a0bdf42d48a8c90630a986075f5f57c7b1a8bea281e3d36d13ba1d7fd22d4ac05f5918df31e6e30f8780af58fb1b6c4abbc0a2bc5d2b9e9cd1ff5fd9e9368ebad4b490a64ce3c86f2679f6edb843a5939fc155c4d081f2b548f74001cebc852c0a969b3230e5f73e362abf7f6f3b880e7a5f8fe212607fde31099d3f0e10a5891ae9dbab6de7d44d40486ea1afe737d53e3edea70b74d1853f866f35bc165ec28b7a7e17b89c18ed23243050d902551425dafb502bcff359dabba5ab815e3509b705c8cc475f419289bdff25c1b3cf213647ad3f288109a461c63da3fc8d2d03e47f7c40af0a05c4455a28b983cb7f32a3cba01dd4620cec9b7ef87a2bc9b6ec1707c9bd4a72f14f7882ce1ecd717780be7df62f21077fea36bd69bfe10c3c100b1314111cf2ac695aec3f28a4b914b97c0bc0d3c5064cdf47eb1c6d5b1f8a8f45c7ec6677eb9fae97ce5cd43dd85a957f6d10d2f0ad92d562ed1e0498bd074f7186d7085a91f2292275ee7d7246a3f8adb98416df323958596ec2a6275acc81087c30f3ef14f02d1bbc557a0fefc455288b0db9e33bf672f3eea3d0c111c0ce5e6aae8542ca0d9631e9a4211019ed8f4742d868e442efdb14b08d4d424a519028a7370d1be6998a865fdf89d38f621e287c5ea30e1e87014b73efd7c6b6f34b866216268f0cd7ed09b4e7cba7d2b91d3211bcf563fc1b58719040b07a9b8ea9f46d72fffed4f7c509cd7baa62076888e05dec1839d01e4c0848927adde603f36a96db7102d05d064c53227dfaab54cb165c5bddfb57263400836c90b15fbaf0243c3c35a51bb6c209650228b9b1f7daae18b0d72ca8540c9b097830b47d07c767962a0dfbd36226683356b48b4b99d94d22065e7b3d9d41a47af63f7c9395345d08dcb1d2195c0a159302552b8c22bb1949cd79f1dda10cd3c0d1724ecdf97a6ace154c83ca3f44d98aed99cf77449625725cdb377791c836de0c38ecfa521614efaa139a8ba5913f52186eabbffa44a57d5b89fb3f99f825ee4c9f8e18347e093c9bd4ea028b720b5b7068bbfc8cf1b37248696c55fb8b1e1e6a498de0d7c8a2657406078cb02d74df5b8f41c1b4e906b4976a13435f1cda0f25aeb0c2f0ea02c50ec7bc982e9c24902afab0c8a791dcc254037b912afab735bcc25119e406e44278a499aee6aa4c0af0f5a611d5158d5057500ab304123220ed6d82ce2c976a0012d56aecef75092633981097ea6ca3202b8c2cab63c7832d0550bdb07328519ee582d06bf4cc69bb470d48703c198b9b8901c7722690c93e6b0e77f0af97369fd16444210a07332b0eb170636676f51ea4b324c6bbc9e568ec14a739bbd2b5c63312cb51ed3bd4130f1707f1d7b96bfe9294a305754139225a167724598789141fd94e8ea079a3385d08416d9f2db588ef4cf5860a1d500afd2c245027f940f371c2e35d4968ca74e854fe4d5d355dd517915c7db023743dd795d28ffd48667a257cf81461ecc24f8847cd01df7b3c96ee08bba94a80962a56591d2beadecb40b95931693d9877d777adaf55e4445f525b9990c1412737e885ccda9c57fcdcfec5c40f0aa1db04b6cebdf170be71a319cabf8f7d0e0fb5372ea7ed14944d5560aa8a5fb893390cea01bbea0e2c641199dbdb3394411d16cf267aa16845816ea402ff383437658e85380abab0c6d8d657198998841641c8c0455cab01d1ce1325475a2eea0a8294021624a4a0d18ab6e05c80172cac446b0ca1a0dd33c3b2f7b2a1c333ca020fc32f25fc7156ec9c68f247895fade9e24f485252dd6e36a0848a20979d3d769672886c55ebdf937cfc64a3646ed7e1549b1d52416434196c2213691115a831353ddc7b0149ff0f65bee77e68caab7fa55f94c7095c387fc0b0e9424a7530af51fc52ea86dd5043b3ecff8c08f1715370c259795691ad211813b7f6949cdd420a83d037053a0262eae1848a40d08650bc4a4d98de0512488a4210912467ea05531281c0ffaddbdc0f16d8378e5c4e29b8324eb10f133c99fa3aacfa5059adf3f6b77499d2d830c03b488cc66ef73b32e8e90663bc36a6660c6c7ad21af219fb712057e4eee7a413880a9563ed706aaeb1e279f82c4357d7b1afa1c78b34100479a54f563fed50c46458af637a0c504ab1bb572c6e65badf5510fec67b596420e7db8c3d7bdc603cab704a26b6e280fac7f3e11a1eb641c7aa33892410a06b0354fb03e06136f215a862a9e24e37b4fe2396240c4391c11955174242e0dc507732c85ff8e46d43fb6c9beefeb20cd76f8cb1a9897a7eb646c71e7dd9457b0cba885ccfff502143c4d6c8a528af5786010528f1e356422a1c2dc71a40495d17bedb08510f5611a9d601ad4f6ea54a9664d4c06417d50a0aa40b0184de5fe5ad8fae665f876edac27838fd7432abb4e9d4e2ea0682d43518e5ad06d3c870700510d07cbf7f4ba3ac70086be06567d6c4eb76965ddf0b13571d43a484089feb8f02f784a35bfe92a9aff02fac67f559b9b440c7cc830dbadb3e0304862738bac25982903e559ceabd5eee25d2afb519b2223dc1c8bd822ee537fa76e14e4969341183df86caef9c456faf44262c950d9ef5774559fca3a2e8363b8c0e9f0b5def099f235331720469048f6cc8d98b4b15427b16f432ff9c57d203d1a9560208b13627d02fe7aacd45d8aa55e359f58e40b9010f80a77c83c9425caec93914df4b6c8bcec446d920bef3d35141dd408425d2b2716c87a5e2f06372e06a5358743089eacafac1a3185e24a76888afdc084d000a78de7547c0e4b998d9d01fc13bca8538a598fa23857f90495be58d42cc1074f3a4289cb63d9c48c525420fd37217804f861e5220dcad59904d05d0c80078e659227e40d82cea5e3af34ab4bdcbdcb4eb1e61b4fe44a0f3f548336d5aa197634a11fc927bba8c5647c63d8d344a7250971e6c630c0fabdf2c7c22ccc2e954fe3a3cf0eaf70a4634790db69790710062de6bd21207018af57bf71ea6c002651b47b93077e649720b26ad6fd75d22c457c59b0f0a2db9577d968926e9d735c2727bfaa39803693ccb024d02a8b3d3760481ff654fe6f9cf8aa919b18cee8bafa8b97e33b473fdf95f38a235da408ece8c76265264b86048392942f6773b0021628615286ea22d3594c6108c1e42de313aca3e50899c0905fd4b13d00603729f8758950491d656cde71cdb6efbd9d6c862fce723b408eb06c8929cc816f7ffa1f82c9ccebec74c75187ba01f38573d4e58c87177384250e447cae67c0ac1b74a22d0b5e0a85c985d8724b0ad411f1e779b7410792b6cef479d604dd8e77f77799588ea35f076cd54e58bbab415e46067ed769d969d4f0343c7709d01b310073db1cd3658881122073b041a2600b6f4232d41fffeba09b9780a84f86b84cd5a1a8a250854daef22f7696dd6577ddb048a4f276419932adc3d5e8d3b1ed7ad40b92c0133cf952cc4d0b502a2c5942117bc6709bc45848ee9c85bf01f095925d092aab573078e91ea82df5e1c0124e8fcad60a8d12fe75cc706e767412fac50dd68a706c042247cbcc34ade0f03b54f2c9123c3f4e25c7fa158cfe44a5db45f3422cb5a6f9a7510793d52d494ab255c52947415c24ae5a195944708e0a9c5b458822667dffc2577d5c5068572ed8e78effaebf411c6b88a256db66789ef6601670c062e17244ee05415c604821b478099e2c9d442651947e2b07f5442c4b470722bc64a90463741b1c45e3e02c36727b0d9ab1cea46f44793f5172940ab7c726bf609766654e263b1b653aabc609e863cbc9a69d365b4863e0d7631ac847868155928f8f89df2c5e469330163d45dfbcf6d958b82d761a4c74123ed8bcb14d26c53143c12b7daac985dd7fa0069ab44c7b09779a78c8462151355849f68b84db14b85c4d78e508c31b3bef33178adfb9db44de2b58641d29caa8e56abf0fef5ed3e2b154bac02aeab24e90cdc09e8f6f97587383094b9c02d72225f9c77d4ce253a430863568573d45ae62391c4767e30e0c4e82c55c9d6ee811c1356991a47336ab7612f32b1cea7fd2be58b182715dfa53ea1652bdd35825e221e651bebe84cc185e3e0df3855b651391bb4d3b8a03392cb252f5ab3561bd601dd32412ed4c2e3feb5130af6faf5cee715b2f7b84be2c6c925ccc9b92cbe4d14746e9b738f484163f70a7cbc2ba02140bf2cb8377011345e5b214c75241681f30379f42b6010d34b0817c4b533603a64882c13509d407f5f8672a6b4588e1283eec1bd948f0428ee04141cd1d4e5bb26395d0503bdd52b96fb79711a764f6cbeb2e44c54610569148ca292998f93716d3bfe629872c66278691de9835848dc45f2041783e5dac804a05a8768413545aecdd9094e666c4888c8ac4894b5c43fd98a54da1ee15e59632d64d284aceac9b1f68efb0d01bca7c394412392fa932c073611d993ac316d0481c543d605545e8da4879ec4adccfa82913c90b16209d0a4d7f3ac43c1120da286406b64689502409706a7b490b2de21f71621dee55f711d3bec3ecdcece8238fa103490b6a0cb3d1bd5c5f3fea12b45bb3365d6b06d9fad767f826a9e3bb5e73889cec24d07e134f41dd017130ba3416f6b5601a59fa4912a3a60d7d6f846f77360317f00d405c2f40eb832bda1a5978e40597f5262be3c5f2a6b3c865bc502bc40a058f5ecd4dacffa9c042775bf4e4a1e265554dd0ca61d061d11b9313b28072ea47edcb18c95125b666b03327ba488b2449ecea455a81969f1b7d4d1980cea0466e736e7d3ad8bd074b3be040dcf31f91f2ab1be07bf7854de43c95014eb6162758b5ef617e81675505193783952c4965c2dbe6ff1fbf4753d880a4d843db63b3274e140f17c53a53180a19da1a767cd3cad6d354f9a246e2f3e595404210c42c461698047b6d7a43081a87919b31e91e1faf2a420a7331d9912d5325e8167cc8043fee096eca7f8777f81e5620f769c10c63022922ef40a0b6921fdda5e028e83d103e42f2f1a4faf985a34a23d910301d5cdc6437f49d62ec9f8bbfe825baae6f7c72131e36dda77615af0cae3e46e5f524096328399960042454633437042f5b3727c22f286a0f48b3d6c19e6caaf5341226d4cfa4f2bc6aa88e6ebc5ad6204415d1299d31cd22479671f71397823e0076966b5de9bbbeff05ee15aafda4d0c0f2fbbefa8e7edc13a90bf4ca7b44f6828300013e4c433fa7ac461a5e72d2b3d0633517879664c166bb8e832344289c843ba93d290b986f2b0b2807ec430ec29affb437a2726f3064e4d123497a1128dae0bc0c0a47f69cc71967be3f6db41ba26a32e85731ec088db8fb517b9ebc8a1b51472e72933290948c27b0c4b379646e14d80d95ffdfbd1f294b10e8701b130d2bd8926e1987a61f602b8fe5dd3e27b36d0ca772ec1cec78c84c135e929e973e1e341f048f940520875dce083e885cbc2b05ab0947d8e97e577fad0d4665c09ef2841d4687f57e2c8cc3d8ba91d8cab1afd0862dcdbf7014256fe97559f972198389ea7fc88c1589b19652b1e0060d29c7c2d1bb37461024badb97b3c88ebbd349a6de7ff33811b82ff2dc91eeead74b7e822788707b48e25749450fffc29e305789f3a06f923b7326368fde3a725ca29d742c01cc37474ba186f19e8c5b98b9a5eb8500b94a41f0f00d22cc34b2b7832a36a54b3cd3f2f1e37f4e8fbfe7ff1c4779c23cef1f6b89c5468009984c4c156ea8f5918d46b10bfae9ef032a4bf9a7198902a9b946fee7271cc909843033a2fdb3f6489eaf9fcbdc5101e10a630995827f623677234b6cb00e9328a43884553da89fcc6480da32ced941fb2dbd39e5dbf66e283e3ada013ae1f0abcf92234a16324492c1d60fb8384514a143c80d8f61e50d5c47e3812aeddb8e1c114253d3fd35807dd3ba42cc61610b0a8d897c29b65836d1f81eb2b048efd4004ae7816388b727b12a61de1691d14553ff084b698447640a0218b05bbdc0dd4bb4631cb030cb2e8f18a43c09653efcca5af1fe6c298f7bb938330b102a36973b11db661e3546aabb8b571749bc156a809e44a85b863329422deed733e2085ba43e1c63242aa114b16e51d452c082f691c27bda29984c2058577adee10f12501e46599fd4b7b2b0219571c985a5ed7a3b3f5e66e00d880712d5f883abcc0fb231a37ec4f33b542060531008876c652b41fa12aa019c6ed28830c9116f9ed2ff2aa366a937a4c26260ff1743219ffd0535602f1020504fae1fd500d0fec919cc06aeedc22087c7a60eefe6edefb936845436e2886992f46210d9f2c49a1f58f314a81c1a8556aec92dab66bce9a6195529d56b6713b1d2faa6b03053fed21cd21bb3da04f9ef6094d50401c0943a883cb6641777e94eb8a1cb132e114a5d0e0eb1027f4b2620810e1fb215886991d47822b885be3ada23ae651e07a4feb43870b225e6d6b46c42a93da5cab17110f1cdb710e93084f72007b629615b400b50d122c9f488da04d585647f08b7e1d9bc0d405b02a554f70c1218b54005b1548a34a4bb0b555cb2529bbee29ebd800eb0bdc06897b1116e652ec3aea9cb8bbb6f026ef033720fd7e5dfc5c47fc97eca5f977e1aa5f861f7c7280fdd1197190ff0ee066e14f133850413e152819cac78510a733ce94acfbcca86a79076fa7a0e9abb5f2b502a0e04883a1833505888346408857469a597eff04701bd4c23d0fcb5588829298d105b142022542d01ca261f302c6e2dec6ab1aaaa4b5f13a8495c3b400e8835341c49f153e29896451d0a2a3b745ef8d29912fc53559a4c1608c64abaf93725734d821da8792f10da91c2cc38e448e78937cc5b21d5aace5520eb81329779e57043ca05d93c98934a297480f7a8bf548f73272cf1d78e90ffe890e5a0987d8e2aa3e4cab5bcb2fd509f9ea09d33d9b5c0be07e13bb0f2430cb6b0fec00b2a4c66de9bbff49d95585006febb5ccababe1c666fc497b0c29511361e269c74e1c0788f8934317f403a134028eee846af21a4be532013a271a1ac520cacb7e41e57b2be584294ebf7394916daf77e915e1532f2f11e2b85b216cc77ceeed82087a4de9e9a7bb5e480d825c5efa6f89f801f2f7dc16618c3d8588030728de11b6bf740e0efde9b336e5c41b966690ca234552012f5d7c790626d4ff853cdc92ff97b10bf172c5a60cfe87bc41e8965fdd8a1f7e1e4aeba40876fe54029eaee37c19602250899f78f8d33201f33e76f624e23767052b0ccdce27447ae01ec28d212849d47317c6166b7b8ef7c37db6f5310c93755da1d379227872863587c44404baf8e49c4d064f4f46408085301e8661f8ece8b83bc8c5f3ab03f68cc9117798903d0a71e1068a8058eef26fd9b06eabe44010a4cde9b6bb0b2942ef3add45031279f75c465a4c4237ac294a9cd37f469e0d3cca1c86f6f32323b7d3764b25fede5fb6adc8df6ded6f4929ac2f1744a587a229f80a523223af1452157ac9c11e5e0b6d3ed9e5cbd3f4e8a7898675dfd8de96753d611d706285cdb0a3951edd425a213230215e69caa1381a888ac1e84298750d6e9909258f22da98049922ebfff0869a3e2136300e42e4d2ae22ade05a598c0ba17d48b39e4298e5e657de79bf0b77114c245fc01c44ec492720aaa624a52ce2359eaf51e01a4fc544f03c204e40189cd3c6df809ee042e58bb9eb991a0d39c6f1fac47b9d93141c1883a3c50e1184a79823b318d8dc68236ed49a4bc22eda920a2b1faf06087948236f4c68fcdecb551ccd3cdbb7b4705bb62aa86ee8b0832765464e02418df6cc28db94f3042ec7e83d8751f516d6c273664afdc599a49b0cbf71b8f80b60e5a4ed914117a6342fe46603e96efd843613f9f88b64789eb64a7c7ec905f61db14019f39288b5eb2eb984639dd5f773cf4b272c877eff327fa765b2515b37ff167ad9a6a03c59fa8f9b86728d07f014282f4ea1eae02d6d148fabcd282b872b8886979a9163ff8274ace060a7e07c73d914cecb127e84025820af47587f59230c51a2e49eff4fb415cbc8ef5dd1ccde8614cd5beed3522581a1e5c6aacf8e785f9bbb99ae69e5a6a7484ca50f6255216bf947925eef1391c678fa50b80174509bc7872f81ab2aaf647e34b0a562105aa5e334ee4149303564256fff416128750670df2759c134e829741a78d4fe0b9f60574c3910a562330ca5eaff2b6b530daf524f6e5b7ab0d81a3cf0a40a60c4259aa4ae3efa7a25539689b0bd2107943a76cc4d3cc407ae6c1c942bf80852409a1965b9b367fb4c8c28cfe2011f37314b0d18c40fb87dde40b50c7ca85a2a15a19297de2adaaf386a4eaca3a732b5c4833ecc9324396798cf0d11338630a3b5b730a2209edb798b749a36cdc12ee2037d60de4d3a1916fb7096f6282640b0ebcc0a0a5c48aadb7f3c9ae0b75563a9af2c130fb93fac336712be01560f88647617c759cda16149927358036deda0a140b63ebd8ac518a52fa29a29c6c98cf901a8a2e8662fdfc1c87a1e1eb922be9bd786b8e758c745c5df235f42533f9ced0b853781062c1c5ff9f01e39bcb7b21961232195abe55b2d96c4f4daf04566c08f72ae82f6cbf1b0c34d11a1a4ba559902f66a84a64e459dc212d88fc09b5aeffd6d062a485842416d868907d713fe72760a545262ec507380fcdf83e74dcabcf4e8a32538494e0da765461a9b2170c4d62bf5cf2f2b719bcccdd18e82e11bc841b50f7605fdc15ba8465d20c9839a5f55980f0fe2e0289a93a5a4dc41fb3f3806140820cbf9bd2d00a3202c30d7dad830f4d903b7e5a29cf74207c381d72bd734acdbd3f7ad447b9c36411d5bffad96888ce22859476228cf086359487cca7e789b85111e03a85d0aa7669918ad2da4a33a9cd78ac6765ea233623424ca13832982d55bbac3f86c9abf112d5296dd3be46083058fe80986447eda9369a23e8e5961316a01222680f0451795462274745f7a6f8fa25accd4929d41a08dc26fcd2532141997cc84b3de236b2568ae4e1f3b77d2233cdb1cfba28b61aa10464abf0a6a4ce8a0d372abc0ecbccfb37fa09a6688de2b25d37f0ea40568ffcfb0bb1a8b6fd891be8a883d9f6381de7f1bf3883c3918ab3a5f73d5272c5cf32f9ad86c525e39033150cb8f7d7d9cc1cee2914685b6050b5c1138f56712a7f344b6c506b9c1ed12d0f45e77b74ed374a6880896cfc3fda3c2274c6dd8ceef048633a2193f6c78049cd79c2b672600f2f364c840ba3c7467b18b08dc13f7093dddd44d6915bba2319cec51604e9b11bf9efe809c314d8331987609b3332d54af16240ddac4450d6243252a1d8b3712719cfe911a5a559fdef5f6547ad186bcc0a54a791b8ff5ffd5e51d5201266f198d5f47811a96354669ef9ce235541e35b6d4c3e592d2f09f2ec440f3f4769171623d0aa882a307519193e0d6a7b49a2a1643d84355b4d2072a922d7adc4386240f83e06d4fe81539edbcec86ea6a988d775d8c064a40b930bcb3cff39531a5a4924a8f172977d38ba8d98b3bdcba4914ad9a3a428f00f920e1025413291d6003b0209956f59d7e571715b1a8406c2a80fa8a2a6adff8fc597f42341d5b25b82352d6bd3d916d09e41383711fe88cd95dee91bf3e152d3f9d3747f3c78843f58709b0f6c4c19b35b4c55ff4efb1bac789892722d24645b113640175268046fb86c35028079b2e2ea0fbda2c100728b6eb4c523906b84bee73265587d747ea4742570cc468e2e8a16d8f59b2189a6d09ef262a4b91bad1409889f48da863196508ba4fa850fd3d55c62d2f10a87248d8875a31e8912936f5401af3e432dccf01187b4958229e949462b0e86f9f526c23c393c6c47b90d087c6aa11c49e21cebf41181130019b434aff563dd30bc1b454c2c634810082b4282dc9e23965048e0cd8a8d5de3f7c11aace5ee5140598953d0ae63c1258371a94660b0d69524f8d2876705e3249f051d92351a59ca1794ffcf03b4eedbf85ce89e5f6f0df6e2060327a3346389150e9c9f1546c61d9b2ef4769971b18b8fa436fc0719d3e60351a4bc3d2cb8daa64fbfeb1aa39a1ad57990c209035a0343c9e7c3fac3bbec47b8efd0f9494d1186115bec8d060436b20e5ee2a08abdcaadf09ce8a04ee209a45701211b2a8f80910c2bd3d8c8cded4eca9b58212793779b87d6896419da6b5ac82ee1d2800e4d064b0c21eb65641e5341350518de17b3e239cc24fe625eb9b0ae0ba0abb9fbfb90d0368a88676e648426f4a388d21a154516de909164dad09af57e70e29f22c9996ba75398eecbb9cc45a0299d5694c5e75dd5dcf15bf8bffc808cb9f9b1d40f73a2f63fa4651bb5b05627735f69c6ef2ad20641bd08518546b903edf4a1b50d07d32425c5621042dc9a6aee76483c55ae0b0ec483bd3594269058d9f97895180c0d6824bd0225af3a1eda206ad6068ec0a859200ddc595db3681d9631ca37406a28d860fe840ee1a77350324ac7ef7e48c88574b642cc98afefec008b52670e17b23274b1ea3f577a988f49bb424412badd8eb2118002b95f9546b81ee3f8c23f56180a6354dd98500da75559e4f318b9407f63ecda8f7c2c31f29067ad83d677338895f63a7a8a5742ff97a629bd7872cfe35d1bd197ca77ef5ab51054c2afaa7eb39de8b61fc20f10239fdd605ebb8a03bbf634e2f126ba6a0d291d98e4a761620edd6e06d1ec375b2873f86477210e8f8a5b8c0c80af866a581a9e9be02c937cdb5ae74001e4ec644dc172ee228f6f7e057fe8fcbd8b4d51963e13c229e230cb921479dbdc442454c7977236842d943b7cf2126d3f50af9d9841877620afc5f95f4539cbe68c0a0eb62187ad627be5d08e1efba6db2bc0324661af9a987b5f9a160633fe714bc2a6b1129ffdb86d08108f3b9ba42eaa3858197ce5b17c31646b7db6b7b2e72f2791ead16bf88b745100b6fb07d0f40a703c03732c20cfb039a294493a20f7fedfdcccf8a43c99af7d72968f35c7c5d900bf3ecbf26613ca878d1c27871d79711061782edf5747bf030ac75d67ac2047466d0d58cc96b54ae34faa41f5162803533414570d64c9f7754d65508dd0f681661f64047582ff248688a099e5925f4d1c7a25ad3d1a834536af9ae18209390a1363db0b78ffe6d6c026d30d3b1a2f7078e54ce2b4ea1003b73ccdf3c95b24506433a73b8c55cdef2dbe14b6746aedeed9f22093cea919dc6064218e0faa2b3b66af435dd8b5da0573d6c87350d4d03cf94efece72850c242ec369a38d8eab7e8f5f9ae20108ec90053f8c11d5c21a6555296a126696fe00b1efb938aa6b931c1b33125813be800a53bb17b334f1e9e6d88a162d698119a38ba1ee11b4c5b3a20be096ac592f712898741349b9042d782491d9d0388b1348b31f680b632a997ae63b0d4e4186c268cf7a25d16f43072138c00e1b731f10d29975e0da183c6cdd6c2277f2ec69920996a5071e6336493553c9b9362ff9258cc70a35ba064b0d188545d9b4afb91f144de62c54dfc15ff314cfb6a4d8bec0187188ba70924b95b1126f491b79293f5083a0065b705351f4044505c8a0a27d777316e3323dabe1e378e593df0d4389600d11ca3f480075192316c16dc62044a4b53a455209c554d07da98a4195f987862968d64b4ef981fbcd09d3169d3da303d1c1f3e858dc950323151875ff678000370a7c000137f55de59f7e0eed88b14508510cc803d5269caade852501312d2f6cab6b79452ca9464ae0a1f0ae8093c36e09966039e69e03bfdd1c5004ba699f4df964d195936b56317b5d6a7f585f1fd7636b9a6b4f96df5709a585df3db757743daddde7cb8e63718419324499240982449922459c84216420003036158baf6e97f2df194d28574e7c5e0cbc46a13db594a989ed93498ccc2d81c9b282a62bdd99d33f3fcd5aff92b03309895b01b66268b0cc0e488a39c26c8b29e1eb845d1244992241026499224495193a0a828c3b6c0320da70a5896e126139b5510414f149254210a49aa1085245598bf45950ab800fa59b264c992254b96f060395c70c1854e5151914727689124499224499224191a1a8a82a669b10916c29a841df7f89e94dd106339af46e5e267c992254b962c31d51396332ae22f23297878ea68b4e998304a28fc44099780424909a3fc89122e61084c404151a9a484512a614994700930c6f7a484512a6149947009d5042e2e2e6fc8df50c4893811078c25a586503aed948c4ed81ac88272fe94580856852810b9c94edcfdc916b6b085290c0d0d69ef79949362d9a86a238f3027f2d41c3196a384928cf881c4114114904012a152b506d891e4c7de7071c90193046608d22663aa272c07cbc15ed04d030a05ac0957dd7860a3ad078cfe037bc272b09cc8537d78228f16510b9ec88342a1523107bab448559437030ccbc160f05e224f152522d8ae8f8282b27215164ba552b13a65ed6ab5e9586d3a24842fa6e6f8ebbd17f3e24bc21c2c27097604cbe981ad95341f4e09ab7673e2427d2c9d751e3c1908892084101241221dbc37e4304a0dc6d424a04bc78e045e13db8e12a3aa6d38b65fc6b704643355cb0cb0e3c7881f4047446c88e7135bb81b2e2e39361898f9d237edf210f44b2c1a651d516794a31057fc6cc3b61e30cb7f356693a885ec412fbf8f45f10aef250e0d7d91351cad2ae1c5ccf79fa2a8e168381a4e1843d65ad349438186a395405b410eca6630fc4577c7a227fed243fcc6bb70d21e7ca128c89ec1a2a26dc868db619d4ea7148aa7ac45a15028aa4ea552f4a9126c1783f256e4afa7da563d829b07c57b892fa804d9bfc8ea884560d8f60232c17e341c0dc75ff0fdb522fe128b62511d6d24f92f662b0139cad07bef7517e149b0cf5483b04edc3ce98ed11da67c40938071f1450ee8cf12b43085ccc8144e7f7a2ecbee5f647cc77a69bd09f5a797aff9cb3ee9e93f7c69e12703a794e66f5575bb37945572f5a867bd275f9b824b13b24c429652ca872f8d61acd585d93bf70d94709bc17a197f998525ee549f7a195fdd98b7de74a0d4f4186fe3814adde8dc8cf974336092d162585f8984b7978130b971f71de6e2e2a293c25e1024c7d959dc746499633aa246678c11ba13ec27bd0d654318e1c358f4e6c24927633a16072201c077d148cb773187e53b38c4c37730bf72bf73a13a1d238ec9e1bba65f556e2bcb50b929989555ee2a57a9a95cd50e2e4aa49aca4de58a693277e5ef15e2f115c0ab5c5406c0cd22013dd39293b3501900048290e5f60c0e97ea00c117ca835329163eb3cbfccce7ec2f99d791318c95f9da5abe9ddf2633b3c9e0c01b1c9c52ccad7faf85e4c554f162f2fb532a1e8e9917010870df9bb9efd9c8570cb95f868af7927130e47e1eca72df0c0e9707a1015c159597f995af24159596d1b61d2fab6099fffbb2cadd893f802884002e45a2a3a9dcd38a065120aa43919058900802c12017fa933b2525470c8e8a83e3c6c4fccae7f86ada74e4c0303626e6653cc78e9763308e18080614d254ae2907f10203735f5e7ee583f87ada74048161eccbcbcb7810f605e6a56a4ddca57a2762210121b11989a6c122ea93fb7503881b1708207ee55f5f519b8e1786b14000f132fe320101c40d955b222aaa37d963007cf881c887fbc30fbff201f89ada740400c3d81f7e78190fc00f2c3ff8f043ac94ca25b9dc530e7435041a02831c88c6a7f7a1211e46450fbea0523d3a3e28f1e6c7468d1e8a6adc1e7af895b7f11565d36103c3d81e7a7819b781eaa1a5871a1cd1aba8dccd928a4844d0e545f5062281482051bd79312bef4f024242b1f0976b87f7a75af88b7bffba728b787965a5ee70b95f79d757d5a6c385612cf732eeba9d556ee79514363d77494d484039ac9597f115ecb9f61b953495abe5bf3b2c5745c56a2ab7e612d5813fd0e54878a0cb49244ce566271a17a5a95c9a69fc4d697f575e6548163ae09a276eb20e71e5559ec6d7941cee7b3568dcce78b5ed7879056b2a5766963bc2e18e86e22501e13b8414e440f843a10426411e08e49c0e74b90eb603abf2af320455dadf9d19db771587d4c45dfef7521f1a7734f46256b4ceae340928e6bad2542e8c97e24b9140d7dffba00bfa402bfce599c75f2a2420e8f207595a646415fc54c75f9d75665c4de57a8aa6725b6567c6d3b8746506a656e8c07654a7956174aa907efe28cb97812daa030481a850c7e58e04a4a37322015912d0ed688f8e0ed522fb8fa80e05ca0005c25e84271db7d1a08d7c22b29e681bdf028004174b8546a32e7690080671100a19008ff307d281391dd491f90e22e9208f10dfc11ee893e33bf893fb5fe7439d13755e04d3419c57ff03a23bef094077fee343bfeefca646bb1100b4ebe4ee9ef6c9a1bbeb20aebb1eca8d43b791db5d23c9ddfd885afd825430289c09a2b2d83efe10d81200fbf000906119779895c19d650d0077ac1702e7c041180edc61360677961504ee580f83bbe75e70c7bdf08f3f0604ee30cb0a00ee58ef828d60367087d91e706759ac7f00f080a18b0b772e1c873bee9fa503ee58d6b2600cb396c5fac7dd4f22f802712812f8025d5c38ee7158990807c34c140509f4e15cea577b7b261a812f43b258a2a6c7c8288f52fd127f7aff18a37838564511e7c5983ee2a82eca9beecc27131516e5fb595fe9a683d517054b8aa46f4c3766d57dcf870e12a16046b927167ece7966ddf76aace017b9e1164e9d536f6fcd13371905efa430a5a4d39fb090e9be9988031bbef8d76dfb7e1209c358d2f6664af76518f81275a24ed4d1d181d18189413188280611c520a2184414831e118659cb62fd739c0b86c91ff923d442f2a785e44f0b39107c99373918662d8bf5cf5117178efb67b1ac9d443818662d8bf5cf713e3c9674bba883e51894bd631075a17623d391c89fec50fe48a278137b644fcedd24cab97ee5b1b4b3b81bfdaca3bff3473770321071a47c1187ba3cd13690baae88fe324c555877777f15008011fb281fe81a8244b028e244232d1f95d54faf2cab645756ac90ac747eac72a00b7e45fd3887f2812f34e8c94fe3a85cb40d085f4a98863bcc56dcd9a0929327197eb597e612107cc1c1072b0141681f5b82ede20f15a1e51dd2e3e003adc55d4b07071ff9dd0e48563fd0b5b23738dd6e97303473bc3bac1d90949c38152c13149073b02109f5b38594a81f6b515ba098a07cb4d50f1b8658ac2d98e8a4708a52371ce7929321ca5e29a594734e7be39c5308d26facb9b1b22a34546bb517e678513f774816710b0762c3b176236158c4281210b617d2a3b640f9a07cb2e9b16f49d21d92858661fe03dbed8044fbdadd9b8eea81a16c3fde2e16417b7b81c41c1c7c5e0db8fab92b26ce61d102f297cf16fe52b598f8ab4379f838f8ec8004be907c2aa642f94cf5d9a64385f2adfd7b323e949920190a12822fa8c730db93a1fcaee424c38f7705e49c53c1f68f7656d6da0b0416ad1490cd90f0aab4854fcb67c5c45d70f5c306d3775a6ef9c017d2c36ffdf84bfbd377a822881a822fa9878f22822fa8f712121cd0003a9d8632f626a2be345697061377c1185fca11b77aec7460e7a6b5809e99df3313e368331263d0f5be3e08bd487d2c59d07fd9bf998aa34903197ec7beb9b9b9c938e08a0f371e18bd46c4ec1fec0744fcd84a80f6f58fd0f011d99baea0090233f66f28dbccd8ccf8d79a1e234bdcf590eced1d52ff419749c7d6bca21c6446fbceda106193e19bc9ee9b19dd8e1573ec118003e4f8fd6cc4389f6a99ec57236601279410c2b891302cc4b394df36fd34ca269cbf20ee1cc3603da5ec105f231cde3670603fdcd000504387d40c1a9bd62c3af81343cc8101718ad9d483dd21f5ac17a4e5d29643e50bd894f0d53e9cbf26861d36cc32932925e55e97abe37ce8b8205c1c490afd6af8e73785ed7fa6ae37315173579c326699c914857dceb984116a9a8fc616a865943236992e834cc62833040e0ad800062a886c60831b16cc70010850b22083d07d605c6ee0ccc8019d4adea002085d06eff019221b81fc91eeeeee9416e10008aa38c2158086a8e004b8056a840c46dddda3a0d3c7dddd3fc57a6364278217d9bfc55f9a0b2b3f254fda90b5fc943c218376842a43c9203dfa0b92464a2fe8c20e6e70853158e188d0148c40ff025501104b482005174886526086192a86105501cc0dcec0c51567b8518216327dbba4491899ca0c21b303fb8cf25b92052a64527e4bb2f04395f088da873891ecff22c8fe2efe30fe328e93fd7f4491fd25e02420ca32fe589a04f50aebe262df0de71acaffdcdfcdb1bc296cf7cfbd20baf8e0c68d1b303030b18b9f9fbc18c6e29cc28ea0fb488e731ed43d4734e184f79196f7178dfdd1b71e30b360dda5b6d33545cfb2229b3991bb84dfe3b69eb8636972cbc99939b2e7712d0347ddd38265586cc913b3b044986131e8f78617349af2483f2bf5a917fbfdd55e279438bdea53de9bfe7469de9bbe9e4e0f3722508ff26feb814a39e1eebd904651fde9aafea970ebf5bfc7fee1be91c15ae131d4e0f56b50d89f5fed588b39ae63e954f20ee8325d97cb991abb38d74a98da891df0e545987a3fa99781bb9af2a527fdc33ee5beccb5348c16022530c4b17f40616d7cdd4eea6c1a65a5e90269c9efe11d8b9fbbe697489c7647b735bf35bb7f746377c097d7ffda08f644db4cb9595165bc986759ef55fe29e1011b726d4d05d92faab351d2832b6cbc2ff0f9bdcb039e63d3ffc9ee9e2de57c97524a29e79453ca09237c9034aaf5695e65196cab47e9fb1bd3a4bee42ddd28eff74f52b2aa747f94cbb9b8c434fd242fb4137d839bf8c2766fe8f407e824fc7567e9ced49cf22ba9494d2936a9f420b40df7f69eb6817d3f0d42dbc03e37867d77cff73b5ffa10b28791657c6e3afc47fdb27fedd1575690ce3ab0afb785619577cef4325e4a6291f02324f0f961a045ee2af2fb79010a726df1903877c7844d179590df757ece59e7306ec7b615fd50ff48a420ec4e4cc2b9c7bdd737b88967bda2d3f70dfdd4577afba6092732ca37e1afd4d31486b1feead70deb26e1dcfbd555c2b9f7b3e403abfa78c43ad1332adc5afd9b517d6aa53a02a77089288cdcbda1a0fc4e27eaa25adcb1dd2b6aa2d6d729e87a8afcb447e11fa7ef4d87fdd38dced13f7dca5fdd73ee8453ce9dee7b434e641f3f89c84197096cc4ad1fd97f207bf8dbfbc070490bdb713db0d8772c1cc4df150bc8fae19b31dd9deced2ddd2ecbdd2bba7960cc3cf1c09881af12bffaf7a5c1beebad88fa5448532cb5590cfb9ec96ef6910956467e4ac26871d77bec722fb01c4e13f025098a5dc919c220756e13d0f5fe1535e1ef1be61539ac34b0a0b564bf06dbb968a3a6a37f3ba497f11b475c0d168636a6a15f7a97f934f54b7f63a3a8afb45648bf2f0fd4531367a1cb515a321de233342892473f7afad629fd137df8283762afc66d1161ff7d175b3d4a5f2311dddd7d3def60cfa3f43772f77fc7751791ea9cb21fed0ed699befef674ab2fb7cf9c2ee986bb5af1ab765bf42b2e000d7e7e34020cbadcb8bc29b523d525f523bb0c612e1f780fc2f7bc7b470d6c9d81ed5e77cbf483635467f1d1086cf7f709e0fc40918cc1c72e0d1020ee24cb872dc0fe467a127682f41b6e61f8cd941efcd9daa731cd7cf9b1be7c9a39e76797c7e827a61772c1ce1f7dadb7d563befc9965b547c55d635773e24edc499edb10f2fcaca35f81b8935cbf73f6b3baeca2c29bfc94284107488bea2bd420ab7fbe9978c3ef207f9d1ee27411fbf05b8aece1f711ecbbb1689ed68273c1b01b0ebed48737d085f2db7cb47af89bdedff4122b11bfd5e3d442f997537fc2adf9f2e9f4aadb3abdf7a31bfbfe0431e7dea76ea370879d1e7c9505dffb217bfde7fa16cebd375df7f1213827f47e7b4fc1c8ef35a1fcbebdc8af49f7f4c0676f69ab97d5d8083b93ec3d76dfd39ed8636f8a093db6c771f7e4c7cdfc581ea6813731db82c3f970bee339e1c4e22b7a8edfc5e8588cf33d46884d9f4fef9b11c3980220202077e24edc9d6820b0fdfd23850b41578e8e0e12243c3c3d3d3f2d457f0fe922de8dc5aba77d72bbe4ee88dd0be7badbf10f9c02fc8f10a6619cebfe248e40a2c3c80df3b39fb738d75cf7e7ee17448486fa582a8c3fef6e1819d80ed3a144989118d80ea69f1251a2dc30f0c5da8781f9feb863615e4ccdfd391cc736d8f70778af3987613c9005d51fcae9d32594d03968a11516beaf01eb64446c9d6361f269fa31dcdfbdb7ceb1eccb3a8bafe83d20ec8c656d63ef610f97c1bef78210cf32fefbf7177c167fd1648fe18ff9e1e623c3411cbba62aac64c1f02110911f2bfc60861264bf2733c420fbddcc7083ecf764862e64bf2b68e3dd5864210b58c082175e5ce10a56b042175d542f6462a85dc8c450bd50bbf0c5175f6462b0fdda6a04b546fb3608aba3b4e978acc628140a9542ea57c9352baa301aa7711aa78a188364793e84b28918236dc1c9507ecb49a3c47ede96216d033ebd712e3e942d22681b5042d97fbb169c0c6da073ed0f92dec79737b6e0e4969e2ce3f1b6dcc0862d38104628238c37320bb5562965040283641cfb27a5a419a512fb88cdf9924ad7134925843cdcc077ee49292a0cc240601007c4fd64c75d90984b91daf070534333ec9ec893879becd32546db882fdf27743d691bd155e45c6d6d5e9718124a2879b8e1e126f3c0e32ae2e1c61d3a277f6a8642db0f18045d6f0ab6c37250d0cca37468688888e826779811233e53b5603b16238fc5b95680431c71668860162c15c282edf7f7996704a2a13e964e4509e7206c4289227d93bbc8cd1025825cf9f34ac039f80f31ec2101732904b67b434900b129157f69d00b870edddddf39081b76bfee6ed91886730ebac44601fce12f1723fcd5b9c8b8a00b1450012dea29a5282c0716f5a897f12e9d4c965e1ff4b32ca39786be2cb716ddd33c439a67c8ea55df6196055f06beacf07b2e0cabb086a1e0f75c9dc22ab929aa63c98de5d27798cd244c5aa23329e569b7f321b36c3ee863239aec2926028bfd865b8a36e21cceed233703300b8119c39d939f1543ecc032cec1efaa156cf7843a1e09c097a78f28c38fb77b26c77a00b1f8ad0875e8771c8d7ae251adf26756033b7a24dc2c410218a3d16b3fc29da6bd767534160273bfbeb103299ac29d7dd665fd0c964aa5d5560fd6cff8192c4c83925279da7a4a49294f594f554fe95ffa4f7fc6cb68551a2ba3968a9d815b3dfe5bdf7a4c839252adb45a34545a2d1934566cea5b2a28aa192a4c63bf3e0d4aea67504aa9b554857e8b96287d19f453f451e8a7d067dd1ea254f5ac9781ac8baa70622a98fa97bad8129b7a4cf528954ad5e21c7dd575718eda148a89d2a72834452d7e1b8a524a29a594527a9281a627d1df28cd5868cb536cf8018349a613b06f491082e045fe4cb5c8f59d093f997efd5a7a2c0f88529a04fd97e977369462146e3e340cc3b4faf4bd3ec7b61efef5bd27ef05e5da5a10567bb8e9808ec5486abdcc92dd71d56e60bbfec9b2ef9f17c3c45f9adff89022ac5ff27050a099f09cbc30c0e8ae7f4edfbda0ae7f0cf09a387992fb3bcfdebd1719e87a2fedf55eefa584e33d1ba4776c8473198e24dc750e3909e7ba9f19b2fdee8121fb11af8becd80967b1aced1f6c84738e633419004726ab141cf5bbd1770e0f7f8a5be703b51d772c4b644f5fbb413a6b955e8dde4c311c02117ce9f760fb4e09e660d80fccaed5c0a252f49b46ad5b25fad48d9a1516fbce1df41942a5faa7c9eda0146e263f2fc69d8804b50ac5b82902669aad484ed4d1c89d67d127afbe4222b6eb1cea9e473dc2ad93f20e028c4a2ad81c7fbd0cea6cdfc12b72bf6603db750ecc691c7d6a1d0c77300be9ecb8c5038e3146f61dfb34f48374d61e7bd2a5d1be7edd349a61d8d390d8fab41dabd5c0fa15eefdcec45fec77bf6645077db42a2cfdfaeed0bd9bf0c8216b34b0ab8747fcd50f731e4ef162fc3ba8436fd79db3cdc76b807d4bdcb045aeeffef569bd1dd43514324bae4ce8b388723764c94057a97f74fcd547fcd5fe241012cce3fc536e8ef7387f7b733c97bfbc433c0e090ebeec782e7f27290c8c0d93b80c77d13ed7e35e58cfd538fad960618e3b20ef49aeef526bbad6a8b0a41cd99f3e4c63c7c5384686af7d1036c3dd8f4c2304e6ec5fae49605fdfb55b837d679331acb9630dd43fd4d4e2dc89c85f4ebc48bb0de45c131e396837fbd3fd710de0dcdb6187cce6ecdfc37212d0d59f7dfff88bf4fdcde4c56cdfffd36139fd49a4e00e33a1fc0a772c0d3f216b3ffad56d42d65e759390b547b9da9b6e0e3ff653b8c34c8fc2da9fb0f6f69638ed9de5d5d06ab4ef6cb276b5cb04eee2077c8ad0b0fbe683bebf8e5641eecfee12326313cb96fca23fbc2cf93d20f804b421491eb298138347bc98977338371f46dbc27658df10fd340ea53fe7f39f1fa4c7cb003c1e8e1b6d63fefc1d2f86fe9c93c59a3f59b38bdc5fe44234dfd0bc42eeef5e79f61ff16a741b892fa8bd0475c31bc41823675f830d09010868ce70951ae62f9af8d8cf37bd9426b9fada1a95f11d974dff56f45f3ee9bebbb04cb92c51fe516fb3474992cd15678f729fbb3219da18f9c5b8f635130b49c9aacfbede4ef288b9663e1334fea6a7f197daac757ef65a273ff397d55f735ca3c23b51a07e8442fd68841a9d58dba73c1122a3673d11d4a71e75df73d9d1a577bb9dcd324cafdde4f76aac7067c2f2b54f39b152324c34b0f4b5ef227d8d662f6ff66fe301b3f4415f4afa25cc5f869c54bffa0eebac54499556bf66939afcfaa65b63fad6575925aed9bed3647cdd5ed36e27a50c2d8a9427c24a61a58c9e85927a22f6b9543f7a22aa473d91944a08cc4998de1ff5dbd7d7dea465f6b397816f33bddfd2a3dcd4b59775b3886f1a5dfaa512ce8226fe665385addf63e42e7bed5b7b0d7715777167f43e925fe56df188593e9663fef1c290ac92df4f178ae4aeb3100b74363903d42663d9cbcfb014d219c32d20340b81793acd2c18cebd7fb86bc9f139ceb9f8517e0dfdce092c242563dfbd9bbdfc99655936335c83bd168357d35808cc49c896eee11afa5d67af837ef7325c836b30bc039f6289df5defb137fb16e065ade13ff88d53ddbd371ddd0d53809735acb9c0c68710fac724f575f7bf9afeeec6123fe1e3234a29bde5a7932c97b8a149966e00a3766f3a508f350ed3cf1fbd98f752d1f8ced2e74a3df6aa0b1f977ad3b53472ea69ac72ea576eaaf39c1a4a119a2c8f7b2def7582a97882a7d313f1f9f428af3de97624b86aade4b7fec9906c7fe52f2bdf61efdfd7953b64e545f0332b388b54ea5152a7542a055e95af9a06e16ab57ad66ab562414dcb54d624e4afd49fb4d3b5f6a1caadaaaf2915956d074b8bb6252466f835a50c31090be96c71a77d0a9cf1bd15915244cac34fa5b4daea91f2a73fa5b07eae7e8e507ea67ece8717ea38377fc6855638375fe542242b4de553beb6ca871d6d3ea496825b3d547ef52b152ce3706a292fb7225a359d65bc90d87ad60b89b9a689f2ea6b4a7985dfabd1ad5ef5d9e6437e0b0be92c03639b0ffb2b2ca4330b77f04d1f371d290fe756440aa6d19e3e8de98374b69fa23d9731b1fb62b4d76e43e1d5985f3b4ae82d49f05917e638377f75e111e76623c9f53bae9b38375f753bc8b9f9f6b617cecd37cd47999fba3dd46100bd1af3352eece953df35908ca76ee951b7c5b9f9a7ebe2dcfc0d9a32dc1ec27720f88299708775366bb88439e7e6cbf89ba62e5e4c4d137dfbd87ac88740fe6ad24173eb21492fa433e965e06bf3b1bb04cd1d16a4b37c0cc3200fcb513cb535fa97474cd8e41af81d1dbdd78c1e8f9e099b3cc24c609166733e13d8fc4771cdc43b51c42722658c2fe513b144e21321f29e8be536528c78c4fe802fcf91f057e7f8f4a329c6e883fdcee6f05cf163fc0eb339e6e85639c6797a25f2e97d43c0e9ebdb7ee4134d8df65d12a7ee6b4edfd99c9e099b7cc24c90b47f79bbb805e9dca7bb337a3bfad2ade938e086378c91e5336193256682848160434200822c2425cb9fb846e21d8aa3a00f5d2f7b22143b319a01153e988205466082ce0cf644e86f4f24c316bade8f9ec886b3d7320cc3aced68b2c2ca7791f189869202ed300014ec8f1d439f0490272c3b0c30faa722d339f1ff3f43c087f025843243787b9c22066165dca1ac1c535e8d88e5a8b910518b18746cd331b18a8a7391a56939d64e8cb1300da35906b3ac592c168be5337de4d71cef615a0b6cf780b2fceef91c21e3877c23fc155fce97e72effa1c430cb2212e3bbbcc4344f08fa0068084d4b65f7973516d87ee83e7dbe1dd1e50652d8a98fa5739f0ce72be11c9c73feab9933fe9c334e295f8c51ba12ce49615da00b3e4c4ffb40d87805b6731efa10ce8841e4ae97e79d11a3e8ca7803c19728e813c12886d187518c4614a30fa3188d28461f46311a518c668f515a1f7e13f9eba69d64d8f9900cbd48862f4f6d42b8e900a2cd97b25fe077599b1aa8b6e4cf50edb624fc4c097c42f2fe783512f05cf0c1c0da4217120a16a67b4046f80b4222fa5d5c6cdf1136c25df0a1bb80300c0c77fd700ebea602eb0d819e0b3e94d0e6a84118dd27429316120a2b6c90e3b3702dcfa2c40665b081181e6f7c5c8c4e70b239503d3e4eca1765679bd81a8033b050c7be8783bec7255a3c4a3906180fc6c3a332b1a81066243e66847e65a55629e7e85be728a42467795679a644f0a51aa1444d20ae5a3847bf1aa9402c96a5afda88e0e86b4cb0f447442327fe2ad1af4210c3aa10fdda26a1217f75360c7f510886bf3a333dfd66e2af527dfa56ab3968abebafbacde48752e843bf7eea2b97ead29b7e89b88316fd35ef8b893f4d737edd01faec1d24093e8afe8942faa68b95ae96b51f56c6e8571eb4de66bcbde4d5a0f4e13b7d157fc94ff10b44a13eac0f9f27cfafee6270303c1cdb2b8243b58b20ec7c0805c803ca4cd864f814772db99fe352d8774e64086b7d19638cf2b4c4f69bbe9b4668d75048e1e82b06e18f5e06428a62a57caddd7a196f67fccab7545ef5347ec6d7151a4864b9b242033fe75670f723cb19b7a5827bb0acbe25714dcd1e625c837d17298a0c443d1dbd8c5bd363401ce77c054d403113190692c24252f2e951f83dae1be19a13de89427b22a5c72e143dc64c16b0093da3e16904ba98fcd86e1a79ff99035f4a9af6a526e245a5273244c4872091075ddafb4f1df852c2166296ec09c2f6feb2a7716cef4c72277b5e1372279760e163126e3deac34a7b542885f05e9e444276c984ec284031c79e46a29108833c0ce7869460e54321a19e2582d85c4444b3dbcf06ed8050ac8e46358b5e1f7da7eff48d384e3fdfd1deaf7603dbf99083e1f9d08b29924d9f5886431e869604bbe1ce25ff0ececf688f7d13c19726306c6a1786e1aee918c6bac02115e7e8fca13cc370a21793fdecdc0c797eedcea35ba304863d288edfc49c3cf689b67196185a4a85c5080edbb1f27356bcf88cfbcb63f6f6591206ebbd0ec39d28717707d26a252dfb491c6466197dc4ef8751f6db62cfa9f5e663caa63c22869074f36c78f27c32de77deecc61bfa8ec10cd2d105f280e00a0d7c95b0f3be4dc7a7b0b0cc3971e0197dcce6b42e7342ab69348eb26a4ddfa9549c224b4c16579c510c462d05cab3eabb13651ed43cd0e5397ce75ee42c73307296f259e74870c8f077ce93b32cf321e4ac739f1959f6ce2467d8fe08e728b1d62d3ce9989aa72792112682425e73786cd301e429c9f5b11a44371d397cddb61e7fcd9ee9439e76ce947e3a28c9f373f83aefd6b3f1f8d8f9ddc6b369b1f9c0170cb396f5cf719b0fae3adcce3226846198102654edd71ee14d0b7fd5d1fb6f3cfecae1fdb71eb9e9c801c3d8510e2338824f49f694e48835a19e5c8b3867e456296a4e3de29c3f8d5bab1555e5562c6ee541a27a1929b8e240b1fa0e13d2012be6aee2542db23f94c25f19ce808f4623949f3f7106dc4946c1291b6f62c4c18171c991cbf1e30b9087e3f1660d36fe909e14ee607ade64714fe99f84a7d0149a98501036fb2a3b571c6cf48d8d70ac45dc95e18a13647b89ce71c8039a74bef9801e508e2cd2cdea8968335b5d6c5004610745782588c00ba61928a1852b0061481756b8208a2e80400599150f78821ac650a4831f3408018c289444c14510a22802d4f23b42186b784af212ad95c0f6fcee46c1960588024a5f04412505d1e1c801c4e9c6e987ae864a860e32583a1a2b3decf02998a5838907ac3ae95071f0d0367cf6d036fc651e658de387b671a36da060548d2347db90d138648658d9a1030f3dfcd030b821058c09b405b4e0463ec98c3144d10e538edc2028a1e1278cc724028ff3af2ec8463a8ad75c26fde318b27f7b61012f0602af06126dc3bf0bd95f2be2293922c3d877318f70173f3efd23627b9542cb21a520fbaf8094fd698b2093a72681aaa190b1d238d290fdbbc8a989a8b21832d6b08244735f647f4c061dbec0430f8d8301cf863f1106830e5cc83c38e0d5e821fbc3d19120cfd3e6d4269efa58624cf979bf25d0050e5d5c7c35e64f0967bf2f48295d5246dc0f0829639c53ca1929a58c734a29e3fc2058ee5743ca38e7c4ad84a33304b03917ae05e229b9234c71e3fec688ee8259f7255d9c618a2164d8029219cce0e6e08b11eeea1f39b0ed1fdddf1172da90fb73f86b624daf70307c311a2aea51f2a447a70a5f6c54d8b745dea8b05cae4e64df43085fe949f9eeeeee1edf679af8321e25cbbbe34ed58e188184bf6c328c0fe1b7c00a83c8d0e64021845f213499b2efb47f197bd2ad31994c26ccc496615fabe9924875877e893ea956ccc456bf71c53b11cbf944a27c22f1474f64d227329a9f61144e28617c4f883ed12d274f6b2de5fcc153820428bf7fa8274f9ed45210b64b251868bbbb093dd93b20ef09868585b004ffbd8603db75ee5a30e3901fc46e3b0ad58d9099b0b9c90e279c70ce4923d67a4f93e96d3d4c847c7f9bdcc9bc1ab7c54388ec2f849479420875bcbb77962dff374686ff9ec6df0b91fd1fced5b5f7deabf1a41980f064491086f04c950d4572173dc9eedf5ffbddf1b7b4786b7d3b9bf9fd3270de4ef3e139f86d2ca433c434fdeeb8c5b9d7100ad77060bb961c83b0118b23197b87dffd27f859661a6998be9c47745e0cfcd176001f6d3ceef4c7b096215cc2862164ecfdb18713c36f4edce21cc411e8bdf4cb9e2925b3749d3371d73a393612c75df3e4d8b88dbc4ada4841b06f1ce7faf47dfaead2256a0919a4f3acf066887d0844a67fb0847df6510e7c19e1fe81aef811b3aceefbe7d588afd5c0aa3e3a87b2faae7f327ceb442b15fd46c131bec7cea928f1552a9cead85fc25cc2ceb262443472aa2b8e09c7bd88b791188d9cba8873f14f27dc464c97f4a6e8dd9d63c58bc1bef49d5f91e36b36b08da36d94ddfd97c6e7cc139392745fec8faf5d61e3eb9fd1c7d84239c67ff75dcd0a1bffe5ce7d72fc5885f56f9f9ff78e3817eba8bec7f7295e0cfce8df35a5f97efb21fcb779b422472a723ce22f1a7eb163e7442345e8294b691935e7b41a27eede16393e8d19c65e8df8afb1bf0b76007fd85b4c89e5c013c3f831be0375ab487d2e9649ee9f4f32f61d46ee9f6cf0e20d58e495fc96bca148a63fa9bdd60916fea3911fa4330dd219fbe7dc8cd1b65aefe9b5bea7d74e97259b6eb77df6fdeaabe420ac7cfa20319b6a1b8a64ecc993d2d69604b6f3fb38ff744db7a62eeaeb25bd76e7d59cfb79519fba2cf96d3e72c8afb3b71b11b06d72ab4767ec3b635fbaa4bb2d2124e6f76a64ff5e8df9f5e97680a97572bef6733bc07caf074beeaf51a2930720f5d64307d669f95decb3af2fc344034bd33fbf7e8769dbc6a37fe2594d5a8d960416fbf7f16b17d1d259eb5af2ebe6e3aead13ec4f9ac9635e219d257e9bbdc1a3bf3af8fd0fbe7f876df1bbb37f7cf8423ac3b7f1ee175448c4be87d8d3efe43fe7644d698efab3af22e89771ed764f8020fb4dd6b64b6a6dffc6c8ddf3696d9808ede5d368b8c543882c5f882c5fe2160f08c718e383e48abb38c2d93f29b1dbaf460773d78644eeee41dca1b77341512bd40ae52995f1146b3868298df5dacb603d0aeb5338b01eb3589452ab525116a59452aa4a797bbb7ffba7db9d608b468b46ea5bf87dc577087e11fc0cc659b0589ff233be925833582cd5ab58ad56eb555aad964a8aa5f6eb6f329ed26ffaed85101875d354f739c7bad1b9d4c367fdffdfff4f4905a704a864ed55954d0d159188000000002314000028140c084422a15030200f14727914800c99a04c785a18a7411443c8186308318600010000100010189130011cd81ae3b28c163cb0839e94aae9f499f538dc564e91d27d7f884d5676ba36a4888650b49c0126f8b4bbce3e17023e2fd7a2e721ea0b289a818346851d143366f97e73693c6666ee2aaea2fe72cf4e8ed24381be4b17eb400983a6df211f1b75805b001600bbace2cadd9b8f860f9867fdcfbddfbda3f4a1db4bc4f85f5fb7d109ee51d474dd9f6dca343f52aba5e32934e9aeabf0b8e9c2b719bf0c179bf85c8673055673498e68044aeca599cab360dde170e32f5e533ef6dc1e8ba808b9b1530825cfbab34c061cc04dd81dfa0ee8c9fcf95cf05118b85b33f9516425deeac29085e582a754f4c4722e1991641bb932aa28aa87b93d525e321326907d9bfda0054921f3998916771ace664c6ddb7b207949753021b22c25af667985b729754ef2db1348f4453e69af461d925f60288e72a8d7f05041191044df930784a5f003fc6c6a7a102fbbc62c146c98459e3c3f6a0b312eb4179534b3e55fc8e41ab300802bbb9a9fcf23d7da286e8d269fae02247005ed60b37efdc49bb62202a2e0ecf690adb3552e76687a6f32842d810d8c94acd23592f3ecea0a24fd6f493ecb3361b926dd0ee963e4c8dc2c3a448fdfe944a9b22489d01d5f04b9ef10597335be6e69338e6cdf5155fb04bdf73047eac1b7951d49e4237c618ed48f402fe46bf8bb27c7e09cc993a4fa9574b0e3e8e0d49f36f8d996213d73e1161b0de71f54017e8771b8062ed870dcb00e691f160634beb1e93cc5c4e0529b4d25056c9fe8f706e737062fb35b5c121c164c980de7bfd549cd15d87b7258309d67739f7ac461e1f8ab9cb08b0652be339fd161b1bab3c752266394a5f061fedf3536019f1365a97c28d45300569c2317ae863ede968a303ea036258822e8277288a554bfdf22f9556e21d2cf85f3b60359cc08ed1357aa72f76301538af2143d6b63225bd709e45ad54218979d2e8c4a2b84a479718174937b3c1664a5fe04ec26b801a7317e5f03c76f95b27ed5f857c04708bd5b2079862171f9293ac402f3f9671e2fe35b27dd73d2e0e6060b791a31fd76933e2badeeacc82a2bf6fc64106fb0cc363e853126808cc8058a2dcd96035f154480f7674c0969277722b48bd929d9a5dd312760d19d8a8085dd667aef9b6de45eac2eb399d6ddb5798e98d6af020c6be4ed469cf87d2ffdb80f0f8801e91754c08a6a3799309dc623ed1208aa6b752fc1d17a31a168db50c96fccee9d982b60e39e371b049d59c3ab427ef72e0cccd5b3034d637d0c49f72139381f118dd56eee3b518babbcee59b9b1cc139d9b5ad3c5817cab1d6194dbcdf1ccc7942cab518f9411a740218935c69918eb4462e5a583af11001448efe5612c3160b677a3afc3a5b97b19077abf0df8c07c33e697c565605a5953407b12a9d390971cc71223ffc719dae486498756d9943da16cdb76c0a6bc7695874bc34d8f80c187a0438e4d289c2f0d08b2a529fb1c3f3ec8ac3fef12df6095011da6633729b8b585fd9682c03cd04267dd79308fe5a65244d5153da6a9da6a53f06afa862602ca69f14157560f092ff2e0e80ee9dcc20621c0f1950411435c182ab50e51cdf27be2b6ea66da88986995e756a67fe78b75f3c6ff3d8f2ac9e8794c70de3d7da3eba40dd2d7ee37470ef1b854e1cef3c07bbc38595a46321642dc32f48d0e90877b05b9d9b6a584e45c70aa455a12eca6f05ef9a2ded1a0a7f9dfd7a3a80fab1364bef624e71c431df450483e7848f780a64efd4a66f5ed03b7fc6104766cd53eb8331686fcaaeb47e4b9456cfcb62e474444aa94b41321b33a6106979bc9f69dd2b57f49b15514222bfe1dad6629b1e057f0bb3647a685c3a9666e096cb36835719c49bb427383f6bfdc82a51c44a67950296f6daf29dc91f0c0323995f075b152636d1428ad67e9a5bf124fb9296400091dde5ebdc49e2680673aa08af84900116b020098ab05e3721207205b023a08c7580bce47090748729123a74772589d6faab5e3cd2a5ea4474ee7c0326cb9ee56029c818750f3dd89826b05fa4fc10387f82f0ad6b895551d8b49225082ff488ac885157d87fa902ed0c8ef195cb98fd8565c693a8aefcd92d826747b89a7878b11d6e0c25d370dfeae9a400fe8aec047a61d83127b3aa7ee8108b288610a7a55644caa6695738fe67dc9bf0652f4be435ca65c5bd4d38c1553b0480862a1ba6f246e4fa032bbf0d1e23a55da3a73381bd24809cc8fdb4171a79db72418a5a69dad886d22645a4115adb29f8aa988896a31b24a88e755ff88a4e71a6053c7891407fc682f3c5202213a331d748d3244d5d928f893dee1c7d42080037bb057fdca0d42e4d8dd1cae6156e382fcdfcc5069fa89aecfde155426e0486dce625541895c242ed900152a433e01e6b82edb0c373fc52a49a63e075704a9b0202eb7ecbd2bbccb68e34f51993644ccd9e2b5f340fd0c2c5f6b7251a8580b934b6c6eef533239a7bf700318ff8d57491f2676ec89eaab5effafcec0319c21937cf81e43dd2eeb03fb7aeb50c12a495ff95ff7836f2eb4dbb0025f4244173f5b361afe2b83eff01726e505e8ff878eaa545a4f9313e49180ab2d01a6af040911b028d4be81060402027354b14499e600c305122bda5d6d8085ecb5f077abe0a63411c0c10280fe9ff51d42d11486a65d5b852d3ae6457e37a011a8213e7e18d26e754f6aa2db77546b4dba534a9bf6402bc0f1eda10b35cbe82abebe362b7cca0c3f96f002029c54bd607b2a848e725d1b4ec7f9c5932ea5d43a8e723f3dd0dee31efbd9f6cfa1cfe6308d4e52e5d091c75d9b94740812f80a1597fcc2c65b602a2aae01b7f7aa995c02cfd8604aa7cf29bab3b58c0a71a59570b94c61d8941e0a423e0edb2fd8d05a6a8d26d79e77b692c1b6901605ab907d043349503c0c41f6049953525a86504078b06bf11aa0b19da1238721eb04cf92785573f47a9fd696a53bd94b464cad933aab70720f2ed0bc1e187c7d08f1bf24b9ad5098b5fd34a2c8457744a9a6966a06a5a5abc191670f96b66f455eade7ce0cdbc50e6bb73fd7786b44be6cabcf2e140b4a85bfb95b3d1f62cc35bf810e458bdb70dd7b3cd91018d5e8c9987b46af8fc18ed39d4aba799b369713e86d874055a9c33353bde4342ce09b97b81137582f32801d8c08b00b8302580a45904c07e98b1c2b0238478199eee3a20c001078b733272aa6e0de2b5848315090f1585a595dfffeb11a598aa7d0b8b397322d409abdb690845b11264a89d85f9d1dda41fc5c643defcb060954555df66ff73c9c4226c2879674bcc402d06547fba2709eab84b2091374bb02d674c645c7016854909b611b5c033460ff5bc7ac088004a50bc3be88a11c16db409a9de7821bd64bb993589bcdfd5ff956c20614d78271f3882fdcfa16c67646237dc0e707e641ae445a3b0c44e334a7ebe96f66a4ed59dedb3e8a71b6432e7ec5c42605984db6038f214a59bb0555f19654ea347563054643080b2d8fe66dc3d6e169943dcd51e4cd7b5380a9bba45a9ea289f7247f2fcb39110457111849f1107dfe4c5c9a9dd128053874e9e51260da41c84ea8b8e8f9a23a40c67bea7e28abeb331dbfadecdde4ef85c33b6f33fd24c1134b0afd489033685e56130dff8eb6adaed6ed78857481b4dd0ba3185e088346baff35e99d7e34b20e7afee9a305a2e7e80c7d6d8e2b191895365876b1b2ede31ef1c544ccd5cebd44f0d61e739fb38f2110815c62c7bbf58afdbb115260536bd6dece3df5a01450c7ef487adc56e6f6e0ab93881de641bc7e7bb2fd6a14a612e72ff15095bb3ed1c35912abf4d641fb4548e18697847adb80c40a6a87a344ddc9a53a6412abd158847fcb0c05561aa963a28084357317b9ecf7d9e0b94b36033b838c777808ec609fe5c00de841167a8a19026dca8127baffbb825c9e34c98ffa8cc94e75be629c2b12c48f2147c6a6901d190e2a40b3b700e5771b258772fecdd4838a2b1b22036870c5f18424e1e26a4ac5f14dfce67ddc9a1b1b518b8425df0ee122b6452de0422a33470e36a1acf857ee0f5794c63fca957b5e78f71080a6d0302bc54ebd2e80d40e618234e52b50ca6deb93470914a3eb2704b993274e24f9a04fcd64fa73193fa1d3edd554f4e0df4e78f79b489f240ab21bbe0e0322805ad5550858311510591e449fef7eab7f97fd62fe1d2d043ecd7097352cd186f7466e85e4df671193679fa7eca3fcdc4c363d6e8e11135661f2608e7f1315a9ab724755edf1888966ea6a4af9548c60f2ee5b29379feb51a8b1ff214016c88469077cc3ad288c7b4d285ec7f479a86ac9f47b051915ef2b60b649ae53447c1ad0e1d9d89e21693d19943a269dcc7f3490c6efed5db65e3b9f49155c63e220b4934c1a32ca8e20d1a48376e332e2e87758fede835b3bb4119532879c9bbe375aa5db9428d8ac79d6137df82caefb6beb5f24cccc164d1f26ee7e0b96b60e2ea924afed99b73b65e3f5488ec5e3a9348784c456f2deb65f00147616b5b409c76a9a06602f24a5fc41fa238fe9fa7229f45cd915ad5e6766c5dd1004350214437570e98cae53a5a00671d7ba650d925d03fe64f7e1c64c8974e5a8c2946d2d0afb386ab4e358a723c36076fb0b3dcf94c0fad41852d6d491ce1c321e758780a0f0450c4fec7d0ff41cae9e972a7bf4a301214c570584e92bc25dd8c0320bb23f1739f710a6485b3b18da6d43ce537e5d57d2022a3d84ba080ed267d0c08117a988bb3e6352e612fcc4690a2e567c28daaa67b91606068da8c3d53a0438ec88dc0e988c3a3d1da3cce0e53a3a68c75302a1f9cd9fe9409054af4e0ce712b0b3290661b8069875d28f0d37d442c4cff838914c77bb08f4a42f7bb2c1a763c0030e48200d0e5cb35e2036f0f15a2c1be080363698140372a230eda97db3610c6df098dce0fb766c00904ee12204418e443d1176b630c10a2dda10d393b3e144b0880307af36f8472b4e7cfd20222bc3100c6e76cbffda00f8c96d78ff199aa9243851fd7adc0034e7f62a0257e7f05119bd82f688ab136bdab17563bdef65a43f2364682dc50dd20c74d0986111231805c61fe225e1ca0732f24af40ae0184e486ca411fa59516f1c67ff2637abcff819b11d09e534739568662ab9664c60e067a63a3301edddd9886b512fe64435b0fd5797b62848cd496826af8343872818095e900eff447c900267ee088a2cab6f466540c66957e3dd8d601263b4774955f009633a41cfd7915d0348356c35467299f213cda63634664d2d56f6622c76566338570fdc7982d42f089270843658ec0c18ab4119693c2cb10d3ecc3005a01be75299171349274ae5cbf01e725c3ae317d4780186cc1b562fc05ffb6d4b5260e358c8e69183a5d21f2fa6b0a348287d2778132566fc9cb5a85b7f5b92f1501cb87fac33844121a5f3db7c122a16b6b9beaa2190e3052658ab0600262190029a9c81f533e29121d237be974f18266cc19d402accbee9ffca5a0147760e17bf74885a30bc769c08dcaf77e5b59b831074a424425b15812c11f32bbed845c4d4aefc46a0fbdcaf5df126dc6b2b0554b8fb8777e0b99e766283e13c7f13c06a2d3f83372ec07c1cc27a743acca4034f77ad03207a76755e5a8ec1638147a50c90ed558d698c7e491e1f1f28a84d8f839b0076b391acc5184fbef8fde25be0559d7d4b5a366c6047cb8478a525f3fde17ad159855a35a087870fdcc207e3c6f75160bdd8375eba825ff902a005b14ce69dcc1c68c61d2f9d5173d7048935026e66352983c400d60a8aa87b11850e0cc3abd5b90da9a3a642a89aa7e549aca3c553760a1b61b480dbfd60857e4732650218a2f27bed1faae008bf77f400f4733dff4521079aa599d36427b73ab1c813501cd966a3a03b1de219372144dac072d5980e02539f93db49d7cad8cbd65f956791a943fbfda7a56c3f3b1450808f56fa852375e3b142cec4d7c79aba26e23ef78bffb36b4d547d6e3694f2158f691700428245e7b4be3cea2309d4fd31919a39132bfbb50ffced12b3be75ed38ef5a33fabb6d1cdf2c258cb72f61128838aab1c85e13b858ccccdd0511fabd86d5c12001c856ce8c6392787d2d17c3e1daed7269b371ec5bb7d79b1ee79bfd59857ecda7dd679cc27a335d619df3993ab452d22e60adda9da231e494dd0ffd6e3fba7a433e807a65b939f7028943f9aa06e276c1ad8963c70c09b96b1bf7ea90607cff602184dffbc49d4f677305ed715110b59cd52076f3822132f651a4a058be8dbde335e9b0fbfe3fd69d4af34fc1b398948b6a950360cc9fc19d1d2756b387b6715836136c848f78d37764fa6b9e35b01468305795a26930ddc974fc17d59955e0e41f77813b1c785a58132942b1a0c0d85eb7bce99266eeb02e15bc93969715e85e515604f41766c6a471a55b6b626cfaeb8b248f16f1d942d1b24fcbcd72d459960355d22f6d0672b86647bacde8d00ad20cc7827f9846947faaf1ba47edfceb50cb0ffe492762bf91d535ba9301f83cf16aa4d27f6f5ce7c0256923861ddee7367a8953c0742fa8c328b348520f68deb19274ae50ee4cef2c998b92aef2850ff16697d21d046eadadfaa15d1fc7db29eb6d9302d5ccafb7f8ba42d79b095afb9fa6d61ce87b372bd6b800dff5817df6eef9004b5a915a520ff186e016a38a08ef03b10a225a5300ecdb9547cfcdf261db570459fc4930f6fbc0c4cd9307ac3d4ace7452df9e34ff1101968b77a1490802e3207fb8811b4dcebe326716210e94081c91ceb6e6ce7f93d921d094a45f7ad6f0fb00a7752a908ab07d1f727979e2b2bc9a1c814ca6a27c820186a10992bf900aad7eb15d1b4952848f01dcb9d4036065bf8c3b481d2f9328556904920f87970f96bc2bacf693b1c916db69aed2a2f38301bf57044860dc22a6a6227b18f93cb065613bd3a03f1e6045f8c8b1cbf3a39744b514fd758f9d4a771ea8287d3a0c321024076d35a6e6b0ffbc773a49360ac6348847a6e861ae4a61373f78264d0ee0567bda23a82ea03e98d505db8919b1b0fbdfd9392c2b04d83a0585856530e19b39389cc88a749ae8676bd43dc03e66e604ea578f273d41c6e573d5b46e8f9a5354199301546588fab03d9ea0528a61697885459b8749a1aa26796f16aa949d881333d71b05af3660f95908c71e804ab57218b0625b274e8a7e7b881e7999c96b318846b6fbdac0a5ceff1a806807cd2edf02133875118d901f646c512c0f8ecc4d62b5a902b7da92082533116c221e0c71087fad5aef71b5a29491c6c62dca9522d7eabda8c01e2cf630d0d1cc8a88a524bdfec0f3d1f0312f5cd5cd065ce4d78b0745f7c320a131130ff93d6e9f0809dbcd812e168cb13bc3db7b7820d48e001555cdf6c9c42e345052c50cad43df4693fc5ee87d7c7556c97e3a7c92c78e65d8de9b8f29e270d0120b48dd7bacd6e3974d0adde1d4a50e83ef4a2d3678454a6f4d588d98f99935b4dea1a70a72c519d2019200cd1e9922651844b2523eddb812d5449192c550fd0fba385ab4f9134336785ff21d16fee2dfd04fecc22d33fcc6b9bc58841f8661eed4b82b9a146e68a40b4cccf10a527c0f4e4b26b400dcf5b76debdc90f2d9635a8fc7cd5de0f310be50b38175baf7b831fc504e7c4248ce479a727c42e58db67a6ae672735e291dc14d318897d89f170517723a0ce1a48f43ca50433ac20d4800df1b1aca410c197199c32d68f05da526b0a2a0a62f274663a19f0bebfe700e0761a182de328a873e7040c45c8290b483d1c453e2c87b5b0b6eb2922a5bae05ba233587cd83debd0127e230101f3e2410d9fc6899408ac825e1d06f2aa99214519fb5233ef6aa71fce8e6e6ad7bb9b315ec0a679142340513e93fd0eeb9bd324b32720e3577343f585be7d0a08d1d0788267d38760febc54ca0844675b8d83dd1d01038dacb98e0ff87002b0314e9625692ce5d6d85316a7f999b472b34a5f7b2fcff9340f5d670679ace7d54de2eece0c4dac699da9245fc680f1e328432047a076de1177a034fec4731e68641e8f2290a4f21295572331905c2d6b8c8e162997c47bdaee25cecaedd35e540c65b769a0ca9d94d876d929fb008000ef40e11eb25e6293f250198ed5c92a10af27e480295da3141e25b9cf13a0beaaf0c98d12762cac12a8e946b17825afcfaa2845d8697e9548da09ef37d0ccc5aaf2eb1303f9a5ac75360a4366d2afa169152db17ae7441bc3476e64a2dfeee1026b359857eda9e47dae9837e9833a179dc8bda7019b0366eccf5d34d7ecfc2eed05f1a23536e1a06cdf48da7a4d5bbd40b2ce0f96e0118985b95b913be6d556dc9b41216a64ea4ac51edddc3496d1adc850b341f1bcbc8966977fde8c39d9a06e8718baea2cb44546b46fde65b5e77ffca5d9564f754e869a2dc9439b1051512f12fcb8ad0446d5607a516b2cc9bdbb1a1f9c6d16ffea301109eb5b1db8955760b7f7ada62efea42a7efe42f7d859a6a615a412132b43709c957d3cd028d49b9d8eafed4d7e00f019f993e70d9b1261212b1441963d1e899935eb82dba41de459be8699d3a2cbdb4005fbed5930a11db0f1eead82608442650b3e87d9896ee259513e745c3f4eeac02d33cc2c7ca9f10d67d51de55cbae41aaeb822f3c9b54f6c18233edf35816874ad745e4ebb38ca910070b6195336f142b4c80cd619700fbb701e3824f71e229465b481f48732674a126abe292bf9ed4e966832e133f5ef8ecd2ab0b46f3a439cdd74b5d03aea1df848c9a52e746ca0ea17e3d7e983b62637fb4ead68db6fecfc2624181ace2fdb31b2a33ebaf85cb05dbc9c7fdafd707733a5d24274e25abdb7049ec11a38db357e293587145e19d0a9530f3191535fbafcd05f65863f82851fc262134f8f500cb542d0db41cbf7b83733ed03997a0275402adbec663c29a6811fff56040664c3e552388fe2df49be388140a713040f548731a97a1f70ced1a62d0317d3d660e86dea652ca4f9c31f639c3853314deb74477858c93385af5fbf783bcb989635f6f4044489c05f3d733dcecd01d5f4bb53e9eec6f61257e8fb494e0acf14a6741d4fae6e2c4daa0f30100141f0505f420f38820bc3e8880a5792bf7ec55d2f5af41b05cd5e5c7b52b1143300d784244469163b2a3ee5a60a357b41128aa72f6427ac9cea07d3b08381d78249ccfcd02947225d18dfafd7c84229e549567a4389df182eab7f50d1748b80aa42364cf53b63c3eddb9bd9a466e411fa78ba82a02d939dbd374d21a9fc0e6584814e309b183a09ad92cdd18ffe4bd8ab95d7a6d546ffd02a868bee584c90103c22620a376f05c2f40fbcccd9097bf891171300225829dcb82112efbd8427993cd1d20d5177a0cd095b7a9d31106494c7067a0e5501a001af7697b725c4b523898875f9c0ec69743250c6eba0d4482d152341e58f7343f98c7a4a9aea1331991c9a7035381cb477572da2f436f6db29a6d5c9362d8fa1f521793d8e040fe7eeb682208cb7c558310d562f3b92d07931dd4ef69749d9a53b15af9d90a4bbb43028fe40aea4c084d7623a7407ea5278925714e76faa6663352c9ae79f4ea0e2c192a410a23a8bbb336ca529fadc85f01bae6bcf919457cdcd04871921e2b0a549c926140d013eb74da4962a6fe241eb2a2507f2e9accdb39ff1069ca6253474b8a29207b8c0df1c280f2b8dab272c18ea43a40c09ffe47e3b6d03de9d87838cf0c5ad0058ea31573444ae5f2d3e084b020b4c5fab0ec296100a29c6b8df77691a68914e3079daa5f3869e3f6b704769df8615ea398aca4befe1b2a6152c1b11ba9c8c7b2bf3e16a9bed36de76b6ff7662ab45b099a22200fa8749b285fa33c66fd49b2d7705a26b46a72a7e6dd0562ce6701e021458c73c65763fe0c1093d0fd46b3299af492e4cf896d76f6d4f6bb3bea0d9e99c2943347cbfef51b1bdda7a54d9c15509148186a2b2a6303bb6f8c2254bebe50803f8f753152e12af749fbd38a84c78c11520089a48180134031a487bd89c1b0923630e113e260607d2d02626eeabed01b0aeb5f949a4d9be80f768ffc982e1bdaf7c2916a248c81e8a55f24330fe3699d1e688902e06dfa81943604dc63763e2a266b30a810284f658b42a2527d78dca5c03f987b2239878ed91f11edf2a25282d74420f357ed22f820cf15c50a73c6d237e7d286bac96b46f83bc743cba712d9b711b8f7fabbadb06cf0c6f482b78b0316c378660ee5638e6909562f57bdbd08f80f38f1c0203cc4431dd94126d083b7b9252a092baa805185e58cc8859281f2fd8ba8be177529fccb47440a8550631f658be97d7cac80069ddde897b18626bf7e53c82a1d1560b132cd1c4a38c6806d79f78b27e53616c4671f6c412df93caaed9b018f4bfae857e6c42f75f28ef27f4041d0a8bf0ce331a035b9bc3f220309326d51cf3b46e047ab9a328da2d2b40770f0eabd745ae27d70f98a4bda69912141e5013929886d5d08a797dc8f0e6511f61870c89d775d067e235e228ec5a7cd32428fd90d282eac783c586ca234f283c0d6fa07b063ee35dfb832ebc0d58305492b96f6076d593f111d2f2f90adc58fbfd2b8d9a661bfd5db41fe968b4389df6fa3cb41e07bffeb2f0d18c96c7e8f1f3a45ce8ef5440297aa003850283add55be53416e8405afedd7acc7672149bb965da0373b0b2452aa0340d4362b2293e0f14e44b9615301c3f17b48a6184713bf2f6aa7af7ce3a44828eb295130070657d8d9551d21fae16565bdd905a589d1b5dd4258d8005a6c36b44f67553138c4272488472c7df930f8021360ab3066f33ecfbeb94a9415be1413e08b98905dedb439558489f1e964a5f68d42d7f7ffeca40f58a686e44850d89d2334811f9bc8d204daf9d4dcf5914c2ff8a56432d6e63b30cb8748e42b07cb81cf4dd5f9b56858a1539ec6db8581938fe1d96a1a2a2d7f0d2d4a95c7604a209b13444aead7b532ddd3560b98321d4d610b859ab23b0a12ee31387e0d8a83ae50a1a3e3a15f501c0bef87cd6448610d7ea53d92c5ed7e6330220d608e343a6b69249fc4f2c3bd9d4ccbf6b69c6282e4f2a434c86a3ab7c78babc7f2edd8a88e18f9656996afa36acdad3ca37c3f2bb8d356e21e3998cd5eeb16895101d9da302b31bcc9a6d4bdc993a436a9b60b19bad421e225b21ed75bc65289bcb8adcc287a6ffdf376c4cdccd5d7a35418384b58eaeb735ebd75b3745d10b01995de4aa29b604437914d7747ded4d802ec56c4191c8748b76d7256c5567ab438d51cb613149560e8f83ef22ac6b4c54f745dbff15679fb121bf4f4cf555b2200107b4b5c10ced758d1c5d59d5daa188db3589450bbbd2958f3324b231ca8ab30a6cbc19c22884234d93384d9972288268580d3b4a127789d987c8d577cfed0d8aaf8cd0a7756b586c225b87002e6a8505c71f0c4ad71e7924592229d7ba284af41cac2d9bd7d50e229ff756f5e9810aa7180c66bf81998d8583591800a204741e136d7a4239404765a2df356cbceb711a05413543e175c0c340e9d57b0d152037982964b40d71660c15ebd9704acd42d46f4d55f1b68e506739feec925afaad4f58034663a93fa545b52466e60ebd02b53d7c04934300556f33f215a952633e751967c2266d104f3554fb6afe5d3bad8c33aad719a5b80f3dafbaf8d3a63db85d7ced3b67c268b31a4b5fa0f1b75afbfbcc6678ef5eced83f048b6bde403b1d22b6a8414bedf16393890f01a7213bd73d1f9baa37b72283f2d4f6208860b8c8a9a32987bbf50463bdb014cc9ab8a9a36b8fd52a0e7e4b0a0696f00bf58478163ec0d96eb1686e40766d5db86b722f3d6e286b19afc0180c22039490a940380792788be81f852dfdfb5a4a3b667f176d122c2b06f47a0ef9cd22c369712a293e86f63e185c4d02726045a7755b8e926d533b2203ae28ee5628d92a1c0f1d7b2f9a933e866a5dc1cbb6989770198e2f2e0987ee5f96233ed1ee28e2d08cfb5bdda78fda939feeb99b9fa3242f80d565136e04ebe6918671613dd35e6a6e030844d36f51ccb53db36cd4487e59532b3728e17975e647229cce37046d216da6aeb080c6bc39bf8e22fe5febcbd6c36f1c752f81f89bcf19de475e446403c4579cb98557f031b1d657882718ddf86c7f3f5391643a890fd7b3a4c9728dceb20a74532c967697ebd0af9004bbe43d1edaacb94283ec3d07590a37e45e8377abc8bf43b018b104299d3870f231c9d7f7397f80f24540413718ad9ddd401c910a18ef2e3044426dd7256d6b496b27c138a8f3acafaca90daace3ae2c5a77a10ee285f26118d4719e7d6b3a84fcb0a9b2c8fe014ca5fec277f781dd530d4a87a490ff255b8dbe0758b15c07d4abd6ee257e8a9f44464ddf5c67fde774c85d19ae81b2d74fe019f89a1950911479f6bb0d819e08cf95d8243d83c1d5014c011cf85ce0cac02d10ab392c8d88c929122ca34ff30353e6246c113d4a9284b9604832c4a19030ff3cbe5fb83d8e1cdd2856c9d4bfff8621aa0827f12c91cc3570baf9fec33b55ef8804fb92a6110fad9b7829a6e3487100b7713b2eca670c5b4d42ac791f5a97c432ca5ffb5b54b1a89261fe22cf7a20cd9dd9fd20a101f50865cdc64345f83975e2757c687f5c01088d39457104c1257449175ee982e9c67e7131759c8b5e118b47005330834c4f38fb2446546fa5caff521d836dce6cf4ddbf4ce4266477785b031938df26f5384752308f4e338322c10202378268ac60f7723639dd0b43a70f117f49f494104d6ff3e3af09d46522597db83a6dde57778f545da7460615bc25a1a48adbbf8e6a1b05680c891694601cc90a48244c26893efacc25e56989d9bccba005579e23a77c58d928f73f2a150548341e2b8dce1fb52cb1dab224a2bfaa3de4dbc33d9f4dcc0d46e89a8c99c1d42adde3ed7a93f54d5702f94e714cad549bbc5b4166f80ca6910f37f9dea11f3073dc99e1506789984561eaf2b2ca60913d9d3d929f8b69421896d708afd799054957a5805b5900752a4dfd9036603b15dbcfe27175233ca823355ffa14296c39bb00519ee2832dca3f2dc7ea3bb0f0e63cb138dbadd253985eb8dda3eb850b5990534cc9a3274c4522873efa4b2923abb6cad207753d319ec97e4dc1a955019b6a4415d9ce21b3f50a0bb34190c50810c34cf63e0ccfeac116123757a1f23416cadc4bd633db794217520d455672937bc1545c770085391221d8898ad6ee91d1d780a575882095a6c70d861151025d879464eebe249c8d756b42c440cdda0817de79d7259949678b76fc5b585f0cb878b66c947e3c16e8ea9ffceb79b4143f53993ff41679785d82e9e4002b9b092fa60fb2d9812f849fc23ee8897d071afb0e83ec85faa1524a4be3b2105e96c786682495554613ac3cbc2a61f3f8a03157b431906fa8e5ceac893e5c85e6c585af89291e5adbb208086394831b94aba841ccc8e6e6d0e585fced1b945f2dd865f8fab685d764f3eca5aa4154f9fa2412629c129931eb1563255972e7c6a88dc5982d69b4fea2e4a370d8488e4d50bec01b5aeecdb66b2534a647961772cdfa1ac425d760eaac0b8975868dc5e16c2f36c83e1972cf34bc589dee24eff3a0cdf5e1c0682d703b2178dc2ca5a3d9cb6c3563e9cc25dfb5ff1acf2c34d4924181b9737de504349f4fdd0d97b9ef0a002380ab08b2a1bc7820c29d8a15bdf600de36e1b837ffeb4e7c974a1dfe7337b471420d83cc0d0c3d499cb1e3175efe058628dfed1ee24a92ff3c447afb2ced97f500e2a327b07ac06851d9ad28fda1639085a608f9bd93f28c916f3cdbe15010188964026fbe82268f7405f5f05eba4361ae0ed74e3c8ecc6508f92c9f8cb921bcc44e58882203b7d0be87abf5670c77e88d6e1a1406699651ed3d6893ec3ae517d1fecd3dda02e51a0d3930a970925a9c1b93e599f39e2bd63e5a771c1f49bdce08f3f66f31a3d3eade57016741d8334c0d78e70024e02b8e76c4cd0527cd34b7910fb7711edd5209820dece19c1cb575514e586a6da426b54b2290cad42c4f4f38395d3b3a07527ba48ed844bd285161e803494650b3dbec883669f336b7d68b75dd211b50d9865395fe8162d74a9857b305ee7b6093947f384f5472ad1555d0f655405505de695eb31aec8bb1999405d953bfd8865a6258748f30a5c19cfb2bce885c8f522a12ff2ce53f3bef95f9367e91552bad36eec83ac0288a9f25806e5df555075974a761e3c2bb261f31d3bf4e1d634d8749b59fa2ea64f314fe79ffa69c2ffeb894798cb9dc582b8207854bd3b0cb77583efc54e4069fa02aabc70b02cc49be5cd097bdb9256e0c33ff2984352b2d7547d14b63b84b1211ebcfdced461c73c2e0896aa54ce491232b098f4b8036121d8caefe4e4accdaf5b2cb6eb3f3cea05e634b53a14de7291304f608e4bfd8a5029b65ee54c80d1f961a5c3e549b3c30eb9d8a088856218cee88b0424042abc97263c57c7d734aa151e26b1221ccc67c32f9fbbc41c5dc5417c3758d58ae261465449bd92d71079cc8a7d52922ce01018cef6f04c7412be201258a49b487e1aa2bdb5fde712d8c190f63005da0d72ea50666cb3ccd2648c68f2ad1386ee0fd098ed2ea9b6365abd62701da271ab61be9308aaac99444647e8f66ed63cfb48f702c3893b52a99b6e11f616fe8cb5009158bb460b11d1c971b327b5bbed783e33d3caa2fd8410efd58a0209c35ac2f658a6dd170c9b623e49bacb3885a4ec0d1a05dd01238676275068ee2898946f44fe7bb35d81a5c54e68c77fb72f77b43f3ef732cc941113f059f006709faf623cf2b5db0bfee25e30566ddec5e434bc4b684a948051bdfd9a0a7b5f0dc182c4347ad9a0c28f5b8250b1edb9b3e1e659afba32a6e3f2e00359bb1247f4b8cced24b4ee421589b4817cef63bb0fec0d9a2332cd4f3997fe83493b1d716d0857d35d8aee83d5be33d051756173a4717020a775677e83b6f21230f43da92bab6aab75e32eea05773572a576042f20e2648aa526a5446dd4d7f0b0bf28aece82178614688232ae3b2c615dffcc467089276701ab9d5148bd51d02034fe5ef5fc30a6dddaa8db3ef0bd3b0d920ed8db8e90c0628f5ddbebfab0da504d6869cdf1b9fbbc47c2063b9397b92662c992f28a0b134417c95af724db4e70639b69fd8f5a0bb377ccbae2ce678fef125613feea0bd4c7337120283f34758ff30bf751a9e84ba79d02e2c947d8314b099aa565703ca5445971d1272a4f85dc20979afc39ecf8c7c6a59365f0ae5c6d1ac12c63c478ec279e0dbb46bf06f4f30ec18e8064db7e01478ac519a77d0522b48da453f04b7c44317d28068721b5a72cefa6fd8ed5f472b9cc791fd5e337ef3dc198676563e38e33cb895be54061f547b570e9f6e0b48e35d27ba0817d16765d9305d6e6529d939adcf6a5875c19626654a4ecb461594c3295e958a98a95f3cd85aad6bd22a9b7cb46c16dac582b06e136592e543e3f411cff80266ee05c3526aa49d6eac6db21a6d1b8dfce9c3e7fc8ffcecfd8563ff1272589291be6258e11bbba67367db8d02fc936f743ee4f768b300be18ec6ef6be080a7cdfa71eb2ae996519c32a7532bfde4fc2015b83b53def03c83ec70e103706268d2f86ac3c9d6853b82c8fbdf0f2cb2da228ae0ee0fc7c066ecd633d0e6f7b6338fb90889b7e0f6af1c39f5386d1cd48627481bca0d1ed248042b52a614d5c2b5fa510b1cb69ce5e3bfc80e35c2ad6b98cb0d756e26d26979cf59709ecb5e54a000e483842cab48e7b3da04d7fe086b6e316ee345c40af8d3e8d53ed4cf403c6f65f3e13a5bae08e1e69b6ae89728b0275b08328f7d672bac105752af9d1b62024be7a978c99548f02d02f4981c6add72701f641487776fcdfda2e71f12d17a3475bb2b5f9151b089b39c0dd09448a82d16b36cd58208ddd224d01ecd7a2e0b7713a9d81b6bd00e0584c57bd21529920abbd653eeee9aec6e679ff46974431e63555dd24f373028f73fd38194adc913c438f811809d8a2db3ce8f197e0691e9c8359dea66de51db0f2c5bd72fd387db2d171e711fad25dc487e59761542a843f74c8313028443f4ec705880707ed2a9cf1aaf30836539f593b591c77505024a58731993fdb6d930eabc994f649d9376e5d48ff5de03462caf17b9f473d8d3c45841cf66d706f0f317d6e41762eba38a46081cd92bb1a24d1d5b78052be0aecdd99c8e7af15f88d62ef1a6cb2bb1f1cfb7f9b9a2600b96cf185d71cd13a22ac26e2901f91c6631f2b75773b118233afa623d3bdbafb1a8894f51b2e7a3fe037cf5544b552742d8ea51186fcce122f1af1a29195e4f59b15309c2b2ab481ba950050a42fbdc750342f6f5c835251d11c872493232fee9d5689e6f2aa0783fb4124904c2b96d6679ea6d6aac3cc3b7d2ffd33182525ce4c8838551a9fcc971101c8b6244ee778a868167b8eb8cd833fb7a3d9a96dd61644279e63014a5be9a7493eba55ada8e2f1a9258df9f943de654fb6927545d138d79113bc74b8dc8e4a0613f6454bb77daed6fcb86ef6aca80d11a4e491c9712a992fcb90e138a2993ca24dc860883388c5acf2c022b7c624e3c03905ac1725138fbe5f74a71ef7969bcbb2a5ec41deedae34c036224de6f1bcc270809227491d65182913800bb621865ee92b0e6e5c50abbe5c418649008411da6fb38f1a1799b5f5e7d355e55fd9e41284ef8cf66fcce70752164afcc4a96bfead1a3c8945f0009028d2d9a33abeb93a3bb0ebcb1112aff24611753d2d44a7b6a6a18d7f26e2ba7c3848bb87daaabd40381b91161832e8ee964b3d46a28c606b619789c83f3882820351c674cb5c37d967bd9f807c9a9c835e3fd917552a09eb32858c7fd671e9dd05d7a738263b472b8399a026ee78d7ec9509133e2fb3cd47497fe8e67c8aeffaf6033a9d60e85912b0a8b5c677a509b789bc77225f117f5b78a285cad7c210b8181b39eb499f269ba42895d5441106b39b83899f3ac5ebc964d80ea21bfb75132996a4f76a5e06e037b12508f000b6ff2e62f0c43a04e2ff05f8a22a798202787b5c5080b7d3f608e6ad8b50762cbc778abad183c67fb2fbf7c0d8e8e137915ee4a8df583bc9232b4a35022fc96e819d8e07da4eef58bedfdd94e8d9ccf93b91267a6cf3fe2e098a5ea3b93301febbe8c49b331fcc48eda880c0d3ab802775333d564ab612ffefd0f4ef891f7e748efceeb4fbdf7d8be9fb5e17bdc0f46a7f2f60184c4ae035b709fa1411d2f848de4f9797a9204f04d436d9d36bfc5f574aeead0563bb7e4a46e2a16cd6aefdb71c00c8de9918acaa424406bad3e6db5fca4fcd97706a08fe779ba115d94b1f29a92899d724e9fd51fa2cac014476a0b1ed2091ef58e65ddc4dc91b30003f595c4eb3f029e791f33fb3dba2b4746f21b02eae285f1d8e8a4da79313603e00ed9529f31be53d54699f4af0ce45fb68e39d2b104d156430ed139d9f669ecc05d9ac6955b1700e477b8ece8198e5740b30cc02778121b91ac2179114db3b1b7da444cb5adee58dfd2e24a3f5405c599cf77a0a232b4a11eef1444afb8944b774ce635113dc0648a7528f42ca8d0dbae5670f5e680660e04d87480c37d016772840d55b71070a96e920b6f44f5f6aee496c370875454826e0493ae85a162d4803bf885edccad429b30c99e4fcd545e0e11ab219a88c2bb54500bdece4f94f14235b085a2c95384b9e8e7c62f4700f4899fa3ba79ded1fd9615b2adcdbabca84a15d42fb6c630f33589b491648640d975871d06d5f1099693bb2919720a482a3d568c26f2121fa91541911cd8ac99138cf079a23ddc705cf750b5246be4f698e04b3e3ee35e671b7297ff9d5ce2602212893785681675b11885a1bff03c6e5a50cbb4e10982fb97c03ae8a68859d8f7b25e3554a08167c3c6372694f2cabfb7c2ec1e2622e1ead9d3aa1957ca00b09af40c5e227e5985c0ac28eb16517cc17525e2c43f1b46806b24d6468c0a51e330d8a4153f3e9b8e65e67930912d282d4f108cffc3bca93b5a97507f60229a539814cf6ad06ef103012339f70cbeedcbf53a2e700e90eb7a20d49c2e7772a77eeab0c77facf26343f7ab723313a7b96c1d0769c4f5b162cd703e2976fe2fea0d212d2cf5361d7c78634b8d16a15aabbd7e16ce2418e7e0d3685154b51d88539eef0296752ee2ad2e8771984ed9cb8ad834c484076085b154b9c7a6a11feca0d3fd882732bf165a74ce2c9977328ba9f557e8d6d6bad3c05f25411882cc2d18cb07a32ad0ab7d3f76ebe523a50fe1a43a9fa4fa70794baffabf7c80815f43bb258e1280a752694536387cbd009fa72237341e282d5541121ea431f22979649992f6f7e93db525b3aa2ba6dea41663a4e511a2ab9bcd4ddead09eb2ab92117804a3e112978a43cc2c3c039ccb5e3a5f18d496834fdd56c7287d2cd815a34025761838328ba876d562b48c39d98b1782754babe21656d2ebe5b49ecf7d240cb7028f4a2610fa4da5d89cdace7dd0502509cbbf572b2d39f5fbaa9daa5bffbd7a2a03ff2b2a638f521f171c4a5e7a769d22a953eb48eeb946028988da279f1b71f6872f302edf81df5bc7135f41a2289e0ea35ca422d2eebe17f20065b001d06f43b400c1452843889c76a1c39e149fc1a12bf1137af8f2b087c898238d0e276cd5fc33546a8c61b75784b5d7d6bda05452fa6718a3b3300a5d8f71ddd784f20ffa38fbf0444725c1a0dabf29c633792737ab70bbe9267405005394c36079587b175a762056643fbf80f8d68a2934462616184ca38cbb8bbc85d03c0ab9380f6484e85f24d9a235f957d7a1e9cb4d5588cb3e40ca0c1f1dbe80c2be0a3b7cd3be271e8a88cc5cd616ab149ad5406ff2428d4b60afca97d4a8d3a4f9ed44a4e32a98b3ae2d065013529896fc7d33bfe2f9093c218122535c87e816911c817f5f4806acae546f7dba7aa00467712880f81c9ce5861443e2137db6465010db7a185f80163f699591a9e1e81a0aaa53b004ddc7ba87322645432a7ec9392ab257f10fa56483200ebcbfad1552601560bd17f91655b09f3b9bee573b072b0a88dd45b893bfccd23f617f76756ed216dac629a03912315995ddd36c4add8b8cb54bf9c432a22167d30a04efbf7d2670476566f9d06618bc069e42b640837c4ff3b3d35f985a5df618120b07aae2e64140a2de7f5e9bfc4302c33a4404668f061f516d461f4e8e112817cb2d9807beef77e02e389a9f8eed1f1b988d41126af4304b4eac769a1f578191ca655c9b5f35b81e05310cd777578d1b7c498ce52f52c3a4a1c3ba3cb91f8d57fb560d3f6021bbdc13006cff87ce4b00d0a87f8f847009db128bc0683f94249d5d475731ae5c584d99ed7eb9195688c720a3f7e8fd3383c3dea99b1cd5713d7f0ee309745a66eb115b8499154ddaf162c95b121d6054b5be19243f815a5b78031aedff010896779d7ad61aa7fd60776224078b6686ec949cebde7d1564246948ec1cb3d7cdeb5293dff6bb17c52fa3774646e097bdf623316e0b3b1a7e4f6bbea8fbe4497db0b12bd11d9658c7722122b152265b4b92f7128ca45160571a02aeb79ba3699ffb868dd0f7822cc6797d8b22854f3cf3358701ad119c372629b1c0ee024766747ba8b5b157816e56cc5e0028a4d2ca18c612ad4f0ddf8c21944df996bbef0171726618ecf2b78a12d5507c0f78835b30bb79ee0c4667e78c19602a11a2f27ed849e2b4344a98dba4525529c321d165f58c3e007a81fb744180707c624c2c0f6e0a9a2dced796c1521a13eb774eb44e0d7ae5b4832fe97cb8b4509d7d7678d05bc8853a8f37fa6516238dba3ea7823dd8a0730575e77ca3ca9daf0e36f30641b105adcf6fc6cdfca69462901d67867de7f257883cf24d8647391e6695c6c330a302a27e698a5b208090bc71bebccd0fd8066c864dada367100194dbde59c1c6aea27ab7e9f78234eb8b9e95ca4ef0f226441ff42a52e7d49c4c959af742baecb017e2c166d664a9ccd3d9e63ac9e6672eb5d6364dd6f43f5f5c070bc0ffe014954dff2f540f4ed624fc635b9995e618a19bb223167f84845f69ee1ea652d5bf4c51f43d2f224b239d962042af010b543d6a5af28ff2d5e1df4890056bc09d20c4fb4919d1907082f3180f1260e7d878c6591527240e335e4a9b3ddad2d62ffbee3f653f300379f7e4f84cfd50cf252fe9895a9769fa855546274008dda7063613b01c185701154912772665fb4318c80abd8ed9597b5d157aada90f282ddc9264abfe5b3577e48aeaf1a2919fdce6203743a1fca7a0a2852f3a18b6d5501745ea71c94e7be3754f0a18f440b1baebe830a4dcca5c37f196fe6f2a4c0ed37bf4e54258c41f1c7841e6c13c1e6ff06c37910e34bdd6e5e099c5050490d378d9a383aae8511b635e2df91408f07a95cddb0e3b8f1753dfc82575b43b845a4a1f0c7b5a70538e62f005b586b0e09e934b3bbdbc2e48f21d6eaa00475b459cbe92d6c667aab4ad04eca9984e93c7003d1774e9ca137d9105282fc229f02eb5e7d8fe6b6c3cc2b7eb536dd26a1e1c3d1ef1d6b1a3c1ea0409135bf5cb73b3847d8c5a69ed2ac3528e251e92337cd2cb8e69b26538a6b7853978ad54d5ab538a4c9c331e0e22aeda16f21825e5c73f59e85c623927aad11ba4ad90256f8c383365968728585f3e0ee57e5da6d1de0d7df8f476da54b4c744c4384dd0627fe37f061057f4548e3473a106c3874d8ae70baf708ddbaf9de0bdeea4947d9b29d5924195ca81854898ff5105393d1a3ef9fd311a4a91be9379c5b821e6767b15e3757ef724ccabd48a127d10616c3e7cc71bce49a303b1514d3e8c076a2f7ab605ede1042570be0bbb138e034e89e4b1ccef8841fa8f9de1889ef09a29f8aaf291996889d9a14f38d9f950e665321151cf44fdcd89815b494595d019173a68d407258aa9cd218f3b7524d8d184bbb3989a66ae8eaa765a8f13268d4f6528313a08fb25b7d4168eba679b06f9e061f244ee9c782eb7e5ba8817b8b30d9adda5b1b505b84ecf7d7ee1e98e26154a1584ab04831cd2ad5939f6dcc20f059c4bd87598fa2bf8b1b61479a09f047f6471b616876d5d27fb130c55b26ca6cf3f532da4ebb0321ec1867930a6bcc8cbd00f103407b1b5114e101237b4d500411f20322e01aa77119b43a3208ce75c544c43867869dfc48e519693ef8da1a298aaa0622c415373d54f5afdfb71d1df3641f9175097b9ad659cda0f855989a57dc2bc5bb5edddd5becc49b50d6b27c66c83f9f6dcbee9fe6379622f62dd1da0a1d5a0385d25f61fd32e6099bc12eb5657d1eeba329ce2350299129606719e08b0b51c7ea9b1857cd77d3717a5aba10afc078b746d1a4eab395774c4dfff2e012124814c451fcdc55a60eb483a1d5ab7a734d16a53e27405c7838a36eb945cb453d7716a988224ba74aa123d1b8a8ca7d8274b49ba07ee6ecd2dc6374b57b3ad55fe3d484c3fad243ff225566bb2acc168142d8d46d5fcda4ee340f04e432ec3aa6352c5d44f183141120885d73ed449f0fc53f2fee34c37f2b2f4dc521c24700b084acf524921b8c82385eace982b93a12f2478eeb9b87d75a879e383ad3bb819fa7b60a87169aec124e66cdc600926a8500cd114eb9637af5d35383225c0445c61488bd9902a937468cb72e66d5d851a18febc41817d53e1736c253f38ad990dff5c284bca9230d108f96739e4390433dbd0786e48bafaaf898e4152a542c16474f01f688a99d97964f5133e751462194a3888b72471003c58748b1f758729a4821a23e96c57349c631e1b8e44061bf23838e113cd7abb9ca781bc3582bde8072622c565b30de5d96538cd277b7e10a634352699db50a01638510678a0b8568dfafefe1efb57fbc5677728784203c1655330ac9944c5d7375f8cfcc8a87bd8f77664a34353cac6b6149debc09ce5cdeb6776402a85f06ee02d00517aac0bf709c21bd330bf2c7f7171af945ac6b8194452ab3522b1fb57c004b4fc09aee769c1016c871fb0495a19cc275ec00ac8b6915a3870bb621e61da38ad163cc88d803823d2e7bdd621789730ab93f668f6aeec4dda506c5e694178da4db0218b6a9edf120a0a4c882c0d83f297eb162c90b904241c162e5c68be1bf598d8ad9cf44cee362c7c127849c62a9c0bf084435e36b5c32d88d0394ba8f0186adb8206106e0e6f9cc56df6e93d8cd2074f78eee44e7a5dc78ba98ea1e66cfeabef87c113aa85f2d9f27b786089038ecd988451c9e0e8cdc2d4bab9afa4ba4a40fa13e04509b4eca674122ea4b0acd577c83611b4a98b3a2113535250cfb1d7c17091a99d2446d161873a224cec1a06bb7c8727357f5a3818c8987f4d650a31428e4106e7d4730686a310fbf001087d015697bf27f7e1e30f1f9ca97c2b901e9da8c8798302eb8f7e6f978c7b7c3154649e8e82259f0932546bc66b576d03f9974be430ed2a89140a8a0e77bda6c89cc9137a9b225b87fe8cfd79e157f24e6049a61a76e898824283b84e52ce546176a0294f93a08d39f37a02228457a948cc1161ccfa08f2687849ac7de2c0fb9eec44bbbb7f924ec8d6284693ce6430ea6aa65af54d0161818a033fae28ea7ae3f1b43507950cf7a125ac6618d6255d6b51bc0622f5b37934f908bfcc582e9eae628bc2d75a4f93e95719364a25a8d02c6c7b478ca328ce516b1cdd2ede7ad70cf9dd20a3b5c8263dbaf8e96d103a9c7d9bba7a5c027fd6c5d07aab538de0406c7edcf12dd86f5071c835961ff9c9208ccc2d8e2273ef3b0332ac6b9c875e6f10601e1057d802a1eabf7797dd0237d1dd8d800b9c3ef22faf6b55818e1ac022fa2fa046f0c9a5e17f7275b7589880bdf512407672c7cc6e1ff46bbc1a1772b46cc8aa7d09ee749fd60019971277a3815c6d6f2040608998edf7ee81e52cd4817f7139bf2e04d7a17df4c792eb96cac2ddf411954146eafcca0f8d59747918ee90951166f7a24f2d328693e5147e86986e2fdbacb965e7ce1d73e33f7da92b61fd84733dc311c66bfbd32a461fdc67fc4b6d99b7aacccf4e1d263f22b0d520bbde176e2c0610aa5815d7b22b90331846ee58f21a89df999bf46a5e4b41fbd556a6a3ed99ec289b999f1045b663a6d1b8f64010f8e4fecda18e916b5ff959dbaa8e19c81d83f252f6c8649c59cde394427317bea1f9a804411b6b9f24d6513cf1b2bbfc40610e963345dbb92bb0b576ae7e8590c89bf267d6d6066081d23c84ce58ac3799ab310be643313968e5da7f0e84f553b4aa07efbf8480e30a57f41f628e1ac892a58ff44ee626b3b97de8a3584126c12ce8768dd07de5840d3570d2cf32b3213ed5285333702fa767e25893068fee89705f3163a9ac5ddb6273a8da90332d64836bd337232b48c1074382de924f2435b5363d5830145afb5f96c630a3d29e70df8ae8adb2027f0cc7283320ec1db1aaacd0eeff9af6619a688ad2adbcc81bc5ea945b7c8921e616e7ada6d723a72e93f597ca6207d179780b8b65240e60453c5fb4de402f3161540df43b1b96a5d5806fb8a56c7bbbca969c57eb221d7d6c75f5db66a0f47dd16dae43ca24f4988b84ac7b1bcca23ff3be929eeaf802e9a46a83942d50f337a3e6c809bf7655e4a0965c66137da5e98fc1278e75d446e016e51a8a839fbd9068ad4de5a7ea3d5841ad039296f2e8125670dfde16e105752d1d1f99efac91911f4c95ce7a2550a06f2e04a863426cd3189332d659047d19824704b89bd743f811461e2b741e63f177b7d02fa8bd3278ac072cfd9893b69e490897f0a68e45b0ec5ce0eba737fc9e5d14ea13233dfb2923bc34802b1d2e92a84f89d3490bb95f991b9c6af9b7be5279afcc23bffe371950a294437f627ebf658b9b982ec76b8869cc9c08792bb9cb2832e70b088ba9b5515993f544ae601ea404b575cf0e7aa9cf85a06d19c2775d36d6719eae696abf730b937ebacf871c96e6f5390d4c17af5ed7e6e123722461e8025d70815e3b79d266749624a24460326529b550989e1d24ee8debf5dfb1dea2150a7ff61a5aec9a80f3edc0b3fd4f4ae79841ea4b399fab9f078c2ae4d8cb78978595315f0140db16bcf682643b7c1559bc021cda00ce288a043c1fcd0e712a1c2a936cec6334701b25c72ebb2139320ad6d384601a6014ba6b0d76ff4c9b1ee4fd55086730370ed08928b05873d12d40d74def227182f3bc3102e1c6c04454979abe29752a7a46010774d5f71769ae6d79471bc884ece47115e201740e3aa0bb0dfa877feafaab541114a185d0993d0a062b94b27a86ce29e249059fb54d15b4b17b148ae0df0b0aa4d636a63db87144d1ab44a5ff373c9cdee522fc8cf521d38e24b282cf15a3cd2d6e4a61ba3891d343ef2a1f8a59d4d934780ef41fa51b0329496bc3fef1baae4f44638a67ad2686b92ff3f8da2f57c84aae3f26a941e55ce539b56492ba921eb2c135305d14794b7e47b318dbba76ec98732526f223e60b41d10f34b5b2a0ac3b8cb9b96f026e6b54406490a84a9ddeb8f74ffbbab8cc8b3671f621f3daafccd5be3313fbce5c6e5f5ed3b865d78eab3934c6510e74f5cee57f76359ffeb305b2c2d7830ab4c30842af5892d1fbafd7297a5e4a8ccbf2b1d057b9bf9a895b960ff4d5cb4aaf48ae0cf2e9ca4e1303eb65236fd74658cab844ed74a8b875e0a6d3bd78f99391179c41ed7620f6ef239885d85496556d78c6435175c8361a963979da18ed9a7636f2ef8a3ff212780853b83d0d6899e8483bd0d6a2deb26e28b7d4cb5a2a76cfdd6fb4b8f5d3fbb69a37d2eba73449ceb7c8896891d7959820c77b9610d7013f0d27c6b805df0b8e1aceccc49b9275ab7745b444d213e966dec9a10a3ca2b9907f12a129e22546f8df740284d4fcc9aff0eb361affea82e0fc1449d5253393758823e6f2124eb28711d7d3ccd362bf733c723ba50c65b4224d1aae70c1f0df25fb95d83489f6145158f1e71873f15100ac65378975a8c69e1a3e0f6a3de71b0eb434f52a8aca205ea65dc125d7e410873c573be91c702ea1113a50a2677f87f3975cc6f8877af1728671f0266ded48032705fe4e1e718878c98caf9366fa4c1f29c5eeb46b8b5758f213450e22b02d3e512f4427573544cd8d0b2068191ebd1cffbb1bf9a4c7100c35d65d226742f4d372b292c430ce13a9a61b77922e7970cfe784dbe1249ee380f759dc22c23583a0da2b17efb5c66362eb5bcf0414b53fb569b2426cbd43bf5188f2271b11d7f6e4703c727ccda3d3fd03d2e017b6aabf6fb0610c4ef7ad0ca4bea4230481b20a2e300f055bfffdc4dcbba58008a1f6d1330ecd7e24751b6ca51a019a5c06792c8b1051ec46c5989d5d0a1c9061125cb950b340ee2202a84e2cb68233acdd40a025a7963849a167b7b3d297930a04c82b8cd8d71622924c97e2ec148a32e9e9d9bd0d87eb7217c898cc6f74423cd39484e5ae788a30dcb46310ae556a17e34d1d367947d80c8b5c83488335c8e0aa4fd4f3648ff1986f7335f86a2949b4301ea1c95363121487527b0307f40f75c47219693cce2ec072747aea0a833e109a3c44286440549e55c43ffee2501b3c653fef8b3c5dab0882b841157de1f0e998fc33575ce4417a5266cc9573f7315190b382b4115cebba28228dcbbae03177c568622b1283e86af6412032624202b464dddcd84469d2e3e51233203126d0879716c2c85e550541d1e130beaa85ee767f75c5bcf610bb10b49387457fcfed6a900d5f4ab042c12a4a21212979222dd6b0136d3e98b26190a63ddc10014c134feb20f69a19ad3366eb9a0ab19f66d980de1f5b3045478dcdaf4d3ad488e40cb3b1b5cd95d7d87990e9c70a88bf393ee1033dd3c33be29fcada67c612d13b46e35ca65d8a3950a1b1e3b491a685d75a97002c791751d6cd7efa265eed1e2a001e4d010703ed4f3cca4d6ae97422e735abc3aad973dda5998f409f9c51d78e25bb004659450378d259482602949cd9a54aca2171a6e444cf9e9ce3983ef7164fdae4d4038af50d8b2f1c8704177e777612d812a139560ff0bfaf5ac3c129f1506222a0e4364b09005e7e2deae504f7b7ba7248f9a3e6442843c61b3440357a1bf1a44bcc1e6833ee3037b0a7723a429a7ae2ca9e49aa532203e48cc673f15225bb88a1d332580d1a253cdc43656a859c551a0cbab4724595baf0c047fe037079b90ce9289464b034ac8a601c2b46222e48645742e07e0b1b778c3c41bd406480cf13de8e0635a3056da4f491da45a2828d5c1fdc2ca85bb456d3c26c0c83986144e86bf245bf7761ae16aea4b38d66b26099e3867952f92f0fa03228a574df831d48ea1e40ad71b80d917d2fd3a41e2d6881bf71be58fd0b76b076110d62cd438de01d49127c29aede87dd433c25cf9df1657d6b543158ca609ec0e8aed2610e80aa45ac18592a4c98a3adba16f0f9e126987f4c72bc1028d19c19957e575a65d0166a791435f34d3aacbe49c5d9a54d88c1bf25326372f2829f8c0eee0fdce6fb75b2b8a8c4dbb65df05a7cb9defb3946fbca283f2a26e9094b9ed9bcd84da9535731ae0f287354a67c442c5a207166d452a48c4184ab5ba864999f80890076b4cf858aa2bb46f122d4c1a9010c64d52c7d9f7d3fee2d0da4cb3d1ab00fe38b82c0c0c62290e4d7a18e01ede67eeecc1a164ff9d91f83a06911c9763b5c1357e1c0db2adeb6164f58a4808692933f2f3a27090cbadeeec489c2ac2a3c6001d55c6d0c6871fdd4161e2c3d1645cc62fc20d2826d80ad604a2bc81cbe1802e668b3b9c2f38b6347aa59ea097a26fa69c192d1d1b697764181f81748d7892341e40f53682a3299994eb757a4dece054002ff986a88e1a8c52646e03a7ce2d6d33b4d25c947254d3a6e9edc44ef20d71d6f89f219ce1f20d42b7785191c53bdea1f68e4fcce80a99fbda5cc7023a65873a2f79384ac6e616b4dfb9677e0f572f8087c817d577ed0e0542c3454751eabecc63f579e9cd491017adaa18e2beb6b3b281b1302940862cbb1c5b6e1a847070abb0f3c34335de51a29aa6f74c213e9971c28c7db8f9b992b90c66cc55810bb5ec3ed861e25530a4ae46baca0ef03ce0144a84bdf68909fa55eb160af10a87daf1a694d1cdc1a4f099df427d4118cb2df2a73d3085368ffbf47f6372207941e03edbb2e6bf0c693431c053c0e703287752c30c109a87839fe2371d72d22a07406618c00fa8b29bd8ef35f8cb55f917d1dd188a7731d26208edd8c22e716368276be007e453c4273754a5823f45b4817bf4c503353a53bea4bc123707435424ec70054d9166b35dd879fce1417f579330e50eabf3ec9ff06d60298f8b336e863fd9f27540707b3b620f78036191ef3038d047e1d56dd5341205a982f30eb402b70d4e45a4a5322423d64cd2851c8061e88bb99f79c39302f9e5bb07dc0e8f80d44ce71248d30bf3e0448f5afd9f1d6cc3dd92d706f53febfff61dfbfae649fc3cd861e25543a68c9ae5141cf07f001f98b88de44a13691616e00b42c2db97a3a4e46f41c6dddb709f86344a0e055c30fe49ac5fc504a5ff08d3a53105130ba7823dffd458192d06dea82e4b71553e11ffe76d11f74a31366eb0d627b7a69dc00623bfa696e8c587af4c04368add5ea6dfc248738b7a12eccb8f446714b32f861cca932663ded7fb9d5588d7a290bfa3fe01cd0da4efa900a8e95f72bf3c0d10b1f7a4e3f6c3d4217c55e99f58b356d49fc60af8513b871bfd36d8dd8b897b2a0f701f9c092c3e9b3b7f970f582033db67822ad7d05302981522c76fe2f1a9c6e0cd9af40b70edb76cf583f68bf527d12e463d07d90f60ca52f45d3fa156e25f071fbe4bda2a8c8fc97ba92a6b18653772b518aa13d4904d26b217e60cdf4062914242531ede36e4febfb1e6e68a4c655aa86de3de02a5e0a12b305d986b6e9b7699269e819313a9005b5ad6692e1229a0eb1901b11416f2bdc9843d3acaa39e0c9999d24b423f9c775064732cc53cb7a93fe3072a54ca82f2b6b6576e067732bcb667e0f34939cb58504a77e5d4d9297c9998677cc2b780fdc8cd5b26e96d0d58fb589ec5ed3af51a595a5e2bfd1966004da48a3370a4ba5ffe5a61bb9398d2abedb30de27d70a4726906ba3bb558d41a508ff09efe1a6fb5ac4762283e5b5bb1d1a0e581e9a6dda24046b0a0200a1fc2e16d7a4fd378bb371811729a3b2dfcb6f8f5f9fd142629020ccf193d6bd1f97b356176e25164e2ecce8b99d7912cde95ba95ff44e5b2e706f3273e1a49a33b6615e82600618c6ed5c12edfc8c9b58ce301d929f8e00f840709ee01fba6df305a2f8c7c32d98e24316bf57aaf012fd0bdbec627f9626c805be4bdb81d1a0a9393722ed855be3ebdfac527e967ac9727b09a0af7b6d42147bcd6459826608f64c9966efe38d2c8abe4e739f6501bbec902a44b743fd016d811e4015a9b66360650a007099eb803ca3f3b1e770eee8807313313ce210d3ecc8b638d530ce30d4b542b7d3fc0ba509d78ffbf73e43f32fd0fb2cf92a48f1dc00ccc935c17da56e60c05221229b5441fcfbc7904494b2891b1b63b42a709e628067ed29993c4fae20bf694ddc57dab17f88424186882dc23f9619934de97f1e5e7b4d499027e4da092a0317678f84945aac58c1e367e4b23d7e44f7075b4666ebf240ea57bd889ffd577da9003e5a0ce240c9608f95932f7e71a8eefeb955632f17489d929f6655521843bab85d14975be8ac34677243d781a0ab2089dbb580c356c63fb8d47b2658241bb5be5fd36c11069c5a89b3c84a1c127bb5b0059ab9d1ac78dd911692b203f031c29cac5f421b07e63323a15b287f7fa0d3d9c27a2cb6ef3606635a835cf42b09908cd34fb084915f337391de8e63412f92aceb0dfdad772e98f2fca8cc5273d7c5e3121fe12b225634141cda2009f35a9b3a8f5f84d00ed04c3c8c203a3d01a92fa2ddfc9f78b3ec178ebc55e8e32aef767e71281f9b11056c01619bbbf9e41a522bd345cfa1af15f93eabd6239dd6eee34838e59383e4a34e90373cb21ba466739b4fb7a11bdfefeaba322ad4370b150f59e6d6daed02bd4ee65eeeb7b94483642e71fc3ca6777d6416516ada512f432b76fe0ccd21136226e79d0f3b487d70c36d7a9ff89fc492416e6615a8b543336a8cec9d2f8f144b27d13d981a38ab2dc965410f835eaaab09ced2d97aeb920397965c00a86368b1cd3765c439a6c23c70d7f7309bede999a3484219bfd937b87ec6db780ecdbc26ee76261be455ebb25fc0a9755cbc3143cb67c242428f6f09a6ee476f858d7c2a4d9cb7cc3b8703c006010def9613c82d23b5b82a5fe799187f8197508de3e8db5ddc9811a61171cb53c1376229115e06e4653bd43173be1595569638a3fe716230b5e529036b680d6e0fa01e92283b22d0d5d5151ff448a70a30af2eb5744c9abd848f0e4ade86c4d94d8383bbe99eacc4102e994b3b776a9c6af7993441a5528a79b5314914cbc916b038b3a00a08da8bf9098676abe694dc8ea64ede96965a517bcda8a3e25e5d8f08baec6f6a00d467a6094b11990759f84b37fa1a74c639c6afa6decafe85b2888188f632a313acbbfa3c6792bd5bb660a8a7d4dd115afb53cf2397b127230c114415cfd02dce5d75b711c1c85fe45813671d2d5336cdad43e9b62b9983f675830b34596909fb959819d02ee0e0fb03edfd17c5a6b849221e51438786b1cc1a14415bf096903dc106161a1ce673e039e4f971d9834e8b2667265f6e2cb6e93bf365e98ea9ed847c9423d1d8ce92a012db1f8aacb026fb3e176df88c911e32ebacc9f6fd8c9882178f513038658a8a7ab3d20266508abe41c90491437ac73a3766b27895b76bb4f32d6e9686e5984c13b49bff10b3c84a0eb711842bc0c38c93f3040368e8b2f25248046faede5645daea302d8b9517631f6d641a6fb3c1e74870c1c901e774359e67db526fd677f4c7777edbba21af7f6267246957cb150125a71506647bffc5ea38d2a27f17cfa9cfa016d2b775c2adfb1fc0d5f13d54031e56a2cd6240af88e95d469a0afb4f50ee32c39d9d6aa00528389c94d3ac89c92301b611cbb0be9f93a1a56dc8a669f6800aba7c483eebb5a988264e08af73f2453929df593f54c538f5ba15177ab0926cd583425e61cc9ad72726ab4a050c3d553dd268b99ae36dada6ffdfaab9e79a7f2b2202e58ed3f78bb58661d6bfa198cf4044d635e53fbeb8e941d68de65d8cad9b55f1eabe075edd64be9d4326ebf98b48d543b63855d435f2dbc3abb6090ec457ac19e5535e00e26047efcb1c4150907842d0d0abfa2f89133bbbbe1228d89049daa241db201d1b32282a2bb1855b7a8afdb5bc4d4d0191ae012dc526d47612cb41322c93a65003828d3666c5644bc5791d60e794f2dad151b6bedd4a238d42e04c804fb9b5348078919bfb318a2345afd23f22c7b73490bfd3a5df200d3385294d9462ef3938de51cd1dda041ce01bcbcfa25f494914e879d2d92699a696fae6a53cc32d5daaae13a64ae7455b7ace734f40a9c04105e64eb1c6dd697781f4676f772593adbd7ed8db2e022fc927cc35a443ae2eebb8f2003b66031be69db489c2724876970f2217d9921bed33b3d28c0e98967353d9792a65046cbb21d366ffe3b5987112d4e59e9f6b4f792b6e6d2341c6d211e94e9796e9881055c276413dfb510e4e997ed4785f09fe2201b177b9f4ce025a2f9d3960b93bc46cad4629514775595189fce5f14dc82f81caa41c751e9844a8a14ab9a1d17622f952673f46aa829b3d25c43989a6c1f2d3a508f934064385f21e510447b251a073349f3237ed3808247d69123a428bfc210412c854ed3e975407064dfe9fac5d46714db1e9f5b125098d9207d24e046fb47ac06a8a281b99654cb808d497d4d1b2b47ad2146ced9f248ed1dfd5e3e0f10139b068c6cbc87040a2bf763a647739669422e660da35d97f24f24a7a99ff51e1026b453de8364a9d1d5b3c37467eca92b7ae74435115d18c246e3f390b57464b07c7d21aa9646218931d17722e12b0967ab3fb3850ff613bb38be54890dfad73d0460ae095d381f93ad3a511730b5b79b850a815422024522317c91906dfa9b342138c45a0b6b194c5a905e6ab3674cebf1ff0481c5d526944f0f025d3cb3c84ad1c419c9e7d400f89beccfbefbabd0ba21cbc5734e25d874d5ba38f0576abe8575c395d8670a24043866e0e0c2d9217c5c248a869cb3db8e873aa032fc0b68b96987a5feb31846e591ad7b6ada5c0d9e7cba456c4158189e596b98998d592a263a6ea03e1554e985cad405d88c7357b01c61247fc0c95965e80efb8bee485f0a82c9c1dd8a6394daf85c853cde5c7c3e9a169fb9999329fca97048de422742ed7ad3082231155316f181342606056b942e900021454b7b29c5aede59dc102234bf82ee1d11281351e45c0ee4fa1ff2e3312a3d58428112c5a1548ab9835bc24e896b16f730c0fb36d026670f551778d3b27392e35216c1a7fa09345a1e844de966a4ba1a02574f70b047d57010de349c3c283f9297c34ac80bcb87cdac8fc6e959f36f178d97703036ffdc416bf4b3b9860c63500425915776adc7d7c36cc8ac620d0774b9bb5086ac85b0fcc33c98795b31e8b4485e914af77822de2e04eca128eec16f6d2108325ec20e2271228e4f3a15da2046457c7869b2923e73bce53fcab21b0ef13354d5d66eddf455476f4c2c855d4ad07e699e4c3ca59acf9343620d6d70039bb870ab40f242efbb3c5e4b450f629883ad2f44f58ec2527c92de01ada1b302e46cf2e8c01431ae77d76b725b97296f431aaaa3a6a7466a94102ce2530bcf3956b64c7483cca1e071598ae918d187a0a70833ee07efd4232003f6cf0c3a56028dc9e03406a64aa4096d87f88ab9fda48d02ac1e7765a2ec40bdecde7fb481418331ae6e02225bb32d58402005b26e47dd65da26bf2f424c04897a92e91993618a6b68969125c5b35a3811952ceb8aae53f105c87c59f943a68c68315dc6a0fcfbe829335fe621bd30698289cc8c2ba958768492e26b59454a9254588bfaba5a49b2390e2207e60ca5ae5805d13f69c585a726a303183085a672a8f5b5b07dde15bd8b154b61d170afbfe2f0c4f2de27ec54bd88a52e25ce0c474474de7b4872987ac778905db9bdd652fd0415b2a7bb5328ca200bf81b105c55a6550d81e8769aef710cb58754050a77351ca685c1fa5e11eecfe344ee3914c086d1b0bff22d64f331c223337fa726e20843a5319a4379d0a395965a591bbd27a38e4d51b01387d64bfe074b4b2aaaff3610c5834f22e84baffcc8ab502b9966b6641872001f1cf562ee1ba88af4dab024f11ba1e0c369f7f6b4502d505c8b51bab5af1434f1889e6e19fb7aba4dd9442744ff046308e637a1ac5bd094c8dc1649a0f537fdb0626a3d8b31485f6c541932192f8bc15955a0ba7dcb755cec083955052d36265588078a7819101c5fbaf4d33f263404eacbe9dc221f4d78ad69ef6598098bb52872a27dc67ddd36c1c78d4ae79008631cbe3c73b299a19cbdaa84b7a84632412eb6e06562fe24bfe11e2429b5feb36a0b0fd5a7c3fb2a23eab7cc9495451bad4a93e30df77bf156220b36aa64a860326b8b7aaed9e4e6859fe67190c78e545497c849d266701fbf9336827da22cfc338a25d9ef09bcd5409fe5a369da024d4c6c69a4be957c22fa07e1941ab06e597c2d8c57ffac913724420407aa1c192418336fb4e5c0950306fa0959f8c43bcc493ab83c73f6bd97d895dfe199ebfc33114155fd4d5f3337e5ee1fc6ee60d67e40bfb1f866200ebf6e1dab6885b6c0ba34cb033f95ca85734ba9964d35b2f87d93096db27a540439dc03a2054427410de0ea6dfc0f08e0fe0909417501dd076903d64459e4dc78a06b1c6d06eb7208bb78e12cd134c54758dd434d554d7c5c49f6584f5ca9514c802e161f1566310ed560322d7ad568f50b7561c86acb0a386d2d30513a00ddb306b16c90540068cbccbbdf2ec5a666e625979eb26ab9639bf201e07be111d70e9b7d48c24c98dc2d1ed80a2c35930343c8088677784ed147ef1cd712409d9bcee2b0ef055cbd608079c9efa761d38398415e8b0151b6daec22d62bfe364fd002ddc8c4d4800c9f58bb78a00930305ea8c6bb6d4a9bc2d1f367ef61f28073e4c3ef4bd6d6658165759b1e2cad57195bd62928a388098cadf76c9731055cdece7692620d2397f358be48791140bc89331d56b9b4b26a8442ad541f03e27fe7d88d15697844aa40cc1170b241ffadfb488a0b9485386759960421d4fba3aec8ab64cd9522756020c8afdecfab3c3452cc9cad01543ecbd3d639a237b5ca7b53bd6ab2257537c28996f655336e0e9ee8e268cd9a2c73e34a77d14aa0f66c8745764aff40a97339267c19b6fe366eca73cd5a3aab2ccc1a112e0e71802be2ef342848987a7a8c690916aee219119e63409c35a4164ce972b077f65670f994b327b0fe0c8965d4dc5bdd58d32ec6d3af6dbb7c3b5ee6fdffeb04d1f01e75965abd57a09815203a89d636368bad0a880ee781708e2ac0759d166ab9462a5370c20fbe097ed0b6e76d92ddfa6c475a845e13879a3adbf9d7a808955cf246ceaf2abfe81fe129793e7ee2f9a24e0bb3de57caedff3642e233bf515a0cf537515429fa7ba7ff5af841561f7e95558182d3d271d2b2b0897b4f31bb0e4174bbd330f818a6bfaa65c868216d7b17d60441bc378c7757588765c3db51e64e0846e800e685ec37beaa3d2533f069eee73f1673974a69ff2d6e78227e5b5047dbd9f81916f1772ee96ffae1cb595744ed291421bd6c36aa09f7f3754666fd1250d0d1adbb6608b4e29b8e805e88167c58b5ee9102525fdcba5b4f28b1e2cabbc5a61a9c45385c501f6d1e4c3bc1cbb1d9a7cfaaee12e3ab234852420f7691c7d549395e5f757aa666facc3236256cd9d1cddeab46cd52949d635b093d483593a82a12e213a5f8cc81c6e16edee6e1631edf5963db4f8e4eeff9ac36de0e3a4a51135dff862aafe7bc4a65f36a6dbf81cb56ce850d834dc40facf44f69157286e653386574298df3b6c2dda1fd34437f7c50652810f370dedeaccbc933908a6bc63ccfda26e48e1e4c1383859c79e0d19a79dfff8f38db03eb8d4df3187b2dccacee22a040e040909c40407409bd803e44d076bb926e68e4e8fe3d963340a99104b24057d3b483d5b0bb51c6bcc41917139257eb8f3b598351a7da111f4409bb1d0072d6ec7e68de0fbd1322a18aef2484bf298245036ab79af5dd5bf00b5f19bb4f6f60e72d60326ad1a12c64b05235a3cb22c59d03c3c337946785ab840d04890b45bce6a34fa9655e4366ddf6e601deb52445d0adb9147481843db4c23480608ca13fbaaa263f614d4e63029d169537a5e082fedce55d050016ba007522950e9405e85cc9b1194282994578df9cdba3c5d127feec5828d5383ecf9d52b5e76ebc039b23e1ddbf68af0199dcba300291e815a7db001c19b1885571e256d7f38947aca8eaa3099d1724515b1ccbab53b120c1b91128ce6faea8af84194b1c0b9a9469a3d759c4633a109d96aafcc2e6a70499fc33079a7683497650cd9fd8b0bb9747145ce39ccb52c6ba58d34ec40bf20acf3ec456397cd199f051f3533a9b7769e4680904787fad8099c154a817d67c5438ea51c5a1a98d0a3a4e4dbf184f0670a38202911d9af9077c474504bf7cddea4af5a02aec3cb01f10bfb5af5fd287d06d568c9f2ef6658ab4baa934a509533105c3b034d9c7e08e28afa4fbacf25808d0d87214fe6a56e124b6ff966261066c5ebe45b069ff14415b4c351c2eea9c308c9ae565133babf459647238e84cfd52dfe2218672170280f94d53730409ea044865bbfac626a0fa039d70f2233f6b7c68714eae3764480e8268af965ebc38ae1def3a5bfc2068bcf38f157dafb3c4e2a1abebdc3ae952d902bf9acaabb5cbc61ea44e113a65e7adf9dc2563cdc7c3e4477ada112f8849bdc46f1aba01fd35bb3ac6df2dc6b464e50511d31e437558f46e9c91c809c8d5d781b55907a5a33a458574c5363f0662c4399c0ca1c02e28a75875e41207d1c9555b1f306effa080e5b3259bf3ea298ba0860f5ff636071b249684cb37dc4e71783eb946d2c9d782439e26732aafd4a73097a11d16aad20f9d375794b06a4659a22f3a8ba482a1ad99ce408290eedf1d4f2ba8e3d697c253b448eefd73673702f826d7940548df6c3c1c95c8892c6ff2dc5ac688b52a7b51d05478d2dacf9d12ace0a008b1275b4529b2441b02cbac0d03c8d87d164c02315832a3c0de9e641862d506319c8bf960dfa6db8f6cb0872f4b84d62289a5871d0630c970009fb88c7a59b43c86fd053244076dcfa99232d005a517837d056bc0c74c28f84d5dfaa1a53c95a37ede6e92f6a51518bdd6b03df1f33fa9026444d90574430bb31de9556360f066aa5cfa0647ad57aa0b1f07b26a095334decea6b20851b304f92b3bd06eac87a4facd8d60eaa73babdcf27e182e72f4a940660725ee84790c68991830feeb3d06bf4c598e9fa4235f8474f173c1ee6715ddcf3ea5dd7cba07bd2dbddf5cdec0fcd3d83efada9a9190e3f9cc47174e8b59879d84257a9aa69ae8c72430d72e9e683efb8cfdbe5b81fe37d6c714c6751de9f0033cf7c4e1b616fb007c802b6df6aed09ff782bb737d5e11b8f14d5cd67a38677ac1313ddf841eb057454e64bb06b5b689f078755c6a8cc1704aa23bf9d5830da15a70365504bd1155edca4d0cdaa5597b871e5b566a631b7a4b6fbcc093132785619adbca3a44917826c13b1afd88559367c9c6f8b7921fcd26de821de763b37deb6472eb31ee817e8b7b595d6e4dedde4de52ca24537e09eb09d409f3fde74f8c802eae80926ff6df3c46ec63e6971b16b71ddc644cc774dbf02c048cc4824dbe5e1340be3ec41000c6025c1f52ff984f36589b54ff7ab07efdfaa157bf82f9fa361c5c6ae38ec378138f841185ba50f27277cf305daaef0f360e5dc2bc7e1c14177b6971b8f3f05d319791bac09f4b427bc62ce8ac5f7879dce77e5a6973dce772c87f3b831843f2f61fff7b24df0ff983a23491418f7d2a0eb75c3f33fc7cfcede391591d31caf6f9fcf67d5ef2078735836c18fac823f437eaf0bf3f6d8ed0df9756873fe841afb526bd3b4a0a9a1faa01e325eca5fd1cdb467d24b93ee835cfc9615ef5f059fb5aeb6b738bf607c9c4410d6f72e5a07c227a84f2e77bc82851248bd5058f140355a4e6884ac92a8b1d28b3c7b3cc72e51c0ebbabc9ade2b8d251a7097a236aac38f468244707a148f6c734ba4dab4332c16108cbd5f41cb42bb8a1ccc9f2575f04e1908898c3983fd4027173740b843fd623e60fed784dd090ebe9fbc7a563f243b178babe218e3a6975fb4229fdaa359467c89fa7daf632d70ddbb02f74238ec03e3741ae9fedc151b946c91b0eebafbc94e1d07305a27a15b9867101b9e21e0ba01f54fee4e40fee117368c57275b93cc91cc9c44b2b9ad2463e707171a1e1b588b9d0f05a1429f76fdca72ffa6e5cc76c7816986fe15ec56adce7615870e8d980795826d307bda7586bdfe579586b6df6d76b3f92f1381c62d4dd9029da671a0e87e826d111acdcd12805a481e88f40f447f43f23fa79d0d7a7d1e733fa2c658acfd7f07df68d3e25cb46de672f332b3f937df733a35fa9ef20866139df17de90b1ff2f04431cc27692b197f1859d848cb9d0804317efa55b516161c15124b1f233decae7d1083b0959e5a58afc96a69595959595956eb492f2994a367af9d5931fa44759a859316e2c4c682d4d72d697b462ece51039ec6e52fbcdded2f471fe8cc4f34a52fc19f9d7cfcc8f7d803e40082477e7d03fbfb027eea6d17f9a5f9fdaea88d9bf6607325f3e9da2bd7d0a89936641eb98b631a79452f38a65ffb9de3f98dc16881bf215b3fa855b7ddfeac4e68742f207fbebf3f9e8171ffb1b7e6195fe4561b2363714c86f1b3092a5354c2877f2d54516ffb59d68bdca5c7eec37b3d6d10903a4a414b31e5625e69894d2b9c7b807d5b743585c42df712fda5c98ab7608634f167b5ebacde671c5da4ecbcbf6652ebf8fef70a1ef84be13fa4ee7dc98170e306dd3f58432df3d973fc1153b7628d95958e83ba09f5e0281bcef11cade67a1ef48232c38943621159c82b995bb93629ffbd0fef5bc1c168731839efb150b04f71e6873d15eb6ec8bb9b26e187aecb1f7ced7631fa8d550bf9bcc65562592bffe924a6e13b248b489363663788fc970bdfbc74640ec8905b8de3d4513755f677f2271a454c91b19837c7d77289da8d7637aae6fe176e4f5b1275e150cc3300cc3300cc3300cc3b00f591c986781e05efb6db361dbdc8220e69a128ff801aeaf2d7d852a78f71225776455d16c883d0e5e98f64de1b2678bbe730467c51e9693cbc4147a927c89aef729427f0de1a4eb2fa7c2f3e548c0236fc46b225f1736c4e7657deec3faf7eb870795f7bf61d3e13a8803ddb0619ff79f8f7bf9817ce7caa464b139e4d7d702b0659fcced250fc4d52aa783de5bef41efd94adac29a6fe7d5afd2466b533c6bb9e1f3e300b0e970af0780cd7143fee1e035c200b0d5afd3be21538846295e63be133d9b03dcb62f5310563ffede139bd9e3a4abde8a7929c4fef3e1cc9f6701e110e45920ea4b8ce5e9126ee83f342db64fbc3473e7eb9246f2256de491abaae0f0de151c7a9e0d18c6c0f820442a894e1cc38689f3145165217ba691b6e1397b158b234b9136da78a947ccf6e573ef63763687c52128e5b9d7485b279af422a57cecf1700f28f6c41eecb90fb1bf3fb239304c44cc299dc8e43b4eba3edcbad68bf7c0e060ea1d7e53c24d796ee78883a110309ea70d934b3f8c3df1fad8737915da149b84fdf5bed336fcaf676109b9eef0637970172266f6ef11ca8ebb676c5f1d8b3687ca7be855be6d0f2aef1f02853ea4d2a0ce7b2d6e9ccc0e9de361719305907bc9156364697b48f9d16bd286402aefef2a98470abe81435f4e130e33a0c6aa59bd43df3fdfc16ccd1da598e8bf6d0fb5da1e547ad87ee5b5958f9eb5a0bf99fd1ea16cf17fde5a20b807f9a7fc6681a86f331cfa632bd845c7f62aaf827960bf611e29780807afff11bd3fd1a7ddef7aee437fbfb0c790af10fee1e055c37e43f85f200c8343f6eb3570b3fe64922694bf349e44e56b070997877ffdd0fff33ee68589c8be98b596d363d3f70a7351a923c986cad8af7cb883b3ea6f377727931bcb91d3e5a417563f99b65950e872a25197a2b2e2b1b4b8bcd02063abe1db72dc90bf4d46f1af92f269491c5c797cc304d39c64ecb59496d29ac09bfc646e19bd0aee297aec351b36a92551694a341dcd7e9f77bcf26d4e6e67efc3aa615dd775d9775dd775357cd7755dd7755dd7bdecbaaeebbaaeebbaedbbaeebbaaeebba6ef45dd775ddc7aeebbaee63d7755dd7755d17bfabdf755dd7755dd7ad7ce7da775dd7755d07e3251f29df75f27bc42837581c5dc7f292c97019d52003879a0b4b274a024bc7d996164bd6dd24641d0d6d19a8a3a0c7ec67d40275746e49b8ba7969b7a3f3caaed487d6da8ab526e1ce955aaba6a9b01dedf3ec9e53292a571622ba929ef2755619c34ba3c7309086dd973519fb8f918cd964ec35984d7e32dad14f1b37c956eb46d5c2c9f6a7112fd531dc3453a93924358ba466133d5e72d171d354a976543caa56165e022571d364b194b098b09ca8bcf479fb32e5a6d96ac99a96b499b2884371134db918291f83ca21d9deb7b4b2ec7cfb7ec44db422b9f6ddc64ba1b7ef2837d14a63e3db8f5db8e9aa4f2e946c57de7ec471ec6bceb51f9b70d3558ddc23998524dbebadd68a34ad88b23f849b2eef897d07b8094b09e1257ffb3e78c9c7abbc27a38af15e6eb765fba09b30154cf79e09f391f2f6016071582c73674e9e2969d2762409fb544b2a633f552a958a254d59abc56ab1329665339bd9a42969ca329ad18c52953465b5de9b6249d3a72549d8d77aef07fbb058b4c56a611f952aa54aa9522a69faa4542a154b9a6aabc56ab15aac8cd55aefc5aa4a9552a554a98c3da692a65aebbd984a4bc29226ac25492dcfbb176bb164ebb1f790cbb7d382f186331b40b662f2b1fdb4ac6d815af5db284b63658cc5c2feb59ba928cd54355359ec6bc866969a344bd92c45b354c65ec627d49ab3655bad8c3d0d35b23e2c56c6fe055b51a954197b972b87f2833f9f4f8b934b73286badf7b6b4961e54c67a582c168b2542711286791e964faa67edf35c55a4ddf2304050827e06d41090a39ad222a918dd4321f98a37fe90899a228c389946e1f6a71cbce15eb50a62355b1c81d024ff6d49d59adc8c09de678bd5172b2f647f8a439918553835268931898e346de3327d3e1cc742e54f3cbd24f1a4f2f2820e57fe97bba5741cf3976f78777777777b15dd1d83ec5638d182ec1f857047b99b34c141eedc57b40008f793db0a278ab07c09ad6166db88b93bdf54554f6b27b7f4eca8da37ad0504e2e95aad56ab1565fd4dadf77a937ef6a3e5a106ea2352569fae1e9a6b65c40d298ba2648ade5c5a5d65db2a67cb72707ee6371c49f29fc11e89eb345331bdc141b0c73055d19b9e1bec36f5e5f5d7d3ec33b7a92f316f52156ad2489ca9722ff7a82e1bfb09b921655def5dab931137943b9306bb52728755c3a363235b3b92e4f306933d92e4176d49236e487b56296972244798021660b0c41527972d20c31851e08006569cfc2f1d698a4452b045949e284f38f95f3bd24403094e58210a1126a7f88331b080060c2b40491c89234d40628e5c49d3e7ebfbf5d8bb869dc70c4c3805c9b0b7b29b0c07f960ef517d70908a2586835cd8dda681dc1efe3d40ee6789e7d7633e904b04967b4454ee11c658c40ddd26a26efcd06db01426644ad119344d1aa952f6fcf6da9b87c7af0bb73f9c32ce284f10a347afb4e509ca932d0b774277c8fd35dc945d3f7d90a6202409fb78869b4629c01de41820c8645f923d678b1b3d8926f9e38f4727e4470a97368952191ba4b38829634796d48aa06e30c007d0ddbd732030811b0ce84f770524c965ae8034d5ea499305bec82e939de2961192bd4ed464a137f50b3939d29b5aeff57eebe2d688af31b489dec8b611df63a2f1d31b69ba4734a93f09d565c2099a23813e5d7fc32fca9d60530afd0846e3a5d0a2f2102fc9172c7142cae4a72e9241fb1735d3a4fed8a3846d2294b9b83e628eb98583e24a544e8602727d94e0861755827b5160ae410eadce8d457568513938aadc36b9bf25e6f0a22caa6375ac5a3bfb54ecca31e79851995bd9e450942ae2663348cc9fd97634d18e8ee87524a95fc4d256310887b51c1ce4fec5da2a5a94965ac9e1d6dc14eeb52022edb5f766e623717f26c8683ecbf7731b9e41e2fe0c102464142346a72013cf3cf7dcf6dbf7b37cde0a9ed11e894bbf4f3340687238a9e020293888f61af5685a5db7d3e9801ef49eaa6379aaeec3017b2d11e6f176546a3c1d959a94962aa5c50257a49f19e508e05b9a66ee23317190d0f7696634801fc0873e20b747cc5a4ecfe82f22f4a145ede4700547a5060a9c1ca6b43c9534add47a314fb5b2f339f4e1ca0ecf4e4ecad2d4cf426e3852f5e99b00316fc40d3b56901b73a8c2a35293d252e151c9b996e68a7624a9535a0e3597c6f75b9bdb387cd64f808fe937c06b392a35af611197030e5bc7003470d83b3138a700386c1e02e0d0c361b7321c7e8d34897024a93fa6de1c6f85834a4dee4f6949531d000eeb15000eaf47c2a107e2967f48e2b059aee5845ace863347db0cb795a6751f6eac2ee53b95bf1f6e3a59057b3d98483cdd0fbbb5a5a409c8087b3a98483c8dbe5fe3912620a24fc15e0b1389a74ef3783091784ad172bc1d4c249e543e6c9d5e711f76ce87322a221b49ba91a49424f5df4fa4e58c562311f65492d4efd14892e8fb3596087b3875d3d934ece5dcefd77634ec5dec7d6e56b344a9f823954e007008e61d556857706872ffca0ecff6231d49ead6cd567afa3d94a67dff0ace48a533628570d8ab1fad24a97fa41ae5f80867a45ac1912355b88293fb8db89d63c3933b56f7b0a429c54692fa7574767678428bb237d204c488d1892687d3f666609d8268dfc5dc17c9703fa2c9e134e76f18c8025aa720dbf7aafbbad1d792946db86b01d170c792a4feae07c8c41d8f24f5530e773b92d42f4d402eee7424a93b56af301c7ee7807a25d5b172ff8a8d6aa5e6662515063088d134fadb0f404533a221222444444427102521863190a10c638850204a81a8884809d11222159cc10c514447884c10a57f3ce2862a3cb93f1ca972bf4acfa5fda8db525654fed26ca72144644edeb3b4b8bcd0c0a9b4e49551c38bbe15d489267213ff1022dec9861f42e49e6ef82144ea09e6b5ef57e19126246494d3102231270060ee09e089d3a269f40f21f2272e0b961fa0bfff868fc342d3e887f9b8274da35ffbb82b348d7e1b3e2e0b4da31f7f9c174da39ffbb82f9a46fff77150681afdff715b348dfe1a3e2e0a4da35fc6c771d134faefc775d134fa69f8382d348dfe978f03a369f4bb7c1c94a6d1dff2715b681afd2c1fc785a6d1ef7d5c179a46ffcac74da169f4ab7c9c149a467fcac751a169f4771f5785a6d13ffa382b340d8c068846f6b18adb39586e2b9c98e158d2d427100eeb7dd03956c4a14c0e399645dd4fee264068e5d0a25839a4375108f77368b77089d68992abbdb6040877e66ed2a48a1cd29b7aebbd16153f35b63fb606f5c1fd113b9e7e8315495d3d0e46e186f486de3468b14bac520cc9a4b81615c5f56e9dfe0de711df3fef3a6a7dfa9ffab1d2d6fd2c83235e92d315e04201ede74f1cc4e5f3f104249e4ef27b496a4ffac01192c1fdece713f7a6a449cbb92869ca50282d2777869a6993e4b14774a9bbb04930da64ab0c23f76f5b5c6378897ef56e4f0fb8dd48d3358626f51f91fb93c8fd21c5c9cd44eebfa13837b97b7a46dbabc7a2ae1eff629ceed65d4a52fcfbd54f7efc40ef1fad597e1e00738039baf837408a210e7614f6638ce0c9629a3f6dd8c53329b4ff2a813ec548924a92ae104be5882deaa2e28d345d2f4f17ccacd5ab0cf6a1455909c8d385af1e49eadf746e7871908409acc8f52fea0ef1d27fc098e5639f3cb5752c044ca613db211e1f5b540b2e46234df6a29ad4df8eba7a36285c8b92a6abe7b2a8dc3695fbea6141e5b64188356245881b2185ccf901a20b0dcbb91f2dbe777f224d93299c4136156c32ad6942051597bb091584a0c5485bd817b309159e78132a6441735f71448a265470526383f8eda0b2e7e0e7f3f96459939d22b3d2dc4dc4b04235834ca5a44c85336b180eac9ffe9079fadf9092065edfb970e5d3dcf935ba8f59e47aac7ef467a59f2f4609048ff847b45aeff562c0988fd4e667dff9b53929942c9834394391266618a36d488b43879e415f5a1cde3bfc302536ab74e935bc249f647fd945fedc4dcca02427c9f235f9da1143b2bf1423fb634d5cc0bf96e148ae7f8174c8bffeaa4f435bfd64ae7ced6e3adcf835e2672fd3367a907f591dd23fd29f7f7d3059cef944704048ee1c41b607f9eeaf89e4f7f9f9c1647f952dfbecef7043fb1d40f607eda5c4351ca4351ca4d7fff8fa9bfd417eb6d91fe6fb73f607b9c377e3da61076b7f9822fb837cc7371c0cb1148bc3af401dc99d3ba7d81e6d3ee97b1688395fe2182f4ddc23d6f0923f7d99b6111fd4f998c0d2246cfa190e75c8f43f3174eb522c7d176d2030acd2127e361d1e31c73caeaf3fbfcbeaf01cd7d797b6472482877c1a6f155a7ba94724fa15cbc81807292889eb1f9f66faf3c8914c7fb2bcd4997e26122fb5153743a64d6ec9e1bcc9c93192c3b9cad4268a1b3a55993e76c5dbc3a2c9e152770c2f3514327d0ee525ff27e4901bc21579c9e1edc937a4493e7d1fa4693efd86a19887a772031cd17a68da33ba67348652735f3153e40a137471c5cc4cf6dfae584215c160559f269f2654348c86b5a409c3d555d1a518b1d5b25a40699e89b55058ab6728e1c60fb196b6235da0358ccbd80ef2bfe40f317f3e719b45439b3e1e4b9766148070e408396e6df224295eb8a371ca495f1c8c5276b74aec33c6f8e265f9f19a5eac31e8fe5399a122fbe7793354c8fe613359980923fbb7cd44c9fe697907b2a38c83483441428b1c7eabd5852e70810b5bd80214286080d1210713d2726715f35a24022eec4a993022ada56d10a06748989cc223cb8f5dcf981f2e20fb48019d10235102461d10713b883cc05d04701fb8211b7788104887500f909501f9b09bc98260d34adb0f2d3b801682ec532323e25373f888a06206a823c02e1a18092e9aaf12d002b40dfa33d32226012610394306711087b641dfa94b296701f200dae4e5909d5e1b48027d09b532e810a059286e47c9d2143fac38941a20c510198985c4980150044c30440b1f7421870b20482d7416defb26a420050782757244088926587c210729b99b609183ece56e82050b8878149448e2840d8678c185922824390d41051826841c2861042d20518513a0bc50e13bd8bca1822250400318d4200c3e2862858b16365a1839327a3035f00112a83802175e40c5029488c9c1172fb10b2c7822ca1760408109d4174c38a0c5052f4c20032eb678018f16559a348d080ea4c87142117e704495052f3c46e2cc3020c9f285844149a6ffe5c81577834026cdf1fdcb3151282f40c44004c93ae685fd8fca83903c5fe2d0b374223c63d2a304d5ef1e3263f8ed0f148bf2049609bbc48d1f2da5d77531acdbb9ee55acd66a6bec129609ab442a954aa5523665532ad8e2865d1434bb845542db72d82dbba57ce2891b9f6a9766619536b265b7f48f7a9adb2d6a2029258e39e79cb3a794d36e20f92213d8229a0624e52f7dd034f68c99a38d24d51a7dd624c14217d62d9fb8b09d2a9d4e79d99857d3227a64924ddedcdd360537be5397723551ee491edcf8b35bfed38686eed49dcefe402f68c210a494528b1a632065c4524a098527b4fed8e223669b1dcb56cf8845b8d84e11da36a7bbec8f7ea540d398c8a470fb1b8bb930cc678c61c9c4d4c0248661334f5c30607bcd610c3dc26749c68511c4a0025ac7cc2a86eb4e298d386489ab1bd12e0cf3d6e5f183e6cf8679bcb651bafda57dd8d32f87f6da473fbae8f860b9615ff88fd1778b837ed96f7f6d5fd3ae7103c3639212d11ae6faa46445f71ab4561d261c418e52bb3e08f830841e1c301bc4b2f7c17de610487eecba3099b1eb2f6f22a79c5ecc8f398c993e9d6028c93126778c47a014832fdd5b5ac7f447f994d206f15f4072edfffec01f9e1ba398cf7eda3d3f93fadbe2887139a58831d2ff1c418cd68a61e6f70786df606c97dc4b5a46bece981b0d9cf4a3039ce4514625685ac71f2318e2ba30ace5dde94a9059a054eda50bc3e6f715f235bf28e84f273918ee10dea228d074b8fed3c8fd76d77aab5edab6edabbdfddc300c0b4dedb3806d0bb6c3aeff609f0b0fd9e7ebba2e691fd0dc91fbb5071efcebd7cedebc6d7a7a63e7e0fceb9a1e7dffc21fd41f739177f61631239af6c22447134905062439c6189780010a31095444eff652fcce4b71cb7187069a05b5642b77e3e2dbd734dfbaef751797ed5bb26ddb5e6ed68674c41f34c7efa8f5967d0da36f19ff6f9fd3ec675f7e373e27cade257bc9bdfd401ffac21d39e4b2bdfc95bfdba73c6743366443765bc129dccbdf1ebba0ed726fb7b7b5de7b5d7ce8bc612bffda07f553eb809607715f187a8b39286ee8efd3d7b0681f601f10734bc83d0873505c0effa0d9befc96b79847cb83300fd1733f6808ffa0b9054f076bf8ffc299472fad8ef8dcbbcd21c2ed600df2dbc1d1cbc0d3c11176f941e2ecb31be73535e7423f84dcdf972e380cf2c3c51387d7c7ecaf0cd340c3ccdeb3ed35256d5feed05eab2d177f4accdcbd575e0c7a2e87735fcc579abafbdddc778f52de0587b505df945f49f92e45b39887f69b060a7d3ce46f1fedd3b81028e5be77579ee565e53e4b0a4825c485debee8bbaf9be6d08b6cfc6d7b19c29d7323dfbbf2e2819e2506f42f32a07bebb37c0b28e5bb4d2fbff2dda6ee5d3897f7de85c461ee593eef9389b921b94ff421d0d71fdd1bcae1d9621e5247fc6de3fe721f7744824048be6fb57ef9853bee8740fff9d0d60fc23f68de3ed4a2109b1b3d3be648c931d3451f951bad61c20ee3c68f30e8fed8dd56681d290fffce2edc111cd28fd3c89c36b8df026c030e4eec3f88e9ee8e05e1e0dc401034cb2076383877f4cf0f6276bf07e6b9801b0efa7bbff0f365f1525ab09c92ca87d737c6ae171611cd15edc8dcc4b0ebbdeb53fee2be1ff4bd541a7dd821a0997badbf7770ce17fd0d7f05b87cd8f8b1f7bd3838bd1fb93cf7f160f9d15f5f0868e691f22f9d93b2321ad130aa61246334a2a10619a38fe5451fcbafb0acb0d0f0a2d75ebef0f3cbcb7df997efbf1efb78b4b43dc428188761171f3a63987ef883662e6621f986c7c7be1845a2af018755060eef88a6bce84b791abeb03fe553be2de8f2799234bfe58371703ecb878383f3bd2fc6c1f92b5f0d1907277e07ed19ae97ba9f28140a95731a81b9fbef2eebc2eb35697ef7d2e2e844dc08c3220eef40620639b4e3be76ef0d79bfed435fd8bff5f769034e9adf8f7780e1861e284d3bbc0cd72d7821cb5bebc6ff504a29bd21291134d3c78151170c5f795aa11a92e7fb300137756b3e8c97da0a2aa0d4c853264f4fa95e907b45442787ed04bbe88e20bcf424cfdf8097669ef3076b4414f2a1294ddc65532ae79cf2bd86da92cef9f106da6d1bdf3962ae6750ecfb34897e80f49139f2c89631a6fa2a45a7c92d4db185454f853115e58e24c5f7ee6d39f59b7726cf84929f34995588ef851c63dce91971c90e654949a148ecc2a48c72db411943a9749bd981981cc6648d5e147bfaf1431c723fd8568696b0a1220b119335f083c98a4415888102319a78ac08278626619c0106c4410c273994bb89185550306e362248d4cc213d05248e34b9220cd5044c80017190c1fc9f0fe210730519a070856a240b59880225bb00a309d4c965021fb111f1239ea2df881809f0b4f32efdee56dfbe9d47bf191bd70bc58daf13b7cd513b626ac8c4d0dcc42089a9b1439aecf74e8dd9717d4ca589a938f4746ea468923fcd4dcf701d77b984f025be0e624e914cd9f57ffe7a6c874729fde0fb83660ad31bfead0a54dac8186394d845e79c527e5401c8002fc9af35dff026a823597ea1358cd6d2a594520621a5f41c20e312034e92157050c664293fa68694efbd78c93114d703df6dea2685b2ebc3bfd75e71ff825cc47d1ef8eebdf7defb9da600b9184ce42b414d2ea8d60a02817078cb1d09ee571421c1ae6e6c69a2d7e15ed24e6b339b4d295d040281402090a8c64122245cd15fd78cae859124c7565422ba3491c6ddd0755d97bb2807174c8e70451fca1a1008f4b281f0257cc942bc64eb736219c68d34d743f367cca17fd1888316471b7fcdc3a1102f39f46e5333861bfa30d6e428b60fe1a74a9ce4a568c408114703c332b9b95ad0afbcf62aa190b5971385bed6af45a8b5d618ffbb8ab022028940201008072846d19323f2cad71964c515a57cb7fb7b5d9748240abdfdd73e7766453f3f69f38366ed35ed5b4e18a375dc5e924591dc4d722f71822a7f6799e8b5b9724273855c92397cda1cad0426b2f62151d6036739ab6b967cf6d8f23189a0229148847d44d194cef2429b3c0b8792c4932332f52ec69069c82e095d5cee1b20131133f7540329e1be17cfc14b9df5300e7ec6d2e6d474b8b1489447bee892d784bee3953c060dd20f1d4a96cd39e79cd99c73ce2c0483a8e331e852e4c25f664d872b8683b4c741907e0b02ae23c9f4a5ca144fd491b45c453fb6a2185ef2230e462ebae451681e05955234485f9b7903e38671e7c92aa3a1b38c78e95b3fb8463e143ff47da10fbd3462e3a5100e6169d39a14d24692e86f9fc5f2a667d0bfe1d9145a363da4f9ab2489fe7ce27a8eaa49f4a9ea8936c59d974e74a9a317db15da246b341cd60846a6bf6d713b84635dd32a90b33947de67f6394cb3f72fd23848ede7013067cf7d39c02c9317c794833839ab9c15cbc3bcb83ea60b0f3153fa5880571259a36561b09606b7a0a820ca28e3eceab2a6630ba749f4b5195b389e04bbe66fdf3d0b27d1d74ef335262d1f6ada7cedb577cfc9a1b57a1ad6425fccf9a2921d79befd100eeb3db1af547073a892b8e35ee3a5ec69932366f2e570b8a72ba194904a887b5739e8385ddccfdc671e1c761c07c19634754f53b00aeebed1b77ddd3d683fdd454778bf9943afc9f4451f8e97c04cdf559ea4e6db347affa6ef12cc3f6c7621791ab9530b7d31f6ab11b30518c41a6972263489fe16997e1532fd2f620d8d37995267f50ceaac2685ceda7e8481c4d39682438576e186b246ca94a71f95e4d8098c7ec340e269845d646e502f646ca48945ec8742d65e22ee5e380cddecded00d65299841cbbe4fd0f5970559117763045910112ee8b399057d298b74415d27536f654ae5904c7732fd6c7acb4ba1acc93ec8b4bfc8f4a318ae7d8a4a1d42adb5d6fa6e71d4185386007ad0471dae0f0e584917bb7d052489befd20e0e076c465c729881d1e2aade2e62a6ef631b3e653ede9db4f1a71907e96d9a08798650d18b206f3e4c6b808c16c33d177dfe8dbbe96a4d08e2cc2a17dd0e34425a02ffa16ae4b8eec452fcab457329f9b21dc7e7b95e7e7e353e2250f8011478240208f627bdf5c72b8ac7190be906c95dceb8d38893e8d491e89778476cb63cb0ae15eef9e858354d638eb739d1c5c17eb43fcc0a2b5a95a23882849a24fbdb8bf1d993df7654d6c6538749e4c9d72810b4aeba7a7107e8434c2b12bd640675b0116042c86c0d3031c1d9c000c3eb0e29a33736a39d8c1a7724b7a1047b957501023099f54dc91a6968e3d36d20476d409a263cde74156cb6ac8a079f9feeb7595a6c8d3c2221a812a38fc15d003391ccae4206a0887f7ea48234d5eb1f7960614a5cb58d180795691469a248f2445699a3232313120f84f23e78dafe68daf6ee68acac8c4c480ff9eb7ba79556f8c31c61863b439ea8b34d11b6e7557a19534d155953c97e4a192c725cf45336fa4e9f27e35577375f1509a1b69c2ea6dc1e1f55870e8bd87c307577008aae030268547d60e87f55e114f8e58bd17873784e35f345ea5d96898405755a0abcbe9aae92aebff649562c73cd2546924e6f130a16e71536fbe58552fb0c690e311397e88ed6446bc7bbdd2e4d8d26d8e596fc2ba45bda94d985057b70a5e5775c57d00fb3e9a8cfe2d3f29890d000a0d689d1b86c79cd9b63211a250cec9445c56731bf15d664bc4b5ed64223650dbf01151b9c702727c7fb7404c14eaa27244e5f88398182f750caddf3292441de0830b6e183375a8f41d8797caf40c5ab72a8828210c4e9844510329b678428a21ab80a1f49b1068295711e893d4912429e3145ac3849e2ad3cede550b25aec5cd5e732d6e386da68d24815c1063cd9178c52bda3848afebf3f4b5cfb7d55cdbb5a51ca45b130e3a56356dc7414a813abff649eb98db539b4026d65a34f2db5092b4dd20b9aeed067f1c7db43846bfd124c1b9be0d478983b4fbeb1bdd20f1eedb6e1ca43ffa36242a1d2f5db7479228e8fab69d16904d070b39b544d13656321d7147f2ed4192e9b64a92e9113589cb44a61ee744a6dfb2ca5e871b7f1ab99d93a34b774ec7c41a7bde6da28d3793248737eb706f8f833e73230e6592fbc1fe33060f327a610ee52048359c4ce3a937d6e664f582ebe3835c705ddab57db68f36851bde1e2f61d8d3e76abc94ef185eb2cfa1b8225c2a7be62e97d1e7b926bcd439e832c23c781edd9e3b464b0d67439fbbe190d0e792b869dbe186ace289fee873d978498691afbf2d9aeb311e245c213c99be867d2e396c110cfb361eecf3b6c885026ae26e507c5b6d2b0769b43c5c281d6b5bd1e4ed0b372899f62a8797074acb4b314e9ad31442b24b8e18de272f24b7e541de1c07e9f320f3f5f78983f42f1307414ddcf032b94c1ca420165c1b0769c702ade086d786c93de225fb34bcaa4c3f1fde2c6e324d92e9e364fa9db37292a94ea6b78bd187f749b6df96da9af8361b23995a1d13c4c4eda13d3e46783b82b71aad2549f4353a857b6dae8f424a1391789ac2e5f31308c50f72ff8323100acd0f32c504e6df0f223ff441a6c0f0042eae414238fcd0806271a770c36de525f973fe8c90d37d2ab18b90937cfad3c8bddb8a7b2127fa1b4b9aa4bccf6120f32f767920a197d8250a396d98f792445f7e5b19ee7334d2b4ad9ad4234dd7a649f4e986432e95c358292187d726d31e0e3524845739757dcc6cbf50eb22d38f1b0d6a4bb2dd7869c30d906288d6ea130e921e6d476a2b8d95e9675fcf87c86d62b3c9f4ab97bcdc4b92a8c1504b687a4633079f9c25492c61cbc9f4c38dc9b5b93c4ec8f20bd20b2db9878cdc3da3ca2d5a6a715c75f31fdcf8d34aa0e3a79a33c9b45ab65524182684ec99481ca449b6cf4c724d9c4c1f3bc20db7ebc6c1e80eea2173fc10c8c83f647cc2db0352e26e2b49a27f7dda15e5d2792349f4fae215f1b4e919f4414bdc2a493a5c504ed6c26c42a9c58daf5d1f086206e5642dcc4689bbc99564499db6d1a5e6428e8fd56036d84df7e4f8194fd6ca7ab231bc847d91e3837072402b90132f615ac8f14534178e5456e58b75bd34d509d4b712883d8c32f63d6ac858113c398e4075f15c15853a41fe11dfc36c7d99c3ba3cf2f34192e85f1b69aa4f7f6352bdc4b252811b32a5a7a8146db675452b15aa110100002001c314002038180e088582c16828ca74bdba0714800c849e4e785e9b489328876106296308328400000000010080c16c04005a2115ea2c58096e98f0f71a278bf612e144763c5fea2406b60455f0d417156480b90b83124a9052b00856d6cb6e2d9e04f026a36ddabfd13b958984d8ecd5f6331834f1611b71076d94717dd863fd7fcdeebc0fb1e55f9761d0b9bd9647f16cec839ec547482bc05e9ac439d795fe04727137a78f60ebbcd451f566a6bf398c7c73b9de819567609df01c70f51b04c67596a5928b006ddab58fb703ee5ba69596de46c5c8fea9b6e12a60bd10bdd94ec899bb475ab04aadbafc57056eb974fd20663d5874e451f49e70edf603ba31e639e553aca0f1aaae3686433112a43416467caea3d8e8ab5ffa52ec47a4c7f222fc099235a7165b48a4421ce94eab726f289d177c26fe50e37db35c4b3213d8b1fbf6c3c1ce0c4ca941cc58f8f4004e1bae02139f29405a92e66c29b446af6c88cd2b2156307bcb788d0ec745b8f2c551c87feb5dd320b04f9422287a85badf1f6abcd4c27a209c8947c5dc019b865eb438d61f5024fced2b42889117ec2d7403c25c12e2b7a61e7a3d04cdc49b8a561721eaca42ee16b5a0610ef8712f73e88da0333aa9de5605742a2bdb6f5472f8b12502d6444e6036aebca42d699681ba6e90dae0145297f38121a7439117af05cee2919887a162018efde55063042e820245ec7622ef1b0f88d828b52c0d4d591970a2e263084964c5218daec72c9a77e884b606f5c58baf5b51f5cb5bbb456d4f5a459c8ea80861898fc5f947e28a2009213ae83dbe05446c7564006d5d827c23844906147ee0824ae9142971a1eb310b361fa91c5678a80679bb52d756e6d621d5ea402599645c24f46b0d5db8ced93b9d9816d5af2cc9fbfc50530bcc1f458611f3e2557f6a43849990a01ce3a14230898cccee030a5fea64a3c84613b5d3a584c8eb5dc163f765764b1556eed4e82f353c4886abffe214239a5b4332bc232761f1ca278093d807f90981063e3c107a9fba1df1be62051d2ff53434f3aefee6226ec0a4d44ea2a35617e4d33149e96914095da7cef75243da1d2f051355b2e18b0b1d905a23bf98d67bec6cfab5305c3aa39169e5ea180dfc8e32599c1391b4083fa310a53cfb37a56e9ee02f6d1c2e1c75ad05e0841e80c8b5c2903e0a8b84127a6ebece260f8fe51f7da214e759928ac0a4a0f3b32a53c8a6c203a7113f927d172dc00d9354a753b2b6bee733c5a8f4b107e298dd8f41813f9df87cd61b5955c6cfc5209020118971b511c81bb6373e428da2a1de89c39b9d3f01a17673382005263e57e03ed2bc2aae6fadbd25ca5d56dba97565e892151cebab916dc0c2eb22987885b20153014363feebc1bccf9ef41b137b5dba27883503dbf15e4846946a368e1b82016fa4c0f2efb176a29785708271189ab1313448cd37bdf70e2c6c09c25c86dae77edea5f9953cdb60fad2b4e2c612e030505d9250a71a1240f3e326e718d78ee695068a33c84de8da2905f8ce94033b3cf85672b62f7350e109788037ec31cc1dc9b3cd88701b84dacf2ae1d0e971831f1d3803949591aae0d25a3ddbb51311df775bfa9d49a39a58a966f62caa994843a5d64c628cc0cc48489e2ed6afefc60bf1785cc2ada3d33bdcf6a5994b78f99d329c334fd76b3ef5d24d89ca5f293b215d0fe3c24a987cb83104478ce84f61b2a56e251e859070ab59a301791eb3714a311f1a857b21c9f8081408da9beee7b9161416bc1c809e81739c03676f464a70f71d91b86273934dc29f433e0e9cc293b830530c2f8b8bd91ef0ba3fe8090d89eb0c5a16ee024e3829393945c5bd046a79efccbcb9d17927fc420972531b496f86c4173cd66f11667fc063687b87972a166a566635574afab2d150261e39a40373c0cd582c41e44cd06a6859d807fd303a7c5f9ef1bd758bd7e47eb2fd5fc4eb07f48e1b8e57ed562a5bd2b199d5abc9471442aa722a3e0fd615c4031949df890e0d6f8743d94f890fab495a4f4a6e5b7d30501e647fca24e7ddf632b23e20843c77f192d1008506c8188aec1ded0c5a49bd1bb6537dc289c0bbcc860127174d7fa2a2b8cc26214728c5bc864311ca753f6cccaa4b2c0983a2ffbb6e787faac5baa26398a8693ff86f69d10a6a9a308f7fa0c42d734f6f77bf55cbd9399290fac79575f21543b86b8d8b1e95d772ce41376bb7225b9102866bc878d265d737990aca8265dfd5061e8b61a052680ed7e729cad641495f03fa6538ec2f4d4deeb5b0122656ef435288c729dfbe00e887df9fce3ba992fca023b04eec64c69a626deb50bef932b895fe5352abdaef8cc8fd2b3127b1980d5558f4060c5e3f490a3102f1eb0c7e17360e6bfe95ce94f240830ca6c762b3c5762f47d7ca73eea5bdd929c00fad2f12bf2646d36ee82f9c34a74be7ed5d1038a50a1d9ef2c282198d9a18952f419fee9276731b218f810c1cf25de45f14a6d2317289c41c13474bfb86c14133fbb11da6fe95cbbe95b2c93f24db94bf3980417476a8d2d5b71adc81b6dc7429097eb1d6a466f4ecec90f5c557ea87d22e62e5f4cb8d4e097dab33ca2852eeb1293632dcd7b58e817f77ac69f3ca5eca9859099b8d43065f858e9b8875f122d3c0612f21d9f0d497774a8548f069b7c9038c3e92f57d46d4294e29997e0d03386d3ae2081f15ce3b1e6659d9991798802f960946f06f4df2a1b86c7724701f1c9b6853eb5810236a921d0848d60bed5946c885076152ad915a5307683eb64d99e393c69924e2f2923bd2d3c06eff7405cf56f2974c0d7bc9ad801acf52eabe98739edba1fce40323396b438290e3756a6a15d38887c86e3ec828bb4a32b8a0f4c1be6f8f8b0aa011ba23d9d417e43e7fc01d112187780534f5d99ac4de008dd8c5343411f0237864266366b214f2d6cbd8a10e59997c55d8ed9764926067b8b93ea587521740700b28870154e238c4b92ccafb8d28104dadb68c12bbe94ac82622c4061755e40e9f49826f1a2aca12ab395b1f9b53203301b152005ee1f2329e542f1a08c7015981c53ed8111eaf1ffbd499c3774b96e8f686c541e73b75545d04ecad1e371e09d22677eea3de52fcea4045268619dc7bb374a5259c36ad5a55f56f02154018bd3074321f9112c9ee59046a916af5bbea3497a7b6e4842e44856cd4ae870db7c38eaed9d15bf7c42a4b885466d5a93b482f9283b85569455724213df307e726588dd0d176727fea4c7ad9aa69a5d876de37b1354e7845be6b76a451991a0d34cd4686c23adc39f44dc7183cc5134349ae607026063ff681c2e0538dbc62081060f424f4516ffa33372a66ebc0e4da1f8fbe2c5fd8f6f3d8136fc09979e82ac3bbb32d198423151cb6b93804a0cff03f3a762bb087b614175dbbcd57d2b67fed51416a9c92e6cf1d06235119055d19cd99b01ce28428287047f9ebae58dfa954c442fea70cd9690de66e84b1989d27c9e4e64f3746336a99fa058435324c7df06d7d3627aac95cbe413b9064cfdc167b5c6e1bfaf7490a703aded59bcb85658d3d3ad54ace45e8b4be92a0515b4f2db9a22925de685c9ddee3d0f306c0074e590fb82eb36b5f6138c4e95ea9a885ab91f42fbb46ca00b01f1ed666f5079b775baae522c8ce4c3e12b706f15b48e75ae146b7e9eda8141afc4c2c4bb6af959c016dadf02e669240cc48ad501d88cf0d87e8787ea053718b6eece155844c88bca1bb693f6aa256b359906b1c7e4d7ffb99c27d56b7862410741fcc3b90a23304aae1eedaf7088ecdfaf0da9f9a2e19a41aaf179448d05b34167dea8f564eeb11ad6340ea8319d19ae1adff317a3c2141ad27f886be2439a7a27dc8d4e81f7d4c31e10046d0af46e06f7139f09701dd485b5963736e46a690790cca1edf12bd625838e3db32f03108a7b33e5f92de8b417f7147e0a152c1f31bd3fc0914589c09c336d3e8984c0473a14359b4c798c7e6c9d3e2325aa6237625527af42d6f117c616b08d0159c13548053faedd2bcd2b1be1624e435b55175da126ecef25219e71dbe855f744accc435d690ec3364e815bc5d6220b69a5f59d10c48aa97b9ba34937cb8bfa6a2560d6e3bb1fae79271120b071f0773ab3f9db141ea0ffffb14403fbc95ebd643d3f470b22bab8b3b9644e4a7660835e1aeef63bf8c959afaee2ac045012b051f4f493e130098cfdfb7592b79422e615f8adcf2e669204a4e6cf406eb736575d966c86e19c7ffb3e1400342a94a81dd7fd5193845254ef148a1e684c768ee12e597616d7476ada48c3e8acafd558bd967d557ce8ea45d040170de6df7d1edb5bc93798513dd3a454984d372c3bdcbda4241ba874127ecc80f5f46949d59b0aadf735b3e109358a080983bc8f8bfe5f78feca07c286bfbabcaba9b6eb7343877044f077de42c5f5d994ef76d1c1265e260cd2a39e1ad407e3092d33b0c2d131e782b1f6654ed4cb9974dc716c9ba76612ede74e2c06a870f45d16a7ab19491f261e640f4fecdb510b7a6627c88dd2fa0ca33a2bbbb2f6a718dd7b697ab744054ab6a1ab46aae16c148d0d5a43e55667373281fd5d5e779a6322b650eec7f8f84535704232cc7d352ec2625893606d7683d0ca15dc85479a3b5cad2986d0c1890534f5e20ef4a00d0504edb4b59f34fa236d12f9bf426f721799e9a0626b9374f295d58bae881b1271d88e20506bff3040e1ed7f002764b8c81225474e4a7885048307b86e15f9336063b2f40edd696752376a9bd8af49ea8bfda6651214117fa042900e1502f17391106aa7814f3548a11f0b8d60e4ca3d280ac3f6280e0a35855ae335b9a87477ac997452e269e58671448fdc9bcbbb8834f03977e1bc123cb6d7de5d856f123a48a9455fa64f59189e6b3cef38c11716acd561c8f3e0a5c534abd783526ce3d9f222445ba337ea39c9b3677bdb652a4299d1fd619bcfd6c041bfb1e47698476f13020ebd99c35a38d5039527e145e71642a6dba38b3049978672a94d8a7bcc98070868a72101fe028500b74d6352cb343c016db0e9603afbd870e2504221d16d16da1a1c56b5f5986c365be2f08fbab537c97d6d3c25aea427a1f852a316b66bc843c9785b0d47024255153411208a97b097adec970bd50a2b735be4e211c5f85c6a4fe1d0ee494dfe18448f91d8e8814bfc3dc27c72a9d5dbbfd67fa70875b98bf3273ee2d2fa9c594f8808fab74962c7de7c3f538e350e8ccae1de7835bd852c70d6495bc1e8d60c9ebd10ce6818a24749433eafd4c258edebe1e61a553b7f35e433acccfcf0973791c22def1cfc6daaceb691b9241f73841655764cb39f4075b569815a10fe189c4d2a257778ba1d75a1a69f47a7d8b3271294fab67464230a6075bb1fe0866660cb97e3ec81443ea1628f4817982949ac8026981c5bac51446b094076d19b7406e273e02046c27f764e579758a1a02973c827d803c79742a7e0acbdcaeeac42956a0d104e51b046d6353bf0916d96be0d52e00abe00c67f900269689d58562da89c7789a762a8179ee144ef3186ee6c94a9816dfe9d6beedb8c42b53b216ee09dde6e16c122d02e10f4e9e1c43ead6d7d425feb12d7038e3270714cd2697ce373dbaf1eebf1dfb06d8a0afa5417b9bccfa23086e6455b93df3c73278d0c5e9b82446f4b9c5bd311872361030d3d151c6c19ba60ce73838d11090e57f0bf441f9386331d53289f4617e5f11006699f7ffec72c6cf0b6daa021267be6074920acdcbcbbf1f02e8e42dce3999e60d446ffcf72539e4d91e3565e121d1d031d29ba53af19450d6f239b7e62c4b13776b4f38401674c83d4c6bacb11b82271595ae2b25dc10aeaf7bb5fc9940eb812aafe37ce0b84806993eac1c0e0ddc8783788dd1b86f9d8ae23ebadecd5f5a00683c6ff138a28697aa45eb2f343aba62cb8168dd265c1592e4ddddd123ca1c411a429585fd324fc72515f4f324df68f83594830ca8d846b2bc0eec46db2b8b471a4d0f2a4ac8079df6e37f888624d92388dfd6986395cf81302d7a3711a4bf74b989be3dc801715d903f9fcc08d34f5da08a1929e3f58f911b968dd6faa31c1edde2ed5fa805de5eb6e2c8085aabec04a6d53f2df65a6085d7afebc8f6cb4da0079a2f567219c1973324ab794d458b2aebf05d09b56c94de8e5e3fb81a18d45f010cc470211801149dd93904f4cd7d68749cb2339edddea2b82b4da4fd7dcc5088a553358aa30e9f206eaf5cd595ad4abe50d9fec523f1c6c574948fa60fd54f4893eacfd622d3e1c4b36b7e38f01be1e0f226d2590dcc2841920fa51adfea42aa96a4c6fedc0d7d6470444cfdefa2037e8519c2370d68f11885a187e724b5e8690225371887473729458724016af392e553558cc65871ddf4d2c4ca29e546629f98401042de64c7c19592524a25513b6f3d73346e5d68867e57d5724da0079b019466c4814959afbe72506553e1557df343c84f7000baca3ddb8059ae49b3de053ed6dc2b7e582518e0e0bd20ccdf27bdec84ed7a519e815c776e622b2f468a234cce9340103ab147302a6bb5842e7ddf27b604539c25330b3e4543563ba0ba42f82be76f6d2951692e1f7ba0328815a24a4be7154c54b19b3862d86f1e3cc6c2012322e71e2d9fc1c3103ac68737c45a1410227520fbfd5626ba76e297bcc385fd4fa84d552d18897cd7adb55421b58cb8bf022d9f7f1f08a270ed9cc1b19a888c370d2c2b428e879dea03ea7ae0a956a90268408718d9509941087bb6085851df7270660a5e579a5f0cd3f529f5aefc9c5efa9936c157cf41ae298fe0d5d30516bd5fc905516eae6a6494e68be4a28c9b41b377cb547a6d3c9c035e3f57b98c567a395f2440645da78869472c7becc69fcd0e2f089cbf2ec2f7b46f7480b39cbebd088aedf0a8e64444e4b9f916098280093d224750c0dc98bf9cad512d64c9bedc9cef7f6797e7b9a396c12e31a56b14ccf981e826c13e4d05624de6d67d12d655408d8d6425df8784fa611e2bd5ad4431f1d24d74f227e7f4769f9376a633140772544f32cc2b8c0f241b86671b8c4e26c9c5604aa262d7e834fc0989725e84e93d519f9d4f959ca8f257da34bfc5ea6ca5bf655c3862cb754921e008da464a30604470b46ab7c9262a2402801881c9325bb9821d63995cb5d07044005a644696f9fe03902fc23bb5c687a88fa05fd6a7086804ca5e88210b0ce44b715752c8ccd5f21142a120e69ec2d761df3773b8685b59027ec7a36f20358d9821eb514b78388d4fe0a70589cc1672f613d115cb1fcbffd520b95dd8f1d46e0ac529df5fe6e3288cb78d85280b4182ba7aea0bcca133d4e4a89e4a324e5fa37881a6b8d0c119b0f8a28fc2a0219c9b7bfa840c0d456ceeaff00a9ec9a21b0c37cc2e6e3387851d192b09120982d3715e7a8e36c75d1fc126364ca74d6219dcbb977ea080517b6435d983cd1a781ffc7ab5d2fc55c85b400d1d2567c2d34a79c8ce1ed699e44f44d72b4d1bddfdaad45b9cb83c1cec6345695d9dbcb48a9e5d65bafb8c9e0e5b45d02fead87631757aa3b589cb105a944611157dd9ea77445a8cfd1ece23c2aa434fa0fbc6e9d1159d3c80814ee692c5a2934bfe5800f65ea72d3a761278a9bc500ed9e39d64da29abd21b80f0068a0d63ec1e3c28e3ebff8c1e7dc9dca4507d2c070f3e47f39ca2f6fed40fbec6c22a90c6e6286bda1358e80e9f915315d907934a9d6db334a996db2827a1c9d2d5612722e69dac114bb1883892fb93da54a2163742f59b2c940f9d80b221ec050899dffa0f977a994cb5137e553b60232a015bf1cae4376c410285ccc3cb6cb7978fb00959dd7396b2ad77940b55712ad31922d6b0d6c4237078f9942eaa48977d3ef70660ae649c41f609c4ed6e7c1baada440ab92ada919e50edf321d5172dc3e1280b2a0fe3c6ed38b0696fb905a3d0e76adc7b6c72e9113c0c111d455900ca7f333fa79197646c89d3c30a0e7a0b2a8d863a689de6c084181b475101844323c7410c0509724440ad1525a1de0c97efcdbbb6d78b6c368c3eed307467f3fbd61d9e56c8dc9499f49d19f50dce05ecf56c320036671c08e1e4c184f8215845682103c5471c24de0ef27d7d2d2fb6117ff70d030613470100f032a73f60b0715725a15ad0d42555e6c881b6eb6bbe15ac22e16093f5bef98fb8fde5a9c17018cc0e9654caf35960159c53523fc87dec839f8bea0b2e8e1cb9b19c0b390169187086e914fd1ca0907c82c4679746cb7c9cff659660c0c0dbe72900f53c15142d8176aa192bc46f4eae253c70e6cb6b0864be2bea332f13d5d0dc6d9a93b9cc8d795e865135e0f95b306bd59e2ed0b227f41a15cf2fc27afb1dc7ea837570ada51a92accabbfa765d219707a81b342b77a49745b3578a4c332a276081f6c6496196f7b236ac8840cfc7c32044dfa2e97df9bb5561c5d89f0cdba686ca79a1dbcde71983282a8377af1f682a601ad2a9c819703f2c78def9d5301fe6c018257dc8b6451fc12fe6152865c4c8b712beb304e2354750fbaaaf51f667fa1dbf899f8332c74c218352979efc39349c0a05ba01951b78b282824a28fb3e9b644041a1bb7b37089f85604dbfd839041b989596dd7e0e4cb5bf448ee04fadf12f09dd295d6904d714300594d3942d18b496d66bcc6f0b70bbd43c4b941cb8468ff1dc2997ce31c04133eccff26759f9d49e53905c65168e92eac3da3749ca0d4eec11edb01f1b4cf2bb993d747d7874949e0ececd9e2359392d58084e67fa1cd0ee7adfae215e583bc5b77d35c28e6ed4256ac3eac39286452e37d2c3a480e589c0f3c3a1a25639f44c4bf6e11ccb35a2446ddea82aa5322072ac40a2ea225492ea933e721d64523a33878fa059a24a7de8d5f0a92f4914412c093b21ceaa31658905e99ac99792866c673635076017c104d7208ea23aa0bbb8465057456e8d8c092ca08f8fc1232b12f402d6eab0c83a90022ea2a0bb224de6fcb1f464c7baaad06221ce7546f3ec0ccaa63cec72007d020c8d6c8a9a1f48748222dc3e0dad3710790053464faa888e77e43d13f80db98382108bc5e6dfa2277d865f5c21f4411ab7f8227a0298bca7a123a1837c8bdad7d925130b5c1bf3753d7cecda51536bffa5b1f73baceb23b520c709657ddfeebc716bf0d76ef1338025a710d5430188eced3d0e48673b2575c073da9b79165a59b73b709fdde70b127f5284a0acd5af4fb390d9f68d068f999ba15a49a50a10139b9cb84e4a74e1e3cb2af81c97ac2905eb790235176d548043ab7e88e80ba71b6de9c3f4c669a647448c37ebb74c680687ccd637222b5d9f590a1a52984e0f7586aa965bc3edd29be29cecf2c43ce481e481a24b75bc564001a86827e6f7d87036eab46089341fc4ac3819d75928875f84c8234e90e9f9ae867cff00306fe1f99ba0e9ae81fe88a1072938c2f7ad95aeaa1f4997fab3b5ac5fa7828b1c9246ebe2a0b8180d10c427db7c232539e76217687f3f6dd7484b29213308bddb2a37450b8de094bb9a33323686aa9699d048c4e7d8e4de3e79a9f564677f281eaa5d29d253197c8144330cb3d01b140c5eada0a5435857aab1cb6aee0975b68b160b2d5e1e23f91d0716ddac9d31bd7908393865ad30d4f73cf507797295d18896439f318d95354ec86639f5371b519407f02bc7b5a1826cd385de3ad291ef1fc0204dde4c3b448a888621479ad87315ec92e57eb3473620db0cfb415400f1d159aaa8df3eff77fbff3ff6f79fecef7f256bc19ec69e7dc039f348d9b7aabfc4cd9985b00e25a283b6d32084c9589d5d3a91384c98953a614fcb43188325a913bc1ca58e2d681c00dd3e089a5bc8e57ac642820db3c0cc65e168a5d4a47f9149a08028df993942a52d96a45818dc83f9446692a2ff94b838ad860e56b1b8112464cc135a76e25a0dda3882616330d0902fa47ac7b7181df18482c36098a95750e9926f6630e5098a46826026dfa0a28be7669caccd251aa83173e10004eecd91016f2d832751886f2d6989cd4e4f4b4c165cbb5f7e53c62b4c982998a6a2179cc4742fa046bb7126c49930ccf63ffbc27a93c9acd78d61629a9dd8436367f129798f649375be483e1a53140ce133374c16aeb6abaff7302350beac13164e29498533331a7e1b12be6eb55c665333682834eeba835369eef1bf11577c5192d82fe992457c68f3d844dfa9c01900d700d689cdaff570e167c265a15df9951bf1c50157925749e6911ec0a007202897031019b6424ef4e1d3952e2d1053a76c02804f7a1e577aad7f5e6f7cb96f8a8410d01041c72dfcef0d968f402bcf740578b41361d1eb05352f08cdc6644bb629b6b0dad18dc6253cd4818dcd9448645614e143a793cbfb156e448bcc459cb2d5812831d3df4837394437c6fbdf6e1bc958fd4dc09c930e6b5cab603c9e65274c44ebb237b6029c194f3782ed2391cb50caf85e65224d859e12c607379ec3cdeafc049851887280f80fe383a31166eee7f99e1c3f62f8d0ce38863611fd0b1d4a7a4a347c3670344efca1d2a6805fb5226f5f32c6878f0bfffbdcf4fa3ad8dc0883a2ca4bcf07fc9bd0b927d9909c32cd81d0f0ff46c11653572a2310d5d10387a6821aaba7744bf0ac0333a04c006a3f58d1cbf93dc8e54b35e65f7c89f35f576b923d962f749508f4fae30edd94e6f1c0ef8a6f80f2d83a587a1797c57052d640b64e94de81c8aed0d347d17d868dd70540bec67abe00d043232e5e5326b5f475317f859aa6aa6c69f0635746ceb706758445962a679c7849bb39750664d03b3690306890a030ac1e1d76bba2ab8f32a3a6699f4caf4fc63fbf139dee0c32f3ba2789ca00693d2d51a45851845e5867e7e8932f90693a699ce72f57aa4073e1739b4c70067b9e706349d95d2afc09ad0764defa0641fc5f196272189d0983add9e6145692a665d357ebd94edc20eb9978c163410ef02a56f17398b789155b5058b59f71e2e4d37436a43861be35c7fd2b0aa59f43bd574d2aeb9217635d3e2968cc10d5134afa4d5669e1a6118bc33ac0631a12087131416499b601ccad0f02429d1640f008404f18f346356cdbb95edc49e819a190b15ca485d88919c40c2f0ae288785704faa55181930a8132364af84b20a01921b9b0203e5ec49a27226a1240dfe1b05f0f6f5876886f3e49c4f48ce7b2ace4fb329466720bc21df67933fcde538880b66b0c6119649b3c1ead2eed6072093d11ab68fcb986b7034dfa51eb0eaa2671a675c6f77a15e8dde635eb57fa76179966eca3025c2522be6afef5e557dcf8ca8d99be7e30dc4ca09720fba2902dc3aec1b7f80bce5b905428be8a4b720b0543885884aaf9b6de55a716ad570a1c7c31da5ee1d0077d35e6f44f2e6e6756b36c4a2a33decf9fc1cd00413191ccf829d57d0730c721ccfbd5b0a64ff03a8978d8e16a62e41c39720c30e82f774e9e302c3a6b56783a1f738478187023aa22593aa82be36845ad46adc91e1c51f3adf19565ad8b1efa7eba749ada958b94baaf9eaaeb940e4ba7f85730452d8ee114f9f0c7cf991b879ef575c40594b9dfb95b9caf0f293a6ecde1573357fdc08541936ddb8b37be12344aa3bedb028ff8f73966c56cffae4c22d41e147e545636a255a2a971ac384879fec4f9863b9e95825418171ece6658a94373c67d7ce9a583bd8a6e80e03c658638d4bd7b33986ff7615008827b31cd48bedd58621a300611d59883e43e78d138ab47a05e8e559c1fd0249b0414545be8c1a7d4ef5062f1059981d7616e0655245733411407c55d9f2d951331edea96bf72556d4f692c82db4e26b2e8ef4cad6875520804ed9bb953b4b85203ccd8cd81982062df0179b5638e6ee0988e56f3ab1090845797401b2917d8270df7c7084432135294092a61bd96481c833fc36fd409f6acea8a7225b5b7dc709f377cb7ac14ccccde5ab3f7d56fac1978781eef681cc010b148775fe1b9340663f16773e5a94ad244ac8c977e8543cb6cc2e068e668c21433afaea9e8de404435b5aba337099e42ea8994c29ff15c4bddeb0eadf710ca13473ad40c91fec3a2c931acaf1e9173abd60b681b40d9c6e4e13fdf275d625fd09b1260a0f2fbd41697cf274b36f5e79ad324d9320230558747207c13c242b8dbe5966411375b2a1797197c783ae7c03f8db6ec9df2448cd9b8ba17065745fa54f31db914636bf7d8ec00508fa38ddf09d1bc00360a66ff171e33533913a35a8e3795ff2e18e2225e96beb5f0c7fd631c3f5b9ae2855deccd7a353277b35db1d3106c693cd8d1d28e2e1a831be29d5839b915b94a98c7451902d69955f3c6881badffb0bce8ce0866163f0fe87631748a7040b19fb9031d34c9239fec90de2b274b3b2707cc3610f8e2113de0bb0a38789c3b16240c806713853c6d4585244b6866b0c48c5b2d01355695c81a560490756157c697c391c17487a6f122c305ef41bd90ce4939a6b0869abd636fcb8954f6697f78c41eb2f84489f7ec3f4ec3029fad1f4d56ac03d4eb6bf13b508dd805e6ca7a0f11bb3eb921f2813e020a7e377bafa67b486c0e418401bbccbeaabfd32d13becdd26f907fce48c58b03f530fe72f64e118d0f37e5478aba9792aacdfea459185417186a6a921aa50b79ba520b9a60a4c8ccb3537d4263da032b10c80d2f6a6f5209dfbc8fd5c64df7a92cd36990d93e8bacffb0c0c546cb036c4938cd9cddd24d1fa2d8d20b8b97aad1a2709ef2d3c6e227a7e5eb4fb898621f3b2f571e104eb2275895f1699e4c9b986f4b23e43552c0f2f971abe1d8eb6b0b998201b88ebd92c0026ac9e3aef6668a04769f0284e4374ce1acc276a267f928465add089bae8b97f9b2cc7ad7c82898aad4e4803b54605dc3149b72a883567d164d68d71a83b5a503ac4cac9fbe93992320855e25199759b2d25f45348fee564b13b68ccf488186269aaf7755a46efdc5390fc998b02a77cf04147d0ca96cc96df662cb6017e05ee15d7821145ad636d554a16bfe178cbe47c1d280af9f85ded36cdcb74e91be3f18a395944da9daf0cdb6af5ca579daf8c2dfca031cd6be1b8a061813583219c63e386afe49e7a3a2e9a0837f489383600ff8607ff0c28c889d152d06b5fdc70dfeb1803889f39ada318c289d2550ae210310ffce090f50cdd64a19f27481ebbaec6cd5feea08c0bed2f25f9a0cf9dc4b984a6dacdfce943efbe0a656fcf36cd0479490d43920aa7852a7c51726240bc4ff69478535aa4bcefaa9a98db417eab067656bd9aee36e6f6ec65a858ef70a85d262ed3b6050dbd387da847cc5f972fd09d34ae54d67db989b4129771bb9d715ce56435472c5f1f547e8211873b80dcf7d9c6041415960dad14497009a9f39b2ea09e04b304e48e46c4b31c4d9b1bb0add18d0aea233afa0bfc878f91bd3e609b2636ad1359c4dd4a7c0bc42e0a20dfd9136170cc89a75e3d1bdd1e5a320ab5c55070c4974f8a26e74d5893ca243192730673020f10e7040f438047183f6cc9d25282e73cfd3b7d7c6e0585df0690c2a6799f9760b26bfbca2124a7a8d680c6cb20fd9d2576b77e4091343cfc9776eff59a0c06e01da0c0465f9cc01d5b2e3a21c73f33d35a2ab0ff23dbcccdf11b4e66ac8f6402987a1decc4b1d6e70c2a74981716532e7c242020c36f1af4dee0e280c3e6bd30b1ef5cd1b3af7b1205edf80aafb5ef16a1742f5e3833cbd6c09406be57b5e1fffd493806534cd3c82671320c4ffec06f50363ab7e87278dd70db3f6f95917ca61f9fc22c7e1c454de6e9b5ea5327fc4eb40a8241e08eed635c5e3ee6257da9be34eaa6fe1086f3273c639e7f8e6ab96462495de09125a6aecab041cfd8ce9379c8b9b66c9bf45b390426f4456cf9cd2cb0f5ae123a2c899abbda80728d78693cce541ccf1eb9502f95931efedb6c4324f71b308857ae81ee24dc87e876cf7555984c8df02f9a561dd2a83146d40a2a15ac62cc56a482e229ad900796ee423cef55e899dd82501253a1ea0074bf86def530938bc7c13eaecf306793b8183d3a88b5021f833e59a554ee51938ddd837886b15fd6df89cc751c23ffc163d9c58124d07cd0cf7302d8f9d81a7809b0cd0c39dc6f583b59eacaf8bc848ee926af36e6eb45759de79d3d9be7ab911d1986922f3b93b9113a72300335b9a29525068916c8f5d2111f939bed55757aa9d878ac60d464077e39e9e8706f71471de681703c733feda677617ab58fc191d361a4b2822bbda4af8538241b0949e904cb9356b8748b6399d773c4fdaa33b9e89980ee0d0bea2c0217fd92b26d06321b4fe2eab2cf99deafc2159da22b04eed5035ead11275c40a7ef40f005c76ea7980715126a80a7c810514be90ba293123c623c81dbe298a69ede092b49096b88966e5c4d9800baa32f474c962c36d64085da25bea275331bf849780cdb1b705f6ac98f063bea832b406e0ad43a43c0d9e195f5d6b9994315173c73af54639971501c49081ef3d90511bd5ecf1d4bd375b35b11e79831f84572e8bbd269726927f10c865d490b232e6545521499b55ffb64d18f1f7e2ccb5993ddf95ca52c42ff9f06e3d2c585251352f8d1a7a343ba48a59f14159636791e1c36c65d45041a62173a6550d3793ab82e9e848af5d626ff8e69e620748c4a225c4e28eab9d475bdfdba41c04a6f28f6821f99aaaa16c43a24a30ae56e3154bbe365b0d14b6be6f7fd8327fbebf47818605128279a9bd72e6827a383ea2dcbbd30187d2ba9998ac63cc5dda9c365d9011538b3825f257e9dff0d09c4579dba09f53101aec4e3526e51d5acfb2498298d7d5d213b548b52ec6a8d6f1aa083d9d25e627076eea5d884889e76768d4b9b8bd570470a8a1f16d27db86d4900285c331d2e7295f0371b86552514756d76882ac11018a54a3801a29c47a165ab7a0727941ac9188a428758a0b6c5bf24d9895258766c807e141d3a8a5cd8d3637c21ee702af00a26b46370b12786dd17055f50c7aa91918ea9977635e3ba16d60494ecda1280d00c8651bcb54e4d5983648aedb2ea286da07a2b7b4c0dbd6b12ba2864a62d5817a0f628c06f991aaf1c3833b50f86d81ed86975c3a51b7e8d60bc8e0cdf2284dd6f50ca6300d17fd489744a3ba4b4ee4d3728c1a6669e8a3cf67bf3dbc2ce6e91a5afc9810377d57ee611dd7a032095f0d26fb98ca53a1a4aa4590d3faff5f5cf9d85f007797399a182649f052d8e255f49e51c239ede522e0538ac8f6511314725bed276ec51cc6bd78833198938caf243eabde61096a2355eb794537d58b960df911c9aadadfa52d326d0298cbe717b8dcfe433dc4b94258a1e5ae0b9f008aecbc0d49c8879b1d6871e6154131e328b138fa0c2a99a8389cfb6eb5351de6b240861fd0f8b0f6559addbb757a1bbbcdea77040c928061b7ebf610eb83fe19a7cb254bf6ff8fb7212b6df101885682983da192a4831a3a354e35c4c98989060547a642db622472e0b74cee1a0986390fe44ae654f83614e23be4f07224f5aed91375e1e20de9af6cebe9514b8ce143d8e308e447f25502be1639b0bece2d829b2a53d50cead07f142f8ff424a5bda5bacf1191c74cd243b05df5d7828b35bccda5f1ab49f8cd31c57018b6cdd99e0f6b36b56b26e978a1973f69f054c45057a3b48a81524a44ab5bb2fc307d15a6db2984e5f63b0aea4b8d22c9f96fa5e90ae373b696b90ca8a6463c0100e780d034bd6665ecd428232655da61ece0eb51932fda726116aa66aa5534b6751db8bea9d0520d1e33b93fa1c7adfee4aa60744baee54c93d9734b3ed887f09720c738c9241303b228945f6d5acf4fa7b0a82cfcb4239bc5f0229b39c8b4a91d56aa04ad2c5ddf23d8dd1ba50e85b6ad63cb4622d1106430252625797b2aedc7021e20c6c5f5d5d935929cde345f4f367ede25bb30e37c58751356e0b2e38cade85317b943006e12f801e5f500744c404c139edafe1587bb825c40065f8ea4c8f458a552a5b6c63ca68d898e2c2631f8df3fa68b8ccd084bfeb98f921509b4a02ce13e47e943ca72ab90cadb5978be6e1be61bb0bd583f9c9cdb84d971b04464dca24199e7e6570c2dbc63be4717d113d79328ddf1650cf4d0d9a2aa2082eaebd35f719d6301e8cdea09a2fd5a3b5206a890db71f806c78db0b614a3e4457b48d4f0f8408ea6b584ea77b2072d815e35d05d6fdd06e8c703161c96d75b5b464adeb34248a695d24daa6328eace995aec890da8045e0ecca0f77b725a7f1de0eb9db9ca36f8b2092cfeeb3760a0f7052f35c17f2152b709f8acc2e9ce734168a9e73da6d227a247a1374faeaa3ee1145a015ef701d81efeaef7636b778c6b625dc8db4e1c92c414b276e2ca01907cde6b4f4a92c6a33ed089cf799a037161c9c0366e00662fe2396686212bcffb6e8788e4b7bb7c1cda4b2851a89ed67670618750d8716ca77c608e162a27f21945cd727e5692615e10761ef7941d2fcd36991c4e9ac04ca9fcc5d9c02e1751e7fc939016969e8560bf5656bcc2fc55463ef0c3feefaa0fb5e28ac9ee25b9e8d60aa22b00fbc7f9d74ac8d7d3ad33c8f69dc95796deb851c979f8d4a6a3eb1bc867a9c910fa679a628888c72ab5bab4439e40ccbe93087d7803485a488efa8d46cfdf583a4b8abf0e3d2b7760b3a35bc601b73552ed8073a066389e83ca0cb10960ebb898def56b30f2df75c627abef3e0ab47a5dd8f94f570a9a9f782ccee7ed4e7919efcd8e746777e823f7d92ae648ff21968d407d44790b00f99bbddcdc6da1d9fc0f4f14b488d38a36f1663e5043e2cb85a4919a15989045062c9c09aaa0c4480a4d1874a7a59d111b67ac28740dc0b4c3cf5491d806588453ac98ac80d311453395eea010106ce5399a3f30bb402cd3ea26ed1ca7ccf0115d295b18a5d0b7b97aef112dae3743d8d3acd6ab7455fb8f6815b38a6ca006e1d552145f110de568c6b6acb2365d8e0aa86ea755cb6a7f09ab1342082435ab3e8c416f51a4b891110aaea51fe27d1beb5f3c4c7ebdba0def3577c2fc5035f3f83a2a36b954a612588a15b41c70c5f794ce3bd6560fea5df917c719da5a80559ca8cce1f5b23c1299ba94d9ea19654ab2282bf66425722a9a52fabbbf4c74a12802cc54ee49ab91884d64d79f51291806a0a7a2227deb3f50cfb9c9fe890e4253c29c1e13694aeba38a31a714c969c675b1f34df3c4dd3e4390028aa582424b8973ed2359f49d29e7e34e0600a48b14325b8302950e143b0e1bad30831bd1ede9b9886595a88bda54b3643cd11c2cc8d992d881a92cd96c374a5262339d14929481a338e372578a4027279a7a0f6ff34145e287682a39c503e8d0e1316809d6fe6f69c79e737b8ef308c74d595638eb6446f9bde938a5f73807ab422914843f7a997c33e8747b87adeb259f6f8fefae851eaab487642429d2fbf574536cb727732397cc2ea281d48b470d4c04e11d3dc39ab6c1d04bc31e3f49cabf5ac4e1aad3a8a970d1d2cc7d005b119e3150dd858a0490d3c8d02b1a031d384b9d5387b055e2bd064f2c61ba2eabd52c7e86e744f95ab3fcf8d07b04ec25b00514b3a6b6f2a430dcc72f4532d586bb8bf43678173dcbeaded711e82754e92bc6d5db62162dbb5838fcdd433d51d1db0d144d9c08cce9e76d31a4ad345d5c4a4de3b578ddb43119c999c5479a64147a5b73785e4fe2a2faf4fc4e4bb99d60608faddd40009bfe412a141cc43d55f86f70da928e29cfe8d78b97f2bca44ba4104e6bd8a3c1afe7678e5a3d74860bc515241ebc88c4b0376061b19cd8cf13a4df4ecc2f6182d5465a37343d421f99223c50b5445b811316621a201a77848414196a819dc77eba6633df9dd4433bf63480749c00e927874899cfc71500bd31c6de5c4bd9bab120fe3579d62de1270822134b7d4550d00a055e488d3eb525d0e4f04253b101936536d3bf2af7905843a4abe30a86bf6c212c78a6ab8e97c2d97ed9cb537706654b941ba647c796db78f334668eaf15c2b530d673b36d9d7c6a4687e88e9eb814fd57bcc26c90633f20c216ec40bb01ae8fe147f4782e1367e21e5c2c97876cceb8b6471ddd40402918dde059bc060c36deb77a0adfb43d2b4015e54b735a1c4fed56ee0403ae65b97d727f192e5d67ae09e2f55f203fe6a0a2eb8903c84c315a164981f6af5866e760c1865f036ce0c5e51e87544c90ad5f7a354cef65ae5131a94152c053fdb05eacb50d3e61c1d08e43751f4225b6d7e940da619ac6d58895bfae95b6729cb41eb067af7af7ae20f10783973766b50bf9fa3297a74ff3756c2fdccd0f1b44a0850648f4241cf0d27b4e048889ac3819ee20ebdaddd0d21dccc6bf66c39d9702835736a8f8cd2e2336c81606855e65ab3c357cb8f075a1f74a61b5dbff49ea5b41c2e882484ffe9941e210ad8e85a8c1a500b891a1ed39c2d0043deeefc9493fde48fb332a253f42b43983377986d289a3a6545bc0a853f1ec17ad820a4db74728c458f14c6c5280852f3ab759a532bc9bdd103b62fc978e79a0dd3f729f52415af8fbe0b5b02a9b23056a3e527adc4422b9ec0517327351157cde6fc92988559ba6b701d04a444ad2f54cca053b7ced3542be16859c7fae3d02225694a46e2d35ead0fefedd54afd7692b4c85ef6a0b833682c44cd5ba6e426a3d0292e4355bad4b1aef5ebc6a532bfbc744eb79258d5fdb933875b2337ed1544b825ec003d3d83831677d510a05bfaeb7f64d7a30a7f9b0b1427cc7147366f793963426d8046efe19b0968abc5eab3a605a7e1d5305bf26b1d0a37517223ec2b47fb729366529e81bd1d1f9c9506de1a4f1b34c545901a82e531990a54f21e81f19e1df44b5e4f71e02f2c5ed91b76dc97e864fc444577035cbc5b52826a1a7e7bebd195e36eb2d9ecde4cc91c9832f9da8b7933b73828fbe7e1e5ddf311332046284bdb515adcdf871a095620ce44718d3ae4a808d82242d806b65b5d4fd1179c8fcb86b85a558cad6ab47caf5306e3dbfa25d18157cb312991323f94a837d7583c51ae6a7bf4a858a1dfd3e53b4c1525657359109b68d4d73b0746a42dabf9371a2d6a4c758432d0e13aa2055dfa8c0708ec5a202ce1149a42caa161fe29a45eb83631a7eb4bca721c8dca2bf04f17a7dc0cc0e8bec484a488709b404d1f86f7f8a36813c06890fd23e97a68e3944bcd80a9672740a1e0795255b547a31ab5172f56ae76086a9bba0bf22357b794e416e614d70cb6840837f4e8d475121c4e5eb2f3c908f8bb43971c4e450f3619b72bb47f5d5dd8d8f65c3373324254239ab5a3a30dfa928fa1eb04cc6f12ff7243c1cbc0a869c46c19556794001d9709684fb09cfb286c130cdb0d3012eff24ade0b11b4354bc4ff972be82127bcd9457912df043cb29b755256bf3d5c0c70d28bd96f110beb99293c7d9689639b7bd67af942e910d4e915c332d82e9b0da02d3dbcdb6d46b6e6a56ad33b7fa11ea1a56154fc7f3f93a47e2c6204376a437559356f2347896fa6e9ab727bbfdbc627ca990b4189b2adc66da59a1459c5c167d828b15bea568730e799415550db513f1b4b125288da0a8b7ff4580867451b2bc18440f77dac09bd56a4043405d899594a59f7343af1dab0c181b72e071750af893d4a9b3cf1ae0599c231515ae118b596f4c4963c31ac23d1be8440dd23fd33f0b421848d45b747a8ea9e109c956dfdb70d0082c7ad096c2d957e473c67cafad77e301c52f20a40fb826743a7575bfcb05b2d4a459934b65376cdbd9f4391e9d52a18250f51edb90944744a19739483b07d4d6c40d1654ec1f8e3b2b92c738cf0e05ba7812fe34ef654797c15e0442eb27e4fcd10d57501a6c37081576d84145d885b13c06b5f91da0eeff22efcba05c0792a2c43c389e0cb2964dbf9a319ad2b9099dec390421f1c152dd047cc092c2e9080e58b90ae8876003455d78555da31e50ee8362133ddc1c4d1bb12b77ac3fc90d7f07c71a684ee8e909f455fac53b04e07d20b3933435472626b78e2c3d0ab6597e4ef29e439e9fe31d136ea55ba3c0fbb526ed78ee21a4da71df9e07753fd6cb1fca5d84eeabe555c9701a09f83cce2d845111fb01cde137496f4e073e654d587436f17cd61bd8e57ab04db8bbca5e42930fe1275ab265827a70679abc90cad2260b411179579d5f4119e934bdb64a3b130d2ceba0ecfa31ccc31319643c335d1a11c1227f492df4b5095e15232cfcc470f4fb32379ea85d1d108aa2214e257679d2ceb4fbdb668d4c6b133aa09d1b90424d4ec931fd6e33fa65ddced9dc11f0a04d2e9869bca0f9affa8242f27cd86a2ebf09297888179493fc8e5c6f6f2a06523df59578a04597c1574de93d194076f9cd12a1b290058574f0ab2fea0c10fd238f55501685a8c998e72ca742031e36ae99dbf60ad6fe90333e7dd00a5d13eed2c2d083d4a95a7610742909546bf23b3eeefa9264a5e93c9883834da79256f748a4a27ff649c1d1212df4606f60939bf018a60e9d1ef6d466bf5690d2a4d9b8e1512340ab1ccf66c4347e187e997bb4edc023c767324b21eb1865c4107366922a0eaed54a6febb0a69944a025ace9554efee9da1509253c3d7b5fa5dd41f09b22a683c3d3d74a1a575bb7fed8299734989e49a30f8ecebe68e2c6faa8589d15cac7e0bbe9c88d43152989634e30eb20abb1142b74f9a7557824906be459130e00cbdc375a6d2888463de1458afda3937ae62f90b022af2efc63520689c1e0df5c4a81ae9948c81652c7928e00050699944b108bf6ec646a4fb736b5c569c9aad9529c151a5bf34fd459bafddf615b13b9bf97afb2e5ee02226b5fc81b21f6095b0117398007e44dcc7489708147d50c09a2bd5321b52740f8ccce3eb6f91232d18f1aaf389ea7bb192de6da2cf233c14b5e40b5b83f23b72fd2af84f0bdc8dc04ddc8c0543e572c67b6152e84ffb0bcce1c5138b2cf71180116bd607941807090f90ccfcfa57c581f34729ac62276f3b49c0a9680a6d8f339c59229b491f78f424b718c5fe7673e035f248608132ff0b6b13d1c7060a2a172feee9644beb94d50ba148b5b5a78562c3a0c3100382e43931790acf5e2c13f70def72f2a19d0812b91974cba36dd88d5d082404900a498381453997423121e26f2a247144923f6b2670083c09316a4235fe01c84027f5faf0c188ef53319e6b3254ef00a022d674f5ad5eba216094bb590d4b5ff8996a7b2ba61c1c0487e922d2e52f95a517764264b944529b5bc5774bc8719a6c2abe3fe56b8cb0ad9630bb9d761b0f3e756911c7f1e5825c658db67076a843c9018087217dfa3f7df557a7e9b773c0ce330e61aa27d0d06252ea961948db20b85e87cbba59b0786651048363d585ba0c2181362a6a42cbbe4c476d97fa2f87fbe16890ed4db7ed1e9629fed46f2b4d499884296ec6669262f25952d83a3123a7377203e4e27e35ecba2bc07627cc01d9e4da9a56d1cd0a6aa6a7e0415695e012ebb682b9835d07c27c425e0932f7476574817e448394d1a741f6789f298a9da4b94a750f2e7da9ddf3572bee3cf3e0c8b13620f3f5135ad093f082b3e0410382605c6e8e75ce7bdd58eb672fc36ab6cef99773d6560c976d841ef862783993ebfbb332ed6f03a871e94d3dc337a426ddf2859bc7317330321d911f9f9f7a06ae15a259a51823339a602ac0268bd1775d94a6fd8fa5f05a32c5dac131ff9e29567b4af0ba06913a96510b862808a959875b11256026e017ddf8da3657aed1703a38b576ef783e2cd05f68f4b0bda3ca45fe9e6e2cd30492be9ee4a747122117d3380dea7a71c26cdd10adb7b7aa20bce3df9e45c2d43ce6e989f59b1c0733e30f01886d08b9575182df6d034fb103ad22c4228d9146d27a6c17dffe90e91efe18968a0830c649b87cacccb660ca17d6b69474415ff0cf9aa55110a0f4da8bd8b98b87a87de6d77ec41bd15ab6106e8ebce559c34bbe10071ec2db20095c44f35cdde4007b4a73d28b3a65eb80f16bc2d67dab4a79078f8af2347574fd0638b928ea23e2bfa4e9b12f33d77584a33077125b89fecf1a529e75300712c398df05fac1d0275ddd10137d7fc161819648b5bd127d0707841321082af0c0a1f982217ba8ad46600368faa4ed15755b0004f8ff4135c8364307e0bd50bebcb8c487ea3dbf942b6307a62c48389951878f2ea5d89e3b9150288710717a30c1f66cbc14228cf87ef0785cc4321e2623e50cf1fe0db08ef12d586e6880bb1c57531689dfae0ed2059c672266364dda5cdfd6b491266b03b0c0a5f4065fac2662366a0159a858b8392bc836a4792354158e3ccbf51bf05097e861eca11bcb5a92c3d725f27765843962dd8092bfe5e10a64664a5ca0f9c11331c3e13cdcadf5af97038999c3e68bdca2942cf8bdb94d25c121ecfa6f26942895a8872b8d5a4b4d1e27b34fe43870a5564a18035463ea7afde566ac45a84e41a84632bdb8e894777149ad86bf472384e8048fef946f966b169186fc5b2d8e953969b85d95547a31043c286aca7b9d85052c6c26462a13b44096cc0550c7d855d470cc36744262949e8dd9da17ae6207905adf925f3ab183031792c00bf96891eabcc4ac8da77d27dc739411696050dcf34bfc95963ec675d6042274ca4b833c24fd11ebf95089eb8ec73e98bff8ab95ac7d90a48d028cf8d03d9ea67497570fa9effd16b90ffdae4d90c27264626b368aae85c22fbcd1ad1d4cd9b23a0ffb31b1e287cc720c38f6e3ee39985084e49ca79ac20029722b6c26627aac7457c02fa9392ac259b29ac0a25d41fb03c42550d34432ad83d3219e237980fa30dae92acdf0403c2577d644338039287688ba4bcc159cad5a5f3c36a71ae9f24698322b790c997b28f73e6e63a68dc01a871546bb55b17d30ed4b93ee5211d5d17390197235154512787ca640a482f7a616042b74da237580780aab66b29f157aff1314e04ad7270b50144a4dddc33946980b627219877df38e3b19e39fe467918fc6003882e340f4789b6c6150b716ad6c8451021180d604e058816d1bc4cf8b4af17802804d0532002d48f12e2d46c0043e27092f7c0c8eb062c70af7c0bbe4b061a62b9eec413267c72c2cbf4840c6c77fa720d45d2bdd77365133582724c9fa60d84961343d1ae1126d0d9ccbabb12619ba545ab4dd72b1505b07d0b239c6f606774d12fdb0245a7c4fac329e2b6706c167acc31a0775b4ce0242939cab572be8ad86e301d32b7f4e28f49a058e693b63818b1893554319c7e3c508de75b53b6b1f705425f9643009633985986bc524bfe1f22965cd13801ff40d1eac06249591da08680cf53d1dfcca416168136a5b90fae136f3b3ce099761e0e9eece3f45a6ac3784f6312bbc69c9d447ff46935a90b956242ada0ef7e3ccd3ae99562b5ebc9673a2011b1816155ac3ae6a4c9e05215d62797f3bc9887ebc82c0b8c4fe78bb2d8d1f16985a290319ad9083de27f7902e7a0f9be701cf5251102a7e28c0e768d7612cece374e9a6af62b133fceb580fc7f4a706f3cee374ef6ad55369f9d98572ee37cd41238f950d870ef78a75d7990448afb6abe565bb1db61c394eec82e9d3cc14645069d17bb6183fd1618f8fa7b8f7c0aec86783780eda294205dd66b57b52fb4c3efaa7aaee60957dd2de94876898adcb913f00891a03b1fbc47416f7d1488f66898033df8de1664fdf9850a3c0dfcf61b79db4c07dab96a00cd93832c684cd36f39a85f49cedf6cbfafadaaa2bc59873e25abb30cf0e7f06c0a3b8d1419d027b8dfc8ac6196b68383c81be019a05c818fe1151780566aabaa750ea21618fdfdd0cedd0da596ce95a02024c8f88caae662da16ce2f61118dcb1feb0112051aa8eb389a5e19dab6dd6e6e3e478869df1f20930dbad19682e431860890b0577bc1c7188a531f2f23d09916705a6abd0764097b7158f8c820b1623a672dc38ed0e97936fed940130840ee9a9a9043d99b8245cacc96abcec6fb15c9f3df5753a46dd4f95d9f535ca16ee48a3b42fa079ab33fd8f7f8718f80dac2ae4f37c6b2dae2907fbfa84095ad5744670dc488b4f11743d5ca2f038242f802e1c2a3b9fd9779a6bcec353b487430952f473d311c7f58858affb95c46a27c6ba9c7a9bf4de303ae3caced042c2b4108e1d121795bff14977f6a5e69142508a60e54065aca61c477b410685ad54d0427d8f1e8bb06ef64c6d1af8b0a014408943e0fcfd7da9a4d7148bd7fe40341b7cadd8d3c2bc68843d59aec33b84ce3a1b5ca144924b1156ca6767789a90846bcf118bd41c461d2a68461f240c9897f8a3c3c1d0d9d4ae60e3d2acff1ba3dc69d4ca0c8c26fb27a01a4dea46ca1639e179f69733f8806909cf489c8d7e2fdd4340b0cd99d81e5050e94acc8a99941586a331f817dd7da65cb317a54bf400ac10445a395aa94b01779094ce01ee59d85b049011891a4697255053b90a140f7af1469c9f5609b7c9a93b08417cea24c4a51f04c2f106e29c1f67ee0ab1481e43155634443905175b12cb7c7332273ab288840bd05c91be96ca3e5483a229e4c11c901ac2069c9c8fa258ea7be33a74076648cde20da1e62c2b5992626a9ca95b42d75453016c420542c044e920b254ba6f69041313a1569c039be8754f5067ac22c74356ffc773e003ecc480bef807b55fe9244fcb0fe26bc1b1548ac8ba011b81d974055f7327ba703d7853c71bb19698ad4edf4a8b70b70b8fd26d39952b8335d6f00cfa18ecfc3923e4ea0ed5cfc7e4133cfa499f090b6a825b0f56f90c539109a09d00e451a98f07b7ddca3d05cdf990ddeda3cb77c8c798817d04bfe9df6e398b3f95168563acb2283699b165fefb4aa11740dce2e5280443df7b88c31a801f6b699f8944183248e000f5472146c2d5196c1b5cc7b97067e421a716c5da89cc95d3ccb6b694ab1fa8075704f1034e0d35ed5e3b0766c90fbd1affd86c49b4821a4b63d44422a19de7f23988e2fdf2e88834920a34391e488541a7a6aec6d09a8a888049ed23200f301b97bd503966c1da92c0a469fe7d3b43cabebc7764f93d09d1d3d8db8dcf6eb467d47db7b0869a070823a361c2bcdc74a4a3870e8dfaf3e96e0cd46de19f13a4dd06191055a6290218d5e5130ceaa61ab6aea5400cfe1c14fcec68bdee92bfbfe74164ce09d4c93dc389a6a28ebc1b4f11149c6604f01263c2fb070d155129bc2f571877e8f069e893551903fe0837a7fb9dd26e3fa7e54b053bbc676ece096153003eb294f92088718a8fb8f874642490f34a66f61f49bf26d000cd579bddaf9ab219fde3e308616ece969993a43e44e33f11c3187c089f8d6050206df4aec0a67ad8350db8dbbc1dffaab6a9d90591dd3acecb1af62d051d5bcd81c8b0449427069194bbf8e115478c4295219fab811d27385938ca03eb4383c8d608a2785629b37e58c40eef99782de65a37ef42e089d08f2193eac0355746636ce1ff8194370a9bd463ce653a31fa8facf672974341f94e78a7a0585a56da094efafeb1cd0ecf9c8b642deb37120a5f18324624909b60a5a0c815d92c2d4702bc4e8513656ab70e42cb93b9547b9f49a16dc7412e77e071067e54e503066a1a33cb4290d821866690dc8855104ab50a7995ab1c562afec7b141099bd649b27743889bde9dbd52e4b4ed73006b3da68e8ba56718b10a3dbced0c7cf0df173d1af5b70a2739c6fafb5efcc00b2fe51d2eac6dec59675a7f3729f13c8ac67a7fc0693094a487afb7127815d367a92d5eda2aa8f86c0c1ee4a8602dfad63ddde940b452efbcf9e209b00242ea0e2a6a3c82708fdb7759646d930009893d458360429acae36d243562139067e509fd4167e389ad57ae7014f38c4746d426effcb4eb37674736e76ed62c1dc64ef196b2c7156700c2c15889921c7c15e806143ada00ce6bbe34e41e073195294dd104edee0e433fe890b044760b561a1a15591303973f5b4f0e82d21f546717bc89cd140bbfa80655e80f1bad67767e38aee3f8829acade71d7c43ba4d2a8c46a198b3b2a739687d5a3440007a03072bd91a6e1493b415bfbfc03a3e00cde440b3a0b5baf800620ce12c324cde5af9855848b0f4ddcfd482ef4b54418cf813f82e2b810aadb5ef78fa44eb9a7a078d8cc1a5cb959419c4f1b5dc6a435206df0150f9e1b1b3b146199d943452cc66f6de2993a35ff2c62ee759ece727c0d01e7d839d428ad5e11499e094945619975ec8b0f35627303be94d58f6d3f8dafa6fc1b639956c28cc3ffcbf63e8d28b3d3d37cb787888d12c5f57bae8e2298176feb283d62c827c113df349ad12f707a87181c7716577055e63f6630a47f19d484ce1c599527784779041d81422fb667eda862e968c32e2891abf351680660ff767da209366ed10dbbef83530b3059cf8524cf7a8523c25516af4b028ea639609aca670d7a3ba02ce3599c470e4dedd1c5693328fb7a21d2fd3a4755735fc6ecf60b08b72ca6ef7c7fb2e7dd3f351bc524311c5896966cfd2959d2372908965ee1f91004d5c7605746af74a9b52baa18da318a2eb1e7221f3aeb52f2d35343517eecdfb53f734620e3c9c2f77b0c5d28d52a8d158c471af9cdc157f816aa45011113f721317f13e5dd2f8c051c09d85c014d5a7baf2692a839c49f20d65895be28aafdb1caa6c20d6143648e950339f46c5d50a70ceefb45bd749e63cbdbbc9c406ef12165114f440348a5897e1b835c0737007179bb872aed63f58a9c13a4f19e915b96e2639ca1b0a96ee4a60d2496f95667a18c66cb51a2b47ea907c45402a2217e8d061c39c34cf181555cbcd081a004320bffb484da7efb1fbdee25ef2f317f1bb0d61df9e32dbefbc053f8c0de1fcbe5d1fc05de3a6bd15bf75af5048fced7b65eb2c88c193a7f526fdf3c4d36f1bd137b2b9ba01994f5c8c44dff2a1543003bfe5c47b45c2c63362869feae7d03384d7e0f84c1a79b71b330cd114eb6e08a90df7bf8b74ffbd0a19929fb77292a842c982555c2c68a673150e018d75cc1c11ec49df8d73e4b662a44d5b34587949152e1b1075dd71aa6ccdc4de6be7f5f434308970f902c7a8eb729fb9754e18f56494f9026e65ae154dd44c582d95ee0a9dacf20fdf3a246886fcf7731466f3da55c96d8451b2679f0f9e4791eedb1a94a24823819a7f08dca5844628baae122ce8675dbe156f2a9279fcb5f469d5e0110e93b7e3479d96066d10861d617f70519b06c46ce560b76b4243fd7c5c5f8af0be6211539a12ecf38065cc019355bc5b77e58d9d92ddd74c3fa13d27ed6b7f6bd47f3f99d7283778c37efa7d811d8b57ba14edc248157fd439d5ba162620b33a2457a5684e0c32e3189aea80e7fedf0c2273e99d0d9e2c393c6b46aa467ee66278270151d3db4d5798aea93ddcdac24f9e86dfe89cc0b3d6057aae516bef38871f279948ad7571f22573e46f4d6820898effc0116b885d681de1a0f5b0a23bebfbc86f2204246b2db153b0d673eb287a0a764132c6feb2c5d735b889316aed5d339429a7a857819d2d6f13604a2c62f40053da955bc8f0429359364304f605f8e8b01af0021d4253313a1032a134027ae20b8bae35f9160bb25ffe5e5eb0e78d2041da14425567fa432ce6ec0e1b606deb81dd851c745413f2f286ad75fa01e26deabe304cde7784135a3aff27719301edc61b5d03b9bdcca2b00e78dee7249945c409e0517cf52bb7660d93a8211ca2cf95a884ac96640fbf613d6829b819443ff070d3159fee3df33b7038b9802d62ab50b9643ba0dfa8ba246a2a84c9feea74b377e6bd85fafa3388301205e630dcecc34641a8e2ffd80444157d01ce969e98327f44d9ebe8b7e40b22a4052e70e5f5a8754dfb8b2d23a846b51558b7c4f4e0ecb99c1a88528aae6c395d8bf6f518472d4b088bc11be8353c7717e422edc5edec5b3c095d28d0dc57b7b7a1e3166fa75630a3bb4f6dd742735b0aef64e795cd46278699ff0d57ebdbcd20a780285ed925b5a6042817d3dc6a0997ee0f98c2d2691c9c535a4dbf7e2f566e8104c9528017208f3e6e630fe848f5eb7c84474bdcf86665a36400f3fc6ebbc4d12026d2ba636259b5618f068787a8a711f2852d7808572e21cfd1542a908dbacd06d3d0e24017a03d45e623a6c00150aadf9eb95568fa8d357281e69eaa84b7c42d7d8adeacf136ae23db18d19439682d5e2d2ea7380f5dabf6dbd591336805d3fbc20c792b9007bc13b2c197af11e25e2216787c40b74de3097a85c9d6b7322ebe677c3b4ab376e394056911b7b63cdf04243e76a34329165ff105e43b956c1722aa4a3b4e07617511aa418eb42ba9625e53a75db7fa471be0e0b6adc0ddf96ba2c35f348a972efda67f27f536b12bc3ab7582b70e9d68cd8b2925d3e85c2064df2b6b9f53c85b068af97675b8c2fc79362de7ca000bb3f91ec45863d37dd084b54f49eab307d1fa8ccce10adade1b78eb90080c0a05c0399a50bcb9f059f9fcf15008d94db2fd4c757058606130a40c0e8537255f53b52ce3bad00063a8b0880b124e7e860e39048544a839daef7f6103268df23b90bcd422d44f1ce8b990f3a88802d072b6b6400f27ea76f18a1eb59b825acdb44840ee046478549fb2fbf113c7dddf24ab811cc0b1fb073a392d84c26de5c76158833acdac3c3485df3a4a90ae585f743a95c94df8caf06cae62cdb2e7594a2ab67a4602101619d1b6908b3c333392c671f996edbbe2ed91395962a8319cd5e1fe2031a36dd60b3ddfc8c6c16b1a6fa78fcf398ebc6b375707429b9fa0691616c8ca4faa0a3f02e5f37d575e715e38bdae6a92b0ca00a17f3aa1e3d719a5089c5e09a350b652fb0dcc2b2fff7d557e5b2195cd84183f6c3d6aefaa5fac9f0f0afa991aacc8e096457ca68600d88f8c66894a093c1504cff6fe9ca4d9a9396a6eb1a1d8e6cbb96b56a62c24729704397b10636632bc85c04d65c1ef315ff098340264353772480208562eb5c7ba886a43426113cf89a412441726d8333e1801ac9443b743ba9a73e67028be201c9d080050baef5ea5a0d14746849a84511753e2dab0a4a22d4db13857f633e16a95f9342819b07a0edddcc0d136375e655834a99c1370041925cc659a690c7f6d4d0f4459b78aaa64ddd1ef7541b9eb9fc88d03b96332a060073bceeee2753af05b8d6fcb35ff4a5ef86f4b84bc771705b7811d11c6d891181fdb62db18e280d71e0f53ee42891f65ba1544c8bd95cda3e914732492e236a959689262b78ad277135c361bc763627f220fe6c682384d140fe4190c7202c4e4d9c42dffcd0564136ea3d2f07e067c4c9ac242ac4aa73465929ab4440ff02099d53e877dc4240eaadbff0eaed19bb365fb039f26fb07cb322a514b69021c398024b999a917f5c69ede84e0c766e3e345c35b40a05eac8eaa88b0f1e29f45ca9c00dd62eaeeba15beaef0190f18d74b3cdec1cd4c7e859efc38364c2cf9b7fef94f7ee8d4116207753c9945ec4478011160be7cbeb548245ff54b082f466e5f62910175410ceff027965d325bdec080ff80b130c7a041d533431121aa5b0c8bc60295320d8a2e3f0ff03a0607dc403e2eebaab5715a5fbbc7a8395f0a740dc4b1ed8e09dd5d6c504a6e45a1d5709ac854f620a52ee1fd69f4d2e21b72a595f6bba065912220b9c0a878f9f37713748802436f61f3290ddd31bfab554b7f13e6f0eb87c7e698fd0d525726c791977dea849ffe77474da3d6cffb3578a74f519bc530cf0995c0da585fff31163dfc600e6af95ba3d44499f287627f26ba66255665737c2af5f433fdd0f2c0b1f2685738731140aef2cf7be605a8b263e73f3c1dba691e04d6e0f67bac31075112f70f9e5cfc8749adb53073a169601bc2b3f47acf0944b5d13b220a8634d77ff8307f70f9e486f03b647da6682ad21414701ad7ab20bb3c3b26ee55d8941bf594f6bf66423e9496277a35441baff322de3e0dcc4d2d5508c74e5c3cd5c6682164c321e815abdfcd52879c610f0cf79925de9d3c72db3e1baf0e48581b62d4c72249fd5ad9b10c31cb7be678254bce8cce8c9504942181b9f20d65ad59c2b636e9057aacf8bb077126d04f0500ad1f63020a98a0f5c8e07ca5ca8861a37ad4b2b82318fb266c53c2e3f1a571c21377a55c855faf65023f8867be0d860d1c8d7c842f872c61497b73b71f34d70f3ac2eae597b3bdd546f96ad2b5145be461b19408280d206fb7ab8ba90456a156bc7ed8f0f498e2225e91ede4fc8e3ea09beeb0053e3e613eebb8b51f1c98daa0f72d82771274640e08a8205578d6abebf814048edbbaf3bc8c0351558258493926580d3286c44b0e0f3e7fe982c5f79ed838a96f99bb4263b7d012bccf9dc35117076392892b80f11cc326c2e59b5381770af0ff9b6934a5f5acb5f93e7076736681411c8e6a8ba7644af997951f58344f30e59dcbf8e5df070698e6c6df0c61a22330811f72f36e2c802e6aec5d007585450e5cb52e66b059b203916685ce1d4736f68d95a519e7584b16298945ca6512248c80fafb61a0da2bbb5d6836bf871e62ac06eaf8245c82b8f6c3ed7a7bd01dea26e1c53ac80ec88cffa2bc9ffaae5b5e39e5adae7c18bf71878a10aeb1e794d9696a1fcf51cd33b21975678291ac0b227711be4378b5499165e21bf81b792c9e52b9107fbf25dc1aecfaa61071a4ad90f5e1ac1c805ab71c2773cb07ac3becff4b48d710429c55de9d4200405733659150460178cb960d5481ab0e347733aed899fa273fd095065a012350a494a0cf6af058df83202b5298ea99d70ce0112bb3a1d36d42722e1927a402640b29e05e806cc8ffaebb2501c97d6db45083a7db6ee4401a2fffdea1bcba0c1972e4ffdb80eae0957d831402c2c53f9d1b0d2b000e4ae058a074123f870461f3746e72e48194de73f0cfa34363e733e254f4f04fe878ac4475a5e3a92ab929c45c481e2f3c5efa7306c018575ddb77b2929f68debecb77a144a7443a85f598e2b19e0c6096465df5c0538ea37e20fa931c8a76c4769e3e9072452dd2d4ac633bbc71a51ca891521dd850a50edb90121d6aa4d20ed748290f6b9052076d48c90e35566973283e8d3e8528fba72de0604dcce78b2cbd40fa2574eeed4d373898ca319f6b8be6c0ac1bbfc4e58b35e83bc2d0c23d5691a1cbd63a9f281c4ecca66914f3891007664722aeb38304af747951757e8df05f8e5b720f86744c5b9af429f815a869416d12e952f6b0e923f2775db6291610b5e4d93a43711aa6e21d08d1d417245858fc9deeab2e88e5a52e0a092c3a2d860fb7db57f91d88f36cc392819826e890545238c79c6302e243cf2df519aaa56e9d6662d2233fb6d24f9653cd32ab20da14b08855aa5a8ab28a25ceeac8eab38e110b0211a6d1f2d4535f2d2b21f5d6a96d48ce3ad557612458bdeaa51d93571dd6156269906567449e7a512fc4faddcbda88dceaaaab567ef5d5937b495a75ea5bfb170b96f2ec4c2016ecb81cb47e63d2d2a47119880557e06b9fcdcd6f8658378bf8277a03457ebbc4f01bab865859b9347581194b96f5a1184b99d6b97b9fe183c111c5282a9655d571c382111035c06581d53016e19970695b15b4d2bb3d6634a26191ae4bf8df28184b12d6a118ebd0766174fb8ab88986a5a9c4332c3297347478829405a4628114b75a15ec8d4e1a8d132d44b7539127de3c866686454897f38bf1672c45204731d6aa135a5615351cfcbea11916312b298d506a772d6361e831ce659a5ea25964e049fce61e48c3f4a854760b4114aab3a111e13a629d16f3b394822c0ae98578b1876b074508b43e7f5fc95f02a39dcd64273b2d7c567589d0c42614721d41a9b5a07ce4db3c8a8ef9c062e6a9bdb382102f9f55ccec0373159c79e4799ddb6e414a598a407692d5213eeb34f5e2cebfe396d0ea2ab797c0fdec28759228d1172ec3e6539c38f9b9676f276d927f889dedaa982183526997cda864cee403e370001a62ae6fe8c8b7933fdf6ccd12b993e05c1e2ae56a357fbd914522ae883d150fb21056d5aaca4b5bc0e25885a8edf3592d7b0466b1e37ac622640b59b249291a6151a7a350a74ee3f958e89ed18c6897f81212bc1041f377a43f1dbb95b0cf9dfee42b4e66124f49fa1597a59a63478201332dbcd62f30322ef26c74ec17b84666801a4e098f36399d3e663e4ff1c7729fb3514494beb814061861c9f8a567632e0490c4ba387a5d9996295a78c1a78990ff7aee294e9f11e6d63536514ce779c8ef50057b56180760754522211df0eac11c69cad6d985213fd460aae85b24a0d0c8370809e6dbcdfe389a2bc88d636bbfba7a7584681416385cfdcefe9aad9bc07ae49076d897e4401a5b6a549ee79a1f91ebbcc020ef94b81d0702d36169613e56de48410224ffeb885801a6d2e5ad95318e4048b77d73b8d07f42eb65959a9245ab4ba7e3dbf348ff5cfb5d1fce53b68fbaccae81f01732dcc957bde8ea629c8b1115f602bf624876c70a9748b284d31ace2b903db2c4b395393c2eb4c90a831dc3420c35bc06bd5c0f85de9e71343b4a78d9fcbeaa323ff97af875d5bba7cb936502011a94c6b6de17672e4143bd197a55fbd7fff075fda15759694feddd2964c9a29f49835c7e1bf69d8fa0e082cf89564f34dcaa6e43b96ec2703ce8065412e0c631c7e15e52351418375d03102fbd02d11083985932d91af2c0f899e7d2345defe2d45d31c1032e309b87cbf068b9e9765ead43599787bd8e85a93715e3270e04c0b48299229c58a2c1d5e60b933ead25fa310e3552166e884c37c27f91bb5ef7a4dfc01d13fb24291fb5c75ba7ebd869952f990e1d44c72057b595ca66821e3267dee900d240979f15d17ee19f0e31af25f244240b06526d7e81c1b201c923c0e19354a0b6b42372b8002a1d25bc382ba01f6657957c9c30c591f0bc03f79f67884525853ea3abcdaa61519894a9570b8d4f2b59d7a26a37b98151fd95977faf84ee89a700117ba1ad79feb407e95899ae7bd24293560c53151f1a6ac29dd4ffa1793f89a8adb606660b5912ad736e1c0c641105eed744b90f5510607536e9c0a8f17a25044695d98eb61cb6041000a0d8b1cb62b3f7bf92ad642b392acc6abdc8f75573ce0e47e829f051e69682b6f816b43c6cf1fc2446c30ca544fa622f5b3e08b25dfda49b34ed13226d6fb9779c0f520f900fb0376cc266cbaecf6136b780c160b053b147081b7091f989a99883f5cde62c84a2620e1654d362b0dce3b2071d0664abcc4a3c710f2bb1cffd98826c4e8e8d4b5cfd96e4ac4cbd8dd7e75899eacac29841a71ef7c99ddec786399b7307c2f16a810eb319c88700dde752cce1e3423920a00705e57e7e7e4ec51fe7a13e56621c40a76181fec3d6007a10d07f6c91c640076287f4b8427e5ce8c77f66374f3c9b3d7c629cc959db7c3ef1cf431f9b7d9e43c2b259654832983f6b83d4554756ccc3f5315c0fe3a1d3d2003a4fd70fe70ef3797dcc0ec9e540270b3ee540a71ce8a46d3d5ea5c4212b2828e85404721efa63259e598969582190e0dc81d81ab9f7b8b9075929f6fcb83aa1fbc81303dd21a1fb780845c59585b6d9b83eae10ccd5859a822639de14c5c9b9a1cce68965a05323e12cfb6c51aba44a7a9a5894708d59214220c1b14b5c049e427c380674a12a7bd0c3201b3235bd30619c07fabc42802e742140ef719e9659a0a6b609e500ba500d3fa6dc419de751c665e318793e86c16ec44a5a9b5d86d5b13956362cf79f8739fb63bfa5ab31773f26d089e2d45995c5703d2ce8339b6f65d666300f6981810e749e16b232b1d7c31ef6b04d720e64734e7f2a5deb61250e99da160464250e9904b576638e7a981d8a794a989e35c5b29263972203bbccb7a471be25f97343281704bea9fab2444e7dc874e72c426bbd8f572b30e1e752ec210293a75f96303abdc78196344ed211c73d29a258c8cf678fc08bce7f4e6176dee7f3e1ccca3e7b6d5bee3359cccaa61df150af49ce7356760df66933c84367f6e730fb731f9b61ff2942656097b89f2b03bb0fd80da1b28c514140f7e7b29b2b96f9f8f8f8e43006bd7e554da3301607462ad6928daf606d600cf21c42b13c30c23c9f67300b96a675d061af0f3aecb962d8cd3dccd99029e841e28dfaa02ac59ea01b36b1589fcb936a9b17d5344f2a04637df6a2b057c5936a1a0597ac602d19811cc86b082514ab42b1fbdccde5eec7f42d814b5e94f0f9788fdc7f5cf63705740a741f2306bacfcd23d073772af67a412759a38131f6920424bc547161cce012c9ea4053db32120e8a3de8b9629ffb3c0c9b4a91c6ec3e37e8311bd4132473187d5e7d0e7b0c1686b3cfc36c6c168b3d7798f579ccfafc137b7c6ed8d4b49c0d999ab6a469a093238c135711f64f8b8c013b5d6a8cc3c7f8345dd0e378cbbbf234657c534ef3864f3e77c9462cf69a8271c2608d41271009900a8844f824a56d9207404c4d1960d374f14d09bd472c6673079b76009d7678ee1e170243a8dc05a3640dc55f14630e9d60ff9866b0fb2d81b679bd17238c195c32457b86a1fc5ef51574023e5dd069ca98c125185c2293591a07b244e60e36cb00040e9b650862f38705d3ffd84ce340ac4c0e9ec1d35e9457a5ee200753a1fbe3e6181fb7c70d99da561f5209432621d443a81c2b71346c8e059d748dbea660849dc6059d9a465f592018a5c7d436266d63f129d6d514cbca6bf290f09c3c27de9327c5836af1cca22280675614ab4a8d52cabac2a2a2a1949505539614b50ad386e2a1350af302ba842e96f8faa962a646a98f52264f494f27baa338fdc7c4784b30f5940650739e9e7d8a3d44008709fb94c162b179c4ab9d1d56848561368caa3506a30dabdf92aecdeeb714461973572da54096f3900aecce1e46d962cff5b218ec338c2ad23816468550622c765985c9645da471ec8650534002ce21548e0d99748dc664629746e3d861079d402759b2344ef8649336d800164c97369005fa4dd980034c3883583005ab60fa18acea989846ee37dcf61b3e8bf9dc3cb1cf6bf5b9ec61757515c509a1a8cf730855c3e7a053d025c501baa43f03788b3a6077f16a6337575c67f7b113cb68d03308f43c62d9cf730c96c95ec51e9913ec411776a09bc79f5b5545d8cd455858f6013c94a20ed95d3c66abcccaa6c50eb3f92866e767b9cf1b32e5ec0c0f9bda36c36778ee9ea77336b49d00f608094780cbb6f97c369bdde6b9fb58d9b49ced366f51c7ecde702aeeb8e1b62639b7889c13e038af567d53adea538cd3572915aa52f111d5b63ca34adbf28fc79e8158695bdee1f534ef7c3e0b7d769a7b3c87a56d39e83e55b72c6dcb381e444bdbb28d0321058d1938d850cbcd823b16dccdb05f540cfbed6cc4380e1b84e74141efd1e34242df011f8890ff18ba8f1e1d7238b5ba31c5cf15d0961dd9f3ad2ac14e33ee4bf33403f9ecf947f6519b7838cd40bcc6e9ab53db7290cf387d75b2438b1d36a4e2c1823aec67f53d795641827cc68c0301c46bdcb80f1ffff1e340801c47741c74bf09f11ddc8118f09f069c3ef1383d9542a128951fa26419e8b1e79fc37201f201aeb42de7f8ec59c77358da9677dca70a01a735cec3290edf393d95e2f6500a84aa6af270b0b269387cc7caa6edbc86954dab711eac6c1a0fdf6165d3765c87954dd3f11c56362dc70b6065d388fcc7caa6fd1cc8fe607db0b26943de83954d73400fa7ef29da967d387d5fb52dff709a0bd0b6cce3b2d36c80c79e0f70d8e9a992b66504bc9e06f1797abaa46d39019f9d2ae0b9d305dce7f44d8cfc01a7b9e8454e9bc8f8d1c32aa094a6d1d31fd930aac886548a58d0c9036c08b500fb29c07e09b05f101601f663d234fa03d8cf00f6e361bf02580f4bd3e87fb01e55d3e87db05e0fd69b626adbcd6dc2a46d30ee516535511c1d2357d2da0b1e6e8e41cd1b37d348f5cdc88de766183883547d337219f7c533b87373cc8c9b693a8f71738e8fcdd9996529b12ca5a625b1764ddbd2b41b18a70b3855c0e9cee98cd318e7798d9b630908e2b79b6770381037d320e0416ea61de03bdcdce2761c37c300e2362e5490d3b879068dd37f57da66e314c7e93f2c6ddbe1f45f55db6a9cf2707a70d7b61f7ee3396e8ee5b88e9b63747cc7cd333b0ee4669a1efee3669a0ff771738b025ce866183cdee39b32c0836e9ef12db50dc8e90fa6b6f960d236a1a6b6f538fdf7d4369fd37f516d933de84037c780fe7373cccf89dc3c93bb1037d3e86ea611dddc22f6a19b61c02ee4e61c7cf30c6faa6d429cdebbd23622a70fc0d236dde9bdaab6119ddeb36a9b90d37fbbb6e10fdd0137c71cf02137c70c79be79a60137d334e00cb899c680e36e6e817b0e37c3c8e13a4ce9f09e9b67d0ebd81ccb62a2b59e9b9170cf7d5820431cc8f630faccfa1c39cccaec910fffb0b0d98f2ba0c76f7c08012332f3f971338efbd801c90d109224171ae287508fc318c2c60286a0f1809b7dfcc7103a211a430c31f371338dcfc63d02dedc23200c1b34ee23898f9b815c28890fa1273dc171338ec348b2c3cd3bdc46920528e0494f68dcfc80fb0072b3ee42ffd1e3404890000141f20309901f4f7ad2e3661a07426203c90d0c210e84c87f3cc88891a0ef18e901f4a4274446868cf8f4301274b38e03190962c7c70892ff1805fd0c9dc7e846028c6a38e066a007190d31fa19ba99e7358c46a319d0cd35be1bf70818c43d020671a3c6819000dddce33f48807e9ef424c7cd391e04121d37ebf80d245702494f1210c4939ed4b8d90107ea71f390ff3c8807f4f96c67d623a847d0939ef0dc5ce33b373e33b2c343f41e430f7acec2663aa08ecf939e08c93ab9d90c1d9f7b643c40cecd8c7cda23b989c3911d0838d2809b67cf1d61c091790487230878d293d9cd3b3e10dcf19991d9cd3e9f4666f3494f7ab8b98723c0880f37fbf00318b912487a8280033ce9c98e9b1bf099cfcd0cf87c2edf23200ee08e19b2fbc09ef3c93de9090f37f3f01d38dcbce33366e0f0a427b29b85dc0776737eee311be37173d18318e0661e4582c4782c7658d293a29b0df0223c1e244891273d89718f7cf866d9613aaff6c8879bc42a58809b6380b71c64e85065d49b8c1837df0e840c209ef40476730e9f016e2ec081b847401e370301eaa003ab3ab0faa42705b899c775d001e266033c88ce9540d21320929ee470730e87e9f0fad83df2e126b822f70878030b1003778fb870931cd93de292253df9e1e61f5e809c9b0bf018f7c8882590f424c6ed494ff0cdf832dccdb8c7ce431f4044081dd190038608c90d60c0022c1057800df20458201e840d720458206e939c1fc006b997d5446bf440acec3f6cec3e2cec42b6be87953dc8c60e6461ffb1f53e56f69c8d7d566f00bbc379581c2f80b5f11f2c8dfb6077780f16c777581be7c1d2b80ebbc3652d691a7d0e8be3b2969a467fc3dab8ac1a96c665f5d816d6c17a4230c28929700ef6db81d210a2609ca52030424a0a185bcf0236b05a02e6c9390e327ed3f98e6d92738f262ee7336c1319f7a871398f619be8dc238acbb9494f6e6044e1896333122eb280d967b7d98c8467b70901ce436f583c66670eb332af564da387612526807d72c30d6f6adb0da70f6dec0d36df7017b05bad8dcd1516bb8dcdc736b9629becc2363636367906dbd8b87846c22e6056880fbb70918b34bee1864d4c58185d5ce21c326117af4cda56af91c6f5d4a6e9061b1b5ba558c3c55dbc5ab54d46b1386dc2b46ec1943eb39230cd2c2596124ccf5af2e2661613a6df61291f42c91a3d55c2565c88810b3b005b63eb54cd0601b4a081160000d440731bea8f89a1766201d8896db013d7acc4d64a4cb31307c04e290c00dbb8062bb3601aeb611aecd4ac92b8a1684b61da500d653f43555bcdaaca64fca89a46a3ff37f54dd18feafb96648d3ee69bfa96307d4d7aba531513ad4b9856b5154fcf2afa252dd30acf25341ac32a95b1ce2c75f62c93c92e9bcd4edbeae6d9630f67311b4259a8904a183573c56097b0a9a569f439847a6a1be8a46d5050dfd437d53679da04049880ad761407746a2bd089856dab19db53acb0bd45064b7734064b61b05449d368ecb9a3da56af53059d680df6d80da160368c6a1aecb01b46358d46052d60fa6a04a69402981ee644712a14cc4ad650a859256b340ad74b593887541a474ed16a230934903512db48420c244db2304f873c4e98fee9c5d61ddd0263e9950a4ba7a02f2430bdc804d3bbe8122598f61f1333278cc4a0875b96678ea7f45589651b572aa013e84471da8ad2b672794831faa588891453c444fac45e0153285aa992b423b085cb08dca26b1f7d783fdaa4f4948239988a2d9a467f1efabd714867cfd95726874723ab8be5148a4fccb4c491f4de90d58302645d296bbfdd36dad6d7415a75f7133206d862b9dc6b1256cf4332f3c4d34352840aa3e759a5e3c287d3da224db34dc22369dbbc1789ae692c16ebfb62666cf0a0c9309ec36a566b4a2b5d0930eb45580f8235abaec8c4adfb68d2c58b45c052ec32451d2e77358d055641418aaa0fb75863ca8cb420f2c527ad64954b0cc5d149e10338d344bc6b79209477a88dc042642d147930f6651b81bbbe08254da651fdd45153f5738c42425103dc5870575919e4091545c690b875198256b29ad0aae20ec6dc4fb8ebad30b689ab86c462ebf646f86ac50b83c468717f8419b27888c5214ea6ef02a5abb454438df4acbfbc88228c0aef2fe09c9f2228be3c1530e09c734e29413a5f40b0ea8ce06db732d1812538bb5c47b8a062e90407acdc760a25129f506c79fbc04ac5515a4cc5ae2a63cc341cf5032674060d4ddb9a26df350bcb9b9256fbb3d2598b88a205841610aeb48010c515492365a5699f7cd892a1065758d61d1e4110fcdeba35d08265133480c22eb06ca20650b89dda269bc88114f856fff5537783adcb66a238ada424e343bd4ab9a42370c0b95c69e2c069041e9d9af67d2d9b8f7ef48447bfdea3fabe31b4f6fd08a60a8b9738d937b9f557c388f9081769dc62816b1d7387c75b84855bb79fc627e2572869db0c6d83e1759d519c188615768ae265789e8e993d2caeb634ed931487463f98128c3fb4f63dd3f0077321adc36cc1124b0c9391f0ebf515a2eb65672edb66e4e5b26953d4d1ba4264ebe245dbbab32322465e5e44c561eed422aef88a5351c708038384c599cfac102bc40c58088b4b3cf18b156206cc62e62cb147e62f3bb54c29ac58d82979a5695f0de7e9d75b220ce66357b1aca6685aabf5d79d563b602ede9c5bf7014858c5c7c33c54f1d1ea80dddc62893ac6f130a3557118db576d25e4f597978a968ad6f83452a5171797dd6c86458a9799cdb319ddcd2c55a2bbd98c26d11d559291c9e4a5305c147b9a5019dee20e18deba198687b4bfe6cb5b37bfee0390f0ece278b1e725057ef9ebaf9b9190681759e2cda30e989b5bcfe25bdc31bb21863a630000709e0e5588e255d889c327e20ba67693112f91dc7c3f573fdf9788febc44ccd7137134ef93f1fd7a9f883a461b2ec51d345cc5555c21adcf027029eeb81f2fc6f0f10a693d06d1065c2bc77d0c176673d0f0d9cd489886c3d470da5fb6663312a6a15918148c355ce21a1e0000d8ae1223d67879a1f9c4345726070dbfa7e13615dd59e1ef3bddd1a40a1c47df3a0bb1a7d5576d135b87f9eb3d855538137b5eaf98564cef9af6dd7f0fefddd1faebe6d6cba79c31ca2672c004cb26aa38c1315836512509074e58062c9bc04114be36dfab78285f1fc57be28ed6616e7e695551c7f8d7c5db51d7b614cce5b57277832cd575adc454bc01f316cccdfd6adda8b68952a10d62eb628d564bc55b578a3754dc4e6ada7715ad0ec3298e2f18732fdd446bdf8e8f89ae185f905b097fb6dc4c4f577966995a3095b6e54ec21f5337519c6f2acdd66beb4e2d56480dd9a20f12d757f6cdbc6ada27e4f5968ed6718005b70e7329de6cffba33cbb44a6a9bbdb12b238d653e8335d23886eea9656a9952f453dbbed7c396eda7976da7d685b4de4efa09c6ca66f1adaf8041c128712ed2623bf553d3be7f5818c54bf1eda46d30d7486398bffebd3f1798174c11b186285e21a278a755d3be2c4dfbae600ebbd8fa27b6445b718b36246ee98cad3b316969275feb5fc5e3cbcb0e5171f12f6b648878f1339b83e2d755d8212a2e2384781eaa82058bc62a2c8bbb00d934d88ccc2516c59b33cac8ac58b102e613c35c060b838231864b1cf32f861860800106d9635708cc5b9f5958a20e98b7ce1a2bec3b04faf5a2cd158b7fd95cf14ba4d1b75dbfde24d937af1f715cbdd13accf8fa4426c7c4af4ffcba68b390228d5b2db1a7f5fe8c3416ffbd9bda06a3e2e68ca2788b8835607e65724cdcfac4addf39d5b4f1a5353e19999af631195d307ed3c9c9097f130a8a097f9792b2e2e202da5eb709080545a5bbd6f1c998a713febe4f27df65df5aaf7d73bd75307cebaebe856fd17b746483d6bee7d0dad703ad7d3cb4f6b91e3e4baaf012f7d54bdcf730b40ca0b5ef2efb2cb5e00f09adb5fd0e530279e51db412379568ed3b0c0946a51e9226939569b5776544d69511af4c0fde7f9038efb989637de258775d99d6fbf5e195695d191ffaf5b979da4352ed21695644b35ecca0e9eceeeea6e5cc80416b5b8b9899a65d9bd6a9d9fdb07524dcb49ff7e8c97779806fdd2399ef2a8e84037f24f35d223ce6c797d78518efd1d17898cf23e1e83d7ac20376f01e3dc9b92905259cd8e12070999c8c27a2d4e00b5f006f11e0e99130ec82f7c977496b234c09461edb839df6c5edcbe6d05adf49456bfd0b438251e22816282cd9e15c0e22e1408b8473bd655bffeeb239289e3bf02ef7e848476bfd20b4d627f283c409f183c4b5fe83c4b9ec4069e5f22cab9ae692c8d46aca7349b4f3036deb2eebba688568ecfa6c91088ff9d63d3a6abd75e713fd41e292e693e69d50302a18256ee25c76e2704a1c68274e8a3d12cf89e594d13bccba794a819b55b8a36811747a5f134701cda4945616abd24622942f58acb61f622da617cc4128610c594a29b5e35c41cc084aec01168435c86d4aeb9c73ce59e7bc1d987acc088e31b8c131864699c64cfbc20c9e9c178d05e78c3072667c3341cc3987cce0f97dac19b6c913def58a99c1735a1e500b3368e2a5b5685b3e7a8567b9c4dbc26577a8624f6877b03d34edbb366833bef77378a6778b9899c12dc698f7832c60b9728275b0b44116acb08f53b127a8e7a7876eccb548c5b9982c8caa2265259c0aaff8b0615598a56921954fcb47d52d7e528454a0721e6b61691a6d55b5b4348dc660b2184c2683f51496bc10d5387a590cc6d436d8e787259c6ada85c01e7b86dd88ddd00abd92a59d97e44579559246560446233ff2735910187f6c9ca7813e7bf8f2c4c88f04cd6a7f1e5627469dcba8c098bfa95995617d64af52478c329604c6fc4dcd4e832c916a7bb8b0e0f36f29d6c386504236a4023a813d729f01c56234f029e855566d181542d1609cb88651628df9588dfd5c669be4dc999df578cee6fa1e2f42314ff7b032f53eaf079d7c2eceb585f102d52d472c55a2357a23f6f540b63ea45a1069c42e08c46232522ddc4750eeb9cb0ea43e769915521f7b5865321990cb2c9029c51e20b7d278fd717ddc20a16f4a0923101346a003d99fd308b2b7617bea613fd73bc23eb014d4d96c969bcd6a156badad9a033330c29e2bd2b8c26ec34e2fcc6122397287c16a85c2582fb33b72af32d97823f73a04158cf4124f5d91f9cc198bf9d86fcae7b4c795055d9f19fb5fb0308cdd108aca8f576735f77a65684cfc89699a4661322a60e09bba32341abb7898a76531d8a508e347cecea58e151738d5b4212ed04ad3e895a82a529a3643a82985962c55589a4661cff554261867a054d36806ade09994a6c160b05bc3a86feaa37a9a02b1b44d8753dce9c12ca016508ab6e5707a504ac844e354b08c67b0432de1146155284528155e89f1fa51d55a6597c2b37f5353df95dc4328a01f9f1ff39b6a9b0ce8c727846a855014071c47ea73a37ecc999d42e7e9dc815840f60bca1de8f95b02baadc7ab9574860446d3ea841581e79cc95ead0cec30b0cc825f4c17f5d38613f6d80e99c43e7662180c06f391a997d8a3f2a6eaf5c0a6254a319b8f63b99b27cec99b63ff79d82e21fb2dcd8963f6b85a2293fe400161f0731bfcace0e72db1e7279cae9c95f8473abd3c61ccdfd48725cff88c4bdd68d9a511e340e76920a0d994013de861bb7a040101cda66cc65bdc01c461418082664133481614f496d813349b2e202b71d08c1d405cb673982dd23886100d2b83c3798ec38158195606874b9c91ffb032b7db73accced1227e3a10f2bb1909538a4222bceb117e998132278c2c7d209102c01877d545fef0e8a7b9ca79160c43e85a03eac90fd793165c8eee3737391be61cad81162d9bd1909fb5c6665b2c378117b2a0f95f578ad17c59e1a4efbe3e6897f3c667f2ef4173f3f87d136a1fffc25f6fcdc9c5166c1e174fd58a1107b2e6faab2a46a158a61b7674c0ccbc115f6175386c4b00ba36935f70c03e7a0cb0eeb71d873eeb09b61d09838f63cfbcf65db6019e8b0ff5818138cb31cf4f929d610325ff1ec0a09bab3af8039c1d8e3fe3ce7eecfcd9585eb6f98327cae90dc6797bdc51cb37bc3742103ba451acf9ebb42e6bc374c1755f6d9cd3030ec374c17b0ff38cc0a0105c5ae146f84b8de1ba68bd8434fa4513fcbb14913977b8e95381ab959a5913ba5af26398f59a1c32cd07de4d8c609fd8629436221b14728c802550bfbcce6233c7b287b28b33f3e0e7bd82e99cd4738d7e7e663b7e708cb6eaecf9d87b6b863c65eedecb0fbb86cdb8e19831dc7ebc5f19a63621f3ff666a49c8fe3f0b1c3a7d89303960221201f97c9dea31ea85ee8e113057a7dec661b3a84dee3b1571a8fdd0cc4137500bd5ed961973de6f37a6197cd5e712c776fcc3e2f8bc9ee63f33c8ee308e241f6d877b8ccfefc1cf62b237bfd4c46f6dc61b27b43769ffbdc230cbbec1ee1faf9f91b59d0791a76614c30c2ee77b81477045d7685047d7685f4b8ec3c2d7b0dbaf5b2c41c3e6ef4b8d2c62d42b1d069dcdab47a33905b8462201d403a84806c2e0257d9630f63561673893d3fe663332098ecce3bbb19f62214d7d8cd4528fdf1fa1a3bec21cc824e310bba6060acbfe0138dd97f5091f3b17c847d4ec59e1f0f836ec8a01fa14bb146ee66249c939d87fe5cb0693f97599fe76c8f9f1fc7f1a03baf901f9fddf87167e7a142360bfde63ef3878d853e37fb7cfec765b2fb63faf86cf698cfcd8d7d32887397c92e7f0e642bce0101e572e7a139fbe33e42d7f120d95ba431b1ecfa641cf30a897df629e6f071238684633d3ecbb3c77c2eb3b94feb636fe4ae7c6c8a3462ff390fc53fb2d06ffc6726c371a1598fe3f8f1e387f5f11b3617c138aec3662418c76f6c3ec2386017c709a440272f62cf0e3767ccf1578e978fb77843867d1c870f1f410ebb3e6c06b18f99999898586c1c5d2e109cc1321f374fece3b5eeec5c8ab12bc48765371fe1228d63b8c2a8b6c918e7e9eac34a1c24c677ae8cec3c973d1c6336248edd228d61316eb515c760b6a600f6e2041df51326cea66030981de202af602b983eaa0aa6a01319b332b39ba37ebede164dcb91a3352d074c48eeb04b5c7740835d4fc7cac82e71393cf7b94d8ef0b476b31a818ac06c56234423c06439321c7c4c30990c56c3102a7b5338b49243274c6f10a1cacd4afc5d9171bb61056f9f5131d837650409c764bccab03a36c7c2628701b3b2573be3316b8485eb47b167c60c3b310cdb532fc52ab332b0df20429517107f8935803810d7484b4a4c8505a28c3e0f715260fa1cb4607a1db260fa1a55981e63c1f439172b58364c95b6e56f29a96de085292f4ce18961c01283d599ec01a6627845d6d04ffb5df9a862af39af6125d6c14a9c839518e7616c2776a1e2043a4d855061544f6825ac1256c1f4340bdf27c352ea0b48a8725b57ac000bab8453f4e11516cb0828b054e5c05e0f3ae92f0b9629583dfda7a56d140b98fe9342c69819f4b1d9dbc16a8cacd157d8c501cea0530825333f314cd26c56d7114b391613d937e55df1a6c28f49db74f5f395078e4d9decb0d7b3a4348d4a1cf4981532a405f6616adbbc426ab802e604e390165888ec3e1752eb0d20a0f7b01909f778989323f4f39f3967ec67e61e13fab442af42400fc3867de20e5131512ba44219a6ecd7b44cb2a6eabfa2382b62f00b03e3d05748b970716f85545d21e5e27d730c918569a2351653a04cb176d7349b6495ac921914287f794017ea8caa91656a5bd1939af62babf4ab6fd9b5cdb34aec1214fb2d7637e5feea5becce265925abc42efdea5733ca27143ba55c46ec995292f84c14259238d4e9c72c6d9b534e3f6a699b146df3a0ae6009af4b8a73cacd435ce139e56d5f1e287aaa4f372d6d33fa15232b316e2c6565ea46d5362c6d9b504e7fab6a9bf739a527d4bd494d28f66665cac8deae34ed46d5342c4de37ceb3e83d833a7dc215509cf289fb1eadbd0a98ac3fc9660a4612e6161764a589824291646a969b0e79bdd38451276bc8a62c72d388436b876987644b0d3b4e3a4093b71ed50519cdb6e47cb947133daa1c245cf8df38e167b93626f4fb286beda9b137b73dafd9cfeb60474fa9d29049d7e478aa0d3e396648cfa73a3bbc3402f5ac2f40392469f29c65d4adb0d77bbd236237a9b92318a742ea58c1b93e9825ee7b7265690d169d189ecc4d1c41f268ee8b47a229bf4c49b4fbf2d699b9434a1d3df3e200485f3cd8dc98fd31fd7dd98bc00fb788fdfec74a7973286ee13ca9df1856a6148c91a7a236ba3c446e9c9da2449b5adfe6617e6d8cc58d9631a8431ffcabbceeeaa6d418e03aef726758331ebec72cdaeea24797645d40aa8a61dc744b5ed98beda98a8a6d1db34213abdcec210c365c7f010bb3a8a110757c51dc5a8b3bb4911adc04e4040094b278c586203964e188104be3521717e7593cab7ab262a30396109094a42c07687e95d70bdb85fdd38fd8df7cd2e6e7c3eddf88d4f28379ec71bcfe0d05f3e87ec4d8a0463b6d9d9ec284e8dd13358f43cc6bcdaec68a028ce6c3afdafec8ee24c139cde2a519c7982d35b268a3351707a0b45712612a7b7541467a6e0f4f68ae24c159cfe32519cd9e4f4f7f4978ae2cc159cfe5e519cc982d3d3c04471660b4e4f0314c5994e4e4f0315c5994f4e4fc315c5992e383d0d13c5992f38d127949b63927c3edd4c1be2f9458e942ae2594e213d4baaddb3d462c4b3b482c0b3bc8ac0f3544a7a9e4b1238028a02cf53aa02cf73ca02cf934ac9f3d4628581e779d54abda481e766dac0733be57e5af2dc501d786e290f3cf7d4079e9b8ae9b9b580e0b9ad725f89e0992a3179a64b2378a64c24c82fc1337d8282c2f92fb0b4c90596ee9ed8ae72623baa05b69b58607bb7023bab9cec8c6a6267930aecdca5c00641c2f2a0c0fe04763481059b2c8d2ac113099c46c0c46449045429045720b062d2f2012a0f4c75406a0914079e36e0a481252b696d66c062e0ea02564ab45880aa0253149052829ac0d3114e12604a5a8ac0848095b4368db092d676761ec94a5a2b629e883944122b698dc8ce0fd99a1dc5b98146378363d1cd634ccc5f6f35ac2923be49c99a118c2e5efb8c15c5213ac5b9c9d09b10ddf16ae8be70a9c0986f525558c56f526debab78fe5595900b7958b39352f67d31193afda83bc5a961a7b3ab6147716a3b5aa30775b7b6ab21a66f0d373b9d152b56ac58f1ab3007574731862f0f8c33218d873a230d4d95a4a192353453df62773297e27d681ccd14ad0dd989abed0e82e3181363e3f93486669e67ac6a9018b28d1bba3453b446714e14e752b8268a2371534c3c618a73d234dc53d328ce49d6d04fb1075c13addd6e534da3b8265aa30f8d30e69a1daed9b58d62fa9a1dae69c6aa6934d7d04c75cd2ea96d4494da5664a96dbda46d4230b5ed014d6dd321e1e4a46d474e5f23a506aa6d464e5f43a56d484e5f53a56d456f5c84c47a3f62bd1bb137aa5b55d3e80d4bf78b58997e91f71f6065fa0f789f8895e913b97721ac4c5f887bf7a6b3327d6f53b74a63e2db4b04635f7cbebd388b679bdd149885fbdea42630eaec74923ad3e0be69819be8fdf105c519c2b9d975ed9bc22b5c3ccf58c5c4b44e149bc2ad70c1cd871dc538c31c74a8e11aabdae661fa1024ba379723c679e9e26d472ac81afa213b862f193a337276706cb71b1c78302e0756fd68cf1872e6355ac91a7a9725ab15d801d7e62e4b3246fdb4019ec1f54a59d367d9ef43acc442469b251358307d036c964c4c617a06d82c999802d32fc0662a0405d84c859080206ca65608b0d905446d87e90f6089cc2040564861fa1f36bb2c8390cdb4891e36bb04592213e6e7d684e97d66acb20c06b09936c1c3129905b044e60f36d3291f6c8ee9c166bbc3660a050f36c3e8a8d9c1e4b0390687cdf686cd140a1b364b269ab20b0d9b65e8f9d5afb20c389b6913f836db264c8fc3afb275c2f43b368f336cae5a62d83c9385ec926389e0d86c9d10993736532b1836bb086033d5f26dc1f33696c8c42f6c06f338004ba4d6d8ec6a61332880d1861a7619a4cd58d5b08b89ca312d4468b019bc365b9b636e73cc0ad3cfa0b3c3b71d646a3563730d12985ec6667085cdb44a064ba4c6dcec307d0c964885c1e65166b3c3f4317b958f5558221566c68a56bddca430fdcb663a953fab0c2ec9a0d20785e777175be5434fc6bb341a7b9fa26d9289264b304e1a4756c5840aacb015a6e315a6304b98c250981da6f758d58569aa89caa96df9abc24b6d9b6da35b5c2e4860eab2a4a3e6008622261268436a15d148425cba0a4ae1129e0f57bc42307ebbb629691b1826e150e99bf3140b9e377f52b07c4ff361385d2ede5d5cb28f84935e9f077ddfa327de8ffa943685e5bd4b5f6fa64961797391fa02c1983f273c8b62709118fcdd17d3f83d7f4e995261f9d92cef12dee559242c87502a1cde9a17a60b97f3d0b07655f3c29421b18b0d3b1c4e57cb4e81e5f36785a56c5de1495f2f71de579f63bd5e229ef0a0af27a2cfbadf1396cfd5b3ceba44d0d79b3f272cff35511c225aecc1c8ba323cfaf56ba21f555f995ce3e8917ee8fda8e8172e55a44959574211ca382f5d2ff92963b46060afe7d88b4d85ac4bb4c6aa7549650a975e58c2a570492381fb2f2c6dcb75a92ed5259d43a3561c4e57b85497a65e5e2fd4f516b3ab8aa762cf107a855dadd659acb71223eb3c9465c5b75e3ae3ebe555ec7971b590f440855be7692647474c98955d2afeaa31b1eb8d692d60b46f8ad5ac3bf5b233ac14a651b1ebe6bc8849e30c960e7258acf3745796acb2b1c3125393f02edb648ab845db6a657994c59a32b26cc53d6564651985c31691f14540dc3a25a2658d288ead97d7cd48adbaf47e0ec599df144b09341381bfb79d4b375c921ac325dcb4d6f7f6c0d35a80dff5ec4cd3ba9eb69271fee542614c842f1d4445d5a727afa9e9e5a58331d3a5970ec66eea262d5ae6d37cbaba7ae960ec8965d328959235f2de1394d2be01b5bac278f69d574d6b28e615b57279c2a3dee535a8dee51e8162935705a8c4cdcf3b78857c77e27aceee9630af9c44e2eab4c285412e07ef51eb2e67d9fc4dd11aab1e1c9ff07c159b801518f30cee9e791e6a27cd315faf10d6e79d69297bc2bc72128ca3220d16f85989f36c1ec2ba328bcc82df5261d4cc99f7451746f91e8c126c9abc4e28d364bcf897bbb68c52ec02ab3ad15b9b26e031bd4eafac550d2fa56cb1582ccf0698c53a8bd562b1582c16abde7583317b4cb26dfdba4c5ee5c058cfba3702960accbac7c44b0166bd65412ce5e83d915409710aac2ca5285c5d6214c61c8341194c97272758155d4dab5719ccd17b4db4565f3930e6989898e3f9aaa44efb5a9b9a56a9e07aefe9c96baaf790a89e145c0f52695b062b93948a4487d395ab13eb525daed7d4b46a714331669009d7fabd1e64622b124d8392011796c753fc6eed57a659ab52d3aab734ca117c4d00f46230e5da326650ec82fcaa346d7e52f78b9a00a5538a2a6250596681670d53b397c2e31a12cfe707a16011161e9bd6dd2df15110cabe944a8cb39184b32902587e858c516d777102db8ed8c34f4660e1272654269eae3c57b55402b86d0b879fabdace006efb824310ca0b24e8225b4c4021016e0b83c1d629e8125ed0e5d2ba342e7687a6d1dbf8ec0e36a2d07bb6824858159c95560a50e0e0d28f8ca1a207d80ab874a3bb5fa6306610b364bf7851e7cc6314921833d849bd6b5a9f8260ccbdc33b29e9c1d9bbdd886595d38829701e7b877bbee9125ce0c216b6a0052d5c5d5d210a310a51442146610ad10a514451842214c1d505b10a1088c2087385299460852a1c6106a215c42a50810a54a00215a84005910a2215c225c68ee25a4d215ca26a32a194524a699e4ce091ac4267e0092367cefb7a9d3e87e22081992daac9f479f3f8729148d075e9849a509452704e59a5b2ea6c51170a34911402fa9894a2021218072ca5ac946c44404ca40888fb4484f8b6ec76b8c8885b2f12835dfe55c19e0e52a0affb7fda26af57ab83350262f02d6b64c4e05dac91180c5e222f39c81a7a2c5dbcc8a9d1d30fe7e511ef3a11e15f2742bccb89513c11af8727c275f1323ebc1e3ee7baf8708a323e847f3d17fe758f9ef078dd75496b39f1ae7bd4c2bdaea435dac249dc933e4eb42f688d869626ab54a15d08e3a4920818b41457fbe129451d33e00f47879958ec6dfb2ecd0b2946efc6dcb169945e8442b520fd5ad250fafac2e6c07871732e8ca6b527831723aec52ca3bc39a6a384f2c5cc8d69cfd874d1635797e7814da3df77c111376e4abf02d72b7053257cd263d52ba42ff87996653d198cf45d71461c1de974416d5a5994524ac3f45389523ae3478852da75787e0c5962cf105a8e173c2fcd1487d09ad8cf6584a941cab8912ee8557c9e46c678391ded17ba80221346173b671e2287e2fc8423055ff8e54a5943d3b6d7a5678137260689aca1bf9257987a947e43b426b07e5f182df061d904049618020568cf25963029016e1b3261c112b8ad0b0eab8b490d4296cb0929750325e0b6200e3f90890f70db8f06b2c9983d2619a6f76813add1269246996a1369f34a2069b4041f9306303da5150463f69828e8315de1fe8c02c2152c4f9367f094544bcdc0983d260f04f23150c61560ea9900d38b5375073529039c2eeae5ebc479cd5a7d6be2c098b5fa9677d03557e0ecc275d22e863171e68e8253c6d174316d7785ebdecd2a268e520be71b70d7f7c535bc31f9f5619d32e6121168264e609c5daea31af02e00783e4b2fe0dd6e37e90ff6c22ad2681dbc14619070a207c171a49506adc93498863d8a5bb4e2795026a9694e64e61597304e2531cb389fe7ee6b1717bc54f1bc7e01a3599e6b94814b531b324a8766f100c1cf6382064bb0bccae2115e2c99a0c1123c62c9040d9294c2d642c834523c1fbeb416bab78cf344262ed2f20b5f0899c6228d250eb207cb63792cd9831d32060d52467dbe6b861818622abe18b0cecc5c2313b8df72c9006d00246d00b8692c2b5dc41e73190300b2a64f436b707f5ab1c6f19cacf959e90c331633322b6488890106590ce6a980195f5ea22b6cb9b05820cbfb3c56a55dbdbac362296b5857eca9b7e24c9f6fabb4514c2a6b284b4ad624c2fbbcaf71bd37270442998ae5fdb415872f55525931529d47a4e024ada100091584a294019f53a0c0ec9af6e7192b5a650a5396379fea8b8cee1515d537ee6c743d4a4373174f77845a2f0d9786df9b5d0719a7a8553e90ca287191eef5de2794671d25abb3c332eade45367b77c837751d9d5b0f5a4a9b5db5d9d17a5947185fbc7039c168b3b339c0016c0e6073001b9d9dcecec6140f94295374313231328f79cf58157d3ed557d4cd2ea96db308a7bf516adb3cc2e96f966e96b46d6239fd0d53dba6114e7fd3d4b60903249cda36abee8d93b64d24dc1b296df34e7f03d5b699847b43a56d5309f7a64adbe612530949f84cc24e2454cd25ec8cc1bd55d5a7cf246cbd372c4d9b4ff746358f70042318e1fd598422bce8138b95e94f2c2fba372b30b8e2e2f957e314e355d3b634ad861338a5208b4bce9e7302a0c7aa00000000335b58eca2186933573353b45a33575556e9cc10f17eece8fdb165830daf3426aea106630d04714e40a00ac2874084cf294278964ca000d3e34c20654c21fce6268a03c1ce207c4e214210ee7d0ee1932a080f5fc49e3984200c21084dab41b859264b4a2b59f3ee7d8aad7806c166c1459f5440b8b44ad2661436896a91365e140fa96b4eb1144f20585a256bbc4f220ce14a499b621bcf21582cb8e8530844c04542c0450f59ae39c54e3ca9823081609b0c5d3aa3a09235de2b0663d16b2fd2dd43828b7aca8b8a3e5cf45c04ae4646f73ca330f4ae7b5bef3adb2269bab82d764df3ded759a3bed1846227ae2d946a7581329faebcdaf98387f38aedcf1f58284f4d94b000b07462054a74ba2af618d1601c3a51cdaef67c931ab2b5a727a3d792254a969a466b6ad7ec6a929a4697e80cc63e10a7b5a41795b19f6b33575222c0c68c32a11845b9f5e611dbb84537c7f4d591014fd350519ca4273de0c1132702c58b8078fae0f4345332c69c7aa6f901a6a78142ca985337884b8aa3138495679aaa1ed8f9c4db7af889f727144f3c84117b261437679c4f40319fb8eede13974ad134dd5952eac89a6e3e61a91492c6831e5caa45d292a895b4d13d0245ec70d3ca43ea6a4bf1ec81a55aa60fac11104f282ecd22693adb784261699629dd2912a40bddc4b307b6c9d0270f6c13251037f4f9c4a55a684df769c5d22a59a37b51d1d3435af415433827453649746c74921415b19224290a6b763549454530b1a7a866d7347a6b92ae4c3fc98720ba327d657c183ad173435c496b49ee54a65a6230ea744546469687eaa6dc9929eecc4c4d52d72c116163a0684d0047dfd2381f822b64f8e575cf194ed78755dc7834483fc8f3afeab734cdc5ee7e255f2e478c566debd5789b5232e69bdd05c67cb3e369989d2b8928516e487219326464a22779be49e190c039e19cd410117d6868681c3a910d55a85021f6f4751989fd19c5da24352d0fb151ba363a633fec5abdeabd5426a38cc24d2fa57c1bc58c624f352ad28dde95d15d62af5e4765adf526255f624f2d7a063defaf63101cebaf64ed2615ce29f6147d8a43e895eeb5bd9b54d3aa9294aa24a7d1ebcdb4ea6e64f310dd54aa37a9238cced3d54a94dfa68c4e8dee6d4aaabbc59ea2b71d71916d32f41e7ae8598987ec4d52d774f766078331ff6ae221fb2d5dd3dd26434357762d48905aeb6cfa62b16b1a9dbaa2cf5cc91adaaf19ab43c91a9dbd4935cd4af88231dbec6c7636bbd7a7c5e5625ac2444b930a152a98985ec2a14fa92b01a7883ea2b9446bd43baca79530e49bba4ddda4288e0cb826538902536900cfe0e87a2dd1350792804a020a4a0739c0819d4a7c56b113066f3b97a8d7cd25b6f4941647b4d8b5486aa1e4795e8b23b6b4d8b5486aa134654a8b5d8b23a26c69db8c12e5b345520ba516502d762d8ed8d27d73119716476c69b16b71c416a81647b4506a71c4b7a569f33a2bf19291017f2d191bb085e60a0d15cd962d36bb2d5bb66cf91619191f867812091065090c7169a86e4e15add123e129d698b36b8b35ba2948c51a94d6b18a356a6d96d8d357015fc05956c686c4bad0eb7bafd1f78e84a5a8eb7bf76e4e161a9a1c2c4da3353c399b56962773c37b7f62efd24cdd1c2a59735f53c606bca68c0c784d191b50afb46dee6007f7a6134e546569db6ca2092d6d9b525256535c6dc9212907a51c94e4b0a46d530ab8dbd262d7e288282d94b6e820079f4ad889832a529450628925c01d9e97495867a794d7c04e197cd2c0ce187cce808a9d3048c2f665fd849a497c5657f3bb9a2175495177f311d6bdda7edf1b14cf2848352fe82c1582629daebe8bde45aff73c6fce60cec07b2dba79622fc45ed1cd48b8e89eedd73cef36f050cff68bec8c723312d69da7bb2f137b9aca27152a9fb5abb6d5b64c19124f2836ec8c0ec313d6d93cb1ee2dde08310d59ae4c9bfa15f62ebd9b87d43c6b98575d6bdf12a3907a1606c59eee1b55db8cae0d3b6c74a3dfb0dcaad179a827f6889f5056e21707c6fc1707c69ba72476e84358a2cf27db57fa66cac3c166977586b0492c0ecf36bb1caa043cc904dcec6e764dcb3a2f108c2fbf4965c1383cebecfa576deb17d3987fd5f766f7abf9f2228cb908e34dcbee5793a10fdd2324dcd06f52469f50acd1876ce36e5238a8b6552a6d9b37b84154db26134c48b5ad5e2b6d9b36b0c1bdd3e3a6da36a3ae4c7f46bd4f8fa36a9b0e0b0c4e8fc34981b36adb8cc1e97153b46dcae0f4b82d46b73232faa4622586117b8c3cfb59d580069f53ec9c0115285306764ef98c819d497cc2c0ce245eadfcaebeaba6cd0935a1c4a4485942092c554a4c28506eb7dbedf6d3347a9d156a1add117a3688a6d120551909bf9418eb8b4e74249c51d195f161e8447f52347425ad19dda2abfb9094b1be757648d318d034fa5712638e915a74459288a98a898a99fa62aa5c695bdf28a998a918aa9e5a7a42f90a292b532ba856605951d555a6fbdfe724c36388a3241fe27e4d529c4f07c1a8a3d434aaa34467496749125667d7b422239b91b0d114ab93d4b4246c460aa7abf1cd2eca987fa5bb491919e9ac4ed2102762884bc4131e443f3a11431fe2f51241f4239714657c18fa100f1afa103788e84757d25ad179fac534f6f34d4a57f46a91b0cee6a21725f1223ba74c394fe39ca8163c936871d938b71627b2487a302699ba5969aa79cdbb2906c3743ed9895f221891b07c7d604cc06d6cfa572fb1a793589912add15fe93915cc61c41e2e456b748a99abdaa53863b5429667ac5648451969a89a4663b24605a60f61ae281a5f414586c7904c8ee8499ee412217343f41ba24bdcd03c126ebe82e0e657b9a17360cc2ba48a4e69940e344a87285aa3d7a1a787c66dd2bd588d1a0fa7aba398504e892067a872d055d1dad08d4e5f67a4985088309f6e0d57ae776f5fd930edd558d39a09acbec065d784530f62a69a7052e2d5ce33be8029a55ef05eb36b02ae7153bd7addf30d0b162c98348d364da6ee66e1d434164ec41a13b35062a1a4699445926455168bf66481af3e4f5f163b5903041f8a6e35afd9f1a08387e711ebd0c1c375bcc8b27062e1444e495fde6581048b9daca18f923535ddadfde5596757646386ca860dd933523410c6da6f52746934facbe5cc15f5ee8c958cd12c921e2563d42dbba6d1ef88c08e5a0f8db3a3b46467b71381da4e89e2ec342d69525a82e9c39da6262716c7246b6edc98507060b942256b74b75eaab6ed30358d08d2b6230249a3cf35bb1aaa28ce4e13adcd54e196640dfd8c1453c68e9399a81f704cb8cf4881e9f8c3a330cde1b96677654aaa6930e8dce816dd9a8111c43e5c4a9c9d275aa3f7e12c92daa67be281ca7441cfc367ae66b6b0d8c918de0d0a10f519ab9d278ab323456b454f987e87ca94b17365baa09f4f5430fd8e14c5d9a1a2b52b53c68e96e982de40da76a62069516ddb91a269f43b52b8e80abe61691ad5d414789c7e872a078f1cafa731cf581d4ac6a8dfc982012ea56d678a1cedb2716e689fd9d236239f4b296367cb7441eff399992966ae648ca22d3b537416e694ebee16ec33a7105d3757ac107b6612ba28e7e925244fd73a9778b552ced361b8e257f8575467d78131dfa4a6129f4b3c4bf95ce2f4363b1b69d3d96612b619e5fd6f4ac668e17ecc4b130ea96bc68abe5e30e699ea49ecd9f07f38c30c4a2831a57c4659f119ceeed13d6ca76e27b7b76891b048348d5a24ac13eba4d6271cebd4346a9b9a4667df6fb14913873a3b716dd23a3b5f2e18771e7aaed79391e7e107b2a68cb7872eae9e32de5aacd1584abbc3618a98f69d8cadb3128735280f8dec840265ca94162d74762118276e3c74a27f3218f3af4039c3e932b2463535353d46e7e970002e9d51f7d0850bb1a7e8ba3cc415ae9149181955a3cf290f6f70813818298eddd11aa5385689d668480097ce38a39c00620f01c49e99c48c72cfe2b8468a23c383e8431fba474327c2117924f950928749ac0b530c9714fb49ecd0db0625f9d075bac710790c9d68e8e19005694df730dc710d59a27b96c7d089eed184eaef884de653e5a14356e2746ffbd16a8690aa7bdfd1aa6954376425ae451aba179d8726b1125764f3906fca6549d3e80390705f172649acc4395dc1d2892655b074a2c915fcf2b5606425a1384453461b3163e572c4986d441dd06564e7944fb9d1c3170bc6d34cdd3c8f980037cf20260001869e69a830ad5fa1fb8a5708c6a1139d668ae60a0d150d96b6898791c40a8c24f657b4467536ec70ce48783e3dd1faa123e1ba5e191f883e741e441fba474fea8f864e7469533c929ce844f788e8492e12aef6cd3acfbb2fa6d1ebeeeb2694171d09b795b86842d189ba8b3a2bb18ed8a39b4fb56922ae89c8e29c688dbe3c50bdf6ba75baebaedd795dc1ead914d9f475369e4db599b1f2c1c866a3f35017b1a76f646794d72869db9c727394d319652631a39cde8b224386d853a4bb675d33f3c9e82c94b42debecbcf97469349e4f33335368c1f433576d5bb1c48289e224b12080e95934b140a271925a4f4eb4e009a667e1a471ead2cc1616bbf964e4e928b54d47894bbcc1c2de6b766db319639ea08ce3cd4e77aafb7cba575877a3abbb77a37bfe550cdd65d1a5d853749e068203aa12ee2ba43e0fd19d52d19aeed5ea2e459d1da7e8d72871799402b75488342694eb74493e34f4dcd18988ac866e573d240df1a14f51c607a22739114f780c3dc98918e244cf25f9d12562e8496e9292d81b9195e9ebc3c4dda47092d6584f8c374a37bba6b1ac8c79c66ac6ca76db730ceef995aca19f0cc6217b5aa31fc282588a31498cba87307489513ae1648759f8576da35df88174820554388deb1bac277c4eb89242d1793ad4196f576078386f569ad6d7f36e5758535e4ee37c351975fd2bbb933192da461325634849714d32869431a4c437bb19ab97be2eb7d16794cb19c568c7a533167d47f71db147d7ddddb5fb88a9e89ecd453b451626a9694a304a54b8aaf803ee89e2b8e0404fec0963375367476b2a18f34d8ae7f926f52d3131f4f48d91fa7230e63c06b1c6c431512e3178618ceb85825b133727640cefb51dad8160cc37a9192b9b5dd5c0986f522f2e628ee849ee4d8a0363b6d9bd52300ed5d888348e6b764f8cb9869a5d0d4a355040c6f0762e771ecae07a21310e753f26a6a667ac66acba465f73d92038e3b2db8248185f28a01467e8373b186e7630c000c35f2718734c546d2263c480c1a1cb7810b0ce5f261827959abad9dd6e52b7db265aa35604b22604b20604b2863e262a26a7b6a8740bf3c6d928089d423323100000003314003028140e880583e17858a445a2da1e14000e96a85878521a87418e52c618630001024004000004000422920600e986a80d512caadb056d6f466332e5e7b72b1362095d00f8f17dd472b16e33afa262108141af9e6a2b3afaa73b8728ca7f8c2e9e6326eb2cf1a6dc8fa80f8a81ab4a763adb986958be4ee2d657ddb6fcf6a21f0bcafceeac220a01c3a73fadb53b9e584603cbec855205df31e0bfc3b2e812e3d9df228803cc407267896ed9d31247e9199e0be0af5feb6ff2881b5545ed7acd7f38999ed64f7b3accce8150f4ef6d93674dca7890bebe7829497426e33bb020b543869c2e8beff699a7fd20d0cc2d454856232c936b08e60f85e92df5927b82afcc7d24b76ee70fdd4bcf1a8e9379c708bc669f8df30b63dd1bbe514b4fb20fdd03f361b625b354aba3943e82bed307ddd5e9ea5a2cfc34746dbe605ec5d3b25f1c6a29222be1ab825b37c046b0b11035b4c3b2e8413aaefa50f3a0a434f38d98412271bd1a19c20baef045c7171139fe7ffa2af66daba8431a462e8697c2564f51aa455252da201f9308c8839b1bccd0c9500009accbb4b36e73ddb4c1af74dda23f71ec5bfbc348b23fff1c20f77be4112254c9c9c783a6ff3de7bcdfd56ddde599d563ed735d421094a24c17675116a7efd04b2750014f29e0efb4aef1490b67076d0e23cf5e24b1bbbf432dc7cf898ddf0c1da823ae5dc495fb4526d7cc3d4a50e736df125920ab0a07343a0bfab45a354c1d5b80ac65125dcd9846aa595b3f689efbd7391938649410b2d789012411796ff1290f87313e42724f78c27b8b52a269b62a72015fd2c7cbe6b2a1b06b44be28255cb43b4e8c93c5bcb9f4a460d4dce0e0ecd8611e36a5651252c203449a4f601204f3aeb71d535f4d191156ccdd3175ae2c8e249262221467f590fb620a8809715e864a37c78c02404bc0aece701d604b426ff44f79d220b33d436e167d32e89baf9cf6cbcee8ed13eaaa9bbba6c4d76ea429266bb0d6f39fc945e52d8806e675eeaa2dee6dddb04966c2bd42f6cb52c243ab936fe47bc398d8f81958906d0b0be36bb690ba8cd59facc4fddf3f552c053de167a6c87ae7c7db36b13a685f877a11130b4ab47e447580ec30a9e77d3d58fd79ee20e603d9781110cc463328418bfc386e5eb76980cca2c944ee671f5749939c67f0dcbcbda7033900a1b7f48eda1ff800d788ea8f1dd856cffe2122e1c109f414d3d81e33319b6ebfe8aa34526a236257beac34b7e00c72ddba8a6c4e786cec3ee1c6623a5f6dc216ee306dcb17c678f7e580839c51c937cf34f0c8899298eeac2046ecc7b01f7f368a1dd1192320691c9fc47c22c380251ac4ec952fddff0b80596ccbf86401ed7b6e8660673f24fa021c04b7492c40f38efaa5cc592cee74fa5396ec632aac93bab6a3d1efa23a2f89291f52860aad05a0ca6641f8577749e546b6c12ced6d8b2e0121f12084b99045895688e08cf883c8577d1b6bcae738070c94c0388e42ce297a1929c19975d3bd5dc4ab47fdce3383291f5788e5ce26bcb5ab79d72ac8ca89c8e9b418ea8fdb5b43178e0358c46abeb886fe576d4fbf367fc5ea6905511c80ef0999796fa8e1c0d9ce120ed2bb9b6fa84957758269e975b66974fad319c8416190e6c23645f93fbf6bcd0b30f3c3bf19c826e0397e389b0ed93d8026d40fafad4288ebc28d784397d621a308e3fd3e8fd44653dfbcca4554e242cb9af613115bc54a8f5d96f119844452aad101079b2e1227398e93f275da8f3dfdd3ab4af0a3a84239d7bd4fe1537fee40ecc2ca76adfcb198fd922dcdfe25497a8eca494648409c3c849445dcce9207e01c5040e76bd8a5d72783234a3e5e28fb0e0704b1c4affa6f9335e97fe01795409e1e939cff32510d1ea7345891ea51adb18446edf4d50b232ad4c917d015f139cc8fd85991fc8eccb1415b6b852c52c7c66368c2e127e855b5067a083931b94750d8033453d00142877115e307e2fb8df8f11120dd7266ede9534144b67170768a534bea44c48e411715bfebd4bc31fba4961aecea5fef05e8dee2245e20eb28ca3c2f81c7587b2e1d894d8e90b9a33cf4264640733aadeeec5adb60e7b8317473a216383ab69290a566cb34ed99124744e0bc6669f958ee864b0f8b6b7f98c51bab587c9c787b621ecf4ef69f160aae84dc89c48b50804f97e4ce4ac44bd59454e2a54fe740995a95fe29485ee3e1ec43efafcc252bfb2eaff6b1c5f91702f79aa534c8899e31e2bdc0e0ef5635111b4119a64bf4a8410f74f5b19a3137fc19e6d8a94222b4ae6e3430ba36a497336511a6d7eeed095e84afd634d82067a974ea20c3f9e801a30a8c5717b04464742f4c4976ba13ae459d5e1d4a3f62c394195e146ef678313936cb0d1ba822737c18f66e61ca07e0008ac294edd35461f922d217e5c63045aeffce2a5e5519bff1538efc992f91d3976bdbe49193e630d5ac24a6c89b0e81db5b0a8b81d45a3ddf667168e11e4f85a91a9775d8540474e14381885345c80de3124c430c2cfa19dd10306eb5bd2231c97de30b3535d5ec8acd051d83bb3664b0835a9dd8ad26118758f3fdd4a19324052f4a4816e3dda4f0016d49a3d5f2c355b57ed2470179607d27dadf5aac226350ae6ff18ab644065c38ad531cb6cbb0dd1c6ce337e23aee1bc6f1bae8a7404217cee4e888f875c76e580e376c0c0a0628d185c53b079994977f924fb800b1ec8b06934cdc223aee272bb278861eff39383becc4d6f7a0a100ba9b490949370a1c948ce1f6163288d39b617fa50fd9c61589fcae70bb75dc31920b2498703d11af9f372778fe4fe2002e246a350325d25b280d644ef64dca1ddf9eef02941fc00dfd69732a00e4d8446f26fa2c7eb6a06a8d95949f37cf80702a7b6a8c2810cc965bf026fd87186fce2bee59d8fc764551cc9c506bdc9ab0373b1f7d55ca54df455c3f8e938db6186cd91ba943eea2fa36dba55e4b162fb78a4069de707633e5c33217bd2e12e346bf4285e76179f86bb9ca27c6c1d6e284868ef730b8bc097f52739e4268551cc91a0c7250c54657fd85cab55e91d95f5b2c2035820dc6c899396a4d868755b313f9501a3127d87d931aa66e4d35929108b831a7755df4946c4d83ed67024101784cf10531ac8b49b7bd751c4666f584047514e40a7342720746b1233f0010ac5d00d0b34eda3991ca5ccc3635ca13cfbaf882bd9498b36c49993f44012f2044803e74d2e8524f30c021305006e10f956eea5542527a13a258a9141964660966689e4e728edc55540c4fe7235b66f30051d413d5ecd2017356732ea7a3c359186e7a13b4d327ab129b435925c2fc644166f2564a954e08d39226e497101d10e3209b7884fb0239ff235565ee09f82f2afd24824eb15910eaf6e91ba65f38cc683e5003df09fd8701b54d40f270410c6d4e4b09066626c3acfb03ab19cc07ab7489264f8d86f8179a11a44738524d18db9c4f84d1b0652f4c8de873dc4dc7b6273c301b4b6d4add32583b9626b8a6b3a232a9b30d290621be3e6514a53191f9854d0383e18a29399be25707274afeb24b059c6fc4316b048afb1b6251b38b1c36d4477d6e3439a86437001dcae031301add6815a02324094e6c8925f2668bc34f27663e85d07fe68fbe0d08789daf58a61ede901d9b327959e66dc684ee5a70baf358c106b93a48c4024e78d19ec87d76171e694e4720f1d9d31b1390d47500d596b57746413d5e6a2948f325e7c6e867116ddd4382d8a0e7e8daf66dbf616f85dbd81145468c1b9a3feaf528db0fd08ef3f67ab0b26839831047c336e61ab0cb931596ac084c08561225e1897cc71c002c436d580f74179ed9d3844833c7c8d6c8815b7e0538a74a76bfd07c558b41bc610482f44ba442991cb8529274a0c85682903c06ee12df1bb9be139a4ae41eed50dd790e5962fbb44b98ccdd551bfc0340c11adbf6fd9a1c411c3469ca65a2a6d1b01a0a45927cd8aabd8109b41647cf92250ed7b51182225c851bec925dfdc2040abb4517be811bf1cbd21bc606b76693e2c159a7989d5016f723582db8f7203a82155017a57e9affb598d747782a7d41a4b4170c768349a554e98e318b1df355c922c1000e15c3955c5239129211a17806f92438e8f3dba866a04767867d4918a8a11b6c2c14f8f59205410d513dca75dcffa0f0fd9095d111ed10c11718b2b07b685e8a411b6e0d44026b3ca566f50c268bbb009febcce939c44fc4f7c669eccbd9b3131ee175e6aeb2bb1b03070ee83dd4ffc242926267ebc07f07d6985df4efce2a9f55978ef1d9b25eafaf755d167917f2cd46f08ba32609ffd246c70b257418211a32a982aa9450801b9a49c71ae689b507324b2bc375e17868201ca88b1a9a6c34ab5ec9ee934f9148f78fedec84cdae9d6b8841e9476455cb7b0234d9b59e794f4f929f415b5e43ae58b8f1a779c7f77669f63c6b1f6bd75005e85df44ac913ecc354f3fc88824703dc0fc4a2c33d8b39620378cd91777617eca30082931dd874d07b4e24f88f3005db5602dfa3c86cbba48fdad8de01241b7f662c8e57f27262d315bb9144f0782a77da0636ec8e5d37030648394f92f603aa30fee415664d1f9d35a3cd924e21ea31f65a5e168fd6f557c2efade687e7f0e359ae9d490a0603a88674ac545c998793512017d497c425a2e9abf7a12cc1fa346c5703d92914c5fffc7a1ada4dd1edab2abd542e2b6cf0c133d2c660b4d94ca6cf841bd1ae4e218e9c71df2c3c387627c25d4cdd80ef6c86730ffa43483fbd48f6242df873e84db4b28420f275381c8b4ed0f60a9abc67c8c8cf2223e130a388d1b9df9659b09f867c0779487603ce2c78311cf71ff81a320f83338cc10273c907afa2a415587065eaad4cd3ba3cdb623315c45293dc40a7e02e62e3161aa71c609639baaea28d02aa8438b8481d5fd200ce37745087f937f5bee1f5d1ed68bd23b6f86f12da1260aee2b7032a832582d30e8b6610042734cc8412eb776ea40832661cf53c633f58732c585d1f35fa5fd8575a705d195d4dbd144c780ea02b4cf0832c91413d1402561b91e97f4102f53d6ff71b18a5e8bc2e516056be86da93e151c16c02fb3d0aa11f100c6ef9f83b6b1f3e5452eefa2c4522626dd4cc9e396feb008b8b29f91a09e336f193342ec52115bdddddd09bb6e7fedb7d4ac3695c614d675f183356c324df220394e44cb9511b8270792910006192d7b8389cfd900b54aea804a0ea67c9ea1404863f41817ce46cef3208ecc719762cbb28ccd36841a48b269715b6570549df7afcb204663a87e24bd2e3f5efa85cb284172fb1ff0533ea89460bc35bc18c786cd0601b0167e51304aa7ea86890e71b082d9ccabe667a739463317e03176dc4dabb3ec89a0b251768175d8a1ab74737ca14e1ecb8b43e5c33d45228744d5223e62d8291b4a77674413ddf01cb704ede7b6057b08203aa9909f98eb36f25820f5b06ab38814bb90be5493ee53e9da81d65b6665f0a8d8d418ca824d02e61963b0fdfa78b83f1703e36404259cb1d51c398c8316d55bce7e984edc242e503be26c2c08bfc046d0e8f52f7373384b05f01e070e046264c347cab65b5a6b7ff8abdec7fe5c78407c2fbdbb34fefff4562cc49c97b2f39d717360c544478e37f67c436de3091fdf85d8c663723140f8af9222f9f6541efe215e1aa4ffab88e2cfb3aa4992de1d70f8b572199822d9105b1e3e37ff34a2da77dbf8f1d82964a764c1c1f76e5a5c3f6609adaf00b39d4abf0e3452df52a00e010a9bc156cae64f1f664684ddd04636874f889af38402255484454857777b66005f67a5f465e3824f2875c065de4bd1b04074c032884e88092a6618bab501686542645ede10babd3d2a61fdd35bd8693ce063509b6794caa9259e36a4ddfc570e6a3301cb188218bae78d40b847d7f0ce3058af052afaa8d3b9bfb4296cef60ee9c2ffe8c2ba3488730cf6778dc4c716d21914c68d1d4a2c303b732060560405908f68d0b23564cfe005145acc7bb84b72cc4e270b904c7831a298a41efb55cdce48fe458e0f34b1b9516766ae3a6428a859417d988d4bdb925941ad8c2c958254e2c0a0bef86f0bb359fd4ea5677804dd5b491a926206b87a26db70ec35e0945a7b23804d5f3e05256599199b81e964f5327fc22201c6d43f52cf1705abd4fe183180056b17934783e8dd2e808049f18ace7b1bb3938e71956a0c7c5ac5c71c32212b865043235ce49d0788169d641f67ae45e226a599147e36c76f43e758f133cc589caae4bddbc9fa7b81f4a82182fb00abc7c0e5385298b6ed0e8b674bc0a62b425ab137c7cf488a5eaa4c539293d168a9a09a50a7ac52ac54ee2c05863f489575308a80abf61a4bc9ea5be9fb0a839952c33b8fc14e74ae5c8a6b45dbd5558a07e16cba0b57e87b2c46fd8945d989cdff645cfb447b788ab9de895a483f8a61e2092bd374e86771faea7ae29e0090cb1a63a285a7a2aecf53f1dab28b98a7240db840736dc516969aee021bba81c3cb9c536251c2619fe54f6989001cca1c8b50c6e890b879e11881e9ec9d18755970741a9adc95f3bb499bc4123ae68d3cb5d64c3ee19ac99758d3acfe929824d5ac6901ed32777afcdd1b805b6dd0d44d828e694dc54a9284847b6e0211ef3b68a5b7b0585daf7a7e07466fba97c3265917185274949ca72a8f0a5e4a91b7a91622a13d7935140a1267de2cfb8cf0694fb6c5caa5083dba176d1a892c6250916bf36a8f6a5ee63f2c8449e2fa107c179a8a01c5f1fd18992b7dfd335036859f1880ffc7f032232f1eff727ae6c7c46c7c3e8d92e23090bfc654d934f152d7a182ce2ba2984521ccf5e0f7a1ec86aeef92dd98dc10b601ca427ddfc6a356f6e2b9f5ebcb62c2028d3f21d8cd7446762574efdb9039524b473ae5f8186b423e5535b38bd34743c94e738ef69a4b6fff745c7eac3e59a307223b074a539bdf72ac76d9fefa537d3b564bd9e147b821804840698ea28dec32327d2ff26b28b4833094bd71ac167072bd5409570f52e2a3c380b1d03250117307e38678ef1751d9a999684c6a29fdd92b1192684a2b2a58301ff3d2b400ec34c120d71f30b1e27e822f558a1a944dbe732b8b59398a362a22e0bfe54757b1044b4bb5d8a7e730a4bb0d7d25a0ef2156682a5f279a8f2146ebd77542c70d1e22603325a16124ae4291a5704d4e516f958afa66227bdde296b4c0424c245d68dd35748adc0bbfec3d057fd2646ae207d14a8ccca9ecca5c2308a7fa01c872e88b188e5fb7d6032f4b2994b3b87f0ebbfadba7972f70bc7ff1fcb2d9bef8f2e402ddc2c30f21c7838f71efe570671d14eb922d16f640bd03ead57b4950393f485d1f7a375777378fa68c0af338a49163841036b94fceba1cd522f66c954cef0e89c4dd21124eebe629bd1c5457001dc6284c675ddc8ff24e49acea84d5b8435e50ccbfe07902c3db8940412d039f154ea123884f95bc843ee52ea9679da05b1e2d6dc42f790f81429c0806a8f0da80e3ca6800b8eeedd6bacbd934b81d44921acfc9b5a4d3a47d8290517441ac90cf23b0d4f8891581c7ad629336cd28dc919e65fcbfb66ac733bba00b3c1a401fb3fe652721cb8ff41bfe80736567c71cf5e14c0bccbf4e0a752e77150ece74cf62a3c09425cd91b2333d1edcb4338da99a63bd25b3b755d067596d3c52c0fa35d3180c39ab4e9966c30c8945a6f58bdae75ee14cd91579d8cbfaa3b1341ce19a7e4410bf6fdcda980f396a237a246f1fe20a2a765f6fdd2eaa348cb9885506691d389e2c6951b26f3112fce8fd54811950245eeb052cf1136fadaefbc8044d082036bc5af575c64081201163ea8a8bb8269bb991087c2289ce5491896f227c7b84fcdb3175b9cf5c842fa9db9598dd7d9869a4a99e1bd6bec0f604e34c55a933fc5bf51e23c7eacb1e4ffc1ea0667f5afdec70d2494fee01d8ee9eb6874cf5a83c1d667d21180f0a17e1041aa5b3207034a0ab5a205aff9423906c2fa6434a1e6c9d710177839f150e4b048941806ded8615f4ec19d439468738bb6192fd79d47704b1841f5fba7282382ec1e6d3640c579b474026934f13b10135dcad20817f2fd9bb5b22546385ef6456337f68fa90e66e12aa762508c0418f2f51cb0820eb1993d536b8d5e857367f7adbd10511253002310616373b2e6f42be59b65e37e994c2429f2eb4b8e2a53b4880bb7fe82c0a7a4132508b27b1220b5c03f32a5ad6f51e236037aea1e89fb5619151954d5db53367c0e8a506d7ed7d24f8828a5b8ae07c1c75c54a30a74fafd6247a1d1a7db9782febb0950378073ce66427fe3ad8e3d7c7e77324895006a1907caf265ad676fe228d899b687ba0faebd183fb9dac500164641d656d83679fd9f8dc0d40533153fed396af1a952fe242ef65c83f735781f7af9f2b7689ba414880af947199781f480cc57176369f67a5bf1b88e52c2f44da7389eaea38ea66d80eacb26621f7d0d53fc33ae51207de10a53b12786013d413c9aaa8436248b155381292dd603d5bebd05772ac9000fdc7b0b90c82cce186c11b022d48fb49a89a3f262fddc37db69aba44e9c94f40ac4644e6c280097c51c5903e17935dd71832c41c17ec027d114ef22d8e0835e890bb5509f34833916969063a0ff84a6fd8575bbe9fcdda60bb2155f0153a7ab981de2f5cee1bbbacc47760f6a7fffc246a040f3a530e26209d03f2c3bf411d3f11fe719166bee0f7c7290e0edfe24af24cd735ad32cb842c0f3e89663866d0895b4e442e8676e09f334dd56fe6c02aaadf1ed4909fb1ef448ff230ce63056c5c43e3e1a344a643f23b54b683307cd671c34b3e3bcb0eecd0a2f8162b3fed1aef9c19124c76f4491c61ffa77dec5f13c0831d3aff88a98f27336b158199bc840969a4d7e4700038a528798ea64357b4d57dec0273152ef2b305873821b0dd7fde5533114739325557991c3c04e6e3b71dcb448fabbdb7742a860fe88114e1f2167b5ab7b4cc3bad0712356bcfc7be2c2515b78c2f361beb71f3f35ced07a7fb6efd3b0f66757aae631ab2b67b88322e75d58d32d890d7f6a13f497fd0621d92fe4817dd374ada7d08814dd2bf8be9c3cb7841c68ead60da4f1fc0ff9c8f963167b55a0ed5399425f5962a7241de9fa15f12ecbe47bbdb0343da87c6fede1ef151893d3b150fa43f416ee88ea92668946878cacc30cc88249d3eb7aa8c8312b3c0465e8a60af3c69ab79e73b5aa878ac96625c707c7ce51f7bd65691c77036ceb4f4876ab192114ad9b8a405026cdfaebcdbe2550a966125ccc53f83af2fe2b15c161618728120ba35f225d261e64ac5b2c7a2b40c74e4cead722ab9348679ceafbe17b6f8412bdf30abd7c5e2d2637d6d15965cae531c923e58720d2d954067d81b1f8ae533b5848ab91a1b3ade0a8023ad12e0146ed18afd055af257cdd293240185371c4445bdb028a0afd96cb9fa516184cfa069b688c18b3cde8f18545c16e32718f34213dd5313905883a68edce2b2d7aafc744396d1753672b5aaa4f78209449f5a5db3739b3060f672c0f3b79536f554ae2cd705f55f92faa1111c9e3161e481cb17ed3610fbbd8233e81d38118b292c92da24102418d10709e4372f6cbe410e10cba50c70b35556197262678271015598f40a363033da0c6a5fbcd920bf8fb8840481262dbfe252dc4cbf542473d8686eb0d0a33c535eae25980ac423bc74009b7c116f07d18dba7347b59a5598e49af5bf71c167afce66edd745ea3def91269d653fb2956a159dcabb4aa770700ac54f5605dd424d23f4583f3c31a8d1e54031c48dbdb1f85342df8cc6ca776cd04bb77aade63c9a2249847cd8a55949f6a26b57486e3202dd1c1878eb0b25e30c1fb19d046c80085b7c134ba4ffd383a351f9fce377fe7d327f853f08194ec2d81958f653437a92adbb8fd2b3a19cf7e22fb7db32a9f7f89a8b9e148cf4fb3dc4f819d1b4db33bcec95a85290650b397cd99050449e848e5674ea4e702d86cd0527cf2e9844556a18ee957490301c8e9088b8feb5488b785256ca9fd3554277107ac1055c6020c0c72fe92135df31709ce64122c78d4eee5ff396fba23081b362a46fed5b0eaeeef9e694435e1cfda68c632c977a69bb4142871c0f168b3203ed8673cd348713d82ae8225482cc53878bec31be5940bf043d707f6b1f6096a3c54e357ce752b904ab453d7cdec1a78642e71017450540a9549381e294d14aae238e116366c850166a86a2f69dd19deeb00f2765c86ac6efc36708295cf80c95726aa876b08ca13e9d986b62a1b87d5afef48218e64f838bea3118194e2a9543a10543322911b478c62211d1955706c31a5de99cda0b53c8c2ce4cf0899119547a857c4f1240cbd860790b57a951bec955182015c637e256cc38fb8b78ba2105b8abd8c295ca9f52923471ab643bc29ddc8530992870956fc49ad38fa8c05b9142dec02e4da06c794329fed71f3fa40cde99cc581742c4d18b1c3df1a75bc0c9cac114e42019424b52c02a8d88a7c27c9d550f86765955a535e5c5202df17e393b39f8fcbb448657ba9c106c66d9fb31b1acfe9ed2bc8a945c74084c45d9ca5317a33af4b91742fba65be97e71a31f764b3958acd668064aa890b548ffb3b1eaa127c606e58e727568c3a92fa6e6c6e2ffbf02a106ddeefdaf3ace41eebce15d99db70f76c06a90b7f72ffa2b5388e9dbe69312cc6bc55f8404e403b8a1b2fcb16707a1b054624f2b32ca6157c98109940d4e5360465455220572438f3fbe40b0357d833cedb64a6df93eaefc144eecaeb14031bd80bad3850bb9ef1b9c501f66bb40266aff6d709f0ce883ce8a29acd753be47359484a8db97552dcfc8d5f69295da0dcad2c49f9f45d29a4b103c9448573fd9d0c5858a52bdba4a05556e3cbc5da49d30cade2d37a08c9c02339a6552649b41f1920e6c2915a5886839ae02ea19cfa39617138f6fd71edfc0b822c48bc40d806ad992426033f752c2ad0c3ff9baa69f6cfa9d83992668faf4542ffd2378b9224cf86b7a3c3100f5a15a5e1f90ab3b98186cae2da8407e62b6c9973956151816dd62b9af79399b6b7e00e46b7d6e225e90866e64660a08b9af0c14fbdb4fceaef4c2d04bf5718c1189356e49ac7f468ae6a1e6b9fc920c68a138e479ded4add851a6ec51833c8675f9c911645b18608f37cca42f0976e8d19242b8df022395f6633cf9104357b184d9f17cdeb7f0c6328a888aa3850a8641069b73db259289180ff6800071e35aed5b32a50d25c9f1438c019df49afafa93563b272c3c93ad9ba24c21a35d6f9969b28035d7e3237d8b05768d0c1c5d1d334a2ee83e7e2de5cf1957b37c5c15523febb8b45c91582f9f47f3fc8a7f595afc4721aaa535256c848e27e42cd36fa9423000b078c405a6dfa043e76c84537cb1bdb8e485d9c86d24c13a38608dd91bd5b943a4fbd1204f211ec584e6aa1f71852dd0279b547326fd064391db3d6a368c270caec53ab4eb5587a30e7889734dea9f25381c501f2f5cec0a9f46934a1c575df12b43370ad477c6ee44200fd6ec03ac4c5d69563ae2b3d4f8494de16c2c6644926d8d536d5c8fb0bb4da499429cc1459c1809f3b1bfe3c2b4502c070d0decf8907923dddd1f892d2b887b2216a0e22298076a5ec61010bcb26d5a907a5b607e111a0f46ab859c0b2569896c1010bedc4787400fb7bd07843d386a89d8dbb91dea494bd50ec5aba0847a5c62d82cb3be52a0720a417c77628da560eadd1149035fdb6e3c27c6e7b9216366b28c42aa0f1554d73ebeafd8215d422d3d77bec9b080abe485eb934075c723c9a240f91c37bc983e84571b684b160c2c30e7ad78bd4bdf5f65b6c0aa4b57260c47b7f197cd23ff43336ca326ae07aa3a01971e99403489fd8a758d7280820f4f802c94e804cdcbd358aceaea0b243664e3fac2ee9b882c659482b05a3bd896d5054d8d6b86f27d863fa3d51402109aa302a7c8994fdc2c7edc8646dfa28c983d134271644cfcb0abf1255d28bee92ea6a4b13eb541e82b219ac50bf73109188c12dd347ff51a9cd3cf158267564b74aac82bffe410282e21e2058b1b9f78c133603c3a6db382bb98941d766c92d1bc80c2aa7b7d1b27d210822ef6b445522017f3f21f718642a2bc54d635337a19d70b646fe03689413cfa7b0727af2283908e8be15c8ec319b5291977f59dab27b47cb5660ad0a6bee62eb5eabf7627be28e1c7322cae37bd8622069a2cee3b062b89d03df1bad6560f54ec727d28fa4e5cd42722bb74c012cd3a03c8f0b5ba65f3e36dd00489fbc6b97bcf3a9b46d72d2a05577d5b3e4128ca2f12b06f0b5ea1c23e1f2c8013b1bea0214606fe92d155ccea1c6825a2786f9eb68113059a3a84f7eea545475d614c1065c774ac64fc83c4503986320af8ad51abc50aa89e92b2ad0354fc4ea3fd820ce259b91b73b070f01417c34999439bc09cfde8bf38fe9cf65efcdf9e9b12b206464b13f0e8dfd55744f604e2f40b1fbdf50888eeb094e9314543aca3d5a4545a9790098a0c24b791c8744e7a55f63646400105a794643859475898fbf38316a56aa6be37da5f741a1360c0a8e9b45c964965bf9b371d4b1beef1fc2dcb27eab180f411a5fbd69e20f2a9d7b20f7967f27fdb326806d2282b792f06dbb98bb5cf123ea28bdd9bd5706cb05e780051283e01a5e6cc452a8105e3a471fac6bf10e564880f5da0ed83b6be8c6af0a5fb9ae65959c34dbae2576d95c42e1858529e2cc2ab703a8383c83868cd7014878eec96a94745a6df67931f6f7ed193cbfc80892a5cc3443b3b9a0d2cc9b2d083c31c3a4e0706d2af26211c2a58860e75a28f4be0e3533646cadd21a0b86089adaace2d5e22c4ee672506de57aaff0257c546e5befb86eac4be17ef29f2161b37e1b499b7d06b4af9b5c875cec9a934c19f4f47159475553834124df67c51920267e42852dcfb28abe6fa6d8a70c760055631a3bcaaf7b94321ff3377251a6f121494d2596cd7c8e5b9afa2b99b007a73f0267027299176f5529d2d765e7399a75ac6a6f64f7c145dc28ad9db21c042da8cb8ecf426f7b725f6dee03a5fc7af32ff2fac67eddf08984a0624f7ec576376a72dcfa89f5fde80e5499db056b2d3f05d48338196d4577b95209f405b773789f67141ad59066a53039a152098a0f7262e2a270d487b63c6f07757d27662d62a73f64b88eda83e66b0c2794e77a21c9052ca5b964b67fcc42569ba09ad33be2e346a2167fbdc4fdce308f1656210414b77c4df2280213d5099290876eab3acdbdc96ac093e1d150c5b45080e6dd93d2ee2d1410274145ef53a4b05358ff8d2a87bef97537c884f9047520a7ea6836cae5afc7cbed8ee59dc179a3f029138b29114817363feb05fd14fa9a5b469fd2bc71e0239c8372c3d3375987001870807f771ea9d930f9917f3dba1d769b2a222f7060c6a689dbe37a2b1a171df78050619c2e931f097080708e95dbaf760b1931dc1978598ff950e9087957c0d103cb0d2246566f19bcfc7a35430b98ec3e66e94653863dea01226b6250fceb6ac044a1ed2486a5bb18b71132941026e68b211d27f6ecedc11f3cf308b2957ff111a1d6cd1330c5a09dd0b1a1ea3da10194f8747ee2dcb2a5fff4779d969000884e7291563c3a0c1224e996809546d45ee69108ee87e0d071f86c9df7b1afbd9d8e4f048719dd34fdfcaa28317a7bf97099d67a458c429e1aa2c772238f44bfc00909aa7218c3bc8eabe9da822cf0a46d0230e8de3401d983dfe24e04c8cf97af6eba475d14e363053ffe2f5d6bd0fafe35d902d43be7c3a3319085ea64a249844cbe0fd26865e0c146f39dfe643a828c8553c52ff773c5aa44c8ab02ae9a9b4aa210b8d28592a1fa33eca36793969d5a4bf47a03fcfa1d186c5f940d4420d9c3f29586050f08765310855d33f417ed04a56ddd1a0054fdf9efe223701129b88061cc54277d02cdb41b113e9e3c198da18bbd95aa17e2cca566ede9b10b82a71b79ab7165beea383d9bb0140233dde63eb243bea0a417ff91909ee02544dce10cc412b780b8e972013dc0d510364347996a6dcabdca5f88beec88320f89f710091c708c568e5ce677f454122249a5b8fb984784d5aaf0130d14b3eee9c47cdd9954660cae4921581eaf799c2a932837c94bdfd6fa5e88b5005e9fb870d0ac62e003e6f115a1b27b0fcec14d3f7b626293a04dd006dcf48c537e3f30fc846f8cae6248a31538fde0d182c6fd96a555d4b0f8ded919a7408486d1b52e0b966e762e4c6d608a0849bb09b3c00a862c40436972ddfa7ab3d8864002f17de015bb931650702e27e1224886471a46b1d9fb94106a0fd6bd1c16bb080dbf3806d8a7d838a32a60cb4dcf00722ee24325272e321c68820009fe667fc04878473c41d403126300ece2a068f4a3a52bc142071aa1fbf155062134cd34be283542a77f7ff2d1b66a853c855f1421b0ab91281e91bbc92f906ecc67047417cb8cea35ee1b6dc9138418407dad234cdcb333fa4b49b1fda6af1e290f46518a8dec690c0e0d8568980f8af912b78cad65e02adcae1b162a8b2f1314f330aa4d7cf106d781e423ae48ba8b89032df49d33dd0f8ec175dadeef633088fd91778e82a94695ca6341b8696432d3d23940a7d60e941d0eb7a6e5fa3902b162a75ba4c433408838119cc61d51a3572ceb7f141c6cb562ee7ea23b17f416edd71b59446e4344ff066f5f02e1c0cecfa8b0ae6ab740e443c75bac8a216e15e3bd2627bfec507df1db1d20f63baa1904768a7369300e48703a71cd6659435a9f5fc359da1dc6fac8c0ae8285b492045df7fead95c29c90148e27e6e7efc3a8101ae6b2cc208a382945a2d7dc2d44ac44d125d8cbfaab877de2752e9cf05393ac2ba56b24daff011695f5b87110aa0d761fcccb07c070c2f801a94c7b8792279fea5a2da834d5f51943d39f69a5257fc7a659e7da90fed2b2d97084d38d93a48a080f14d7a2acd8d282ea7ccc4af039b0e1f48ce6ee5e872f4b3cfd36ed4fbed3fc35006b13c394f35326026e019cb941547e7b6aa74bf122fbaae6e942046b54f2f754a517f37b6b502192ca297008dbcb0557f1d2a7d6c20770978dc40ded966902ce0e115fa11f3f2988eeff1404d601b077950b4565c7bf9874209fb6ed8479c92ffbfe045ce1e1bdeeaee3a886421499a3898010c4082014a22a0fdf70e8d06e712ffbb4c2051583e9731d2c12903159d515cd618c12efde4fe113e3bbf00557a55d2ccf0b0237410a4a3966405093d2e773e4304eec60e9d66a310f7bda1ead2aa13ec9d8bb2be28c84fed1a742c4e4303fa3acfcd59f5aeac58abc0aceddecfe9731982c8614e72dfed37a47160080a1e10796c99448d92f80fbe947664b5f333f7dc9ccd2729adf82a011aa83bd2abfd73caacc800fc518a65717e3498caea1e0f7370a3c89d215ec9cfc2bbc602aefac17c8b82abc2e32f429e92572f96c24df8d926faf6c677d1e403cfbcd56614d85fbb87356df22b0f90a83c8f4b7cb7d119efda0d06f0514eda382d02ba0237af9de90373adfa51fd103b1fa8b180aaf748bb911fa846ee9ba81e486fa47deaa903a19ad2d104ba1b82b7c3f9a33b27a8f064131eaa282a66f333e7c7b2f0688e1413589694fe4ef199ed00bce2175b03883db7d78795676de90117bf1d27786bcbbdb7bebcb2722fc081af6418f836c420644910de2a0f799129ae9d3613ba6173da50383c1c5d3c72def7465fb941bfab3894a6898994bafd2ccaa0542de5d4a5d94c1e4d5442e140ca102fd0eb249044e846ad6e7a3344d644cb9298340f5f0f3b4b92fc69e85706138b62cf4fdd45fc3dc5552985e310ebb3eb4fd7b9b4d2d5e2f8cb4802315d2f67b76a8a137f1292ce91e3823c9197bbb12457517490397c61a90895c79dc901300a01e859537c23c26f761610eda8b34ebb4680a989dcb49a3aede6620304cbf9c8b414a49c384589f433dce0a2fd7789dbd8c78786923f3ef1dd9b76710fe3c23609064416ee4291df4be9c02cb788187c158425da0220006cd00aa51286b9ca35447773e657114d8bfcb040ee2993ddcae69d2f3d5eec080384904e14e162b6160d0fa6acf8004bb720010e1647b71e7740cc1ae8f996999c3626dab52c0263105811ffda2d0e0ab0f7c4ccfd2ee805640760b2e6ddb7c9ce6f9f691b7b6f40959dbee7f6ac01bedec951016a0540d14f12b8f7038c864e7a89d14884e346b17e685196f2c4690cacf465a03446810aa185f442fae1ff2f8985bfd164c10f2de62871565a81839243f558f1612b77eb1df5aabc7afb02691d8fedea84637aaa806df4089b4136f50c6831c90e4e27329fcca111a54dd248d4ef0328d419d9e834da853a37b8978621ff00e696e098ef67418d45030308f328762338b73777fba775f54ed76c4167841a805b4143a580f901f44888f1f1fd74ef081f801339023c2cbd8c2e6607851271927c6f4dd3274b2b66c958853ffda1d765c81a798f4d0eef4d3a2d73df69b360e0e5c8237041ddd2c6f3e7ba41f57090067c408f7f36a87c7f014c5aa200cd69ac8399b9076518a9d9da69ae252751d3c6778acbeecd83eb96548f062702a8f023cee234e9e7af6ffdc8b3456a655c730976e6a04055fba28bffdc6551ee786b004536a99f7709dfd2b40ba6ab6bb900d4be45755385ccf6db7f828d9b4731ca1f96e7013650bc161b2838b2f015855b48214ee238a7b496d375d5be01b88df92d1ad6ed2b9e67d26e3e2d3817731fbc45c1a78dc2ee070586a70371ada52e8eef2d0a17bf2ef655ece14fe0142a3b5a4f8d4a0d55c32bb02e3fa2021efed670a21fc0c3b0ba80d2d6bc2908349d30372028abc8896b5c6f67496caa78088564bb360e0ea89bc67ef0312176b44e2cb4dc251ff2c0c2caa69bbbfb13866c9833ee25dbc4d605098cf9635b7eb4134a6284fafdf072b558fff26b17e6db2cd44cb1fd5c7358ddc2dc3fa0ffedde5bca581e6d76cc7549112e1289b1a82fe8f7df112debd4d178c6c3b777c1433d61a5e67a2613612ea27e64cae3806dd1be44bed5517f1153e4aea3355c3ba95ab1a26bb7b14717a24dfbd61c098a0c69e3a4fe168752ccb4b43a8d97879e9a7b7bfae35659c362a5f304544088e16bb1056a2dfabd2c3719e404ab090fe6fe3213321a4ee264b957719a403a61535ece88156f1d17a6c91db747443e9eb0ce6090825a761b97d232a908fc18c9fb196386763bc4d7ccd107e7c2718691c024f22132b95055321811b7d6c136371c539c84fe638492de86f909d6d621897c4ba50237c30be62e829d63ad7d7a97b511bf58f564a772ad6973e2114389919f8a02500891f4a25e10a410610b9473e11e81ae0b911634242ef9763f21ec7b39ee084115576a8f1cedd048ffd383fc07c0395722c475de5251cd62bada1fe66f2441c7aa58680720777e8cc2518c6584a49dfc3cae7460061b2c3d34c90f734758d15be17fce3624f10d57842ed193c0bf7bb967e8e1de08660f4075adef1124e70443ed61ee51ece2d6fe07e19633012544452b454df8f354033e701fdc0d2f73862738b21b351766420d8fd5cf211af2c9d11beaf1c7d427cd55f5d26554a3b43463fb596af895501ece2597affc01b6957b4ac9a2a4c5b9cfb7a6c95521446b18f6dc6298869106f2a016137a24860421073d79c3071f2ac0abe38a02e4e580d26a9edb8f95b10928c2eca0852a1e84d46a2bda925e9d7995f7bccb31343469581d2806ac56184f1c9b21f3f0898b3670395594c8f22ee827acca343378cf336b9089dd01286666b0c8e9b227148d5fe8851c42c204816f4b0f9ec8646597355dfe9775a58dd7b1fd09b96889c4df4af05c04521c71196a8008499d25d89a4e03567476426bbd56d080ef08d1645f836087aea7b8f7bf8ac9d92f172bfa1a57737b050ab1e6562624bca10e147d3f9ff1f0195b72640aef0ae49c50ca7d04101ea100db15a96afc19a919e692f3f2ca2acae02b76a0208d3b977ae6e02efda05d8762082027cff910c8d891d7e26db1257591520ed1ef42042d7c66c3f19ca5579264289271c17d9b8d05200c328b798756bd7fe1c9d9a2c43939fc85944f387786505d1cc5e8146cfb90ba2a8948d74172286889b7ba5e8b0d7149703ae64de9ef4463116c536451bdb6f99feea35ed6694b7ba9000e81dfed228fb35689a158c04b570e39247db320cca0b2a4a4881684bd74d94dbcafcfdc8252fe826d4f2e7f045172b3e8c5c99bd116a1320409a3c04b3083df58fb1bca875b6fd8f40fef110eabc50fe6648c20f234528afd583eb43b5436345b95e4ceb8b765ad9b4871a7606956759c98f5d7fc851f3917f3d33e98c1bdfd99e24e0f83337fea28a8de13d1ecab9690f40731c0f1d71a0a49eacce2c0ef9e30a6b2f90a27cc74baaf28448fb8a715f72ada264d29d9d5a9a2fef06d8377d9c1b6e65d68d5d9177c7acc0bab12bb57d439ff6dbe89f7b7e249d1ec69daf4cf61b7dd61dbb12ef8e59c9ba635de9a0f39128e715f120dadab976871e77c3adc0b96357b0e9864c9b5e39d609638165a0cda51e237e0cd6b6be998104ac589b3ebfcb9197f28200f1a7e72f21f512ae07a411151022ec112cdeeb9aad13206d994607ed2c04100e9335b19ea9b740e72e58135400b41f6fc438e0dc808a1f4111df18ff076746556e217014cd3ba644eff552865bc72df7485caf51eeb96d996972de91d48fe357ab5a541babdc83bfc0b0155fe53506c1ddabcd3f44a4ae452a00c7e73fbab0aa2a5568447bbcab525c8d30f5b8cb186a04d2d31f353d8a341e62c06325b1881bbdbee2bea588db0765a8cf7a284c2d4e56c7c2f2d0bbb4facd40f45e271561e6180f769407bb89307feeee6124b29b27d12859194f92395ad2a91f5ef2bfe1c4b3736ee925ba5ccc1f1e7eb6303ba137da10c63123a76396e48a0563dbbf66e3c618e2ddfc2a45bcd23ac5632c85250a5a2b8df4e6748ca2778aecda054ccc570c9b3648be2b5df8cc94940a1f03a31c32e7d588d2fbfc6faf453e9f77345490cb887c5ed58e44758e30257aac672c4a79c6626cb22c5dbb46a8786685baf7d9345a817b8eefa41b879d8b216b9f6e4e3ac73bcfa91e5ad45e67c5bfc8338a360330ed11ae35749481ee3b19c1848f768d4f89aba2cb885fd9ae0535b991d8a81b23eb99fc4072ac7601ca657b9e7235479f31749c8452e30402d88f01f09a6e9b1f792c1400bd946f810792c1f3370419afe0ee3ac187ee62c9908e3543d146e7019904b731afbc7fd6184b8d2224e4db0a342206b45c1b57b97ab3a83db72f9b91223ca0402c6153da283754f6ff0208509bc294ffc001a65ea468d61db1128692ecb872491d2086aad9a939cdac1de6b5c3d75602103064840a986e87767d3e5680b8c615c18f3e9fe7d133d91aaadcfb97da6333a83ea279f40feb471039175199a601bd6467d4c6958eaa1c5022210f49b4eb86a89f80f1a975b650a91669e31a7ec56cd63b765c9a7b083f238254fb820553f061d3e1f14a34a472345bdbd816388d769150aa72fee56585a3f0d3fb6b0de8f000119de82d60390f6b43480fb15d534e0681255fb381a921a0713b54325aed190b3abb09e1d43171f902f1dcb15e86c5f76a9dedc42005ba3328779c12e3daf5e48faa0192b482db38ff2bfdc5a544e0cd988e728080d65448b69374a7670ff712f5e633d5f15799b675ab978c193759f3ee107ee80a98d6638650e1503f33e578df3fab89b65dbcd8626f63b4a42e5bd8e78ee226d01b1b5153ed65d2d26912a4a6cacd1dd946a0dab984aec63a2deef0cf07f00c3059fa57fad577389bcdab6a77bc283971c7d11fe31b737a92631e5db3ce98a2bb628f47b193ad8896707319962e4712a9a36bd1623fa2e0c19f81e19c90ddd11378d673853bab4440061463e050a640e96327ebf8de399359fb5c27e79a2a9a7ad7f7ac64c88f919ab2affa84994791fb0e47b901658ed723253d6acd2afd0c37a76fecfb7692920960be9b29ffcd3d6e4c41f019a1c84b5541c6179b955c62a775fc03ddb28c6c0f4a8bcc4854fcec64a37a5ba7a03dc1586628f4b44f30d1fdf8bfaf92a97e5811c7d82d77bcf333a7569e9ff27cea7b9ac0314ab0b20c4bedc04ed3f4fc10fadeab8e64d17ede785bf5f8a1836fe517506d06b9a7d27377bdd5d0407ae40fff3343f0a6043c7d2dc54e331392ce05d9a4932c9166ffd8e181e683f7d039f8a26a588147c55923675963bd89e83026a9823d28455287da582dd6fd5a4e58c70d064d922d8c5a340628c1fbe8a223eed7e28bf8abc1d29b23d98dabcfbb6a37e53c476071c9dd74262cf8394eafecb3920918e3c2ccea59bc210a455c897ef55c7933c7faecf3d3d841c214c29ef2bb31c59b209ce61ee0671d9fd6c5f8850b34b9c735e7e0a0006b26dcddf113263f42c3945c82ca08d56b026e9bdcb6d573d0b41e9ffb18b57a13a933d0fc11f7713b06d071c85f44ea635dc98e9367d014aef12ca670e452dddd40b2b39f56c176aa5f2c5a89c1cdc1c9af924eda5791d9cdb847f05e9518805d56c6393bd809d813356c93a31b3612f69a1c62c3883172ff81f0a84c3a4105808856f7502cdd69bb6f29637a2bf04e96a213e4e5eabf6138c81ba483ed4b7e6401d61dd1711cd888547bf34cbebb9b0b513322c3a10f7d20a4f163f32474af0247b47d5f18848000875996776c1963b2c2c7a01bd30dc2d6bbc25db95495409f207823a792e1c5a61c638bc59bd09e85713550070727a2808594a7b41d9d93fd801425a47462144784e9ad2a4afcb661b47fed9096f228713a85f86157235cb0e470890094c2c8b0c7c0dbb5948af8b7aedb0831fc5c6aeadaf9da360f7ced236070015ae5b4c9263ec9f155f658139f7e9959f173a71cde06f565d2c87e957dd43498197e671b4afc233393a876337e52b1c36a9506ad776993ea1b109874a8add99752f3a3ac5d2b020a49dc2b478405347bd2de4f70672837b75b69d7372cdd629fd7f3d9a6032a3c6b3cf9325de4769d97b637e4e7e55c4a389ca58de83a5539e56901a2e4c3a21c750b2dcfe0b72c37b1847cf30c9a4cea7453ea7f35dc36430b2f0c2739c5a9e0609785255dabaaf208610f8c1d25f572b87ca59a29790ab6a8b603b3821120662086b877b7518c3af44f87a2e1073d412d4577bbf6ef6e9f9c1af5ab5e73e8926925a5079649501de78bd93f6fd490129ce9b1292151b546f6c94091d2f4784b7105bf4635d5cbf3c16540e2f646dcd8fd5d5470235400f917560a010c4ee32becb6fe9046feef1cfe05b46816559479be28d1d30fdce76ae07889edf86cc1b879243211eebddfd44ac74578917865104682a53b964e559f4ea012f4ffef300c76cdda0c16a7b629f219c046612a82d82d3f0f30d9f9f6ac91557dd5ed0ddcf61f8615e779e285aca194f36a8607346bd5ee2c8c694161a16f68be5c9619397670fc0ca49fd62ef30791b568da28404187ad016fd8c011dfd88c958d8b3dcd61a0bc21bfa5ce62558590eaf32607122e22ca8c9061178e1954f8a9575f620433e2c97099183da30bc48e701bdd8f9c17dc224adf5cf2268595b4292217913c9147d4dda18a4a358c42c138284ba914df83264381803b8a1aa2b60edb7b0aacc6fd31645517c3219a8598e7fab3971f59016dca54c1b0c351d22b7d309a4bc30ac7c6b1b3cd33cbda1f18970584735ad34136ee0f8a83be0129f985a855666b53694b50d6f25d2174faad65593f17cde58c4b2596dd3672a79f41091ae417220cb1472cc78efe64cf4fb8ae98a3d72a99e4eb9cbd714e874811ae8a3e0fdbd9a6687a49648435ce3179276b306efa768c27a5909061e6d962cb73378c8c6db81d23f8569953a7e2831772fe244059be324995de7a60eaf44a71b199db410a4197a40a12de76231a71c27fa09c8593e2269488c94da32af5d4bac7fdb8516f4699e847feddebd894ae8b13d8c79b4080eedfa5f5466617fbd658ea2d4b9d7cc8ca39272241525351dc41ebc28465c861332adcea9a5251e1588a8dad43375b7f309625c26b303686831f81e1aabfd92f4ae0867e725c46b223a632bc2e478c4ad1e5c8c53b44525421e512c4af728f0ae805133d9426b57ec020f5a648201a0b36ee784e26c8b6f16a0f39eb893bc99b06a9f27770dcbcc8a6e74010f90f91a3631ab9a96bb0715a076ff17de9316cc4c69bd914d6d6686c09fad680df39bd4e2031198da619aa7b7a5cf07d2936397be3d058376e40e1f0adf71872440ae2507abdb527ba5b2c6553f7d0c738a43238a84a3da815ce4ae3b3dfa048ae19038ae62948186d1201725181eb6aebb037824d32941aec1c3725b091b2be8484d23cfee4e17de42dbe3b5f5e4c1d76d9528ac93d248d3c08ee9cfe93c9ec1afa7b166eb502b39e6e8ffc59a77ec31ef5b78e0ff96143da69d506e99e66a30705fd61ff261241b46a1c9271212b35ec517394841b81f0c7b3185c2a40c4d330b29011996239b71856428837383d4809f0dc9c4654c6aa840823bdc961fca25970c3f95203076825af92daad41c1290bfc26baeff4baf63c76894cdb108d676946353be7db10c06675ee1f1c971a0362fab8fac039b54e2bfbfd34d3f594718d52897e80c74b1c61a71e71b143d2ff84f912bb55320e25d57bdd34498473b082fa1a09e557562700848ab0e92e9920149449607727cc323a4d5218c140104e53178d8c6b9e37d0a671e685cdb86e953c50ec6936027fea70482f7198a942b2ff5f201b97567e810d30aa97a77e5410d58e37ff0b61f39adea93c499e5e4fc7093620a04719e5cc26c44e7385a941f5354fd0af0af33dbf41259e72dad81f5aca73bab6f31bb3ad3b56eb1e16fa9f869514557263ac4531957a3fcaf92597183d7e279404a263e04267d37e1bfcc6b46800372f892748560ec3ee0d2354fc45f6948c1505b6a99e9753d8d0d17880218b42b4ae3afc9f260cf0427bb0c28c4f08e6b6c0ae713cdd1e9f3fe7df676e09ec615486a0dccb069c494bb068835ac85cd73c0a770b26513150a293bdf455e724327d224e0740c6d7836342eaefc0ea882e5889f9369b0053d2a09c5a50d30d518b3d2d82b4e0038f788aab83d3b08ede1c4226856a148e08cd720e62977aa5d68a3a015ae8e9deb3957c892d41df406ece0cf6e3218ab4801cc12a794a9785d9ecfe17e206bd4aaf0eff9f951488327a759e1f88e8ba2764671e30ae0865b848a79cb9eb183c9c34e958e62f645c06a36493c9dedd53635951f383882a8921e15b35239b3ef8b64469794f1a67e68c71c699f312b126657c7282682fd58332a6d5ea72bf3b4778d643ac50fa40a02fcce975839d2e846eb94337fb2db636387ccba62f3aad084c3666a686ea7b2b8601e32bb364006da4c5a9522d990fd0a7d47078c481939f79b6dc458faf06b6b9cf2349e348bc474a79acb086904bfab9a51d196938d85a7364debaea6c329982d8771a7a84f080f5dd3277a4b2864c5ecf26c6de512643429164f6bc5ca40f1ecf51c771c74e72082a5b094f13c67432a797f14f3594f2f6b43431aef03e40a3ba59f3fc6ff7bb98d54ad8eaf3860b52ae4ace9003b7a5ac58ebe2b56b0060638377a292cbc52c56f0dc3e028880feb786ad274a1801e72d8c2d7bc492482a6b58ff9c39cfd8fa1ee00773015002fd91365e6abe38c8d4fcc81a05870254009ea60e483551ecc95d01d036f07629abe10f36407889330881d96ba85085ebdb7785c3b4449be01929150e5a7f029384882bb35452b27d98a765fae2e47a0a5a98bc1256f540827b16fc3ea4550464a264cbcbc71897a442fe25ffec37c5c0e002db5d88479b064c2e58afb9c1f87eebadf779d2e4493f6ae37364df84d4d8f1eea3d8afee194c15dc45142f8d0da97db5aacdb00f4e395aa5857f93697447e929e82365b4108b2d70d5ce997547242e96cf2059de587e99f6ba23015d76de46c0b636b60a05edf557079a31f73bf93a0a1778d7239bc1b0dfdc3e61ac49aafde90a8328b783a7165be9e2583b5b77b5ea1a900c5971017834bf616b0f3ee88b36f81da1bf0158552c2dfa051c7d3dfac99ec594469a8150e7d4483979048670380629e0873cf17cb4c4474f92e998cd0d52f08c36e82b34e04611c598b6e0f001a4acd76443711d1cd90d95fcba4d4b0cc1899bc1fcfa985226800bb3fe22db63de1fb02cfd49cf130f721554b6cf01e951867adcab18bb745bae508f1b610e5a24929e8dc9eaa863fa6fc4d1231c0efc60ed02d7da882fd68798f8924a794a35d86184c57892de6b3c21f678fe6ed4d43fde494c70867cd39cddc2e0393f25cf27f1a2deb7cf0c78c46f8fba12936368b0434ecbf5e10d9900c99e134a966e2976e616416dd468bb83c50736345923d9d6de199d60023819f18fee4634052e505e1ec79e5f7919a8f96450ac9786099f407d286fe9d00422e3be45ebf3362311ae4229c04d46ac739ff5188d10273f62c41b5d09a789639c30a41107f0577bbbb4efb300998b4a397e5b9c525553355bd99e06884c000201b706656c0d9bb8b8276a033c998b0452430c4e452b03b23279fb764d500d9abf52ac8a3d656b056e34e03a092f99d525240c0a8064ddfc430d1787f0cd7a1b5d73023a5090054abc16102bd9d8bde96e67a3a88d2d03c040ecf3abdcd1c8b9d517be98898d374c2b316e76d2bd9d5ccddd7e3944736fab443b192a012829968e4f820f7c9183074096baff77314c92fa171ce07637e18c6bfe077db701073f3762d3460cd1c2786b975e9c37c05eb8a67f17e9a72b6242f30a15124d92c0b7eee75b163a68879602e4d82e3bb0433ab5e51c9551270562f2495d2cfda4b2972d579dc96fd689c5add1022fddf0c4d55134540831c6450e77b24d2e5ffb59cd2059f3bc2538773b11cb5c305fbd7b6ab2f78b12fb4b396ba3e342ab4757fcb98105b8d0fd2c06553ccd4866503ab4832b3665cf6960c64b8e970488610ccc5f2d4d61cb4a1c07f0051550f63bbbe854ec5c6b0942bbf9af44a9f78eed3c6ecbfd28d690dd9b48c942dc8da650e70b4ae026500959966e83a4bd62c396f0e2ead8b391cc9ab66d68dd026f2195377469b787684dc5fc105ac5a4b9439acd93616a6441fa1fda7fc3012499102ec88433c5975a0a18c9b8323f7de8992e65249a7905d071c6080843b2049f9ceaba896d3d554380cce31556da4b5296e951bdc33215e8a03621296b94703eb9d402c22c1edadbb587d5f79f026b209f3e9659954621a748c4bfa1e1858a99d47f61a202f564a257b2c70cf7c4ba9fa41660bcad8d26de6d023681acca81bc0da1450bc481dd59272acca26d403fe0bcb069de36c85b43446a0f98e71cb2b90e61ea8fd98c9fc5532fed3741c044558fe6a269fd2af482796b72dabf3065eb8a508bfaf4561dd74a05261c14134728876a3ecb2cf1a2eb832ddbe08107018415e12d413b3de9d7976644f80eb027908ccdd2930d4361b2c7041f14018fc98452d58fe12b6a86d8c819fe503fc909f51e37e12d80a4f3136492be318f32a261a16cc457fa640a4da9dc92cedcf287550a89dc9fdf345c9e8588634d86f48baccd5d655eec2c03c6cdbabd554f5cb2c7a8ffcf1500580c5f4a3091e8e55d97aa687523c177380b3f54a1fd885a692df03f7dbb8923ad1835b833520c4a154b15eaaf7acbc9793d2c3b41e4c65e305c8c20a7bfe92650b4dc202944cb2b1f80fb8548d0a58357c4892f95e113cf0c6ce39950dd5cfa29468b90b11584511bcf9543f97e73dc444002630b24a34a3e18985dd68d042d2c491bf8674f628fa63d7b48da508262b89006d0b7e98a74a62b2bac334f652479dce1f757dc00252a78dc42e8bacbe1a555c681b2aec57883b008f8608e5a4a722c83ec68439fdfe9c63803c9cf11a76a5240b82232ec52b0e403146f7e7cdeb28039e0a1815830ee74d3e6b7253ac40f2be52da713c416df2ece76e9b29c9942deb13d0dc8b3867fb9ee73e8f18da3735c5a1c209eea2c4300da1ec4699981d8cb46b09d34e154d9912e4ec7ae3ec6df645dc8a7162e0284991ef3e8930e73ddbb67ed4431b6880361bab3a0b18f2d6ae79cfa4f4ddf481b530f55aceb58d36f329d37e8c883a16119ed688c766914b99d9ea571101bb43348d52a2e8ad4823ea0b9dcd0edf7c83100055d98d9e958ff086c18cf2a6aa530ad2da9c7e9a584421c492d6b4f596afd760f742aa232ea75e85c92c319de8d63931192815fa4e470d8ca1d83e9e0244561d214c46c781b1bc74648a2afd89d6f97c646fe7578ca8b98a37a1c7bc0c36b5d1735428a9c24b1ac95c5e1397da4b0d1f234cc63eae8f38b293c48a8ec0c745a268dc644a7bb8880bebf3e866723484149dab02ee97dc2c0e041445c1e9016d1f371ea5fc5bab77713204a9caacc06acc72a39782295eba20f7e57487f057d7564092d46409d033398b0e07679cf216417ed6f2e4f877a7c108ae5a65d20163c2ee501c421dd3958da41598260a24e9089cedc95035fbfff8df5f30716eb10a25d07decc5eeef6cbf73f73b2f4afa5da5ece3d1b752b36d9b3c0144ac55e64ecde9c457e416fed23a6504c8524dc9b814e10247d284972c6038d26f44d6242133693709a0a199a6ee73f479c92433b2eb97f82e2d8fb85d96fa1509f7016076e2c3a714e7493f932d7733a01e624ad57f790e90b35188cd2a1684b7931173be65ab2577efc6802fe098c01158a71b73d7edcf81b40f8be623105a77ec410e8476f729c5c5a22adaf26ebdf76b55ead0675c123eda611dd1cb81f38617b4052b8b672621e185609544609c79ec7b11c6354f4b887e4097725f94945501cebc12b34ef7c07a5c54ba077a572a3465d943f2f9cc7aed40e46bbc69dab8f97bb6369e2ee192f2f11c6c0dd116d5f3431d1e2748b4e4154d1f7f56c5dff29e98e346eaee59cc975f4f50b50bfd742672e819774c7e9420ea0621cb7e260b38c4f011e0299a046f6f8dd703e1ab547e573d60b55c588a6d38dcabb17d52b4484f0cfca87f53a8d5555eef1558fa627c89c36be42756e0ee94a75c7a5d13d7548388171b36198ceb1e6a3a0dc9047f6f811e17ffd7fb1d381c2b303abc377e8dac4f86e0b73167b897595c9afdc82ac9f3276537278ab4178a587d41973c2b8ea83253014c456dab60fd50d873e0dc7d4172a5d1fc5dcb0671d5fee567a1aad0c1bd88f549c45f08905975db0c44432547bd372ac9e165ef5461d3b2a9a7d52f11f91adf8e9da2137f334039d296718481cc0e1f39c183905b6f1efbc0926c2d2f85ad1649ca371090b29f7e96e05a0d4df6df7b8ae0d92ca0ff4bb99062d54943b5a2ae9ed6e428cdff1af3be766373e0ec9eca7cdfc63bfeb710bb5de82f4de3235f05a7721f87e6ef3d2cd381c327a1e634618a55697a9da695d2d8ea3c9e4b06d8ce73ceb372a533648dde1e380757cd3cdfd72d05249b473f954dc5bdcdc2f53b6ba28c672fe150357b0d44245216a0a8d92f00bd05f3d1b4d134b0e5daf60290f2d1e5dabd8eaf22d138df0cfdf2b321538aab259835c28487868bc8eba5487cc035aa008d8e925455410caeac3bad5e1990b4b31f67120798f52ceb01683eec2e51a779277a3f5db88d4ad02705c71a23980628a734e7519188f4f844eed04351fbd6a8b48c03f81c45906112cf7c7c9692cdfeb0d710484497d1f8cb963d471232b39a90f847792738c7ece07c6142532d17ca32cd4d679f48801483c95b15227ba7e47c3d0d3a8b23a807ddf8a9babb98f95f2ec9ada272ec54de228419b141afa5e6f9a234484a087eb054cd25ed4a64e7631760a4acd2289d1f194c7d821ea1314520564ff6c88eca6682ac9ce6b0cc8ac47d47a6d2f27d9f745cd4f7613ced59cad95cf383b350c77e960f5cbe0fddab90ddca4db27852610030fee191150c165fe8a80a252c5383189b26d5485c55c0220091d4d97eb6de7dbc9582817c2ecb348319660f1c2b999bed3b28ff10e0480b9d9ba8496c6c94d619511d4636da95cc3fff679375380c6ed0c61459fae24fa8bcf27a0fcd059ff99b76defecb4710a057495c39e0cb0d0a14900cb7b3d95c7c4ef2e96a0fba63d3b441114faaf218b4922fa9ea8ff9c614fdc0dcef27a9328c10daf9f8179f670d02b8d53b58722c218318a4a64ef6640331077ea233d2970c2375a48f4056e178f62fdc71f9a37441400ce0ac521ee1cafbba1d7f0e7b12cccd6548fcd41488a2afb67ccdb831f5ee35d1218d2c17312cf7675f63daa0fa3f21f529137c53894a2e71ce269e7c88fc14317d160240f865b3767235280dbaab3453883015fb7a459ab26847463c4dba322ae1b85f6409182e9de7d36e27620229db9f3b5a4a8ad5685a3942be100da9724513bef14536a87f4e53ebc62cecf87db6d43cdbd1cc6d3a96da4fe8fa383c69e593982f51a046e2e571a0c0114cbbca82e01c2cbc1a9e2e18baa5b8c9faab8ffd5f9ca72e03763c1dbedbc4ac4859fa06d03f8e9f549ca75344557a76ac9bd4ce03119ec4664eaef3e45d2013588525688084447dd16ebd0bad53fa7c68ed116b4e9b621212996f0bfaf9cac6cecf19f46eef64240ccbbc0cd3e02e15bdb1139479113d1110806e5f8ba15644a81c808ea1c5f1304b457ac72a2080be59982b60052ba3b9adca96d6126d709f1899402a1c3ff9d42929604f3a89560496107c1b3deb7a29f359a589c89e70752f53dfac18ae0e398b787b36dd128d9ac25c7fb2d7b118ec6f75d85d247dd1d284d3d74bf34d7e2de556506be98bc351b31709f6fe6f316a1322e99d508997be96d0668c40d78b579e2ea34fc2f1930b7055a870c8b4b13a81cdb5db58d4e452006ddac39fd4102d5547b515c79b48fcbd1a01b9fc292442e7a09d4dd2ccbd30160c58c8f13b142afab4448587abe15ae6e86d80a93af67d153cbb38d9ad2ede3f2f156ac52adf52414d39569ad458d1839fcc269a0ba29cbe1b749d9efb6bb44b711454b3c6eef126b9805e38e26732a05f51a6913afbf4ecee37a8351e4b9f33275e0cdd5be43712ba6b71a2bb6f3099d7b9586671dd4bb2646d641e9be838167c070c6d41e43705e58bc599e4bf04ab36648db9220007408d58730deba298fd69068d2c342466ee6ee2187e2f6b730764680f6727ca2c6765e2e343d045b13e4de9af1f4daa3b7f8ae319e3cc465adf5539ba5c70527d34749c8b72d28cd4a4c8dabd314ae740750192561e83c368a1c149c72337aced7657544da3fb784cb076e535658de56f55b9440fddcdf727b7e7dba148a913af14fe5c83197d08c30419e3b98b06f9fa4a3ea36b3d9e947bf1be33f2e07ec0771aa8587f5084a201abdd0e3879bacfdcd0e38dc3459dce8716e2dce68e4eec3c05368faf8200f9d5186f3577956a08a7ba36b6f46e769fd32479be78bea4f8ba2c737b891dab574b59659219cc49c1abe8aeadd236a7297a9d2933a9bc2759d479f9e8dc7f567afaec2213d49f06511b6918bb72df5dc40aed911f0004dd30482802ecb70141fb50a79e437d19180c7e97119a88b8f56bcaa829b9956b7a6af45afe538dcad1289a5f9f773c0187766b2676f2b011ff9864311b1939524cfe737b1a7e7d147684ef5db7020f7e01e4b24c2b8e6873c3d803cb81d89ef352fc57e9cbc9b33363fb43b3fb3d5df2f24d44200b3154d83dc28d079f932c1196af9ad95121a606cbc456a80e846b029e2c580d37d32d7d657300528a99b44403b1979bbcee94c0b120bce8fdd6ba842ffd94cad1e89eb4b022703b203a85d4ebc6e7e97e25d81ab443662139873375f5ad691b5473f94fad1531e1474e29d48f3a2009f4c91e0b185efbb38ee89ef8b3b82aa1bdc14faa9139c30a8dfa527aeaa986d6fb60ab708520119aba83f44bf691ed8d936fcb2a14c01c7891caec8678b29c91c8c2c15dc1fb5309e4596426ef8224d3e30495b7527a5511a0c4eda3a30a514e85e8fdf9c0ac3183777460d8a4987d418b0e69575bf48c38cb4b369c04aab9c087ee8849a3ee12056160f363c8c3fc56bbea065dcd9201c34def821deb8e49120b2d40b67a020c83154ca9160ae121d2ab0b817e73e5b59091021900153dc1da512b2bdde8ec556645e80b602923672069d9b73c9a9afd9cfdfb272b7a9d199a49c0d6c7676437f03a144efc34ab88f6b9b0163f9b7369e81845b51acf5499d3b2a9744f7a742439caffaf1a33982634270f7f59ecdc28eea3070275f89f668acda69475b07ea552479f4e1f429d30b97069b58f8b8aafbab53d174100d2397550fe90e4a31877ee5bf6d1ddbb258b31dd9e4a6ea7cd7c210af3a2681311000e7cb733f828bb473b905793b074fa2952ff14ec31f297c615d27c743bdc094f651ab7a297dcd27e9116e53c4b633f81b24e1b5e5661e87cae25b2ef0ff30fb42a20ba0137586c8355f01351ec3789017310b11ccdc9950fc32bac29831a6f8c6807aac4321e395641adf737f70d74750046a301dbbc32b7bda5f833ac50cac56144457d865aa2b90f5d02dbcaa2e58659cd99ca775cd2408830940fbf159a80407d291c5cca558a24a6161fd897e8d04c1b0a270e91b3a53e4ad6656478e9643cdff0e85b022069852c78ec4df1b44bc401b9b4b149a3d5d8997a9494da7051bfdb6165b3db8365b96fe5548865f75c387d4995887eb942ce90752d72502173c48f2c867de6c2279fa81020230358348d4fcc63a38886ba0c453a09b8d4a76f116828d16c64a40ea7aa3e8b5f36c41b25ce4ae92e1a3a11ddf540723c2d95c13789ce339cddb085c51611520e74ac1c622a7c8394c4c641787f60607342d269db452b068c6419733d9345834c5e83470850f435ac9f842a9fb1fea8729740e506ba52c0870a89ede1c7c017672015c7ddea762041694968ab6f384dcda1567968fc56401361efaf246edb3f4e17d94a81d04ba7086c94902066f5a67e341a26c4055709e352dddb56ca683790e4c7d7e3ca2b43f7636cd2204de57e9c7ad7a592f107422ed0fdb99793b3716081d27c0084ec72e3e1b7bbd1bc3a92ed63ee276de381d03131feb161689a3a1e904afc0cab5e93773b9bfb8a4f1716971be2e6d457d1e2e183347c1f090d8e590fb9c2ff8079ce8bb13cbdf0101a41b587f3d008d37e1b66ac8e730f64a8a338b4c495be825b3d228e9cfab0145963eb14368ca1cfe691e81d943d245fe8029f0604c0af2090d39561386a22eda8a66ec7babd64b05cf9abe7b9fb3c8a72e2a63b515c9cc87c24634190c3691160bf8024c92945bd7f630ef911dfd7d0e503119565326b99b737b53e084c00d63b8b95dcbf2e8b73a38629714f2231b7dce9417bb838225462e72be85818cd64d0c05c05ce913a40b24d33adc0d3b99b2c61bc4bf0d5374318e14ab626f6405f9014d2a57afaa6480747b52f7349348daa67d8198d970849428323504a4ce3f4eafcca2bfa9f3825bb77cc97b8e0b3e41195e86582f74981b6285d0e06eec0e1142ee1546882c16108130e5fdec653f59d0d9d964c61ac8045b9d7824b4ecb85370e8855a38d9e0ede4065b844399a31c62458a94b7515283a110036b7912622465c0a164935a840b6a94814d8559c93cc5e10427fa13120b0f11949442ce71696811686fb3541704210ebde01ea9f6ea8acc30696d0f3a2199581b69dc7bd741d03fb95bf1b2043df3153cb4637c2dec7c0c47a9c860f9474bd7e0500d357e817fe5b0538bafcf9a3d436cb903973534c33fcfbff220ea30060629e61d67486dd42c91a9ed2be9022d09c13f4dea7f82894070808bc91b3c92ce0c7feee48c349b8bb90709d61cb602d7a871df49800946e029302a3379a0c5a7614ad38beedb1ed95ee501db8950488f79813bf4a318c0f567dbcdfdcb84c5d697ceeba9b7d2f302ff5f4c1618c40e2d12eca64f3c8b6cd17b9d63c642b7ed9ac941d0517c5fc68291271ecf173407e8e2ecdf8301d9b5d2c70e32b5533dbdb08139d53ca746c20503ae187eb7420835fbd017040f7bfe2f4c3a9dddb8b52db9f3ffb7ed9989628044a151559e09a87efe5f5f54ad0b093c2fc93f57f292f8480114ccba5b7028b65a84aefd58a053007e635f357aa2b27b665314aa4a840785560b7404cda1ac3a6f2d63b7326800bd0f079c9f137790ca3999bf8733f4c76454421e4bdfa5bd5476f4274b4a1724cde5a16a84f09c38693cc023abcebc9cf34b6788514df8dc54c33b2742c10256bad3005f65828c6153fdcfeea946938c02c29242102fcd9f532092cf3a0efd91a329563db8002e22be69d5aff6b816c6f70c63f3d55dd3ec1715d65e4318de90d3c469e8ca4b22e7e70fbc494068fcabc74522c70f69d9ebe179ac2e7b1feb45f10f457711f530a9ad89ccc1d4e2221fa846bae2de60fbaebc782e7c77982464f77c0955da66a1bddb731f2d6c32ac46d04cf59ea28ec8391c54b04ede03fc5e2da92b458912850526a920a179b9fc23b421d132041f71265879443e39daecff35a3cbd0b4feac704613a740e9bab61ca61cff201261a9d868e11881b3edb6284d8b1b93be53919a6bd2cdabe5aaf8e10ac96e0473fbe9eaf55fd133bdcf13518edad8c4790b8070a7f1e95ec825aa44cbcfd4e51ba0aa387c0ed4b243113d454a6389f4d6c82f5c42b893ead316aba98141dd337bed4210d9d8b79793935b3ebe4f77f1fba1c5dc5f4c243d773f63cea6a7d99bce219befcf125e394d09edcf7cca28b7af2b623eec3b11ab148c67c45a07a0accbee39c36ef7ad5463403ff8e564914ee411aa7f1a60eb7bfb72e60d49c51a50aaa95d428bdde03e84996c1d000c5ad029a72e86bd012a978ea83f257e08c0a18f4d162e7fad0f7693fcbd1f43cc7c27b1506ed093d7d535e4454bd4ce19af6fa1e8d1a9a39127faeb7ced09d62fda20005f5ffbccf0caa4e3e6b19da30cc597352604c6b5af6ecfc679b5f79bba967f6267b1417a3960fc61a681fcc76b3fa3333a1ca4200038219fa3e8426efc7ca3bcb71377bd0329b61c6219f2a74a210d0a0e4cb37f14a633e7d5598bb9b15bd2cf32939ec305519290c9d9e01b1fd2f9cfd871f765b687b7f08da9691e501327416eec0d0d39c9febbc314d49a2d437dfc473613849b26b0f192963b15f81276c5d51dc27b7044a42ff77f03d8d468294f23be0243064a661ffcc3eeab0163bc059a2555d6262591f3f3939d1801e003ab39d7addc704f65aaf68e433ef33202b899ee039538cb3089f6b45d0ecb7b04accc23349f7f85214fa4bf116de9fe3ce2c28920be51276ba997ab0bbb918cc0a392f1bc0f3c21fd3106d16b8e5b66727eedc99231ed2dacc4b2dc232d04341349c1e5fe9a6ca0cc0018803e3c8301be968dcfcfa8e7528013b83b19f7527b9827eddd39c4fa1610b035b42fb638ec5661102d665418fccad8a6742eb04e20575dd1fc6a3da3af5fc005783279ba807b7801b22b60383e70f17c2fd25ab126e9a0234cde87e3b55119700d0a1aa980070563b6691380ee8790d9434d61a0d573b460932afd86719f094b08aa5257b89b7bc9d5dd00a9b63787f2ac70a00e9410fcbc7eae46c284ceac54d35243cbc41e8b15117b251e9475783ce9b03a4de570be6670797a207577c7cce2564c491b0e8615aab3480ed552c3911d59f16476b64a0450fbc7a568416196804d45c972c63aa089229bd8344458311acc398806a33d163650b644969e05006228b9973591de4bca7915653869c2f49b1f8378ed6530fc9f13874d212ed9e8f2dbd8f3d554e535e3680421663262e327db08461bd4f55354433f21ee5caba0d50d620125ac7738b79ee1dff3d870e47b28e34c5810ef8f1c242345748eb84b443993b3b092b696c6c73af5c8560c79516161bbd9f71a3d15a7bd914c49873361eea510ab4f5441c3a6ef09b03fb06de68fabc006180fd45bfe8f95260536410eb723ef09a9b47fc8bbd5efffcd6d216dd492cf08470826b95e8095d075d4d2845b24e92dd85b18ee41d744ad516ce68010b3a55861d085a2891735461e23c38c5a03e7e7afc4c85955df4049045151dfe97a24ee17e403eef0964eca8b352d4c93dba228da4f3a2041245cefb9d8a2f649fdc06a0d52af751258c089d08ea54a26e6a19a395f895de00ab8daaf1029dc6ca0e5490b8a151387ab0689e40d5bc8f09a54218342568e51fcbad829d9f6c44e4a53a8f9ecde2905e4c039f2de0bdd9b42e70e77bb7b5b0526e5e79e1e75e885d461cc4cb1396767a0352bd167f18034e72314adf03d50b928823e7cc8d61aeb232abcd1d12ee9d85aceeea333aaa1eba36727a7e920234197a9eddc839c86c808682c841b213a894400a71b209994653eb3d1479a50efa2d5a7ad1f5e163077354cb0c7eca5349998b28ed5cfaddfcd8ffe650406c11435604d89c0f8d51804ddbad6c9f4e212d5374d6a05cf8f89d9e3a62f16448ecf96cca90e44cbef2c014e61cc3d9891ccc97ad94837c9899f81ef254be593b79a497227f248c07e8d31f221f78dff248bc150a5f14b8c567f3b82a9b9c118000190c8340321a12a558fef61b265004bd5207ac2e31d2fbc482d7eb6052596f0c230f94aafd11466d36a8646524c851ead86b3de90d6e650d017a5a0c750349ba143fdcf4f715202d7e609a7464c90bde3a27c8b893a37b281da42dffd9802f5488f29690fbc5015a69479d8436871ab6925ccfb5643dfd91613d6d084211c10b70a124e5a193e849122140806f54583d2a09f1d66acfa097173f8e79b471eb5e1d6627a1765f0c461c0a4534a3cdbfe30c22720e75e7117f6e24f6cdc74852eec407b67c80f8d4e5f5fa9b8c8fb10574017b1f85de4e37634bc4800bdc80b278aa72f72e031092ac7baa18bd213d3dcac7452efb59a44010f47140053191f4e4bee31500dff863d4fa0b19b613b7da572afbddfdc28934635c318598bf800ac783974d348a2b8aee2cf7cc77799a33521b29c687426654c62943aeafcbee434a3e4fb40b23cca4cf18cb2e9e3b925d4c61c24b229598082b6b72162371d47b62e56044bc54a15c90d8b6b99e4e862277009698ef2f295f0fd88a0b41ddd649969e1c6e2484058dfd7a4a9373291427f38483bd4e011e477a1671c3d50465dd43d578337a6bf123fe1cc6ef09d6881668b651e310a21b3c4b8c3f4eca308081cd7a56b2fccd947a4329d0a6e1a1db5c2ba312021d1422d3ffd38ef23bea5b520b9fb825990300e6335b9e07d9f7d37bced5342776f0b6f073d913264e0c222343284fdca6757bf4267bdddb548fa1e493c07f9e48612e28e5282fe1ced5a4df1ab781033264776cf86a9305041ba361437abcd7013b6c18f6226e45d08304aca76e1a160883d2a2520f799d422a6f1ec6c0fd6282c505df421ca136a5facdafa6173977e035f0d3e4e144be0c4d4cb801bf5a9f45f44952d3d60b406aee20832831047341fde68861650267eadce1a3e02f881ad300f08b36a45a874496a4f1de6c6f71ce99c854b5410d133aeb1af6b24865747c666790662412eaee05bd8ab33c4566b86b873babb9c875dc53a773b04ec03d8f2f04547e83972ddee877c54bace77df168a89f5241a6aa1977aaae69d145d1919f4328eb295296534ec2a9a5e91cbd08275ad7bea4a2425fd682cead77f2b986a5a935ee429679616fc80fa46c89445b326dc4989a4806d333a4c4307799bc8fc160c03042a22d79c4e2064d1a603dc2179b55072e87b992c5354dfc82b1a7bdb6d666185b3a0dc415461c49b30ced45a77a13a37c66cc157b3d1ca6064a13dbd219438b65296fe6393a5a54fe4de7bcbbde5de52a624658c09db09840992c6454780a12465f9180c65c94546804560698a291ae0073cc191e5a20ee6801d18c69b0fb9a8e21c2db38a29b28f886ab07a6bc0ee215eef3f858fe857fad7873972441d188838e2280352e41ffd60930731b24b5118e790dd9f4636c61664e4e89d7193e8d0458980e44c99530a931811ac6165c3126bd8402222873155536c3082cf96399a255cd9d12c6112318c5fac24319960a38db0b38da2bbbbdb77eb9fe23825c5bf3926300cf3989c581005c39a3d9ecdf30d86cf19c2adf191f794f3d16be670ba9be89883a16312c53e8af628b47baf63a45968878c8e4db3d81a9f558df73ed85bb9e8b2df59d0fe15dd7b51805778302d9e0569f4a7a6fd098e19e35c34dabd778225e7d2bef292782c4f49b3c8a71674024590cf1bf10167108528bcfffc0c3a30c57ef7457c116f0438030f4cb160ca048af8ee2d5084053eefbd6741edb7ce74378b4390059d7cbc6e02ddf201fd86837d15d6c0e1b665295b5c5c3569d8d66d71b115b6d2362c0929065b39b6bab93a275cad56fbdeaa59ecf3b0db5bb09a423792376fd5a9c9744895a934cd92d2150af8c340b8a195d2fbeeeb10edd4d837dcd06ae1ff51a7de8a74639ac57ee7d923ef6317c3bbb5487eccb543f493348bc7caf406c9b4946967b5ce12870859e8292fd20f9d954da4685758b6986e327d55a6b493ca94feb63de76da7a6bd8ecd03a99906e8e977c868961a0fa466229e7ea726eae8a71fbfef8811974879fa14e422fa261f7df4f98e45c1a0fe1aa007d500fdf620d0cfe8d0f6b4dbfe03da9e6e4f4134700b6a46d9feb37d50b0ab88c02da8b9c656033b928863fb946d23d23d8dee41ddf69f6d7b5f7d706cb19ef22ddced434ff360c9b9785c5226e07df75178607451077e149e72d1f6359b76c271279ab6fd8edec20e195c6582435f71366fb5713884c95ce785dbbdf7a17bab0e8e2eaadeaa43d457ab4cdf579ec459aec45ab0335dfb38ecdfa6e618266f9bff0c3bab6649d22cf6e96fa466691088cc2e31cd926259997e39b4ab4c71eced89f9a183d541c9b9f8b6654a3bab0b0b995da1323e977d938f36c20e95fd9ae0f6d65e360b1f278f459e1776d10b3bd1fe7adad6be86c3ce276fa9b5e07672f221b5d6d29327b03ff91d9d651c7b2d18ce38c1706ef339ce092d5b708bcd62edcf66997fbd88256add20358bb5e0ecd0056aab0bd747b118cc159bddc219e4eb371bdec82287401ac33ebc7862ad88b53d06c6f04610ece709e8037b4f02273fbb4fc0b0b387dd20e5795da0b5a19a3cb5bf7e82d607f6de9c4e782098e23d7dab696fed04431ed3fe367f03edeff0f00629db8d7bf9fcb41fab69f3fad8cb6adccbf53e3e9f5d56b3765ef33f76629a3d2cb38765c6300c9b27a0a825522291b05fb9173cbf31e725be6f317d0fcefec3dc777017b35f1a7669a08ff9c3e4ab8ffa4dc099b1b7601230f037493714c93db15d8f8138fc7179da2abb5f4fed6b1f866ab20772b8b83ffc26db7f0ebed80343203354f362dfc7f61727812ddb505b71787668a3f67aed335ab1df7488e62b6358e63967c67850307eec1a86f38f10565e21c7ef997647b9177e72930a498a9564e585111b9417a923282f68a894935e58bcb04cca9a69564acd6e5c8c5be43a4f4aae95e4f85db33a2f06c9b1a1f005ca868c9e6928b44c92cea24bac24ac242b2f8cd8a48ea0bca09141e410699232b20b59924148b253ed64f82ac79f67e488c36813db7d4e4a27bd2e0cab35d3a6a6794b0dab59a669d66edce4386fc96976db38aeeb3caef32e4772366962b2c94e6793dfb749cfc93c39f196279e2de2f08b385409451a34b68892325352bc65cab7491c7ef22474f2f96c128739727c10f72233689398c687325150bc254aed2276d1a99206db6fad97c2437efc17f9b1413925d743768f76efe173ce1e93524a7bd0ebbaaeabc785611886613db096f9d6bb4a6ee8a654aa655a66b5a2a121d5abe486b7723d6acb7c9bf9efe87e6f90c804e3f7bf384ce6e10e76d71aa7dc6fef1dfc6f8d0723eabaaedba13bdc709e6ca7f3211f4d1917b5f7d1a78c8f3e191775e57c2809fa314ba14b1b64eab05cf4913e19e77c32b903bf0fd59282af984fc447218af935c02b6afc7c22f015294fc44ffc9188c0d1459cb44a5c10e816e2661f3950477f476f26d4478a38fa39f80bf2953c169e32584f1990cb25c4a5cdf5902d444041c4fc1d4dc487df7f3dc534de5bf988e5a31adf1f0a18d6fc7dfff727e0b6999a520efdae9a504480d1459ddfd1e1574a7da4f08bc9fddf66aa99091038bbe8507f278461d89b1c5403fb14ece5c4be94b16f1bcdd2a0a7b8f31e0f7d4b43fa1f95016ba3ff793efa755d98097542667fcf0face99fd0e7f8773affa1cfa17f023a350b059bf3f43b6088f2c4c97fbe739fc65f20c804faa082823e3a7f594a3b2f7249febef39e0fa4efe9bc871f70dfe47774043aa0e733fa1ddc75a10c5812a0608ac9d3efbce72f9c62f2df5fefe11413f0fbaeefd0f07bad73ffbac0bfdf017ddc37017d7cbef314871708ce0ed1ff38e1dff9c9f1f880110504e2f9e4afef80218d100402f1cc7982f32720fdb0b4de8649fab5942b15b394eb051ac2bded98d00e87fe45bfce7b4cc0f0a21dfa20d30974e2bca7d70964a21f824043be7bce8be87d0773cfe1bc732edc5b146b61b2c9673b724c783c98f326f8be7ca007fae0bee3c0ee7738c709f7b88ee7513849f084de9ffcf781279e7fd77dc7040c3b9bfce73d38ac31d9f3dfc779140e179bc9833949b8b39439a0c7f3e166ca7df2e190f3f63fdf37d80299bd37c1319fe04e670ff4d171c2bffb8e89effbbecedfffbab0f33cdfe9bc075f43dc4ec7e477b8090eb1c8dd926b881bba609543ec39e07d2c84f1b0ccdcfb6f385c812a636f71e88255c65ec3a10c58197b900934040230b9ca16481e9e384b99febd88cc59e3040b09d3b38836502f5aca20282d8ca8908eb850fadd1677ce99cd599fd24aff7ac7f427f5495548f4ad9c53a5a452a2a66e8b3bfdc021c2ed37e2a91e61475ad48f4475c62a49ee57428a558bdcb3a445b714b9a18d0e087b00838465f4ed9d52b6ec6e3ab4eceeeeeeeeeeee9eb36777d3d9b2bbbbbb67f775d5b961588d7fd007fa6adc5a67cbb6110a7d8daf61e3939b94776ab656d49dbf714cbc4b16b9efe55c7e70734e09fa593d0ff4712f32df7b391cce34e15ce675f5ec90d249bf3efd1f3894f9070a7e47dbd8f2e36feaa6c070c3bb8ab10815a850647255d82eac9664200dca0d6a410b545c54c081868605930546f878ebb30815a840859c2932a79cf9cee105cebc2c225b8921938a4b0b75b803123b6ca15578e83ce8410f79c083eafbd2c2f5120b988a8b8af9f20e77b0831d7ebeac431d90e094f912c91670ca94f803f55e10e8ba56566464900885febb544d451da28f4f8b5cedad088748f03bfa068ed9def8c8a4d67b41a0ff8ec914638a31c598624c311d1b17f557b3b252ebbd20d07f28b4b2120afd8340f7a26abd1704fa0f853c2b2ba1d03f08d4c978541e9547a5922d1e550970e88920f1f6644ff6644ff6644ff6c6de6c37db8d6f37beddf816b3c56c315bcc16b3c56c31b97fabe148deb7d57c5bcdb7d57c5bcdb7d578248fe4913c9247f268b8d5ca4a28f40f02ddcbd1646ec5adb815b7e256abdcdfc978565642a17f10e85ef7c8d4daa5b8ef521cf72112b9b698a4bace24d599a43a93546792ea4c529d492af7632d1d938f6abd1704fa0f85ae968e8d8f6abd1704faf79eb67ca57b4bb7744bb7744bf7279e2d1faa9f83e2a038280e8a83e2bcb77cac5aef05813c1fcbf3e14af5ccf47b543e5a590985fe674c3c33f582dea3127d88440e3daadc5f6b470290c87c931b1f49f1fd9ee9e42324be57bedfa3f111063e031af8fe6bf2d106beffd2f88803df7f6f7cd481efbf2c1f79e0fb39261f4df1fd1c1a1f7de0fb39373e02c1f773583e0ac1f79b987c2482ef37a1f1d108be001f82c2d0013ecc81800f634d186d461fc61b018471c50940286314f0a1340180017f434993df46286d1af0a1bcf15c3e94ab50b25efe88b063787cd8a6b065c29e8140e8816dd341f138ec558f0f9b4581ff287eb3c01b117a1123c02e02ec21c00d02dc1fc03d056e0f60a9ea00961cc052c645f1378065c945f135804de0a2f819c04db8283e0670c845f1a5c05ee3a2f817886f8148c44781a38b7ae0096028707c09e008e0e822086027228ff882e333815d707491037003328e2eda8119801780a38b14a0032b11472cf11180a38b92c0d14507c0b10048e089abaa0900861507185e1530040d000cbff337c030d47911182291434dc5449643d829bca48bba29ce89834313526872cafd46e0d004153a2ac727a2060e9d848269c4079d3ca167ea9315d2c40b3d53c821857dc3e130cba167f2182cc3a1912b894337e598c2e3358cd9be85b012e8ecef36518704539cf0972f412632399331e145fd1799bd21d7db48b5cec19b866bf2ae90fb2f53285f4b72e89fe284fcbca3539ca08f3d06fa90d96d3aa62b75a9562c52c784953a262ca66373c974685035361d9b9bd28a7591aed215632aa15c445351b70664f337a1144ab5321392f9582c6afa58ac5cfa5894e49971514db5b937a0d4ab42abec9999d80a2a44f33320997b3a8556de066473dda6622717f5c19aaac7c88e0dd6375f297797ae3e398aaa3e56eef9b1a69cf1cce4a69e1967451476ba7db81287159f9c463037b090304d3f70066b95b833c62ae39f416eb776bbff709739b71ce70e6295c38dffc4e4c26c8fc38c1d8a3534a969daecd075c9cce8cce8cca0456e3a36746bb85f57c61f8a70ca2b398e4184d5573ba9dc6f394a29e5b08fada3147b8ec368b7d9af583f90a6db63d8b63dd1fda642a26f554ab2deaf55c8c639a1c9b7dc8bf6532588905729358bbfecbee2f0e60a7385acf2b9fa3bbce250458b0efbc81e8b2cb750cedcd5efc0d8a150258b4cb90df4d17db63d6dc9f90d0c3b67cf01c3c6581c99b3ee33fa21cda804431ef5e5d7a7cfbd4a10b9847c0ea42fdf4bd087fceded07cac79e56fb1af752df07078632abd4fb28e762adc4346739935957b997fada63f83bd8bec9fd1dee1b8685d87360283515bbcafd21c6cafd9ecaae42fa12ccb20ff9f2ab135c0553b2c79e7b567d0c4896b90f8164b97becb9f7d181a1c438096c997b56eedec3b3435d7d8cabbfbd7d15928a908b73b11af6cea8985e524a39735641152112892d4f67b5916c137134cb537182e0a972ab905484c8255c9cd5e93a43b0de1eba2b5cffb755c8250e8632c0e12c5130ba288ae8c92ce7c7971c14948382862fc8f2e3fc314b9e8a58348c770f71ff1ead848d36ae305ce9483a24571d929ea443d259aa2b658b7c67f9cde2c64f4dd20f56184dd4f1c18ae4506234d84ced560fe81c3b14a367e9a0bcd28811239d1114cac8cc8c91d3c948674466958ac59246aa04837ef69e8c778566f1a0901d9b241b6c6fb207c95aa2d08faf153e62a8c233f6a0366401b8810c143700e277906944218fc0c0470e913d47c8db1fb2c91b5a38e5fa28061c6252aeff72d5bac8d737ae1f6b67cbe0b2c4510c3848215ff548762778323ecabc9aec1e2afb0e8f266f743efd28e653fa130c4531afc87e82302d2dc11088b5b9e265f137b68f3d4cc6ea8b58e174a9f31b5512a982164be173c645241f994004cd22afecbf8166699629af199a7dd260a067f678338506a20e478281b884cb2122211d039145c6504fe12329a20e995d8aa8236238dad823d6c84dcd187621170e37b436cd6233854d657fb73636eab0688838fcfd711cd934583ce498836d4394d666823c1bea056176f69969b674737c61d9629be39a6db6d122d16a999675f4ab904b4c13c85ae6635aca453d5387601d2f86600ceb683bba3b826793fb43ad4bf9c8abf55e10e83f14f24ca9a803cbed99fcc6b3d93c9babe19bce90b07385b073cafd170e3ba8dc604bbb4dc7a6524114b9128b6e72199f711a54aaaaee0ad4acf7528e18993ad334a81a9b9b5595ac4b02953e2664a2a9a85b03b2f99b504ab5321392f913c874636aaacdbd01a5542b1115caf12ba0d07def95b6e916e9361e8a31994eeeeeeeeeee37a994aabbbbdddd7d668686069563549148a5524c9f6850a89a1a1b9b9b9b544a4513592452a91493638c5226c7186d62ac2d397c94aaaabb023d2947f65298036ba1a24f3275e6d280505f13ba5aa48c8faa645d52c748991699f2114d0a255335291b99ba91a9944ce550a65adae423522ddd9836c978dbf8c8df4b3e5aada842a9bf01dd0aba0f0afd4a487aed3090c8057a49b6441b4e0bd0b2d1067df93b12f0a2ef938f9e78127c07befae87b294fb0691f7d84f2d5c683ff457cca471fa93c8d8f3ebaf11fcf471f05e08ff8e8a3241e7ff49101de888f3e5a79223efa88003f808f3ed2f102f8e8a31c0f808f3e62f9037c013efaa8e591d8f1383efa68014ebc121f7df4801f7df451134c7c03f23340011f7da481e7f1d14718f8978f3ebac0bb7cf45105bec743f1d1471ef8083c043efa68032378293efa48046f818f3e0ac147f1d14720f8299e16b9d8872b1d66397261588028ea1c9fdc1f622225784b31d662e546f1d5425bac6f14cf166fb174a3b85becb5512c5b6ccd3a22f3777488b3fc211f95e0fb577c6482efcf7102300465f9fd26c02520018e2e1a0116410840803f30850770745107400e6c400338ba280320067074911460d82a175900ac008e2e8a02a4008e2eea014e004717410146007c0247174100740247173d004717f1009bc0d1452f60d833593e1338bac8050c9b26cb77008e2e6a001836c94519dc012e400109c0d1454b803a707491127204b2e0e8220480498006c02b60286db28b7080a1bc190078030ca58c8b04000600471701000c031d9234fad6982a9b3da74ff79acbc5ddeb0d125631bf64a6f41dcfa77e39924bde9873fa3b786a18cc395238e52ee3fa7743b8f47d93295ddba9430e835378d08b84e29b72ef171dbaf0d64587b4fb853b131ba66a0d87f78bec5b179b8c77c364db3885477f48beeffba213c20dbf2fb2c7fcc1e186df0953b9e8c8fde23b7d5dd0cf88cccc15b27f341faa26fb474676cf87df4df6ef48f60f49a55ab3785efefd3a2d6e38636206cd92922059a3ff792baf94eb354dcb30ca5f9f2bcbaecff5b19564fdd807a76854c31e30c428289f915484648ff217e782925d201cca0c52725dda75613455d3c050a5e4a19c8b073b035bc574fb68b09aea10aae4d451d2a18fe41d56745178036c45e25e303cc450a87b60788822ff0e21a2c8bfb917cf4de365e6e6687ca7fbb18e920e6149be20d70ba6eab0228e5682f2fd8c4179edc30fa57167ad8774c85f03abe9834fe80746533351879828cd1e8463f6b8193470e8669cd498aa85094836243b098c49baaebec08dcec9b954e1a40c06090c12094806240392b990c09824302e902c099594b5a79394412010cf4032100672e58f04c605e3862f2001c9f2f721908c442261154896fbabcf205a6c1f3c4963f8fc4703eb24cd2059adf75e9be6c9be0cacf40add48f65aef05813e2dc86649c9e7e340b297ebab70d05972ebb4b8a1df7c92f40843d222ff2347902039e30c4fe249f2b579b89db67b8af11b57d2aef21b10e43979f91d1062ce9eedd509a19bd2afe1304f33d9154e7975cd17b68e6135b9c1f0fa2cdac87dc0f08afc798a29fdcfe7e3c1281fb9cfefe8cbf397e769cfbe292960f6d40386d9757df62225374819bede833ba256c6b95c1f0ca21805e53d2f528282f29e47798d7341c19eff7c4e26bda09113b745eea24fb9ebd42cef3f4d59f79066b92ef072a19edf381750159d674cc4c1ea90ab3025a66e8bdb170a5c952fd087e8543b2c2bbb2feee7c3ed747da719137ea7ec7aa941c04afa20c9d77fe16c96b006a9a40eb936633a44b107f491be19d32c9eb7c794d8df3eac41b27b48d937ce5ed3f2c77ed617c59f971c0ffbd7d5d716c23821b3fd8f86c3eb37fb9662dc9fb870efc131d300d9a7f4514034ae0ce89b081adff4e46b3c05c394bfc07b027d83aef241fffa7c834d572073f6f4b5ec35fa1ffc8093ffd013aabdf77de11526093498f2f9be70cae7b3bfde83533e60f6597685d95f7af23d057d9cfc07f481f23f5c758120ca6f16a5698013047a820618ca0cfac62116b9b3ccfbee398e47632a5c95bbce5bfad13e7b0aba32fada070c2f7a5d57a6595aa6bbff92e9d0a93fbca7db45c78be8f90c771e047a6b61f287be06fa0f3e41e170a189e1767e7b0a7a401f9dff3ae0f73b1c1477b4e73b99a67ddef3349e52f0f334de63fffb3efb8061e7cfa3bca63da5a047e170017a0d7392705d9541a0a6d1f80fe8398ff2c97ef3803eb2ffec7fd97fd9c953fc4301f97b932ffc7e0530397b8f863b315cfa9f37f90f0eb1c8df47ae13c30d5f3093c3ed29f8c355f9fbf087abf2c96f276008e3f97027045293b7e76c7f717885296f7f4f7e3dad0389ccd7660b240f4fb67fc46f8070fd26fb6c3b1235ba61aa70c66cd776f2513db9c8dfeb059d72960257790afb2c0bbf5396fde45c32ca4100265f2091fa94e3713dfdcbbf03c20debe9a5bfd33d7553f8a24331a719534f6e249fbe2b8afebb9166f105cc772b660e67cc04670c126e834e1e2c1aa67b78e14dff7e6c06f36262347956fb5356307424797eb8f98d8be66b98c2e44b033bd3d5fee963f5330c93258eb96296858a5af42f7a510c356db4f667de7e5e3fc32ebbb2bfb2a7dc0bfdfa5685a42284ce98a985a90bf7e79c744e3aaf39a7774d38d3bb73cea9692698e3fdf56af69bfb672fa38a1095ec9b73c94ab30b57a5c491328af6939380cdda7c57451dda5fd9939ce1ab66d1de6503735cacc9a7d50f3347a961cf8e87ce8e87c8126348c332bbabba2dc8ec77b8c40daa9982a19b31afd4d4e04f84d4dcaa177acf99f8dec74c5e72f4ab8fba6a026a99fef656cac9b9485f39cb8bebf34aec3b14aa096f906ef86ff5e58b946038e61bf525e752452c516b93dbd679716f90c01006ab5f7d947dbdc21fb36209d85cc16e0b17fb8e9cfc496a98cb2f2058cfd3b20ca7a44ca07beea3d8de7e8fd812e4065d7d0ebcc106d6b7a0a772f65a675fff25fbfa30b97e05b3faf5fd4887e45f3d9f3abd947b99f3aa2f9e65a19b91eb4b67293cb4cfb40cf49b8843666067ba150ce3d30bc330f9c240b24c41183723cbb71e161326eb7986feedafcfeed27d34bdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb5baa48b5746340a63f85644c2bacd0ea55a0d4bdb1a9a0fba0d0af84729826c7c431ddee0a1173841be987f593fa20691655b3502ce2b877b85306acecc1f73fda342eba72da8c3a1fd691c9e867fdef50c8c6a9c4117265ae1ffe9ce9900d30d4a1149a1aa42d65468229598a4aa50669c6471d956ac68819db51f9c8881a17f51b51e323236a9535b967f07d13bc7d077b6f7d9b32cd62b1e737fc39de728c3a2491d2b76c1f39286ce011d9de529b8d48f9c808d64de5fe6844058d088d60e5fe2c5b968fdc2dcb6b0777ef58cb33acceca459db57460c7fbc25b7d522eb9fa917322dd6ff86239bd55f466677f3e9e50205233d751f9089ca77e95c94aa2b265d9a1b7b2d896af7cd9b2043b2ad20d3b343eda3e9be127d52d1ba8e10c8737aca9fe8e2af7ff98a5f9559b1e182a29632a25ea54a594a9943090c3c5246149d0c00ee12ccb5936df5f45888a101521a43e5820596ca774da5609d2585f73aa949e0ae1082b997c801cc73042923c9333692596e1edbcc95ce537286ae9a38a2b727facc281841204d23748d9e9d6dcf6f9e876d87b0686f6fdeb77b5667f2b180299289c24781e0856b0cbea6fe00686a11ac71c2eae057ff8cdf512c264f918e8430343395dd2f70afa780c74c266ea989dd7105aad56abd56ab55aad56abd56ab55aad56abd56ab55aad56abd56ab55aad56cb85d3c5f56d239148241a9a2be3222313864b6ab5a2a1a9b9cd04868424d0740864b6bf2063df374822250e8a5849867c91718e630c3939416626f78b5830177883d4215955343ed2be290d92c3e95566afe1e8a24c82f32f9927480656836154ee5408d38fc188e50eafc2e99498e3831b62b99fc6bad9991c8fa0f30a84f52483c8718c209032c81b230831f20636461d2e3ddae09a0beb1f6d8427452e1905c8718c1a98b2b7458c3a4af09e38d4dc80c1460b3554403521b787868bdc9f95e03d33b5de0b029d3c333337ec8d94524a7923633cc6633cc6633c66ab899e65599665244a298992288992e8ca0a4783d1d0d0b8a89fab01f4c3887200bda40d28b57462f2b9b07d6174caf09808210f1d4708aced06d13c1e649dcc09e705cfa606133b843a78da109278321c7055081eb684ec92020aade14c93193476d8348172c00ed31f40a81d5be480dbd104ca013bb61842b5e12b36e2185b7441841eba07424c0d042137d8b1329bf8c02086ad5d5c281821491c821481660c6e8329eca07b0c7fb01d1f765cddddddddd70ebabb0eb477b0863fe4c62eda8d757777efa0bbbd0cb93b0c9b9bdcd8455173cb518c2236496c67871b3f62d6c666e90f63f4389b70e577cf2967e90ab304ba71ebb6c2950fca08b6bb4bd0238eee96dd0eca882336a512a4c295d545eecea9c6d081143a8b8e0321ba69968553610f17c5b208430e9c1cc7d0c14c4d0ed8d057bfc1260766b40f30cc5137f882e738460e8ce4931cc7d081a9c6a594544a078d1026e180664922892dd4c98418638c18b056892bed2dc4f5ba29dc7e18d8b89292d94b4f8119962d15cf92ca47ce3269d12c57ee47c942caf7c86a52c4411cc9289a3d67294607ed1307b367cc2cf52c358df5bb2ec6b95c979c3e695f3da0418831721c576b648ee3fe7e1cf7980da594524a29a551ce1b33fd4a5c8f31d6eced2b7167a438fcb16d130b97fed470cca15ca795b9089659724f8b5c692d876591db29e1864790a28e7882aa1775c429d7e7aa70b3cf3e2ce2a6881b1fa1d8b8a85a5355e27638b8f5516c508cd89a13d4098a93e96346227613e963294c752286380253608a0c94fb19e3a3eb39ecb9c76cb8c78c708fdd708fa53899b98f51472773352634ceb97070b83447993b2437d5a10a22e950fd1d8d81a1c43d5979a70e0e771201e1e086e02a5770d52cf4eb8349eaa3a0a43295b2a543e3a3d842ff6415757099fe499213d687d42cdd03fa14c5268aea53fade29eae864fa19450d717404c945f52b8a1b727d3b851b1e41eae070b11ce170af1c390ae6b845a07237871b9ad064426e88d5f4e896ebbb2180a9238234cbf6f58f28a18428362634b97e11322eaadfd1e1869daa9bc3e57e23b504d952b88fd93a41bf53e5fa31745628d72a739439c38266b730c618658c5146fbd1f6139d377cf245872a7882ea507d7b82b2438ea83feb5f8e52c4cd558bb8715158c44dae5f63936b87fe049523a781272817d5efde70c31354ae7f0429d78f362ae8e3c68cf44f111ba38e09860db63074302437ee3427e42c0c2ccc30be40c320230c3372e32e5b6ceb8969b6358c33726350b6594d10ad4608b971cdd66e13c726641bad966d91ab39028ccbf6c29b33d4545b47d3a176cdc4444a69f2269eea505b177714ca4ba539270a4529bdaeebba6666300cc3b04b841b3ac6b9a8543dd3332c160a254b9308775375e8860999ea10cdfd56d01c6a371ea577721e61e24887dac58acefd56b4fc293533228e367950bb89387a2043d379d12c9cefbac8fdb1e3e2e4c3ee644d568bdc6f6f7c1485effb7dd52cdd8d0322b2746e7807b5333630d4565a124d496e4bcabd00faa12687dc5a1d726b77c8fd1a1eb2a6871c76322c928fba548ae42d528b90dad27921b7c583c5b8e8a659b053776e882c98126248bef4971893c9da0cc8d110597cd52140b44de82cfafd359ac5fbfe485240e8c9fdb1f39cb880ce774aeea7119798dfa41c9d0d95957c5dd7532c5b2e2652aa2d282da879fb4ee74bdfe2f15c1dac81110bd0ffe1ee0cdc29e9561a1962a8bf03445c62fbfe8e0ff3fbbb33e412136c41cd9d12a980d2b7b0efef58bd000c0c62036cc992252d51982f04d41205effbbb255147f7fd5d1f220bf7fd1a187214047b2166883aeeb67da7f336884b962c5982d2915f6d41e9686174a80e2921b2746288a1fea60186356332333eea529da370a9b674be43f9287ef45afd434f9664e7c8f204d76c9dce12d74c8978fec344a89cd9a443261c93af1d32f9c8c920d8d337f970e71321a09628584171a9b604b181b764498bd4425fc8b7786447486da1efc125500b056d109710e980d839de176328047548cb6a026c2097441c34f40e107208981d24424e96afa15c8c2c6f3ccfba464417ecf5f6c256bcd0eff75ea66c8fb30b61228c941ae8dc408b744fa0456891ee095da46b4317e99e7023a77343d7063ac4c1a594dddd8d93d02fdfbdb222fd4582de5fd700815e7ac49697986577c49352b2a1d65a6b55a2bf3d0b1b49062b49362411506128c290cdc6e964638bee40b0f1c948c9325ca1bb98f3ef57a75f339ce1a04d08779ee18b961bbd219b20b95fa5479e80ba65fcf5921cd6c85d6ba4f36aec09dd19ba31b2f9797589b55fee353ea5337f5fa706685e8e75952fdd0857ba4ff7b945d043971d9232da00dda7fb74e9eeee5a16238e6b046ba7fba9a58cd4cdb0d23008f8a4f4aa69a20932386047162ebd285635086050d8dc0474c873e4c8342df49fc56b565aba4d508db7c1a3094a2b876d1b5729e8ba88a6568eab1d46634dac89353c9a90d962986f181a2e472f6a3bcfb3e0695c1ae8c7fa1354e36d6c1b98f5c34f4e715161c50672e46f3bc280c8f2e5fe0b8cdc3ffba7b056441d0b8838e4120990488ca17fe4f9120ce3197277cc80029332a48043860a2e19a8f0c6a8a213c30aae66055b18402c182cd0c6d082ec0b175431bc000b030c2e30c4c0ca8001572c60069373d93e8702b0b8ae48737c34e7e81019d65ef8a2335bdfe8b42b94c3bafa7562b56a580e732c11bb4396bb1eb4d180acb6d1ede2b64f40eecd4aeb1a46bb9671ceee7aede2b86e8b91e58a31f3eb44aa8bc830bfe3ac70f1c7fa62992a2b3972e450228afa637bc6b0ccb6370cc77c25a043289709ce53e6cd68ef966955ebe86b7ef285186288218618624829468c38fc3d84916e6365fb9c49acac24a0b91c3926bddcc6bf4a287461f8bbb7867320906f91524aa59b61ed45638cb163ec183bc68eb163ece9ddddb11b9b263b25487553373752b828c6fa5d23eb051d228314318c3970207dd02f608168107ac1e90871155771f51d0aadacd8b0217d025eebbdfde550ce1a353ab63321238ef8937b995004b9c10da2e7726dde2dc2ad51394e17316f9263c2a3ec89712f35d6aca37ac07e7e14d7d3c7c01b5c30b70e375edd4fddef9cd56374335ebabdbbd5def296cfd66ccdd6a42ddaa22ddaa257eb6a5dadab75b52eac85b5b016d6c25a580babaddaaaaddaaaaddaaaad9ab5b256d6ca5a592b6b65adac9569eddf9ccb4b37e55cdc39973927c6b9504a29e7725dd775615bc6b96018866158dd34cea533b25ad1d0540b722ffddd9c2cf3ec256669c44867441ae98c904834344664648c7446645ead6868a49453b0756b3c062439dc72777124cbdfc818a30b549663743103ea6208ee21564a19231d3ac6b8dd5b67196594514619659451461965945106c7fdf53c1aa0219c72cf39a7c95351877dee63f7d77fe872c8d8874e87ec60696af1dbd39f59340b8de96dce125863b07c8bafcc71b8a8f225e6209da54dc39e8aa2edb3cd55b100db4bf78c45577fcc3fc3570712d1c0ebaf0df490ca8a4a0948165259719595151b2a2a251507441b01a616a884ccd7653d0b199a0100000000009315002030140e874422914894679aa2c90714000d8ba84a724c1bc8c32488410a29a308200044000000044040301a0164a6308a6fb226a6f30019165aa24d5f1bd638c0640f8a038e27bcafe2223de80ba11b984d50d2a984fefb8531d47505d3c7fb24c81fe9234c8fec23641ff7314c8ff631e48ff619a68ff611c83eee23607e741f21ffa88f3079b44f217fb48f303dbacf907ebc7c448195d37050281bd58f4067df36f0c71f7cfafca1ee07cb7f663812dad665513e898226c7df43807200b5e477dd7853a5ccc4edbdb1de97c7c80b57c188a093b822ff2186e34182b608d636c2a362175e59ef01c0d73bc9aadc4be6ace8b8b72240e4eb2f8180b56f79bf8defac22e39ee31fe55c5c35e6a9ab8b444228bfaf1868b0e03eedbfd32b1ed03cd934efb34e64a3c12a02e01fdc38976506e145392338803827d9684e1e4c466009b9d5ad45a3fb0a75c75cc1f655b1bc8f4453eccd8d104062b8069bcb16595a83eb9e993e6a85d21f0cfa6f0bbdf4d18bd8642dda4a33645090a92e01672e7ac4a78967f8c4f87bc911c82554b77c75bb2342173116c15af1dacb7967ee865fe036818ae840de10da6de2af30ee1734f32934903b4788519bff098ab8e6f2f9bb6880f95521f04c4d0ae37540460cf97d3213f96f3c186d4ce256d7f2c38da176ad7f256aa5779d39d2d50c1c69e8a4dc7f6d6dfb584ce279844233319e2b14a384ac4ce44528498a3eda80b7c21d94853b2aca880fb11cd1bf9892573088899d0dbae7898bd2da6a4ed932f8c9c80b13bd347425368f5bc9883cb230c223cdbf1c8a4de1be9c807000134ac6c58dd5d82b0b88c759d6e31ac444de6511ccb8c197c968005484f4234e687b11140cffb9993c3a833ca1df13a6612e31b1cdc9ffba90f941ee3e6a9d2b5a202affc4513acb66cb992783990585a5441614b088843e8a2838fa4533d5248b4469df4c558c41a7572ea30ada94a6648ba28e7df37ccb72617c62011668d215f2cd1e09651b8e41932477a4c8ec04b89d9e8018889a2fd6aceefa7b0cc9f835732c531e504db6841ceeb1528b070024e4222593489988e9bfbabe7f0dce5cb849a72cadfbba51243d3457aa087c98476666d9f0176648c28c141ed94cf496cedd2f63030edf48e30123e3893dbfc420cdc4fbdea10deca3c1461ab6f3b1eadc6fa807d099e5e0e9ab9126f6319f8ce79b193e8871044c22b056945d75e355c8ad339559f56c429c42d6bbadb24c96155ee5376b0bbb2adc7f9ce097441eb1497402a376e87d9d0a3ae46425ca2d893a64150d5e714bf17c748b2ff49f64553651525d8c0f2082de6375aa3616dd3a1a0e3b3981ddb2daf559954b4ccac9ceea3a19d8c7f10b2e654d2e4ce74cc1f3d9f2c5d52780612551f23d3a07e0f8aa901bb4e87aa601a95234efc84e61a2a1bb20771a643166d00e734c4f7571686efab2587f987114cf8b10880910d04c61a28206cd5a237944a1e224acd23320f50cbd9ccf5bf000b491509a4442a07f68b36c51fd242a9cb3c831378cb1493cc645dd6dc260aaae97b868170c9eb8276e752f5ddca2bd93bb7cb9b0769c21e122bd5909d20494675a41c04560af099b1a5563e6deed5b44c2d40164e6e22d1adda67e0d42e916d546177902ca2ddaf53450a6830d0e49718bc25627b25a57195d20e357e150b8971ef85065cf7c388fa153696d44611b71f99a17e9c5cab9f100abdc686368bbfb0bb9e15be487475a2900d15b34586eb6097b4b3d8e45b16b1b38d3e1779408f15431a0fcdb619b1391e7a0dc90e3f5e2f0e64e5dce94e7f140e7bf7d39d786539c15c9032f113a1ae827f2bb46e2ecda79bfa3b0724bc7e87e8987eff9e0a03ecd6829868b0dd1c758fec02ce49da02856b411381c188af275964d0ebcc2768620d2a35e70221e2d3fd104050a8e77af6faad6b37b08ab33c686c186c7e315fde2c43004d3fc49494d677bbfadc8ceac6279b94aa006325a2a1efd1e40a7c9021d61d1caf09430ec6b773595b941abe20688af62fe16ef622339c62995cb30e5a7fea15e064bb031a8722e1bd56e069a7bedfc21962c9cf4d8983842ad9350248ece7a7492f64c635c80ff94150367a17d953a15ad9f3ce8f54d930d12eaf89265d3d09d6621d316c190c7ce81298182bbd8b0bfd99ebb966956a4c7fea66d990c3c002805f47baca85eeb3a85fd33b412470b4892b4fb01fb1b904bac4ce501769cbd2acf22ad52a4e88317eb20871703912f16604486c011c5572098d363602d70d0c4f84a7b934a3caaf5ee250da079efdaa7194a8bbc1f3538818c86716d278011f954052441f6e922a064fc98321a6e3c4b6c2b5a1aaecaf08c3d8c3587b5891c203840de2733941dc2ff7ad866a897a715996d10c8b5d8eab9fdb33b590467dcbd4e167f5519320e004408e734942ee2c1d1e7a410fafa16531f125cc44663a4314735eea459e8e3c2968c181e70cf7b553b1ca66e15e765302ac6c3d20196aa09a775139c93c11edab57c81eb0b860d46ef6bb18bba5d55c6e4be52b09ae1708b1fcad1a2b7b4ff794fc0672d8c758dd011d62c31b8deb6fb806112703b6059ed4b511e291bb3bae95c145647d31e6bedc6adca18ab2b977bc80807eed648225795b0985f5c00e7a498ce9d12e75672388a5066a37b8e58508d492c11927022643139d33dede35120b36c76d48d3401706b065bd71d0f84657de44c76344842efc9958ba93044c8a24fea4963d838e2e9fe277450f4d916fa9084a6f2a4c09a65f68ad0625bea1c086c538c5ccfe4618baa39fb072de64921cbe3e482e79d0f5bde313c318d990c94e46de34844700766197eaa5eee47cd85e35b166da72e1082244c185986de2686d26fee0f720b17ab1aef3fcae12b1a018e840d754256ed816042aed8eed798e67a91c60174833f4439228f9072215d85fccd28f80c37fdd20db52ca1fb8493d84e78c23d8a8b75b03dc90e2aa73df1491fc8e418db9c1884c3d1eb9927c6d843d517348f3563cfc4eae7b12d4ff70ee1dada40d8d00e2c0781b4a8a1757a2e8c73ea1467893dc8893ac4af545c23e7f3333b65830eda794c4e619111ae72797f63db560687f8174d67e713b8b4f9cf636a099c00123bc0000db3e5ef67d94725e4136d90904d0402fb52d6ad764a21f5ce6fbbe1bc72a8d9a777398b846016ac24fa08aa90cec8a3db774b9d8a45322b4f6f7109355c001cb110b318b060191500fc54220b450e0d54f35d60a8cd07ae61f31f89e3c52126e8fb1b7238b71e17c95fe5b118746480ed87842a25e978723b6e0ab7f0461bfd3158d9c60c42b865b915b7b979b9c07bd7a19ec8c75f0bec588f19232778b520358f7618d1782c9aa0b9859ab9c390572385302181fde50f293b1436ea0ec185548801b6e01c4e8756c1eadc0d92a0587463ee07953e12b2d81f93599b4d202f40176a227cda864d8f4591c0dd9a8ed87f69fa08241d3b9093b1f4eca773be6212376921cf19fbb7e61bbf3b9778cd5734302e1ec997e7c7cf70ddccf74a70bf849f2ec79ae5b9f24b48789e09e1ead088eb942babc34c908f803e612aabd41616cd0757ff222ce08f42f0bbbbb92cd9c5377615db0300e6479c262a2f7ea489fb4bc21b6e876d3439d1871b722690e4a44a56b1725cef2e88e621329a5ccaf27eb9ba32df0a2755b4bc3918318e69cabb1bd3145305b01c570ca012492403e0f26fa31724ad21722cb3d44a9d2dba3b4c69a2763ca9cbabd7aca68c568efdbdfdcfb5cf9270d01fb35f9303fc737680f5feb44abcafda526ac5e7b2c5c3d82189f3e8dd8c69dee9ce0ce507f43180bbe11e6b1b64a1fc81b28dc312ad753f17a0d692ce30ab613be12655a9a084eb17e85fcb86f8163cde8c69788092208c6e82f2b60a9fbb272cef84f2e26334244712e4a4c65b1a4e9dca749be10e8de7b3d71d11d49f5c1f82f1ea4dfe5de0338bac3f47bcf118684405a58d26820dbf42953867434e7e93e21413c5760afe199700620889219e8a5a90fa7a1e117d228118286775f979bd4afd6e945571c85eaf13b5f9ce29536ab2cb4851d8ebf317e18669e70feb95a3258f8181e25de202a13620187ecf0a22597914a12786890f27e5321382eafe340237aaf0dd9c247a71df943653b8e83362486f81ea40c4ffabae364aa1bfa173cd93a7c2838a71f54fc35a11579ba41687a64f9ee76ed14be580e06df9bb0df5ed54f5a0e19c55b8740022728ead6562063a05c243986e5934a0aaed298e19a5529ec16a287b0c2b8632c5b98397f5d2090e768ccec041c744948a09e78eb55e5f4552ca698ad3a772f9bb0b64b850fa40b57c0b8266d1a7b5b1eec8880f241abd0c2301500f1a1767c872c5f8c6a8a9ee59dd0bb36e66154989372936e3f52eed6563701484f0659f8e4a679e934cdfb4716ab03d387984d3483cf4a20d72b2a4ac84b888a19a9dc82f0965582fc937caa3e10f7afb9fd3d0801ea23bde1220d53919a5badebe5ea7e1f0e76fe5fc5f9da6b6fdc4ccd7cd3e9bc1e534499a1581075d11c0526562230848b882e83869445b76691ec2dc23f47a8b78ce7da940febcfc63070581396fe55f8be41cf5d4374cefe157e55469372c8de794faa4430c8e94648d17ab0cc5867bac24aa8197a0e461331e9428f76eb170746e66f4dada7c77944454c3940671eb701a1573b194048d242f4d99f5a35e11bc4273ce23894321547ee7340d4c1bcc02504f92485c91691271c40a7125345eea38624a0fdcb2d8cf04ad2f8853e81b2918d99b0ce56782892699b8091ccc8c672f97926fafbd0a73da5f112c26492b64cde606c754179586db28a4cce177c22cc65d0978fd282148f4e5d5fbef72ec5cac8a3fbdc0211652d5f4a8c3a65162c820666ee0c67137a837f28f58810e9a39630a9fd65a727f9054eb6d21fea099bf7c0d84203fea51aa0dd773bc6d95c659c1c790cd9dce42be1ab10e662b57166d8d18b2672a4dca84d56b92b0f9daa4ad09d407dea93654bd56666519c8cfa3a66851729d4451050ca54a7b63a591af98a04163d333922892b69c99ddda55e4ca88a2faa261d2de76c43652133b0e1bce790f417b7c874ab4b1dad8efa5380bea10d62a86b66c73a38f8bd2489d050f664fd0a7c9fdf35af44f4b802a0c1b0fbc0d05c173f30ff848f7e995a32bd2ae526b64852946bcac8c410fac46b4cd8581a015a907b16f09239d1aec9fe2ff8ca412605dd48833038441aec27b29ce7cb692a381ea6c8a16c1d0604e9407702fc2991301b3be5ed50ddd700e982828a0e24e6d5219e63b2b8438ad627e6a9bfc9c63870c2cc4bc0b0b9639afa12a13faee5d25fbc825cd5f89e326928801ac069dd0ef8f5dcfd919c1807d953d99abe98dbfdf6cfaefb2b03c3adb6601f8eacdff67316a3633d0a644ce2fb3e87f1727cfe7afef66dd9895cc92ae2caf6f8150cd3e03737f01104a85f8774ab1778fb5de2e4c3a909e913481abbdd0db99f6e5fe57b9d9221ba21fac57b7339406aa63c65e3879737349a21ab7f08ee80076a19127dee526d0bcd952017e9653310f6f4e0a21842ec46147e9b3b2e9d659df9ccf532812f201fd30cd1936939d647e58e237994d7e81ae99bc2cbc317e8186cfee5508b232c08f645a2cd45aa2b288e272cb52c2ae35285258c91b1e3e499fd05a489b2809703c7a2d886281a5dc79a8ed0aadd2de123ee204f7f401b1672f81c1f5becb27b4fd66aee47011127cb4e1c2557a02ee8fb3a35f2dc161cf03b0ae058107f3a4270744b3407a79922573f3d5628bb944bf55074667ecea53be9d6072bd06a3d84edc7abb6fdba359989c995913ad38527a4d1b38a703f384a64b6ca31197d9510a375c230edcda36516b0d6cb6504e32da2820f7388ea62a64505b83b310a6bf6bd259ac0347452a9e607f385542c2cadf8f6023456597d7cf0ddd44bf5fae20693eecf6db5767e10dbd6c5ca38d0132b8d7f2faa0876c98c5f72147ddf5ed6d22a7d34833c2fbc37ee638e33a45f650b257d862c4a445f2d80ee4d5d59d785391941b40f823650ad98706734af5b3df77732612197e06d3276504bc8a5c9201dd7cf05ab0b9a28de6f209b2f4185a2a2fc6c8b5f9227197d048ebf7c0437991ca72e1003ef6283d042fcaa37060bd37fbe9ef353ffdfee6e7dfdbfcf4bddb4f7fbff9d3f7363fffdef6a7dfdb7cfafbcd9fbf77f3e9f7b63ffdfee6a7fb3ddec35d06440f15471360c53ff5dd8137d93220beb879b6b4a915bb19a648cd596fc541c29d7d710b54c5d9ac5fb85ba99a36b6237118b8bb3826577ab7fc39c3011cc0df78ebf8bfa098ef166a96d504ad6bd20c9efda1568f9b9fe1a02c0de56809ee03225f9717059abf84fb6630a2641132065ae6183e6d28e381b03b85cfdf9bb1bbf15d7f7e27f4236693aca20eb95a579ac59ea340265f1a5a6bfed766334fc9fc3fbf2b036dc50701c69a8769186e47ac7c152fa3ca2efad034818430fc1e594adfb381e0f16df022e290137742d404fdd0133defe514afe59eb76fe0b09f20de831894ce13f55e53efc939a4daafd7cc0f3471a4663af3591597ea9136568228d3e8239f472399915161f285ced889b47085140fc7cac63b7c922269fcb648643481e99bc6370bb809febe3157bbfcc7826755f1a22280a7903188f26937dd8f56bf956e40cd505436890221dd674252a9b71eba8752f03ae8bfb51c3b0845745a93970165834237a903fb9b6ceee8e231d80f7c2a035bb4ad3eb6779dc41d39d2f13d603799a844cfc4d77c27fe3b7c11ab3f7c64f77c2718d2fd87bc482251a648c5a845e83bc162df4e932468f3287b0df7a2173d525c79b1bfd631f7ef62ec8ec3d4f56d0fd3497aa789cc3ed34f805253995fa41362c6eb2dc20f466cf6aa92ffdfd580d73d6f2f6ccb8d59a447057aaf89f87847d4418b16401581abe8fce2cb103b66f1f9e2691702d2ef2cc37f6ec6e57d05f16268230c5d3d9a4f891d118af246ae466af9e2ec337e041ddfe0165e5b2924829cf008891261a4a4b829c195ac1a1c0cbf753931fc442a4624b4efa94f98684482e31793e44b480d7309b942fa024ba03eb611c97b5643363d3d192b1abe7a67bad1ea64ad834accefc7ef36a0fa30b646db234be3c6f1ad9be505c4d8acbdcf2a0de7feb5748ebe8b13e65b89f2c20cbd003074f32c72994a090486742c8d20d40850604a7fc39922cc9a21e106fa7dada12a15dd65a762bd56369592c23b6ddeb083cf8aab6acca1cc88012a3034b1aa88197e8e25966f06a04b2251c5925745460f405f39db3931af20c228a2f64b97b867e2b982387bf991d81ce15a14ad45882659f41e37cc2f22172d802dbd6b9e8b7a86b55492ef7e1e3c8dd1a3d0a4300671505c84c138205ae711ff119522fbc98e610eafac4a4be333626e107098af4349c307e2ef85888dc91660b9fa5eb57cf704cf906af8ea369ca95f6537c6e499e1d099cd3407a7783ea139f43f3dadaea007270a5a0dec2432baf5a38eaee38be24bae3c45a871ad1f6f9baa6edbd2c87295de1485039cace8d653dceb3b27c5167c5bd1211e76b7726db5ca2f599a396c537e6945b9b58069dc4694b28c0eec7bbb9d7b289bbb37dd09905d02d9b82b0819e9d63b7df860f1c73e90187a619211c9c77db870e83edc0543dc51e414516728a5c31fa81034512bea3a2fae7f5b2a95bdf4ff4ce1c619c598443fede34b271dfdf280aeaab34cf81c179b0f5751487863adf677a0c0c33a77c72654c7d7ebcfd23f2e7c738a0c6bc626b6f745ffccccb02a7fd8dec5af46ca9320df8a38278d0e23686c95c5a020ffbbf0d8ccfa66d385f3ee2cb928dffd63b2afa831ea7b72eb2da55bdb9d695576fd1d3dbb1ebfd865eab4f7c55a53bfc36ae7a9bd378eba9e6cfbe168f62f74aa9eae7f51cbb479f78f59a5be5678ece4eab5016022505d3f08af2904f3e143d7aaf4bc95802750c5884fb912ab61857284527839431e2a862a11d5b0c8a96320d59dd3abe18224603d1664d17f667226e92fc99a09a25439da9f0f5aec814f79678d267b025c1522f343b024678946de9fc5215eba73d44b318d2d7eccc9b585cfbd5c28536f5083e7ddb623dc63627030e9f0cd0d7c0431bd60c777c36efd8310849c06d6fcc25791653c4e631544a0a152b51541a9b2921082a1f0c9b56ece7ededd76e045088d8a09decece2ebbfece3e1fc1db36232eb6b4d0065efc5bf9ca2d78e4127106bc9b5b65a5c345fdb8fdddc861fac1f9f4cdf77e998b5cdfed9ff65dfa08b6edb004761770cf3af609ee6e7dd7773423fc9ae3c0a461e5a27dfa0ff8ad77017cdd544d94ca01214e7252191fffb152b1d6471eba9754c0b706af91544085bd45f08b5474f46472de8454589849eed17e5420e63cca1df0a880e229ef14707254a44766a3426eaa559331584ec13a26659e5161c4f75f998c8a53c30933f292ee7c3bd135e4ef379bca840b20f2bd0be97f9aa535900c98cd280e9e1aa4f71774e77a99fd9bc1487051be652f4ea7058494c05434a1725923c92d2aba413b805741f1f35cf3226aa3b569111dc3c44921943821b25dcef0a0d7cd06522bcfbea653f8033b74e3b9e9fcaa37949f15f254de48fea19be51fba6dee38084447f249ca06eb37a2504d749ac1f6ed29a86c688cae0f1863ea86adb1d616edd6aeb79ab2438fe5fcc641223db40550741814412ff7f9ccf2d69bd1d9a302d9410491c745fe402afd2256882b59b7500c17d5da45c1c8de454155cbfac83edc9db81ca9f814ffade267b9ca904e88f346970ed5aa978701a793e5ca4cc518a802e7e1cb41ffc490196dc1d969310c6ffc121ed070387b00477c14278cda9cda8017a47bc6978f536ef6cd7982da2fb6b2bdb2612e40fe2d5a1313df10b66c16c0c366b3b220880135ee6c3a532e9a3d415cde73b93fc274e03867b938a73e9ac8650543cad7030605c6cd22cd88919b95e2f9439befb84af639e5ac21814a0c9915783aa85afa5b8bb31f9f041c8b9871d6ae6453d6fe935dd94ccb6a65601ce4490e16bf2e9653ddb038e8cea6f7ad6fd2671d281d53f114659fb8c49e6198d820f2b925a8324b28ffcfbf46718c0dc420e2c4258579b3bedb25137407c96df4f8d634a1d787325e068a5b50cc5dd91d8ea673268d1778d12dc14bb8f51faa1f5879f9f88ef98cb42750567a847b3a6f46fb307a6932aadcc0651d00f2a2fbf2f5a2ad0bb482b65eb41df91385df76096fd293521731a38942ccf10b316433210cef8bd81d01e4569cbaf2fd6d69c01b9a4949fb0d8a4b3c0a18e1959edd1737a5278726fc158883ee98490e55d0abb75ea578ab334a953ce8a5aee47fda4da1528ad9d0eea7b196ec3ee956eda972d687b07832b459ca38b4467ea743ab961491967d3c2c4da4f380be10c37e200b6fdb8abc7b045bdd7c9d90ead05432638b0c0ce8399d488d0e56648bafb57aa03417e6e986d4a6f0a20b3107bbfa92f811832b294d34e0f7604f3fbc7518ef1c825d315c2fd218d7dc72134b8ee5bbfa8741e3b5739cd7caeb8954b10d19f8ae0f9462123572fce9555e532568000c84c26e7fc6fe9c4fb8d41660cc740f43b768715680500abbbd6493b1e719a7db82660385c07a287916229d499c956c9bd049c53dd630356218886b83011ff78973d354dcd98da1ddc861b7a98c501c2c8809215a82015a2fec36678c104a868b5499b342f65b145018d6c5d3ed7881801c4a020c3a67d54b614c3c01d46df2131e49d4387abcf0b0060991e43b5ba40561f86a6818540b823af88b8d7e4ef1f9b9931e2545a5b39f028fb1d3bde64c63341cc7a95e98ee36d29081bfe857d6387f05aaefb04b5f534220fa09cecded3677bc8d8e8050d59287136bc6ab57e2449ddc510fe7c554b4c63310a2d440e37bb21940a17fd5ff3479345ac36844d90bd68f6b9e4b1c4ee4651b01c375b7f02b75a56a9d7afc04b8ba848f8e995df193888dda603a9ae8d9b6ab0e6e961499f1602328435e405993a617ceb9a35b7f839ba099d25f75266567276e521e2cd25c71e80c12690ad0cc394f94a70ad09c6dd4df42ccb4399607ae89b98241f6b7d46df204b95097e52888f8940c0041a826d20f413e867ef5ac510e0038593491e65653a3588298b95e458ccd9e1489f1df903ec6800a8c463a787e28c0fe4e38967e083b41f9265617dcdf8bb86e0a7859870fc9e04c15efe0632b476d546a1cecda5f07889423af8a305d2a7948098f172909afdc9743c28768e1071158a9bc1baba49038777ae94f0f447944b9e0e567e2277324069923f86f57c1842bbe1067d615430b234ac136f6ca33ff8297ebe2d5bacb12571528e4858c7c48032c1507930fcf48197e7924af17bafba330f7900ddb6b09f3328c63fabef472af86e1598b8628247642587139394218ead1a8c67976dfab7eb0aadc3890daaea24d59e52b36a7fe4e849fcaf5d7e826a41dab01cb1eb2cf748d1ac131908970a783cd041b386560bad13b908f1cf1c96e9d2170771627ff93a71acccec7e13a1a57c4d89b19557fc63ab10a5b1ba7aa136e064d565cf384010a9fcdcc17a6993f1733f44e740e6bcc545929493f2e2eb1677145866634a45c9bb75a5188a1c3adc9c2775e949d3693b8e5162022050d685cf8ba52a301fe4c3be468728fbd0ad264a33dc3626e5477830a110b0160235ea4e1f697349c4d69b82f0dd70fc1adc0347a3149369664c9f1110dd6864cc924a9e15ed3ce1bff1ae5c5e68560f3ef47d87c0ce00f6f484ab3222a365946ec820823ac6a3a36736a21cae0e3d31e2f7aad87a82934191b46ed40f2aad50d616c1a74049bf8d975a6c45dd858548147c38f5b6cf4ced6f0a4855862b3a5b442621096c9904de942a2cad3c4c664050826d9498e1fcd6da3b29c26a778788179d4237262c3afdbf918bedc44fd89f932e20c5767289cc949133cc6a09cbb87ce3e4adb8d79e084d0128bc58f6d1698e83096a8c134d8467b89eabb0e4677c7c572642a408d7d45e41d8d4fdb9aae496a20f461dd1754a6478e376bcbd7c5ea3ba8327291057f2f4d2d352f19ca4a7f2fa3f4f5a69de22838b4366eb77a21fb1d927f1796efd3029fb13d595a19a2ede8a986208a322f4c0500d5344a3df3cc503493467bf7fcbd835d0b43beebe183b651ad89815d18283c65bd53dcd220f47631ce44d9cde73d548c06a134b1331e419a7df78b2cdcf28850e885308c4becd45f1eeea379ea180da7ad8b2d9336ddfda64cec0287255299eed4d7f92db8796b9ab479789d5d90e3919591d167def512976367e6509aa6a4ccc0fb221c78c301cbd423d31cb58a3585f1cd2f95fe35bf3cd4c45cc2b6fdb0b323c488f3ad5bcef0f1e37add1cee086ab7e3b8ec103ddc151ad49bcf6dfbb0e2d4de31a6fddc4d15e777b663249e8a8b3ba0e29596b2faa67c0ba72690a94399f4c121374cd4e563bcba2a768e888f2db22abd1495285bad3c60011064035e278bfbe081fe780ac3ff159703eca7e1d60033caa1337c19730c58e55887e25b983791d2819e09e187f49f9968100ceb1e78217577fe85bc6c5066bb31eab76109e9f273c2f725031ecb6e3e1aeb8cefc75457054dc5ceadfcf0fccdd9270d4a91b364753339ade2e601f6ee6ab170558777337c26ca5014aec259ede7f59d2b0b716efb7804728b58308001efa90c8fa3385825bbea26719c2d8583063d1f5af1009ec0d103fb7b0203838b1cb06821ddcaf17e239d2dd3a7bf287f2e3f41e1275cc3bf0c9d90e08c40b8f33e2fff2220681009a5d58b7869a7e49eaa550e6a56c635358a1a760737515545dfd9dba1e106e327a82ca88713bb858db67c389a6d14ae17128c4adce70027de3e04c718fd8f899b473cb2b01240bb971485bb88932eeb21c0807031c7ba65c0622f991494a7625fa76447344e2cef527feb4d2a731bbbeb41b9acb5b5bc137f31f81e8e297f8003ad181656436a2fcd4620c101a772eaf0161c21b3ad13507750cbacc56edcd338f29c5dd6e3fa9522402fa5b2c9e4494504202f956d627c382f8e782daf62cab09d55a8c9238d2e2fc361d08e1a58640efc4694dc511e4a278111162640453c515387904530d1636d111576d4fbfd954175197fef5cc190e1044854c10b1935b9f3cfadb138a4e264e553c47296142d8cf7c799658734bacde55acec763feca2e7150f3a99816b6d8027c2050849adfd31d171829fb6c55339e86a4e60ba86782e459456e8081adec816055e40b99d3686a5058d00ad4ea0338e796016e3285b94c440cc10c9d6f7ec0660a616ac2d9379f0e88a14a5ef2c4923895fac9a2d436b92bfe9f1ac2bccc973e80194ec439bf559b548f0b630ad0a6a8ae7879557321642d4c496eb7487105ea4335c84ef589d18e6cd5ecebf99c8f4aa9c62efdc78eb83838b82c5f94f3010a20021e1f29711887ad12714426b2194ecb58fcf7f971f4392b5f900fbbc281966c68ead2512a8183f51fedff2783861a30b4237152f6085b3ed70e8eae649388fb54958d3d25e0393cffc2868d6943e934c638bcc4e7ecf32351aeccd46bea93fa0aa248eb4c02a9c6b74fdfef7c3aba66c68ecd1abee122fba04b0dcfafb231d4f3d073661049fb1f5481ff53a1bf952067d4256435276bc763731b985623184a6c870a7d162a03071291898242fff0090ff66ef7a451878dce51e80f9a65e3d8d64ac9713da149e581226d9bda112d8f8c06d598aa2169f988eef1738c69ec9ca799ff134c4321e5e96bcd79565250903150a1bf8c9e6fb1ccd07489bec3e757f2578f7fff8e12dc854a7701fee14920541e3b4c4af957dfaa4d648a7bdcdb48ccb1bf36035d9dee8ccee8d3b6531d0f0ca62b755e69f69c66c95f6e118643cce8530e2ec100eec74cadc8e458b4d90ad6f2b7f94ea37fd5ca67958fff449ad527c76a7dba75e36000f98cf75ab31c1ba7135292855752e6e8e1dc2ad12a79b8c09becf8a200b1437cdbb2fac821d47e76e6172a5c41f00f8aa028bc807551cda9b0d181dac7a7d2f59755ba36598198ad977dcbe1547cb43f9a422b25b39c183c06cc010b0ea2a218cc30ba9ed222ed91c5618e3ee23062eb8bcf337a9f54dd7c294fc002a6a3c8d3643d339d131671535b6bcb6384d7b791a43a0501467e83a47c11a87edbc034c856c67b40e29ac722311679dc212c3c42274121653c19536739e95d94a72c60de8943ba5855775ba0355bd0bbd11c3842dc46f2358ad34b3ec9f69641f460119af3f4d2734bc8a91b0c03c8703fa0635a4692f66153cb3c1b6f548a549318dce36d72abf6b11b141281efdcf7bd2f194053a4174119512893d8640e0c650fd479b70e13ac34e98dd60af0a2f088a789434d42e0e4a9b5e194710d77672c4cf77e8b5a54cb95fad885d6176c0994247e47a82520b8f29107f15d06463990b59bc57910d1e0e2d9a37bcd3d9d14a7399c15e61783f8e233ab1ec34bcfa4a24a79f4d23ddfd6e2b6b610dc3560af08bbf0da4c29cf71019da7502fb7a2adf5fa4a52f47ea30ac68d2e849e0a4fca1125b85363baa1fb7d896fcb227cdb9b25629ae32e10dbeceb8201d7f44074a1102a98e526604213b18ba160b2ab42da95f2ada39b300c208073c86dbe1bb7646efae4f4ea79c9d51337715bab1c850c291202e9ba644f006131249c19f07780d1893efe8ecc38a71463cabf326b6c496c705bfb287cd66de974d2c081016801218671437bc5c8f0a37fa4973b00415c24f5025fde4a9131053ded28b03a3fe258256e60eaa3e84110faa7d1cb100a8f46a4262eddbdbfddd89f1d22da995594646faf1abe0b9666fd6429a9282e90b6f5e2345f58c804ba29ae388addd17de1b323ad658781fac9e51dcec47646cf74fc165641468e251111b535e5a5fd19375b1059745510ebb66034f129a9df00443d558635592c6ba7dd470c410c9a683453a092fb4b00b441f3e864bc58fa98b6cea3d4cdf59c4eabf2ecef2a0cbad33e248a6a8a82686fe548a2f3e4dd5b9ddfb595c5a2d59f3237f5e62e538dded4ecd4b3cbbad08a798f4e6c0fc311529bd33036a6045b3d23df71441db849b411fdafd14587310faa10fd8035dbed0fd305024bea5a7d01383c747999f1507fc6c464f01d4e4d826f36ab132d118ea6a0afbc6dc5bc0307c620b1795608fae3b259c3b4c83d5969f322dc81d7a47d927a2e236cf775c837b8afe43821ca9220f602eef7194b70226224d31a6be6ec9f42cba8b540476129ebac3b940c634f8bef1bfd48946c0031647203db6aa1abf81e3962afc39c152fa6eef7f7a0e346fca6c0b63e471272058da20302b372392decc84df9469102d5cee0a5cd05cc2ddcdcfc41fc9c543024f6dcdf67ef9776a53def4d034ba508f4a8a494f1666c2f4c6d505e2d68bc56463b80c2b4560e33ec5a3db65c41d85c53303010b41b64fd00917cc965f03d1c4b31badd109517ae5e3dc3e43f212b534b36ce717bf0175245eebb9d250b9dd70beaa709a0bcf870e52acc0262d527e980ca6ee03cc42c55ba44e7e712181d47152acd635c57f4c7fe3764b50440c6b85e9ddbcbbbea5a4aa95b11f47515dcc254764eb4002346c1800943f8fe0a4412f9fa07f0719c17cbb218be96a6d2501544c8a669f583470d209e4106c0fc8248610cfd040ec58a5db97635db53bf43e899bf09a6eaa4379aae93f5a7af41b48cb328287390e21d2cde81c5fb308c8003071c70c00dc70938e0c0010edce09c00070e38e0206ef0c184e33ee5457069bcdbad6ed7bef7afc50837ea263cbb06af6d73df6d6db787072b4c6e11c1f682e71311cba8bee9bb16df49eb8853a5f5047c00716932a953136709c0f7e35bf9ca718b61f6b53c9a1bf66f930e661bbae1ff76e56836e5877fb78683d98c5592dbb7dad3e0d5c1f865a555df9f83c7181cfb118287d3c4f57f30ce92c312747784f32667de1cd2ab66e64fce09196ff4ccdcac5c10f707377c583891a856f3fbf2b38a01e0dde642ef2b89f81a209d63afea17951d06aa1c5f17fcc632a0607d9e7d949d96dbc565ec31fdd09a050b6cf6219d57305daff897ccdd5d01904f2bb5272f0061e33fe19a18e8a9d7db4cb19c5d5fd47442972ca555fe64dcb56794a45f0d97273fcdce112044e9e34a7e9848eb699f115053383bb765a1b305bbf758f09c088f9efd164e2a5e21e524684da715218d70b1608c52c3482f6cc9704aad844134f01f8339462d7df7824b8a8618810cf252685f047e8248ac1810ae45ef870f34ff6cc732065c6f25ce199761680b0199e0639c0ce8db0d98cb921ff2ac07695cb70734626434536fd14b1afd3b89738364ec18fa6d3ffe62c51c2e81f0514036db898d0636a2b0e6a9f668bf8eb263c670dd4cb4e4ed13bcaaa59ec0e003cddb95a5c9bb76f4921a27acc879d48507aed4a7147add8ba4cae9a2626615290ce467dbd88ae69504c51f7b328bc25a6795a522444504f06e2fdaf22157b1dbf3419d3855459d044eaa97249a31eecf81fa4c2e94b20d97c1b7635c4086731ff22efbaa096e24fddde7e0980bea5e9bb4ad18e488fb095e5f299de84ac356fd2864f5647208b347c841ba074ca128c71aa00ae178420f4d199e5282b2aa60b1992ac9822ac9c102b60d869d1d28581db72f77c6f01aee0f34e712e67dd39d56b81594868147b81acf89a830b3ef9233f7abb8723aaecf4b4aa3f9b743275b4cbd04ac161a53a9453c4c364a0fd12ee726defb64d97f0302e5ec95e408262d71183ec940fc8224cb7ffd2621d41498aa0f112b823962a93af92510ee48cbc40b55c649c1b2159ec8b544296192919651eb7d0fdebb7ffae76b6c59b12ef4a953f6cf51f993a111078fabf1ae9e34f809205bf48455b6b3f162a70bdc3bb1fc031d3dd25697219093997c33dcaf55ebe151431913c3bcaea5c9a52d2c9ed15fb9b60a82cc49cd19056f207d6296b09ec8dbe343379e62f1e26ae41279e6c713fdb300ec9080af0ccf09477ce5cb4e6b55d55ffb44fe1bbffeddab4b8aeefbd5e7dd8f706c0990d8ff47503471ef2a8e6df0e576dc1ebb45ccaa3a445d48cb1ebb05908b1af79a19a978b594e07862247a4a2d05a37509c37db4707bb52e20614f7256b72095ea91220bf8984b12a88f768b34203d96c73ef2f6347271afe7e9a67f45e0e04a99f1c0bcdad09d68e0c181cc01d4faf48eeb4a5d9b15d9d6400b5ea43aa965a088da1e3af4adc0d727118eb70533538512735b0911a7e79fe6c801b7084183d342f659ecbf7a34fd892335fc61784e452eea3f943c8a91061739b6d6801c42d82ad45fe963b6d37628f727ecba373f84b3700830976259ee111057f79db142f65539f5a94a0ebb442b2a7b9a6515467909283655f920a9abdad096b9a856fc5fc010064cf9e149c4ecb0589c1b83cf72e20a10e6f0c02dc3c89b129a74e967c26f5baa6320d589454f40d00a1c7ae8060c15fad0071e3ab4a1423f50e8a1851a6ae807863e74a8438732f481430f35f450430975d05c26433b32e6a09be707e7557205d45990ab55a2a15878440d45aa6e957ebfa87041548f626e45d1fc31784b9edfd4ac6e3dbba427faed9eefdb248c97152e1396357cda3a88294f0419dcbb50fda6b69a0d3e7b641ebf154472fd8ad6b85bd951c0293b0ba40a22f4f5ab662c8c75ac91db7713682bc693c09b8f9ed1c6ea0b8af72264bf1a8dde1cb547dcefb844a3b077bf6bf22ecbf27e67b951a8dc4ded083b7d3df8f7597f0b28a437b8e27ef2d768969128968111c16d73ae8260fb69e80a4ac9fed17f8486c7c230c22335a48b1ac1d26e361df9b275486cf1cf0f46d9ff4e23581a92dfa87eaf9fbcc84ffd14c51c725c2ffd009e5bfb07f332f7d5769fa29a175017742e05e90bea072a27e786cc7b90d1149f4fdba79e1b8d530b6624e7bbfef729dfc2d72c4aaff5ea084ac66b5a30d19164f24647f776c93fa5cee4f6804f9da4019c51654b0ca3799f98241c615172a59b60029786b631feb44ae3bd728046feec12e7a1aeaa447c8f83273d089908d536190fd383f5b77b82794e42d1b13f91001344f23e1c5f9b3421cb17670a895ce4a75099a51f08b264be77e97b8e5bcc619c47ceb7c59a53cadaa7b9146e62015f9b461d5948303c3d7497ddc34d1712307a4064a260d154ce4da2a11268939cd09abd8d976aa140ca8b54510d2d941d1928c8950a9b6ddb91d831523bfac391d3e93d4f3ffd1be88cabcd76193abdafd0d01c6c7b583b7d0aa5b20535b0c807ee7f45e8f69d5e0f1e03675fa676a68c1764caf96dcf1b87db30ee1d9fd66799aab106ace19736142ae6635b591a6f76afa0384d13102438031e49ccb459e09bcae03cb2fc690c624a7ca329e342a1f17926c775819c71692b92ad8e094e1dbacd25f797cf4dd8b1626097de84422a5bef09faab2fab9087726855becdc1a6181792a7e8fe032642ff90c9491af94cdb97bbc55d456ef19d82a9a186f658d1beaa38c3f006ac7d4c4652b5cdd18998724bd1bf0cc11565e5844cae28be8376ac74755a637f543f2856260100b693c50b19ca878029e5e540a6329c41dde9008c0672cc9e32e2e2b40c2640960509d27452088391a6a7979af1cbb320b969b7effddcfaf21877596badba600ff32eedcaebd65cd199401cf6f38a48082d075644f2ba8da1d915e87014d329c6d6029bc1e3e1cfd755781424d12f82dfe6ab0f781201c3207097c8490b5c41b3fc7dd504e312587ed141d9dde41b71a7651dcf540a06fd7c58233325630e4e8b8ceddb3a700740019cf55ab2aefbf7487c9c3e8eb2af67073e5c2c94b6b74c224004f0bd55a86d1a4ee35463213506480b6632684427ed79e63344070d30ee8ca570968470063d8534ba9ae12e4cce2ef5c9a2102c66280542817cebb66e344b1d4d6d70e5937899b73274de0558854c71f9f5817840e7dada4e76fc7fa931c06eedd57693bdd4675413cc81f1d4a8e1340c878a62a5811baa58b2a800c80076a9bb4116ac4bf7f4d4ad2d4b286e2168023112cd52ad513ab6f14213f17c2d8341208a4675990bab7014885584cc4e00bf6db0bf46955dc83c3341c2c57f524025d88291d54ec32f4e6d1a51ddc498a63d9dde3f4e33d40e098561a418ce87e10c2ffc33888332881794fd5ce02a1b47f4b10a9352c095f679383d9e6fde2362561316fc97537f497c599e00cd47b61ddd7243cc377030f5edaf876362ef8bdf151c125f3fdd30792635dd3511dbe342f709850e587faada3d31d06f1016d6befdfa207efcb41dc765de5a04d61b4a73f0f8ab2fb6d4299bc804c86cbdb638bd5367e3436cd897b95a2d7ce9f57c7e34b873bd6504465f1a7b5900c7ab07c052a607b0117293e8d8ee451a275782105478d98fa11e11816108d09eddcdf796a874bdb86ff77cc14ffd2df4925892038821b423edf839c974b0e86e127a745eb816bd709485e2d50befc61e44d2c682c460ab82f7253d08532fcb4cba540fb266f605ceb06909e121ec8061a6925277597eedb751ff63770ec9b2099ab57e11182251d063061343f7fd9c4ac19e44a2ce89c56ee1e7deeae12daca989f1beff9bd9aa323fcb34e7d35653b0e4330ac390a30f3a58fcdc06bf424beeb633a8ee14503a944a7ec62902929adcea237539ae472a57ef8e54eb14403a52cbb23d9c0b4e8153feb98e25387d581cdea0836e26d0d45410db63e8724502dc34a6e214b23a5044f85b157e5872f92161b1d82afff83c5d07d6a4b357fa1c0c53af7ee6750ccba7f2213d2b2ae8865e893a0ed3156b8ec1b6957e667691158160f166ad7a47d20cfbb10a7307216a95361b55159242b69b0068acca599236cecb8351a5ea52bcaca9641566640b8c6e126696ea3dd9e8db42e9d04335e6f35d93831fdacb9d45c1eca7faab380c03c674198e4e01eb85bdea999d2c0e4dd6e67ddd223552a64dd43836554254c61a5d3adffc74ac3686026628c5487101c9aab1483713ee3f2c0a162bb18ec18fe80b7aa1ef12604ae000af3150ae950e0b0a7faec053ffc7ec76b3cc970bc405bbfd6f591cacb27e40c7a4cddfee00b40da686e9ea04c04aa69e2b5d2c6d81d45588f3521cb76a39a3466dea15b7a2b051ed6e3c8e57de47155eaa8df7214ab5fbba56cb5e4d58244772cd2764c42318a4e5e7254f88c3930daafe74b5048252f4a7edbd11ff1fe1e1ae037f1bc5dd192751bc1ee3d0b4e424d65f3909ca9893e000884497101320a1fa4b1acae1d6ef5ae1271474b62fcbf31396b271d8f03939f35ef209c254409a737258c485ec67d6a2af1bcd6e85bc82a55f09a7ffc8e62e224e366b6bb1b907d240e9208b44a6d22f33403a032eddb0f69f880562a4433b314a6759fe77515a2b5685ffe2416a310b44d865dca386b149700c3a06973263de53e0da0858e8a91c9f82343423e00509668c1232cea0f3419cb509e30f25691c1d9d13fefbcd5a1e3d77a215ce18f7cae318ac5c1d10132f66dfcdb37db703f9801a3bfb189f189b2e4685366d47a812f325c52555373f5d9846a5e159af899a4232f1596fa50ce538b6d28d64f742fbc5ab12ab54cf5c86eb382a3d4cff95766952ab0c483761cdecaf482641e960453662c8bd03bfe4e0b12c3a643c0610d8857aa6543cf87f8d51d1aefdcbbbdc7b6c3ab98b71f31da47987785110cf81a571f10e9010023c18f8475fe14731e1d37e42fd6d83411a6e5f99a1bb3d75aa40f1001fc9544d31d559a71acbc2cb4d5764fe205157e8d632f5d611634baad856c4f293ca809a7de0e58ca2672a77be954f65f9a278b5e4be0616f22f34150d03bd1804380c78cb3349a137d5c0ba062d06c66bbdf8eaa7da7a8e0c05c9a1428dea98112753dec269ac08bce692662d7e9b0bcc90190e13d4238a3d28cc894850494ac43086dc178e1497215f65d42f04915f30a05a65c8eeb810276ef0e44bee78173c1517ad6502eca9b55dc00c8552261b135df415362f5d1c9db9d654cb1085a11fdd5ce7dd228f6d8204842bae6e85bcb3951f1ea065438e2f5d533c7ad9fd0cb061ee5dbe087685e3d2fa6d408f2828f406b26b11a1661f5e2b484c0628c8330c7900ccb5db6ff0da99844082db47df8ec1e3deff6fe09f1e0f5653923a3fe62d162e2b3d9447b333c47777dc0f2815027958e9d35a5f00a9668c379f0f6ca02e2db84c4cc68ca8ef1ae9b8c38b0c61bd8736585eacee2a5de238918b7e680fda39bb57f5038b38003c784233bc9ba37a6024cf435611973c2fcce215f41f9f629fd322664f5377272097fc615be59113a7fbed9dc2bb39da58deefe6a4d029c3453e55790d86a2654f2a282d343cab25bb00e3dcc08a4dfdf84a2fffa0192fb8eb7d30b57621fc8ab0577972c7afe9ec892bf5fcb9fbcf75870914d44bb8ae2f759a7832ba842b34f8c5bec0702142d53207995aa7be8bf08b6e16f497e0719d66c0ae6ed64244fa0a5421941c472499e3e060f336d67d87010648ac34c25a8c379ed4a63f22f4028d8a5c2a3cd0145471f06455df169ca01037e1a6fc6c0a3845bf0449c536669ae24ca022907279f79b14d9d118ee23874ee4fc0c6243ecd8b8a5e83329269bd10db80c21424f6c5a3495c728642759c06a9d3e65d22006ca09e07bdcc211d59036132c6e9e071b47f710b677bde1790fe02df3e7006bfc3d93865315ed42de37c3015f5ec5a969a1fa8c9a425a22273d3891f5e2c3f917fbf2ae3600ee458b241945aa2aeff6eb74aa27b4448078d4fc3ca71d8e8c63b04055f424a1bc07f5fe1dbc8fdc7b8e2b0eab454ed3e0546c252beaa7c0d3008c35d03bb6686501c37a5782824e6520c88d18d4106f9fc628411b10aa8b69455302c1d4ac7853f5c867abc4d8207ca2e671c7e9d132b63842b0c5f9d53f7455270f0216c7060d5702f918b67ca456bda00129e74e98e1a545d857e0871008c836d2704660d314835cdeb1f42bd33896ca3ebf7a41a9faae706e7807449bf45caa84ae391f86e7c199c6d4f77739f167ff5fe42d1bd7601bd94e421e84abfc5ab065154cc6ffa807608b7a46dc8130ad083bba40e8175d89fc46173a4a0dbf29cd6281cabe1545b01c646b78343ef8137259f74ee6823345ff691a726981417d94a9eb5631e1bbb94d8e78a9135c823e2b55c90d7742eb2a4b8b901d22f0c4f2f91844a1582f011f3ed255d28fb78419283d2859f42ba9aa4704950e05d6e8d8967e8d2045fc9426bc1c5bf7e555c235a9605f83fde4e5decef7476bad1b92e240dd0a400277bac4665208b61ee7bb37d884dc2280451d327f0e756a5238c8336022775c411d72d116da7a281d4ce33d00e7fb11a0caddaafa61fd46b852dfdb185bc9b7882fbea6824f5dd897025b74eccd4d698dc367ef3eb3877760e388040d5d4358193d00b25f2b8a03893f5c110f0cc17d37a506155355b7f8a0fe294986ef2531f55f8a886eb1a822e25c0a321f0adcc6db7e85d919b049f45e44623ba51268f943fdd5d3faca52517012ce955fe756ca7a5cad0e24c5bc8e1aa8aadd0d29402335f0866c30235f4546f34d231744e007f6a77b32c8c1946a2151f340e660aa3954e0423a6fa22859db9517f8c99ee137d87e824fe3ca020a935336be0b6d5c12a00f69a481b07b2005d2738ad3fe251d4ff989be766fc10035ecc60286ea8e4c3b0645d7bec20b11450a5c84939a60f1a249fb94c295b9684209fd052d801cbe7b61a879af2f08fe1f1fc7a8903db7b93c392e20d77383ec049d2c91d225a852e40adfc514e8fd207015a9ab8a5de995e424c69be587ddcde7a88a69248db348524890c1a046b219427fd043098f408d748a22977ca5e2a44f23312d08afdcc2239788733452e0ab603eb0883f973312c4917c7cbefbb6b96f86235646d21f9691b41695910e5762aa651a556859efa5c61809562e94b52cd35a5a207d1892dc241ee8a75a761721a95e27bbb591327774ac98199bd311c37146801a759c5421c3f4ea50195dcf81c6d0cbe9510ae98a32bd92c469c6ad7d2a2a18c7015a85448b987cf612c222795e02d6a7bdad84303bf28b26f8467b021ba2dc7c1966144b533b279377d693df2dd6bbf4d3fa7946cbaf6c8b60b6172e89ba8488457f34aeda923132cc129ce7b8efe88a7f56174144aadb780897fc5cd2b45ebb0321acd8587b28ba944361aa48200d6748a550a7c822fbc56ac47e36110ddcfa200e10306463975142adf30969191a8e787f7700e3ebad6d61eb3048350926c84bcde761a6f253b67abc60e516bc9bad5e0ae5d7f77b4888c0057fa7290e880768277bb4f847f528d996ee7b0f1d4aa124e5900af285fd6aa16d1b9e6207766a9a717395ffb95df63569c3cdbbe8a78a10d64297edc5fee8a0325897252a0741dc25f2acdc70cb9052e3389c2fd5db2f5d9365fbb82aef2e79798c12096865262482e4112a628f1c7010d19314206ab916c39a910ff39c8e8fc72362e1a0a690cdcd010b9e877d11262411ba2e013ae9e65289ca458e9d550d79c57fb74c9b429e4281768a0a0078207a893e59599d6cc80f3aad06b6843c1d7f1111a02faba97e474b9026aaecf287494736b5c024946e9dcf8c3f918a6a5277dd454f627c36d67b9a263b3357a52c1dfbc71e0bdea37bd9eb43e2694f58b53eb69d07cfb06020dd908411a84b14597cb8758eabfae059f381390900f11e7d3b2005a1e5fc27f920dffad1eea3adc28b8df4bab1a791d7ae9ea7e8572614dd06bd8e617e8d474436ca5634aca5d1ea0296b287d763a091e339b7f6da71cd211bb54276ff3a7788dfb94822576a209f846b85fbc3d01a17aff4352d959a1cf35f90c7be08b62507c7709a92c83286f7d817379961a43dff5f4030a45fc9dd7ef8919b2ce16094430907ea9bff220ad0b38041f44e31a43a0d554a10a13697074d0fda0dae5d4415bbfdd94713f3398556ddad64b4e71c0656f82b11190972a40a1653ee2848801d0e21f45e2f2021fd1c419368d28406f605c33bb2f84e1b08ced8c4df9968441e42939f2acbe9e82279db0e2e9faf71d10b7321c79d0af93859c94c8d4de0e3a034909045f588a07714f9108524a907af9d41a2719d884cfcc10538b672d2202090977a9dbd3d74d274f027c90d582ea30920e3297fb80720cc7f345d88abaddd8b7fd21e0c93ef646440e066c081b0676d63e040208692000d5bb0a97cb2acc971bfd6843388a3b77d58dc1f529b1bdd8dced14ee4b8e91c9533c7a41d42749f3a6d86d6ccdaef7f18addbd8ac2456ba4704d63b286cc0204cd184146fc0a96be40d419988a68dbc6efca5abfdc5eefa9198fd4c34fffb7107e9e91aa74e542a5aaa0db9c1128740002734c51aac49e97d7fe9b9a52f82e94977bbefaf9b0bc5bb1cf0b7be95b5411c377bb6f3bd68a24aa942c1646534acc4cd6a76fded7ebf54781b16dcd1e06002186c2821c68d0806d4d0f1b0c4a4d769243b42b5affbd1f882593552a353ea4ad29c6f2004513f154a301c32e3c2ffae4028f7b05bd34bfc4ccb374baf1b2e3fdd5810713561aa30b4f04d39f08a2522b607cc947b2eec8d78cac0d55ab27f037874bb82f000196d0a1ce5d551b62f59fa8eb32ec750b9e35d650cbf54afe4f7372ef090d384e31a8b7b2abc8dd3be57184635c629d89538492fe9251dcbe545a22a52ba9ed7db6cfd4f36f71fda39b5dc06c2a5e02414dd8e3e20a8dac0e50f0f5d18776ec1462247ba1ea04e6a66a70e306167ca1ec0483da37a8d9aa815c05d40c6d41c7b4c47fbeef5bca93ff9a6abe84dcec3585e84dd45cfa3c57374b5d29b81bc2966d029a995186b655265c0896eb92d19205eb7a4de5d1a77af6c880b6dbce5ea7611e9bdc3d278be7b2fd685bcf4ae66b8e8c677143966373e28f2016f4ca58097de587e61c6f76a491536e6379908a1d8c270301d9dd046b27c70cf8409a5fdfd301cdc0e132c45176e8587e14999d4639959a0aeab16aaeb86ae21a3e7c414486eeba60128048043931f0d7c65549eb4ba3537307b3152d215527d7622f3cc442a19cd96db68533aaec42503953d5f30056753db5a4b893f240b7b5116f187cb31bf47bee02d101088e7debff088bd30a28fec91451a14baf03b8cfc685080408fd81668da9a6421c0c2b89c5b045f21b09924f97cbb13b67097fb6b8b7d8333e7cbf4cc4f04d8834018f858a048ad36c233571373e8e1f3805822667093b71045390d5100d1ea2cfa46417b40e21944409edd697c7ba690936654f6d7a0be6f8a83ead5563920b9a530488901371623a7c4681b06595ce01c41973f3f44310c01da58bb381204cb2a00a1c20cbadd9bf5aef8ad62b17d5dfc082c10e116346bdc303dc8e7c2dfee5e79a69b6f2dddefbc7e8a7bc20cb8b43cc5064d486867f0af07a785c2db3fd59f72607c2dffd0759ffe8e3dfaa077ae8fed63a6999547bc06cbfabf5b3de7262b7d5b93e607b66eecb5e88bba4104b0f8240c188b75cadced5793e602d059a63ae6537c2a31ea4a5e01eb92117fa351b1cd0155c6fd245f875f5d98f4cc2650c97bbb1113679fd63a2c83797fb7f3eaba36714b8032e53a67c62c556f5a02c8c822a0b61ac0648225396cac9080ba1402ae55e601de0f45d8e12e928f09f801a0a57100f557a564153a183102ca4643d801ea721ae0ecb384bc88653927e9bf17dbce0184a63345740688a1f88313db5b762ad937caa54ee3021bf705602f05e8309b2911937611dc9f273806005aa1f204a7ff44cd072d7614952c30ee50d1112c3af3113d01487ae9f2e3fab88f5992e7e3aa8e0060d647c134f6b15c801487e91957de25c0d9e9c97fe7ea07549815fb95b11ff200792f4c82eb4da5744ae5060082782d1a76000ad0a1524c94ed45bb846fcdb3e61fade6401e1900534961ddbfd65dcd98a399a5008035164b197cd3df1dfdbf9af1c399c6d2c77a197bfaad132c1ca94960700a692d204393f4225e0d4e241b144c8cfcce98b38d83514b232131c41b8eda80470fbf80f6834abb30b4a380e6ae2b1a41ca45ab0d8b8e24771d1c7e96cb3a8d8dcc0fecaf4cf22da98e61302c30d14227d9bf9b2ac9a27e978193b05d9455b9c50b2235d659be2a1dc9ff1d885bbaeb7f3f124b94a95fb952cb3c0b86fe7bd06332177b325f306c0f568fce68aeda79548d64fa20b27022b2e9781af8ed55e3e7029f6d0e100d9623f0fb96b475c62df7a349fba280706d2d7bd6bd6559890fd6b524f8fb325afa98c2b5c71ae998fded607de3ec0f485c237099b63667a8f37899c3edc6ea4936f2c708cdc4d635935cd50eb0ca175f9d6fd127668b17be7ed879613ce0142eac295c3d5987c1ee0a25a594f6c019ad7d1adbe662dd9128e7119bb40195afa2277e1632844540433ca3aa30ea9fc53b041176fab0eaa9d934f2f3a86db32c9c0f08a5d7fb0c0523a479c8da93603a3cdc46052da0e3d8147b044c9f632a21cc5d7fd57bc2827824f71fe9bb2acc23dcad2cd1caa900fe00a26987f7eabbb114551817a48827b8be117f4d95b3b5c56eef4754a92d3d09165493087a4ab3fb37a4953d4259192d8edbdeb8ac1a77980a8579fb25d169efd75ae0055501489b898ca8c4a22aa0c46528e4bc86398594a56620abb04a8bc15db24cc3966819aa87776b5c45032a7c410e7cda50ea15ffaa9d00cbc7643bd274399239eadeaa827178c473a1e363043f217eef1e7f1f9c6ff2795f3a33102b2e8a69eb89eeaf78b1853ccad8c4fef5571e718e72c48b539324dcab0d12fba89ab828279a6876ee52c043ea2f8583a08211ce301fa8275efe0b3016bbbbdab34c17d7d2e4b62d6def1f6d651e896750e0833c94deab566f41b34cb357b5ceaa0c00f40b27c5caae42baba04b2d762cdbf2c7fb4b66423d56e01c111b728e1c9cac669010b159e1901c580f0dfbb2136efe2216cfd735420f23f2f722ee859cce7b84878a06d8308e2442d4429d08d2e2b051764e8c45429ff8efd975d745485c1ee706747dc8da52d90323b1c2a6587184888a1f882b80e30b789a61e832fae46028870ceff5ad0d47fbc8e3a2cafb39024dee6c873249a36477af00aa0caba11df4bad08545a1d31d224e9e2738571cce7fd6c2a29ca0154de60ff20e02c361dd5b091173cf34a227b46c8740c4235571ed9c68f2fa3868d3a266ea2e53a811c59f1b1d66d4d4100d4f7dbee6523e5319673940cb117381b541dcbc3ae1153aa6129b0d9f1146333d3f4b89879dac1b9d5955a7bd2f2c83c511af6a3e3480df5219941e7266082fed1ad6c064c2ad98a941d30b06098dfea9f3ff9d14bdb5485125894b598ac95bef0bf76acdc150692b2ddd6635525762b8da2f5ad9db3ce4d5bbd2f357184e7884e06c618a667b5a9c3028204254470e8bba1b84c250c221f4c30e7deeb074207c7adc1d3dd58214318ca96cb3d028215d5e4276028a3b0e05766b86a394cd3540783a912a79860b2108f04788f3c8bd1da8d00dbc3995fa77be2043a90d65d4c9f12c029f2d47b1dcc8bfb05c95a8ccdc95c27413f361f8d11ee16a617a9233c380ba7c5a9a395b32ba1a246f3373de7c93dad0aaf1ca114bd27ba629f8b49e1972baaf46830075d1c464a70a26fd6f863a2612b4cdce9e4ed3b417ec7c4feb20a63c50a9b1a9f7a340158d85fda73130b37646176890ac9d52deced70e110930b9be428ca2713bd70b697224c81765c5066111ac1f0e0581816e27bc3f02fe12064bf3542a4a5ee47db843d85d37839eaad7b02424d6b29896e6dcfbae450639b3d800db9ab7ea5cacdb549b8dfb4f30db73f4aa4fdbc23f7dd4c2932c98cba7a9a7658a64ee4dcd98524392e8722f08feab49b06595c85c368b9a376ea67daa1ced24d01ce26cc5ccc327ac23c25ed54d89f0ecf5011854ec7e98d6edf9bd8ede2c74e9cdab83c4e2bc7b78c956482b6a64295751bb2ca18b15a4107c2b55670ced2dbac890dcb2b45e7bd15e48013e84206a3a81b84dd019385f613bab67028819118a57367f0e1bb1aacb6509bd2969a87391fb88dd8a2e7b0097c144910e7bb209935fd3f0655d7cfcd7408e95929be397d1152a3ebef878c8ad69c2bb5d84fd540b43c192dbbf90dc472f41da2e151ddc3b54a7f3a5549d67bdfd83760273ab946b157495407c5bf09b161ab9c0801465fcfd467a1d5e57e1e42e590dac04fd8c17dc727d4b6d1ee4c38f3130ee6cf76130ec20b046df2e0eeef45a7f975f24dfcd6e50cf043994f3af0791a67b1bb3a02fef13af8212993093fed4a3496b229f7c71d0c562ffa3670c08fda20cd808e9538da2a0edabb3bfa0c95aa98a3c2220f4c035efab5dc042ca7eb0c5730af5b605449dfd6b50f282ec3f1b7dfe51f8f49f421ddf39eb9aa3e9705fdfc65b7d9d3f83e3a08afb2c65f93e3deab58b2e9de2744f17f22013bf6126363a667eafc6770e7127ed09092a4e729bd03c3f8ff08127194969d6ba7bb64d09a3f483d9e0d4435cf92bcc1d082aa282715600a0256567b521265215ad8f61495897c74909d335b1f0f4904f2231c77e3eb38b3162d1a07f3a3134df84a88ab6e9385d89903f05ec4d4b633edd60efb1c96176ccca03aa822283a66bfb80f1822f62dccf985a506cdebd421ac6c3c75cb0261e2a556e00fce199898fea5318f30d46229e6b3b932d34bea67262b219aebc43d8e927e2f48d0d9394de91457d7cbba16fc020fcf089b628465c63853eab44da0537bb4f135daaaa3034f68840ac730513dc38866f9662c04be4be8db91775d75653a7947ea168b098125b3606d158bbfbfd7a2cc16271921baf5aa0fc499113ee1d9677f377e87c10c392b437c572826ad683314517331583b797b26b25c2246778e1d142300a0e3f246cf760ca57905473699cf776f88dff6c7abe7d8a4b860b9d9aa7521782f69cb5146bda35fdbccbe25251594098fcbc05d83e06e3390f0eac097c3d8b490b28f6f801743e78403fdb35cceabf01cf9a70c001454600bb9d720f4c4d442b469d9975f8070e5a65e7243bd81048b57b17a7a04e7312124a3e8588696ad2ac567112be077fd9a7c95be853bef71ad6dfaf929cdf23c1d87818aa61c258b5162c9f1105e9adcd6cc363c696ebde855e0d9f6206c6f39010cd79b88e10c9333d839f78c162450ae98391e8246a8054f0cfddcf9eb8416a84678426b9a3baa02fbff1c000bc74e0b1e096e300b8734bada1227d6e635d2045515bf3a0ee80588f868997398ab4b42b014f74fda4f75cb7f5b8e87f7d76a1f13838a249183559185bfb70fd6026f64052d19482bf8a89f77d254885686dcf2085a789b5f20056c9fec2d77d9a0bf31a91e94545dadb3591cbdd6c9ce8bb274d258eed4b55c923e3d309a1ad0f74e466c9f0aab5f976585b894953ac56cdbb0dc46dd5e53cb49cc8adb381da5c3d89c72ba284b2a1926a4ca4737e40b50d31c276d40abba9d53b4ca79519654e637a52200c0991ae07184ada016409ac4c36eaebf4213a8aa05887d3422549fdf11084d3fbe8152181ead262fe1ea32cdcf66d6f836a34f3c3fd1a7d9589425a7884081842073428e003152a5d100b1054ab00a75c32985b80241f60235fa8371e03a5a1ffc35304daf0bbc2c7d1dd8f4f83d63d75c559a0681368c6342561f2edc39ba8a7c7e6f33f86f41e4a319fd8db53c8fd218e3a55a23a14f50cc9f173240c2aa0b4c7973d3af605fba54e0478361f66b4fe07df411ab1bf6dfd875aab837def06990e24f88f7dbae924aa23ab8192ab46b720caab2caca4d08d156cb3151c9d43e0850e5f8a2615b8a8bcfa10a60b591c4b311d61d0fe82d9f14e7aac27cf981d2f3ca92fa7ac8eca0550fed66c644e839bbd2f5baa272f0b7f24f69afd3a55835b9cc7a400d10e1797d41aaa47a3e11ac5ebce4aa903878e572411a11720f3d96a5af4054703f90cb063f8c5cd2ff8a54419e3eb09c464ef95486825f9b60f54530fd35c3a6a29e7b817498a6c0d800c9760786f8396c068f1ce1195220e5955e0e47b6ab31e2cfa1431e9a422347601c2a28a54a57aae45a30b2fd08e3fc1d3efce13aa823eef149437e68a711da0583cb7d4511d669cf8bdef97d7cdbe40cf5224b8cafd19fb6f1389dfbdb68855c1cf23d3a2241584facefc8d6338ddfa5302c7a7fc58233ee786efad5a026056b89c5311169a799c6e0bd3eda8c631b240b7f543a08b3e60e0fa2667968a1d01a43427add6d7f727a520793a643725a8dcc366e1d098514afe61a1a46a89d26bf57e72f2ac6934a2a617d4dea27815eee5c36da5600b041c8e00371e2f61ede1e955170282f81b82d52f69556c7a688ae42c51acaa72598a62c649e9d887700cb130c9857950c13d79af482ee41170d4a8c90288d67e862e5048f2ae58ff6d5e6baddaa07d321a3a95e9a05f766f1a0199c41bd5a2485d325f8f6373c27f185ffa01a13f4a30af76a56f19a5a1b1f4b98edd2afea0eaff8ae7c997330569296bf0f8ea954d952510451b16e7382a34bd93d8d39c9e9c98b8c05c9128a1b874a88aa86b9b3d0cf6bade144d4467b88d38157109b9f2c65c919b97a4e5700a59e81ca35bfecbf7ae83a28090eca6f6bcd48695a2fb10ffe7530a960686a6fec772bb7b1eadb10e54f6b1aa4ead19579aa51ecda808a9f975eaa6d9d7a4ce840e87f35e2c2766ea800f22ffdc470831a92594f4b5498b74c62acbfdf51b5363cc64c1fea5c377f06c065541a414507f0e06ed6324a8d1ed9d4ee3ec0b9e20fc09ae4b349e912c593de70097ebb6d983a96b42e8f8a1489d6a68cd95e7873a9874e42ad3213df82833866f0b12f4a904041de462284c7efc4dc73ec5e405112b07a9971452aada53a95e9a6b8cf8b2bc8d90f3c654740000c2518596e77540082cc484de25a875d6430d22175c4deace402d41062d5a2bd088a8c10f7420904e1638c9c72e149c41537aa47f335a49561c6c368480a5e151a8db2d8fe33344326d6a456641da68f359885c7ebf04dac20b87e891e96790d222824517d7e11dd493835890bb6d3f9d34172928f9ea28beae13823b8a2277c2dfae6026c045750c4d3aa081bff3a993d2c95442485a549a918af49abaad822d52e976b996ce7ce3b1ac184a67e149daa69124b95f8bc72cc64f3b26fa0d22aca31c99569421cabc869fe4132234db1ad7402f65bb18ce890090f0e8efb382aa174585b1351d5e5821d6290bd1bdd9c70a1446f9d332cc5272867cf13cd08867ac0cdfb810176f5cf01a2ce5992280de63fdf7ebba4b10d208a97c74187412a2a564d1aa56f6c2e64be8fd5f7753dc00409d4f8dfc41b638fdc6c1463108275e770c00d5748c312631908382339cb52d8f4e50233f0dc19b284f288aec761dabaa77810aaa992fd55be54d7e0899252068b44be2877b7007a5a35dc423fcd863dab8e334292f39b42c32b86e1fdb6e6cee45aaa8db8fdb64ab951aded734a3749e8621d679b83cb39ae2632ad794c07ce1c00083549775b1fa00b83db57c17923504bf1ffe77a67ea54f286366db50f0dce1784de7028424f01867afcacad1ec95f06f6f49e3fc50dae91b493fcb1145fe516c86939c6534363d36999adc98af357821b6048b10c32045613a8bf2a4fc0617ba6e37425294848a9c0d5a5e975adc8e39352807622b6464499b1277e34ef035c599399d220d318829ab12c74862934c1d243eb333f66e1d2e4186eadb62c65e8873414f6bd5d7b5a6b9a3e53a6638a800a02cb7007b6cd1b87c62b2f9620886e9a1f7c417edcdce80f72dec99db4abc88ebd15ae3360eec088e3d6999328d2f94bb2238362a688ea30ae645e7b80186060eb03a180e051d287ca614acee5ad16b5dd502b7da9bfb6157bc5fdaa43937cf4f6d92540e67daba97c325b889d2c2e4db055a296cfef30ae9a91f5c51c16dfeaf5b754c2071e3da3a7381cb41b01c1d77fc46626d1e868a79748c99b4b9cfbfa6ff56666580db984d06a7e128fdaf51085f08c3a41162476bbd671d5e59e11af0c08adc69fe40ac453fe6162685ab7e18095be4068554205b1db01653cb4457a444544e6aa388356738141d071cdcb652e243fb25cd44d03baea7144e6f5c30eb4efde0f2f7a5b3be8666b77d5d497577192abc8bcaaf1df8e6975f3116ac55483cbe9abbd62d6d837cd75d51e2828ab7c14f4114e36ecacb3e1eb83c524c5844f11bb5b40c2c3a442aa4be15693a940092cd2c955675eb1a534adacde0ec84f937160df435da6586758bb5c7f1a56bd474194ae07d4f995b74faa196ac19fcd379fbdf70499a524e5d243c3b84cb846328607a1992602c69db36108101438e8064d5d4661364114321f1695063b048b65d456b75b2b6e30700c7c834a2553b4d5bf3176d791e9372b9f0e0887211cd493a642f7d4ecbe55e39b0e2df25a59d24d539742f10f5cdb4ab34ba6c5045be7d910bd38e415d405b4116fae5428e655ff78ce1c106f24776b9e29e3376fe4069a5981fa6fcdc80a6659b12036dc62371c888108a986cc2e74d6e01f155da3b47e8d716cc3e3059c076d31d1cb6bfc9cc1bec6a40e001eb95fb6426428f6ec40de7f8fa0250f8a7f576c7e1a2de895786c213df7426770d5631b8609a109b3b7b316e2e1be47ee666310ba0a8047ea71c11ce93ff3eb177292b9e27eedea2a8979eb185c7aec7799e4911c12e3e0d0a0f9dc8436bf0ebcca454ffee415fb988cd6f3bdd49405fd1fe56db7bffea866035a1e60a647d8417aa29d20f4648c28f181d6b2933fa0e0935a050bc0efcb8c7a37e7a06239cdc44f90b39d1726698867e2e17733f39f236a942e607d0992dc7f0eff25b7d00948015a4297e017b6f2a0405ebbf7f93da4799618bd86a714f55048466bf67dd810cf38bb552044611ac2632506a75bc5f769ef8f311632e737f0fb2692b02a6302f6e3af1d0d7f4005ebe3326a886984b9560205a4c54ff41fd9cdcde11a177e09c6973340c27d5a9580e3ba99c97a715e30270c874e0c8c0e3cd018bad738e01eccc13568e6d80820e5b37328c280589e180ec2c7e03e3c3099359ba1e61a0355d6c3b50076a6c0bd32e0e98a76f92a64a2035adafa93582018526d0e3efe7f9b39a4d20052346f5043d276748a0e0a89b16f33981e99831ab7ac832b08c9588fbcf169dfeb4081c9b9aadd9c57edb7ca58253151ddedf858e5eee27b1f2259a919f5f166d6646dafdc22bbb79452ca15091c093009964cc5706c398398f06eb882437983fa0d89f459493655d4ce584936bbd8a205ae96aed91bb9042ecd4ab22a562becb2242bc94a4a2a5972b5e8d392ab6f9cec215f49eced4bae16ec92abcf9eda486cee39ee359e624619ae168f5bb4b9c7214e15a9ac8a2525dcebafd17da935f7fa3f887e5c9255b17baa53319d8a4d157d1dea8edf80c3a38a14871e3a3766fc1dce1887a5991225d9c8a3247b3a7dfa64cff8e36c0829b64d5f8128d6ba66ec4fc52c8953a6629d6a210519f43235eb540c297a39633ff4d083d0b868385f2022c3108d08972d40869ea972d25a2de9612d84ad7d8977eaafdc8b69789cb6d8822df47247d750bd4c75cdd65e7fcec2d0dc2e62a416313251289445695dfb922ad1e75324e68d365f261196b3c02431ea0c19a6a83d698e6215b5cb852516eb485f32cc913a31c521a1a0d98e993ec91dac4adb936549eab3c3126be0282c517d07202c4987ac4ae3a14eccb11a1143f5d8ee31141796284b8ba030c95ac534c214b55eab9824edc154693466555aeda94698632d01ad7d8c2a6ab0b9d23e73ed690f66921eb32598633d3245ed2b0da606845d85402476fdda6355daf7f8f4f8f4503a64c91a6455da6bb5a85623e658b73045edb587c550a821ed75e578aae867bea748bf1e616a5b28a2afd51efa1ade3d5dfbcc37a55f832a8c7e0b2ab52daeb3194ab62967efcd810ba7f8c0f6f569fd1d2336dc5e7342b8d29b0ba8bf851f707523243d3d4a289144124820f103ed34cf55c5459b7ed785aa558c01cb03c79dccc0a2093888c20d88d0d3e2ee119de3b88c31c0dd4ac403067a00620a11a5f4e9451239e85dd5f185deb4edda4d895a6bd52e0f267c6c17baab028bdb9cd058b3990a8c50c42383269cc0f5c535820b23a0d8b4a025381f1051c207425a5cc1070ca02457044b78d45a6badb552af4f59104fc7747b41764204267022892f5e4b889008c1d7831aa4915f0701430f6c60842c0804acdda7ac08249deb5316b4849224f50c3060d0739f49c0d862a668173b07bbdcf487090fc2a8c288185bf0a0552d49e4480b6c90032458d1048d242e082813659d73beedb30b348ae8b39260ab86e5edb3e35422950a7997cbe5fa69a1507b8b7d4e92beb5498448412fb7114ac4853eb72e2ca1cf3965977522b52fb1f6c01d81a822bdc1f3c5757b75ed0d86a3900bb71be6900e558db12bc7aaea0351c53a7ae051288b428d7a8af5e788efdf593b95620e3181906292148ca9aa7468883952336ca530cb2918dbd78de37842eaaaa2f62e172bc79254665574a87a608ed48cf761511f1f2ac353655ff33d45fb148c6ac63c42b7bf040c856eff0addf2cd319f73456527ea63c916544ac6d2836628d95ec921bfe57afe293ed0bdf63647fb1d23382cf3e3efba0a509ec3b2029dbea53ebd1ee9f5e9c69612b9432811ab6d23f40034628b242421094948024716d15fc4b77468447babe997bbbff8ef67de85353b3fbef96f254d9e3d29d5e1b55bbfb837aa8601d7fededbc5bde04f1db5bbc5a0d3bfe04fa7a04f15a70d8e4eefcfd7ba8c2d813e2d0ad1ac6b375088ee2d6fc46ab8d1e7b4b9d1e9eb32767923c6d2b5bf9ca5cfaf061b5d0b6fc4a68d8d4e69bf8fa3df10846931f0ea88fae97121abe2b11199381e2338edf27e2651a77348680675bae92e9fa0d897866b743c36a15e7f23c202084bdce278eac88d608a46ac3c877b58e28dfa00843bc219198e61c9c23cde8f25716ccf84e546c984252a26e4c12f6189b74b58ee55180340e8095912175932c3768e22fc42187eaf0cfb5eaf21abea7cc447e5a1bd4fc272a350ffa2a84d9cb63aa2ee51ecd7efcea863063a33ea774e98373aa81b9a3627dffd09df3afd9c3365a26d599ff0dbad69cb289d46b1bde373ae7238ab88c267af3deb8d76cbf226942e9c826543e1db4937d4118dbe1e58bb1a9f9d7b5952bb5c2fd7cbf572bd5c2fd74b0301cd80b819103703d2443c9a884713f168221e4dc4a3892ce9fdfcc47e623fb19fd84feca7c8929e508659f27b79424518ef8d42fd8b228b553f0f753e96b42c9628fea3507be7218cf746a1fe45d1763e53d8f44beda2409c10e6a526f27e7ab53f1ad1f5842e50f9bd2a1ffd9ec20bf3d2d2be5fc5e396e855a506185ee0f27415ab5283e3bef9554179d5d617b2aa190e7ad16822abfa5edfcbaa2af8a38febee2981be57c6bcf99e7a3fd6139a36294fdf635247d2974e50e8531aa27c0a7dd29fbcc6282414ba0425d44aa425de8ff7733b0ab74227a7a0146e7b0aafa44f089d022105e5e4e4244ce1b377dd13b2e490254d4f43130faab97f3efbe4eb7f4fd43103a5afff39f19d60de104d1bd2ebd3eebe1e2821cd3e41c15c2ba19ce8ed27bf4f2812b77dcf55695671f68fc4692f4d71f9e63f0c71eddffbcb1f6771ff5efbf3b164fdaffb30f7f1adbf7ab6afcded13df4b77447b7f44bbc45d6fdaa7efe82938fa3b0a35c6d81b7da1f7db7baf3d8ef5ca972de26c51e9e1bef15b8b5a46ac38848e865022950bc0109a003a6f39e78c3397b3966fb659c355d334ac71996a586b9a8635d06e9f7bb02dd9a61581ae568897b90f5ebfdd6bfadbed79eb32e6a6e0f9966ee9738aa42f6748a3a7243ae725ed509c5ff853688ee213e557c8edf8a98adcd7837b541d334ae7bfdb9673aaaabaf01fef682591fea8fc3914727b17aee4c06d0027c167648b6fc0b1d4b1f6a971b98e5e37d2a6a83f971ce8f829cb5c695f587aa0e3a7a27efbf5e87438ef4ec737e8a395087a891234a1480b36288a820d661a3c34e082278b225efcef14eab453628b4a9f3c38230852d820b8b067154d504411441051a4c81de20e7185b842dc206e10d7755df6e27bede5eebdf7da7badbddabdf6de7b6f79afbdd7de7befbdf7de7bafbdd7de7befbdf7de7befbdf7de7befb5f7da7befbdf7de7befbdf7de7bedbdf7de7befbdf7da7badbdf35e9bc130b4aed9b7a2aabd29edbe72ce39db8c339769d8b2966fae99e68947dae723faad254f55459f6e4aafd845e839e7e48ee86076aba908ab53cbedae397ef94afdda699f41a94a89b027f736606db596a0c86549aea8a848067bd2a7562022aae10bc2ec5c11a8896ad01d149a2bfa5a8b3dbf0485366a9a5131eab1336b1f5b12dba06e651c0fb7a472dfcd280e3bd9913dbfec649d6eb58e7aea1236134326156e76438c07135be050190b51ba29196f453861bb3b3411850925b6eda03571c5e54eb44dd30236d6f50542d79a97849ee40555e895937c96984700eac2122e28638685164b84606b422b82c8085af00414a83082c42c0bad5b022b9ec042a8c8e05e0d8515f608202a8808a38c2c20a10215d4e529220cd67d9a3a5e10c88a20024da22dd010fd73a25ffe75ef475fd17971bdcb7350af5ccb782044bf1c77bd6d66f4ca4d5ddb228d5ef949d7d9bbfc96c04a51adf0bccb67187d7abafbe66854129121e9a2570e0e21072e284ccdd2294b1d5772b07fbf86b886930a23f44c959368e6ee04bbbc5d6bdde7f72aa93dd56cb53c48e525edf6ab61f4dfcf2f87910dcbfafa3fefe39ee66914ec2e8330f0363e636bcf95b74f2ff6f6f845b0e7979872dbde3157d48615e8e1a2b1892e916b372152fa4c42440a56fa4c320414707471d1d0b68c5d622b34279d42e0fcddcf396a1bdda7f93815b5efebc793a48f4f7b86784ebe7588eaadc93111fbe78afe09c552456e6f09c017548aab5845f0050bd033757bcc2a8a2b5abfdadd2818b0b0a05cb8686cfa377ace6c1407ef0e1da26708b116cae6b7dba3f80eea75cd26000f3754d1eaa29d42f2dba752b22bf64dc5524864443b87241068c62695541149d14ec952311d055209a6c25ec2a4bc8f43124602d9bf360c729f3c524552e886e5f6367f692d09db3e48e6e4ac8a61f93d3f1d914030f2088e7e71ee8149581d69bfb3934364cdb62f4494624b92c85ab267a34a6c124602d5f14825b32089844ee87c5d3b2dcd5922d92fe7f60db015e0413b4aa73b04a82dfa78b34542241a759cb34e3f1ce6973955a46fb20fa21ec792239155d12f370c5fa23add1ef3b02459ca01c3f7b0dcfd7146a22e80efd17379f054ac23759f8384c140c2ba2a80b044551c6ea10d73b82e691cfa718c316864b2a5c6d8b6d410124a5136abe978c65cd1cf9cc70d38db5f1eb40d3eea512191d60e777650bfb37fc80b1178e06aed18f937c21169cd54113b350a4d01beae5f0a4955d1b723932a8aa8721ca3d327a59874faa5548ca8bcbd2485883ab5e318e3501d2f093afdf18c69333bfd951a2a95f5897212de542a47165b4e659b35f7185b1e847b6d2d58c6b65c88eddcbd610e1cc74d2eebbba55241e1c6715f6ecfd91be4bf0444cf1493ba30254bc58a983837085dfbbf95fe4bffafff7ffe56da36dfd9193291308322ae16f843c0d0080fc125801ff222e09721087eea73e4487d8e20fc5ff81c9fba578a9b8397b8e7208fe0d0f020d1c67f5f53ef92b094129ca7e1fbb79ee21e378524889d9285a95815fb6f7c765d8304c52e713a9ffdeb37ac61d47990fc3dc6e48cdefff6cff6ebd1852510bde33e3506511d474276887e8aa88e56a86411ee09493afd141a959c4c664aea3893b46088db4ab23a8e7704a0126c1738ce5cd1afd9dcb884471d4f4f3f87397a4f1f017414c0d3f731c71e4fdf0173e4f1f471a6cdf634462ac94e6c8cbed09b11097da15ffa396f4a32fa42ffe4e7bc49c5e80bfd59b3b5dec8591dcb91a8d33ad6b12489ac50c7e9834e1f8631466f46990db14e7f44426f4625353c127a43ce4a327a3312d117fa2315e68a7e2a268b2186b741d6e98f4a44f16b1867aaa73f55bf91b34ebf072f7d3145fa3c784a003c358429d2f778ca0754a47fe2a92ea6487fa402009efe48446f267d01c0d32f7d11c3d32fc96278fa3866c081e346006edcb0b1c3860d961b1696159b95951a73a5bfa6468db9d24fa3a2822251a89431250545070aca490c2727a7b9d2a753a773a57fc6642aa1944a24191269c7ec0dc280e0481c8dbeb9d2cffa3e6f7b9e06b5ee465d975f72c62e18732a8edb56dbd6e95ce96fd1b44ee74adfdbc5b4b1d672316d6aad3d983634154b21d14fc925aa889f7b92a88edcd327ad50471c8eb32a5252a85352886452679855752bceb7f87d9c1ff1b20b85d89e1fa717207fcfbfe50d4788edfdefb778aaf3140d3c8524a5a4773e3b0e97e169e0b3735cd8245015e993b02aee9254d2e99724acd32795d431470e1efe0cbc4c29a1d30f002f5349e8f477f0325546a77fc3cb2f71d4f0f2466983e4254bb9a2839735ca14195e9ec4f0f204c34b53497ae1e5d7cb940b2fbd152fbb165e661938cf0055f1528bbc2cc5c04b15184ef88c95283d070f53bcbca110dbf9875a4031d45f28c00bcf5f736e7958d2ce1fe790c2f9ec1bb0bd04e2f65088ed2f84208f1af2957b79391f64b26de0782dace0d261d69e634915e9e700aae27e3efbcd024768239c39ec99240445ba4c9f497866d78b5de3575ee5e94da588acca922ae13f9df78b4dd34b25fd37d429d9b4b99d7eea8c149125f7e7546caee8dfd9be3cd8f504db7ee9c50d84ba90da7fa0a16be0bb7d2f872556791c3e17ae843558b04a38ab0ad5b2411b927849d3cb544c97f8b8a48a63501df38f1ec5f7e525cdfe92d5ef4cbf2dfda658c89ed30c20b624cbdf277b2c49b78eecb12b5fe3e9e7585205fc2130807afb9b8b2c341feb8695bd430dfaddab706cc16bf10d969cad1a521d8773ae38d36b5efa2d76f2231ec4f465597ad3e7d2381b83c02decd297e3ac977e5c52c71b5e80a6df31a88e27180c87d0b48c94de270a2ac42486c48746415d55a43d5080c4825dfaab957caa484b61fda922ed371c711cb82a66609f49aad841277bea98fb9f4c25d206cb212aa81494930fd86059a9d1352e77faf6386e540f84bc037d7ba16b1bb8befde8fe8a911ea4a4fdde50a2dfdfac7875dc372b78fa4c72831eb1cf245508f5d248fad3634bee277bac8abe09247b2c39ceac8afecc381cc13436fe1afaf38fb371491d3d8cb587fafd0b4085d3aa768cf0b01ffc9d0580e10e0ee9a87bfc25c696049f3b994eb8379d801c859358b0f1a37ccaebefeb919282f2ad1c603ff8393b9c56a5c39c8dbbc7a9f94b1c3f8eb5bc9cb10c70bcdcdd847949777cf479bacb18e3d1f63a77cca7cc0864f45bc9bd2db9fffee628aba246ea09f6f6e0efc79bd320e086a5900df72dbc3875bcdf83cb2746855c756c4d2645a240429914a951a058e58cf5bc6040b3a0a24e292da5be279fa822f5217baa487749f6f454112797a8f4c927c89f3a9231a01685b27bbb609f495c30e85c988a71f7ba40e442b28754d45ba4a22f4cc5ac8a22b1ed97a9d8d7e95fae4c29e914033768d6593355a42c1c33c858a1e93bfe7eb19fa624237ba68a7e4946f6a46255a4a5594966c54fafd9f64b33cd6ddb16963a2c4b321cbb5b14c792292d9274fa160862748a33675b2aa601617f2f676c87272c432b43433f6cacd8dcacdcdcb0acb0d8dcacd8dcacb0d8dcacb0acd8dcd438d5d8319a111232a900f9743429a1486f24839442a37d70b1516a3a18f0e4478e19d2292d94373597b59697a7220d38f59c8ed8f22db22a59ae5c8a76774ab98f6c9f0d05bdb94d764a145768c736d0133fb09dff65c92be4bd5abec44df6d74fb9f1e5e9094de8f4b242a71e21ab6ac0160ee154dd426da8575bbe85763c3b006d8132363f64c01f3f6450c800516464363f64409b1f32648028329b1f322096910162141b3299cce687cccde85bb8c68d726e667246333339275c8c4e7260373339a39b991c2e4627b09b999c1107e362c49db0c060b01b2d67c7f72d5cdb3e9d1d3a743e1d3a744edf4967870e9d6f870e9d2b83ef745f3b74e87cdb7dc9e0db4e2bafd76b87a603a48577dab7782c2023cb1b4796c933b1808c2c0fc8c8ba4d78a6eb0232b23cedbaec6dc2d34c35ae0b48c76af9f9f5a02d648bfe164eb2dfe2cdf40be9e345fbf0f1524a43975e86481f2f9af4f192862e79630c913e5eb4fdd9cf5669685b52e9865a868648d20b89f49a96de915e7f0a1aeb65d13d89f36aa986472defbd561ccb4c433e3a535cb9a169b369da75f9d2848669c834647a8213962cd16b79e239b9b092aaaa5f9e8ee826225391e98c3a0eb53c96fdee2b4e5b1e0ae88d65027d79c27b4d9b96afef9da0f494f40fcb2dc35eacd71950e9c17ae56189f7f6d199e2caf94c9b4dd3eedcc1f3add597fb886855bbce0005bde9e80b7d164c9bffeacd94887345dfa744794b2a925e4bbcfa1d451d717cfded336d28e638f80c34acbc198d37b323982bfa3790ec25e6aae60a35a1379604312120a12ac65cd1b761f383cb0cc98ac8a037b5083c32ebaa2c982bfa2c4b463c0a9f1c588c0b7a53a198c16430ea043eabb8c3a54306f4863ee1b57b5e940673554520473a1d39cbd504bda13510ea54050d1f3c0d7ad3819f4eed509fab69854e835cb89dd5b74ca0372dfa42bf12e149abb5f76ada76b56de3388c338773ee3aadbd4e7bdef78d46e03702c1bd49a4d2f65a485e4ba9e4b5984c5ecbe92405a5a2e2d11a27af859fb0f49647414949f15a78c9eaf4512daf515e0b576969e13adc5260025c02bc0211e0b4074e21c0e903387500af0de01508af32abaaff83571f3c875b06880be00ae04196801902820ec077e03acc2203f014a08700af1c7e0600c301e806990db31a827ad0211e944800b4a8c5d37b705e34fccc000b00d00ed9cdcca6a60ed15422928f3c3a7a665e327c5a950eb6252c696fc107a02d6f6655f57718a537ebf56fd1b4e1b1a4ce0a07e1a1cc937fb22c0f753cdd4f27b3a403348ffeb1e48fafaf6596f4f135e75daa0c00508909f81810f030e4f8940e06f8903f8e1b369e65a5460f1e8f4a693d4aff9393a944daf11b1cfde78ddf65cc6ddab3f8cb8a63ab6ae1b3cbc04b1100bc64a9784923f272ca62e0e59ccda01cbc9c43936816511eda435ff487c2804a2aa3331a3444898acacad3f32aeb4f8555a02a9bd5a14a548b786ccf0fcc02f512cb7a0dea35c8c9a7cf1786d41091a1d61f24015484201ce93349109074973e9304a148cda6f3c60df8e5d714151b7797fa44d9b2eef341fb65dd5f5eacd19bd2dbaff486f4f6ef466fb8b78fa237dbdbc7f4a6c47b89eae80d29c693a15b96b9b2bf398e29f26e5fb41fbdd02d0cf6359f53ec6066fa88de70a94d6fb6d0c67cb1cf77f0ef3f57378f03870d8e1b376a6ed8b0416383858564595919576ad4d0514345654605859241a5a4c4a4a0a0c0a09c9cb04e4ea79793c9e4622a95562512a985b4b70c1b0401008e46aad1f7899fe7c5e0690d83eeba1c5dcea98cf10b98e3426edbf8a675abf5fa38e80d6be78ad6b751bba59a0eb6d7b07a2cd3467bfb288dce4aa4573ec5c5c10848aa78c36fd7b723bd048fad62823a18b276b3b7c7aaca5aebe5b1aa79abadd56ab5d6afb5d6ba5155bbb6de5babadd56eb5d647ed6bbfd67aabadd5de5aebb5d6e341a7693a579bd663ce7befbd57bb579b73ce392f37e76fb66accd58c69e7cd6fda0777b0c3638b6c608bacbdd65efb38750403ce72d606951e21b72ddc34ec62ffdde83f0eed5a8c396b7f7ed5e836390e0542dcb643dbba79a38dddcf2ebbd09b2d9cf4a59c5eb0e88d168ed3e68633cc557d1aee08cb988e04084c1bed2bb7038766963b5d43733f1db6762d09b686354ebbdbd53a1afae9b02f9ddef78db811c8e1cd61bcbd66350bc2344771a0a6aafe4ac52fecc0711a0a855241a12c775123d895b32aa8b92a42a373061edcda7e8a2db449eccd929362abaa93db38ed2977ebd5819ea9b2f49c8631d78cdcbe71eede3bb76dd3348d721cb76d458c648d1ba1af31c6947b69972ea279aaa86350b98dc3cf4d6ee3a8ac9fea4deffcf5f0217f3db8cf9f9ff6e83c30d4f153fa55071b731fee6b2485b9aaffe2dc139c4f0c40571dcb91147a25b2421dbb11d7313fb699358cdd7d3d7ce0be1edd9cf8279f736e947b5955dd3888e409eee5157599bf76593e5b986f9dbea6bd9abdbd2d636f5bd76bf6668738f7ba5358ee75c5d6aeb902dabe1c11d9af36d4ae12d0b4999bc63c7f1ee6b85f8e39d72f073dacfdc67591aaaada55c53a2222a223a21a68f7eec6e1d969ef2b09691bea097aa6749f57e4115c9e4ac3cb335737d84596bc20d02e2f36e3ee74fbb83ebe8f85d4cb23440e6c1634aaf192d54b1f50bd8ad86a350b1ad6b0f401a54dea7d3678afcd4e6d1675a43f35ae6fa0dcd337e72ca4de9992f3fd0a744b95d7724a1824a73c16f4e6be86fa94108553b57bb5abb5e6cd27b23304885e7ea0d3b2ca86f4c94bdb33d6f00ba99d6e59070d657b9cbffb52487d21b57ff7b5ac59748cf1b6655a8304c50ef2147ff79b9652808eaa84570b572eca922cd3c681fe7c207a337f7b1c8b7afc65cda26fef819f0ddacf30c8fcee47da47b55f0955becf06fa4134d47b54d39e25d4566a842a1485cfe839e79c6f5781e8cbf6f8b381ce140e3e0adf7e9e7cd5217712b2ec28347d53fb34fddad43ed26bba62416f70a9f45e1df3977e5772b64aa1e743487ffbf9a5905a00ea158034bf70453f963df601d549bfb54dfb20a4f99ff63784a50f21380acbdbb136fffbed67c582decc9ec5e45ad7936f9476bd859c6b719f57f0350333419ba92a8ec9de410b6f50c215f28650229a8602819eac8db9d3f46a167dd23a2a69cff5f3db503f87443ac7cb5bd2927bcce1d9b5b062415fece3d859b1a859d42d4614d017f4cabdaeab1501f4b9f75ecf196a1a9ef671504ec3b16c0d1f070de63355b47686c6d29086455b567c16cbb22c6b9f76a0665aeef6637f5efa95520a05bd78d75a6b101a91a7d95b6968bf87f6957fd796081b8d2ada6a8b6c1110361a75bc6fb92daa221a55b445d895a782626caa11c960a66afbf9bae258b71c1796f56958f571fd0d85da7bfb1a96dcd390c5713e53c58de3421cce5491885db2bc67cd6caf6fadf56be538aed76c6c7f62bc5953b5bdadf5adb54ed418a3cf8f0820f46d5bdc37dc71c89aabedef6cdf70c7080ff9bbdf31b2d365231bd07a89a373f8b7a26d7b508c5da7cd2a008f008e71776069a594f6804698a912539e698332b7d0cb8ff2cca28d63d78b7d5ff3aa8a7e9de1812d39f4132cc2b6210dab8aa0187bbe0ec06afffe7cdb636607cb7374986110fb3c8425a5f7e9d3b75f451a86a596c377e0a18a9587d7d3feb434a1c8da93524a6b360f750c71e69c3309152bd0828a26684ad03355529f8a02a28a3b4054d18a3462cb8e277603ec03b1037eb963a67fa9beb99f3f7f873b55651f0ca76c144edb79618e05c27e17963804ddbe16da9f99636e9f873a9615e8da4f918abb9740744d6341a17688ab387d7629f6172dc67b4fb16b44aac644cf54e9f5f4fcb6fefcb4f5acae357fa7af5f067a7ccfbd2577f0ef0cd94ffa1dd30f31d2fdc9eb13ae99086a99788d3462e0d3da3c05a885f9c4020a96e06a754870b54c1c04a367a8b539386b617e03460d62adf9f5a8966b807694c73ff9080d96aee568ac046e30ad5bb06b7c4983b00dbf1fb451ed25fe41f950de6e20d85c1b08b0256f082e0fb864cfd66cfd5c9e6f529a3ddada59a9bf3364a57e0a500b9cb548bfb3529fa50630f869a9344942a835c448f72bf53b9f582b6701a835379c8529dce0042d50656c31449b2408c32c69fafc385647eef363a03aa23cfe94e738d49caaa9ba1849cf388b9e39949c1f2ba94cf6184b7a7e9008bbc4baf27c9567abb5e29fca63494cc5c43f7746ff7beba96415ecaf97f8c79b73b6365fe101ef4cab2ab79e4e87f0022f5ead9d21387c5afb876c23422d23dd1369693abf2930f8838d9d30c91bf0cfb45962da709fb72bf2133dc332133d4f210b3de7207a7e4cc5c449f21165f42c061070dea4dcd3f36bcc4dbf5d51fa8d051cf739406d99be636eda5c56951fa7f25855fe7b825de29fcdb5053149d1baa60d45a96cd29c62cf9babe7cb73bdd8346655f94bcaa4e7077db0c130f60df85b00fecbb3f3dfaf860787b0e7904c4ffc03db1b056eb1b5cde11641a8abc414f3f3495e9eabc4e5b1e44683a9da6073951f5cb24d8fff884aeed7be1edf9fbe66a0f435ecf1d94801115450e46a99c26d55f9b3a685221f576bb686b05de842cb48be1a7b95c77e3ad42f51c21f70a8e10fd686d9bf8af9a3b0e9df5025a44155cc5f7ecfdb2fe9f9e9ac8af969ce21eda962fe29f6834ac45984fa8c72627afd3e54727ffe0ad4f1fbfc37581215e21fabca9f438c4f61ceaf4b7cf66fb6f08f25e954719f3b878170acc46d985d7f25624f410a67fd42cde95c71a068c9d9ca59b424a662aa72fe9295bfa4e95af49c3f3f4ead63feed481dbfe707bdd825fe99b22d8ce8f9710cea38fafcf808bda99ff5e4394c25f44e97a93ec57ead14245b7e9f652a9c36239e2ae61ff17a4415f37f1c4cb2f3fc69f79e36ff06b3397ffd74984c7eb0390ce2f570394717ae76a3dd90be505b51a8bdb5d7b430032868e8992af776abf8e5864befdee72a3929f7f729f7dbebadabc2deefe1e9ebccb7f96503d09e439cb9d6293fe9f32300914e8aa267addf9f420be7ddd75e61021334d104134c242004312ecc00480a4260c13ea19420d4497dca94b08520f44c95279f5e9f02d9977555a11ac4e9d5366ee330a73877fad2ecd14e7b1fa5de47639e47391d1151be4940b2fa537daaabf6100dc98280288cf6501fea2aa2d67a2dbc9c43a99696b09cb10e7a35647bdea24c71e58aa6cd76b5236ed1d54216a68ddd3e5a142fb76847a13d718b2e1a756cf9fab7c8b6bcb86c1f1f1f5209cf344d7bd15a6476f5e2b2b22e2e2b4d66b5d58bcbca6525b3da8bcbcab67054665bb40d732f79c5b17274589c8e0e0b739895a3c3e27274581cced1617198cbd16169db8b7559095d999050c9a4695a8ea6f16cb5cd2587e5b2b1582e18b661971c96cb96c372816d3887e5b2598d836d16779c96935d388ed3e1f8d7c2692b9d9795f6f2b2e2346ea5f3b2d2745e561aa7f3b2d2b4f7d2b8ecc9b44ca6f3adb40c4c8c8c8e8991f1b427031323a3616264b4071323a33d0d132383bb9c8de52204e3b28ef6b27ac94c271f96731a66f99061611919967e61cdf221c3c23e64582fac7dc8b0b0b6bdb0a6479b0f8e05d3c2b3e56072b89c9c8eeb6430391c4c0ed7c9607238d9e6eabe4d2693c1649a6372e6a496bcb9c4e8b86c3a3a2e79cb2e313a2e5b8c8ecb96637436700f6dd9db61184302758ce0386e70eb18411d23b8758ce006758c231f58e6d57d305c8ecc95bd984d073604839d4e662ce7b64e670646a78381d11975239d19189d6e0646e7babad10c8c4eb75d57b78d4a339c8e0e4e63e960b1be8f25d3c1d2c1fa643a6476e823c964321ddcd8c2357e19655eb08ccc8b87bd17d828f382479917ecc14699176c619cb739180c366a4db50f7da2391f395c4e8e6ec2e9978f1cce474e134ebf7ce4702fd3a909a7c1d3cbf47af93831d5fc30fdf871329d6a7e986a7e984e353f4c2753cd8f5169a683717d241d3946e6ed11cbc034e883cb69728242e3799c974333e678e39843f2483934638e4733e6d8218f4433e6789c1df238120acd9853a3f5a653a3a3b3b78eac46a74667cb6a6476b64f6432590dfe817f804d40d88f1f4d40d80f5813f00483c17ee09916fee599981c1333caa399983c1343461ecdc4644c861d99f0ccf7d14fc787ffe32a1fd6218365643e2ef0a74306eb90e1027f3a64700a8a0bfc9574a8a4002153481295820242a60021535040c814540a10928442e38d76689fd4681f32f0f4a383693232cde49817195f490796e1022565c7688447323b666446333332a7d14966c78ccc68c78c8c9d8d4e3b666446d89bd9d9089f6aec989101f27d1c9601313531c9800069629201913531a9c8643220245922a3042349324a30124646090583c1c84c9359342c1689c4a261d1b0482f1a96f6d24829349955d3c241dbbdd4c0bc7430302fbbdb2fae1a9897ae06e6a5dbae1a9897cebab2dd28b9067cd114fc0182dc06987fc4e498183083433f62f28f980c0efd88c9432b2c190ca442a8348c9a6972d4299a1100000000d316000028140a0844e24812e4702869f614000d71a4506256a40823628e82288651ca18658c218000036444484a863400e65b330ef9258368afcc96ee8cc379ec6dbbeb2b93edbe5bc5d935354384f300b4c9e688e59cc6986973c49a1be95e1077f6b3aac34b249e9af09dd3d3084dfd4852d340c129d66005c4dc5196620ab73fa200f6149520583962e8b7c1a9305cccf3d84f35e4b3d9a3a09ef814402d66dc92af7772e7a1558f664e8bb05bf241ad6e4e52e39ad419836efe04466d599842b2e720dcd6f1763f4d4d8b9a13cb0b09276a4caa32a0a3e2dcf71049d0741c40742b22f9a86802b88ffa8df9788a35092fbb751979cf10b9dc6c77c2c7fa9a16f96a80141b745e5ccac2b7d63bdbd325dd7aace279967b36364668b4822d56324d55181e54cd7d4f6ba2e73da24e70da1ed78bc1f5795c0f8865db477e6591e79d4a086a790540e82324244b1dffa2b1fddaf42175327a55a5f4e980b101f45a56027a20b705858ee0ca3ef36644ce97b66b46dbe7ca782e7cc15d211f35349c5c7b99f80b6281e03f191924524e2ddceb45d92525caa98b7cd58e9afdafa86d69ae29a371a0adee563ad9690167dd77bc4013a85967b7441bbef3fbb858c4c94ecaa99d2384f1cd48f5809a7c268feed823f41a2b4edc7445977c7c97c4a782d1ffa2a7fe0a9797ea62050cab73c48e91e7e5937c361d30a390d89c3b94ba6e4c5759975406019cb129f098ad449483ae42ee1820a65cd3f14ee406d048e3787027f881426ad44b180c1636259e8223895354e0c5564c9c4ca6c7c35e40ea7a237f8a2493aace428ce263f28cfab3d0be36a5591ec1f69de66a43c31da81585b4003ec171ee39c775b80e73a68fff71a68db4eafdaed8b56813adb3c08f8419737ab5ae97394f9f90f3c38c4d418d95c0a6d27e558daf345395f7e20c18f81b9011176659273063dad10c39a6832fbac5ab1a2ecae67bd39c58819bca840ad544eeb42af0a334ed1f6f1d02b0631b153739060c1b9beb06c94264f14721bbc4188e33b50d65f45bebb702abb396dc12af8917d79a4ebd4da5e74d28a8347f1c44c1d3378b80ba802bb6bc5bd96259c985eea644aee02e9cd1f1ef01744060ef0d3334b5b53f41a663ad15d54f2d724c07534283e6cee17c94fc10b64014edc2c6f4722855befcdc043881d33640ec5862b7aca518aa4098ac602b9ac2b1243c0547507003a246cc2a68bb300d27b4d4b0360e422a3019e9e19bb5dc42791688b3f64cd547040f23e14dde39d862c8a5218fbe75f86c50f605e5517f7b91420c2d82a0dfe83bbec0314faeb437a892358d56b928ea9a506a7d088905069519b23ffe060ea587a1ae2229ba8d8d8a1d538a04688ef487386eab5a7fe20c758e915e8af8e7c9c6bb6597eb158e76b7d913786770889e8ff68eefe8188f137f613060a124a062d5284df5ab8dc865780679c4a66f764f70b018a72ff99f406588af3be4edea5710d18240714fd5741adbcc6cf63f968a8a6aa3b89f3f1da9df18493908e3a96f4d4091aba5131785c6e81cdae371d392423328ffbe23ac023c082ccddce4e01b0f7f1ddc91203c728fe93e352fa3840370b5f1ec6f07581da6ca505657d231733cde0e889cd1ae6b3de22ada6881ba4bda50f1a35ca9a712fb391d33b9803e939ea38c4682c8e98cfa90273f57d304b627079c01addc2665c0a08a4dd204b7eae86f93f9751a88c0c8d6dc46a1306e9b89c76d86dbc5fd63d21cb8b94dbafaae9806f5dd2758c8f658fda0367184cace398fa69124b9af784a34e42a080fa1b7aa5819e188be124dec11c06f1de395c0c86ff0a433061c7a541c8f7fa9c12f7625b016090b5ba6c27304ca0828d64bd0ab97ca4d9fe4c15cc75aa80f3a9914eacc481e639856b038d7f6af1cd558f5a43cf0f234554e4556d3f1669164d7f5008bb11130a732e04f0e346a14032c804dff05eb0e452a107ded4fa511b94fe382e861b0c9725264744ede30813151189b2646f0abcc22c169a16685055c1eb2b8a2b4bfa79f9b62f89937d31c2e181cddfde2de09c6d5f938af67f6d7a68ace24c19c828b182585bfff81329bc2a6576d7ceb9fad0c8a96e8d365349361ba9ac62ededfec47e93dfa567de5877fe77b41583f1d2dc81b6669f931ecc0ee0cb4548d8cdd9d7be41e8dab054b46b994cc2125904d284eea3161460a0e739217858f4e0a591224fc7d82067e92a367846a5ae420314885650ca81b8265ae4090b67b59ea1ca12339cba337b52f8f9438686ce5b01a62d55afe5b6726f24b32a7cb0c2c007b74e58f3caa45d2d8287178148929c7191434943eadb7173d05aa573a046c63bc406b1668e7b128318f60d31212ba0b5cdd85f64e48adf642a8dfcacb7c619687f0e011c7ba6320b2b995660b6001b67d4472a6ba5c01a31117e6a4345fe36202b192b8bb765b38365b1562a2f54ecff95d91417ce126387a1329136103b787b88ae39d7a3547d6ce8b063315d9b9f426eada7a3ff28e582081b1d1a0cd627d5baf8ab7a8cfea500f1b3bec6577d7112dcf715c996baf3a3ae63b957922c47b0bcde519613fdbd0fedc24f26748f628e2b73b2bacde5196317c3dee8e0aa0a10303de91fabc980d64f230f4c96282f39e762d6da7575cb5d2c3639e29f36e336c09fa3114235a30e765670140f6503714c61e0798c27a01905ce889578e06c8b8cbb2af85ccef0832f233535aaed6356e3a77e8123a3a19f1ef570da76d1b6a2bd892782b744cf3754d2ae3b3bf1c4142e92e1b48217a69adac26f4084b09000323b191325715e086015189c9207b9dc54a792eba38c082ed04a6c074c4d90649aaaf6d306f36d83124ddf37feff5d85f836c15ba51fbcfc0b4fa257fcc187100421fddccee3402d1f05190e01f43388f4e01c27151786cd0e07cb2e78738762c0ed1c7b12edb8c3b9f8dd589733227e32e4e12540058032b550c883c69d0d33ad8acf1e596e5aa6944099b2ff75181c41e26923a8806fd2c7644290c76793aa16c3d13b5d8d1cd19e239ca16f5a475cdfdec23f1090a42075217779a51075a63f49d13db6c764ac3b41e7cb20234a238fecfab9ff56a0a5fdc7031291474be58aad21224df19c8b092712e143d9913d341ab27d588d71865f8963a26a717b2da9c29f8963109bfb55188263567544cfce359fd7e8229c2a809ede870dfef63ec8c227709dedf7d2c4e0c9fc9d2f88703f539866c6d01003934a36aa4871425ee27c9a8f4872a047d0d25d5bf4f3ed519a0fdfa3841a91201eb6d1d6c7a71220746a3a3bbd4ec9b7c552ce71e4a9bd42710e98c49cdf01facdf577486ddcd902adec3f7b8b71cb7e3517ba34eecc1ca5cd46567737f4ea60bc7d46af65f48afad21c51d6d9d070cd62429b560a310140708449cb0aa27e6cf6f4897ad7aa9e0f396ad82626bd37da3e8dcee563d1165d1f94c31fa2bf6b87dbe561351b3a0f3c09615ae9bfb5b6c0aed9a0390773c365bba7064044fa879a87b08c76958d419d1dff487272502002647dce10c6dc03355213cf09f4f2f088cb099760cf9e4c441df67076965d169288cde179dc84650616003390a9030c169cc590df56a98138ef18f2c5a7c92a9dbbbf225983b473413a916de69682caf2eb330c7090f78bb133da50798f9479917d76c6521d91992db57740cabeb10926d7227ad7af0d1b2c5cafd7274c0641ee9524ff73d08906e592a31799f316e40d018f6f6adf15de2cf864a5dc6b257b792df4edb8358c18942f97f806f93bf017dcf1b23e200d009eee023cd86e4034241d7f0d9443d62c2ee7f81466dae925159229b5cf2a1ab386e8500535e239ef7a15bd6ecc4942dbed287610627549e2163b4887dfd4be0c933854ea0f0b944ec313540c4894d6ad233b37fe0ebb58efcc7e2529ee6a5e3371cf5ea7b482cd1b6e93df7494a26651cb877b740313ffa66061472ddff5acc2535c090e8a9a0d02ddd6bf2fd6443d79e29f8b543e92bc1664a1981c9bc3fa8ed68abe59d59ead5c054e58952f3150b1765a45e62625dae90396295c50051494ce5185afdd1652427ce5efa784a796f4abc97d549a35563b13ecf0b6e0cf9fcaa5e4173ff589dc5ed01faf785ae30b849f156b3574036f6e2c200fa273537bd406cf84691163ec69fe60ddf3f059c0ba01854accf4df2a52f05cc4693a369c97fc36fa67624b9b9e345cbfea1386b0525a59cfe8cff5ca8800fac62ae17be9287c5bb8e3c5850b2bf708aa573c7ac207f840b7759878e989802a79708be99eb9c0b1f292a5ddab4b0aff7bf8be41ec07d633b73c76d1e9e78569c22a53ec39d7953eaebfda4bfbcfd10b6b344893dae477a58f8db427ce5879cab0b9940faf6ff1409baf1dc5ec063e2499f764ceed85b824b4a70fb733e4262cc7583184803ee270f6d71b627f40aeff17d58bac955a1680e64ebc664dd05d3aefe3d2c8a0f22a982d7fe1b7c84f96dfa0395f38b4558061fbaf05f2d7719edef1cb0cddf549c45687db4b48e6eea5e22b6208fa705e25ab7b6859194794fdae7ce433b350b6a00c58713ac6d6539af02554d775524d06b6233d38f47b60a99106ba9621949c94b2c0cca9e5a58b6caccfe7fa065224fa86a0854c6e587a5a37e55a45007943ad8037b2b5f629376b66b87079b3a47995d017445bba25236cffcc2ac7cea60a9b605b880633b29809f9e2be611624444cc46a130f4b0b5eee1bea40e1609aa8a990126484a4026036a9e987ef7e07646d554af4886d5251e06e6abae7a15aed4e3ec7dce9d0076894769692cdf4fdbd9b6b66f985cbb3a709a53b98ec875d152f4d71b160bea5c84330edb7e1d1e96cff40af82b1d25dfcf360f3bd5f96c0b99c0035d5014a302dffb4978b6f89c0604d59a7d62597178a1897a88a1e59815885e7f6e3ce7453f85771025610a37687084a822f147ac20b5c59d626c4edecacb9129d5c661a77adc2edc59b1b4d072407a22fe0662d9674cfb15544d75b88c30c1b8a7259f42d56d093e1e8f73d91a9064387c3f3c2d9bef14d017b2946e0c03d8c113e2700f8cd2a87a8809d9981200775be41ebe867c1d01940369a4249b3275f0f0957b1c4a2797c2481cd49edc8dc3ce9c214af0a8158b3b560bba838fd0c1d28075bce8aef92e849ac9a54c789f4c6899968c8f7ddc1032c56e6661d7fbce8f54846ac6ac45f1b8475784b4e39036332b5ee5e4cc978ec6b3523f561de8fc58e27618c0f8de9f5f79963dd67d0db6f707e259276c766d4cb0dd5ab08f593e611f5c6291426fbde1cca42b13cd0ad5b101bb19f71c7951bb4c878b710d3b5a7768c21cee00a314d562ab1d1410ccae7fe5e80cde0c8949c9f09b5661767250a1b52a0fe05a2890d309dc01b7742982ce42a9338e988a29efb776f8828403293fc1177dbc942990dbc84c43877b39424840d829bf9751ada98596c32d0ea93392bc014dc425bffef74ee7dcd3de7283b17ebe9704b793bae560304748883dea7171bfc9420d706635b8d4e04eae5d41d7658514ed2f93291ed72898b2a49b9e44a2a4780cddafe0c123a942c4566146c0efc273d718f1392c515987f450088271505f3e4b2c1b67b53ae520bdbbf85aa2ad4c5e861e9469dfb1a07cc3ec2bb5b83f44bcfdfc1733881a2963d15aa6bcc00de18d4d170698a6384ed7b67d70655b1ebaef51a826af900866d68f8dd89db972f494434cc71fec8178df6044533975db033d204aa29a79c55e7ca1357115e02ff0c063939762fa761a39782cb67a8163637ea5db288189c131e8b20dc221b4bb3e0b3e6732e00fce85242adc7435bc22b07750ec8b636293f0bee5bfdde17b535a3e73e7fd14de7c53b0861e3ac0908996c010b423d8cb3dfd1fe9ff635cbe0f9e961ade1cca45be4f9bc601e86ed7c04bc07f356ad0a16c75bfa01dc0f72e7e0cbbb3e6d420c9632585de4080691d7943f9ea56578f9c621c3cbc8d00c5492cdac7a045e1d620e9f533cfd0dcbe206ae668d015a14c01391761324a14a84d0a8c719b79f4435f7e266ae09ec222aa75490f01211807fd4bb3c4b3f1acaa531ad2ba12b2f0bcbc9b99388ac6867d9c6eb180fbfd4ca87f2d136b1246e374839916746712f8b66c8ce05214d64d1824dcc24facdb6759074558f021c439e08628f66f4cceecd0d4d2b4edebe069b9ba1c1cec14a577be2f42eb6678509a87ed0128884af3247bf06272b572817c3fd3d8733681a9b8a97a22d4f03167839e9de59ca1bcd539f0399109df93332551e0a4abe11782bf83625c0c139b2879695d723f508d090fd8a6843e511e7b3d1d36b4454528e526da593086028f69a4161ba3f25750943c88e1eea39813e7c1fa3c6a0531ce8309bd458db9f7b6022f107a75606ee8e9da10388b924e9c212af628e99784ec06b0efe0898ec1a34439281398980064c641f768a0dcdb112cbceb8db62dbd4722ba7fdfeba0e5245886ea4c2d80ea842c146731681f051685a761b2ad61dd31a62e2fa88a3760c211e02950e8940c66e38b38a1f8ab1a0d5272d0cfd4c9cd7d6d420e9aaf3f61eed63010648b3e32bbc5b7fea3a611cf6189dabaa48742148c87faf27962d94856d4290768dd05fd15990b049cbd1df5c395a9567ff5cfc58167a7f1dfb45890b011fb6b1e747c33b371148d0ff9d85f632c1bfd4cf896fc2bbf026cc707c5dac532a1740cb05dc12ddaf625850b22d8bd3139ab1796215e8635fb90f38be969297b3839601349f7bdad74c32d5ca4340ff401518e1a850aea93cb20f750b374b3e482197edf58aec9e793b8d11ad7a8f05725c70b5752304fa40c2b3f6d9b02e055703121b56b230a779d4295471ce61d8a75303e044740b6b4bc1952c964bcd542d207c09bb22b1d240f2ec09633d9c8c03894184c96b4db00c55e85aee22d0a7b0fc41e940fc460a0b62cec0d55c284076af34cc1889bf89e382dced9306b8fbc01854144e01ab4d90ee608e959b1526c2a6f56f24cf75cc5ee7a780b3a11af03351e0e509cf6db0c5ee32e5696b312a4992245ed6575b91bc5c2668a35794f3265dd98a8fd840b87097ba469eddf22f5a6a4dded9a7809b8afa3027a97ad0324ec243eee47dba1760af8a0a371db19b26a4db50523adefd8f3ed2e04f5c33dfea48ffa745905cc46791087381933ef6fcd78826453ee7e669f9af853a004ee0b30b3cf00520d107eeb7ef9a493da9281f73ede18f104f6a851576288248375282fbb43ac8db0729daab02e5c30f1e3bba05ecc91719bd298c71ca88b2d9370075fd4f98a4aa2743d7d59c65eb1cd6ccea2e543309ef80cf8f5d6ac74465412dae389cf029c6f662dcea2e2611f9df88865a23dcb42f1bb7f0b1d97ce8a2e2b9ef302b1da7f903ef493c6be8b7e42a6e2e1e0d92e13db37c879ddd52ca4fefa30fac302202e05b470efa71252ed731e3015c66a6dd6031e30075105fbff6a1f6ff995a90010401f1c41f02a19c7da20317109b60571ee60daa6ab15239605915729ddba453dbd606778f21b5e8331226bceb3d2d320482734751d61838396536ff6ffc11e07d1b0b8db87bdf396ba11f208c78b1bfa9490b3753a05264b889a3d61b3b7739a6d245d85e3224e5b1b3734cf3ed917ffab67af1c8d97dfb27b69d7a9018e45578219b0cf53752851389d177031c8e46ce5f5614324aaf1e3784b485637394298d4cbaba8843d13976ce28882719970820f3be1080f4039076af08f608d5ea55e87485d7aa97f11f5cfee268a9cbf04c061e2617740c39072b5397ea2dd678ccbf7c1d392694f0077ea9c61a91d04b4074cececde05a31435d01fb38674b3ea7324223ef176d5e7e65ddbc7ce3b2cb5366dfa3a795a2e6f8a805dcd605098b1012ed0e43dbb5b6014460dfa435680df4c3dafbc042a3c6827815477b9f27ee9b1732e96aa4c9f7c9d9e96fbcb81094ed1e3e2d4092ac6247aee6480a52a7aa4d6535e146b44ebef611a9c7e41100b938f19ad953667449372a692a92e37efa1c05cfc093c3149c3d82471ba58485680a078a19d9c2b0796710654ecb7562cffaa4cc3ca5e52e5934cb84772e15fd0af7971af521c8bf22e2f3c7b9b58d6896c7cd1136326eed8b9d57898a01a114ce0394f82d37cce2a26aed724c22752b8ec7bccacc793758989c91bc6b6034f4c80cbfaeb558f3498c6886883f204419edf195f96cdb602645f600dd1c630401bb8635cd577d0d468dcece55d3830d2ab43d34e255b0cd140898cd162183b0f2e2ccdd6532cf18e475e112d20e81d20de43de11fdac13e7c6b12c2ecc084c8765ee0445dabde034368cc15809f8fd1ec2bfb1ac27395e61169b6a5cf256423cbe10abc2f00364fc42e1301491267c89ce0f15d9c1824d0b2fde8d6264c252a7dd9ec4148898eb9e00f18749dafc44b1b1264efcd44f32cdc040ee052e3b2b845e4e0bc69ab64a037e2f74587f628e0407a4e3fc48f8ac95c1d71531a9fe0b9291f104be30bdb518ddaa69e70a9a749547273bf45779bc25ee8a43dfffbe58a76e098c7a48f3a1d5b5034b3fd921bd048d97650c6a4cba044f4578896d63cfa0b167d475130c73f1201e422d00a07b0191b27c9fed21e11e5aa3dc01e2dd36cb5e87fa4cdf412876d56ee2c3e40182dfd111b39f0de623ea5b4592ff4df03a4d6404f6e845344126c36198c21a23d050778da3bf2a6f2cf4babaa38b363af10027ebf197313f04f668738e3c7943288fe205d982faec93e4562d6e926060b47408c02c0780e0083949a203023045bcc58b7761e4a85ef987226de90fab5ad3ed5336e6fcbdf90b68db18c871ef47eb6bbe56497a0ee7c424094a48c2a7f4d02a794f1b11a93f6446158e74e9ede348cd4fa21a3b9a4acab29ee56a95e7397eca7086b08ca6adbcd30de6a7a9356ca996c6b94c1c7a926848b63cbedcda0dac744637a1484935303e6340f1e4c717472d35f0e56ca4d4e5a5f8cc2189d55eca4b6a52162c03556b9416c57b0843fedf072e7873efca3b20627c146e9065a8848aacfced9528d3efffc0ba9183dd6a408441aa998e5fc080f8013b0511ffc8e006d4fa1adcbd6bc18a21b9f9b0727af3e5b1284b9ed54392354aa14b9b07ebf251bd6770355e72c85b382d8e5f72b76d5ed31a14384cae29503dad215d091b7b856cf779a6106c5a7f0f661eca83b0584c851e1296c9a5200cf0a8055642ff831193f77ec29fb369390a444005a7c581001b8dd06097204ee07c7368c32d9bf6dbb4882f49978eab79146c62c87274a63f33b23bbcfa80b3b249461d04a589e97e06a649d9886901deb914f142b68ea69330dbb0516a7d67c6912aef66409060462eee4d79ac5a258761e907460618cf101f75c9f581d2ef190e1cca102eedccc341d2efb90c32ca204efa90c96949ef992c3c1ca11efa95f799a39ff3a3bf4ffeb458237613d599498c7e495114eda7bf9b2a72aef4da4f96cbb70046d16f61f8229f11368cdc303b1075ccd3d77ac890113f0f3dc484e837e14de72bb0b2db1a86a15f3491631b1ac7bfdf91caa3b964f9a95606e2c68034a83ecb48856712b7fc66786923ed377479c69b08d6427fe3018dbac2a21acca0f15092138ab15064efd5936f0872574558c1750b5c492056281a141ad3b57331f2225319f2957813490769e168c937aba951a2c4ac3b176bd556965293af71025255fe0bf96c6b46ef97225e19a333bf043e6d7acc1fca361866438315c07d8f2f7cc8bb067a79b3415d989a677336a6673db7c270139b6902c79962329c71c86fc6c2ec6680cf6de60166339881d74c006bbd054e3306458c6640ee9734c4689b686b3e3e34636e6824b0d0482aa1e1fc2e4c0834e0500e2ceec3786601fa0cb1ee998258cf6b19ef0ca97c810baa33739f33a48912e3a54970e687b33095cd40f29af97735838f69a674653a339f6666702c181a296446375f9895141d28809919eb65c6adcb8c00780d41d6325b51ec18c274eef4ab1bcfe5dd20d349f5a4f7715af67799ad73a7d225ef343290efb14e339a593a0d689cce69a0b62aa781ce6f9c065266e13410997cd30c11e21f130d001ad0cec4348a72819513100ea19aa68a5d872d86a667008a6876feee246218091fad99c61741cd3453f01a05be1860a631d3427d576a5864a07618634a99e632d1c93494884da6d1863603ee9c3bf1ef76f53804b5c84012eef43b7127a08747d945d78d2ff905320885b47d20dcfc314e23c508d810dd7a0ceff52d11b5e5f301f6af03d75556a7809bc2f63e97c59b0a91224170e76f89551bc9c57a6281f580af01c9cf95cf57e68fb360151c58418fef30912ec2ef1572e345895746e3b3fef86038e964b60bd1c162a21c1dde784cc441d186a900e5d3056bdecbb52c584d944844e09a05813bd175bbd344a1d14cc68be2ded0e8a30d45a6ab905f7b230b709758da73667bd3b8d295af3a90ce3ccb2faee18927dec4e52671499a78456e6088f716b6856fbace0d1853e1bafcd2471af292bba1825fdefab474828997501a779ef3f5360c578e2d9aa535af721f869f947eaf3a2f543483ac47de9b2970a8fd052c5390256b88e3f4ea9cc19787a06d2c08c360c475d2ef808457e6566deef889d333825591eba5f6091a38b280782111e863a6bc71ed92204ab687952349915c0f28789772cc2dec2e3c202403cfa2e29155012a809ec2a743635c2fc15d273c9c16cc407b5a3868b156d33050aa837d656b430595b185d156316cfbc239c411283c77b78c0e0a145fa88107051ca35e6226d178475470efc4019f38abc69ade4b5399faa6af079c87036862b8229d5a87c1f70c74413eb47e6b25ced05d3ed804feefe9b0e93fdf832ebf1ae97afa692a44b7661d13c22069caf7dc460c501f4cc9d968438651eb0938641a6b4127fdbbd2e7f84b89aa41fa51d33aae524d4b90ed72b1dbfbc74921d147c789ca2f806c8c4b273c7d95c53f38344e7054f92502f48324e9af150727ae1bd2e0c4d61c082276626761dcc673a085160734611e7b156c7b1ab2f0321be02075f3f017e15954c84640e163d4327af0c619d26c9a8034835f9434ff0a373000a60cc9360f71d20ec546ef3f5fbe1c245ec06fdf627640d362fde78e3a223d5eeadd612b8eb063803e3d762d40f12c2d4b727a7de4d86259e08c7136b11bfb5ca2b9319d2de700e1fdaf6c801df20a9dff76c8612603fcf7d3e915fade4e284f81d223cc6c73e82644633614d9c427147c11d52358968a7010f6a82b9adc07f3ad7ef8f42164fa0e69c93e3c8e9f0ada5072c7d34d20578ada51479ca547255ecff1d96a957bb214e45601d2c99636af5aad1de4ff40c7f7745cbd02d6f15dd064e56790cf454b613a0e0e1f4238d2ffa24aa34d4df55ee03e9bf0a6dbb0930a0b330dabcc1ca4c90ce68554216b264cc23563d4119d1733dc8fa2e922cfcdca0ad4b1ed902d410d7db29cb676ff529a187e80c4d325161dfa09207f701dd8c7084943509a6973bce681af7f7ea92581c5eb7c24888166a839f5b53ca587a05fc369cdaf18f31dc5e450f90b6a8947705e4d7523bcf3e9fbde907c151b5147939dc276d3e248a2e6ce39799460491da9f03c7c6b8ed79d14816c5fd2cc6cf744013306aa03047a6fa556b28fd130fc4a878187319843377cdfc18276d8af9347c00755a98d228c580bb568dd6320167318fd0ee730ad2f6d9f98c3e6e9de91b642a8721e4fde560ea785e8f95ec050060c2a017bb70a692fa0154b40c4da7888a140a3d198f4468a840855429c1d095aeef006ad3f003152eb24d87a5554df2ebf996f3b33ff79d7e1e0d4d6829c1828f62ba6360a2db543b52afde5994ea250fab489ff58fbae64e18ee81f770f08d5c6509ca4673e91fb8e4788540ed01205cd308f7f6ea40061a6ca4255ace8408b189d41eb87490a8f21dc56add9dfb5e3833902e22c16f31bef856ff9977aa6653f3d8cc9b87ddbe2238412fe927aba5ba44227f12f661d77bffa36624c5d3e2337ae9734ac25f37d125e99a4348b6a869ed243bec198fec0afedc573b30d8c883c80bbb1156b28fa7c53a2719c06bbf3a7c5e60356bf77914ad014b7b2e5898c9583146efa5ded52d700a5198afd0ef23925a6e0020e76c5287ac97f590f2254bb4159e5a753a1899f20e26f80ae805a4a62d60d107fe1c9440cef0fa9635f01b5befd5f4a13d695fa41df5f73bb62d01cd13e389d1b048e5df8d2851cd2c823effa44354f1f7de82672a5ad2d746df40075bc1467109bb4bb1945840c08114a277453e5698bb43ab3b0bdd2a8b04c41885de75978ee653dc4999519ca8786d497e879bb32512d5d978c47fc137d42973579ca4ed0c837e7bcf28e46cb18617108ef50a8ff07fda65628af83caa31a5f60bcbfd61c9d5f434c6ccf4748170850bae98b6b3de7a17427ede7d7d1f18dad9c1ca81f0c9e6d61ae568732e165fd95a54d4bbb9b02e4c94ac2e43c513258cc869a90e22e250c33182871397406963fee93a20eab31f6bb6b921d90cb28e8d1b5b79402458d9d3f96fc58db8af86ddd4eddeef9eec5f5a2f984cabbbda879642615ea6546b78a52e30c4a073a98179619a54eb868700b77b9c62c5c178449e980383acfb13a15d57a238063ce84cccf5016aa2dec19790eec568a014c1c30c40fc071e04310fb2770dfe64513dc5519f83f454096003c693ea8ef332c45571c48791a25e0247b1f08785879ea6fdaadba191a31146557842b7fa45090e12a7424e31679cd0c566b4cfb0edf9f126588d34cd66a9f4208072081c9126a2fd85eac0c156e37b5ebc24d762ade836c84973a52b5fb818ca938f14f738f637fd34d2dc2fda2549e24f04b1c892297246d5a836f4a59bb6990331af7c99d5d603ea874e4837080b46b09cb38528e7065e5ab733594f01f60f9c6b0c73f02002f8a05f0a40f44d99df65e79b210116e5894c70cded5e0353376c8e72948311384568f77cde92530bd86c3a977184e17381e79a642033f995c3b20b9bb1269b60872008aa5e8d41d14f6dec4ffe5f84fa67a670bfbfa19f49b080296984ed0b8ae7c62b7263ee582ca287bec5872e00851e43115d1f4730e97863b4f8beba0488fadeffa2ef8040d02d56939123c2e253e9710b1b66f0af53168c0d8fb91a5db2ee19e3bd2374584403171ab465053015f7f2c3f8b4911464228484e5008bd2d1899f008bac84bcf04cdcf19f553bcf7f777aa07b5b9e9ecb40a78598d20dee71569cd2a91e3c3b084429049d595f5d4807e24e586013742f77d53b3382530bd27df614e301002c8c0a62ce9cd3bcd78227e1bed7c7f3b5c2916614aee9256566f75856490cef3f48026ba9bf303bf5a0c74a611050968484ca409d5339e28303770a32269699c309b77e497b78216110a8a0da7462a33f4e3863a04e24c006fb1d9fbb4ef8b40a02a91c96df46d055a3fdc8519695feaff8b3b3e3d189cddaa2f340bccef64c9a06aa5b27b1d3a9dbd42d57773d906080ed5b4f27301f75e98269425d287821d1d8a25fddc2a4b7e660452549651544174c7d123feed9e8261b6dc93f4adcb3bcfbd27288f6bb9cf5627c46ad50536e808c02b2c5317e1a18ac9a6f1bc16eb24a360f1e843246171360176d6db88fabff35e574568070ad2d9ba3eac26b72feed4b218e5f6ba33da90eb8bd3bc511bb1cb6bd2505690eb456f5ab2455692903d6b5a9212974dde7a225b95e8cc5385d384cc21cc094f3671e64d587cdf415b7758e4017930eb1581d603cd46ce59c03e4bb08ebf0092f2854dad4279e118976c307f247e979c6f6f4b2d6f62b5f671211a331190389ec7f5f3159c66734d3838edf7477e847bcfa6701cadba18f6c2efb380e5622db44fbee3bb7c569843e010daeb8f0848f58a31fce920a353ba65f175d181358b89bcfa508f0498e371ae9ad727fd7182126631f9a7296a8fc6dce8d9065098cb7f829654b21c40940c6212baa511661c10c810e0a7aa164c31eecae449bbde559bfec433a685ca724ef32f11f56f91772c7127e96555d8cc239208675c054968255dc10c61848291ba5217dc096cd3d19fc2dc0b5fed3cf246834eb33c14222f8260ff4329b42a399d708beba271e42122edc82e3a3c33045996ad70f595b3ea90d40d391464d08fb16d0e09d73e60f72ac88c35ff214fe501ba95907f02602881b15397f615d149b77fba260135ac2c590e71bc489fa0083b411f79e325c2297677004ea9283f0cc92f0b90208802e56288a04259462cef4bb919d1fd8d106f87f03e1b5eba85b7df1685559625381ec19101738050c51f00c0e9426430cc7fce166f605539695e954a52f2c888402a25eea218d3e83799c7a864b8a8e3421bf05a8093c92090116b73d023a725d98e77934653f29fbd147441f66123cc7152f2099d63bc8208d2230c97c0f59fd3b82b1c2e229cc7450f23369982b98d77896ff3a8b2eede7f433dad7ff6aa447a7cb84bc3f9f7b2fd9f6aba12d080be42bee1244917dd1fd757a8823348e000653c4fc6b4446a004a6caa737903f29fc2db77b1f389c01813481604a83aefd19e7f968f3331a241b7f764ad3383d90dc862e2430572a638061f955ef3adb016e7e39c01616479372a5fb5b6564a3987846ca963dbf698b2955ef2a8fbb7891cbb0f8097bbeccd2f8c8fd471b2c303023e27bc4379849c2443e15587a71475c0a57ec56674797dec9db1946bca783188596fad7d1320159d0c0bf8de391dd643024e682fb5788375cb175cb616add6cc466c136b69a3b29f69f568d648613af9d53ab70ddf0dd6722dcf7b6b0baec7da7225ad87e96081c45adead4ea3149b7cef1aafebafd2ac409ed81bcdbbd6f24cfc5da59674ed11d887b64c7558c3bafe625c4ab3b677ea40500a9e97cf458efb3613cf465d971b3473a378cff250e9eb71817379f88b59be01ebe89b560f486e15d17027f0b970a7aee8180498cff05ce134f9fe0351f1cd4eca06994097780354c7d084d05478cc4482ecf62312c4ebea96e70f189bbcaa55a0a266c338974dc3c9e38607c2cb4477e28d4381caaacad544909fc411a140f376b055c204d19649e6120181a8949f14006db5af60d066c008708bbe08f01b8832f8b3cef48c02074ed1cd3a6208dee9924bab2e023134743c423db01e64cd22532e929f56875ee0ec1c2d2dfaa4239341d8cceced9944a49a9626d41c6b7bb956cbaf6a45f51b58ec88efb6807d70723ed978a34f56a60d3940470dfb7f653e7a2ce011a3b05e0c72a6ec9b1dd52063f3099aff6f29ac048b5c86901740ea8acf0a2e8ecd068e0faa075aa506e28247b3d7d27859085caee076f6146a4f8caf6ab8b3b7c565908596374de3f56a261eea23e2528f3a368b44db1a18c43960a53a59d2a4be618df1e0b2ea83506da296081e50bb572c916bad9777188c95dbc4bc1491dc2e37b13a04323ff1e37d160acc648d8458f88ac110c05fe1a3f79f25d40ceb52d88a5070498e1222b2aa3c2cdb0554e3b8c76f0643217acb45149d077ecaf2ca617a5444c91c563d1f441054cd18aba3c03722281d5817116f0398ba565ebb429df4dd9ea6880434452236b79ef6459201debb619256edce72dc3c11698849e70a30482164f6700362351e1ed2db47cf0d4be8dd710e247929084bffc0e88b3db6171250483cf56e9211f3644ec649ce6b91aeb0996bd91f7f7dfd0673f84a0e2f45b0b41618d6bdb5bd837746f48f7f122fa87747a16919c0e1d95e6d1a3a1ef18ef1e358a0305a8581b37e827fba9738d4140cafb7423018c7e669940e3fd25555073d1ab89308ab25c4c69dd58b06d72346d6ff602c7208b76ab3943d92fef341e61c9a67cf2d087494c5d32597ee0a249028dc53f9e5c2c6e024a95f4c4fb9144c9a2b910896dde6c67f33a5a11510a3580e72a94532214efb430c83a2c36606e074ff6fa3867db7620a7978e820d48fc143fd02d6c47566701578e256fcab20963e74820b884b105ce3bcff0155c8042fed4483e37d539dfed756c437fa1724df735fdd7a976d765fb3bfe5e5416a1c6bfc9442f42931b3605ee83bf94567a67593c066bf569636fe91c614f7bec4103694d6da2a16d055571095a99269de473e67d1bbe3b1b21ea26440c1aebfe9db39fb987bd7104d9d9ed8fd42b7eb2b45d184067dd5bbebbdf2de82582266481e608002a84a1b57e5c5284cb87b9ac566a86c010f5f347a4c1c456d250e0799d5948f9bb2446e69326339dc9f35dc439de51c484cea871b39c357b9132d58117f929ac9740b9f19b21b0fcefb20ed50281e897257dfa31a7813308af4e02c001bcaece25e8b15318cc68dd4c56b542863488dd8f786520000621d306f65409d16cd6d7f9df8a39cee091bac9bd3ee098d49bd17b19bc859917388086271cdc424dbdbee443883f7730d88042ecd7e8c26055dd44166c5cde583a4c7033b48d913971d79eb6195f821649502169620f2478549383d633bca378ae0f3baaa2018652aa735278a9e54e4fd29b386f14140b3a05ffdafed9029649d26f46fbb56558f9a3827ac45b102571a4378b2ec1059084301dc31ea043f14ff5110873a4cf8459deb9199eca6145484803fd5c819e8617aa040bec6894e65b7e8dff4ab242b8c63c724d30a27924c36e6d052eca6e8bc7577fa360f19d2a370120bfbebd8c529feffd974c7598ef44ca5bdeebcf892a59b9cf85f2f2e462069395ccbf2161e24262132d8bd4d9a1dcb86f587be851adb05b2d40ff47b4a322774b33878427300da42eb0e3e5d2d39eba1e1d5b8862c0def876dde8cafaed1a63ab2674a036cb32393e42852bfdb7cad11319475894c88dd02516cd2d8d79dbaa3620921d0e886506f6df4d04f604013738f70fc0a7deebee5659fbf16e9b4d52df261c62e2b0bcb0619e278a0d8c1081dbc721a8faeff055f194ea83a72930c85f336aaddaa583eb3a21af512e7deababc1326708f24f2d1b7e4a834dd5a7015b82cb34702ae1cc051f4cd465f4ab68989d329679177eac35bb6f62507f6548463b065c8914dc1463f6cd5a8b2a167904a7a62eb26206bb4e6694150c5fce009bc88a5086217d86c99151274af263dff1c9e239a54ad5dd512dfbc6a2067610c196db146a4f0d6d70101125b2f90d4a2214e046cd358e5991601b64bf921126b7594413da0009a7d02b8d579e3b8d734dc19285b714d05bed01e3f2e334342876d3abe6f2033757258fcc7129e14192f59e6fd803509823ed0bec60a42f1d5a9192df6c48e5031898c20100a7843deb33156c1d4ac0906463ab011a85b1909692e77ea83c7d237a9e7f9cd600ee0a6a64bb12aca0e60d001828aa5290575f5022353d86252988ae71ba4bff548b8fe5a6d007e7dab5a5a4e91824b13cb2d6198b8d0bc366ab2c8b8d531bec1f0f3d02126e29702b8a0cb35cda99b60a623718fa299226994fdaa8fa6bd5ece1b8d10c147cc7b5c8e0cd86bf9340bfc937907cd61302fd5bee2d460cdc86afde9d283f47131c761d4d83c87c884da18f2495f46a7d5e7c1d4b785d0a735fee2a7b7127dc2fa39716853e8a70f4384c792819a773a35969fe9534e5df414365ae2a23045ee8cd94bcf024cc14d461e2863aa0da6324a22eaabcbcbcdfa9b2f1ead7e8d100d34bb1a95f2170c4a50d06ad96c4e568334104b37e9b5943c91b526c45e1735047fd585c563e408e1ad94de6d0ec7a5f971158acc9d4ff2caa9c56609cbad176b4c19c48482bcddf3bce3d7c62b3ba9553747a5aa5a30e66d0daa15187e377e7a46b2c04e13590d6452b4c1cd4bec428a4ff8ce42ce64e00d60999d541f39050461cd06ea7b61c24dbf1a82833fc6b7b318d834c453215df37315a21763ff7ec770f8ac98f96245b1285288afda9206120a537d7697474c3702d403adbc5806ac46f0f5651ee37ed0d885bcd7bb4473d572d701721c17eab27b7ea25b2977c5e8697476151c723d50005f157bb91b958f7c555a73c034c4e954f6fb91ef6430030affede4119056818326e80d0e67c0013804c713d14d80aac8b82e155708e2b1cababc63e1d72dd2cdbc727b619afc27d182274a1f2ae56a1b9df7e0673f79b07b907350beceb64502df7b14603dc8c9e7d8904f7cc1e7706aa067402a360d68e5553f89945f89745285fcc71ae0b80d7246d5f198002524dbd267e9b796c08684f19ee9013dc2b274838f0758869e6915152d745d46118f09b1ad46dd8f0cd2be78f1c82de2c634c378b95fc322182208755e9bdee09633e06689e457c9243a374cbf36a8a819b70e123298214182795dd70aa8c46f812443343dbf114b3f3ec862dea6499b0227490d0e37a9f91eac9bae530110d251d86e585b8015d0a23dbb0513e015cd10927e68c5527286d4546c1b8338eee64c0c0f7eaf3712e8264c0c44746c320df12139f0626aba142d53653ba17288fca8416e146dc20f0d28a75c06701f165d0afedbcaa226f9b183016659600a0192a52bc45b84e11000ec2cc34034a918c120ff099722e51c2c9859e94e620979a0a21747b46ed234a560ab8501dd20d19adc96c43c6265811979a3690a795f4dbdf7d8e4fe9d36792b0c5d96c39629cd1883b6d37196c55cf011158295b8d299aa00631ef42fee87532cd6c227982008d893fc306427e688a7043340348b25206f13a1e80284fe485f587107bc49207ec97f80df4faee3ca5cfed00b2146ed7a1cab805d1bcb6e81138a804247659101926997fd54759bfeced90c0b0209888df263758098f03108002e5686b31245e1cb8859e91eaa25b0b6faaccfc5e0e09e28c4b24acf6ce5e9915e84ce2090b335d70380d0dfec82b01a62bade154ff670067346c25f8ff6dc3f91706e8a6125dbfc480f9da6e54621c94f2f73111a3c772d13d569a97835e093898444f0fed0badf0ab462d733ef4b36937804926db9282146b18b33a7ade5b7f9484f056b4d6b23c9af13ca84746e10acc888f882ee896a35ce12becf07948a46a5823a19091f1ec004f8c43fc112816d01eb933f5fa62892dda07f800be11d9d85751d86fe84c00750422634962dac8620f0939518309168bf4b2c03c01977026f36542dcfc1c56365f9b29463f61efcd2663226f06155759ca8448459b141c98c3208f03f0c30784b619a84a727f4664e1b07a3afe6e67843436672b1aa2ee2b2ef72589b375e0a5804b40c06da3f27237e4be726c922cf5c3064b8e75081458fb212ba6aba3abf1d7d1e692ae690ab87e66f56cd4427123b8e2397419e5ffa1832010db3718cf6190175a9b4dd43c1f0cb31f21e2ee0c62e5f7f0452bd6d0d023e9b4d7a183b938088508bc3628fbe0182a3a90168ef259e00831e386c2f4db74d814894d305cc2aeb50cd7b1824a9799ec4dbe2f10d1a38f4dcabfaadbfad7e2c8fb62991455bc63841ba314140c014ffe609c92bd52f32edb1130907250c30c9d676d4fb60a069ca7c586c19bcc89c929de635e0115df81498f069071ee21d4c8d44f9a774ab4648496921f54beb2bee6758b05082907cd9bf1d4ca31ead7b881aec43e5bf4092aabc011cd914a7baf42c8020d7d835cb20b71a9d48100e01261995d45f1b956f84e62bc415bc586c8336dd5f8b716f3a17ad7e310bbc76f5757433ad971978642e29eca9847ba1d0163b73704b10350515e575d8911fe12aa1b0a695a2c1ca611aa02a10505406a5a720539ddd2ad10e561767ae913c1cef5961e6dc6a7cb094f223802e88823f8c5287bc30e9d47e668617368ec09507bf4f762f8bcd0999251c53dd764342bec9f4192cf04e1a8d1dc06e7e070c16ef7d92dacfd1b58277e57da7e45accf3853929667328e8f4c4a79c936ae3a8cb176258007b3ce9cc4c95c4806747d1571553c4ebce1674a97af33c1cc36134ccb9cc2ce37010ac2f89892978f70b6abe8637101121055147185c0035b4008c2e93ab0c76769041a31c36dd8f96976928334c41f2427418c0178fc5f6b708c5eae034dab0c8882dc6b92c984dc94a5f6f9ecb132859e189d94170739d4dba81e8a5be8bb67d28d57166c93fcaaa02923c44031bbe0ab40c2d2b27fe240d0fccdba17ed933142b375e330d29e9b5bd176c0eca9295ecd3663a819a4b15e98517f58dc68b1b2ef41e86d083c42014697f395d79985667fca72b982419ebf886031598ce8bed6e711a91e46ab5c81df60ec402c7cae9bb4a83e846572bc685f6849b402273db8a498281301b82abbb4697a36d10e240220c5bd0c0b1841f053e00dcd7d29af17e758b935c0c91b77dddfada79bdb33e16a984e1db315a9cde6ea8acaaf71ca0d961ea0ca396263583292db12e854078ade35ea13054aa6c63aec91cc4e2039ff2bdfa60d1d5a9d5e6d1161662101bc41a58c3fb9d3c409269b062ac3b409d5802b83976b6480f24527b3e8564b63221d2f2c6a2436605d1e9b6e3bad72470940f16c810ce376e0c1f1cebc13a13ddd45c343a73542589bc8769e286ebfd4a30501c2c7192eec98254cf2cb97a48f4a960ef399a7857a3f885a39cfc3f3c2301df0e9752f08d7f53ea16997bfc5b6ec24610115894d277080b9063e3c35adfe0745b05eaab349199e69d358336dce6ec6ce9841a4c60a534811a587052d23492b25c146773cb56420e4391e92d82a451b228b0e802638908d137f814658c034e2f56f3ef37754fc4bb4c9787828a4f4c22959ecc332dec615880bf6459d720441a0307e5cf5cb175d2c3051a891b28f560fcdbcecf32375595b8a57b8307e856cdb9f1e6731f7fa379a608b148bfa2264f6e06f064677eece85946d5dc29dc237364018193b4d89d095608cd7592b203c003ff6439607e841c8ce4dd18f364d86015192d8d4673240e2c41b91a702238b19ee94b6f201917818223904837a8781c5680e63b857e22c6961bafea02e02551b12765fd5dc59c5e071fa19da6171c1a11d1b9e1f8727c1415a4488b2d097d518374287f237c45bff5d18ca171896e1928ed259c7c37cad9ea59c0fb5121b1c7bb7480a55bbc3f52bacbba421d71a083e309189da996b4b01cad3d84512f70c601a1e73337454ff376cefdb82e4b218f575b806a04954355f24a95c6e0af3872773a965bbd8f3480c200ec14528826e16a8a25303f3984aa0939b456d22d704b056223fa1851ded12290473da7254aff0e1682686213b538e0c46a6073d7ba0d39e1161425d0bae11baf65e4175d16cc26bc48494749d2637cf0cd3c3eeb4d11f39292bb6b4341ca5c5b6b8f87d5c0644da229f774cee4b1914828412c32c88d801ac140e47e9b7fd588ebb4cbb5864ae2732d2023270686d31d5a5fef4806b0557a1871ec5771afe9d953ab80ff8ece335d419913eb5151da360ba3fc80a29c790b58b31a3bab3edd5549c5ad6776ba83cd62dec93fb79254694137e2638f12dcf33c50aa05b346ec41c58f29690e21f1a965006a4abd2dc3a21bfa529b3282e1436414a5ab0cae37d35334fe187a61059f9320a388683614ee94b5c360dcb7b88e1e448c244dc8b75d6553d2441a2558385566163d3e99e59f321ae6b7a479c0270e4bb9e057a580bfa5814f2470c093b46f0caa38465b47d919264d78a4295c64655c812fd3d1c9fb39184f7f959d2b58f19d262f127dddba94c99c4e04af8835f8e102165555130804064aa3e068f282884a30408a30e6c192038fda5cdb2b24b73b1f14a4903ef1069da37b755e815a9d2b0d438a33f71778461c512c7cb6d293dd22f6965f587b2d426209db5cf52867dafe853b1a8aec0ef152310bbc8411e815362cf7113069268a6f0d0826b81b16e98a26f9bdf70e552b657c6978d7bd9f5abac4391b9cf5c304af206ed04764a6cc1bc18bf9fed392f5ecc24c6e8d5ea263a3dc443bf4a515dbc8e61fe55e84cadac2b01635a512aa7941851b5b5d26dbbe4b0de4b2405ab6ae53f03795febb5d2240e49b038e5ed90abf43e6373adf4e8d70e9a1756b51312cdd4c1c2fe221872fa87bba115c079bc56ee97cea9de7aacdcb429558adf8ec4d07bfe74492396b9f0b7aa00b1d9fed9b892467eddf6bb52c0f628a07affea3767f0b229060df8757e2814e3485b6d8c5bdf896f7bec4a7c3fa5df5ba5df0f15ac326d2af54a3a334d374f7a5fd6c2708db768544136aa1e104db709f4b801adab9b727e7a46df526e1d7a53ce4fdee85ac2cdf1667df8a2530e6e01bddb3c545057bd3f6f944d29883ef1d3d90d169d5e91bbb587896a408fad354e8d8df5a9d7626e5ed38751bef9f6046e6e1ec547b5eb9d027a964bb58f95957af39a1f20f3e69c9c08d51b7b9ca0367adfd0707fec6b66620d9d1909bd6aa7e7148d0079fbaa4d84fecd1f275837bd53349add5c786014c2cab8cfa7fb9d538b19cd5b77fbf7cd33dec7d420e1c876a3aaf205ddd7ea139698b48f8342ccff46b8b3bbf973df958115546036816b62a4df9a9f3a54d0d7619f1b0681118bc2ae9576b1c75703d478ed49248370ca6f9a3dffcc9622b78028485a4ce79ed21bb9e86622cac223e5ec3d4bb2c03f6c1b33e185426d8b2cc0f737d4c60719f3e894b4d8104037d21a0de9b4e144c4b2028f50999908afc4af3b4de315ec49c2393df432d2779d24882b7c91a87cd8af3a4b9fe5c52232c31d3033bc048e4439001432427c1728c65b01512d9e5eaed0492c9016de638514785fc8f79da750c6fb509eb3e973bc2b8b9720d58da2215fcbcd70aa3bfe176d566066910c9c05f7e1debb9b154f953ea45a18a2c6d7e740941607878d083d21da62cbce140f3847a364da4884477a50bace0bc2f99c7d00ae7415442b742d5a670a8db2a778ffeab318a63f78dd2ffe9e86f75b69f8468535199fe88386aac1924190b9d6a3b52f9b92e9b9cf1fa7b20bb9172af3c154aa91cd8e0bbe182ff96695e72ed1e2cf7e82aa3c48791ba2a1055ce080075bfe5d33c36a32aefcb8fbee9a87b37671f3a9f5d0189c8e63147bee569e81cd814812e4776c723706cb3ad51d3ba6403bbac223b471d9c547b13d480dbdb3dbd8f9ad3b93e23357f46c80f91f0efe201f769a8b3249692054ca91a82e92f0b39fe123bae5d89eb965e7ab05b3379442c6f68543617da267f20570fc135b3b6bfd5b61b2473bef9ffc6f7aa5e22cd6118bccf99c5228a84237dda80d57d04c5e5ad968c631736cabd893a6a97c31b7f2a91608b9a9a8aee504a54abd6e84d167456837ee6f61d3cf5e77c118219494b3b91329b9d81c63f96b6cb34f297ad179f904abecd988f11524b4eda262e9f23f13f71b252c82db4f409767133602f19c9e4f8ad6eb1592f1ebe3ec5df8f4b9e71125ddc06ca266d1ad271d4e56c1f284d530b1d86224dfbbd4701a578e06e33c0fcfd0af787228e683cbc54dc464b11d317d0e246865d5f8dbc026dd397a04831503b31316394d949e99a20c3fbdbbd661c0ade08450cecdcb385cc21661aa967d6220c048ff076865a6d918e5f26de35e4c14a70c318117bd41a1159c3d70c73db322193f68aafe9920a032f6bd99ad54c09820a02bd511fd0b82cf090349a656418b24e0b604bbb2becc87e6963c860e4188334b05fb50dc65616fa98d1d11a2dd57b33b1c368429530c523acae5593811dc1a56d7b933b5fec8edb5ce1878813d610cd54629cec1ba8550074c30e84536a0af1b26dfb8fc49bde0a8a77f399017b8fd7ec860235846b1444d62b6e19d0bbc59698cba6b7ccb9d5ee5cbcad83685426b2283df23fec45956dc980b42157b7918a0bbea9934bbbb673c734c7338ccd817500f5eb739afc50bda699de7e0a65a3e704dcc4446004eb9dbdffc7ee1d6110b34699a2910e117caebc788651d88a1cff3a3df85955aafd1c89a667f063a40f13be4825eecab69ad19a3238a5d5ab958fc6749ef347017bae26da0a2e63faa128962a0a9bb90f3d1fec8406fa737fc0a02f4d02872d3fbb9bcfffbba9a13df68030fc2420bb9492a2072dc2d0e196614acb7cb7784dae1261e622872766e4e76ebc44540e6488709c37bfc83410e6ac25b9ae6612c345407e4be436179c28b51eab9bc61d57b27ad626fe2ec41518cba1a0f69a0ddfd45738fe2e5a2df3043929e9ef1857417520fa06fd23d11ca0497f534c9ebefc643a7a29622f65cfeb41bd9a49dac858d8f9bb1f11f4584ecf64d5351b77eea161addf76d3d046086856f8b6b3c26b169ad76ce60cc4015f574bdb3c9ecdde27c44765ebac6010ce29b163092debd95db4a7bc98c0c313266746e213a48e4ba02ad40bfc12cc54f9d447dd61665d268c8e9c8af5910c8cce1e08a17ec09a313236b46ce75f8d7da070372e6da10d1b40f54585ec44d514b2151b006be8dc05a4d7914c00d0b54d41fbc472715531a85b511f7723517d62bb0ef267e94803945f5d1c2b64d492d0342cddc04b42e37812ba368aa733276c238cce3339323a8de2d569613cca3f6a0624194dc04612b5c04ec826c0a434c74f004932766cc4dc84f7604709a2e2d32b1f7b98948c35ffd5b3e6274d5a9dc04f741e09994ac1cc2cf42e45fc3c63529414d11fc68353599cb559b5b4151c3c2db6a27a540857cd1e703ddc202766d02745c317b817aa397d526e0f43e5a1bac10c13291eba081084120d465215cc18ecf36a00d6428ab215903489b80f3fb3ca960d5022bf27cfa2858e7dcd2ec8a5cd42df3546913a033033da3ef5e6b4601510020920fcad5ffcf0d0242a44d50987f06c3aef156b96b050b084c00221ba320d100a0839300b2b40928fdb7e9ce2a8080fbcebfd2792409a1400f58c4d57991c368d61a206d024d93ecb6fa28e4e5eeacbab409a2c57b3a326bf124057af4b58b0b0acdd3d81e79241d522472b4feada54d207a1a8347f931fe96ab695a5296b030284551c53cb78bf8a64d8090bd674a10bd09a2bfea700f84f3fb9024f9a59239071316fa70bd389a9ddd68131ccf57d536ae19a451508e4103ad3f3140f7d9ef9fe0db175dd5cf7c2316d8a95e4268222cc04197864cbb7b648f3926b6eb6a70f6b4137353d508bc44a8cddf4067fc3338f03f30cd360dbd65e986d655f9dbee97252404b7b6080052c963c9b284ca7df39170ef1ecc5746d8a8c4ba092ef80cc9d11db4d963cef4ae39506c8d29eb26709bb3b7dca84cb5b76b34d58ba76f28c500ab7a7c14c203bb4fbe7ec9e2a88deb2610a5d36d33713ddd268fa54ec971e21c9c7a7e7a74cc38ada6f4b95c7d50bbdba05b7d223f0046ad3eec6fb89266bf0f0581a9e2e8ad60783b9e41e4a6bde684d42c10eff23910b0f3b9fad9fefc983e600fb407b85277dd7650703af405f3769ac04a74842c617425869d4e406678dce842c2daf9249d804f50bf37947a9e0ee2a0b166be0391eb7b6e2a5c4a5ad8be651ce082c3d770dd400b6c17b601d1f7d81d1828dafe0b234967d1f3368b98df04cbfbb5bc31e7128923d321afef2336269e1f33ed0285beeb9de35103c109e8da274bd11aa699d71f51e1cd98130b00af6200bc0a0fc898306ac2ddd3ce49a4531be204e55a31a95ffa0e6d9125566dd45c3ac609f6daf23f51ba8e20a5dd4d67b1180fe9e4432d9cc1ea538564fb98d22840a4122a007324773eddeebd688d5e622329e12c13f78e4f94dc7cc0f930aba955d0da9565fd2ae67078c8c5a5cffb7859ef1072ed2b58c84b6051c620ae6b3d108dc8d76c9891d2d8d2c67e8495cc84932b54693f4247222606f512080a560246ce5063ce438b4926d7ac65b428723cdaccc1045fea57193df4655dba9973ad891499ccde4274913fc8e9f958bfdc00be60ba61bd676940475556669c335e9600550d5ed604a7eae6ca109d1a281e6354094264f190481b72ee74e240640951bd22900956baef6f9effd311189a6df5fb60f08af1a5fb264094d71252924c7f855362640511c271017fc1f2371309d03078deb3a058a115465101120fb2641f10b2565cfda2e456dced912c5db8c19c4116e1443e3224d2e9aab5b882d0cf3cbaff9e589097bda74925ff3592c50bbe5f1c5e26d0b85ec0c08aceae58b6848226c5e38c0200b97ba64e946ef554aec7c00b6b25ec7ea05560cbf88293520e74dd0510d3be5114d08d3ce6d4ee02dc21b0db400206b2014fd8d7d8db1695c44adc1e6c9718ec4b33ab13b2d419b8c0a5c7e19461779bd2f9c82c4e2f37f4b9872069c5012521ae5aad870a6869cd62ba5eea6399b181165558b033a08c7783e702a8a914dd23b5072ecab95fa5ff82238f4beaf99c17e20b4f304349eb5c831d0cafa71126b6ce1643bbd942ead8ce3d4fa77c52330d0b16e82331bf2feaa6e88b4cfeb7c32eadf1f0c2f53c4c11a4ff65e9538f0a476f3d52603779a2b90e62ded65410cf72a15ae8ed1521bb0b9258a6f2e3bfc2632ccfc5aabe835e0fe42bcaf847d0f831b9244cdc6bcea6b68ac213bbc76405b9d44af5a09a07060bd9b7320519d42d9be6d4b14b2680979a71a40257e98a971eda525867a960877a93eb138ff49c30d567dbd11f929bc048c0b7097aa6c09c374d4763211ef72cb5029e376a7a5025637adde82db3da8914c60f459e81cb709aa66e1d006e70017270b48cce212d97e34bb861301a02f5876953d8273924acf74ce6dfb741b36fb6e58f17b60223d2862de361735cc05147531ae3bb766e893f1b96b06d297f859ca9d2b48bde988c1c340e95c47a6831f6c80b14a66c4e24eccfe7ac56da069e7d02896c83bdd09a46e9f4c909c7a4fecf68c3c13d3b0daf697d63a532c311dfb2839ed1d7196e2daa0426f925a216ad039f126048dc635203a6b65cb0a3a99f582239157d27fcd3ff25ad795a597330d1c66d63ca26035dc0d049abc31dd1cd0f0d6f45c8bd0767de1a16112f39839715deb1a37d22bfdc9bfdb4407ec96322e4149ded665a7c74ae7d175208d146f0fd1c062951afa51aaca69d8d8f026c71346e5aafc82d9e6940b4e43e371e42caa612aed488520ffa95f7d32b557ec49147b40eb744e65100f353425fa3ea8b86413c00faf50dd31538e62268e1bdf413421fbdb7b6b23a95dfc35206dfa943207190e731319a1ed89737b6ace268bd4ac02439f3be1f2a3a7d4ab0723bad6bc49d5bd0bbaaf3282cf7fb507233c2e1b731e30f425ef61d71a7c22f0bd02eec9e5b3b99acd1c0ce3b28725050e0df64eba09ceaf040ae79f606ee89af53dabb7d8273c9d5734bceb0f898e8df1fe53a8f3a9be2b636a492cda44d5ec7bc752616e01b4cec646517d6e375df15720c129a46285a73a814e16f28269a65c629b6a18ede9ccfc1387d334df85c622ea31bb2c8be863d27c7755904a18fc818ad724518a227813015f73bac37e1456d73a891405b829892209eb054776e89cbb706b2cdc275e3bd184397c896ed4c7b71ef72ee9fbd967335935aae5f136663c93dfc45c94054721692c0fe8159615396159b06a1b1f2f7227f8e434ece1dc6b3efc0cbdcc511ecef1ec75f9e3838753698069195f70cd059e3181f8e9d3550b7d0180465da25c76f1d9042df0c2085f93ae2d8116953fabd29f5fd4a1d513512224a3a2d51b269014a39ad50b5a19cea35f02d2ebc8b98d2e35eaceb53a91f70c35ad34ff498fe038addc49423b01941e5e1f3cb14e4d18a2d18bd5665da0738b603f14e3d8a466c7415ae04af3d5800ef549587a549048c92c870040aecefe5095f8cf139d5e41d2804ba8505f6a94c15b8621c5979880e041096086bd805f9ecba2ad88988d45bb6d5b94ce1e5019c74d9ad53193df8c646e7930f843fa2bae2cac34506881a2e39be03fca0520c56c0c8bb86d31562a4ca43140772811d2c651498fb108e73fe0064761455238bae7e7918c1ee91958f33eed2e37c64904a9bff2b322cec23679c63f06a49a1e4b03e5a853f55e8035d600e7f9b3fee9e85964226b389dbe985a548f60f36c05f4ea73f285d23800635d06ffb072af125c68071f48457444c79789b447508132142208056276424b91d26bf3ef509791b9284c7034dda5cc8f4982f1096bb963479d5bfe805374107ed28192a71e5ff6b349c21e906768909c4605b3fb11ae18f99d803037ac78692a14a258587cc41d31c503f94c01cc46a9e30868df2a05b559a5148e90be470872a9f131cd33731c33ec9d95335791f2a25e2b6f86a785fb4f2fbe2ae191f6f649a78e1a2cedeb164228e698175521234bc1216dcd151f0620efbd5eef22f3e883a10bd9a4a336e236f1cb80a57fcc632b90467bc64984446c9b67d6b993b24a43e5bbb600e9698c095e0cb3c3542271a07b7a61ada3748115c688fc9f735ae36396bcb724e7ef542d13c19c6bce15246a0d2c5f18b024996ba526e0ce58c8a87bcd27350958cac9e0c6f3f0b02e6b8361e887d9e8b1f2f7a4dcd8699cee8bd0f4b07fe670e0dff487b655888f6dcbd9956c0c3914242d8205dd411f7e781757aebb5e2b7e78704b7eaa1a16405c3312214b41f53447fbdc2226e8f1161832842fb8f753591b4286a78f8121bdf4fcf0063661e57ec7c873e58812b095d14f0442be15c20621cd428ed1e6bebb748aa41d71915c8146abb58d34a64ab8795691eb4198ac9d303940603aa0c1268562056324e076af9ff039f01bb75617938f228cc8f44491ab24b76dfa253d59b73b35f7ed5bae1bea27354c0389907b1c5b24507edeca33dbf894149cf7010c3d353842221afbcf0b4a459c3256def6e5b4a29654a49064c0651069206635c24a4b8881d1837c55b2ebf6be95ef91dd250dee743ce58b74ea67d9e1ede93a556e84e0faf90d34b4779f06a2319ef94a79f1ccee9f45af48af07e8090d3caa122447cff225a5484883f0344bee3c05b8217e2bacc7390d34bfb9dec9421945c214657e6b93779232e5ae0c6a5fba8169935d1bddc2aa08b529a269cae87217af43fd9917cb174b54abee44b2bd0e5cbfb467215b54cd297bf5e72e91a7e4e0ef50a653513671a99624c2693fd8ad85c948c752814c78c348b33dfe90b7524c62417a6b9a7d3e9743a7d6673d9e52c8aa56bf8edc71f7db1508b73af398946e71fad752d5e06ea863759cdcb40797c2174d7d2aa4d6808152d445d47fd97e2827a473911b733f36d119a2bfff4f5fd89e02b512f3d940f9d3cdf96f0a2b02a635ec3398d45ec6a8272e9d56567c5167f016be0fd2aabb50611600dbc5c266359276dcc592d5886b02d84d7e4c5bcc6f9c700b58a658c27a7bc9c255d33734ad76b6eb16e93b156b1e4d22ae661263619935caab44a0e312a6a31c6e83f87648ccbbba32c85aaf80cc4f108dfd3f768c9e5654c0eb99c524a3913e4f4fe6e85a0b9d1729553077540bd1a3d3f57618a65c67fb3533a0aa3af566d49e8e0166b10e17ef465a56a56745fbdfcece32cae76a67b784bcfcf527a25f3c33aada22fc863421eed052c8296cbcf5c405e7571f9352bba14c90adfaa567dec7eaa179656b17ffd6f4e763d91f9d15fad9a966bedba17aca92f5fec622becea958c9a64b70e6b15b34b4a978c7d5b4c4a171435f0b91f15ba4c5f3733dc44e99509e425627ad6bebff3ffd6ea2f94fd5250daaf9379edd9c59d525fb645e7ff499744b164946557113a7e57af9865cc5f272e46b1509834bd9b9e4d1fbf8ebe5c48a467b233fe30de94b6336ed9c599161d771fe7f4f07068956b1b4924741f7d711b7d692330b41929e9ab575862979f16d526cd8246c8812f2a085d7671b974e832c7a840c43026d0e046679717b6d22b6f6287d8a393f46ae6870e5dbcfce50395191eb8dc9909506a672a6cc1be38b91f7d6558e8662ad01ae2352dd984eeaf90f420e450c7ec822f67f94b726d6d6274a59c0b63e0586324609d937845bca26b12afe89c744dac749d4c2a47c71fa91c9d0c15d2b8da85415420e33613a29e423f9bf65f0a36e7837e4fea69173acc3ce7227ff3b29bf23aba31877994c75f357bc845a1eaf9d0c86764436b6e7720f396b674518b24a8c1a0e3f7adba0bcdf721a2a298c310deb8c13bbd26547c7be9c1fe2ab55fba8fbeb691c7aac72d15c38eec91f49d40e3894adca9157c6782d4eb5fafdb9920fe1609df36c27b89bb7b2f59222323b3e3faa83833d17ba08f9b1b8f72d22c9302a9e7368cf4e3959776ed69a9ce0806939fe2eb83927cd07d23d808d62bd6d2abd82bf69cd4e35ec49620a3a812b912bed070e035c25fee9525a25c592289cb45423a569d22d4c18c460e7b132afcd2bec6108a45168c0a9dd09240a78cde0c49dca68db22a136382e94a2ea45a409d5ec83183e3610080f52ee411c3851f0387436fbf46d3dcafc9306574d28782dbaf05401b6535923e01c074251227499a2ad502ea241333495f11b75fab791800f0428e191c94a40da046258000c8401383ada47e8d00fc1f9117ea7ef5f6172fbc5f0de24ea36871cef7ba56cd29bd72b7c7a0f36f28da94f2639c363ecd31e4d268e79c968f901f251279633c422c16eb78bcf0147d2e747986ee855778d0b8d20298c76085817181f4d37d1e3bc263b0d62a91e86aaf361d40782184953ae45ee3b8c799cf592557f3bef874f3326df3945c0d49dfcc22800d40bf87570fc6fad2c65641251b37d017612a55abf7682cfaa5db381f4eb671eb1a5985a23f11e1ed97e972a468de46d65062c2cc9163bbe757d8d8b44d1455e8dab9d390719954a703bd2ed5aa9699b9dd3d190a32e20aa9274c74f0318a4eda0ae1e5cb4f519045901133289991492145694b694ba90c0881a24439e99c5ecdb2d148db46dac69136ee45d33e0c99214326954a5d0763027af910350fd1d00b4808887b7298190e714739b9dd639472d228e7a4b4d66c446b968d469ab671238d23953a8ed4318c2926668332321b3c9d36886a211553296f4ea5725cfe536c01be0d3448a37d3958ac4dfecd8ed4b4a956396bb34f21d72c9dea5f1570fdd0a148afbec7e1697a8a9c2273b4caff9d05c4ffebcef06f2d74f8f1a57c638f60b8fce2758f1c993b0ccda77fd16518aa98c3a4e33fdb44eb56741dbbab0eba7e7fb6b5bd7140fae91e74ddde7777479991249db3462f7f28a33ef2198d6ed9728d865edd37729e56d6592bed882a9d5c82dba41f9983911c72c88121846b68feb057d74b7ca325827b755910f7c3e540eb1e5b0d336434cddae1353d7088703b41abe4ef7056b550484e8ba4552523baafca973525bfe577ddcbd728533a3b22f726e48aa8bced77820af44a87891f623f4352c648286197baf52a521efcd3a86c9ec4e83288021636a26f79d8ddafab3c1df401caa4ba748f6e12a7adedb69b9bc4dc865f7e52c25679aa5965aa6a1ee98cee52b27cfe21fb7b7cf27beca84146697bec6845363448e3d16bb62c742afb3c37dc44502a2a1532f078ed96a6808e8688a60b4d118e05d0c0ae0dcd4faf68b4d0107569166cf9dcee543edd4bcf5b3f261faff1d6cffd5433348be64775d32bd2bfb0b8acdca6a9e1767342682e8d4fab5a869bd1f8f46afbb9b932480c97e6c75934f547fbb9ddeabc086bb42f79dacb5cedd26f1aa22f45036bcd9a7a925c4aad8986a8eb66bf6e444364ea81dc244d7ab065eae13b6a1da36fffcce473842f8d8fa9c724a5579459898e5f061e8fb58d182ba5954e2963548dc0e8eafd76b8be9da811f31dac60ca5ec152ff2c45c8030291e1c69f1b7d9e1ec45f3e954fbd4f5e8e4f737d0648df7e2242a0e4c20b3920fdf29f887c7f192cbc4a243b1038097642f7ad7e88012759743b3958b6a8c2ca9d1fb5d28c0f9da4a77451d4eaaf244627cde8d8f562975d58289871ddb2ab08b4c23a9d9c73422b57d297165170723f2ac42e20f1e76bd13b7d952ba1154e88d793c3ae14ea3c0a63a2d32009c7f768ee07dd7cd2cb3ccc771f57a967c8e3852fcd5879e8337831f3cb96be96628c31a35e927323511c8ab04ee825fd2550fdb95eeb89794eac733a1599884c4326148450a5d197d7eadcccfbfc9157fa602ca7875db14d885e72b7d7e4b6bd27b178c1e38d63e44f1710e4c197bd9be33f8ebdf01fbb7a70fcc739a5ff606c43bd8c2db9a86f0204757cfe92313e03a58d5c46e8d8e70b97cbe58af991f72e1cde0763392f781ff7b8bcefe793eacb9740adfa89fe6e4940537e0c8999466b0259ed949c11e48103afff4cfc6d26fab7d74462d134f01ff12dd834cc98fe14bf7a46e4cb6abf225c42663d9d7e7a9fc99e4e1fe330497747b9bb7b898b2195acbb9362a4bb74bd5e2e17f7bcdcdd5f2e2b2e9795d76cc93e2eee71bdb0e40001390fc9a297d6a555924babe6d7a7b05ef9e9bff81266d9c4590ab394b2d639add34e199372280ec95894d5e31b654f8e8cf590de4fde13cab8ec96efe682aea755d225adf8f4f448978f4f8f949e1e293e344bcdd2b12ed4a2063f377a140b8fa8989c04aa9c038b20111c8231e8822f088342ee3bb49f31a6afdee94d9e90fa27af1e91f8f0c658144a02c91f94fc41492cb4e7973ffc724abf96699a6691c88b7ac9e1a0dec80d269097c87cff295f32e65a31d013668290de9ff4f032c37e7a05679f7e72ec9a6a9d3ee49e4eb314f3a7d7e450af4cf6e36b7a7e948cf46532f13599de647a142afa4f293d76599bbad59ebef431a5eeedbb54bac2b55c1842bd16bf4216fdf81d64651f33af6b0fc29a29eda9fe7cf90db948e43579106551dc6b9c0bdfa33517bced5de0e0165b34b1c51826afb73779f06ed3b22b480aaed3267447e2fd64ec73a642033f8cb5ea5ba37b2c622e9af2923851f7376e4f90a32637e64051d40222150c4d2631235c48bc5870e33f71e37f5068c9efdcf89fca090732995cd3c91332bf2e81f9e91189d18379c845217ac935d92f055f6e915e22c3519867b4834e8679643e32d1ab68899037be479179183b233bcf084e5fd26b9291c82b8323f33276463e6c71fc62177d7dfeba4ccbe01cc7b215e9252c457e7b2ca56bd8877d7adce8f8c697b2e4cad8777cc6f5d7221393f553cc8fb027c5a58ff4c815d14b662fb9cc84dd9879503f9c4459f9d32a96ae9c2612e62cca5d5eae2ef574f1ebb770bd85167f0c5cb92ba1075040a10928bcb84285967f852c8806166578d1c6145e1c61a8e5dfc105b0d019d7df047918e0fac7eb43d8a54bcbaefa6a953581bcf15d72b44434b75ffd53eca2fe85c4d3478f88bf3b11f2a2ec37e4d66a67e2c9cec4df3eba92b48a1f36691567e9d2845bb374db85415dc4b890f361f269159b3c8eb58a9d4bd0164140b1ebeffd9a6673fd65111bc9c52f3f0d822cae59baed525c065ce42c7ff1b803fd70111701e14d01e2300f722cdeb7ca85bca6ffbf14009cc86b2210de941efe47099c85f3dddfbbd0824bc1bbf4f400e14db940f7fd3c38cb144574e227e6493c5dff488f5b40785330f0439c15737e44d6719d8f3caa54d77403c29be2019e1d9804546ddfaafbc117ec8e0f8497dd8e396b866f1abe59dfdf45ce52c0f77b8eb316f0fdaee3ac1a9cc5801bbedf7b9cd5a3f5387cbf03392b071c201fe47b876f21df3c7cbf1339ab87f7c15913f8a6c0055e03cf81ef80b33cc0517ef880d7790dbf07bcea355008c232603ff8b280ad00053c09581f3ce83511b03d78d06b206079f0e11e2e728005e241aff98113fbf1b18101ccc3eeb09f47b9bcb234788ebbbcc77dfcc781a0d704c0cae041afa1b13178d06bacf55aa77970a4ecc72f86c5986ce7310f47f19ad8135384b77743c0ea78d160c75947db164f6471531042769e1e28348318a394dd2385524a6b1da2c168341a691afff890368ee33812a9c8065dd7c1c05421b3c5700cc7c4c870fc50063261420926524e48681dace80997c785416d78716d6c5a05218f23fc10ea98ffd19f4d270f24f172e47c74bbfdb64be34b48736da08e1e42ab834155b0dc1d1c54a5ca6556a96c6e667055733ee2731356e535fc1954b58aab0df53e47aabf941221886104184052dc08824518a46e4ca53ed5e557d974bd6d5cb9ec9a5928956e4ce249165bb250018507251827447161148cf0a3842c64d15285379c40eaa2ec8c25b128b4396552f1c110b658961a1b838e2e0c8ac5aa169a16c59c4265f3c13684a058163a461a5acc094e3411142b6a1514419018d052a129a0134297e2fa9fa3f20f34be30068581c5cbe81e5aefc1498e7bc74101dfb8820da6608309525ca14b0b5698ad5531ba9c0075d7ab276e577639f1b9d1a65a051d8a0669621f216d97ae3fda9e5d2127e5e5be68b56b42c5b9a1e70516666ec7e1c59f60491706799104ce478c30c80b2fa60b83be48220269a91c9a7b843ae894d17b0bfaa2c7b550c2440eb264e9c1962e58600083142fe020c80b277752a1c300287e40c5075bce181a82132fc0d28600608e704b17067581061931ca5542c54b0547b4c1e48a29b0e12dc05549f79f48e92289bb5131c395832baffc2af3f0c5821782ae1cb1b982aa1014a446103aafe9865ed390d37a0df8f4fd4b2684feccbc29249d6f91a00d249b844afd2454e6933e7bc9ed009fbec6951e724134ed4b253b9de4c1566f5e90f89acd463fe908668a6e3ebcf5b30a270c726790e82e8432fa25960b83ac4471bf1ac445979b55a9a2049d9564f4fe7004a525d2df5f9d954449ab42d8aab64726d004360d477cab7a8d4fa034b2d56b5a48466d47e4a30f5b25c39708b5b055d36eec6d396b7fcd87f39bf4a59297799bfdb86d807921f3a1fd8650321fc6eb2436c0d824b069809f04e68b804d43f7b069e076e81d4a4f7aa83df5fc617c20e95bdaa1643fd2c7f89cf755247dfd47336e908bf65392e466dc0ef0673f94f59378cdc55fc14cd1c98797be7cbea48e5904112189cbefbdea27a29f6f23e92b2d117f7e7f2d09bf11a39d84a6c8cdedf6467073a32592fd4893a3d720b7d98f87bb7dbc297d5756f7ee24dbdda0fb20ec7970cea35274dfbf93648cf1bb297273e3f732d5eba464b63bfad6b2479b573e0e232c65542219049aaa570c79d060af58e6b51cbdaa2fd32bfac9a75caeff4c90faf44bef1f17f310ea3099bc18efab0ff3d5a75934b9fe3141e8a2695b8e5ec1caf998325fdf3fc67ef4eb37274436e763be4cafaafde4d3af6ff2ed4ddecc7cd2c3db7d742688fcd2cb2fd999f9334148bf3dc9e6f8ada503e101befa4d64b355f3a04724b35db5d4cad431feceed6edbdd3699bb6d39ee664bdef6a51a2fe42adc9038c3eb7c435542e27682c65fa54b1528dcfe0de6c2a02a6504a1898e0683e86050164c5cfaee7d2b9f7f0384cb617ed4c13dbc3f32815f5c3939dc4faffacf19203127c72fe480743957e600ade4e45cf97e44fe1123902827e722315ded91cc6ddbaef64459f6a3d7469e911beeb679f547a32348e6d582b012aeb49a670406cfc80d97a18ebed9d7cfa485d026a34f391d9408e14268f3f9469f7e8fde208f21f8cedfa00e6aa18e8f74996bd0c12be3733928d93103fb000275f06b3dab74fb97968194377ce11e6d6453aa942b0cd8a5b91bbcb243346d6a9072879c2aead163aa4a39e7ecb14308c6dc4e4f876935fe1fadd28187f93cfce0e0028ef045d20cbf7cb948fac61b6efca143f3c0f9e8b675c8eb8757103fba1bdf6bb5411357c3fbe3cf8fdd3f6d8df4698c6dd96f628cf1ddbda602daaca50baf2ce12384f672e1904f133c5948e2891e2b576894c2786055f670b928a59a101126e5d9a9cdb0195c7653cab344a594ae804e1ce8855778aa2882a6849638bbbbbbe55462884a1ce67c01073934ba749a7812032a3f57ec8009ef4614ef718343c90a3fd3bae69c51985c4089652e1f5c57a058018a1aa42a509bf29a2f5d4ac5aa27b89d733b0324462d927ef8c367295ae4ef1bd58d8a86a6876a694af3ae7635da2e8d2e0710f8fd38d0460e27d6a7ef437d5a2d4b0e47723f7c9c7eeedce8d2e870e2f78f3820d1d6fae56a0eb94991cbc1e1a55c0edc238f9229cc32525b6f4a034dca2782efa40e756974d97338b3df63a5af95983fbe93caa799fd3c06a18ef93310e8f7f7a17e6c6b9d548edd9e0b719af470e6d36f0ec87cea9c9c53636f7707027229a594524ad9f239e79c3dcc9694524ad9036d79e7a54adb79f1d746535c4a8b33a52cf5005bfeedc196b79470dcb67013d1c418b7c7ce691e26f228e59c544e0a856aac4334a349eb5fd8ddd4cc66a391a66d44b19c98d0d00b4808a8c8552b690bad940343554380610dec9cc329f9882edda155d2cc6f68384b5459a2071e5405c71d9e282acf12cce3e2b98299bb371e588c99995909a118b53073bb12444331463975680ea5b4663d5146a391b6410182f2c3711c890405563b28312d0c2a76a00b66a7fb6aedbad4ab746076742a64027889f5c25ed12ba3a4948aecc25ecd6babb785d17577336c4a92acb5c73fe79cee49f7624a8b1ee726bb38ca200c7481e6aa6c2e84d2a774f7f86eda68ca8de620c604d39548dca68db24aa78cf10a3c060c007821c70c0e17522da04e32312698ae44e2366d94511d9448dca68db2ba8426a44bbd7369d590d7ee314a393d4629e7a451ca392913b476c9629679734624e7a4b4d68cbbdd639493d25ab36cb4d15ab36c34d26a968d469ab6653f236dab72b99febeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee96b9fdad6aef8695c4efcf51c759c7175ddae2eeeeee5edae2a52deeeeeebec5bd8b78517bd16d4b849544ee32347e1c7f7e2530523a042c21cb34add22963860411a60b58982e80a2bbddd9d3018a55a86148cd8c394475a4106394d20b9417a5b456d6f1893a53ec2441a514d30b18e6a7b9c61d2d5cc70b8c06451906cdf202537777777777376ddff981f11b689afbec6851fbb473831bb8bb0f75ba1344870411fbe1b403bb74c84e1832e683951d324a52c4c2a8d30c4d0e65510a5974bfa914ca6bf69c73ce39e7a453481a79badc492246970ff3c22b3b3c232117cc292514b5638c3ccc29249df3ce196b9d73ce39eb9c73ce39a7cbcacd2ebca20384f985c6cccc51ee6599274de21276d6e86e771c4f7ce24e1729e59c5d76dea8b56623a80509ee899627b0d41524a21cc185531c4952fc0917f727aefe8f06092bb4d2462291481c4ee949977b05892094a8d03a3368346fd4e9784d3bb4af79ddea749c056da7d3e9a8608d3edd92ddaaef5ecde1ac461f1f9fa9bf39d5a75b235b2a7de9be4e27e7c64ea75759f637b33ab714bb6d65726a4b34ae1c81058e5b5b0503c3458d9015575003a6860d66106540e4746709b2c2baa3ce103050420c2a4338f80151ab63cf6d266eef90715bba7b1fd18d01243851460caa20a3055a5a1d83dbbdc373bb69fbce1ad4b3b9d36524272cf3275eda70828d23983002144df0a4b8dc7963933d623f5c3834a19472312512248f437ea095524aa91697ca215136bfb447b5311c7e504ae913980f6ea490da35c30e29a5063cb8b1429b919bd2297df4fc7008ddf911258b173b60438b2e80d0a2518a4baf3c01ba540708974a9b05211b128b31c1c20fb638e1c6501b4cb8716a7283213f0ce911842b7645a7c9ad175e4102cbfda02be5a53d15639436b7bbe723c0081aec553f0f0db60d5de97496cbd8ffc9404fd9d02b08a10d3adf8affd1f07f1d5335c4ffbe833ce8c3cfb24a5b4917113b3ee12b227e870190bc8e219e0047bec6c81f2001f5268004ffd5cb4388ffbacbc3062b83003e00aa22afc308de013f1e4280c847c07b86e1856fbe0df0f1ec72168ee714c79c85f3fcd5fb80870f78f85f7783f8af5e093c944008fe07103c5b20c6f43025eedf59db3b0b03cf1af80c6ca003b5eb52a97f15100f2b112924f64bfd10f67bd5117b63c47e37b01258efa924b05f15c27e1d178dc0758bd8e6216263b7736e8b2008fbd50e01082c4b0108f8fe02a406f0df779796020c068437e5860fa2a37022a612800c1f830ec7640b086f4a8f1fe22ccf711faf099d26a8148eb64539746a46000000284315000020100a07842291602c4d635dd41d14000c7390466c60369687c32806511404216318310600600020c490999919b2490080cec5ad2de1c9185e5d03b8aa9dd3f9f4051d24a79b6468976a837eb91802f8c319e0f33da9992e8313076a6b92d5c7796e6ce8472ee1b46caed19dcf740179b04753c04256d2346dbb721c8491798740865ee7cc0ad251af3022ea92eb25de72a84e1eb3242ed6b3a5052b80d5ac7bbd5b02f282d731e2347e07e11bf0035810e539b202f2c7833a6c39a2f7dc6c750021a14a4ff449d5918c3cf7bbedf977d9a8910bbdf00b1443c886ecc201b7048960c57272bb7a6c57f440c82263819478348cdf83c97be3bae906c3e6038c0b3558323033aaffbd060f432a637998f0a37b40739b38daf8a76dadd61fd028a819f918cff0a87301223beb4a6bc5fd22bf50269cad688d952abe726a9de163ae8deb72329ef2d73d4023dbafb11af001e556bea3447c4cdb7c5504de5ec7035d6597e0eb3a142a9ec77fc22448d5e6bbf12bf651084ca528d053bd81f187521b8834e577473d388864708dd02212ff5c3341e7f3a90ce5b4d456f5ab163343c8c4a0b60ce8e8813770a0e0a50bf0e4e54b33a7477f53881e965f0e62d87ffa3d862ccda7aa2da7672695c5f7e0ffd13077bad224642ced9e66b2b4faa17113f20a92fb7b8f207f6803dab4b38a166e9cd8d3e82ea21116bd173f7d8cb60a748dc67ff738acfe9aba63c0ddcc8d9b59d92fca5a17ba6b71d3b94965088e38c578c41cce2f795841a86103ca3d86cfc5a9716275b71dce5092e219104da75ab1f930099bedbee74c30fe10995ce476cb611ce11e7114638f48f3446efee0688eacc339ae906a05168170e1daa3fd8ac2265403dab2f1b97497a89ef46913680f6bf66a8ffb4802c361d01f700e2998a731def42b914f2bca6096208ebc06343fc4ca0f0ca9e0d3b6079e6e186b5adc6cf85945026a33b93deefe4be7e0787742fa2dd2c588e9c96304e9c417d94e15f92df6e7b1b9fbaa8845c27398a7268191a2badec89b2521be1a9021e381584be23aa6d365c2e0792498c7ab35069c05fecad80ed068ac1796f6683c3414fe78a96471f97aac6d459529259e135ff97ae0b8939eeed0f9343b7c822876825cbe1e983cd348c73971a5a6bea9873ad7fb9baf87fadee9f13e6d84ded9f4a3ddd96253a340ed98e31ccfc25e9931194bdfc23ac0e5f85bcac9ecf6305b7b376cb70a059373404bf973934b40909d71038d296d34dffb95afc7d1021744804fde2f5bd8cf087bc3565daec253803dae46161c3e628e23db01a43641583652dd3febb47ac19799e180cdff2e57a37a3247200d40c76418736dd8af9247dd2eba94661190e9886a9406346f272e06426e3cdbf17db7d7ff213f0edd8235c0606a03b7dc9979c318803900306e00b836bbc6539c542f2637912b26bbdfeb654f49e7d89606787ca897bafbc647c50455e446d20bc3cb53038f27d490a3ccba492c1d1772816df1ae7bf38577becf2fc9c79a5e52ca4e78348b77d1869107210632bcc0b08d64ce3950a381236db8b4a1fdc3d56b66ab01cf9bc8fda158e83641cefdb5aa69acb9740aea64f7ee7a72f74ef865f1beec2ed3260470e9f1a840aa3ac6dd4a3e59ceda4cbd91a452d815a56f9a6fec2d888e38f6d7aa06f866f3e3a746ced877a210feb22dc05e3718dab298fb8ba0b99f12210fcc6d4ec431bdf8101c73eb1fee534afef985d1ef66ad6ebc2b621b5363029fd1a159e8c4ca6b29f697dfa3ad88b5b868342a621a91586f691a6f8af8360e5dd48ed961b53b8a62560901ced7092252c4066b402e147096bf06708a3d39914086a38bd187a0eb325590afc15e3011585d34a7014ce9b3ff7189cf40d7ef85d643795d58ee2f1c218226f991049a08d55a1009a8cf850d4aada7156f1b785ab3d6d5c011ca77c025512b4c53fe5f97fdeaaec888a43eedc9b5b25ad36190ca0f38712dcd841260b7085ff6ab6196c2d2b2ec3bda9e531577bb2c6feee85d145ae81207affdd2701ff6f797c5b2a2219fce29cbcb4a1172dd101d17992710188487b6afd9384d570e340a4d9bad2152cd24b9152ea5f0425ab2c9f48714a97ff6e889604c988e16ccce8ed0bf3ecd6d032931a055cba285abb1c2428e7e2f4ee94936491a26726625ef0d32431722c1e45b8e396621b8a3707c0bf7e79c0c8c2f2c71c382870ca38e42a6952c54867fbc346856d99d677ac9866610ffcdd2d7d96ed6ff6584029caade7fbcd3900a1e211a84619ceaba710c17fb2258246913315e854921bc48cf0248cd5389dae04f8172df4da4e64fa589ce6d2294fedccc8493806a4e819aafcce25e8750fbe2814cfe25173157b0af11120b013daacc0ff42dae37cdbd686df60865dd46b461db99a6373c0fcac3c2ba5dd711513c1c9708abe178d15f96b281d81b5239498d1b8e077ddf72eb85e37851b9dd494ceae1ea6c078af4b4e2350ba7c852a99a1872a8962341485728a7c278b0601b1c1e13c5abcfead4b20c737dd8a9b9dcb7b2717a6946469264950dbf0ff9b322141393aa1511f844ee5c9f2bb01295669b423a1715a5d7145670cbd0a1553d473021e6245e371651bf91a5a4d675e9140376563cf222396b52b870524804787fc41b477b77dabbb220ea11254ba128ebdf3f7a3ccdffbea5f26942e7d9649bcef03d70d30e3237a18222fa4a25d2acd847f423484f0caa560eeee8b308e6997c4324d8e2c92c07a7a5c08b49c1d90824ef22ea8480299f4c5353d4e904ea8ff8653033e2d7c386d4fc1d931e72eb9beaa2bdaaba959fab2e750d9ca4c51a653feb27b9c507ff3e0fdd28f00fb63bb43854636be0655996f2ef1af3473c0f46da24b614cc6412f8f1ca4089d897cbe93f96f5fe6e8c13650b1a10cc7ec27be2200a949d894249e75150e0284a8a3b4543240537e1f27765a76faf462bdb8d6ddb9a132547a3a6c04174143a1d8d320ed1a5d8493494398d3e0527a20d8ace9b38a86a444c91be5cef862fe07257f91c8e52675153c2398a14b0052dc8aee104c7a5b177caeaba0a0ea1d3f15091c97c514f07444c4bb40ace11fda233a0dd47294e0ba35f2c94dec1154d06663d84519403f1b286bad779942b56f8e25245dc002ef33d0580942488dfbc2a5e47cdf39c244af19609006dc6925171ea52049905fd1e8a9d216299d0a82b0bfe0e48dbd69f36ee227100b0e12360510f25786955af7ee2b8978387de33d1b2ebefd223c954340eddd516c3972aaa44e5e30354b4c0af442c729db0d3c0ea3127009a08c174e64d121b8e9fd62fddab0b13098b1a4383a13c6cfe95751bee706fe1a0b2dc649b9315777c1ffea1063c15aa371abce6d63427a87df36b63a3572a898a8425727a8262c7cda32eba99531719c6bf0895e7642bab37c77788f360c54013c01940a5c21ba7f9fa1f10802167a1dfb995f52fc4979c358c1752ea82cf3f8cf0d267efa45e57358a0034f82a3d54ef48110e96c48c82f7a584d034710df4d6793c1feea0934f265c618f14a809ace5a6211eb1e5fb4309adaf99c90c064e96f8edcda1a4f62101032b49f8f6e25050fb9083839325787b7328aa7dc8c0c04b12bebc38a6542554b5baa9d32c4a37909a73ebfe4858d0b256a3c3904799b971779e31499ef8620e53ca10829d3a3ca3206360da6fc0fd4575fe73f46b8681b0bde36a644a92fd1ea97d03ad2dc2172cbedfb963f40178d84fb1616a6cee3044d13ddc467fc012951402ca7be5b469c0b708aa364915b498ffa085c89959a18de519300299575f5e4e15e20d061a576e55def012ea0dfc6ab47d36f06ab0432aa7328f74e1b7f4607b13144ca3efbd6cd6d37762d9aac3c56cf4856e1e78f3c00d06df96845513f2dc1df54837a8e513fa5b1162614d847e5a269f0927aa97c3aee14126caee4a1a062972587cb4bc3f79b5e73db8d206608ad2b1c832cb9c9e54c5251966174eca29ffdf984c00199c53b1d34f7ebe3f49a21083c7d888d938e393f144f924d0546c111b7b811546b64b2a720348d86e39385bb9752b547e3e63186476f75acf2daa10f06f05785c364e1b05244d7a9e012fcd10ef274e9fecf82707843c63ea0ffd4013f75067b0b006ee01718facf629bb5918e76abc09400b79796607e4ee582f9b5ab5bde1aafe0023b22459633a0fa908134c1340544888d2c27e0e609b100b2e0ad561797662763ca5b0b0a1b839c0f14c053e02f828750edd763339f18444761e98ea5c4a8753e342dfe4030bb2f9e509605c5b9922d32f5db205ad56775202c2c3f48a9035325eda27671c15180ac2d1c8ea27c851e5f527f1b0f787797b5e25e9f490c86f3afc99cff08ecfe1d10c19491231d5270130d28533e264ddd926833362278a55a473c8801bae6048b825c48041be29b4842e40acc2e621bc60e8b381e640ef02a56ea2ddb58113b0e82d966eae58b0d359d30d2d03c3236e32135d71799b5dad8b56d55d47d1ab105c6033d8e9eaab5cd727044be02ba6d5a99cff8bca554646d5098823e8e7e03bca5c029d53590aed76dce58382b122ea9509fcc469733d159bee8efb7f637312180544222f537540ca570d128a50913d3e6473875cf25d4eebbc037639ffa716abcf0fcf590da0718dafd578e4b9a371907519306c2d3b4868b0a1f942b08592fca6a1e3f3c0f44b2d2806d9b33577512c5d6cf5d31550203d1bae571ae289f35ab622da53d7a33dfb344eb9679fe1b300ab9a88f799f7be933f8c1b24d651cfb17c2c45ae269d56a620c69b09a782b1890946e5ea450b78a94aaba6806bd6355d2109a6059088909d9a898d40b52d8637c49525c494c0ed95db308383eda0dc749286a53c9c90f843cb8778ca86982c883d4d70917d962f746f781b1cae9bbea3289ff8950c40d51a4220de946c497885e739e393d1d027a1f5c59e65a330308b843a639c231dee7a0f526c815b236701927090447021e094a21f8ffef7aabcb5b1f03418e3fb98d03233a845a0430f1b321b14b341336b710f20362c0400ea831e11c9004ed5113d4320b390075d9da6f275c44ea620dffdbb940c59e12c3061d1b12193fa159a02c548f3e1232ea5114eba508410d7d8baf9db34e9e282d1536f33d59b6ac5d028021cf7c2e87f8cbd404954dcdde1e78e52a6926f8ecbe51ea297e36611db25a14f039132ac00005995d3eda359aa78aae619be32a41cc3a84952eb414c2e7a68a1bee34893946bfa1ec4a41b8a25eea8db814dc7455678ac9c46c0d383dddd80fd85d4811212bdb0a45aff9baee742dc34a4009977e694f9e54ea500dc742224c3efbeaa31e62e601e480e2aea818017a0a07c98dc1e5b6bae7d66577f7a5ab242666315d1c5387aaa62b6bc44a077b75b9041a1c98f904a3f5aa88ddb3027d288d3e5d40835070b50d7db3be94916728219820a5a15a4174fca3bc68ece03044a1fa39bb043d3bd22c4f3cf44298b589a34765c8cb2602920ba5465d18b4ed83bc2eb26fc89f5a56511e935f047c2e55f302ca0b42f53054e9285a685b64a4747504b461e9e98a8ca623db54eed5d057258125a608b53dcb4f6af52d9c22e191ac12ab850feeb48eb70225b2a09fae3c32c2d14356ff6f6f924730149134aca451a21e49386b55c50294272d6d71754903b09e36b428f99fca796271fd7915a51a8918158f9052f78b2870cfa6fd1f7f085c590f25017ccbc220cd43d06ac2034ec049dc0059c6c707852cbdba0ebf6a72ae9c0d3b9a4b987e63883e0026fc0600ad821662c4fc6a7c4addd92015900ce2648778618ab5dd0db05ad13d44c8622cba033403295b33c7b9229ca95f075743b3d932511541e433409f422c6ff03210676a786660c6686d2c900404a855df0b2144cc6348afe868b8c352da89d586a10cf2f2f90a0fb6e1a49638af84122707a3acb843e984d140d903213ea0b3fc0eca3841d5448b075bbf8dc4a7018d5f9577573d88b6b6b2d23484d8d4f7818ffae41837be123691b05f4a03423d43922eb5d8ffea4ed07be185ac39f94afa3af6fb1c3feb7664d0b3bac50b365ba523461fa3a4af6d26521164e16c092b4d9f10d537ddf0fda0350879415d1375c70a1df4ab91bbed9db1b4a2d6d1a0552b20c8d298b0d4f89840332b4599e6d4aeb24869e344221e1836fe8f058786af8a34fce8540d1048c23538c59013a0da5239cca1e8d540edd33668a95977d4ebdf50e288c6208b2eb190f33f31ec99110a50d7b284b6cc743e7aab658a3e2c13b40f682725c30d9d9fa925c3f2b67923deb86231c5402f5cdf98b4be58199e0525066fa30ee1d147afd93274c2dba824332876102828457cd27a8fbbe36c9e964f339c02b761dc30567dd42cf69c3d1609383a1a9243ada8e9b6e92815e0df8e39b0bd1e7d79d387a11b9faafa04d3d9f982cb348ce834aa889a8949c12cc49293c3a1afb8346955422075b5f8287e56bf06af1fa171fb833035831e7309920fdc7a70c90158e22a17ef7b6378caee053189f6c412da0d0514a300eb3b395c2c2328b75f96ad1954c30700b741c176f76235f74233b0a8f7d1033c66e751ab1884c7aa056a6189e200d97a9723e93fde31623daf5013a9202f39001cba902e3d7e15368456fdc3d5f29f9e27b0a7d6a992a6562798fd7e8d2cb4f02edd24d51d15c4e46a53d2863ee3a6b12bcd21410537aef42cce1de39b404b9daa5e5929416d29fbfc3666588374c2ccfcf7e9f777fa65823beac50abb083902ff70b9e31325aed1f707b1c953f770636d43688f75a8a78dafe6caa4125806531f495aebc20f599c6524a1d4c42a0a2419ebea8ecc44385c4beed17ea6940fe5c7030a9f0422b1f1c1b12a7fa26b3ff1078a1c8939d246607b480b57c6fc788ad92a0fb6f2864dfe7703524d51c169094fe7d4dc1c859559a742ea582644225b1382d8a31232475cce7da12258540e11ce2a1c2aaf6b0cd026c655e532a6573ae5a3698c4a34fc72682ca5a695bf0e8f47048a5ba87598784564c84953c977e8d216f449f186bdde2c5fe143c007800a81f71fd87dbf8b4e3100d738bf3a233317d85f10597173530ccac780e748b0a83f38094b98ae29b3ccb86bb6a6e95389b9c434c09629830720d094421cf8a20d572836e1b9c8e5902fe08c4128f039fd886dba9c35a4bfd950c3a7234f06ec1bda539486a8389e505e2396f333a8d426da6634d5f66163b2be0b87034282100530235a52562948520002fe53484ab9c17785d3d69693db823d447dd54beaf6165a8be44f70167b98c2923e2359727d4dce4e44c56c7aeae9a19ad70281b36c7a4c0d5feb91e1d600cbdb42a10c733457898130dde70df460591ff9c721816ee2b1af5eac8bfb71286a50d6cc4d404ab8182d8fdad943bb20784455b32909cafe1d1d7babc1ffcdab049cea29ded5b6c91da739493d9d74c2c1806a5b7892715f92b54e6c2007e299e881825756b531b0df23b0ec7b779f93f6e6e37bfadd0599d12b9e4e56255b8ae531c1c2440e1ac9a802a48b0576322dcc1375a8d4af104f012ea1c98270a5accac695fa9baa70f698d99cfab51a8189694809befefeb3c6125df3b4b9e581108e647f2579ea8ad2abef18ba1364375d1aee62b4fa83c45a41742e2cf34a4a3ccdcd859ee598a4ddbf6cf255c1573c31a8544db50275faab9c7425601a0b7815391279ba9f110e069ca1235a665d3a5a723bbb16cb49f6968fe1e8f276ca75b77f57abe363d803c5dabbabe880046ccb5a36282a2b3ca2ed7279e719e41cdf52b3acbce5e49e05318a6b8dc4d4c86ec921a26e8bc194fccca1e8a1c337cd440189175891bf3912704614565bc68391c9240f358e9b91257b579753e90381007e2410c3771228185065b31cc49a92d2dc7ef29f602c22578eb4023d7c43b96efaad17d66c0d3fa73e86a8338eb85a4fd3541cd2367dce7ec2845a5de826dffdc7cb0462faae158a2b189a291a3a201a02b7308b5d0548435996cab701f01ac7db8b3381d1be141b6e5777ce40011ad8a353c9d4c6150fbe599660802ec426ada240c6c539e85b50d6cb1c72347a6db0802b7837252fd584e40b824df50660ac1f9a6c87eb48682da29ce84347a18f67850cad25b13012bda4472e6c9da432c6bfb3bee0890608d0723affe9d718ad037416c29e7ce175b39f12664373a102e6ee30f0e189a71d8fb6db7297c51657b022232bc983ea31313d2f561aa603c48e601d9dba7b9f7a24bccd47b28d77c2610810bf5a98b917c49813260570a6d5f1c164da0136ed88cdc70ecc3e73e1e4854bf8f93b17c22537a568edb633db37b5001870d0b808996404d15248dd5ec0bc0810fcacc3a51be05665dea45e852a7ea1850eeccdb23d531b8beadcd67210a7a4d263ac26ae2b23d288a3691f27dc04ea41213e6684c940d7b833869676096ba3740ebdf08d90e95f9b5c668efe3dc7dfd33c9ab0eac844d4cbb0005e89e828185d70de64df989198d1e90b52db075e5720b9f3959a6b5e5e61471b811bc8856b4ce496982ee8ca484be62e3e146694faa41b89c4c88049411a1aeb9bdc446891d3686d885fade728ab59f4e5f21ea836d0a9d5b34d69140bd3e384dc6f06a0dcb84084909eb83a5a07100e6dab646a0f0cd3882d7a6de2c6159c8474ae9e3bd21210733d389c946665993ec6626188403ca0052a230358995557e8a9e92d771aa9137ceed75c35a6c9bf6d74a9bb27c42b42d50b04fd263c0422b17d99e3be79b646a6fa7c9078410143494c2d6038246246afd73e8d7095648e9e5358480a872ad105f3320562f0934d3979835b2b1b524c8f11c8c93eb47a965b356ac5a0d42b564641439ea211da2d312a3a12edd865db4ded7a1582d21f498ddcc2a808c0c230098b00a7674aa8ba73615f8cfaf4dd87afc0fd4b42aafbdd6d869badccc15b8d435ecbf6f20afe2f07e6c043c71ace7cd2764cc03cd5a5f570fc20b1fd28fdc097ba16d57272fbac92fc793820b5259e28432b94facfafd942718bb410c53d67c82c0f3c0d38328c157b161588ae800aa52bf1cf1f6043a5c5829d1d8ab01c19fcadb08a6213fd044a1ef0835be2cfa5092047dcc9da650f329f0837af42387e6c8c9fe79da939b5efc27bce4948cc5423b82854f75b6514ddbefd9020718c8823e4d5c2f5209aece7751ff58f2603e3031cae87decaaa4e1613ee63205a4160b3bd8e061d8fafcac30535a49a82f604a4cc729d67d6822da51d29fed99e24051b27cf5e3d7d1ebeeb160092a170de563c58ae84dc72adb340901b851a50e6dce81c8aee6dac767d91b530f2bed60780216c2e683ded83fac845d7f0bc3136442b5647975159673805ad3474dd317f0502b5cd252bb400d7541b7f75d0dbecf086d3b7dc26f0fc2adb99475db435a74d3f06956b9a56ca11f89f6c28551ea2c6a8aa0a3f3b6b1f48fdd4dbfd2aa009d529de70a88786fadf8523b30d8209ff5efb4df4ddc5dbe93deddf0ffb644f933199b2867aef0fa90e0e980ddd95c3e57daeeef87fb54e472a74ff502e9f50270ab69901363c877c50108f7173ec8e1ef7d5de597a2742c3d7125ea20478e35fa385f2fe502f60087f043655d4cf87ff037d59de8fd6ae45bca7ea8dcf5d2c6fe964748ff8486e98ec02db8619506b1dca8d598db46c36e23943502556f2451fe51244e5c118ff5aab1d4538f63d969ac7f869e74b0fb0e8ba873ebb61a4de90e8aa8fe67e04a6696399af6ff7ce1c47ef336778107ea35da4b6d24bf8ccdc7661d9b2a845d26d3e68ba28ce627d05c8819bcf484a5b651bb99facb92c1ad2aa3fb7bf4e14b2d7704ef11781a63f881b6badc7fddcceb9f4f72eb108dbd4cbd88715f34101089ab0809ca1a14cf81a13ae4cbea98ff801a7ed30c0846bde22c0feb831cf42524a73884c26266c82d403860c8111ff6283cf8238a2d53a91da4901d38e99ea62b6c7aa7d81936790086d01edab915141e4499fb76b2681dd56357fc31ef8178565de0b7e6d827f31a7f92ba9d89948dfb1f02664d6a97fd1a942a34e7a642947eef5e94694d18f7a85130427782309dc289ab59bed42914616fb007b158eddc549a88b56fe199710da65ee27276b37dbcaac81c4e8d7427c36e3dcd8415ecce4549a096a41f7093c3bc8346071ef1940c554bc5e77c1f1f42b520a0b0454598354400786590ffd554ce6960d6f8ee8ed6a04705e3f67d0badbade242c0691830a7a7bb00626fc28c8426520edbca7a347ca15e04dd85ed29ae74a86c34f1804b520f57b15fce98ad0951d70fdfbc28a022b1b3da95df4ef9d1b952eebc6edce20e0ba29f02ae967b9642db68a2503224e7f5c6aed736ba212bd5377313989fdfc6b91ecf4a9399af9dfc5ca0e37bf9d21d8f1fb9aa8ad40e3d1460aaad6ca8544a8c35e04be782bc7f07ebd9ba03ab3676d42ee16acead0549299d40f8b20909731a33b413e2169137c15254dd6199695f1265cf5190142f568f35bff42ac5a16c7143286a4eabbf440ea0ab479e1113df208885d6f0e26ab8ac72a136c06d35af11a69e7919f61ed5e3754a01ded56f1b71652e791d3ae03e67deb620ff4f2a69bcfebccb5d327c174bbd5ec3e5e8b5acd833d1b6bb731a0c542cb8441d7aaf1f2cc96f8420ed3bc098854651cdb9c7183c71c3fbd2b3e1926e3a4631c5a1e031fb07ef18d58b8a8d38c5a61a26851fdc38bc0adbb619604cb3ed5a374f73504e7f62cf508e89cbc465c051cabf7c1e9a42d3f07b402e343b01253370e40bc26baf13b318b243514415d9c54f09ce1a8b5e5e4c4b7ad7c14e921f43c9135b8fad1ff37d19559b02e42baa459111b49f41fb4d2db8e2e8ea8feff3cec3dc73896ac119c1f4232fd80ea14b066ba7d83e8c3e7ee01d0637d8d651502999b95d96b4c7b3e6737889560295b911bd59e109da786a60f3efe063b4740beec83017bcc30286b025ca9ec98f64c87187e36a73c3f05391e6123f517865b790b55a233133ef1f52b297488443ad7ec7f50ecb150ca97a0bc8c08ca163b8a42fc8a1176769e85dfa0e62222900ef5b64c3305977571c5e0b9b5dd503d439f395d87002eb0a208f7fdde0fb953975e2d2549121f638906b3c076fd8308d4914bfa4a46134215ff12223dd9ed41d701481e81f4b386dd1e0bac428b62ca7379fb3a0adff34b05cc9e3509889f7309a2f72829aa92a315ab809f6f363cd24593febebfad57893955f2fd06717e754c492dbc53ccf795bc890db8c09fca03f95cc120a547cecf743b19b18d650a696d7138210e349f6316f738c4bba2a68da67886e91c4d12edb9b98e4eacbe824658ca2fd2b0a3cc08f00098e952993b15736e4ae9c80093a5e008fa849fd8fcc1937b1fffd8af510d158bdb4867cde26da00f1f7a4ce31431e72a01f8120d3aab4a91396115853e3f3df55783d98ea5fa70d8063a618ab22d13db0c0674d5aa51559760ebda9fdbffa15199a2e25f4fdb93f1e603e8217c74b0d5426fab42e84998825a579530d59b5865822c219ae159234a1696b94664a360525c741125d38efa8cada0eda8245969ee3ec50938ab16085e3a4ac1b9b79d8ba1ed57bc95e052e19f60bccde302c5a1578a2b52b573cf92e677994f3a9f949904c68bbbd2a92446513587a6f8d456c05973418de9c90c846e285d493f1568d6b5c9964e368dfa61d333f8d110affa1085dffd7ae9836c9ada8b6fb4c3a8315181b4a426b419e6a87407e181c60845ff5fd68300a72febe8e6edae5bb0bea5de81a88cedb29e426b43419d1897c5a4437aa759a527eeb01409fc990b964da1edc58d4e0a2f6431dd96b075b2155befd3aaebe218ba16453464f719048592c691cd21579abde970de3e8f41552c96e303acc5a17423f1aa72c729493a3933ea032cb8ee1607cfbe4ba5a7f9d23ac4a882764bc6d8178cc262c06b176a346ddb5178f19ed6be1afc077d01a3fd2b282e3d304ba1361d8698be88f6614c06f3be4a1e50941e873b74e56568244c183916ebd20e4e869884dc1beea3875e185952af88d68633968da70720feeff8330fbab5712c7487ef713c97499cb4066c138d69fe96be943cac487fc459fb9905b91d00bc04e95ae1f9f2da3d14a31bae70cc957524ac5bef71c294f8559e2cb95fdce8f711a5e0aab1835dfe2ec35f72e112eff1c8ebbcb46831dffe3730171334c1290e226964d21792caad23350012592d861237802f0cf8e590bb89d45087b8881f346951495b45cd89d669e0749cca4ef545423e528a63a46b6a4ab102b92ae98680ac970b522c60e863451d9d2645611c6eca416e53dd39b9478602908b69f4953472a3086a876f109b88f362db3828612947c4f2fc13e89425202fd7164883858e90f133465092df974ac9c00c7fc514c1c317ecaefa68c28f07860d84131c21537a4b5884bdee6d10eafe83c98698b2a1909bda07cc99f88016bed46d65e701b5133a88213639fd484fdc55bab22b0a425a251c95b0c597feb81f0d68f3292ba5a94e36639b82d46266a4cba4b5bed22164561c934db1e53aae96cf2a7fada73a0bf16beed60fbe26f63aca411390f3d0f48ffab510b965bf3eb20fc5bdd16f2bce4fcb35054dddfec16a6efe91297399ed41fac2b56a411810bb0f5ce4fc910ded1f2dd2b2543339d2d070f50d1d79ff457ccd72a79231f9897f1cd59d830c208128f48a5b46af0f89df8721c30277e84057cd3b1130857cdb58e01f2bae3e5d2187443b9d8e9bbb786bfc7249247dc0e223719163e70ed529a4964073021558c72310a921598160811a08033edc61ef99eda8cb89229f4b4482fdac4dcd984a0927099707913ed1f1ef49c7da639cd8ec1e1eaa217a03abfa28c575286e3761e7f0550e4c4e5f993118f0df7804c6ef6524c7eb84c078fa3eb370c1f6641a14e6044d18b734464ef26c014ceaaed05e0334a046d0910e661a20307c79aa41a835dcc2df6ca83abe00a38dece568ba05f92529bb06c386efc65115556eab68463b063a894a3b636355feb49b20753352455fdf22335257fec41ac3edfec3e9822740fe5362431af5f3d2189025a49a15c9e98707dfc7874dcd4e26bd783cc0c79196e71c124e62afbdad5760c81de12c2fc586021de7b6fdd5c264c0e0ff881ed2a761fc31e28894de8a48a78bd3f8f7a7eacb0e912dc62773ca0ece9378eec9fcbdc3bd97a8ba10063d392135ea4f38123cadc067f5985331b7b0accbb49bde66b8e2ff9eb6f88bb67078657eb8e1ec97df93512a1e84fafaeca3b6079ea9e01bd2f2a43f5935d061e77fc032872538d1307a55756511734657ca3911259a89d501d2a7c32c786fb1299d412c2049856bb3b7484e0702cde5575eca845fcf7269a054773b1c808f7878b01f741f09b841e22b29ade50b80268b580d8431d4577d7b0132af7710232fa43823b60f4e8211e305987db36215cc038721240cafaef959d810b92059aacbfb97de56b4559cb071a31be6385af8ba1c5b1040302a58a62320137cab76fb1646c54103f7f3c38854ede1ef0930606e7d2a18c060a85fe8961cc8315f88dc773653432198564e5f482d4380f90b13dc5bea1efe17fe668b181d0aedc2e7bf4028c163ff02a6f89c17d0d83c41726c1d33bed017833842002a26e4af913b9a53b23f3f5ccc88f67853235587e84e2b953afef2aece77da46dc9acf77875139559faddd32bea2dad75198b6ddedf468c9a27b489fa0a58b4190c4f753358c3f2d637e492b229cc90d83709e1b73b5e101c25caa94f630ce1af711412f07e8fb23421d140f2db1ee671d67d0f72a5f1862a1bad47ca208138d24af13d9922c4b968177d29c07446b173a2debd46a7be2b0fb9f6a0baf7438f4a6ea7de2fc47b009a723cc420e74b8ad28cbdcc6c014d400c2cefbcf60392dce7d6e304282477e742f5b5a1420eb0ae7b1b1935b3464e4efaafd837f7e75db5f0efc8bbe0fec4f58c55ea0576739475a6b782f9f59d407baa7e66db325e9d3586d23f61722dd90f37ba36a69857f5f6d5ba7052bfae8e92a10a2ae952eefbe00fba3333303a45045e0172cdae4360493b61bb491140eaad0c1e56127687b146cae122ddb0247df7050e34fa9c0869e46d7624d3992dad6a00e268be6666ad25241f1736f32e773fda12dbe6e6f949720d8bcb2fa212a1639fad4cd708e13cc53992235d5a8117a2f15b12d4ce953674c9f02090392cf9acd70aad7c42d4b9f7a18f3fb653b9f432c9068e1dbb410c160f2531c810a10f3f8c30ab69c361c2920ce4f2edb6756589fa95b0452846b9f6761c75df8742ff31be5bacb25e4eda2eeeb73cf3855edafd18f6cac459aa1de7bc6bd80800abeaef1888f02bc37c923d8fd3c5265973b8860004d9baff046da0b81dac7609f9e9c4323f5410102da2d92f19a032aacc168f3306878beadeab08d521c038a584edbe56a2babdf0bbdcd81786b850cf86475eeec441657f42881f012227a173bdff7d66450791cfa048fea3cc1c695ea76d046383dc2fa1666e1b79a5803d0a9785c683e71bc1139d2155e2ea81b56fe16b40c4e0b978c3df2f73c6450a0208291060b76ce87eeb4ce88c499b534f84c3a081ed72634109aeb17d0b54ee80027c3114e83602ef8b5a3aa4f073a0612e853c0b02f41a6adfa0f1f28a7dee918ed54de799dd26853902e4d6fd615e4de903b7de71fcee4e7eaa97df1b21624cad4a69b7a2d0dce442b28943d4f23810e9135a2ece6d67f726870b52cf156b9e2574329e295c1eb65564d8942742928e6f0e65f4a9540098aa2a0ffe4b91737184eddfa6a301c1dc8720a3cde2374a67ec9b9fc41adf70f747fa451842d1ec3e55b04f5a8dd72255e131ee87c2912660a70cd3a5f45eba24d57d1008594a49662891da1ab6b405c8f45293052301d3d9e40c88bb4e2a1c7a37461ef956d5af2da3ab9bfec3d6ed3ac5563cf227edf93c9dde6a0e3d6d561c2fbede6079d2f8c915f1c63c6bf340fcc221a399a696eaa5bad028c2ceaf9ee1593f3add5d8fa80d6ced003b877c43dd898bf6b348bb9a01a231063924e4ab43af2360ef8eec5cc1ad78d8021917088d8e90e3b2b6a3ab5cb7d7a327e5119e4e8e70efcea520427e73a03090c7031363cf726167c8ec80cf21d0ecbf87f9b224ff2f98ccf571e8b3162f1ad26eaed3e64870bb00ca2021e1a28e76b5089e017fc9418364b04434d1fe76520cd92e138f41e060a22c7c82ab98c215225824335d3c591fc726ad097d2746ed92dffa96e44263fcfae64fbc02d5b042bc2f841bc707bdc43a2feef98c642d629497492ffbd5bed46ff6a99bd8b88163a82501907af21a933bbb2e1a0af0730dc1470d876d4e11c98de0abc364dc284d71a5a7d4b9313e70303382521e981804efb51e0a24f0c34edf8ca5e1b1561a9287c54b033c4708d5cd77af3537584505913fbadc2bc54f78466d028c0a270a7b83f5503af31aa8b2966be156ab94e49e076549830c226c8853b121d09c407a149c5f02238c440a9c0f4ff306c0f4e55bd830f89ba3771bba0cfc9447cb0745319b488b217bcff84098005d0dcc6239c74f142aa022079b63bfa67bb549ad1025a83831b7ee042511b08370fba16fe137b71f41ba65fa404d75fef0076f1eadf2fa208da4750b9d60bee2d43cb0b6aeb851a53d73e8ff6c33717edfb43b46b8ca0735b75fcf13ff380318bc4f823ec86bf8b03bd91f05663d4bd549f9ba30a6ea9d1005826d6ee36bd4f0b595ae9cccfef5bd80ae1491cbd43f957081ab6a7ef9c61cc213630f21c598d4293d55a4eb58282bde9e73225e95b63331a3c96c294b06f124c49d5f59ed01ac2baa974f23df1d1f349e7ca903e1bc924a70f02c982fb0926bf13e15333de7c826252603fead05d69727e313532248b0dbb6c65e661161285f33960e5ca5bcae921e2f4a588eb2a0ad89a6624b7576d698a88b24add77b5c5695403bccba99d5602d5aecf63a1b3ffcebb43f9063af61753d0dc8eb83f987b05680094719830fc692f2841d741ea85a0dba626b2010e2e5466b94344153d1170bf8a7624530909a70ff70ae9ab0176e7a0a7a373dace94ae4cef7429ba2ee9100151130ab0a7357764ba250473600b4ff52b2aa944c429a4833f15044b1ef80da8fb50142f267e84068cc203ce1ea552e5dc6af8d54e2f1de128bcd5fe82757b568043be3d570a9e28e69c91e89524105221910699a05d7ca6085f5fbb163c610dcd342ae21eed6123641b2a8eaff6c5e81832fc0da5f85f94d4fdc9075b4cae5788ad4c03f85a35e2cf4429806018c6e671c1cbdbcb66f226310a7e8c7d65cc17a0e92b8ac274cb81ae6d84eb7487d270c08e9757f407f19547b602ccd96c6576fe4ba052c863dee53f92ad08feefa8dc5c9126c9b6f5d7258abbff31660548979cf61a5048fe1727f02bc3101167d19368c365e1042676c8d8fe44b97c37e407da7012389515049884c15e2f284ea919f9e4e9ebdc361e0103e025cb685dfb05c5f8800d9d5dce7802747d3557457f8a2e0a5e58b28c2b1cc19ace4704ebd584046443a4c2a8e0a81367772713ec5a8c3981061e2dd20155822c4cd2b79f0ea18e1cefd9c0f88c9a0055164083c44f3d01df2b070a1eb6ccf4e6a5892d6ce80be1fb266e83d4c196e466c334889a1dff7886d407e568274b2a4977f1cb17c7f11e5ebfb7a4320239b9968e9065621fb5d70d56898fc9fd647c688492cd963f9e944a3683941b1d4fe049d880f4e154d46e526e2078478c127b41957803775a572ba49c667c4781c0d86ce51693f023fbe244cf6e0427377f5ddf216f6ba44656334656eaab3173502e932079fa20f23b923e73aaab3d62b9dcac8c96fdc2108b8d56aebbbab25db0d5d822fc7e5ecc5e96e2a34ffed33e4f5fb09fabbc04b98924b99543e33695b82abbb45db5ede4a7fa8706e3518ebf471da1e57bd1659aeee6ea3e2b456b3769dbf9d1ae573ae2e75e98892fd946a4780006ac1d787259d2925b5d9774c9d1c9d28aa912fca5845b8933d131f59a864dbd58781ac4886b02631ca2ab8820a25042ab04e770a9344f482b9211bb6d9cbf14b98faaffaeff6110e593cab214eb17641d7b279af85acbe1e45d6200ac95f495d52860ba40e48e17b77d62c189767c9b6fe27821156168f2838f6c6fe15dbc13e592181fad280a91707472e56202ab6c5c2a96c4836a56677d5333334f00738fc8d1873fddb84b235386274d6c2042c14bfaecb24c92cc01ab7ee88e06a857e8f61255abb6c208d146019c3864d1a0c5c4bae77789212e6b07a598a3e8a71f96c642486965b9169cd26d1b2b0144dc62bfef8d02fef8bbba2435a5b2080582fbaf76759e730ac26beebd09411ede8439d63cb667d121a64db5a1d9ffb46b0f228c0f25fbf2506ba0f135d5a9ed1108794724a45a01d02e423a2c631c7528200e51b98188d905fc15eb66b873b56f32de2f443ea80b161f13c08e4f8a804b43da2291c71b6dcd3420a94f5105a2061f5c12f92843f062778a6076cf77c29e603462c0adcc587cff33e7725f3069bacf7cc1aa8bbfcc2d0878ebab9519bdc32dcbc4529144de25b29c59fe3530201b87f464af7448457d1f8e6b8852481b93338b2b212c08279b4f440ef44515c478d9918029885dd8a451c45f2f281710f5b71f497840bb2fcd8eb9ff528374293498e2f961b260ee46aae65a2ad1fbacbb3cb35d70223872ebe9bc3fac42f03e6ea1d5de79aef3d1bf03585a9fd87af9d5d61db7217fca209163106129d29899acad484f2dbd0b10ac56ef3e6e6e610087d03c8b61f22fc14700e9b39bfabd5f5793067e0ff03e34080d9458e46ee51568cacd698dfa2ef5c7b439dde050c59c5e44814e5358542e3de9e4cb923e05257ec9997e1c9be3481fd7876012c8640c4057a31a02f585e9c63593d766b402e988e2432eaf521fba57065c69c98af47d1ae52cf8b30c5c1d9903e24ab49761a80ff22c737350caaddd97e88c7aa94aaf854cc57b8fb926344d59264aa76a53860b3d6e9e95605f8a1d6abd7a878bca2e38c64923872d79b02348d905a757ccf0a46f73442f790b5f6857de485fd08f04313773c1633889a86e8fcb125d73f2ebb109f85825fae94782baf1416ab15bfccdb385c7b40da759e014d6b272692c8ae322bc3be21bb6598816e235f5dd7f18e5d31855df2d309abe8d7806b14a9f2257ae335b2627f52f32e26f4bb7bc051e83e29496addc725152cf10d3862bd24956c08913bb2e5f80425698f3dd133ffb5450ee6778a48ef9da805de61c227979a11739e20a195ea129ab42e935560c5c2390847d319c14a0f3bdd7dd97d4322c833078c589d90b79678595c17473eb75c14d79a2484c481a16bed55d3ff5ba586c96aa3b73a9c09554d0ac147b3eb25977e631d0ac9901e32dc143ae25f4e2b71befbd43819629f789cc26976ae9ce78106518e8388a1cb60a6cf28d8f8bb07c13db9089413035d76a425d63f4c90bacd23a00aec94caef368f8383d50753153bd52041fa554e98b39d51541d6739b41599de56d6bde613f360fca9c994caa3bed9b5f257de90c0e8ec0947064224e6bb7b0b87eb0c7ec90892e9b9b4493d127549a075fc8c25dace9e9412431c2c7d7c3a1844d0b4ad7c2d4d518b0e67be5f413c1531b47094461166a407fd2870bafaaef0154467c6baeb045f12cbcd9d939928bc4170dc0069e99e2498ec8982c0f47670c845c4749e0b130d9d2b96b5064980e349469c4ad1c6b5ec93d07fb0e1e914276cfd3387fa5df36541003df2bbaf4eb7d9875bb7231c814d8b1f646f4a738bd3e92463e6d778e62f75fc8b5604257a27156559dade7f29e698b72d9d08c2e81cd9a52cc2d8ad190a5118963dfb11d993bca32b5018b59b292b205fbc7403c005739b05d71c5f5d58c615d7f61e3ebe1bbceba9ef0a819955d6243f90f1e4f526b08a1f8e1bcf8862f76b2cc4ca20f2e156dd8a0873e0eec6d884c737e6774125dd0b984715dbe0a1f16716bba865137aa185a2c93d812e5958a06f0e7e9ba8c1086c95c901e599a144b55d642b28b9f939bc20d01c49a86f37515fca3eba195a44180f2c65432d815bd2078a68561728208166544cd6fa14f3160e8ebad67b1673a4af447634ccca4e3692c0affc7524064c2a8786deec3ef1004fb980b026a47b2ef07a24d7fc25161d71a5b5cd5dc333924b8000d40d8c0d20b4ea2699bfc7d8db0228b37294b2ca4ffbccce5114030e8011b54f1a6b96dffc2715582246df58503464c306201bf00b3d871b416edd000824ac78292ae57ee9923b7eeea4f098e9a9a4de8a3b3ccc111d98b0728546e95636799c2763ec8f8c72d03dbd7693aaac2e7635ebb61a491e659aa41b084d6a0fd1179bea1ae091ed8e08aaf1a346d87c2aec0adaed7e98dba5bd18c7370088dcc333108a06145732ed41f1522cba1cbe851eb0603a09aa06ea7c9fbd87cc29db43ae4ddd2c2e089761c2817fb68ed87b2a1c5ca27cc37e900dc994b49b1119165cc59844247022b519851b9134af81f84d9316f6341c88752f2c8b67953c06ee16454aacae1d6837c4a4f26319040c86fceff55cfb3f0c9ad5f53cb46775cb82251946fc6ad6103e473d170e289657f83450a0b76350f8bd1cda1057883e4b780aa5be9c260c31ac65ddbc4b7c3e12a3278fc2c2674a307a79baf170ca3a115a2d7b8002857d3d586518826c8f3f957ce80bc7dc5ad98b92328b22790df29a66dadb14fb9a0b2a99744ce1e7c98dbcb263cd3d7b1c39548e03c82c3a56ea726770610e674ce3594d27b6cb46d2d43c43fab1b0f8c1d4587bca252ed70f09f0a20a9eb2700bf6a0d5fbc66c67c0cccb85cef6b7fb0dcb715440a4b3d97a2d4b87b45628d21008546b7f58517239e4722d2014a08fe626d2d60fe396e632b97a372a562d79f3f4f14b9961f38b071943e0a46a620f30cff8a205b7271a21785f516392df9ca3baae4882e5840f277e998f50704fd8f5f7bb2833bcd45722c93ea16b99e8913f434fe297e2aedf6fe2ca15dd0cf3c5a057b26123452235c0d7e02b667b2e81b0b4cdd75b3e6b42e798771b166f2036dded8f1c9cb6bb72ea527d5bf058cdb25c497b66276bf780cd4c3a2d1b97b99f021d0ba36715bb51d763057539de53804f5e59a1b16ffcb28e84ebcb4ded2755ef19397fa53e0e8998c2f8e10c1832bd27bddfd7a701ad45f213259cc73d0548e81a8e7076ec37e3bbbfdf65fe060b1df193c04b0f6652a804420a3243e5d2b173321f017ca3a161c7682ee9bb484efc7c8594a23390e42306d91fd39100f2959fa881647d9d9d046d25556ff25fae4c5108964e768a360273ef704d51dab2a1342950b9f6879681d87a6b65ce883fd4a8f7f2477a7d418389c6edaa62d5cf1f196118a58406bbb7eebed071d614ecc4c1ddf74b1daf7625d44d5826436f0185292d50626cdb3e440c2775087bb98cb716ceb15fe260e53973e2b98ea99715dbe4dd5f404750d9fa6a50e0d47d810c699d278cc253b378b1c4fd897132088101c1ed69305a69a9191933d08627db1965f551240aa45c62fe44f8e8fc3a57f0db94e2ebf4f255a389d17605ec45051be62075eeb42c76c2aa4d6153c181e18da50282216d1acaefcb07a521c1cc42f0e13134ed97e06ef7dceaf61c8830475812587c7071a25433248f90d5810eda6673d54eadee9f29a3515284291696dc3c52fd52eb189d44f2d01126a03c9715ed23170c750449857481543a54a618b1ce942656053c21137c605f48299b1a0ad72ae23a7800a98ef79e8388fb09fc85d063aee70a4ebe54cb9c66eeb7cc179827c088d9645ce938de865f5dc7d1cdc57a77cebb48714efceca625c643e9dfe198054ff2609d54dff65955fa92b77bff722e703ac5ab29f72f727f4809a1322996730d62c4a4562b0c08f990427925aa7254e6acba188b53485b6a41ef1be21da2950e2b4ac138987e2066ec4b19a87141eb74855488247847e71e721fcfc33ff66ff5d666835099dd9bbe62287e736d23529e2e7b56abf570fbede3e61013a72129f7d74da0f4ccb18c0632bbd31952f7ce2780b27678cbc0297f17b27f72d072552dfbddd8b3d2866fade0633e2631d5b1e8bb093adc407de1760c4e6eb5fe2e68385e5158140ef98c0d37c236b844dc967d9cbfb84e271940a660e2bbc07d681f069c1fbdeba0a04b188050297e0aded0f0ace25c54826e87cc2e5a99053ab492a83144db60d5e1a992bead7b5580399be5f084504ea19053588d76fcdda61a26993fd79ed87e12c019d73c02298f5b616c95d09479aa5dbf0ff0916d180c60754981c73f85834fef59625c5db1d9e081960b3624352f12dabc19dbcc39fd1e1837ef67f74a26787d3d477784530c203a9aeaca6209cd5bfd938c7e9a811532735411b178dbc1d78beacb59ee042cb0225d6fd7025598bcaae2d044b5bd649abc915123023bb1a0d0fea90be26e4219382dee69b3d22e64c78a87ae2f3d4397657bc7366efd8e5ef2a1b5919d48b0fb21dc32d7427fd96dd5e49d60ff29fda912fad9f3ef4e1e3ffa105d3068653e1a98af962d3c04839537c692df0bcf31e27bb6e8991696e1eb4d36c3aaccf11f77cf704cef3b9dc14e3ecfa0e1784097ee6a165c904e8bf6566372dd694544bdb2cbaaa6b5cadde9486a820030b7f9d49a825150b7f374c01be9d10d472969cdd06b275005cf061347a4bd736c3f34a51d84899910848d34d759643ba055c11fbf393adec449388b36acfa2f8686c90422abf1ab68c222157c1ae2c4f13679f45af2ecc6c339aa943723083425bd55ec9b21e34a3a2883fceebb714b139c0daa81a9e754eaaacb00cb317a40f5c4a199c7415d305493a6fca37ebb5527f7ee2dba7bcb34e7b7c5c22d412e7293603a0090ec46a9e8d1de25088e69b789a54d47f752de809889e9b1ec68ecfabdc09196e5c53e2a6e22e4be965b57a52c5e5ad1b5312ed4de596795c9915fe907413be3d746c68d97f201c1d9a1c2b05c71de7b4a4ffe5a257e437a0abc55e9a2712ebe46113c89fabdfccce7cef2a496735733d65e7a31b9f42849a90724b4a9c200fbbf6030c682b4200f2a5cc4d435350e386868882bb6b5c6d7a4cbd423fd82a02c39279b87b162684818e2710c7b3471ee472bfc73d81370bcec0ad2aa944defa31510b9c418daa54b14f0f029b70ad2eb0a34b5969078dd654738d8baae84d302e1c419c5921064a40d851b5f146c09a8f9b0131c13e7b3197b34553a90a98d2519383031ac30725524e804a21475ab91196bfaeb6a98c5bf87e80bd9e01d660a2490b4e504a3585b05101d46c3e6a41ba26e71bff650257a87d5f32cb564f0b38d239d107292d4c1d2a38c377d33140b68ef34b18cb380176d826f8c7492999d02840422fd35d80fc2b5f4bba50544a6c2b140907595752b06495d278356b315f46548d0a0b1acf97f4be217c380cb129038972f87064a7c4b7a8786db7fa539ed29282cd1ff3e2d4c19a23f3f1143e19c6d7369d12f9535afacb9a2bd38fd74e31a19f2a0a1f745cf3a059ed0a3e23d463fdf44efd080435020c167e7e95b930df021239cd3ae7cc575dcf600a021fe4a694d902f2cb26b7331f52927fc9e2ea5485bb31ec3bc7972cdff29b36abf750f9f7b0dd183b7fd59ee13d23478149b7ffa41e4050f0b7810632c5ffe5b1790084680f9fbbd22aaef8596d1d498409eb0e0bfe173b0424bacd91debcaf85e64b24503fce3eff95133e0a11a9e3336ff447d3d074980a6e0379c0ef4e8b4515d0dfcedc0b81914e591f8e63eb55a514bc101eb177daff06f8a58ac731afdd4eb860b53a4b3e20abc834e3bc2afea185ca46a51ba4da63f46fc5ec18b55202572163faeb4e3f2a97be5015e490b55c96b39c45330d41b74d5c50eaf66453aa5f64abdef2cf402581ee59090c4ce96953aa316d536a9ac93a93fc9977dd7b7138d6996cc0bcaaf05fab5fd87089523046dec275c266916a5aa8292de5db0403c4b0864017f63dd79af35b0993618db4ac8f8cd7f05b44237e02aea528a24fe1b58842fc347c2bd1449ec26f1195f829b8d6a2884e27309f5b32c3034ad0f4b77ffcf78d9f436c0929fef6f94ea42936c86c80eaad83090d125af98ec4555fed947b4ef65a435bc7565aa33d8e9826b9d2bc1db8292070f8b9be291713fef5091859c305f7ab2fe12df979d41d24b213bf96421a20099d928978c45e341bf14c7c6c0d2e8756a03fe9da4bc7b706080cbbe2ddf44f92175330f28b98cdf1001ce7001533d8751d0a62d1278f5b5c047705fa2a62144d9788c220c50e4781ac3674857fcd901f12c7128a891fc0f03fc36e3ac373db48c2107182184bb0a30d429759298aebd2c0271d9e343ad500309928b2b46c70c988f159ea4b018784499a452704f2a89a1e152bb65924d7dde80a2ce8fb34ae3f50806a4933c54d0dfce80022057e44e782c226a720ad779007d6716044cd0b022bc9a17911b62bea7ae9a38f60866d07c4b0d905dd4e729017b82a8cebaf13d0cf6a6d4bdd74e93eba3da68d717270ec71f3a1a0f1e15806f8c5f2d6cadcaa653b0eb9f960964ba3027acd2e92df5e1aeb6c69d6a1bcd58fd53962ab87fdf14f9834a280da9e8e121790f3474e66f82e7a04cfac160a6de9f71a0210b7e267c53871bd2445f58543ae78cae6e3a5c1ecc9973173283a07d688e656eb470982864a5859a3807c30224777f12a6a5da03f81c68b4a8c7fa736fa1722058d526bf9f3ae5f0dd5ab5d22784becb78f0b5a2a0c944a7dc45156d80006e661e7cca929d4672846f398f8acc657b82940a963ca737d9274a09ce625926cf5aed41b18bd81a7687d32164302cbb449f862eb3344cfdf2d89d1e312353c66e8330546a4b59a82e971838169ddc11b9ceefc198d8b2ab122c67c8d840a95316b71e1e4880b00ad88102aaf4ae3bab59a51f95c80cf12f63b090f769b89bb9cbf68476dc85f8cc3312876f2fac0c6c600c2bbf1a76299d44a45d926b56bb6cda85c881b0fd026f3403f5a30d4202209301b81824d4264c526eb47810efd9024a9baaa14d3c3b02d14259da06078a9f8206d992b3289b38e4348c9f2424a92ee8b86ba3bafa83a5d060b6e00659d0c6e8037b91a6380f7c9246f72ea0a23bb42f47d579aa3925384a80296a742a83c2116fd1181f4065431a8aa8a18db9458ac63997b9b55a2e2da73f6cb73068c75245d40bd1ed32a56f385d0a6b28e82cb067fd194a48b8dce396486ccd3fe7085144a362152241264e34cc4d059ce620892eb8709d120a4172280b5c823fafc7a0cb98aa98b52354bc447375d4280c1aa9070830842a3941225c31890522c05b996563a79bef147f431b452a10f42b7385bd714a6e537d5bc11688aaa36491ace98344e70e0e8cd2f61a737c7c9a834ab33f54debfe66dc33862100e30ec980171c8e72d62d92a5746fd13d82128316db29c03851426673126602f787b69966382191037c328c487f8ff845dde53e6790923cedece892068c8779e409444403adb1d1db5f31e47f3906033cfecd9b91e2185c2a3885e6c6ffe6249820b4d4548db162e9aba26169b1aa5482fa98b13073d1cb6c93d0f381f3ad865dbe486cb8c743003c71b20a2a1444cf57872cf5998521431ba4ab478a2c8d73fc4ebd417fe6b9f922df488adef724aca796b1c6d65060ea76784e10e10b5f386f91f96cc91d5886781ddbfff761ddbd14fcfa6f706dc99dac0c99e0043772d10ee7c13c8fd892e4c35c045f95114ffb3e7196b9449addd0fdbe592c013a5810cfaa343a9ddb20e4549343840f6c4a63c520051dafc852d62a62bc07f55c9c6713d65d9d2e70dbb1e7a0dd32b58787e9f3cd2c03c119371c1521886f389b605c7f1c3431f6fc0cfb46a560a7e20055b715edaa3a81fb8455b7544aaa708db50200de27f12ff4138fc7cdebe27abd419344a5e135a0406207271edf7b0b37c7607776648cc59bba04cd95864294fe02832836a23926783cfaa0cf03ba87d9b99f1c1401e1660cb26df7a47b294c1402820e8d8de71e0adce01cceade0c9f85ed6fecdfb89cbfbc833ebcfe5df4eb8f9c7a77f7a32b4e92cafbd41551819c22d06cb5d1679f50d585eb4122a05c94208282b22a82c7518afc8e8ed2280be8f24119b3076c474350df64f18e0a7abc840be641a597399233333fa9177f94e1b32c3dcf982b34e9cb0a4c3f410574d74bb6ed16bfee9f53c17eecce8e2c2f1e0cfc5140227432dcfd844e9fe23c84fa08737037a78d51509d01cba4def4cb44318a9f8bff625b20c3ceb3500cdcdbf2767e42a77919c55f6bbe071521f63bef3cb54a42df37d01454d036c637496df61b0a4982ae22e521211de78c1867cdb1215953f55262c43b6beb3558ec49253bdaa51d493390cd92ac435866fafb0e0cdbad266f85361b7d12d8d50147c96408d2794f1b28097e731013762b2e9644c00935fe924e67c3a06eb685502ee04c59e34de052e93c5461254106858351d6afaca42fccad1400253f22b47c30526327706432c34728e201f493502895b4ad62de5f65fba91b4bbc92aee9c263c329c6a65fdffc4adeab8ac336c6ccb4cfe982548d43f4b2e3922616d446b7ba767140411be107d835b9181b3c1a16c4c41ba54852987538742ad984a1cd75d73439880e0fae4c34a77cd715ca93bc27127aee3b8128b948eebb853278310c7b170a7eeb81a5ea9636159b93867ea3a93149c89e33a17ee0a1dd7d22b9ca92b3dc715751cd7a1947436745cc762eab827741cc7d271437033705ca943c160a574b2c1c9c07131a04a1c158ea5e3b8ae14e33a934bcb8f0e86c341712b3b9478bace54531272e386cbe265015d9bbab300672aad4c2b1d57ea15057048e0baeb542ad55c7326aee3a2c0a13a1e1cd7ad745d89e37c70331c8a83e9baae63d1e176749da9e3684ade0b0da81eb81a386ae8aee0563a1a381357e2ba0beadc8533754759da3fee00a58e8101d72bdc4b065d8963e14c27ae06579ad275a857891352e2bacee41d4ccb8a5be1b8138d0908150dd7b9b0a03a8ee3b813c7bdb8ae134289856be94ca5234ea6b3955c5ccb4bc7a14e5c57a4cba1c3a18443a94bcddde058ba8eab614a954c1d0d5dd7712c9c69c6b5ecc0bdac74dc0a672308c7711c67432704cb4b4bc7c95030a78e1b8243715ca9e34cdc110e876e487743f7d29dba15aec4755cf7d29d4c5c69a534842b712bae8583e138ce072e87cea574e25026aee3b817c7b1c8d0c1c0993a6ee5852b753970a552d7993a1337a4ebb81a3a17ae8543993a8ee35e1c0e9dcba9c49950268ee3823877c356eab1c295b816ce94836b6979bd38b121074e8789eb3a96eef45c2a069a97231cd7711dc771ae3e35d94a5ac099a1c46b273a02195f10490009650ccd23d00c7104313a2826080d74041d3c508c0a1ef023010bf4338bcc1042023954c1c8bc8166484c8e192147b0b18120b3c60e371270e16e26d7052062548100102a69b44b0c2ee4d012038baef55dc0f6a042c3a387b7a49083180e9303951970349517a0f4b73245bb6900dda5ee6e9cee166a26dd48ba7bd529182134bedecc338cb12ce1c2430d9258a71aa596d3898696d34aa914030c91123f32a8158b0b4a880906069813006072a946a9062a8c01302089c546776a31b56ae020c403492e4b604253cb8612dd0f1b5694983816222f48fa21c98e6a009dc9c5948405465213805b79914a74a61a4a2e1f24f50822400c377208500a42890224d1d0c204060606241999a1a2b00b16923e2a52a796528d15239301a050026552956a7450220b1368e1f1832550675c61a37b5929a23a0d312179275908e08595958b11971ebecec4e33444002790401002d04114334ba8c0092e925eca59030650c3e6066782241a6e9470390d617141d92805e909a284838b919312437018421db181c7884bcb1198a190c816492953ebc6e534e4851a2c2e2f3c32455c20c905752407d913492ba5d40ac732048bcb8a0f2c3c6040bc942d3b5047585c4e34d8d0b99183e9a76506186e58c203b5fa11ea4109179477f251c347909ea0138ce954c3caab74d30263dae1454e2d2717d3cc0a12939022dc8a0da5981519685a506069c89424948b0c2d41949022897bf9815a997630edc0a281241e364c3b2b3d567268d9c174c38d9a120e0248f266b8d2ace43295560220530415b6dae0f6010f7cb145161fd040059c48e208246c347bf02be209114d9628190a4a22c49197101fab1e78d0e12619c400081c1e646aa0e144e50636c0c00586e001e285430c302f2c5ca800051dc0020315a08004a83c40c96a4703182023420a5188d904444167383eb89cb098428a202d4008230358bc86dccc00c38b0bea74830d2628c1930f817e84e831c203010418a00038c400b2820f78400349305912e426070c261d7c518525383fdcb49c58220001084401f483e3c30e188e0bdd163a2d746798ccf028746474475811830b420746f783161fc0f4a0d341a782cea854c4ed80c261e5861a34743374317030a85e58c1d1a9b894c946f7b2e2d2b5a0509d892b711c4bd7b851b2a1c48224d301924c495878ac9052a3122a0b24adacc09c7a0882122609d4986680a9c006589c4832256991c1e5861c03486a01808988520e2f99050665042584c5a52484470d92505a24c1f044899620a5032c51aa1105182324ad54495a81a9e1074930d92582a4961c36ba930f2b332b553411c30b0d5708c00445d28d9894975caa19540e551501acf44009391129dd281141e592cb940488181617160e24955e586a30b55e6a4a9c09c6d47231b2d2e30400961a585c588a60608081a1658697184e00287541002c3594b210c04a17493c1499468ff18083e90573834565e24aae928e29a8460ca7eec4e4945a6139a94aaf95186c702c2fa515134ca954ea4aa712aad4e27283a9745272c27123c84575623971a593e98769c6c4a168288991f4b202b281241b1c5042c562b201b523009311042013f3ae9206138010860ebea04117256da84a1a5348c19303c40f416c9542146676a46ea04e4e8800faa98203176ca143143453ae28c2002380918319b4c0041fc0c08cd7436cc68a324781ef15a660c6107cd08318902009248a78424413a09f208ce890c30c326c410529f8800790382286c30db6ea70c386118a1065ac9154258d2c60e1899319645081310319b8a00526280108a24080016245008009d04f4f0e7020831bac60ca11210421073898410c5ac0820b54e009020c600a6680e18316b04005215822e9c31e1e550d339430861168108314a060041998e2001f32e9e161a96ae4000734784003a658e2c32284e831c2e3c3cb460d532b618c1ce0c00b19a400052300410612808025a008d1f3830faf203f6a583854a6aea284318ae0050d64108314a000041948c0140838c0124820410cca1320663c34b89004c90d1b44c0e10629a078a209139a091ce0891b52075aaa94d2307561850bdd16501b3069a0cb408701cea6ab29d170de8bab6b957a945c061d381cba1b4e359468e872acccc0c9d0f2020e1ca594e9460d1ba91a30c0d0f072838baa0585623995585856564a5c77d7d02eddcd43a74e49fa45d9cc955e72e6430bd25ab274ea944377a33a7592a1bb7be8148b192cc79f6fb295fb871457ea987aa6eec3edce3b6ba04fcfb63aa6cec282140b0abadb46a75838d0fd39add2fa359bb3fc0722befa8188574a7b9911ddfdd2299628dd9fcfac63eaf92683e2799e93ee567573aaeed6d12916218daf87676e4eb1d4c062eab07e9e8e539d5a1923ac2fd3a99510ac50f15aa6d5177d66ddaf9ddd99b13fadcedb44ac90f87ab7068e3fce3c4845dc285a770edda86fe547775e77e7e29630a4c671fcde12e431648890214186dc0c0132e4c7101f436c86d40ca11932448810214184dc080122e487101f426c84d408a11132248890204182dc040112e447101f416c82d404a10932e446c84d909b9b1b20373f6e7cdcd8dcd4dcd0dc0c01220448102037408000f901c407101b20354068800cf921e447901f373f80fcf8f1c3c70f9b1f353f687e0cf121c447101f373e80f8f8e1c3870f1b1f353e687c0cb1116213c4e6c60688cd0f1b1f36363635363436436a84d404a9b9a90152f3a3c6478d4d4d4d0d4dcd101a213441686e6880d0fca0f14163435343434323a3e9feeeb6a153a52c74e3eb8d6585e2d25ab9ac8ef0233c00ee2d97964b00bc9ba6bb63ba7ba654017c3d7c3f1469299bf96b4177f7eeaed5ddf5e8ee78c050e086124f77c374aa34a4b4a3bb69e854c986bfbecf5f2eadeff3579ebde8eef2b1728d46af7b9ebdb8fafc15be48e70ccf1f7ee8c8e86eef54d745b7639a4b993ba65fcbfec2612dadcc67d673691de9c352a73a128cc05b3b76789e1ebe1148eb24bb3b5677040e27bae87ee5d2c766efb539dddd75aa63d2dd9e77cbe4c85381b2b542f983c8f533a6b85ab0f67477ab6befe5f96bf350f8992cefb53af88fe62709a9388f6acfb54666d6dea0fa41d84cde2ef87ae13fa2998ef492b1dbec5f762222864e71543a5391c4fee5f9e1e81497bbc53964864e713fba1b864e71de3fdcc79576778dee159515f0f5423bce807f943a008e0cba5b864e7516f54527e22ff3502c6d0d3bcb315d39d28795fa1fd9f16f8c9c36dcdd2bdddd4caa97c0d703ff28669bb7bb6fe8ee74ba3b47a7da49e3ebe57136035e3c035a519c33b73baf8c8ad7defb5ea7875f6f99ff7ab534cf5c7f7c911ca9673a6f765aa539cff1da99cfee6e477773dde9e8ee7ae8ee78e8ee76685377a7c3250562bcf4164949b02eb9a8208a970e109ddcc58d58a209ef80114620d179c991e0dce448b438cadb08263c6745c608245a649af01c0e091647c934e139253fc920c122b32253f2762458b8da35d1846989264c324c18adb8a9280953c392287142f40ad7954c2b2cb013d2e9a4050b0b4b69656565a5b4e2a695152fea5e32459d9b648a8a8c80b5b3949228ea9cc58b9458382bbcb4bf709da9c8e49cc9574aa50ec6c1ba2e4a09968489e352f0822a05e9bc99e098302dd14407a200013362c224d3812840c04ade5bc04a48701c1354fb0352a61d564a415cbc5960b81c982390e89c452629a6735e5e1cf5726a31794bb784c95f9c8b3902e55c8782490215c3041039256f8959a2092ea7e44c009163f2ae41647218179718989826b81c186f8959820920725cbc092ea76589176e88ce41713147b438879239a203442dcef9112edebdb8d8707220604625c7c0adf3de026682618189e91c9798255cbc09cf6971969825609c09cf69710e46266989239028798b4c52c95bbc456689263c07c64b358828394ccc114894dc4526c95463881251c9bb969826b89c1647c534c1e5a0dc25c6c55fba1818e7626c18c2e4304e44c95f9c2566091493247260648ee800918b737e448b7747b87897582b2d315d62a16298e840142054545251ba0aec246384815be718b899dc576ad83084c93b272a0575ce5223c8e45d23a8e4ceb190000b2b6031c6145ebabbdb1b4877777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778b8bcbcb0b0c4c8deeeeeeeee6baae543299da858b9776261d4c07eb4cb0ae532d20754db0ce6432994c26ae5f5cbb60aa1c37f80e2693a9642a7577536a96ee92c9642a994a2593c96432954ca57e71d1c18d5216b0ee84c6190b485d1395966935d1ad7440513151c9c244e5743a7929a6e4a798d612dc4c89435500d6f9090b18152aa5a224644a1cc71d2055a44316a82c38ef4aae43bf1a06940252305958f1a282e2a561ba98ee5649742d2b2f9cbf742f327e8a293225bdb8b8bcb8943897cea5c48262717131b9b80d43d470981b04a8215342bdb424d1301b7a5edce545a68492293a9d508d84290954673a42572a954a3756566aac780d18961b0e53a3460d67a151038a1b303660605867dce0b1840d981a376ec814f148ba6143e5366ed4f01baeb251aa01e335a824002353c44a8395062b0d561a9d8dee548192183053eac68d1bce42e3060f2852376e9c52375869b0d2c0e13752a91bce3a23e52c34523ca0b8a1ba718385e386e3e0b1449492ea460a070e0e870a0657e138a56ec814712fc474898503c6559ce994bac14a8395062b0d561a25316e74a723d82825c514a550256769ae9d47529bba6ed6192c34386f1e5070ddac335868f058a251281e4928140ae5289417e594b3a8bc735317301b30fee2355e5ebc4b416ab80d57c5d848c9b4d878a9016342c9b0d2c8e162429dcc30719c4c8b8d12c0d88089b1015345aaa8440619a5d31725321290326af11558d1e90b1bde72eac1298cd3104e6274376374372c365025879161a151837506eb8c1317a72d4e5d9cb6387171ea82abb172eac246094a6724b1d2e0666af04842a1a8489dc8d8222901290e565422a3c54b2c2853122b0d54d1e98bd317a71e94c8289551428395064a868506eb8c1219ac34b209062353c4c1644e2b28198e2b91c14ae364c6a9f4c2458d2129169818a3a2939b1c09584b4c5109b6b26263c56d983a94d7a09240c905a6c56db4b80d1b2d6ec3e8c51bd672c3868d161818992eb5b4c84429c16c1421d17911ccc95956bc54c3864cd18b4c1107e335603a944cd18965a5d4d9e058483004180f587b21812c6012a002e3a680b51754a080bddc4895dc86ae7d486a459584119c9b4ca6561546452c8e7224601c4b1227aec5b998a216142c2d452658ab09d80ad762a20846e6869b605ca532a95426158cab4cdeaac2c886370c26a6a80433e150c914250153c1c4149960309cdf30f90d992225184e264a09474c1112302318201b3e811b5e7443a6a8955b4e293fa9605231375cfce43662644c8dea561ccc45a688c55b6ce81c252363bac1b150210268446004301b587b11812454a914f352549229390b0743959c6329194531a214a504e34e0e2b4ac208244a5d51ab0aa315efce3b8922ced4953c77514a30eee4452edede2cde7929026544808b1a3c2eced58081413581140b8b1b7532455c0bcae422935b602d324549c050a7152fe548b158e1a5773025719c4cf722038382b5c0b4c4c0c8a03819934a8a140a25058a4aa946c3b89886a910903272f11558118a0a0c8a0aaa022d1ce060502547b5b0a0382426980b2783aa428a292829ba9b2aba1bd494978e7b59414de96c68f1b2d262829b7991719161715514a993374a858014d7e252012a1cac888315b598e06658dc0b0748014351692f1cd084170d280356725315a60ab8c814e94cada46eb5e2402bb028a52a55389995229c44516e81a1648a384ea628b7c04e32a86e258509b5850be7a2050590a1002e745d572ae110c00bb0f6c28a0a9c9a85e574b2a20a9415268049810d1b33b02247b7b2e20c1c2e4bdcb871e3462ad582001960edc51558c072742b16c072742b2ee60a1ecc708512668091410619649861862ba6986280b517575881861a06a8e1861536b458e0861a3c80030c1733a58b1c60b8182fa6002107acbd9842851c305c4c0d1328200c2f14d045a7801712a48a4a3e58596161e9cee81712a44c49395e48902a42f940e5c40b1408c0195e30c185a90953133f289d512a954a679cf1019a526a0a13acb0b8d3944a424a51b406708231a894d10427c6c8294da054eaba2ec829a814e42453a4542a95948095a4e0c04ea9547213aa48919d209a265b14d93992c406acbd98c2066904ffb3a02174db59a5312ebafbc16a6b2ca802dd18bf180b92e21684d41df405ed7c18b44377e3db1b05a580d040fa3a467777d1b11a68c907caa2bb81a098597bc958b5d9d8ed8d629fe7fdfa3420a2eeae65ec8896513e1623d21dd2587e1c03f2c64f6940a86efcd91ec5aa25a36fb22dbab1f8951c6f2d4639108b32863f53ecec2709ff34e98ec5545284e087a64391d6c0d8b5b3d84fcac70c3c7d6cd0ddb1f03ee9934537f69982632a273852df37bad6169bcdaccf93d8fbec34f65935f64975cfbafb46a7929cd1379124671232669ee1cc3f26f9228916dd6d9aa2bb8574eac3e8ee53a7924c691c459d64a447f6929e4bb2520f678e38cb286f2f3daa3ce2fc215ce2fab85a9dbf41d95aa1a797082329c30bebdfc43bdfad257a01122cbabd6b67743271cff344c20412237c76778e4e217952f34aa31809916e23d08a0e4e243074b7106664cf749495d86df6ee0e4850efe8e6d0e882a6bb63d09d19dd95d1dd3f9d1222d5d7e2991921325990213e6ca60fd90fb9a9b999050983f80052533387d80cf1f18306bc791bf0c70f1a20343360c6e59d49f5f8a0bb3d7c3d91e67246a4b97cbd7a7a74d3aabd36cf8ff19191b5447656f1fd27ab57fd65b82c0aa7c3dc9339a6ee33ebffa2555aef6492e7cbf29d7f043fc67fc31076c31046b358fa643ad224b44a430b569eb0e7fe077d9e79c8e85a5bfe9f1c0fca971fc73e276eb37f0d9ca0e389a9df6eae2fd2997fc7ef38e61fca48ff6300d048174e9ddcdabb7fe45ac842b6f60e7153d8e19ac0d3a4ff88f2d8d0dd5ee8199763f883af37e31a41a4991144ba7604913ef67a8d20121554d8a96500023b4274fb2b8634476ff9eb759fde3b658ef12463310f8be2043d7c519c3ab73a7dac250a5f287c51a4486cff83f1836039a423858e51b75f7b2f4f9010204343f5433a3d1bcdd16d76afd4caa6db6c35c2d4abc5f385dc039fc41efe9d22f8a1dff27dd25ed2658400c158e662ea40840c0d79f818efa8347f10eebd913daa74e6195aafe17924fc5a5ed233fe50b42b27ff8d46f749e2618ca7cc5fb807f7578df46a69edfb5bcb8e2b9d76567b60d567d4592b7f2c4e23ee7d363ecacf31f5ef738b3d2c2f51c67366fdfb71d618f824fedccbd88afeb2b29669347a73755b73b5e08cd6af65ffbeb2e86d3ea3feb89ce0cbfc63b57e8c402be6bc5e44abafc47f67f6f3cff004bdd211d33a6be08f7eb3d3e6fda317dd662a82ae5ca351d1b1cd8ae2b41f3a06ad08d28c69a5e3fdfc2116451891cfe01ff964d5f03cf27a11917f570e52d266b7e59739ad52929c3eee654c45ff7088887c7866bf96c3f937ac9f2bf5fb475ffdc14ab1875f4bbf892f1e22a01ff7ee87f36b77926eb138bd95f1d3e88e7bb8b4f4e82f59c3f3887b5ffe21a755fa3256a66e33de41ce71e5d86be4f469ddafe5a7d9ecb924c5c9c295ae40ff5ac62ece6c89dcdbe9b9532c419aaba5958a623923e7d75e3fce1ff0c9213cff82b5c712e1f01f7c72089c3723f15822233f5a9d9d6a7f722dadceec85ec7d22aafde99506ac50d1dd4f1a47901eddb571625c96a1fdf9d0822f1c3d9ce0d5ea5e799efe1a63af17ae96e2fa19e96f998a335feb83af27a3e21d475719fb239ae711bd1fc6f014c519ab8179ca4491cef0d3261923e7d762f9318ee5d27e68c1587e1c7b7a730ce7c74874f6978c8922358ad532b5c58cee1cff7677499008d1d31de1a8b450109d912e7054e8a18e879bc28e4e7e8c6148242cffd0fd1fc2a548de7228ace5ec8584c2fa20fe9d3b5fd4b919d79e1e9d0ad2dd1dd91d933fb2b20996d86ff7cb285c15ee0a3656dcc090bab937b29b1ebecf7dfacc7ae93897642ead47d129204634104f9bd766fcd5fe68710bac37fc77b6b8e8bc708c7cbdb89e192bba474a14ce9c96cfec98e9385af02673ec5e7eec955efab5ec37d9bd3ffbeb2d9967fc798a2f850e857f3fbcb62ab9403b6155f27f8dcc3b83fedad9e7d0aabd4cee87176806944ba030237dae5627d7bf33a8f664fb83f461ed214b7b83a0b359896bcf571a1dd2c9f667e6b973a4f660ea53c3f3c8875667c988a94f38ffc8bc334827bc167ca1507c3acb344736453a8f60ddcd4377770107901efc232502a748bed0ccef8367d0e75bcefda03c77bcbf3663bf4feecc3b833c0febc4147f7d1ab6e087d36b79e924bfb067de19f4f9ff9d7946facaf26cf607ebacf78f2ccd6d76b274bc23536fe53c83addc0b3fffcdf38e3aa36eb1dbf036c7996738fdda9925f15fc7d4777a1c9cdeb5e2b4feb55c03e757eba1f835cfb5b423cc3d6c9d9c361ce4e1dfbf85f3af08dbc9b6d6a913be1168931cddc72f94edcfeb85af875f2f1abbff21396dd808b462ecc16b67f87a3786e79d64b5e368c19999199cc12fb23768e6b913ce3f32fe0d7ada9d49ac25fad0ea74393b41dd1dac2bd246778ef7f364d201418ef7482e81c407ebd47109e9d6a101d70eae1cb0984006825e48411741ba9b0322014e80a430c00354d0dd5c931cec208b1c46f0c114ddcd6501e304910d1f70424f77734f3c4107d65d21b281eee65e504a820742f4404aadbbbb02e880210249e0c18b1a7477e90a502822041c88c102a0d0dddc0f23ce04aee85a1fe8ee2e090f104a7862c71359e8ee520c517c11852ba6a86007ddbdc200059cc1f5e0954691eee6c6b8c21446a0714512827477a901df6901b51a1419a19bc6b33972b96e99de49068d60931b92bd41b74c459a95bc6c7c9f3fa2197c51b43af769b34e9fd9fc2477f4b9cdfe73eee863c372e83e49cecbc486e510ce561caad38aa1cd5e1d5cc2ee14c24ac871e7fe9d7706e5faf76bb5079722587bfeceda109e770695343aab56a7521abd4041930cebbc418813a4d7664c8f6092d670ae3fde6610aef31261fc200d6b0f39ce8c653367a8bbc32182d3ddfdd0dd11f1a1bb7b0d11d2dd0569757737dd6d410bda8b6f8f64f62fa361392b0dcf792759ed485f3665755e5a8f545f200909a8c64fde728c47099068ee539dfbb35999736d5829926bef4bf199f56b313da2a1cffbe14fb104c50992e3e73c85e8ee9c4e05e00a96c8dac182a1efd3ee14dd9142ea2b158c9fa9914ead8a409a239ea4579bbd34722cfd6b991cef1172bc35fc659417d2a94f0291e33db2a307ddbd729adf64998ef749afb396af1d7fe8d48e25ba9bd67285533b683b76ba1bc785f45e6df5e9367bae8f1d53ef210aa91e7ab01acb9122cdd1d2bef690d42b775f0118dd5dd3a91e667aa8b172bf650a4e72822e7eadb306d24c69f6ab6d06f9081df1af651c0e551e20218ccb5943e261c2a3c4c8673bbe9038419b0487af179ecd80aacdeed02aa5551ade696515e845f006fe8c26b9e9d40e23e8a6714c6f991c7f089f9d1d9cd8416cbf89d53aa6b12863d8f21f1cc7c23b6dd566c3182cfc6c7fc2f9476cff3314ce3fa2e443aba3c308291d41d0d1444379e2e48938cb0cced1de198f4ee9e8a16345268b2ed22919b2fbf3f0fd6bf945d9fcee1fd9d883f4e83ec6a5df447196758e1efefd3c457f99d7097ae22c437a44c34abd86ff20d2e7a785a54cc6880caabba13cf19742b1b7bc35ef24317ed05ed25fe6a2486d1e1ed107fffed1acfd6887ba1b874ec504a1bb5f9d8aa1d2509e78f8979651fe7a8b5669a573fc1b7e0d9c7f1d4f9be332acb3e635a2544c123141509e782ba4eee489f7a30573695d9d8a4975f7ccfa91e35a8231819423c1f3d169e2a38777da482561cfd326c6ef8314d21859da4b0b2b358a65a4af384310017fc9e3d9ccc6fe5af07673e5e96e229df222dd783aadd2b03ee99f4bf091de6df67927e9b094a36cb57d0dd2291dba10cbf06b202e614d747738bfe6a3533a20e9fe421a9b77929f7bf3ce209f3324cb0f2d187ef965945c9f9214fc8b53c3f34838bf1603a3e45a5a3046c3e34ba13816bb1fd6c74f9bb1f0c74b67d58224395faf1a249e4c412a92630ffe9c61b74cf30f7d4d479c47f69224ecc36ac11fa2556a04ce9cb05224f95a192c9c5f83d920727dfc37a85a9a417a337e213bab3de153b20441a0bf5667a453d409e7df5a9e770691e48c1d91e48c5d9ba7285af0f5a239c261fd2df3ac343ae4ad5c9298eeacf2ccb886672df6798634ac13c47f2d18ab3838d72e017f094ed893eb8f9546319e3861cfce8d08f84bf0ed8d62b7fb4716c434c44f6ffefb7a553a6be0bc938c651b4e23d192e08756070747484904fc25dddc14808422505861383fed4ea21bbe4f6734db9f1ffaa7cd3c44a33ed5527c7fc9f8b927d4f95c7b82e8940d41b3e6d32b1d3f537f915629765877db74ca86547bb6863508a1bb9574aa0626baa13c693979e29e28be0d4f6fd12acdf8d299cf6c8f7b37512c67fef94572b4604843c71ffacc7a0dcc3327d7a76085d52cc18fe78b2f3464fb9fa7d52914d6c0ea6ea14ed1008697f1d36825f65ca3d1d19fbce5e9f7656359fd6bb905e5899327feb53c96b43b6bd93fdb1ff7dcf63f4034a8c07bf2961de7fa473cddfd42a768404077fb748a06587713752a0714badb83f2245b11b7c24a8d9c3cf1f0d7f014b17f9e2015c9320c3f536cc90f73fda3774c6b44ee652b6267817446c127b12bacd46815d6e95fac5a8af1e3ef4972d6fc0b2b35fabcfe11a5cdac879faf25fffa83f56733eb753aa6fef76b44d98a433f52a22fa34c1228ac14498c24e7eb35a40608109b8b5fafaf54ac36365221fcd4f63fddbda35339c8f6c21f4bfc3747916e2f7c5c4e32d7bfb7d4e96e209dca5182f2243f8e3979e25ef85424c9e9f55fe678d63c3ff6e9b6ffc99826b9657a6d2d97b03b8eb1587e519c6477ebd0a9193ed01d737b24201565659003c0080f4f0e4d8c2666b384264613ab590262eaf36f648ad40c3bdd9e7754fc36c4b496bd06d29acd5b44e1e3b28952779bba5b861bc83082769b1dd3a638f3f06975d640d2fa9795e66a417ab3971600dd46742dd6d2dd45a4644075b78d47e3d51cf1e40009110d7d5c735870f87a2fb337631a8fc6b371552ade1f677cd808017f882c1c32c4e60604bfc6355ad09395b54c69b79b31a5fdfdd1f9e8ee6cbabb9a4ec5f045128a4b4a5222c925a93b29a9bba42e25b50192fa8927ba5dbaa5bb9be87622a95b929294487a22a93b29c9894e12407355aa54a96267b5e7c37969a4928c67129a69ed9142c559a9119e9b4892305aa5370fbd5e3112677092a3d579bdc00f2d8883f114c1d87d12698e46a01565e2cc36c790e68843a45a9a4920a4398214577a33d2c71e4f198e8d8f92c8fd20a439de0fc2af17a7810cfebd16f46cabcdafcfa8879fc12791de3175ff1a91fbf0c5ae8d7d5ecbd4e6e1d730ad74e639cd19e9ee58a77094117e14f7c15fe6367bf8197ff6bfd37116cb39fbd05f94515c7f085f0f673a5271fc8c6fdd1d0dd7ffd70888e9f87ae1fa4636bf5e189779e6a107eb14674eaed1e83391edfc48732d856ed7e619d6e923cefb249038c76b7f309ea24e0dcc93c47407df66107e00d81f7cbd1a9eb599191f33213542c29a991a9b4913c407f823f4e1e387109a0fe2fa3c6fc6b212cfe05c5a23f06be04ca6b4194bbb13f466eaa4e1b5333fdada4c0dcfdaeb95af25c912c77e9c77a63a41e76b6bd8adcd353c6bfe7a7cffe8af7fa6d716cebfffb318be4db24b4754d840052d7eb469c90902488453fa0446105860c19190e606605daef8c00efa84052a3d01f06ca8d255cae8152b9e08f281d90b9af30b547a4506ba1b7df88010b755af585182818f1e80f40a111ad881828f77b34e3c9ee881d36d64032f9444c108cdc120092942c0b2449f68d8800c248006509b5a5c5045cc05477d62a20b299e6ca14ab30cf1327fe8a24af7697659054dba7bc2118f090f867477410349508a38a13b2d6c8e98d0c0a14f0450c005929240a04f5228c2012b80f9ba7d600134a2c8f18066b161871036a864d12b7e83032494a04a9f86c800a4422405bdc284097cdc16ace6b058f910435d41977cbc7801004814e8aec8f880188c559a0543318322375b9772b0b3452949a84b4141473c8820a5591a50450f21980200bacd48fafa349edad4a75e5171a7f3efca4b6fbc8961d400838b2c9615060639c110020cef69fbc1137e50831f645bbf58f670fe20c80fbc551fe60325f8400bdb571f18f9c0480fcce88103c409b642caf256d8f31dcd9a0f9f284e9d2f2cebec81931e00c10327f0a00a284f3ca44e9e78b9b41efe48732d5febad19fe6dfaf340c6831f509eb49c3cf1ea1cbac20e7eb08324284f7ca7c76f2d274fac87ef78da603b68d2ededc0db0b6b6967618d48076134fd887490454a079fc70a49a4f768deaf7410c4176674f7ccdaeab985a72dfcfbc516edcdaafd22c95aa2d417abee76fdd549e5200c2ffcfc9714651f510ea874b7b7832807483707ab2ec9e978d6700085ee6ed2291c28a065e024b1cfac1b8153f489c959bb1fe49ebd6e435b2d9e361c1c519c3aaf170ebe0d399e4e4484c80836218264737032fe10070787b52232824d70961041b2393698b14157030e74b7e7a3d3e47397c7cae4e7595b0dd56088ee06ea540d3a2fa8e00595f6fe52fce1db42bf89f94e1f9d267eab53c88b1e34b8020d9640832adac39fbbbc10d35bcb71b4e0b41989870636d0a0eb6204ddedd9ecd60a85755e1ade49f35b36c2b054173dd460062598c1d7dd4e3a358395940cb820032c7e744a06b9bb3d1e3f5accc3876a697ef126fe8d47b695878be50c6398f7e11cbf96ab7dfa7df6c723aff59b48c3e3f7355b8579ad9638ebf4eeeee9540c401083a21808d1dd469de2c2085ce8800b24b8b861a7533008a3dbfb8e70287e84e705c05b47785e006e658e3bf1176e05e0731f9d26d53a8fbfbe97f9f80d2ca3e0b296453174fdcfc23abdbb87e8140c6cc0e0947ac1085e708117f0bca0d5ddb24eb9c00b17e4ee063be502556a8b19a4b6a86da1a40566b4f778d6c05b923e3a4d5c9fbb3cfc3f739bc7cf34f63ffbdce5fdcf26e9f23e1b1f33eb307f7db73b2948675f5ff6b9cb5bd53469d9fcb1589eb7f2d6caa6c9e72f7351a44cdc7b7d197ff8b98b567d66c909faf8ebfbdce57df8c3d4ff8d783e3a4d6678a7edda198dfefd238ba768ad2c86e9cda5fd91661c9690d25b42ca97dde6f82f5c7b5ee1b46277f70a4f0b8c056734be1e0bc660c117fe038efb8b0553ba1b637c23ad8e0e5d8fa3ee0640a756600625e70cf8473a54a952650527e8761cf7d71257a63956e8d22dd10e5cd1ae4a85b277743f577a93797edce39fa9dbbeb6aa7bf5a5507f1c8ab686bfd25ca7949becb37db6e374af52928234df394e12bb6e2219d25c922f1371e8d73e587fe619fe50ae3fe2719243e2b4419f4b32a443432c9fd591f0c359a92be773977b5faff5daebfbdcd5fa582c9fd5116fe578ebe82fb9fafc351a552aea0ce1e3d8f1ad4ed6ea88dafe67e6b993afcd24bd20fe9d4cd61cbd5e2f2ace66f6e51a69f8353cc521dbcc937ca1bf3fcbd826c9b8dc09df66c3cad383347dc09a0469fa78d5d2f0fd267ab64f5ab77d3dfa71feb817d6d6633b5a2cfaadc2dc733ca758624c1d675a4bc7b74c435a46a149fe888a30f21f096d09add2f93bb85a9aebe7bf47960ce7d7fe8275168bc5f2e3d88375666cc97192388634c7582e6dec479a633759cc82b1587e1cb3d91a8ed95a63f9712d87d416fb1a18ab657b5f8a38633866c532b4636c768f62b729fe8de5c7e5975190e61823c73216439a62ceb1587dd2c65e0ac536369635766348738c9123be9e94ff3baba5478e213986af17ce1ce86e33874e234444f58d26d1e30f430bfeed16ce17aa4a72fd21582cfc5b6c0491623896c3faf816ce17badf6deaa1aa4203058a644005dd3d8248b1b03ecec094eef617fef056a7cf68f835cf6f85ef9ecd6f736f667dfcb7399ed9d62d6d7eda9df9e2d2be2d494971b5a08f4e135c6db61ad5d047a749dd718f258ab806972b0ff3a5931c69ce4bdcbb7492cefa707e8c3f0fbfb5f299f51b20366ef3465394dd1e897b987c8c6755f2b714e93412d61f12a9911765b32a795146f3fda34a33fe9d6b6b609d2f84974cd02609678efd098fa83863e4bfd1cf6a398134ba1bd6a909ac600225e8eeeff323ff3e07728fc583071e5d9cf5628f420b2950610012b04c024f904018a0c578d672e6939ca38f65fd1a38793cfca26c5eef86214cc81279e1b7c2bf34ffc55490daa33da36d0a7577b1ae08284ff0f56c8e66c08b471029567becacf684b534f237e8fed1ff24096dff03e4dd64ee36e33fb2229db714692f8ab4524be62956eaaa96da9ac139f3af1f564bba5e5631c59447fe1b0f9fe1d7fb60c574ce1c4f67857fedea7ef5a722395267d56969fd32cadf69c43dcf988ab73a3dcfdb4cc4991a81560c9f35f3db2adb9f7967d011066c91a92c8b3f10291dcf30dc0997848f2d8965931ecddacbbc963129be6c1562f768955a5ab5de722fd31a9e35987bd8e7942a4cd162858f9cb5729f6c7f6895624c7db25d7213efe4b196085f41c61528b80203dd1e6bc55ab9ed7fbccf66ebf7d5780fc79f383f7c9b97c907c16973ec617f11acf9876a347ac45a2211688ad413651c21690d8f9f7bbcfbd86de87f2db663ae346c7d4fde66f6ef84b9771be99c629ef7c7b2f2e4498d6e6fe438bc160c455bf3db9d23bd641538ddfeba95c64610890a24f82bd3f02fe82f2a94a4a8785161d33736e3aff067702c8409b9f9beaf86e791cf5bdfe7757aac9b1a9092b7bcf2f03f9fa2adf9f899cefa77dea6f8a1eb479a8390a68f37f35cd5173dd6eabd276f39d6c36d7c7c6e34f3776d06a791fa658dc8f597f4f93d7923fa7c6633aeb41449b7f1e1b47aedec769f7c3c73bc10d3c7b666fb58ab997d29147feedd908eaebd81acdb1badfc8634c7d9fa3b31edc50f1dcf5ab63f2fca665542c7fb41f627ac4a66e20fd99f582c169bb9916268c79828ce988de974ea004dfa88cea3d0ebd40152cd5ab9eb3645c7148a1c409182ae5364addc0696d635bb4795ba66f7c8889011a125f7f218017db6478fad0892b13fc2349c3856c6f2e35b18cedb53247b495cdaf1566d9db9fe18ce58770f39b1a223a2bb034077d724637be4df8825f27eb4f5265ad2c3366392529f51911ce7db3e722c653e3d3fcddf862d3be4de47d28cefd3afe1effbdc07560ff7c179780fff9fc556fe839334c7f28b3eb0489a57a038c1d80feef9c59919ff6b2b8db6322eeff77deed15824cd2b0f5f0ac5ae9b78a748478a5db9da3bfb3e9ff347cf3db4bf5eab2569f619ce599b5966dd66fffe67b10fd3ef96e9b5f4929f5f6aad0c49f3a54732feb9b4f9fba848662a9623ccff8d7cbee57896f4cf371fe61cfddad9cfc269c5db0c12e70bbd5e3547af17469a3e8f4bafd43dd1de8c4b7ff1efdb70be76c683877f2dd3c70e73cf67d665f26319167e9aa948413ada6ac117c33ac7fbb56c65abf2e6cfbda7559bc77a5a2bcf95bf1c9733c80e594b04747b242f1a95618a9f2a918557e98c38412b3af8457fa92052e2281469cd5f424042423cf87a49484825b1c00bdf9fb460cc68becd683e13f08f62e1bf5ee02f2163ae5bec562a5349ccdec86f6ff47aa592b8a1bb3d4f67b56e6fb46a534f0a090cd0d8d8f8b04da189f13b3180228eb0017e319c1e7e9ed11a66d2dd61a78e88a1f15184cd6dbc730cc2d7cba00fcfc6e57a718218c73edb8aab1219bd20969543e18b4fb4c3d31ceceedcc6b1dcc98f5f08db86b08767d45be02ff1f0c36f49c16249a7a408757b509c8c34e36fe1db23795a3f09164558b6e25010b44a6b7983aacd86a2b53ad7ea3c58678971cfcf26ae4af0ed6b7886e1ec2ec948fff3d88a3a3d7f9f5ea28cf43ff8f1ac05d5cf3309c6b74792314d82310f9e47ecacf6e0a7e29d3c79e8fafcf7e4d7a13b23d8e4677308d7f03c92ad15c22f825549fea190ee84f8e948a7f823bd41b54c99e43bf350584b2b9491fee745925ea24a674da702e11dfc7406143e78ad918cf43ff76d7c28b144a138b125ed0dc2f895d8eccfd3ea14c9f07fa44446a01573783cd62dfb07bacb6bbe957fe0e7f7f38ff34e12672be229b395343a739b5d9cf488de2cb397744cfd653c39b01cd9dcf14223905e190ccf5a58b12569c6536ccdece7f9198153268a7356dadbca5bb2507c7acba5bddd2f8770af5a274b0fbfce1741c77892e468dd668fb887c9d2bf52f136c756f824498d30ce56c495ce3e1c728f852f9ede7b74e5e123d1d98db43757d15a723e93efa7c6f5f3b5c20feb2c69ebfbbc52cf2c23424b7c7ade516db8aa8f2b9d22e9b73bb163fc622d9d562969497f993841d77d1253d6ca6f44eedda691a57d1efa5c4d809810b957693eb7d9eb2df3574ca73f5881dcfb8e1005f1c3932446f4c3e31304cf50ec07a88748478910d1d00f904e4c8867e747c9477b57c67336b31fce9b7d3e13f72c580afdb887e9cbdcc3334b0b5fb4d96ae4aad482aee935b0c4b73bf1fda3707aad8f6d0d9cad17c97122bd5f6bc43d92e5aad61f8befb44a6bf98da8b8724cffe2e9b46a45b7d85bf78fde666bdec2a2056db6977490d6c87969950200e6e3b9c7bdf17e76908a73f409d62fc559a68ea7281b27ed654e04f4e344434a7c6e99de12fc21d7e11e8f5c1fe3afa30debbc22cdb5741ac7f46fe2e789f45ed2a19b81d632cf0f65fee3a6081bef6a90a24a68110fdb50944d4c43c7d49774b7c487ee0ea93b1a69065d14a76ddabcd2bfd98ab8bb59dd1da5fe892235fafc5affde68e6ef6dee430db4244f7750dabbe59f4d5cc3f382b4d2d61f37a5cfa8fbf0d55eb0d2dbb489f3c74de9b844949a29f9b215873e9e97cd9cfbb24ba397bcf34570944dd9cbe6b5f7ce5987a0b94c2b25b156314cbddb1bc56895c668a01b05a92f47d98d6763e3d1b864a1ebe9cd2b1108a734be5e8d4763e3d1b8c03fca54168a610c478f316cd2d55299cb67a6327794b7852965fc8806a8408b101956046abe78810627bc1289777600a2a809025000c503aed301a4fb8143ca5127a409cd0d21d707ffbeed26f3f766e6745b3dfcd7cb722973e9b837b1bfcd6b206dd9ac28da99cc624bde32e3328313e9fd5b4f9b19fb6ce5b3be8775862fce4aa36219da3123d9ebb73a47b7d99a2b712ffc7b6d444eab34acb34eff6af32c717db7f9fb6b63f85aa4397a1f0f777f616bcbfeb896e9fbccba70ebaf05b3155fe67907f5af11655b439f51ff7eb4439fdf447ae7b5e4f8d95fe6d66f62e5718f860688ffe034409c87d32f9c5f9b46d68a315aa58ea9cde41c6fd782239d22e8b44a470b92a5cf2ccc3d239a9a5a5ab2f49f4dec2f7c6d06e7cc739d958e36a4a1a1a971d1d0d478eb26ca26be8ff422e96389fd5feee5c7b21287f333aef8c369afcc5dfee10fa47f2df815c83d4c96f6d25ce678ba877f9d56e993f38243ee5d0febb479ab3ea63deee19e20d80e1e1f989091cf75de5996a1e73ae99d47fe7db53f5fa6b54c3fd15ad9e7d36fe26cf638acd5e75f23a235268e8f581d4b147e18c2ecf83ee1671af264b1c42f14d29c501461e1df4471d27c6790ed9984af737b24429e284ef06f6f84347ddcc7fbc449793ecf78bee879facbfc26563af37dd033b6a33887dc9bb3d2912513d67206cedc4819198f159827bda4bd30f7beb0e7f317df089c97c8bd3b676eb1936ef3a4b26bddf6f54b1767184e0f670d87b59c55eb971ac97826c97806d59eb0f2fc2d7369a4f6dc69c45aa2b0f288e21c87ac250a79c8a973ff0808768142ca531ac1d5521dfbb363896ee1b4e3fb3ca653c8f63fb507e3bf347b836acf6d8abf33bb4b424bef073d9e9fc4fee0fe8488b8dd3f7a0f3f7c190ee7d7f067bb24576ac91f29d148a3d873d7ed66fc609dee4bba3b253657eadd1d517737d4dd097577437477419d22229222a2e980babb9fafbbf3295f2f90865f95dccff56fb5b3dfb921d94bc66a696b8575f7ecd4500fed0e96a1bda4dfbe96714c666fe812cac00e4dc5d7033fcfbfe0e752466fae16b4cd1bd632b5dd3f122dc634cc347c3bfe180bc3f94696acbd5eddbd43378b16ba3b49a786b8a1e321c88cee0e6301d7defb5ee78d2d008df6302eef7c51670113502de04816697d92b4d3f6e5d2c6be0c7e9d2284295b4cb95362ae08a3dbfb6a6fb594fdfdda28b630cc3db19c3dc6f32fd1155a5c41c5bbe2535d71c3159c155874833b0eb322c9234b2b9a58e1a3db7b29148f6093d7cb8615d32e6cde19a48028ba1b00ad52c08d0252dddee7bd94bf64b6d547a749155b54214577ef5451a4a9e80215585051ebf6c8f11ef9bcce5c9f92149c33e3a7420815a90498e125a08b044c692fec714c6f029adc9d1eff1a51028474cf3bc904a4ba7b0a2cba3d5c564b699da3119dc256d5145f7b2f854ee12dc5181fce3bc99814ac28c8f0bc5614b0285e5408b80002a020008703ece000133840d8ed7d7eab30f7d8e7ae19ffdce5ed90f473d7f427406101286c5014e96e0feff4b8acc41e7de28c2736f044adfb5a17a7cfac134f70c20a278230801906608001725406e89ab081d762d9bf3b6e5fcb47dc93917171d6f17e76d1aa157dd609bac52439c7db22e7e838b79cb45e27396d78263ecef47e324fd5045780330a904501a814d1aa02e414e046c5c40fba3bd62a266c4cec40802adee372a76766df75e8f03e9f59fc6f6406ebd0e1edf4f8ccf5b7e0e7b807731d3a3c9b27d852522d259af1c21e7769dd206fbd707ebc7584481029b473e47e385f68e7081122e02fb97616c379c6300ece8756c7f6150727ec214204fc253171e66aa5d06b6b3172bcb5fc43b9fe88e3c2c26179cb5b38478864724504fc2547960c7bc2f9b56ced9df763353c6b384788ec8438b15ba6424a6fd1c87092d7ebf52202fe1210e70891fbf7437ce94c8926ddd8da8894c89164c668739db5a0242c88929afc63f781a435a2a45577ef004a4afd246185ee8685e1c44944200923ba3b0922dded21710324a640e289cdb7373a420a47cc604ab797ebcc48ff856110396d435f18ceeff34a4edb114c8e584d238c60440c8c20f3e31772fd25c7cf31ce8f758cf08cf8c210f67a117d8f3f5bb37d01c041000c1080238ea7ad1efe6d957dbee82d296374578ba554404a929424e1ad0bb728dc1cd00de589c7fa3ed64db6f2f0592bd52dcaed8686f2c4566fe1bf9138530a433203090b274f7cb0a3237d5e8b08a90892778736316c5ac484362a481fda92da26a43f3cb3f3e88c231de0e0e0f410c1097bca0994b61288a955654d26427e22d772eb67d387dcab1653bfcd7a9b5e7117980a5c006c8351d706ddddc36995067d3e9f7b330a19514e108589283e5166e86eaf556413480c904790301206eb033bc5d22c11bba382514b50913a670654837f7021a09b4c88e708510fcf2b67a7e6f64631fc7a7d987eaccfc67fc0c13658f6b1c8f25ad667e3447ce51ff6c25035d2469a9107310722142228d6186dc1e8054616306a62d44559288a40d1116a868a62802aa13dd47a504b42556b35f6e1627d3541dfca3fb1daf056a78de7cc803e1feefabce5af6f65e32e9ba0a7cd91fe25fdab09a23f73adfccbb109f21e5e13e43ddcc77b78ce2dbf1ffec30fce5abd5e331b7b2914dfd7eb6973d2239dcf7b78610fda9d35904edbb7c489c112574bab95cd598f77e4b7ea78d6acb7a6d3aaa00980864483cdb6300b83a555b31dcc8ce81950b64b78f0c04833286805e4853c3c6f665bd45b4fc4b78438e8ee97568530086d77afb42a2c0a774218b007e016a009400bda00b2c8a82073802c94bda09a55e8eeafa1686b7c30fe5841ee9fe95d017ddefa583e393beefa826c5ffdfb6185ef72b942d1fae7f3e33d3cc847870e8fe20fef5c25a1187eb64723a50ed2ea9fe395a4b51db7596f7352e9ee89d4eda9661055cd1cddededa8df19ddeda9be2f3e2d6c5f3f293d83707c5e2f229badb10cc41610831571852d8ac8a288af881e507ea082e2826ecfbb5ee9ebf5f9ccae9cf5b16a645ffe21a0cf6776e5dff7f97c379993e3ccb259c3b346de27c337b24795e2e0101179912c898880bf044a135ba1bc9327d5c29e6801e54948bfb0e77b32a5bb9f44e9eefe197abd70409284f538d1c2c9049c3861393911a103226ef8736f7db8f57df8da8f678607c9f7fa584856405f0ce93d1e6f85c491f0780f47525f8ce15cc26238382edec2f1969092c8650d796bc9aa8667edf3bc607d5134baef93adbd4dcc70f2c49b48d1dd44a8897b30265fd492c624c9fe30597553bce40c2ffc99e7922d9624e1695b52a4bd2539dabbd66d889490d11e66fdb5e3ca6f752a99f2b25bf8f76d2a255fdb7ea6040523fa822849e679472522fa316df7435b3dffcd5b0ec32122228a530707272402fe92a11b4234106a809013219821b4f86a7f3c1d225640de754da7e18f634f9004829e041509d2218803d200d00d6887f696e7e14d7455eb2d1f22f87cc0e7003e4bf8b4ca2788cac73484c409243021b420441084a8420898103df490d123829e257a881c79c211071ca1dd0d43ab8e2839924310340802ab8270195982112e8c4461c4071e25f078c123858707154f8e1d1a74379256ed20b123a4da8141a705b81483dcc5fa3e9fd195e31614988e136f390feff1332a3aced47dfc4c5f2eeff3bea6f5029ae97197c71aa259b106def9950ebde84222828815d037b33db8388790a6cfe73799839e7f435fab85f124afeb6389e2d4f11e4e84f7f0a18f46718b625a2d907b5fcde737917a164b711ed1328a775b9fa5619d2bcfaf2fdb9acd592bc72f11744caf756c1d7fb814f1d36b73ecf399757d3eb3333afd5a1c22f56b369cb0474748ebffce6eb09c303a070bf772c01c18ba31b6622e6dcb6db994c174006b000cc75a367b6bb477e6e489f7e42dac169c9d111601a388140de549182b5204ca9358cb8315e90188301aca93d1029164f36a0808218d7346b73871bae8b636e348e138b5ee766b338e90191c54e7fc3083ee3e7258ccf6f5ffce62b6afaf171111ab2232c48726f8e0c3143ebc5e497865a17acd5e2fa85e9c6a4815866060880086f010a204212710520af182404115448bf6c69c1db7f576edf8a3570ae42e56f8ad955b7a677d103bbed6e6ad1bcf4710f73a6dd8e85a9bc7beb096e2ccb8dc79bd883ea198ed6bacdad7ab0239ceee72f7a66ddeb04e30f6b9cbfd25e439527579ff437e9fb434d30bd61d7779d7b6767cff46bedce3dd204b82a46eb470b3c58d143732d5cd0dabd2d50faf068847ceafe9b8cbd3218eb9e679afd2de781832c43382f239f1afa980640105c810906eef36c5fb47368f73a8f5e1e93731831389e707921f3e7ed4d0dd365af50346e5230b3e66e0030b1f46f8f8c1e60c1b13d89036493e5bb3d578aba6c603e2c35f140926c10bfc068817c4c685c39f8eb1cbfbb2b5f7637d0f56fbb3729b15bfafc4987ae1ff35f24d9b1caa9a32da23020212d2f11e9429a96152d34203068d1234de4c183359cc24a966c8191dbc2e3cd2ab41e502820e772fe34bf18e9b712984b3bebc79e56eb3b790588fc5395b4dd05b78d65c14639fcf17ad75799e07e6f7166ee1fbb73a6fb249fe254b7b6b19f9146f8b458deac4b11765d32fcdf531be3d46a04d02623ac6fe672ad711dd0dfe92d6085ab305a3eab1450fa31e49fafb5c145bdf47ebf416917b782cc14b8d803ee78101158f2678fc600d41c57a42c57ac23aadbef03e598963787ed36653c323e8ab89e1c972c94a92c4d7432fed2d636ab367b0b4b76a6baed2de7cd6e3757a7fbd5bb561f998f4f0573aec80c20e2b543b8ef430851e78d0c3133d04b517be8effd559017d46f0cc79bd3e9fe44d8657ee613aebf158bef2eff357ae3363d9ad4e914e7b6dad96479ba7ec877ae86e0fdfdec847ea7847a67f44c5fc48ba7b47ab78f8c2fef030e58707248f07a237da21023b843bf8a0d291041d2cd051a4e3051916a864a0e857ebc95ba5ceaae199f14e8f3b65d93b5778c74e8f5bf06543b71aa305550c106240a08a398a098a815179182ac7c2a7afba3f7f85d46f6f24db71d787f43f9fb7be1950d8fa643beef2582b1cd2d8ed8d5e2ffc39ced8822f1def6516e6b1f0eaf646433a7cd1dd3b3d3a34d1ac9593a5ab7408ea9a0da643aabb7b26ac73626ad3aa1cbe68718238072a39d4ba7300c246a4c2c108150e436e18e38603a86ea875f75f237f67d5662b8c2cfdff1ab1210a1b98d88053c3155435cca006d25d7feb746b6928000d42d0d0ca918300399ea872f498610a3338a0bb59e27ce170bed06dbdbecf5da475d9ea2f77792cd7df552c5b2b846f291be9ad4ef16b32444125830d54324840062664a051c9b08a218cee6a95d49762af11eaaab64e1ac5164f3712830e550ca9184cdd9da35530942103150c2a1816000314150c3dc0d0cdc23e13ce17f21a97f715a81cc3ff1c673af2781997e1e72faf9675fa0b5ab05af5c211aa1788747bacf08fa8a87ac184630b8f7544c5154c858389eeaed662b71807c75b353c63b158c62f53a95ca01a804a654465fa5af61409c4940ed50d23a86e4cb901a4bad1d2de4d2656200f4fc7f7b33d62d1d0d0d4d0ae75d5f2588a36d768b4769b629e8f2f9eb549f35b8605edfcc08482f0afe55b9eb1108748f8f829ce0f38ef8cf6f5ffd23e8ccd666f41718ed75671aa6c10a96ce008a31bca9398add9bc95a9aa8614ed81aa1a47baa13cb9cdd6b7ae75f2c4613064b4b76e2d71c24c21aff5f033110ca982a1e921d58b184f7b911ed14b7e9ee204f1fb6d8e5347f5a245cfc4c71e86d3552f4862aed6e69628aa5e5678c724470b53bd74d956bfa929718888cc806a781e11c5a983f37a11a95c6468d942d55281ee5b66152a0d152a032a94115e586de833ea37995b51549d22a03acd54a72265a45ac53204150b01586a542c2fac6ca15a11552b43a85670a84c5c74d738ad521f7f01ed00117933da7a5c96f6e67f7794f6a6c43dd6f7e3c4610be9c5d91f7d2dd7b23fa6b61afe3bf3e9d536c92155898c96a22a01a1eab0a0ea6cd05ef855898a834203545c8faab7a06a14d0540d43152754a9a24a01aa00a982eaeeef3382f49fbbbc9a7f8da8f6b9eba3f9fc26caa66c92b3a451d9385f9fcdf7fb6cf629e4bd28a39556ca83077e180f1efe0ae2a7e74708c6a4da26898fec984603d23892464b1762d0852c4e0f93df7d9787c60ad030001a35689cb8c0052e60e1b182561ed639e4af0faff0f7618ab770822d1c6dc1a5052668c1025a985ac871860bce48eaf666b6da519c7f6dbd78e67c3eb3f3abfdec7d2924ad91aedbace12c849185106481015930ca8297051d5808021604808525dee32077792f98bb5e33ebf2f2acbdf0fdfce3b4f98df57d2b7ce96485abe937998f278a1314e7df9a9dd59e2b7cd1353c6b31274f2ad015a8b4b7aebdf79d3cf12bd4ec0c768522dd1eec0a39ba49284f9c3cf10ab3c219fd7d56688015beeef63ebf56e71327c8630514ed96a4dbfb525c555001e8aab63a9eb59082b41caa426d9c558051610added3d0e6f8f04e7f6488880bf04e7f648a8a0830a334ca1ca14bce8ee1e9d9a4204a680d47a7a891cbb7bce8e901a1b2f08ab6605d41304f3ef73fc5889bf3e9a156335d7ba47ef147e747b66a4c08c08985100338630a393c208a44076d7788f20e7e13f7c08f168823e777ddf1714f479de120465252edde66cad100f1e3c78784874f6f88d44714ac167b028c0200a1b88c21885a0ee203e3cfc61b548f0ed8d7a9088224502852c40410c287401851240c1035020bb8778828005c582603c47dc66af0142f3c3ab61d5903b64e3630c933d132f03096544518600caa87982126ce0ddee1fb5587f44717dbd2c8d91f85bf9c71a5a017dfe8ad5097e48dfd037e43d5ce709e413889e70f3041c4e38a3bbfdc5c45d98042f70ea3c5cc80d108fc65f352ba06fe5f8ebf9dcf5f5f4ccec0f39a1014e30e2841b27c4d0042a348103eddea47fb333a1d963d5b86b663f9d4fe7fbd0829f11f8b55cda0f6d5f879a10a5093b4db0a16bdce5c93e966c05f4b9cbcb74fc379a3e8f678dc421c2f7c712570b627c679ee1eb45f47a119191d4dd4e9eb867646d06a2536408694c43d1de32b561284feedbb02422a34677b77f2d0fd99a0dc9e688e2041fbca51d7abd70409a67264b236b93bc5e44446c5f9710852580b184192c21b7474343d3a2a9f11ee2043f67e22e8fb5f2cff4da94608612b8e86e249d52c24d09adf6eebb3c9b6d580e89e204bf6cadd074fc63e4608c168c818131a88c61c518e018b13150dd33445c47ce8ecbc3e1fc1bbebb3c56cd0ac85d38445c87178b79b737b26189ddf695f5d9be7e2b0fdf8665ae5fcb252c095a7cddddb024c078b3c25e2f221c9cd78b880811249b93420245c20eddcdd3a92318e1080ef030a535b0c4ac4fc97f2bcff426560b1ee18f70438c148811767bf96f5e7fd6c2af758a24e955fbc53eb7b9daf05a500c12038811a860041018c176b727fb3b71a59336dd6f6f646bf9311d67aaa519e7fefdfb210e916ced8de15c92353c8fe0d0ac88f4611dc12640af174ecf0d109b23a922c40ce91411c820c214221469284fbcd5ca627913310dc5d20ea10b43c0a26f6a0842430822042408018a6e284f5ad592a5cc667aa7107e84904310be00699ea3cde5ac41602208341e9e3520880104278010240c268451451845daf39be8e3de0d97f63eadce3097d6660f03ad5ba884702af7a11c754c2933233002000004731100303020180d476462d1943c8bb3011400046fc05e8c5c1fc9132dc71432c810220000000000000020000000044cba11aedfda0887769afb08f78325b04c72c1bccae3367b2903b047ed04e42eccb3a234e6f0846516dd9e8f2983cd55a0abf82dd1b5033e21d18c8c584d18d24093f25e4b60fb88b086005aae9db565bb5fd64a5f9e75ab58c9f7061a8aff7a725207be0c4a2d4209d7146899ac5dc33a28e6a5d9d3078244dbfbeb57a2115e4b944a5344334b9d4aea965b975553f6b57be32ba72baae8d59e5dc4a66cf62d18dc66968c5387fa7763d29b7c2a6692281ea8b4f6996c24c0c8ea9a1c6f3f9eb3433b2c02206908e5bb519934fbb9b6850ced32305c13974c14c616b1ce2c5fc44679fa46b37f2a5b9c3c694bd6500117cb21a9454faa121f2aa264077f40808d430e7d74cfc78514c70080444b31eb8f93e5a11463f64206be81fd60c6df61cc267a7d880b083ae649381f973dc92889c0eb813c28db32529c73f2f9a45cb5cae43d02e84305e2e05e6b0ffa77a2a06fa81c08ac1663fc327d62ae1bcbd8c1e5ea66c1f1645166fff531e1d637e7b8378076a9bacc1edf6c385cb0a6233f9a9e1517c86fcb8b00ffa600fcd7d576a59f582349e9355b614e6d636adb2ec6713a6a1d5834a1d16c2768e8f97a00845bc98754cb0560534b9fbd98739d4afcd699362f9cd2a069433b1c0d13b186ff413acc408663d7c7e26d78e10712dc9c68c1f6fddd43f9af4a468c630dd08ef222b94ffb881d8970ad5e07bab5611884c4ba88262dfcf1ecf813e2085b26e36b44acd45d39cae5cc53c873a1ea4bdc2110acca1075d2b43cd235bf0cc7c339a980343a59b0b9a5fa3449ef0e0e073d621b963ade2c87ded073e049f8e3251df6c6b66d97df5b1a2356a1aa91263ec398cb28ece30da5dc27f255135681049cdd591636e3ef2e2d37e108b4373df79221f34b7d7b1a4559524985fa8fe051554dee3a13c1d131fb4d4764711d980d34587335f1c6a9f4a18f5c5f19ac0c512558119e1baf09b5768d875aef7718d3d51a500513b8350a060ab3d73c1d5312613e9c8061fa26611763d7108722d98d7c126126a96376820be2e4634ab81a6191c4dd0fd354d9a211543d8033c1180073406760d83b5b69f16f637b8f76cbdbfe33ec7f1cee77d9dc5b08e3c5e19b0f880cd23f82b9fe52ebdfc5a8c3aec68adebbbcdf1346b1dafbd2bb4d475ad0620bc1fbc1876e8d491c63144c597ec0c28ca1220c191063e3b44d00a3bf270863935dfd8d03f53c687878653bbd8ecdb49a3423978459f0c64e6a37f268005a7acf870d0b9f8fc30a143847752a02ad6382c732834789e5416c26053502b901efea01ab306a4246abf153ede63c1f14b681dfc765a5ee9ca86dfe93af85b18ca7a097c73971e97ab53f29c49e653afbbe5cbfc335060c4b1e42689d958b9f3922ea64cccb5fd7ca3e0ddd39b09a23464f88cf00e4290b91ff72e933ced8e7b27f5212d878d67b7f64034dac43c4a9f09f75fe83a0d3db752328eaeab18e5ae3310fbbc0236bec4f37a16864b56e38ac79de77eae08829079ec0e17b9dda7e0365873aad583e13b8a4c1c1087c45d6e4ba34cd7d7a84ff8c0345fb0537c38972c92ec3a78297250dc2e6940b625981677afd923d98a65286e520263014b1e7faa901cc2d416f0d1ca2bcf3f8e040abaf002d59667b3153bfcf9bcc237953d39dc41ac45cb70191dd3565107a6f8b66999985231a28fc6b958253a96db7818328de29dcac7c93f3bc583bd646cc7c2008a56211f1438e4575200ba988c58459f37945abdd3d5745186255a2d7ebd09352f3d4a8919b907099916b784e1a0c01ed3c9479ac8ac4f790058c5437486e6760477ef75eb7fefb607ee72077a29759b19715dec5878713a103a6d805cc43bfa5d955d01413b767bde6bc2d15602049f155f61bbe9891fd4a8207cfebb63943eb7210e85d4852c0a405bc54c6079a07ce0b3f63780f38c613a546739192723f2cad11744006c763bcd5139e38cc75d78e96d7fc49cda62ae9010d0411400050656d663b6eaa6bb6aa519ea37c798d57acbc8101b9545d76d57747750d8fe78f73c3eeeda8b706a9af7db387dd2cfdde64d79d66d1b7491ff18a3f965db293d6683ca568212957e8263f2c925f591324894ea5efabb8a7487ba219f34266776daad7e456158bff13b8e326067e29872024a9b66b92fba5b1070bec0afda7bd3ac674cc96bcfce858ec8d3ae93881625aab7b007a1b1e298a0aa9572b0933e83467046002029baa8c7892c64d12952d5970b2c75006d70faf8fca62ae5f77669ee1e4c37fa35f1d1c5dd58489d53e96dad75d3cd01c525a31b5aba61de292395578281f645d5bc6ceca569bf24f95ae313cba373af0a58cf8e2736550aa54d11a03a915312982382028e7f649bc375d82b28406b6826e490746541abc01c30b724ef96260f965630eccdc2e9fc2a669d61cc7c4d6948104d0d563b6046285451e3221cec218a082564b0ec4b7657ab5b964e893fa0780654d22033022f1e3deda5280457f81f6bb1cc592f3cc348a31947ba6cb2ccc5a708334e0027ce9121bb4086d830b76e7828f29d094bcd84ebfa652ffbcd327a831cac58fd4fd9f0154cb82316f49d63d46c2950a6395edf0c9bf11424252ad7c5d789f25724ff4d6ebe68fbcd4bd441e6bd44521c7223ac2f5b1ed7bb2bb7504a286eef37614492e7bbbee3aff313dd3e60e69a3d2a06b3a82e3bedbce55bcfce31b54167c67e2f528e984cbdb8d0f7fb13c6b9f4ade59e0c64d6be77157f017826d0ac905f3a6530ff268ed01aa6e964e8eafad3768207623ec6bb3026965bb9e4c6153bd25d0a5af402bc8678e9c351d63620f072c6b3bb624a37e86302fd9f85bef0a2f489c2c779786f27c9fca3593b001e06cbd75bbceec7bea5f5cce36d3d290d74f8b7be865b7319250bdb3336a1bad94672c8b2814c272827064a7109b8b00f0891a75f0b9bbb135462125e12ce032949e38b966a967c0629cafe3090e8d294f373f5e380e429618705cd4bd265aa8abe51dfd5f217fc5bb456d51218a653a0bae5cd22c19bcf6fec2fd073c8c48d2d5dcc0a168c8478b97b0e321efa7a187b8e68c40151be2c5d9f73d768b2f4a82fc1d49ed5e0691444c96c7753b386b39a3ee6b419147c4c78496c115183ad72f6be3ddefb24604fb1b0a479fa614e269da8100d47f7955c20aece03ec987f9b958ac364128c0f382ff4660c39ab988e7c4faae948a7a55ebe15d02afc73e39c98d1cdd10820b9311adc64b4423f3a8377b6cd7de243aa9cfee04685735651a3a0225961a8537e9ccadab5b9228b775dec78f2cb9b9595d5d10edea7060a110df288fdd9eb6a02730c3a21838cbe21b2916d3e61ba4c875c1ac9ba857be14b2f6ae20d1580496a248ad00c210e1b8ff39e236a956fe225ef3222bc7c75bf90dd8a07746f2fe715db11dae9c670f747beecf02af652388da150e1aac91b4075409dc7954830eae71e23d49f1d2edccd074f99c19967d7e642405f1fa5c3d47a10b58b70b422ae1e5d12f3ea8f9acc27bf56dc51e2b5dbfa0ffeb4586c07275f09af3ff80bebea822e8939582f7e5769468ef5c08d50249d94ec02d0d3ca37a295cd9e6800ee00577c34ed22150b1e02b6579c7616596562223ccd38957b5581ebd043ad9c0fba2365c52a37145c1e33ee24684d6968595d041a134b9769ca9214d094fb79d8fe971fc3b1e8f4b11f29fe4cb7fe7bd82b1b02fcf5a84a6243736675e2eb908bea658ae29fe3a72ff77721da66d009fdb9b6447270d5f32be9a5fff251a43d934559330f4af69e791185c5ba2007ee0ad01e460b0a2a877ee1e4625fb8c35172db80bc30fdbb2dd1ae42658f79e873de8ae5ea2f785c9cf7dfebc4bcf02ea783eb2f40906335ab6191af2201c0b87803ea70c4224514cf5423d2be9c7bf4d7a8b333c21e0d7ed17cf87ade42c1080400a71b8c6420f147a1f750d75dbfbadba614817eae218652b5abbeeb09d9dc74c0059050be39d6b0a2ce860a03402c66f4cf5ce06fb85407d9b588752584d1a1f40af4e19902ef19ea60a40ad3169f7d65415528698ad72b40ab47f593a0321a0175a37c7cfaaa8b36c8dc0b71531cd0b44daae87c6973563ffe1d5f1ab65c28207110555c4fbcbda1ce4bc62961d24efb0686958c882e5978707200b7c422df8e1f2c6138e2ebf8872c5b3a7c41a3bd801e8b974a43524fb9ff5c260cfd6ce27267a7fd4e40bbc9f0af8ec191f7a9f5fe562d511c8d062b572b282430bf053c1d8c35ab8cb4fddb83891efb871c76df8af35b1a23f04f48f80a951cc77c8016c5e145ed063c607325003f9558945815bdf71566fb1fa8562e763c5010e8bd916b37470fc0a125df19e16d487638974ab0e2267283df65a6c244614dcaebb7900daa7c0da2637982122a4d2ec2e3ca8599d12e175889f48e2bcbcb149e24232a186bdb3155f396aa5e2edd938883e011ebb5d17cd901c1c472d100f6a9062bbcb0c748461fb8e0c2bdc48db0e912fc5b6649307ee2329692a0195801ae92f6da29eb4440e22fb40f135851e7ad00491c75454033a4bf175b002d242416dcb3c0c4694dce56bbb536124f1091901bd92ee5ae3173dcb0723333f2c1c89de61c57da84997526b72f90aca662f833ee25b3b1b3f64c9c65dee00c5cc48202c7da1ef2d0ce10399db8d2ff1bf9ed6b57caa2d7d179576038f5cdb0169352807070dff281cbc7bce8b318a268b6ca416a902b3d21b7698896c03f785bd7274b062a36c88de240fc9209d06d0e9148577bcdae851489b65b3d41ee497438a7cc1e01f63bfae3f61d9097c2e767238a44434bcadd7ac85385182fee684ef8b6f4ee138c05849df9c2e82892eb707298f25339c5d6be196968471b52cdf57d70b883e2ec9ddfda5a2239814a094fbb501a3fe94d93b5bf5742eae83e7c183b8d17a2d34c7afb359c15cfef0d7494b18adbeff0e58a7ffa7b3162678c4f3c26beea4e75de5cf0ef32df9e341e857305f4beac55cea2f79d9c9b2c9ab23b9cc2129c8ce0f904eebe5daf89d56cef986d23e88eeedb7fd905b7d4e148c82a006a64821a5242893b72f87741e809c153beca642dd0bc301a4950c49115df4f836aa5e862dc3f9d171cbbcadbb2805ad83843b1e31219d31763a964bc8f90e1a21049753dabc32b904b1a7785e93114a00d0c42999fcc4ed8c4d27f87452a1899ce2518e56a22ec183cef33984dde2bd44781a08360862fa0db9d8f331b1833b230de980dd679de2d254ee41c6e15c45734bdd5837774b805318227042d8034b034bfb91bdeb21c560008ac360b0c23f4d992c69cfcc3eb1f12f3fc602e6eb90506c56d53e9714611d96b6933e104106602a17a893102a43b2d6a0ab8f416462815e57070d925e438c97a36861ef962f34a243cf4292cedeae022ab24dbd56d8fc5805f4172f5d83d50f096f8cd3d2c250aea71f728628e46f6a6d2ff224170c6644515444dd698ef930d3e79bbfdc9337bfe85644b5f0478e7b529784445f4970069c65d967a255f7e1d124d853751d0b5c15887025517945f30d85c79bade6d8978e4aba21206fc7dbdd8c41743278b6c04857ccffb9230f848fa361f0c287f6d3e501b4fcdff32001c3c68b49033401802cecfa57745843eaed5bcfc99dedf6d0c142ab2d78543c6de8d0e90796b60f98c2f8313273e6b2f37e24d54247fe536d4729ee0e25348cecdad172fb0801c69e012055621c769e818a03ea78d4ca02780715aff317ed4b32798ce592a7e101e7d2828e833ffdcd3686f3befcbeed6403ecefd288d2de2690c3ae9061d640f23f4e34a458dda5784b5acd9c9f4515b1f7bbb56f6b3773ead66db941f578eec6fa14fdb0430cdd9d883e86e115a9da895c5fcf808c7e7dc4c4711360b0b351cc8989baeb1b546e09dd08e011fb5b45889ae501c1f8e1102a4466b412e9d513f8b8dbf6f7a089d40c729ac328f11148f2c4070ab30c78cdd0f84c0a8280075bb826f2cf8cf6616136bdbc2d147614d69c27a76f9f5e83b238fc735c0c74e4fc8b43a07bcd8babc77b9fcb1e28085e8381392d87b77a8240c2b3fbdc61d61dcb90a5f45f55052a6b99b67ba07e7b45dc05e4f595253594b56bbfaac5026e3e52c3d1c3c40ff6c366d40ad9a0b8243a884c9b86a442ce336aa1c028303103bf645a2bb8e48f8b78bdfbdad226a923313fe6df2fee11225e8f804cb96d9c5c32b2c97e2186ce151f6d0449c715c089b51723a4df1ce99719cf1fce84705fc701a841fde70c30028462499752e1b0d67ed6a9d1250700a7a4ec769c1a1c8d314774f3f49828069c45cd823fc28ac044ec8c6305c5e7ebf46ba3c8d15b49e3220652073d8775a5536173a58a9b149b5c2ed51ddb51c88d59ef2040dda8e4eccc888d14c38e0fe9279890d95c684ed8709534b927e9d73673d1ce30c55b69eac8b5cacf8c3b7908fc0316be7e5ea9cf361288fd09ff0a7889f32ac3dbc272c66d34ee44eb566cb6616b9004d414a2e34303aca0309e6d2418b6839640f11195d9d059e69d8683943f866b4e1a9ac7d6c0ef67e38af1714109f646bc715924f35b0b84d646a5da4bc72d12a52effc02bea9c41e1483a1b91ff9cf879338395b933482a81ffa305ec61b3d9fa450e99877b28b4a91e537ee00477908d7d2bba354bd2266ae66c4d79a7302304b74f15e40ee3a4410e507f94c46f146950af646e28711119793dcb305e08b1a6c5e0e13a6e1b354e42762989370473b8d9aaa28f4f3329b8ac80ae38bd27c77a3e5df61928cdabb12ba0f2fab2f3e5b24505f457e69ca1f473bf3e6cbd6cfb4c8f5efdfade855925f6840bed8c0129a36a1d382d9a5766438245060db531abe9bd04257405c5cc7c20515681d6245e385732c772480c4a3d1ac3d42c741988a0d010ca4371d4149b999c21ef921cdf54bd259eba34be3237b920a263d0c84e1dfcad872db2e279c8951f317fe282fc5bbe20d11b1feb7a2c505d40bb36f9ba47140e6ba3e8455d0137eeb07fd7d1a708facbacba10504df1fdc3999982eee48b09078a28fdb3dffaf0becfa07e2dc72a1263cb6c661da8b11d4b9798e08ad227ce567f5d8c37e4206470c4ce0be3e58932b12ded1518f80cc4ffb23b4fed00378601e1c9342be831dfde1caf57a9f527b7fc1baf7379487b165590e150c6ed3f260406ec46b2df50f6add17ea412ace4ac4ee7ae67f9263e9aede43cca9ee7569fc9a265d1b31bffc1d30ba32e0a47c32c1f8831b0b0ef78eb771ae62ecfbd10c0f8e8b0cd8fa1624f9bdf36c560edc9fb00fa37c80d27dd453b65d3edba350af47032e9143709c3db56b1cf0ee4cad3fbb2f6a7ea1f60fa958923cbd6bf413971170e2e93664344e77ad632bbc1f42da3ec8bbf5de4b3af4ee8aea5e356e3135a97c055c350cc0d79d2fb959404db590634d87de15c6742a077647e81102cd993e35d73c8c6ff85d4faba6a5153a7b3d57c5f1e001b616efc2e85f4a02f0099bd8fad76b16c321f1a283148ab44963a231325a62e88f265bcfbac97592bc0a3d275a14aa50cc9e49bacf50353a4289bb79a16588547410a2851f00ac89dcea2fea04749c6b15882726d7e685833d27eee91170c8cb9aed7d912e8b592e2bb75718b776503b3b1658b617fe81d6ac116f96f1e74ed970d6010dcc004a154f258293263fcddb7bc13de60ccc23db69c0d2bdef3fd2d496e20ab54b661cfb1c503765faf2ba749d90e5c09029c539e9a3dc110408d197333711d922460b2fb041514dc4ece02bcc90310203d63aeb707f55136b7fe4cce6ea7480eeeaaffb82e27182d9c6ca18ce084575f3c28bbeab2012ba32a085884db1ef14e734267931fce813e3a6199229faf4eb0d6973e8ab300d7177e80c372906c94874c17a4a8e9c9e2de20144c7345b706fdf7f813fb4a9ae20d3e2626ff8e6dd2c1f765b14c1589d9c320cb5f3dfe16b5cb83946a778b68067722dd6ed4584dc9118bf35748b066b11bc23e2f934b5556500b13f571fb10179e72a99ccc168499693a795a011d905c04540adac1b7de17c11c9a163bff23124fa75fa28b95e32191e8bb80b2de9e6cb953c1b5066c7a936b393459dedd28cecd0bb963673e68ac4bdd19cd3ce82652a126145b6b8e9956730d9316c21ea24ac8f870e8db4065600916c167c191af7ea0c33d16df843910ff9bb3800c9f06aea3b7596e5262bb4b91bed09a03e8551bbf006446f05b2c98ad24be6c8e878a8566e3cd3e3e96bc201b5a1c52722485f5398095e1755d171db10a8be01ea6df51d0b07a717cba463620f6d68726b74014c3c2da1a548459ea9387b8bc9f9d816b95ce205ae96cdda4ff5633afc5e3fbf21813082def593232ddd3e4eb11f9011a5b27cd7de8b41ed4b7746e22b699b18e4ab7cd9db123d8fc9818ffd562df25f49ef0dd48f225c3eaabde396faa2a5f594b8019250f77311d0a23da9baacb662e706fe8717478eed2ae3a1c4561f69b0510ca9df8e2d70038abbf3d3aa5f229e1f745ba105d926d2c3cabe5a3b8b86cd819a9877f842c271f2dbd18514d95af3194c7a770572a86a6cdb08581b1887cc9333ceb5ddfb4bd6bfbdd68f302f6f0b829cdb59390fb06cc169530cf98085f9b41229e4b2da9b65a90d982e0e6a7b3248b3a055ed1c5eef1a2337c6e1c35c4b55a8d6004e5beaa0fdfbe2fcc85aebe7169360e827db44d0db4b2b3c26588e08d95c8db821b61eafb2fe225dc9ab93bc74cdd0d4137386750309615999e887398fd378ff11dd470dbfd94f4076e885d3fef031e16a7f756822dec0b8d7e0381838acf13b2fd80f5f803e08f4432419d4023271fcf665e804871076b1af0af22c41268fc385fa200ec9c2edd168c530e2d4f445de438e801ec3c08654f76faf1d8e6d9048416dd76a6a56941720195c5935432354c1826a6d1d51c408ce0a680aa15cd073c6ed137dd5b9a5d26f9fce3b0d8efd2b8441707c0d945200ef8c76663dbf67365b94103e8f4ed3690c7e740c9be4d547ec2a453269065613a0b5024397d38ea0e66cccce20ef42ea41638810803feb6002b0195243342b7163a293783c45be3f89d5457b1b8a8a3cd7b6de37f45f59c2898ba15cbe6617c0a08f7abd4fd6841686fdbb00f951ceadb62686ce2b45fb9a6662b9fbffcea60b88d029c1ed1cee53b820da16cddda0e89a41711656c438f68bd0a7d55bca58baf67e91a552c6099cd14d57d24ecab56ce413b74230800aa8e8714b1eb5cb2b945e8f4ff2b7fda2d34d33f21aceffe4a3c36b69f198bf90571fb5795d93987f599d5bdd33cbbdb24850018fdc4d905650ddb9ca07a65cb5cf1ec4c91f56d784d43a1ab1b88320b26e0d5a67f775b52af565c8ad6de141189783c80b22f89b25b49044c8528779673971b6a9419c769c44faaa856b3e8844abc098ed91c8481145c4ea2c2674278377445c325f456e501e4cefcd68739ca179b32382adb9832f9395be4bb4c3bbde41391bc5033d2a66160f1a0f30939cb27da4c0c1bca75372270d21b2581af41623f080dcc30e4fc356cdda8cf3dd827cea693f9f7df19a092bee3c2cf0c640d093999fb97f4d56b08e4db4ae7916ce523fa6e8422248458cc8000bbb7100a1fa3c18310c22a758fa4936a980df3e817f9e95afc5e170f49abbb1d9c913d7ed0b2ef82f6317c974d905835a8edff2d40d56ab5cd680a2c4d8bbcd3b30f82c8960cd43f48fb8131dbc982049a9c0650706aaf6ca13d926333fe0060849c3f25514b27fa93d1f56d64b6a5cc7638ad377a3384504b3482982672b13198732e3ef65d1ef6ed6ba0838de5c40d30d79e1b17f7d6a8b90d44c4984b063ef60f92ecb81d017ee1204f917f890b0e327780b61c58ba7a3f93cb4f98e28346e71cded6f498d26b3bb3bb6cae5194d4408f1c41594fcd6c0423d0dd547d4321231be30d604629af21f70a146a0a0a87afd1d7e0ea562a9efc2540a8f7a17c0887024be147e6de245e7a7f93969f432c9c58517fe0b9aa485def07be0c657495b3d30d6eee2843aa15ddfd765822075ea06dd03d10aef7e43c5120dd203340ab9dec3f49ad0f265032c8a6a198b6aa8733ff49009e7df7cd8f1af1cadc3be7288362833a5a89b2276b987f4f4a7cf31b4c7c7cd2496d80b1ef49d4c010dc473f2b2e624f2164162c90152ce30537fefd0046081b2202e9fcdb45f86c1d594e88536642d8a8604423848aea579f70523b8df8244d653ceb275c90f9d6bebbb61dbda1d374c92af3394149382be1e60a6f35e35c32a111aef7bc95bc6192b18f1f27d4240ed0c9f4ed0a3046969b77cc0418d6409c4c8c39c27f0f46d418d5f6e9d3f87d71c58798aa71c188605a2996e5a5534e6026432eef19d0b240f4ca13d8ecbc8704345894cb7c7257e26f388889858645a882607291cb16f650adc62d05935d3aa218e5a71293c88d0da5a7c11e794724b4bbc845f26d285f611832dee7b2223739ba1cff40cfcef10b856f68bf05ecc28917ffcbe5e70464b7d2e28328d1c79a260a00cd1a3967974ab0633735d1ea8f2edf79995231ac5693905f097bc50f568fc6a1ccb1583a3348164f05cc3b7bde6c41c7a0eba13f67e2312de45817f9f208a70b31008d1a62549bbe9177d6a5354c811d277bfd63073206e0ddc06263d3eae11bd16ca4e4ec30cd8b9d55a352c9abcc4fe54891aa94c1ee9e131a8c7597a1bd8886ecee68e264b60605f722f23204a7af83ee493eec173bb3fb8eff75c66a493648e3c8922353b49a648d2ff386d8c797f266d293df908b1715b5b84068676880c84e55070b17dd23465d8811ff214221a3a07e35006bfebde777ebe1bd54798e79ee8fc11741e7c8f8a0bf972f71dc1c09ae75da17046e8455befe532dc8b1762ed5831221d458c638289a10600ad82b86fca13f0495f7b713ff6ae170c6f8b32fd0959c273e61f682f2a78c44056b9128c348f282b25fefb3b1323b026779d5cab53d5469275524fefcc4a0fd67142fbe6591c35b927a8129fd6a80bfc2ef1c10260026169ac830579ff3b9e66d787ed5839b94e9a5ea58969fd5c680b8ba8a59822cf255f65d40dee284052da866bde286129438c1992fa4da6bf2f8a94671462950e02f7bab1c0bb368fd5983ff983018bbf23d931d7a9595b7e6953c7e3464eb9ae96f17a43a05ca3a6e5dc3b7d98fc0c42b12e2151d6b45d2a31f656871a7dac49d8af83e01af6f4ae00016102f8cc9e547f0b397beb57b6720f3527a2e24579e34054716e6e3b6d8af11d1159381080b4340b42c343d9f4acd89006baf60334426083088e0c59f57923d5e84f4f967a98d4dcdf9eb301d8ea5136bfec468c716e4ed5cfc33ce9e8b625ef9f48bdd379e69daae917b29327b659a41ccbd888ebec73548824d89afc4f763fcf80cf8d6ca94333a9a780db91ae25e73816f114689064f2d827917ac4c31432a73911298ad0dfa81c58b7ff829bb22661d04346c79efdbc97d2ee229050c36c55e43249c65c563ed1f0758913de6ce012fc42f1945f3835b5282a73abc908e85c0f1575e11298af0d309d82533ffdee8190c825ab3150c6f766fb23a36988857cbb5e6ea45ee189b0dcd5c6b57754a64eb0dcdb8d0a79eda1a2410a4a23c41c88c43b1baa3cdd1224478cbbf7cd2acc2bf587fc9d5d0ec77412abb7d77fbdd58d286be87eddd22e26baf2b63ad2ac8d7f46c27c3df075cc5112aa2280f5316994f04b111efaab0e911855e80531df08431d3ba5a7edd82cc7f29d4f8c4a47662ae093427fb396217a01e40f6b4c7e1963942d720bfd28d461c9ce6cb824545bde6722b5ed1ae5e5935235c5088682ead1025f43e4c01b1a9805183a049cd32d1a0ed6b7ea07777b26aa5780b6c15f76936d8073872b0b2edd900570883a67be09a670b0cce582976081d43011e5fecb18794fcff12d3d114d9b490fedfc7b43a4b812f57ffdcacf90532b69f3de40df0ccc9e0496b0906bacc4791605b52a878fb737a6c0233c21f64cf274f663f62585c64660f1995ef0178c86726e71fedc3668023f20a184e0343cd4ef1dd7d6b5a39cdb19cc911e893816f4d39e6250934419e081e55df051303902b3962017ecc30e36f5619249228ce75e4fdd680e3240da8eab1f3f352c7a8a17b2bfae72f71f45d0d681944c387463cde7cc97f01ae28c28609d1c16a2690745590dd54414ac79899f192cbb7cec3c17de5460c5e4d85aa8e1827208c0340284341cea91ea9c7d174a2072ec7d3c4fb9afac83c6d1edf1a17caea69fc4b80e45d3ff823b554008db76d48faf8fcd719f2c8591a08ca427af01af0ad658006ad0114a2d0bb00868e0211c44333304a7bd16a0bded7f46a7ebe131890e938a3626903dca1e367b8dac1cdf3a2b2fb9bce23c2bdac7ba0caa9e725e5545dcba23fe6fc6eabee267f6894d4026123c6a387811c6fbe6f9032502b2577491b8cc892717134a2858847bec9254e9c4d66f0b5b75045b05e3bd6c7c8310fb65f5ef7deeac8c4c02fc2d88b2f91497421ea107b6c254d68e40e0b24b4e2bda22dc4e1228fd49469683cad88afa8128dddb37a1225ff961b84857784f0bd6557e34570dfeb264bfcdebc62008325781b1521df392d37164a15a391a2fae0f430d56e0a8de3c9494f74a72d28ef3c3a196bc053c967008ceb43a7b5b27d4f43d1424d140ea5940fbc5eeef05aa782b0f8162611431b005ca1747c11d3863ae7b19c6922fcaa09c73eca28bac06d472598718141c27b655cccd715038eeaec1fa5fb91d41550b9eb98142541cbc840578dca851c1e1ae5586c07650c4ad9a8dda0f32492b758a55226459c44ec490458db8bf25933669e9758de7a795eb918ebd04bae71b7712411f7d77e826ad4dee78c5c0f96b1f334a28b182477d57319638b2d92254729a1dad9382100d0a3c06b7caf68c5f1be6dcd30eac23c9ad9e2962ad0dad1993f3b63005895356bfec5cca48c52177b7b5af5134c0c2c840b39a231f08a220cef9ea1af4a36f91fbb2929724631431c44f61b262b9c8fd1518a4a85ec1688c509fb2a386e370ecaf5d5f4998fedde85a44a49d37de666e9edcc3a7db7d792a455cae80162663a33df4e6b630b6620cb4ffdd8b2eb9e53f34bd6b4c408ad33c10a6c2f135b9e6ae8dcf78bab060188919017a3862331aa93613a4a2f1373e73c7397b6e93142cd2cfb9c841e0791e5db95f0da9702dd2dd4cbf2296ade4a2c45c1fd1d46b56e16da5f810c7545e0a01c6338dc180bc6794cd8cccbaf923a81c54e1bc0903b6ffc6814418abd971d20c7954f1a3813aac5cff3ae86f2e2637db6278f50eb82f9e35942d6c80d7aa676ac142ad64f4bc53728d5c562e82caa37f3554394378aed027999c64e9570857c4b3bfe58bce42c5b54e598896e20b08909803960cc1989a97faffb5af6ef74cd4eb28f567f43266f28f2640579a5d065b9b46d1b34ac432cd5a5db089a8a5f333c17cba8a907cf90cc2a3dedd8e2ceeddbe31af09933dcd89ec53818a3a0e08151df5a8e0e113fc4adae2a9d4df08361bf61cf1f02bbf880d3bc77f1064313c21ab9217367c3cb86001fbbdab55c2760fa4c0ec96c19e228d0df8cd37969bc5464daed60c9fd054f8bf681d757ffbcb31eff1186b5b7573e21e21ebb8b40e22dc05a428b06022d3ea5baf59e5df73f55fd2c6301a4de206fcd64de5383cba99dc76a11d52f64efbd66744620c5f86fc2a40aee3522e53740775cfc65e4ecb063e263cd955c3839a1efa0e62e9fd7870af2bc7cb81e73d7cceed73fa05612f39ea2d4d472dec75d9ed32a034c6d118c8c50ff8bdf7eb72ec92ac06bfceb2fa2be3c801646582b6cb6d998023a5eb19cd2a8c2e79ba092b5319c505fbc1c60a5b504ca03380237bdb2c21ec1f85c411f6d626910af1acd52a5d224d6ccd2576765f96b29d42e3a8c1de4307987f48881df89a1c1c6348a2184fb1f43ee47af4f3da1cc137d7718c2b41a3c5eb452e23b21adc1bf38a7254ab1e4182888a6831ad55ec641fd80d5bb5a688634b4e3932ec813713f1997cbb827e5df754bebc997654eb6b934e75213cb600efca1b40fdbf7f18405e2187c4af33dc2db33c6b151c708ccdf9dc0f9a17a92e33eea56be7766127046d041820c41bb5558ec96acd35fa49fdbb4af4378c5e371d70b9250323a495c8682be544cd70e9d8fe38e39a3bff1789956178aaf9d388dfd0673c7b77709e514105eff2ad1953aa9bb31996687430100e2dd5ea32b6d12bf2315db3e525107fa154caf3f4c56ee480e3d8eca45baad7a640d82d15f5f26c21eb11d7d472645073eae2e8edcd3a4e18bfaa08e402fdbb65f04d7c66808c338cbf841c4f5a2c9a0a538e819226fa5378f3397f5f1adbdfab7ddb792a32db547954f80cd0521147f721cd6cabbfb0e623e11df3af97f364d27072c03f01d1bf314d447b960d05830fd7b0ab3b7b53247f1aa2b9e7e46be656b114d4f95c798be0c22e72bc80fbf9e2dd7734ed33b66e441538270e43773fdf7983ecbda7797ce53e89be25f13a1ffa4f74b00791f944affae09dde756428a0926ed1b857b8748c802ec34a5035432c9efda15ce28beed26ecc85663d3eee619a703f3044d8802e87281d2832caba7e0c5a88f6638380e7cb31014e4783c7a40b8a88f90e3f6f3974b5f5ed5b799477465cf5cf7dcd5796eaf569255fb0593e0f0920bfd24bd6aa0951b93efe2dbcd45e77ee8eff0d5a681a801fabd3d07c05f74bb87ab383dea01251e826cccc67411bd660bcdd57d978fe94e35dcdab33fbb0d1c4089d4e2002884a5a9bbaf0696363593cef20094f47ff0fc3c47aa1c9bbbb3b24bb6d01a7c56f89ffce997cc74242e9d28fbe21db9f69511ad6f7d656bdcdb9f465017ce4e303a5198d14e4de341960ea3acbc8bbb5e48146ba1589af905b597352d1fb3e1944f76b58ea088c11b83c9cf43306d5f7f0ef29e1772f5c85a09fb45f28ddee4b4d29d07ee9eff85d504c29e6381613a633e19fa66d0f204178d76855727d30bad081570e442bc4a3fe6dfb065fc40c19fe8ee1a545ed08777ced928777aee7422267a20165e71c5a7ede440cb959c4d69cc6b4c9bda276676f8c31487369cb50fa1e24b978bd765470a65bbd3427f10c05a826e04fd4436bd2a58b927721d6220a5b0488caf9b2ccf12c0e03162c65f9638e8055600235470266305f1dade2c7bedcc7128b473d6a6fa58ce7b22df91bca975b3bd75c057ec998b6a51f2ad83a76605480ef0de462835be30776af3d7fa6c95b6724d5541b92e5fd532056b35f3404e529d85afb473c98ff12da5ccc708d87351308bb6b04e0b818e524aeef815f69216c8a4aedf3b3432797e99c98394c1f8d8e42dc0cf3b328f9d2a8c3959c9c40a9717ba1fe0c44c0fa4a6599cbb93a6ae2ead92e376e7b9b24e1c8e83e5a7104397fe692dbd5b857a3dffba119060b417fa5d399edadea362bd4e7331c3b22b0c1f98ad44b83ba86a00f820eedb10b083bd46c1e8411679521a4990b0e691c5d64ff1f4547853c3e5578795de082b99897327c68b93b02612be22a8ae3ddc1fadd4dfed6cd19f0588c5a46cb2ab886804255d01241695beaa5daee6453440d5d9b2c3643de62cc1decb7d148958d94f91f2bcba027b12d9797effa1b9b4d79de3402f07fc9edc83e85a35b9b0f167b8f786526e950a8355dbb82108bba313ec54eafd5d1f53955093a991b14e96ecda31159f79b0a961e5b3e94bd36768e0babbe4aa26fa70b6a21d73cb43537656cb206cefab58d84fa3f55af76f1736136d0e0321773fd317cb9167b055f313da3a8997c50d00f70e4472a4e0e355b34e2c328740a6d20b00a845debd7fe6b7875402130d63c7ae9aed8948a705cf45b86df8eb4812e3aee37ecb48337abc6927dffa868224d76809512a5e81d827a2e71aebbd3cac8c5fb4edce8967f63ffbc13c14df0f495ce628599b238877c427d262652e76ef6eae42faa089ebe18b62932d3dad00750af33ca9da1129cfb978ba54c6128ae910c861c7af98667831c5794de1bb236edb6e973b0e6158264d071ce4130b64acd00b7a6745b33d8597145e0da21bd1075888cc82e3b69d7e1fe46d4c5e1f8a5189b10e9d230c5d86f6cc157e9364b3ea737e9b7b00372f178999b48044b01b1091ec7f42924c8caaaa25a5d037d20833f4bbced1b0c7c9b53d34cb757864f0ecd7c955e5d5d0416f1ab2c2c6b4aef98be0dd0b28ddb54a6218504936ce42ec9fdcb75f15ea4d849041658f51628c84d91d60762cd104aeb576a773395831aa36b6fbd802e68d19e3974d3e951783dbbe83f8753a9ddec8f6f83e8ec5221307947e4ff778bdd395f4d72bb2a128fe3dac3d0263364b2168882b11c6a331602354174b83a545619fa61903aa5829983309abaea55caab7b1df1e55332464e1808cddf57373f2541440c01de2d3bee179b49a0e214b2a68a805ef3fc43a25a25c78ca9841ba1f7b86198c33ec5c54675641bf1848764255e385bc64e8e04bc03b78362bdf5c93e0ff48e70adc41d359933f889e2398d6fb709caee43e36ecefd7dd21088edc3a322c580186f9ba414f1e45514db503569b1e297245b5d48da19d4c310c45a89709d66b6174889eaf2154a79f7a1b3ec4bc47c6d4c8f070bda88b0609087174b2447d6e4eee70cc24b50ef20160ca46afc8851db8260b7815a6f68ed7d6e496fc0c5a98e3fc51214ea4e7769b9b09e0dff0ef2579922798982516fefdf2be9cf6d80fd4554921790813d9f59c46627250eb23b1c58f0fedb18a44b73f348b5aec9efc809e4b4294d523865b3363ab21b01789d508f800f4b3fed70b7b2c62d8254bda249cddd2df5ab3c2473e0fb969865e1507464930fcc17ce4221e56bacea5df2063c59d5b8203eb7a3be25101057201712638ab26e50c25721d17e0a44522038dd2d158b65bf543540033d427ea75956e53906ede8b6a878b382e8ba3240742582774235a74a064dc9ae9a294700c9881466ca5f300646c0fff8413682d4e03a075c1ebeec8d833445ba06820af79a8becf0de89fa6aed110875ec290b699b272e468fe48d934420f454596ce573808099bbf069c15a7e51ed4726b8ea00841d1192ca97f61fe1d491d32687c7ab40e92f28eee9f41c6f3b90694d9669fe0643759dffbeb29ec6cfcd52936fc50b02b217f8bed5f23bdd3398e3685ab95cbcd1751fc7d4e9ce8a94d3a40c071ba523aa68f733da809620e33d886f7f9beb5235738fac119ce9facc2834beb7aaec8cbc657f1ac4ca6c61c29480ac09cfefcec56654439cd1cf94cc7adc7ee861817342f7a0c0328497b302f08888c7384c0fe716b4a9c8275701b542531fa7e486573da37f781474aeea9e9bc54fffb81ec958b2b5be53706ec1cbb7ceae730aa74e45c53a83c351523f7b938e4a9156db78cb51b72c9dcdb056ab5a81b8ff619a5165fbd7bf0ca7959ba25f6c567c1db65c2dafe3d7aceb9e898ed6e1cf2469e00ebd4313e192f0482aaa768d612c8ad798a0d087ff0f180a799066ab137e12079b0fe98d37e680d34d004f81343c16bcda0abfea9fbd8e449344d053b3f40d605d238f183e41f8fe21efb58f9a9b17fc7b3f79b03fbb3e3dfa178f9295b2ae67ae55171a90747a56bbd452127e0b70567b6a440586d3d7395611061a6a1c8b260d48d4ef0589b4608c3286db099a49233b94e65ada6fcc45512c284cbca43f72dea0986d27ada81fcf2f0615cfe168d6c6292a4a431109c54569e343d21b6cdf45c46ef680af52a7d945e971e4c21c17724cfdb069d4f44f846ae1f652eadf62d15171459e7a5481b072b8eb09109def38d1a82ab692492b9612f80a185782a88a32e83b9d68801870fa44cf5195ac309519602019ed822c26a3874ce649a2a1729381d68f53732f1efb2a790178365cf34d6dcb557d381e4524506b8a946755bdeda86aeb25f921898ab6e715a3958bf064e057a856b05c91891cf66375db20351e59a455e4a4340795a40f4ad8a53501cb5c0359ee706381bfa24a01f52d4c6fb3d46faa9da617d337cf3fa118d492ea15868094297bc7db478c93565bbd95fc83fd7d2c79765a33c2962ff7e58ce11d32b5f22c90cc6e8ddccbc2dcf335f3577590c72ebe10ffa08ad0e82bbfdc532fdc1f4e17cc349f5e324cfcccec54095cc912d9d1fde8764b0b54f5e5fdb5638771439e6e7cd240b75605bc66298f60877627dfa51890a2255a0116e9e941f1cdb9cb2b3ba2de964a36166cb1c10a401b5ff507864f2d404e1831a165c7c13945ee4121b4b069c5709dc03096009431e4dda2cacce96234dfb564b3f1587d2d915de1c924d3e56f230d806b9933d39816711559108c6728c3236fcb1ef57a3fedf79af49c60530335e7971cfe14da3999702d837c39d6a28e9be8376cf228cd5d73ef4974fbbc3b99446b87f8ea8b33a4832fb185730c92010e5278502927822cd7f6e802c5db739298d97c72844b042eedd2781fa40c91624665c6c56e91e7743066626e76c738f6654e27353283322289ccb2e057f058dde649a564c2a8670c9ff3871006f84d1351ff04708ac36e54ee1c2dd2253db83c29b4b5604bf0892d01714f77ad8341f602780e587f61edaf120dc6ab8ede6b7a75b5a0311a719e710b3e1fb6f66a42b15868d72cc27ea48e36fe2728e2876a19a89a096211b120e53e438a9d33936808bdb6d858065b325f7362aaf61dbbda818c9155b6a5bd3f6e9c53800f241221e79b26170b7a99ad823a9181754f7a573108b1865a25b6fc8be1c7bcd5ce89f8888915b7ac0a04a077419807f4b0835bd1bc103864de311d38e5c726ce001fddbbe4239bcbb4802a36faddf6b738e51cd6325c470090a63162ac5147715c85de13e8f4eb9321e4a421b111c6d4273f230d026d748274ba4a2423b0c26d08f89ced4c1fd167b2507e9ad9e9fb9614d4cabc01e18297b84197cb41a56ca590ee35727af7bbb9130cc9f127e1d4af6bc9afae5e91f540cb774de93b5ac95ca26ff05336cf90079ea41503bbe55d8a01c91bcf2ae81c4dc44aec76ba226e321be8ec421c654c3cf580c8774a6f97f0fc78e6191bcad55424b3d414d5e60eece841f8c1ea43983b3ff1595e5f5bf0af861102b759d9d6303419fc0903e682b852976eb1e0b2f06880be977ef13e0a7258307ec9d67be993b13f6931674ae19ff1c297e37f26251d14fbfb03655dade75124fa7a8fbd7c93e4727a3d5d4ae960e35254c37f05908cd73d834ff9cd04777bc08f89fcef567e0e5778cc6c43cf895b10cc3f433b28b698665412e74b773b61060700331869c01c90724a82b625360d35061f403a85b9fd90a0d1f2476f2800bad50f390ecf93f003cf83ad53db610ce75ddb67c3c8c715ef8dd0c05e63f5382f25806cc2822be48fd98c3f09184f3587e79809c1bb37a0b11210890b7b8a6c9d1a5f9ad5528f71c3e5f31739a70e5429394978adab9d4e7a3a254baba261a4766a3ec11b28d5f8518254f65538784b00a98963fe42a45116fe7329e4bdb6ad665747a76b740fd604e505749cc464d9876534b4222c14edb66dc50ccdc54bbdce448bfa65762eef00cccd93ac5e0990557167db398eba1814e1fed76a6c7314dfd5de3a96769dfd998538196f83f0f4737d113b1737d6ae1baf5c1c5b8255a617f2a129d4a6dbbdc6a80c87b82d762390e9f894e2d2c80314058a01372b473b63b0b876dbc6f04e91d306269d36a583b08053ce2db5bd597943c4fc177643d121b3c7cac021907596c662e7d051ebee13ab3be23f04f6756270039cfc2bb95604d9707ffe60acf0eea0ed2f018c2f7545407311b0919cc9bec2ca52140f9b3a9060892f637a97f381487beaa8ca85f518e69d68ba4f67140c2614d40670de9c47fc05f643e640b893133412a79ef151ad4f748a7b57a7f57198848aea22a1b51464c38b9582f6a50b6c19d198d17a81620e248d69ace6c42862ea349bd9ae10190eea9627e533a9bc028f471b6435bfda4dbb2d02f84c2000e120e036bc768d7cd58e6b3ed0a5ff24fe9a208719b4ac61168a8b98c4090249db8729473206333abf09302e4f63101de9424cf7f7e8dfa77c59f015ad22e5939781c9e7bbc9b89b67b44470e26f1bc26c8d90c885424afa40569cb5ac652eb883beccc3335d19632ab02d04ab77874e2ed7b4cd3122dedbc10ce066e41ebd1c98f43f523d4fd7be0d19b3185b0a764338c398a168d403803084fac9c7dd3a14d88e0438b0f9b52e89c70a0adac13353316866ea00d5140a4572d2a6da0e42ef411a7d0784c33cdbe7b485a7425d767acbf6c377a94fdb38dcd83049c5a10e8a958b1352937afbf04f798ce050d032afa6dabacb20e76face6df875073bdc6cb030a3f52b7835e43ccbef50a88634b4a02a1fb04b3823026aa09f1f6fbd6e152fd406cfc4a71d9b70caa69155597cea260816be83a1c14d358c899d53bc49ffe5ad8cf0a996b32977f927e655ca7011791404ab35f80eabf830f76609849bf50a1489f44fbaeeff230b84854efd349579c1c4ef8cae116087a6036b49e79d2bd3cee1228fb576154ecaae7fa057357ae052ab63a826f3c81cccfb8eaeee29c6d67d0c211da047d12c2c329108ea9872d44fbe02177e6739d29f0029c06843191494781cf075034991de6e420d9b1216d57db0bbe263343c751b85b381d95f0342ae4bbdd4d76f7d1e56a244f444c4e366a3c84c1eb81e766061c2a2330606c4e71c8f35905bb818e04160b94b96ab82e7ed613252551525846c9a27b2c2d4fb04e004ee718fdbb731e0913772936ca1e16894eee9c5238427543c7619146c9e1dbfcfd32a1c5c2c30ca581a1d0521e3c173b33409801790a3a9a1da6d85026d4fbf10cbec71ba261b84095c739957ed51853b5de5617fa840ba5a5bc66a88d3184d0cedc6b76ce0e8baa9f89525e6324bc97ebd6b8d0191145f2020c0c3abe46ab0512ba039d8302a170088603b8098efa41b32cef98262654e31deda404c85080ed8c489831880662de6b881caac0adc2f08c84302066400d0a96d439a835fe7fb37e59e3d0d147618dc0236594cf192a2a0729cabd0c675d4bb29d75d6dc77d67213506230e81e8fdb4dd492d4865e4fd7de7631ddd7e66dd595b1f6e65f115a95a385bd656ae22a88032d67cdd76cb377380583100cab793c791df2c6a52ed43575e4745b23cc58d5dd73e5ae95b627d249e3882964351a15a6e3d2adeeaed09729985b55663c6a386c524fca2f223a5865dd4d5d4e2d9d6df40c88ca3abad2027e00f2c2e22fe78973fca2120c8cdab5fba66368bc58a92ca8afccb840e622f8a2b7e285160ee7abf059902609361c220ef5053fa4a30fc6b79dbac868060256e4ba9b4cd3be5e7dfa8058c166365df4c521b42e39babcbc5b2e9c10eb1e74d2e201c7bc9ceb5d1bf2ffaa672acb133464bdb7e074429b80db37b13c701ffef8ff99b99e123e1498c809227b0a7468e8db8ae88942a0bd20eeeaaf68c53e09d1487d6f7da9ec830c30bb74783af9fe43e723b1aca3d5851f6dd54d42d041437b065f7fc401c414c0a325f0e5c14b9eab8593085c57583f8e61f01e7aad587d39e4c1302c1e74222c5eb6615c68b30d733ad16b73f5b8f32b1cca8dd60f2177c2897f417fe82df208d8464e2aec26005e9ab9d38ffc11408fa227a47cc26b8ce1fdb990f0daa3f2d4f566afcb345ff9a87becc1f13ada05d3e1a5feab0b525d697fbf42600a41e72ec929ade5b4fa19dec32901bb4735a3429988d5a8cef50789aa53b48a03d12882803aa543d9b068b8f485cf4f60f2be57054f780016369cfdbd09836a07e31d1c073b46e5e0a7e9bd4b06bca18522a9218c82eb6479e032682451632ecc55cd3783cfad2244220c13a0e83ac05003a297c3676b0a4f16f9174fe6a3529b9862de23e143bda2a5a349939543702bb797e1bfbe4b34a3d524a1587fa0f72d7c8f9bfbe1bfd76ef2a67e80e8dbe2019d69465ac39627a9ec5addf5491f234f297993a24633ace4a4aac992d0da0ae1953b334c9531ed50e2f3109635652ffba40d906a5f9687bdb2ba4fe1cdeef1f56455d1220917b6f3a23dba8b91f4303cfc503096479ffafe52e5fabe41ede5e75bc447cd2809a1a1c733e11645f5909161ddf65005e72b27004ff0fd059dc4d8a517d55365943979395fe9d8353f36c29f27d445f8d7f569cf9e448123b3df400b99cee62b61fb130996bd04dbf855caba4ed802ee8629b0bc3e51859fce0716ffdbe7d32f2dbf2525c04441ea2ce9e79c8418105e0239273a79c54cdbf41df03c5b9f24c2b005d4f8124623e0b4e34767b464baa5823592b609399d0306f4561678b9affc1e44ceac077e6dcb24b2a8540970d43981bf7325a9c7c0462a5dd40312b4ecb770bf43cb287d634891ddc55bc12f65a5bff48187f0102877e9321a3f35e76d10546f3b90c847a81d90a0e05ebf327af5116e273d0fc43886df921c340f19b9a7252653a714e26292a82681530cfc087b05820ccd021e1a7e98ef1a3cab40f1d0c0345b9737539eb414cbaed72f451169d6c6d28ae745798b434cc842c83d68205c8cb8ab5b14cbadf18e45d6a6556bd646ac429cb70c9868b98b7c826051ea4882128b3b3030e5e0e2ac3dabfaab5d9b603c412edb2c8274963dd979f0d71a51cb49a7adfe91f245f2166f48cff6831f10592fe3c3d729c9597f21e406c4d68ef5eda3a32b978cc6fe18584d48e1c885929503a362fddf788b52fd025b362716c4ba0bada086e49b1e7f0530a580c7d43cfc1ff40b73ce7e6ceb5dcf61e79c52f49a19affca57031b47c401f10ace35370b6464a8a1a46ef608164d96d24b7363b52afada03b4c2d19b68d519dedde946ecd08a2796d132c8faae9be27a61ba6bfb0f523c605817d8c4621d39c71c09e082a1c809fef4c8cd2deb999bff311911e58f1fc72b16fad54a18c64f42ab339178a437adec6110fa6ff76294b58105b164a649c781bf8200bb83b06cceb3522709577d018fab5cdd5f0c61ab3d7b7ec9824722cba33e241f01a078770209b12c83ea14c3e397a031a311b5699055b61288191870f69b1b90fe9341b48fda533f0e0742437c6b012cc492ab9240c54b052fe8b779c136c5a8af9fc3c4e84c903474cf06cac4bed3c56fc82c1c7e5801ac1e0cfa202aeac04096511cb20a74fd44308e46ba2e4f4ce4b5f6f3a6ba8e60cb52ebe852a227db9eac2ae3d180d6e4f245432b338bd0e5a53670b1b4cc458d3a318ef93e438d94d96cd403272195c80636420a4014e91113611d6a2f608954203e3e0b87575da42dfbaede8323db89beca590563f383bcdf6cb6434d921dd136ffdf1c6f9c8f204b5104639c6c33b20012a32e1843cb08775610b79d101359d89a0536c1555068d0b0c1b6e804e7a0139f066b03f4eadc03490d01ed5c71d931593b895ae9535822c6086dfcaf6a22d7e2f5651784e722dfaa203a00fcd5a8354053f00ccbe65b4f40bc9ae298a44d57548e68f32681d510b4b048425759867878e983b47ded091c97fa9c4b846f0d496a3cc838b6bd36392403984981c94db13515de57d6972bc87521b79e41168420bb354d2e5eb818cd5bb41c3f81511e6b425803cf76a4437df1ade27f79dc930c33ff7279755d2368187e129c3b0664b571b4cae341781c03bc8121c78b947e471a49591afaa43ff61de012d54e5295e607b64689b48c57884ebe38a6e3838c92c8e224e1e84637250e1cee96477abb721fad12dff8d1086a14363507e75c07c7d264cf1a3914381008b0aafde43fa8e120687cc7ae4d0ff9d277824cd2191a589748f449b808c024b35a96687e584ceadebf44d472023fbfb8cdb8a922f2bcdc235957003c382a76dd257702d0423a151d5cea123620ef33cc1468723ecc91828a9bb6380607808e112425d5cf4094004a4212c467fcfda4dca9a0aacc97ddd7267f9291e6640c4d524b5e838850517bf8315c6c5d01ee54cb1b625043c8e190d5d8e7d6e45e4f55808aee88aec961313d3e81c0e57f0c96fab8bcb200a0a502b78358bc245a3610197ae7db775ec68adaed583d90bc3e68fc54df29759d241fc3cbed0475abb725938d5eede0dae7411a9ead0c8d3f03bc542d59533c0af112391f6872a9698458c0d4f4b9492ba67c9af81c57e4c45422ed3e1af01842328d71e90d195bcf9fb7a96b551bcc4ea908e1093732d1d4d366e80cf264984b8b25e3eed0c59e824bb0a276a5e57ab5d853d001fa4141263a04100600dfad1940b4eb5659511de354620fc918af93241d9b28cc41883a24ef9026cf8f1cc477ebda534ff1434425b64c39873423bfea9873183ddcea694f4d83ea3b22985791da93c73ea52949339217c58ff6a724d38ca0e764faa67e96b1586d600d66d6944d3b021331aea3050d4077ce57efc4367c8e2c71218c5da32c504385806e5e5c9433d5bc1c7a06587430d9f9b9b9f49bd09a6d35077ad2f3dc9135737a094c1bf867799cce50a3a841b4f7f388ea264da769ca0ad144cd039a146c29bc0609960e0e6bf8dc047420fa0ec56eceb84e2fdc34d14c4d64d6bd0947893c8117afa44cd67c6df79e7d5101de4476fcd5f23915b58c976965268830c4dd6700f72ce26d33947729a61a5c5a2460ee3f9008cb19180a4ffeeab46a2d873694eb9f963d8db5d885d5c0731e8c4e694f4aeafb89b609d90471c1e1659f99a943457492cce9696eb328b2797560ed0c74b5f59ff98c4ec23ba4904eda2281bec98606253cfa1198d4d31b557fba8ae82462aa49fd290349ea881857d1a7794d3a94367e4da252cf9542726397479e24245d2e289fff4efea13244ac7d147120c363eb3eb8bbf74be80370ec3a24732ea3dc63a77c43c1ab98e54f11abc7bdfec0e2f88bbc67263bddbbc23fe653bd9b646b6f3d73349f8ea4557912691a6a419359b0df8f5dfda19c954e9b7571dd5464c97430b05e70ce1f26e9ff174c067a514ab1ed7a5273d7e0ffad13b66f3d1e3ae9fa38ddb47a4ec5f76d355acbff58310b6b537ebbc745c1ccebf85b6e27be810403d14ea27a530c532a2a0758c32649f40358d476e2a350d0fb3413dd9fcedcac871afa42b3ce2f8b2d6d782baf74ea5a8a2cf492701559eecc75e7ff529bd06fd194231d40f85c164cc7c9bc72dfadc5efbad56aa2a2d10934355076c93e4b580760857b0664ce45bc3e13173bf675d043a9c1e1255a17c22366baf74956310f128bfaa3e3faa6bc523c11a19c84396c3d6a244bb615585a1f2b760723b7456c770d0365b8326c0f81f0c03082f0ce94335bb7627847aa0e183d23593f73416cc6051462d31a81a22b3ab55b2a418be297e0b8bd85bbc6c688569208d38923327d9f09ee3952f494a461e5f11e4920c2349b789cb179fe382280600a80b055163e24dfc3509563826f3643e8be0eeb862ef0a961f5997088c0d89e21655b2d6184e354e4deb9047a1d24d507ae221386fdd8d9994aafcb0ae08a097c92784d8b3d6bb53e390467dacc07027c5ec1831bec2e6849dce8244fc59c65a75217ac97c7d00b96974aadda42ba22d916f16bf2a718853a49a3578035b3617da44164869f4e5d07e1f5b27e1aee3f4ab81a30b79836173049c41e793b932587efee0f70f0c4c05b999082c57788b5f9b25eeecd67b436f92824867174c63bc7e6e3d042a3aa61cbe63215156f4cb13515f9a2c9f857a021235f11ca1972af7af879708bcab5b327d5445e38ca7fb43d4b49ee0ed9d3ae140d87d5ecb031894dc1822decaa7bdd52d18a12a349845756dc2991d9504f3a251db4eb02e83e81eacc67d3fc96349595b062cf4e1292be7d3ec1eddd5496acd01364a85c0c367680f9eaa40ffdeaec82c9f8ed28cf61d5fead78307adae2f06427060d60a42bbd300a0e3380c09ef22e71dccce8b707aab330e2c803afa8b054be455793b37d60746f1f6e7b1a886c8acf5b1651075a27faf8133ae7ac80dd22664ac0691897c346014738398c48a7bcf6c5e1407b8675dc1fd335fa4f8e8880e44ccbca40b8e8ad131cf4a9ccbc1b7cdd39a4db13dc38b1665bfca02e29f4d637cb5deb0e33e807dcebb7f96b47f5c5a583f8784ceeebfa0dc5594931bfe1b51eccfb7138807e4a0b5299d70c404fddf585e7ae09042474be6a0a16d0d5b78be6f5a735e82e90e39b9c983b427876a8b5af5e42f6b347c4dcee27a0e7ad1b693784098878a3903d3787ae703745fe3f5d45b704abbe7664ff0b04eb3b7f5741db7a6ce2ad95984d2f3e517e204143844b2d63be39563187a88e95fad589492a0389d87e5bfb2647b454a398b018d34571eae682b169998b10812c0274d78a1697a593e49aacf158e1120a43767c24430e40043be1f66d59c44c238b74cb9e03ca4dfc31644e49a13e830d77a78dc0acbd1a02f0274bec15e3702ed9628aa902b919f7536af6a9c0e50ffd0feb7f18aacb6516405730711c3e8e500d2d20bb2df1f71b3c44aaf6cee33c7935e5705a62ad9ec05d7c22b887c4b0600e08b64834405995705028f1ad65e1ebd535591e9a0dc04c589fce4040a678ba837f6650ee6707eb0d1bc985edf1ccecb4658f4adb099b2285a6d0d8a1c770da1c4a2beffcad642880d0e27227746977df47adee872eee2ce0cc87b15e265d4f2c1db6a327008ff8ad2d49556af2a05b14f4a9daa8c7d8a6608da672edd39fcf3716a631086109a46cb9ba8ea7c50824245496e4390de84dd0650de6816150a6f3e2bcbb8ce5bd7f493aaff10b9d0254d21885ab1bd6254ac45ade036c8a5accc5355ee83aa4f5550d0a68788741fa3d010c26501f3148f9a5a87c2c892158e5689f24889c873cbf926836e94cbf85bfff1e1c292b1954d0df70467e880c89fcd1290e6dbcf334330e718bcef8a4ee2bc17556dbb6f07e83ce9d023bacf1ca2824b2d8acac6195557e1a03ae5666495e2268b4860d9588b8d37932cc22d52ec38edbbb5faac259ed9e0319100b19bf1e4d656aa890ccc9fb9793bc0442dab01ef1399e35c836227cf2c58ae7cea5c14701ba52d9656f200e3e2c1beeb31c298e02dc296cbed8521b892cfe32a6a0f8ed5aa0a06b9a750d8692d9d6b43f4a02b9012ce1be90b7656a24d58384c4372db0498e5ec87cd1a95cb00e35b9f244b7d181f3d6ba040878095a1fcd2495778fe205f9959627381ec36c1adf22d33f8b83e327bd30c902ace330f7a1707298327669f2d1aae7d5b8dc79a3eb991fee63376bdcee3a07e1cf3a565daeea83a0782d356f3a9d03501b263704b5773934aca6cebe8a3d95844bbd661885b515a7053d48292a63b08cdb1b7a3ace9921b077ff3c3192110662557680fbce16bca18d019d651a1299a705f8bfcb67199b1fda71b4a6cd5080ce64dc30c02705b62861d78353e272efd2f3d17f51cfbfb0395f43b08c7476acfc701118a23af640c98287a8e48dd96766ea9564534907040c0e6935aaad02b93064a704c525736db09c32320b0a91e242fd90a20460747110bc637faa07fc0bb8c2f9e7eda216956fd5b5906b14ddd8ae7614717c1038ec984c37fd16cdd63124f29a9113c5d21a8d3deb66792f6163ef574851952535887d4788fd24c84811a63062c00cd342af700a86801995656009f57ecbb1c65fe4035732a40df2e54512c9093371b613fe4f09a613c6ec6f28fdd2a285424f5b8b892d5d01673c0ca4b977fec4e61eed2f9813665a170f1763ae40fd630ec650196266b7f7166724b967beb9cab59fe541041c7b962bbb51eb712b16e51737209b7ec56f106f9b5df69eb59f552b819f61f4b5b941122b24cd75a4a5f5da8701edb37d34550d6663888385a7fb586269535f91f6db85d671d505ff3cf9631a64ff3ab487540eca903a62999086ff0dfe1d56282a342c53190c574ccff7e03ce6ed0d9142d818290692c73153de3d5c03fb8eb4b177c189e9557102db37a3e56aa3a986270d66314f8a1472191c96ca94b805d41668662a76b8b60f96891913bd00b0cf09e5cb818d9b4edcea6658789b0658782d4b7201778d43a2c0597f0bd36f4862fbd68d1cab4fb2e77fb41e077479fcd523410c12c7867fbf3eadae042cb6e93491b36a9dd6fa5e7fd620d220fd0b187061d229f909b37047886f1053177cdbf7fc58335c4c765f860f3b7a6a03d7babe2f267654b4fa52dabf12fdc33aa4ef49f7591051c920fa9712b42d133a11945628bacadba229a20b0a960d9673d9b006407068e69aca3cff69c35df294dd922c8272e0c14b446cb57e59146c0c8d42bf84d0009ec1f8031423664013aa086f830eb4d18f19ae76b8da174ce06c8027fa25fa64d4110e456661e742cdfcd54ca558b35e6e1cfd513912624b83cd3f0e64be6959455bd837840ac1b83db12e59faafd79923567d34f19166b1c46d365958b3674312033c399480339b7e1a60feb00227a297193afa0b79e3e21ebcd3a364b71fdd151da9468e19e923ec2c0f9eda50c06888653d70341f91a6b9c6105d145547c39d0a6f417bea05993b53380fe5f3ddef4a5333b3ad6a144b7bb12a718a14c98a42429ebfba4c6c827a874c0da6a2e1d68c9be07451004e6f92f9b2832800cf3a36cc4a80822296ee2ef34087548e454525bf0f6aed5a796163cb8cb8ae3bae2d6ff4ec2b59a9215c6483ce28d3c3d7eec94cb2c709340bb53cdce48a3d28bfd1abcdb3e25988f97ba08dac90b4d818a05884016bc4317f91c705eb258229f023e829d6d9bc8fa30d082b9237813928740eca62c46411f5c9868cfa490d3e748d09e707f7e83e930232dcaadcb2a320389dc6349f78f95c91a0de206e12e5174d5c02a48a45e1858e8c04c8ecbf413aba2b8b274d3255c079b421295a265a2ee0fbc5252221069f11aabc2809f10ecd38290c7258b7927dea50c1d5c48c10eaee928ee5659a5f159b386905e5904e3a64d4685d449ef69102cf0a60f394ce64dd3969043774079e6f8039c72a5851d138c0c0af771f8a111ad8053c9382f50e0ac031788b9e19d0408142321171fa9d64056512e6b189568b10c94a31b0eacf930933bce0925c893490891983e3da794c63710a2971b9882c163f57d6248e9edebc82876748e069ed88321c600af94f3c78511c21bc18d29e7735ee0b955b1ce2207b8af67cbe41a97f2bd69bb1ad71ec70a7dea42840006c1346bb76b889904ddb9d512ac7ef839045996b5210278acb6e0e660c52dd86e208c62fbfce003f80112d6a80ae90a80b635cd1a5f1eb98c4fbf7c5518b67eb974471621500ce9dcd3454a5000312f82082fe05293fd4201730568a706640e5760103a0d6980e608bbfec4adc666406e68dfd07aa71e2fc0060bcfefaad653b9a0dea4ea114625992995d5e0aed8c9b0c405cef44d426b4a97725db5d439065d889afc9b9ac12b04c9cbb6b5073f00ec44ec4d4c00895d145d1fde1bfc930dafd0e008baff2c75e7ae89d7967de29e6a9437ae72c94b25af3a007a71285f8b912cd32ea7dd633a7194e92cdec5638c7e287ec086d2a1898826babc87a661f23659d5f6637832252f3e1d8ed3377958bb689e81986a9f35d213f07e82530947cacecc7c15ba6e04c95995c54e91fe50280f9dd0fc22fde1f1e3dc2785cff1516ef6f2ac309d531ea9b9f9c2e3ff1290542cc197b811fb8835db5c182b3d1553f9fd35d2232fe90e2a88c0c61ff14ffee42d61e462492367d05a5216026df47232e47809fba440582538c937f8da49f25c0f6012638ff56b5e7cac8427e3d20b472565c0ff7f63f8fc812efc619d9efd31644430f55617d98fbe8b65b2740de116bae593e7acd78d65001f7f3c10018b1d62c8855f0e1d98ff8443a449f394218f54b9e197219db2cbbf4a492219155063d741863b66d92fb5cd86bd873985c18f16eb20f5356e84f4e483e16b5af73a101b2d1736054a477f0a454a2758ce983808075d958172c0eb7ef4c607b5f586ea78fe177edab3d0936bbedf9080358dad5165f03fd74657c79d116c5bd8d3d1cdd6ffa7bf5bd3531ea2656e30704cb3d63e27ff394875ecef88309115ad82dc2fcfd7fd03caf8eae0257fcc9aafb3fe94007be08e0a6a85c349fb9e49fbda6466c5986d56c2319153a3826c2d53da23a270c419fc94561a13d7225af330fcc8f31acd596addc447870dc37d892f3e20f5f5f815f96b581761491c8a651e4060c868fd6a0883e5d145e06b2f70d37293529951c43325717b4d7c4f7d7e4366e183f5786680b0a9764e09f335872a700a066d95dc6bf28563d6a2e501d3167654aae9ce0a1baada533d56e0dc5b922c5cb576d78c0b335eaa12b45bf24dc2424884b089277612c07e2d7185897472e910d5b98c39d3d61fe5e1e3480990d0e5703d7f8756b6822f7c48322da1e09f702879f31321d4b0bc01983d5372d3e6146ed35c44a1c91a2f99930fd638c95e1df50159d8697e7779ef75195c9284a70c9dd12ce700ec4596e62389e34d2cb65448b54fc73d60c660d79645b38d008091eecccd328fd587e6ef9a04d140f8b83682f45289f5e78a93f49538a4ce91d9cd2e9a66bed1bcc3c364112aab925ae02e03d0cf807e95c95b79f27aebe76eae836ce58335701c392cd5629770b3126a80bfd95cd251860e7e737e5973ad5e530eed30ec773dee647e287ecf1e2fc51f2b480cc00b57fe5dd06c97b2bfa8cc08bfd15d6257e446871f0658af3bc79ebb8808b27b4c0d743600f5225d99b2a6ededed39104554f1e0640ae7af918307841edd4b6089a395c0955c54070416c7fb8985936ff934970ca258e576da659e2f83e82746f2d60f29d5776ed0ba87b16e5ab7fbc3702d78f36b1f4c866d37f9b65da349ced12fa27ce8dad2aecab2444aa9d012038401ab87db141c452679373263ebfb6a1100f34a825d31d1f342014f2817ad1f4a9aa6c0e0da155924ef5fe9ed290a6be7fa6f677871338030c6f911cae083b4843c9306bcd12dc517ac8b388058bbcd25184cd32e1cc76a8858aee22d8b37918bfaa811ba0975f6cf287910565788c22ebf9cb71bcea73eef5de516d33e91cbf83bc6067e4f67caa2f07a6a6ea29fc0dca56a9d7f1b2427bfbce85a77f6336b6fb653b1e7ec98e08dd489d709861bdbc06ffb3c203c6dcb21f9db8ff6a60a55b7bade5d154a3b6990fbfd84e96c0381d366e51135f8e90c70c9fe8aa98c085bf791688cc0c7b3bf09353f655e7fd2d8bdd3c6fb3ffe5deddf8bf6891c7962dead70877cc3c11cf668449083cca8511babc4a531d06cd49be775d46b489a58c914fdbcded585b35b685474e508f95722809f1249929bdeca2075cde02d5f9ede8727de739a21312920f4718fe93e5916e0402bb98e761c7edb03dcfe2d3c412a3c122e9628a82a350bdeb0921f6d19f5800d873bfd28b17b7b27419a8059ac2f35fd7950208a50a97a6b7260382fa44aeef46848641e8740923bc94cf8dc64221ae1689c0e4a9aa8344268a8d2aeb9847f7d036acff49c7427a1ac483b2dea1c03cd7186e874377d7b13d2c9968e9223774a0d2cd540209d5f00c18d1baac884d608d53063ad299faed752745d514c6148676d0cb25cb99c4a21ffa4552b49ea8065d03ea71f093bc92aa814bf1a8f9714836b4143bc3e3863df2a9adc8208384db346d8496855d2f7c92bcba840a40dc9e52d8d1fb1aa770c3bc98db187395b7f3b6637b8146189e7c71586b3d18ab5231c3e4cf99f8d2812ecb58bad17c0b110d10b578c455a2ce6d097a711e53aa1ad847cb3e887467b490d327b4e778f0cce7f285580c07902b8311cd485339e2a9548291797fb404a24a4133cce351843d3c21c4e02557265319ee528cd5f790a519b36211c71525142567ba6a4c8a14982ca80b4f46de56d2cb3fe4aabad31e8d00bb639d42120cf2f0944998b3f240bc283b114fad555742e43556ba63aefc5bfa08dde9ab36eaea240293fdfa6b72645eb653dbcbc81a858c8b2773fa62ffd7a4be66c070afdfdced29d26773ae866fff6c0a898e2ca6add4313fce5349d04ddce2955a88be9ed5e1ab97eb015eb37b1bd8da930a12c5e4f545da848b65ef7577ce4734b0445ac8c5a3325cc284bd0021de0d4eeb804b4e5a50d3318f6626c4a30f7a35054cefb010e2930ea4375dc06178c0ecd2d027e81c5177f04fd46a1398cbde045e2f9226771124f4d0880df05a1ef6472fbd7fbd82509015498ce46c5dc112fca24d61302dac5ce3f5fea7a16b5a40963d968d31eb5e940bff8e593c9bb6a5ad91688c5275841addb413833eb9f956f598dfb4f3458a609e9e60d27f5d2991a750a371120fc3202cc57c8df48fcb0cafeb84a1cb3f4f205d55d684be3a2ec0484ed07609c78a1f4b484add1a6d58138410f99948c3963171ab702a81e92466bbb48dc797923f80b38404ef04b5213306d886f2380cfa71da576863a44577e5e16a69bc965666f9e601c1e73aa5566e43c7e5f3f1f1fe5e934184a3af794faf2069d1d3078f2b8279b1eee8aab5d83045b5b2d0e6a79425ae8c1f7cd9a836789bb09f3c4328ec3853b6130e2a1623cfc6940e1dfe7004ca9c911bcba9071d06ccca3a2a97eaba2a8cf60f9bed61991b30d137bc62d08f1428a85a977fef71f98dee68098f8a3d9389b704d2d17d73e8244deb1e8ea007e8f9aa4966583d23c10e2bbc5920a803b954f50d135c7f435fb8ffed9f841383f600e3d31867b3ffcb11b3e0a2e13d0a34a0bdee82724e5a8981585acf025cd8c9bd4478c6e74c4ab77b3c276fcb2deccb3d401d1ae0c3f56a34da9fbfade4267f1063c4122b0dab1574e53e57f6ce008d63c43d03df1337c712fdf3a171a9ac38b7dc910dca548c4f6557a603fb8b90a3fcb920579608e960662f342c316db3d405589dfcd3d791cdb793365fd2c122fa009a3a697760b5660e371f4685b5f970d52cf14e61a6b127f2a94c2dfc5582b8245c37789d6f9abefc6652b7fec0d2e71e58f862c6b2e7a96debdc4d104542986dd73a56f5909ca40586a2e0b373a6a854bf0c6c6e42dd59cbd30980072e3366ed81c637eed182548145d35174655ee4101b9faf5806bfb14709e371176cc3634485d997e95f2d5c4279c0f9922225fa285c3631a4958740f29f4b6f1966abd4caea80c0c2c7e9f8aee58d3cbee8406d2505faf5d63a508f06639b57e7d84360196d02540858bb16af9aa39bd27e4dd40572f0f07c6c7c55017b8551b054aae056ac099060cd58470a73a3f70d0738acf8fa2e54fbbfdc98ece95f28bb88a6e119d1ac3b63c9f76a957f1137bc690280f04da41c9dcc3f35a86685fb45edd730f035bcafbc066bf57c433803e8ee2ca8733221af932aaa8d228db5a79ccd5958dd6bc891c60162c286c47d87b4b6001a053edaef654d1120a4924a422050d94a0d6ed113c0f2f9f75570f7baf4565459ea36c814fd228cc27c4ba095be5ddfef8287ed3268b72827e1e67be4f3153abe486505d4a6615d4f6eb6b9b7ea67c99a31604a773f420d590dde07c8332b7ba036e6b8ec3ad57375c155e1e84912eeac776f43338dca317ea745fed9cd48c0c72ca7ac8be66cbe31c7b6bbf1d6bf816fec42a3cd84fa0ab4d18aab1fb941023d80cb842c4de6f45900a3d1bccdcd8d5d4c2478dad84ecb93c3aaaa5351db1276d31dd8e67a92c6f4cfcbc51d831704f47e2b7012052ab6f24994a01e91f8c715cb6d767fa1f7322b31ac1f83c4e4a7d05b2d7214103ebd3da6159edcac6f49880c914495cd9aa5aff967229aa0d6fe06715a3ce595c01ef2550331fe4e75f0c7118911483157661cb9e9bea31a52d3a286d358c82c7981b6080e69d64c1039b09cca210e0b7d866635534227968ae99057efaaa642ac4115024fc4ed39b50c9582d86a74715e6983b3685e8a528547ad1a713def39cb7aefc1636aee8f717d18447ca1e5071eec36dcdd47050a271292038ff2f022a123537999996880f11aa74574c29c35f84330feee7cd0f2a4a03762c04f2c139001ac5de3a8570c8fc40f049022ade84509c62b994af6a2f294d84450ff95fbfc51ecfe350213b01cc99402bdc3fff955bbf16a0be396563c649b0964b912fcadc6a8709b466e26ab8301febd1d3157fa28d5d99f55c7009cf337d3df1600e2aca4eee9ed72a672f05cffd0b3f295b37ec02baf6eaff2e3ee896ff8225e743bd3b18c8d6c444ffb61139a62a486e0858735e875a87a0ddb50d8db194c1e486482ada636456afaf0d7243d4216adc747b941176d70d22223dc6183729496025b26b2296b12865244ac1a8b792e2d40d50b47f1f5a98f98238a92e7859d6b0155f3c92f4f48277b0888fe651d885e21fde6a51fd4cc92ab97b67d3e4faf24e9ee391d8b11095543419181d48186feabf006ea59adf9b08ddddfea81be80417a997bd7105c19217484d9bd7d72c9b1a34277bfd0f87ec0daeb02bf3f2c8ab1cf50fcb1774af5fa722c7f19b7cbedd40ef210a6a0996ac82e42b2fdfa7704a9ea8742dfba9da01a0fccc06f69b10d79115b89dfce24cd7ec5c97f0f74d0f6167b7a5af512244b4ef649dfb9fba9365fa1ce967ba3112275896c2f25610b849f4a2d50b52646ab0f6b0c2adb03d8004be6415a3e743a036707d059c804a4f2202ffc4de5bfab43a89c06c99fa010b60928b32dd2f7bd4d6f3860edbf849b72dcb67fdaf5f56a61faca1e78c2079668ba543b6896f2c50a35e7360d956f94cbf490ea2552747c03e81f57393a3b585642837ef51599739c41879e843eebbcc60ab14e97834791eb4b09f42b1adc320011ee082fee0e79dedfcb710d57c237022f9f43cdf294fd95b1ac3346b8bde1f9f853ce53139df8a4ce3f431d9b641adfe7bfffffe7df58b4a7fc9645ccdcdfe3ea5578c6d34b2692becf8020e76032591825756ecf61cc0c5ba5727b9d21f60c27fb70780b7f18b35c7fc8cde4a05f419d0b4dcd9595bfbb41ca5d0144a6650c8dd78c800e015629954a8bc52502e3798180da06c02d60d10aef71da2a3baf2a52f415886c60bdfa09e86d9002688ea9979795bde5d455e79627fdf65956697e23e96e54cbc86898f12b68fcb1b636ea5feb6a42cf3d37a51f28a7690a5abac2fa2b4d9745f159a14a5f06040c75524583356e66059f367a5e5c4ee494abb899f6569127f30485a49d7e97115c780184996cef77ed01e8d49f2c09c5ddc4245ec8739063a0faf7a9f7f8571649c281df74b11fde149f6adcee2f1ab8a26a296e7efd48231676be9a3a613103c3174bdb106e21df0ea8dd9242e0cd1b5adcaf6134593bd0333d9b7ef8b8b42b1075428070a5ad420fabecc650ffd628cd6bc1fb4c5566272ccddafdd4af056235d4e03de3d0c42eba2afc484931b5cc692ed6b2b2e9f773173fba4f7ca942783aa0239fe7b05ce8fdece083bd3e5d50798138394a73316668f465d108ca998d14e75a177351f853364575481d264cbf8cd96ef94061757f51d1344de5120ecd4700111e1d1ae9f755e3c529532f8b5e19c89dd511cf380dd3e40542d73a6518ca825db71aedd0ed08a699b7c3a8a11b9cc4b17937c099fa1705179e08e1cc49c23a87ca8ce950ca8c963a0ab57cedb6e4db08450b009a6ec7c23bbdd7c335be48ae3ab8e285c67ad65a5f00be6b69e6356191fe2ba35c6b9492007efbc255b47394d3471c5cb4b3d1a3cdfd4583d4d2c46e29a6a96e9ed71eea7692eb20b0a591156196087140fe3b12637bc36eea1446bb1f652e94279d15aca4bc0f84944e063c13d82f41fb8cb05b05c31381bdb5dc2364868b25a15d42ca2b48e722213f56365c2c88e46552b8521a1711ead1b2e9c542242e29d515a4bd80501e938d2fb6447209295e258d0b85f018d974b126b29748e18ad25d40c847c826175b19bf54804388782521ce14579c1b49c72cf708997128b66390780869f313e4cf2a62710a917c250a6f45e014897d63115b9788c48ba27a43842748cc378958bbac485e10c57722705222be8988cda545f68528bc29a21324fa0d446c7e92e243057241149e09c35d152e9e08d6b7a07e46c02d05eb8140df42ce5132f3c596502e21c5aba471a1101e239b2ed644f612295c51ba0b08f908d9e46223d29795e20ad2bc48088fca06179b32bd58a087887085c2ce20ae9e0b498e25fba832732096c792e05069f123a8cf2c62eb14917851546f88f00489f926116b9715c90ba2f84e044e4ac43711b1fd584a0f08c445513a21ccbb42b87912ccbf82f80c81b709864781781bb923cbac170ba1b8a4545790f60242794c36bed896e105023c4c842b0a711671ed5c4b7a0c194794b903b11e83248749eb5f417c0611cbafa4e0a0405c11a5d3c27a57848b6728407f20c62710490e92d5372a8c3f2000ff125dfc93f08ff47911422765f28388cf94274f0e56e4fed1eb27ba61f0e9cf1590ed1a4add85a84988f7e6a0213f07d0c700e7122950c9351ba9b8196aa6ef070fc662bc4dde5cb42df6af459fe776fb415f1ae710a90ace4a91b37f56f5a6b28ee6f31594493e13b4ca92a2ebf42630f246300cb75477743eabbfd54c1a5fc9a4b777524e0a5b41241cfa4ed9802c21ef6b57ab38ae62bdd1ad5f062771214507f8865ea0d138f184a44ed5d62d33f69ebc634666ff1924995dd000e7c3c6635fb3a404df74a21b8a13b704da13417e23dc574b54275b49075ae3259e948887320297909570c5b5758abd4fcefa9474dfbc24573477391573017589a01daa4bb34aec632d78b5819bdb3a1c474aba8001701f60ed917606b847238a660abde02297a0aa6f98b4ade0104abac0077abb0f6ea5a4db4eec1963c342ae3320b386f224714f94e4b425fe443bb1103e27490ae27da6235052bcf9935497e6f5797b7017471ae05ea01d1c3bd39502451fb10e50cef84423bf4307d50f4dee41bdaf60feeea201a72f3837f209d0a81f91df298b32116f5543f3d78f50d4b43b0b1dd6e002cfafd742b43bc2e41616eefde1740d4e97c31ccc2c0a7bbfd0ba7b68a9eb3197e0896640eb5916082d19ecb6771525cfe35e151adc206921d109b9a8e9a0ab32154bdf18309fbc74ef548bae2a5fdce445b11b251ea27599bbe10acf0bacb76edd2183e518ed390f4afe2be7da02a84b103b69c44a2c7d9018177f7ddc41097e736aae9719f9bdc16b586bdbc25099513ff42be4a5656a8a2515dd5c1357946ca47b284baeb785378088e77cc590020bdd1a2268ecbd3d4726d3c6b0d2a33f6fe930dbe2be592d8a23f075e3abefc5aaacf146baae13a6f25078f6b7f7e61b471c092182bdea84d0f9c2b9fa943d2861ae0630e2de9f0a3c9c1adc9ae6618fa43216c8c3c39b121c0b208cfd930ab80c5033123724ba215d2d0a1d4b6981dfd18a13f9dac31aa42a8354e5d363aba68682ad0e0cc55d5defeb56ba023f836adf32b127883b8149c13f25e170ea56ba3046c9454390d989b781978a4a8b9b3541f009ec2c4bb458d1cad9b07df3a212e72aeabe910b7eea73993ca34d8f3680db5afa7c495580ebb54a0e25e1bcd42c405affa6cbad6000ce0ae28dca806b5c7658505969e99636a7c9f48efbc4e85659b722ede7a542fe79ff66668362d042ca6378f735a02c1b8fe083c78282697e5dc3be4b18578e1eaee41809405f81b1193c36106b1c87082d5e67d2661ca678453f093db478eb4f2514cb649428da0e28c704144e21eb495a293f852bba52d5062d2c01b3f0a64410376760a1a5079222d2e4e1be7882bb97ee57c40a5058763a0d5cef6a134b1be1d7e8560335ea399f77a4982e710e4ff4a77b508ff1f51724bb560f378b82ed54ef697e1f0ca0a565be0bc6a18f078940470d8906b06e23b8491c65724b19b0ce6ff3d19ae8d15f8388d694b2a8376a46bb7f3c1f32979201e639340a8f91c8f50c6e424b2ae0951acd6aeade10bf19842b1fd4a67e948e2035f86786473d1f543a491bd1766fc26e7db65237eb970fbb7ff844af78a812341f24c644c2dbf262ef00eebaf960507c58f4b2cc59f6446d0937af52121d428be8710525f244e590aed5aa1ad7cc8b07bb0b16e8a18bd5288f1a36f65bc6238b09edead21ae1434d5cd03b5e485faae81211781f2c083fe21e9434aac54f9bacdd471dc008d3dea68d663ce0ffa6978a9012f0a22d703653eaaa08e208a52b2707278476921ab6d5ff7fd30e98e0927037d459d645ad0daf8aa0f262de0f4c3a8a607954add3a461cc88306e80bfa23b43e4303d240aeb18a088cdb726cbe85a2e3ed64156f760f72c23e718e80c6d4280fe4a45c80a839bac8c18fe187a3e45081ece788e0f9261dd8191776fa2de3a70ec7c82f941d0b94a3268c013462932c12d5d33b68cc41e058f026ad3453e76fb021ecdb69c36b9c05fb4e03c7777c45b6079a778eeb3c303932ca046aa69d30323cdc0336472a9afb9123a51e17f7abd4d978fc95ce026fb47e15902ffd6a13fd64a7220de17f2fbe0f6a5c2ec4625f552ae4bf6ad3dc527f70b9dc74d70f38952f2f91c01efd79fe4aca7ffe93faa7a2f19f40ff405a20b8f6298ae1ff26b04d29f25d48906c260f9e284ae21fd1ef5c1f817d78656a3d23c445f7fd28f09a67796f44363e9cdf58f63bdd8f9917af853046fc7fbc0cb2dedb2799701a3636ae0a52a1920923d99148f2c4d5a0da1eb7f9028b55a01bb8a07564507c1cf3c7e40d08b7cde70bac1510f5f5f2089d8d1c1f48e228c879d02f0fa41b100ceb8388a16ad9cbe9b74faf10fc838f70b9fe3dea4544f0654e7faea047ad9a56f35650f84be39b17313126e2549745e2245eefa67d1c283f7f764cdd5cf120a6103907e206d203151773e50165a7e15d060227d3a55a2d1879c7768d45f67d3a54daab3665dae8208ffa47a95c857143d4fba1993f1ae2d4569cadc6f8c62f04346029582edf25c98f6dc45f38f55f7a08e686c77c31d04297aec086c114288f538d8388e9e1f60f8dd05eca16a01bd2fcaa53a1777188cea178bb137dcf68a0b60f433fa3c1e1be895904e19c5dd9c494a2eb631d1c673f12dd1163d03d0c59dbff6c5f2e44e5297344c0028581f682d3663dd8d8a5597a641ce27153547ff86527a8e15ed1d96871b8b25323d14890f7095c95ccde3e0d237478a39f1aa49ff96fdb20eb9cb236da28df2dd449223220a77c2fd5171ba14cedc78eeb3085968010f66cbfad75f576304bb4196a8893b8d012df4f7feb105e85ff40e0deaef772c98d505d105c0d35d4829c4ba9f70f9c3275bb14de9b6858d03282f5fe40e17046a5ba52fa223a47ebd6e195ace1ad53db425dd872cf6e24d3741e3907dd4ef1f1695a335fc8401320ba4f16269b803b38879d2584b9280379ef978d265c4d8ac88abf2a95a3671f9346b11846fae5b6b9ce6294601e768744abb042a4bd11c1c2db3a646bfee08178b5a89b7b5237d7f8bdcfcd6497eecf476895bb6f94ca5f2824c6d63295a09c8314e24e1722666929e04e53a12537666645473ebd7cbaf15fae4bccfae773d64aa7762e0174105836a3ff7ef09745fafd902cce9a44bd67f5daaeb931d7aac202b8a51b40dd10d0f6660c59b485bfc7bfc2c79bcd116949956b6ebebc9f40e11abf858ebd9c4e0bfb5584a7df37078278d298fc17f9d361f9e6d1ca242c20fad9521cbad6560cdcef530f201d4b18982d73d1468a16722d39c9370b58c2beed6592952fb93ee821e6e0da95ef70d6653d711310873715eb3e1e6d7c7842e848a59e846a85ff237a96f9d485ef5b0e17d8399edf538c74282bcbf18087d2c243a32c2b9904f31cb2d6eabff37dfebdae23579467a6812fd9084d885b423217c78f76f2ba11125d157358a16d38bc03a5a866faedc902e0336b338082674ed1c9c259873927b9e4c442ae926244acf39de4e13d2bd706307695b423228d153850a2a407cc7499fcd8aff9f78357f510b8906b095ff6f3e73b154a4dddc5bb1f78b3342c8d5dc31db4fa99c79b308152817efd7729b661138b9760ec4519a6b581cf43fff4fea6f3e8681dda6401c46194999aafe095e957524b017f45cb7fd677bcc0e38642ef4c6b25d97a26704e152333f9380e7d0271371b0c5140ce05fa23b204cf4b528e4e2cc41ea5802ac02447f0ff24b566d16a96d03f95eb2f5fc252eecdb2bdd03c81f8655283356a9aed2c6cd75e86b01f40b51b5ae1b94ab798fdef5b440930590a5c0e20a68724e9ddd4ae340af7f38d702e1e54d09fe1c37328a615a1b97b6b509c22d49d42710541fbdc2d6e37df4de66b126729378e8f89e96656b39d40e5caa563b743180a8c1e73d16dbebea5ab0bab4c7020a8c74240c3e00e547f6effba1a945fd3dde378b328405ebb2a85d81448364e86573515589b698dd150d47b6e879679fa749f9c483b38d74ca594093cca97636aea386b81bed8d2e7296218a8b59942ee1bddf5c2c5dc1bad2a27301515d8baee9462d4eab806b97fc386cc1faeb2eced937e3b786c23873b392f780dfba482d12eb680dfd3013f585b6ada4cd008c5dab41259b570e8ae7efefc5d808ff41924d941f44262c84118e948c0f70b489506a214c9091806c0bc92892c5514542d1158da7a89d01fd4524d430b3c5337c439538498d740b50ca8d4b350e2aa2ebc4ea86c38c242b1250b83af152d475f71109e803ce9710595c8d7ee13ad36f5cb781339584c681564788ec3ac0ade3f1204ab85484343a231afca0bc9b208a4f48266f92d88a6912d9d261e22916528e489b3f224af6245d02aacd9f2d6909dda03d70e7e0285fc30e3235875a99f37841fdefebed4b2cd74d5a88090a36d69678d5ca5776afdac316319512fd81348eed216b862f59df93fddebd0019fb0002b82c56de1151877056af14c06d3bfd95178473097ad6d1ff8a6d798dedd7d24a1390ab7623988a99fffeb0803dcc24485b766aa1af023a59c61585c77febffef642ea687c097b66e9299add6f2225a4e68f5cfa9bde263a70b1dfafb09e02923e93a0e4d7a84f80e2f4777e47f04bad85d0af2f810024a645ff7425fbb59b1b0dd46a06be23f8ec0974af3ce1cffc895fa5600a6816a89b9ebaa8dcc799148abd59c046d90155da3b6d726d04673bc493615a11a02a847798e970e5c0a24e7ec3d5265dd50c78bba66bc150b5228d3e93cd118becfab4a9df5a68c973dbcef9054a1578d637a64447640d47861cd750ee6613e649ca5c6737c2a58555a23653eddb8c5d3340ba9c8306190f22e0d5e79c96a541e3a427637eab20de5cc5e6879f9487ac092952bcd0c05b9b58572f4931dd9406e22e6b2e366704827242c0aa1887169caea99b5ac69ade0fa945fcb43ac6c04be9684e00d4410a045491bc3b02175197058903e5c30b020750c1a65b2b0bf1192d108693f236d2557eeb484ed6af8471c08410ffca82d8d57767777775b1b71b6b8ea01ea760d6bbbc90d10c40d9d0c553096993230e361285f0c22c9ca17298c31942f14c0188bee1428920de88b5795639648f311060d0c43a3238655695ef0c6b21c744d3e491fa9caa1e923eb63b94b4401618c15616f608c4d0ca5650d0fe82365df3a326d4069699c219cdfc2aa34f975642cf385d43249fa2baaaa7c78fcf21f5f858a5827e5d36ee9fcd4057aa9f2ca46da54ff202fa29c5e40185551435d589e57f21e8f2bd908a1ee575f592090df7be487112d26c93d458ee889e5a5f28f5415d1dfc914e87dec60d911223205f961448bc7bec3ca1167284a893384235b1b90b5e48780400eb2ea7359e85f22fd800363ecc350b20c9855693616a6fa42c2a080350108635c8155ae490ab548b89369b9421ffd98a2781956a5d1d22bc0a64df597b4f950d5a622bf128f47c2d517b100a0028503628cddbb015956a5b136d583307e0051f5b990b429c61888a16c80442f3852227dbeb22acd25e1fadcc6aa1ee4f94e96aeff742ea9f2862d2c4ce66001f604912778a098600753f5d7e5202aaacbb218c39cf182620209b478a18655693a9783a878b99c0e6a4fd265858c449deb5ec6321b0e77904212ccd80cb070823230c69280747c261dbb52c258e675cee00fa40105dbc191823106e497f8684ab2f0a017d604abd2382554b0cce70bfd60b8a803d1179ca80a8e14a9445f7058461f2952048b4825923897674bff08261145145108a08be83b48a288220a01a08c604914514421004d14514421801c3af4e43a2ca8840a4ad268ac4c692aa8b816e8ba3a38bcb02aaaaabe8be8435d5688471451442100941158e005833c1ee771519e23d517b1be65722317e539626d2ac2801511878a88c38934d44555d7571c17e988aa6891259d403a7204eb68d1772e6b0a90379743070e59382ea0a78f2e2051916585a8508b744d544a90201735841aa25f4f3e4244f444f1b0f45bfa8865597f85ac0d920cca114330165d3d4949222d5d92845ff6bf0e142308608c4515b5a92982c11002812282365044c0612cea582992179c2ebce07411a578c1b12e49334952a4f1c8ad4af2e82b2bb272e098fe9a24ff482c9126bb8e2a72494964493e901019f2a194ca7a505485b4eba05a228f38976f3891152bde238857aeadea4191f67894e2a23508b445a4b12ac9f24aa23e2f9317893457286b29a563b9171c4e174a5eaa300f1ddabfd32348e48934164b7451432a0de853759c927b3da08fb491406e3925f74a20d77131941e9620837922ef10614c42e9228a61e40c526862188b3980314c85c243128c5995060d2ddb517844c1a22b02cbba28cf918f838e807c803e15106ba2b204a29058a04f05c4b2b43f104fc7722096f59a1ae297f7d84440ee7264a2241ed67e231dcb81bcec784df1b0f4245df1b2c3b2d060795c5a513183c6f2a478156269d17ca4f124155585a811441a2b04f288031c7097df11692c0f5cdfa237c5d0982815cdcb27e1e8200f7a41f2f257709268389b89e248a04f925fc9a6a678eb3b5794a23b2f5d2cd49097bfc27af92ba82128d60c8cb19609c5de807928907fee45b19531f6f2495edfbfdc03f20f151575f9dd6c86100972c4880f2d363e40c062840892239bcd658c35a00b865241c0187524b25aa42fbe8aaa68d14a5485fe8e15025136180a1d83f96b94d90716d22e946747576aa1b0f0e197f7a0f6a4a9bcb97ef317356d26aa87c542e9d011fdf2576849878e30c61ec050a41e1863940e59fef249281db234940e1d3162551a2016a543561ff81009060914b805f6e26920bfac8f74bd7c922a046219e5a1e1e2d5d338a7693a2617aac21dcb3b51c7722011ca2300dbb44c5205fabfe27e2c7751e184152a91963e99e89c8dd6583fbd92ed518b7eeae2384ba4f9e891589614b2acfd9feb5b389d8bbadee2581fe902553ffcb226fffc91ca8bf0b8266a88636b925aa8a83e9f0f4a4a1e52f0c058742baaaade8b2e5052a2a0f1b18365c711abd24cf7f163c75511201b90e5c3aa34d56f3e79094a078230164520d7be21f21fea88a62810783c2c2bd565a9bc5c924eb9a44d55d46689342b48547410ce8a4af51ccea6fc9df316c5a1dc2debf34f5174a554af258fd6d2e7c5137dc8a5939d2509a551362005940ddc00650331886e8e0847145d239117d1ed820a1d54bc5c52e520c6180a43d1402134281a788294e48855695032c008c6d8130c2503877849d1110f9797ac2914550fcab1234ac18163531d8822a7a2b6a57f080b35c4e57f50149229c88f8b1ae24261412d71218e43568ffd9ebfa8211735e4ad2ca620d490224a242c86689488622ea0d0e693976c281dda503a642db9f2440d49927f0992ff6a3327a044201356a5712aaa0b54bdc7139aa200c5cb8b3810811ce4f900281140006321305e6ff22ba1c29a28cc0e401435c429f950d50ffd3ca6071171f921a04f05a4faade158ee9e5722b1cc0cd84fc13232608c59c1507c848169fd9ae8c52da9fa2b44ad5c53e55b4477a2a4cbb22417224557a369995cfb88528af8d0707214895282e088228ec509c2e114e1e888ae654539308e483349510ec711695e1324d2bc96aaa7620ae220294b9725dd6b6d4bbabcb2423a228925e543d5c5e1e4e0224ad9e0e0b870c1892a6a73726ca2142e70702c8ee559526249972479a4c9411f243ca8ea49f027908e58599c60cac27aaa078fe941441826118cc3a9c292ae6fa922c93fa8c5fa70361c4d0eeb5d280f6792aaaf2c0e8733e5f0ca413876904847a4f160bfbee54f201d89a249f26838ae23ba539048a3290f95254a89bfc5b1ae2414e5b95efe9ae2925e2a973cd2122b070e2bbf0714ba38d677b2f38834d6914843e447901fd124451a4d8bc647a4c9520be5892c7789ac88317600c61820505812a6d170acd06838d1b7b8507a925c22aa3a1269f45714b527e93929170e513a9a24f7688a9f281d2f58c7ded414d2e54aa4204558d8148c652ec698c4504e38c174300c0d3033606d589daac53163ce18074481186395318c658cb53014134a7c3e4d870e9c241fd142073122448816368105634c6355af24048a8c081192245358f8e53d9ee2f1ffc3aa34d4b642a1c9df933720ea2dca53bdae9ebaf75b2acf4b7450f1c94bf4831155f13e343b7a4444a2cfa127c7117d127f90f5e231224488a6a6cf812332224488112142b088aacf472369a8c87a25b9a363925cc787d2a12315902c7a58471efb8e2845a5a27e78b00ba0932fdf6ca6d75aea6c24906f40d6bddbf316a5435507f4096d565454545ca55299887c82a860dfa1f2d83185240391e52a88780322d4788d882e106105639a1775406b96151d4489230e110636644507a9a8cb75101fd727c9d2b522594bfc5351127e9d5f8bfffd4aa4afaadf4cd4e6f278e795482d0f7ab936fadf8343548f8aba2e8bfa6c2e5f515942edb857ff120adfaba5cdca4a0e1c2bee2951f9642eee6d4a3492370cb10663862083e345949224bb1882a30555c4105121de00520833d8675395a40bd1619aa910858082106e6808b1050f880721c220048711020763837883b141acc19866104b588a631c83a84c23c52014c0186382a004636c3329045106631acde108a248201c81a38aaaa8e8055b813883697ca25802018431c62e09140806b01c3a266ac2d1f98ae2f115952769a33797b4a3ba7cd3b11c08169870a30b6eb8b851776707f5857faa0785acce1f32f10736385145fd61494af48710fc01018c53028e66a2243fb8e187335e70e4070e25f921625ab2262a6279a30f6b304d1f96f4e1037d4000d3f0c10d3e94c118d354212ae243178c72f9c9e5a73d38620f66bcb867da03167bc0801e0aa107343455cb445156f432c5169a50113d6cc198e6f2cdcaca101595fc5ac0210f48c883963629b80b8ee6e5aa1cf462b9f42c799040840733e0010dc6f1e24144f050040f0e609a3b3882692ce90e6b68da1dc2b843bb831dd0406207208c318d253d75d5c111755083b13a1461d314bde03ae0a08325e8b086c6e398f2b420a143184a3c6f7de8c00563161d34a0836869330724cc01cf010272a003639a8ba28c5421eac5fa544abc1392c30be4e0851ca088be0a5994276f8f4b53280e4c88430ae2900138c0010a70c8020e0778832505892c8aba9cfa3ce5376cde300029dc900637a4c00d1b704304dac006639a17cfa7a2f27f6159af23e2e86f43d506d70629b22cca92a2148dc50635d8c002b6064510620d4158435e4309d6b08036f6d0c613da088311892e8713e9b81a2b54bd12225b70221d9a50169a17ff70a8368030d6060158a40646a801088c31cda622ffcb2fefa186289a7cb0e106739767230cc6d8c091063ca4a18ca9454a43654c73854049fc4152948206379826048ad01006434374063618d37436659da18c3314b92c0a740633b0610633ccc005d398a10c8e0895e18cc973198a942162511491c1114c637d276f8a0c66541268c94797f56468398ac680873198b1c43f63a85cc8acf106631acb655a438d35b878c16b38806941a448b4c43f6278c397f8470c6430a69928a9fa8823e487112d5edcf346389418b8882231443ac2e006634c1385818c97c9c380030c6c30465d9205063218d380010b4d0486f7053d30a6993c6af19507437f02c9da681c756d40a12d4c610b5d6ca1004ca31f5b1e8f77aeecd18b074b3f492dd3479e0f59569016eb73f9e69adeba37bf927bf5656d409616ce60cce3d10217927ea73c5ac0c1928537b27006634c73459bcac2912c4071edf744297a72ca1361610b15850532d80f2c00c102148c31eaf31f3d8576740537ae7fb9421957e08231f67ac8151cc018d35658833188c40a5c30c63456a88c695c28cfb60214555883314e94528532189ba42a14b1a80909151cc1d853010e8c0a6620a1c207ae7f912a2a9a428d37267f892e1635ce6058a8d1d158d2f46a7c8069288afafc470d044831853518fc9fa670069b821648a8cf7f56a4700729a43004c63447264a9a3c4e4593145c0a0288821a8c5d9e12a25e22ea9a5a24077d3c0a110a8a80c21518d37038d18ba7f4d038e57196270ce2096848f184233ce1471a9948830d6988210d4f1a3ed20880144e1882c7092a8c692c6aa23a54644d1144c3b1a6d0536857545405474fcfa9e2abbd89be73e94de9a8e292221db7c53d9b0393c4811469a22a0a0f68883185a8eb3d6e45684829d0708086c3f924549126781392308da47dbc545d2b55f5927e4bf26aa2249067265881095c30c6f162a301f9670b907f2caac38413f64b20c312ca8852a2142d7134d54f93e4b2841e8c31c6f122d268ecf1b0444b18801208c118f38249a1043218e5912497cb33514a008112326a30c6f162d3050714aab487c0a0aee8928ab02401270101ac0b4ea489345ac2914be43f90f0061b8c21010d2474982521a12201019acb72d01120b1e4f5199738a309676c71c6028c50062338c1085a18e11681105214c10745f880144598441804d3482e9196f0772e4ea4c3af9087b2b07fe7ba288fc5e1449bbaa6b71e53d4c58974e4d87a721cd10b7ed087ca293d82e8c0210b872c4ea443a3bfb2b4b423d2e478254bfe0a7d409696dc2b2d614b4b3ff9e5097d248bf280704898086910a1063a26299a886080219c6108600ca1041afd5588da1c0e277ad0e7cc1281a2499a7c0a212042086110c2470811c78b9428a54ad1d2a60b8ec69ac22b078128afae252f7d68922e97203882e345179c20ac4105c1079ab33ada74cdd975ee6d6dba7d6f8499428cf4b98f7536ed6ee7d6b91723857f767a9310b78967851f591e592a8e89c2849eb3a4fb51c730d7b6040305b8218e1e9d9b0f4ba7b1857942fbed59d7b73e1f9ef231268dfda07e0dddb4b2c5ffe784373dca675bfd07216c128d77e9147a7ebc2b9ed5629aa0e593763749db863462dbc13001dbd7da6bdf554749314e01660950e6d72e47fb5e47639490a96efa657bf787e74731304980b5490cdfde336add9a2fc120a1bee6e0d35a9f4307adb5280909e60834539cb1dbed5ec359d7ce8e7b2d1e9833aa7457a58c0f3f9df2770bc608b8ea9cb39611bfe61ca69d7bf7f7f850d58ffb72694c11a66b2e5297b3cdd0b373473044b052feb3b0e6296bd6ae793124aa0249175b6086e0b6ac58b7e8d16d9df5398c102cf5e71e7cf2677d2dabc50421ee87f16dd452cefd709a8101827f76f89edffeff768f09036386757acbdd227d323fe96d7f8f7b5f2e1e981fe008298c72e7ec31be8e718690607cf0534bb8b1dc91caddb0a6f6144405981ed40665dd127bfdd6debf1560783071a6304297ad93b6b5d6b9f7ae742e2f72592a18b303e8db654a9dde353b8d3a6873be4f5dedcf6f34cecebdd49eac172f12c2e4403ad7d9d9e82e21a4b47a8129a379f596a17be8d349a7330607f5b9162ddeed497f53bbcebd3f3037984eeb3b6cbbbadb6aebe579a278c4b9847241823136c879d637e1efda5ed6263b2bd5d5513101a606afb56e54d61da9b615361abcd9b64b9aa973ce1fb433c05347b9e794146fd776e442e5074606d461f38aa3745da3a4f0ca3c306438b8dfe659ad96b43debbc40d2850a10cc18795b575ba4d5eb74bf6d0c1ea64fb33bebdec4316fee5d5941a2e2a1f0e7e588fe298b7bf3dd6caac7d40003835df7b6f169eba2cc34368c18333ba66f737d7642fc8e7941831542fab64a27659e949a3c1fb9b70a8271016e39ba83d36e6b359db9736f452971cfdeb4481ecfdf7b4d1255c4c8bdd4757d75595285694186565a48a3a4513f4961093061409bb39b0e3e9df4f57be75e69b3b92a30ac15b04046986bfc3725b57ad3dcb9d713fadcbbb2b201150c1556a0edcb1be20637a4fe28eddc9be4b950a02d5480f1d4f467750dc6169becdcbb84c29b24d93d380329900f5b999bd6cf427f573bf76ea8eb5e12a0a07a8c2e62daac8dd3eeefdc0bc66fae7cef8a933eb4e7a51ff7deab27307cf8bdefb970c84af21ed7afa40a658c0e4ef0f26f4be5e32a5f3e872b2f79d74cf1a6f0a7734d6a29aaa8bd03044b7294363aecd1798cb439170bdf3768b776b2550b75e75eea9aa44d9ca1cd5b95839c1218f747a7a74beadca1accf852064a983ee59d75cc48fbe54d7f4f75e4faf67bd65ec2ebe86f1fd5b8e56195d756c6bc690ea0acb272195f8e1fc96d2d601a36de770d658c6fcef68ed68407337fda2e7bae594706a0a46e83c4358bdba9d741eb953a34e83a56e36d29fd665adcdb684f00bf9d8cf7b671be5c4f833b49d7b9fe7b16b923a4b3fc6f7f99d7befd5d37fbe03f2aae55e102491383e1bdb6b3d2dd69f55de17b5b9947b4ad7316e6cf5ca121d44e5de7b2d10150229ef875b639c1d864f43d9a1dbb99cbaced8fcb99959b41739d2e2b6fbacf3b6754b6c73db12c656b3d7d7e49c11c3870f2baeaead8e7937dc3af7beb8c76949ad6b5b5b672d6dd13390ec6285d6ce9ce36e0e3ebed7e3f9ec035bfc606ef4592c657dfbadf07fef1f7517a17c9f33b2a8f4e06c279f95bbe5a72b74babd8d3fc4103e94d8e268fd4de0fa37adcee5d7d06aab3bf76ea817786e6f5bea8d3196f1d5cebd292588cfdaa7d8b7ce1bb62adf035d64cfd6ee2addc2ac35de9d7ba7f76c96bc9e5848a0a967dcb2d737218c3376eee53182fab6be8d6d6cd52b9daf73afc7ab16eda01f928bd7ce61f8e294116717bf73af7e9958ee7d995cc56d21a773482d9c916ee81a776a4885c7bdfa251095efb536a0b299a40d88aaf4bdd54569a127c9650a6da4c882ca861bc50ee6bd619edeb937ced0e6fa6c2a906088e18c2e6229e5766b1ed12d6e4adfda87abce7a76a87b3f4f44a61ff7de6b59237b62e79a4e2831dd318a40466a29b614ee577394bb73efe6fa967b3d50e4b774b4ee8c25d6fe345797a5e28844f8e4c30fa5dd95c2a74836a0d286d4ad5fcf8c3dd7a66df5cebdf75a215b42fc3b569d6984ed6b4b087f8f7befdd6c36384956c9028bb9f593526b3c67ab1ad67baf70f845897375d0eea77db68460e6ddb6eff90d4e6a6b0bf2aaf546db430b5fcbdc3af7aeacac50d714e45eea9aa414242ad55f413e54f5233fe8c8bd2b2a183180c05773c46e7f67b867f4cebd2e3f15b9b7735d0f04baba181bd4eeb58f8ed20ee8e58af674ef66732f0a7eb4dde0379721ddb6d969f7a6362c3e9c36a7305a97a16e1beb1e747a7ef4b5f72c86cee10a8f2ceddbb84abc236c8e9d8e1db349095ba431d7d8e6b49d950743ee0159520f0fe823a9dc0bfa48f77e42d3109697d9df9455b6f7b9a5bb97c707288519ef8cfdd966678e1d0fec9f966e879dcd0ea5959d7b2befe42a567c632c7fda2a9fc455bfcebdd5656d56b688b688aed067032ad70adbe4c31963836ea5c4b273efa6d2a84889a16c59c3f6a2de18a8024a8753c6b8f58c55d6efdc7beff5d9f76ae04637e19eedbd5c299c7576eefdafb60fab9d57b7dba6ce9da3b57deeb536974575365305825a29854dd3ade5a33ee9eedceb42552d1a4a2bd4f141faacdb9db1eedc4be97bef5d614971712343e67331bfea6e42eaac84b9736f96a6494a92433e68b3c6d2d51a5b865177eedddc1be387a2a0801f8adab4549b0d14efb242d566030187636c56eb487dc36cabeddc7b2f6cfa37533e0e509143e3deda5c404706522c1c1dc0c1013df9e6ab98a3a22c0ce098628a076c00021ae040062080010a5ce00116b022b7d9e0a8c093f657a00b50200213a0a8ea0212d09b087c2800818abafc01ee020ed857a8016ef39d8d041810e70416b08472b928a080249ef32749c0940fa53eb7d9b44c52c7f24e24c5d42259164080036d701cc000ef43e5cd572ec9940f94dfa205d00001361818800096f8a70251b80de5d9509e07401105000300c0f184db5c955f539ce430b9be658a8cdb688fd4c9d7924fc1bccdcb6683012645130af0844a60fee3d34901a0108645000c16083000d68617de60610c010be0034399011b500c80b5e1053758d813272699228cb12219281803c049266301941e44a1072ee841c7aa3454a0f4000b941e54c6a21bdd7b512d9ac0fce08116985569a860984d6481050f0260551aeb726be3c9d0008aaaf2c18938397080bc729942f73e6207278c9dc178b085cb5b2425fe08c63232a82876629d54279e13e9a473b23911c1893c8900cb605874706136279870f9e9890fa8602a414a8a152a2b564439966809c7b51f8b6ba42272edc7228aa2682a010aa2255ada7c8bfe8d1fa41085278a4059b1b2dff3c464854a07a2e93d9b8df650264698013b11c200d086a5232bacc895f5a3452b276840b18124d86b6a628c7180a1d8600dc6a27b5fc00217e9b042f32dfa2b1b3cf15f5d78044882f06029c2c223528996681e7f4d4188e8afae290b8f27f4c383fda2864cd3555120aa9ab278ddc92121147551437c501412905748b4911d0ffa646470c61b5072508431664dd215538b74a47a2b543d2874e493b9f84778424318cb8c41c644499833dc577f79a41f633c639918688fb4050c36118f87457ba42d18cb88c158e6055368339671819618cbb4c083a59629f463a28668c63261fcf5559e281e5766914b5eb320ae8055154c9782075fbcaa30e5d9e1b8785c402e2217928bc905e5a272e1079418cc61d39448555ceef2208a7a104579ac68888ecfbb44be3d6f7118c3a0910387f5b4088202832e9a164e8b4f5e52e4411de792d7edbdfce797bf0204da237578bc78262255c853e4aabcc88ba6767c96a8eac7c5f2a1a6d71f6af20e92af28213ac88ba6765cd294056398337c783c4b53273f124b6a792c3c2e65498742a083bc4c2c8c655e8af8c7add0155f60ce48010a5e3e096399133096795972552e5149e8431d4162ada8e4d7e23925f736a7e4dea6642547ca83211c21b0bc98aec61595fc5ad4e74235e4457b7186bc78f0c1d01718632460282de002b32acde545be7a208c652ec632402266c79121448220e131248b106cb86011424d1b0c4a186eb02a8db318cb588c31283215636c033188c10dd80dd8186c8c3482c0928480b12b505820014d39113066031314ac4420cf1b979f9e4083611aca0a14c09c8efc4a3c1eff58425860863e58f10766460ec6980f1891c718cbe203282a90006343180f769003c67220ad242900631c2b50521000c694bc076369aae2451a88a6f7b4c80a0b44d37b5c281e202bbf16960462b12490b74c1ed047f28905611fd8bca626a9baf24a0d6d5eaaae291fe582e493b8678757ef950f29a59452c618638c31c6082184104208e17befbdf7de7bce39e79c73ceb5d75e7bedb5d75e7bedb5d79eb5d65a6badb5b5d65a6badb5524a29a594523ae79c73ce39a794524a29a59431c618638c31420821841042f8de7befbdf79e73ce39e75c6badb5d65a6bce5a6badb5d6da5a6badb5d65a29a594524a299d73ce39e79c534a29a59452ca18638c31c6182184104208217cefbdf7de7bcf39e79c73ce35672b9d32c2e78478fcaaa8cf27081b0163ec0b86022a8331563d1559ca959505553d095e7650435eeaa13d216a0b17caf33b7e4c5930969932603096896fa4083584b10c68fa241412c632144bf56ee9ece3880f1eda77543cac6ac8c4c22229917af84b5aff244548a63f015531971fe2b9a2c973b850d6fff6976b0af255e80a4951e7aa24ec9677b2269adc13b2fcb17b5834d607d53f4b9e2397b4e35e8c18264a68ae1dc4def48396d23693f0a4c51136ed2ade8feb7c3141426cd5d6b79b758d5fde93072647786fb1efbc697c75635dcfc0af52f789a5fe1671d42646a058ee972595b9d296334d51b1acc730c1a40814cb68b3cd2e6387a96c264480ffb06368abb61ea5fb7b3141301982dc34466b697e1b7ed66f22045931c5d4c926b3c6d34a95129804213a6ed479def5c54dedab4c8090b173f2453bdd9b4f626a86c41267881b76180c931f60f9d041a72e62082b8d3e787a530a677e776f6e779d7bad97bfe25e931ecc669bad51d76cf77b7b5e61c28307dbb3b4c25dddeb76bf03a91f5ae860dd2d6ed75507aea3fb8cfbed16dd399d8318a5c4d0621df17e13ba32aaa65adab70dfede72521c60d73ae688ababafa9a337f0296b6bf56dcd4fcbb86d109b9573bed30ec3cf54d620629ddd83feef2c8510d2c02bad6f376c7fd3f7a69b01b6f8598dddbb58dd6e50064d37675b732ec2b8eb3b32dcc29731d50d6b976dd7cebd2b9b14967b4dc6c02e6eece4ceb6b54a67338981d411eb8de776beb57ecf040618bab7e8a2ce1837ecd8448cb7abcd6dbe499ddc9f1f16262f68f269ae39eb3925a62fc61952f161e282dcbe4eacdd76ef303a2c4c5ae01a36b75b84564b57b34918efd561fb11366da5a5f4c1908a8f4c273c3e4d677bf9599ce3e6447c2f3585b9fabbd85aecdc1b82cc265ec36e4f6dff49bc65ce9a688f25ac4e5b07e7cb4e33d170cd14eef6a275134a8709ad2da5f9396a279699b64b38fbece7d89c755da38df75e21d01464256389e6e493b6c23c2daceee14a4097d165e814439ca9b69478efd18d5fbb8aabfb4927b123c574e286f17e14fb94449b12cb1affe5ab2e3b1989d9dc56e710c35aeb841112f5ebc43e9bd3f83be34768495f4a5c1bac35ffd7cebdd4e5c303194734ec68933e7d4b8db3c34664ace5e7e7227e76eee8a88911efc9eadee6e7f0fe37db22acc698ba7b6bb36dfbb622b06db8c6293d3b95b5e244b8b555d62ae7435ba73744504d77cdf269affb1bf64358f9ec738f7a6dd842f846debf61d52f3687b195d210bbc146ff69f971369d5b21e4fba4eeaa862e62872721b66e15db39a5f5fdf3f320368c8eb5f53d9f572a9f203c46dc32964fcbfc197a2034cd9b52bdb5ae80b0b06e9769c3567bc5183a37e04f9d23b5eeb3a5daed3fd4af6eb56e315aeb755b3fe8cf55befa52be19dfbaebc39c8eb69731d2ed2086910f32439cf7de7936b8b3d67bd8b6caf9e29c6ddb29e16641460f38cf29adae4dbed41be28ecb43f3e872b5f8a7a35bbbeddcab5f5b22c8e021e78da5fb285dd338ee7c8721193bbce6a086b69af576e9ed9dce12778e64ea80759c124fbbebc3f9656b39313274704f634867ce746fb7f77630c8cc41ee09276c4d4e9ba96f39c858a7db5b4b3a5b74afc6614faa27d531ee1a9b9d140efe1052baadad76c7f874e7de152e326fd8783758737532dbda7273c37e2e3efbdeb4b00dd6ba758be3db675d84940d6d53aa3f5aabf1c435b6353829ad754bdd23adcd7d1bb939385d9bed61ec268c6af856ebb6ce6a87dde2c88686b93eedd21bc6ee659d066a9bd3593eae4ee6b7130db039a8d1de669c185b38617cf075cef09cb6566aeb593767f13403a672be282994f1f33b4865cae0e26e4fdaf912ef3db724c3d431d3f631becb66a70a90cc182ca475e2a837c538bafdcebd93b4f9cbabc8acb173b62f7fb399ba74ce89e1e1d92a74dbdd6eee1577eefd9109c3cf19b3cb0f5d7d32c70d0621992fd8a9f5d7d6a28c75be06bd90e5dbbaface99424c7d7a280aabfcc8746166ebdacdedacdebe9d6e41860bd269bbe18e3aba6398e5169aadd469609bf141e7b29b0febd73a23c868c1217dd93ddd2a94347a7d3094249385e71cd450dd2cf60afd67a634efcebd2b463258c03347d77b46499d7e34f6c0cc207385edaecdc7dabadabc35dcb977256385fcb4b4b0e2689d4ab9db26bf920d4ba60a4eb3fc676575fbf93b9ba1c2db8f393ee8326a59719cf20151e191518362b81d8df2b9fc0e3d8dcc146073fabda3123ef8ce7d460ab4b65aebd7067fba295d145ad438d308717db7ef98c508192838e8127b6d396ff7d4da25649e105fe61d63d66f6eebcff1d041268da82996f83d8c70d2a8a3139cebdf56d38f0e4abc899041a3695aa5b5af67fd22d38409a3d435523ae1538ce11619266c3ca5ad4ed6f8e0cc940621b38438f383db52f80fd27f7b081925e8dce49b907ec4cd6e3d9350a3dcef7d733deb530c3bf726c9dfc9413248c80d6a2b1d748bff65498f9039826e7067fce2fee9513f7806952fdbdb96a187a2b2c81821b75ce7dc0fbbf8287c3453848c6d83f5b5d63f77cece071922606933fec78e9fb53b7a6608767aa431eba965113242d858daddb68415ba6fce668210ed7619d7569d52e99eebdc3bbde7de8bf258406872b777b3653bdbaebe2f69c7171933b63b8e2debfd194f3ae327f383f7b635bbe16f3b776ccd0771ba8df17bd679b53e731392e9417ca85f3bbaf3834d5b77fd91186478e06ac3d36d68f58673ea7783cc0e3cc73969ced4ab674a5b0d323ac8d1ebcbdcdaa435e35c5d0e76d6dbcdcf4e4728237630c894b1697b12dbe85c46fbdce140470dbd46b7154eac375e41e6060ebfaf6f2374ba55892d0b3236805edfd66dd72ab5a5b406ee597f73d7482984d265860676d2afae45aa5dcef2a70a32337013c3ec6ac6ce4a48b7bed7a520230329b5d5bf1b8538ef296d0a912a438675ba4eaaa77ef93237cd72af736364c6f84d71c30eee7f0b1bf4cebd9b9649ca221303ebac6cbedd3a3cb1d3deb937480606d1e976ecb68bb8d1adff47460cfa39be98eb6eefdd7c1c72ee0599175467db7e8a3d3aeaa0c42e704f4a87e97caf25f4065b6b41a605b2f98e345399b5d3873361b8ecce62a99db354dabc79a4ec4861c1c105a613786fbbfd7dd676ce192927b4adf66d7ed461a7963e10309bb0593be7ae27744c33d504cd55525c7194ad6e292ba605984c3ce8aa6cd3ea39ad9cb261c23e0bdd76d96ca53bcb1704cc2562966d66ec9c425765fe1f602c616574dadcb65bc3e85c9b81a9848d6ea1fce9b06b4ebfeb0186129236fc70856ecfec12b6cebd1d2b04bad7039849b4e7acc39b36fc1ed20891a8783092a0126a4c1dd474420d1bbd012612ff4dbba70f669af16ef1051848b88ce9c6dbbe8719e64c77807904dc18caba21ae3367e93606071847441d9fbe76b34197316d32c034c26d3bf3a32d4bbd2d747bc903a9de85c2026218b1a1a39f7f46b7f1742eaa60cc22e4d35866e972db88ab9cf20169c128c237a6faada4594e28f5c6b80093089c618d0ee746e184d36be7de10120c22a8ae6d4a0bb17c39dfc343ecd61cbadc98ce6c5fd3219837aad43853e8d26a87f1cc453086d06f3a8ff4c1d7686d10d7e70ab15fb37157199bf5f7f6afc41952d96f44050c0c21aadeb051f7d61d6fa7ab7383785e9b8e4d636ced8bd40922cb5debe31ce78eae5d0c446cd4bdd6ead634fe5b0744c37a3a995b767a624c9d1b71ebdca4d75aab868dc23fd8c754d27f58e32a35942bc0f841d259777b2a5f751d37ecdcbb1204d387af4d5b67dfab6dfe6b8f0fd9a19c53d2f8b0c6d301c1ec615b999d9c554bedb26bc7d000a3073aa3ac38be5b8a6dc6b173efbd15260fba3dfa724b9d1d37ecfeaabc480a3078f82ae3ced86a774c75d377d0383749b7f58d9f9d369e006387169d9e31daf8dcfc0de7c6d4c14aac6dcd15ff4b2a1d1d6c7beed967b3ad3d3a610b3073c0706ee8dfde424b9f4e3958f810eff9b4c6736f77718013bbc45a47e970a6efe0f0bebea89d42e74def389760de80758cf1619cf34338b7550901c60db8d2a8777db24e5ab19513a60d6ffb3bde6ef5bf9a7510306c78725af9dbbd5afc51ce249835b807b3de75b787f901a60df71e86feb5d1481f9c530dae560bb5cb74ead9da6c6c7c7cc7f82d740ddab8dd7b402124696875d669676db546c7cfa200830609a163f7e676326e07b712cc19a2de53528be5fb535aeb1f69c198a14dddb07d91b6681d769963470a0b0e2d3065c09aee08e36717b5dd12660c199e4e9ae38431637779c231b44c9d6c54ce69a9759e04b3c6b4d151391fb4d8ca2df71718314c4b1b6cd3f5cffa7ebfcebdd611164c181e4237e18cd17d539be1b74ceff17827efc080013bedac9d2e7bf32d71eb5881f9828bb855f9fa654ba56bb3732f0bc60bd4be85d965afde367eddb917441db9b70bcf35a835a5d02d741a4e24f74e13c305bbdbdb50eadfd451fc2a660bd97dab12d2ec70db3a468c16eab39bc608f393ade1f89dcd2607260b38fbd3871ffe292df6d8b9b763853c7b62b040e9d66f7393f53d9cf57522e60ad96b7cd25f7b4dabddd85b282cee6da1b0005143ee6da13c2a1563055a71dbb5fe7e3a47a96b05865585865f6f49ad6eee267ed9b9d713fa7c00430587d821f466fdb98d1f2ad9fc09a47bb1e461c1a8d122d5d2063da8d4596863acf8d517a7b31cb4f98b9a9ee081b41ae6b7a3a5364f8b7f07b8be3c67ab3b4bf9e8c7cebdfbab8de54fe8e0698e595b67a55b39dfe600c79759fbeb08cb988fa993787b94f469d72d14164fe0e063dc95562ca3d41442bf0174aee36c39bb369badae732fe893c50a8f948af2f1c95ca82499a4239fccc5bda04f08a383276c20356ed6caf7b6ce2fb6f9440dac4f1ca93fa771d63aba4e15b2261f449ea0c1f68a1fba37f7b379c306e489193c6a9dcd155b8b657b09373078420612bf9ca395bef576314332608b6f7efeecb283dbeb136360ebf1e9e8a27b8471b72762f0b4dc3936ed9aff7e6d3f0103dadcca265ba4d623dd6c7cf08418f951fbd0d18aab67ed9e78c1cb527b6c8e3afdbf42d4a6fa6bfbe6091744d7535bed32b4d0b988953cd10219ab7c9a319dd9ed19ebe78930deb30db7f8bf2b9cb1e24e5437bf392d67f5889b37149c70c2ca68e3b616e6edeceb4db87e0af1ce9ae6e8714f4d48f93367f766ce5142593bf766c2b3b55ad7afdbce665db430b15fc6b2d1bc69bb84cb8dd6ad318e59c7f85ae75e4bc8f7aeda7fb2ce872dc69568d03a6c1d6d1346f964a344ac56d67fb83ed6d9513789bc67cbf0e99cf03f5a77b1361375ef0ac85d8e4c445c4a7b0f28840487ca3e91c4d3f9b4dcb3561a090b2ddcf2b518f5b7272524f0b7affbe9f776372c65e7de4d456d4e1e61618d596eeb7147ea3b76ee3d7104de76fad30dc68de1c6b3d308985bcd3abbac1ac7faeff189480a129525278ca815e28a616c5bce0cad3e59c4a6f2e599f3768d71940e6f4e1491eb7cfd26953e6396502742cfa9b5d4eddb67c7d23b88d06ebd36877a439c3395296a383984845b52e9d13feef6e61b99c6dd9ea536560ddbab3b4e0c21b7fdad638bd5bae9a4bd916811e4c78f177c6f21a6d3b8befca27e3abed9ee5dc98124e50a1c2a2f5548362784d81952a87783d97eacd469e96410d6f5ccda69f72c88fcf257bcb3d3f2c53d710ac885e8dff8e1241071bf93dbfeb43e69c4181058eb3ced8c3e6d9c3fede7c48dec32fa83af6aa7a9dd7f9052d7973553fcf65be97ec0993e482bd479d72886933ef8c636579fb2bd9ce9fb133ee0f874eed7ef1c0b4ef610ad8d8edd7cd46df717c4891ea28d185becda9c3e7dbb4ee70e2779d82eb62d3d47e9688d5a76eec5214b658b133cf8374de3d386abdecffd0e9152e8ee7dfe169df36887a9ad6d35c727e3a370d7a1c1d753563ddfa490566b85133a7cc3cedab6a5d3363fad9d7bb73899c3db8f6aabe9a6ce4db8b51cdcbf4ebd6dd5bad60d671c7c478abf4697b17d735b3a9cc0c1edbaa7deb13ead357d6fc07247a8dde5c34f575d3bf7baa1b98cf3a5f31d7d37a93bf76e6a73d20697fe8fce48dfb76ddd9eb02152dd9e3749e3e759e55e83a554b6e824c5f26bd5b173ef4b7e0f763b9cb421b1743c3d42fd22d4550c276aa8d4bdafbea7b532ea2c3bf7debb622d7121292f7f45ca091b6d6a9fd53d7c6ef7ebe82769d87ab6696b745c1bfeb9e4a77b572aea72aa3a4143759f6fd7bd37fc98ad77b448b94205e442fe2b243beeb5260ac8c919fceda6ff9c8cee399fcf0c744eac3dcf68a7b4b9d6324c0af7ce1ac3d9ec6ef4a98d4a45871332e0fcacd655bec3eddfc918a6db505baae7d69936314ed6b0cd564d1303a4f0edd7adbdc751bf7c1286f7ecaa757b521a9f3d01839530c3976b967bca68f5175c7c52b3e3c40baf52e978efd95c8d8ec549175c9eee1ac5b06df9d37ae7de2b4eb8d03c3fa6fe1467985f855b90185a9ba97c37dfda974fb2f1cf06e44240fe29c18916367ef1ed48a7859d7bb38f932ce41db1866fb17575d78c3bf70239c14286d2459d2bc5b5be9aa227e98a9494225f9c5c2142e79c06042756b010dacf55e78a1ddc761bb937573d4eaaf0aace5a7ef4cfdb35b59d7bb538a102a613be2d6bcb1ad6aa7f050448543ee4f190c79528395123cef774faa3b5da0de3d6c1c914b0c4b0bade316a29b8930f5fdb124759eb9e35388942856f3addafe20d9fb4748c1328e03aabd3103e975b3a6b6170f2045d1d6a17dfe729656e958c933474c3536bedb1c9d81edc98179c38413a1a298c93faeffa4e76eea5bc3841234a3d6d933bce6c829326ccfda6dc4dbefafac91d99e06f673b1f43baebc3f83af756fe9edce3640999c2bdb1ab7337ab69b39d7bff480e1c2a569c2801d7e66ee99b58cedde6ca0a1295314e92e04e3b9c63c4af9dddd875ee05e3ef5d01c347917b411f129c202166dabc796e73bb503ceedde2e40872437f9b75961bbeede2c91915c68d677c1bfb7e51d3cebd579c18413e9ab5b6d93a6d73ff77ee3d2982ff8e19dbdf0f1f76ea8408b83e2cf39b794ed95c959d1d2743888fe6adf77bfa8ed63d3bf75e1455a59c08814eea9a9ed4b956299cae73ef0bde4c59dcab53701204a7fdcd596d95d1f7fed959790ff62d4e80f0feb987f1cb6deb0cad3d31c3f9ac54cb9f0f4af95e3df941b55adb67e79650daadf574e283f7543abbff1d6ed4edd6dfb1bc3385ea490f72b6d5336db53e4d63fdeb41706fb6a47dc203dfd0e16767a3def220e0d172b203e73474ef29d671b7f7b643ed3fd141c6b6cdbc619cd3422ca13ec9817b8ce3676ffeeaa4f4a9e0a40c495b7e35538d1fbbe7b973af8a8b1bc134e1040754560aad4f1b33ae38c6cebdede406115aa967a4eecfb976d8b9f70a7dae90107a6283e7997e6cbad29761ceb3067bebeab56a9b2bfc37370d5cab586fa7f551ea5c9533706f29844eeeed54e6f91e8fdf8bb9c4890c6c7e9f10bfd9e26f5973e7de13325cd4f4fdd3f81f4b9a5fe75e15a8e023752c8d1214a000c8c918bb6e5db7ce345a895fdd9d1515a800052858d968edf7ae5c92574854308f3889c1ab953ade0f23f42ddf74398181c4d13d08e56bce399fd07322c6c3794b97f2554b9df3ade4e4053367582bd6d1f9890bacddcdbadfd9e627e5ff490b9e4a1de553e93f6d7cfb248cd7269d54d677503a3b63276cce9e5fb5d366f7aaab9ca0fa5bcd0dc2a9a3868f6e026ebce5bbf7626b73c6a909e766c4d969cbd2d6996126a43f1a37c5dbe59f19624ccc5d9b7cd34efd5ef3f997d0f839387385f9c96ff82d51b17e55bee8f1cdac71ab84d470d6679f6f67dfe7a604b695e6f95cd6ed9e73ad86c9246aced1beffdcdecabda1245a9ddacdf75e7ed752da48e4289f86304ba8f1fba790c8d2db9cf2e57fa692be47ccd7143e18b79e8e801bc21a31ddd33f371a1b611dc51a53097385b54acc88da74a6323be7906e08e12236b6513ef79e94ef4e9f223ecfd7687bfa7ed2f75a22e493eddd37a9a7dd506e44e46cebc6b2e68d7fd62c0fb1a1a54fc21d757b1cb77da3cdcf5b57aaa56e72e7678859b19dad4d391df51a6921347e3056e7766b9a62691d21ec6c3f9dbbe9d942182311934148e812eb961fefe79ad72d4c04419d7d9a6addae7ad7591dbb67129804c2a98e3bfa86933e98357580c8cec5366da313d79d69b3c2c48db7b2420ab37dd8be74cf87c91faa7bdef269fff6337aebdc8bc4c40f0eca9f92eafc30de19e33ec4b961a41f317d79ebfa9d151055f5b81744559a250588091f5c9b38ba189b8450c2a85b4cf610ff6db30eb7c46f5369b330d1438e197efbaff91b960f5a2679b02defb85dab4eb3cef8bb30c1038bc91d30b4395bea166b5ab1a32730b1c3ab3bc7776fe1c44e7514c3a40e6fe66667853bca9ae99b2674b0b6352b3d3b87ddc456cfc139f773be2ca97dfb2496039cbfbd3eeaf6e347b39e81491ceacffd55d2aff55db78d31c3040eef31962e376abf39aced1b36f49a279d0ebad9649d6e88edffe7cbd85cb5d16d2498b4e151b76186f1cd9761c46cd039ba87e7efe7acd36fd710e3cbbedf5bfab28c33b651f7abd2e6d6e44358e5a361a206d7de93f1e93bc6d19d33c1840d2ca38e1e27d57ac68c5b164cd2606db5395207a18e504e9a86091a2485d9db6ef4412c297d5f3039c3ab4eeaa92d8512e7aabd0b2666c8ef6ba62fe57bf8bd3acb505f930d36dd2894106b4786b89b7679633965961bdb31d0fd66aeaeb6a79f94739361b2c69eb83d7eb65ac75b422806ea5a5b4ddfea5a296ed805266168be7fbfda726c39c3f960a0755bb7f793ff3ae2075360f20587e543fbb9b9a7f576cdc40bf925769a4e57b34b0877e7de95952c54a86b0a324dba103f3b0da9ef2875db4f5e265c70f970c392ba19f1ced0b7406b8e2f2586153bedf6d6028eaedd519bf14389f1732e0b16c31869b551efe8e6dc920916ea639cb78cf31db4966ee75c6072856de1a6f645e876cd96e2b66962985801b78fb2c21d1f9d74ef1fc3a40ad252fbda9c5566089dd63630a1c28c39e7b9ad94115afa3006266a78ae99426877735368346a5b216cd479ddf45d4ca490adbbfdf05b896dcb7b46c1bdb353bfc52eea6c1b7d50a3c0040a3b3e4cb19d5e9b4f1aeb13f2a6b946ddb0a4336b9ad380f6dbdc144ae8d5b5fa4e784965cc543e8fdacd49d178164a1a5d9bf33d8a5d9a34214f38e9c78c63b3ad41c7848d6ddecd49ec59e26fce640990d2cf1ee74797f10ba073a8f4d387543d8941c8104200005aad0d3311002030241e8fc703029160b00c7f1480015b7e569e5c3e154a436992c3380a8220838c218410408831c018e454910123dd3709c91d106470036719926a212898554144aacadb1d2ab4a2efd1356173708278306fd024cc50fe77cc9755792491fb0ec4e20d5feba59db408e31a5d176743118c559709daf59206db7f3497f5ab895cb8814930873e71184cedfa4179dae65a92b2a41577d397f785ddf97dc9e102038a511f7db71e81829ccba7782fca114941b74c94c295c7aef2e382b48d27c7385b434f84909db3023ecadfba87716f18b8f46ec0da547bacdfedf4ad71ce80bc3539eb72767bcfca23208e7be2fb47dc971c4c9e648b4fab4688a5ad0f1f3419ff7a1ec9a8986487b6154041ea18400051e1192ea3dc6dee3a9b316edba8e408f45983b3c5b28100a613b8bb2ceb21de937daecec1dcd84676bfd2507d0fe05118b87cbe4af449c46c49a9dee7f50ca4efe918accd6ff7bd4cf6314d8c08f785cf31bfcfc095592029dbc112d051c314c0d514ec16ba7fc6b049ca66a8e3293b1a0c01a901e59838f14834f0fab097a3d81fe0d1707f843d612a877d4569847ced78f27fcb6ae775617ddd803a4849af4240b1f41921e79aeab1ef59a7eb36b494b6a22cceb37fe4c722b76722d6f8faacfbcaa1416600fef8084bbbd7a06792ccdebbdfa108cb6c8282745c325829611d2e3a4a568d7661f0d8ed0615651f799bf4188fccb43a0c74da16b9245e763e221c4f4e8ac0d609a71dbbc4b7373d351f35154c41345bae1a0e9b511ec564d1e62cc7529d5180df312183c3c2a69740586fcbd14a02e63875a3b3861431d6da18003754f05dc649ea23ba35a19bdb2987406290915c17ed1d72fd4b989d67306b156f6296f7093c90df02df0438fb4d9f664025508e0b6dd9c07e3b015f64bf68c8083205fee0bf2965f4c639471f349911cb8a387807e9b3a3f529099ea018685714f1b389c4f2a3d1359fe6abc0e381430855765c3c6c5e44c4a6535efcc8a0d1c726b0cd0ccd1e7388376fc23fb1446916eabd2c411eaabc2e87cdc2a0367c3944cbfe2127c8e9fb90f5dd3432b8469ce36e533b5fa1afda52026244ecb82eed23d6d8692dffc3b8f6c738490d30a0547a445329c1084087620d04a47c7ca4b8f0b66c33a6669c727c25428d4ef2ba1d3893df5732c2842ec860cdcc78105028428115e245492495736080a22c2c420451aa6a0c0bd432083bff0b747b7a89fdadde791405b033395dc01dba5e974d7462b387341f4ca0760ffb204a0b0bc2a6f0e9a163763f1b8ab4f42de74c5788449fec25ef1bed3201f32b8dd1505e0ebc8d8e4bc88bcfbd07ecc50ddfb7b740345d7c353436dd4616843139e944bc796270a86d9f6ad34fdcffd4b810f0ff7d0be7fd80918b8adfdc0801d0b7c6a05606f0452b35e2ad0989b0f14519da479c92b24f75b918d9381e458d282ef18b1ab09bcc3e226ee97e67798a5137f166fd36236a753ffc2c02fecce4bc50e3bc23ef5fb386848c068cb5067211fb134d4af89ad3b5b388a1ac586d0f0734fb3e232c5e6cebd3c1ccb7e5714ee25b396fe60972af646a793269a48d3efd619fe90f8db4081aa82837f17a8d8c784c09d8488eb475ad8cd4a5fa5bb4e271931d8031caaa26d059fe987a629ef46929c8d2bec9e8bde40aff5d8c846ce5b3badba849af901154466421458990b88cac8d1696e8634f7202d1905da4cd05589b391cca033c1ac333c71924e7cc70c26bfbb754d7e8cd9b67b786569b7c52fa6c9c74d9eafa4a641fb5604ae289ae88997c56e23067369c2da7fc9c6c056f2d6d7f86e625b79b82571f1910144ba3eded326aa3118334c3066521609102828f0c979f9b3ea28bb9fa19eaf7bcb3e371f89b2b684446836c7de67c899d6dc39d6b21db133b993cec863ead75588b8b29cd841764b548f7016280bbf4a1e8c1381e7313a0fec1bec1a6ad56cc346af21266587d38f267a48768f958ad35a2813019eaf193377381cd5ade92cf69ac1dc34cb135947e18e9d213d122ae6dcf359346720c7888e432b71587147a95729e7c8f023327acb04526c5a9487ed07227580e9f94838996cdf568da38c8e6e9489c9c573f18a297ff9d29821cbe225644a78718ddac34d719c04bbe472f90e1a46b9a92008593a010e3442c7d8f5686a034be59fdcb609e1c257047b90011bab8f9f9d6276aff3b2a00ca9da1abcde7d260d43379212a11dec4f4a625bdf1b6ace28066d880a9e494f78e487bca9f0ab78b987105b2acbad9df3ae16b13e06005a35ba79db8e8bfc6e4282149925b00bb41d660807da72cfb411d6519a03d7eee595fd96b04fdeda180bd04ac563fba5466347535ec398eb800b2102f856043122d13be2831d62ad2257621d7f9366c7a4a8fec51a8619164a418e63158cfc15f76187444db9a5c5afc4a509b34ee26f25aaa3c35190208df20a5efd8e900d7fe4a64dd368796e59ccf73612e176a554dd369273c2ee50c0030346abfc1949d85b416cb69e71a7bd0cc7b1d8fa26148e9e3126aa4abeabe9806860ea9fc093d701d4ab3a700610c053c9c5750f3f9844ed4a220ae5c977f8312345fd7aee96aa36b8394e66e83e4fc4505d99675250fdf17c1575c7a9434b0881aae19205f728608a35ab6cdadd34854e194314d809855c418e2b09a00461d265be04e0dd78788b9da9d46f3f4acdf5bdee5bc1f5c35f1fd7f5f8d81a384e895544d930314bc82ebf0405cfb4168d29a3406255c73c2447540f5f00d5047aa107aca945b60a30fcaead5daeeb486de1ea17df9227a26abfa6b25d6dfd4607f2d86c7b6df9b4148b83a5d14be91ca169c5b84c704b3c101871b0f045b6a6ec4080b64135cea35de8fa1fea305b1a0bff7832463356fb5ec8a8cfba4be58c5e8f1e61f6bd0b3028b58c7eb5d356441c42bece79ed5fd7bd5f5e5167453eaad95a43771f5b4d66e5342afb5da3317ddda8658a0d74709c76b95b0ce0417812238761449b51b6c30aca930865dbedab69c700a3c1cca66687748097bd10b7d11f9fcc45a5dad752495e96993233e64221548d6dc792e05f95d4689f249220b8b9c607bc13edca49ad92a9033f329ecb43f6210860a8468d211ff6abf0d11610a595287bb855cfb20af4e2f49ec8b6a6c82ba093107301a1eadf31a3720339aff58ccc002eb43845d52ba571001c1eac8741a01d827bc9bdcd273a153f69d1e1b52931f60ce64584d2446de26e52c1ba919c24585268bbce4f5a1b51bda0a845e41ed477455df0d285b9551ecfe579e0073e244e90e135a0d24ca6ad20fe38742e3fca5b7bd84d823fff677c77b48c9d0defc5bcff1d854e040109b040f681f9683e7f4c23c784232af01ea20ee6dd1c7b39c934698368f3028095737618a430dd5624557c109f4f08a41e7c275f9e3eb08e3dca25b49393b4b1059c4f7210d7f746f69646cc62dd01f9830d5108d8d2213047ff21e9d46a0611b74d22cc2596e36706b975b32ff45079386698dfb48a1602197285b1eff588a3680ceb8be0b2bdb32848d25f42cbd62dfab2331f9a22686194665932901d133533f373a23079a2aeda3ccde54bebab1311e73a1bd77618dcbb8a618aa4172589d3030313a05beb68897fe9b8f98f0a51b3b30715f441c9afe22fd79c014acb1236a105cf75c33b2d909d51da9e68303f0fb09f1c831ed3d7c202aaa1136351c30cbf96ac99958fec343c3052f1908b1725463de9addd075fe2431cccd768a00e57689af8dabd4fa99a6f9062bd3a4faa8e18e7e5cd1e610d213c6f8f97f2c571438add3a62ed2f8c15a643de566f0ebbc057c3acbff1cbb1a4627e2b8167079f6db1f7db86a5243902f9f20e169f1c6ea21d79c216c28fdc32aad17fbbf50587c2cf63708a8aa2e77cb263c6932823c82ed70957ba98b0c8a37a54bef5677e8b6212c1b9bf19c40cc26072ed386d2dcac93d3f6d5036695570797ab34f616038513b7d444dd97ca22ea2f28e9d00289fa9696b157b1313d47e29d19aeba1d36daaf075d6f261122d72f59fdd4b501a335fd0528c925d62d208fc70fd8f67388903b1ab9d71e5090f00a7d921cfe88a83267554d18b9d4bee941154a3268f459c21b00a987d3f6931c50b8b8d772191ac97de633989b482aae263832470db37faad7091b2e89fedfb803a2ccebcd8249d8048f8e6d7d825a1a4abb457a10b17c8ba136006cdde1016a4aedb902bea7241971eabc7449694fb4c6d354991e38c2e44a93b2b8acd69199350142fd0f9c1af082fafe72ed66a40cc8dde8738df03aefb3149422c63dda7b49d37e4cf2d3782d46cad8cf01be92d5b7237d34f6a94c7e3acc57a3362bcacc3bf5d0f8a28d6f79907252b8bbc3b55db99aae8589cd1ac238a22b39f2a01c6836c7b504a815c5517f39e244c636db715c9868f2ca1a279fa2dc08da70d6954c701cc14c02a529bd7a2feee516826b2a8665534dffbb9b4373289408d14302728c6fa21a2d4c69e0884343125113bbc6d0aea2c56104780557578254b3302531efd0363d6d996032a276b42d99e35c25cd4469e68e94da09aee9b8c89b769cfc67a257686829dc262a5a11a875701a476cd13fef215cdf83c362163840854c5b4caf6c754a287e0a49b020f7202ce5424027b0aa75bc1c1663d4025567e78deb77905a01c753b44f34af79443a48841edce283d666f3b9658c14e55984a3594476216d56120e36bfd2e86a88353acf05f60ba601c07efe987cf82461cd1ef7e4a6f176921ccd8a1ee58b7df6efb821436cb473622b3c225f73829e46541a23dc83a7379ed59235a1994a81740e3ec645567a978bb77e4aff271353d50092531110e9822008711d0cd2292109722c7bfbb1db4607a0aff408b052ea950250ce74581d2520730f3e988b5797a550f0539268defa7fa6964eef1b13ba7cfbc9196a62d7c88eaac2e0f7dec4365cc2a33af5408a58036442231b4d9722e9854d28386cb47e2aa3040bdfff1099f03fe0040009983d65a6e7d4331a813a1222c2251137be8767b021dd6d6df11ae79f87c03300802b48ddf66b2e5014eec092ff91417527680373f48a8e5b203b8ea077ba406239a08074c210f36c9ae2c806692929c91f3a1fea4ccca92fc5b711c599780c0464816bbecca569f5523cc34883a217a6cee2ce09d2e4a769c087973283c36fd04c8be21478ee45c315ff6376aa47a98b3e4d2061f0040f8d647dadeae00095d7479ce7081a24e5f81ccd37266e9fbd6cc3d86f87f817397256cc7d7f2693cf6f1b09603cfe37f4231a4de551a1f75a72b138b251c31ec3a419c51392e834f579114cccd89f718a342c08f2b4ae8306e3a16dd81c8e4172a1ee8f371df23d876e62955dce5966b63c601aa8b25a785bb362867fb3370d9f18bd63edbbce96e6d2fae4442697e8b8b61984cbfd83b0895bf9dbed389008eabb321141572daf2c105cb04a269e729bc0a33ef28223acf0681353213a8fc2c425c05f1d7b6d9d1068c6e148bee935161dd703dc7043ff19ba36fbceb1e0f12add7c6f377303a74c435b1baa22d28c25d7c8f7cc04118a3b15f822624d11656177f25f5a570b3e2db3227a5063b118a9eeed707efd3979c649b175cd65ddb6aca72b5266a47ec3c01ce40aed8b3bed6e5b38142a745b8bbfa40e68623527a5644f252205b4d5f77401ef670d30be1be80707ae0287a51a9062c3fa61dd6ace504768d250ca3012a58ff71665c75d9c72a58fc60c7bcb9e6b64be4cc59ec7831131d6fb49f6df8b4689b53b8e6757ca09232640b4d20dd55136bca3dfddba311e2efa84d852efe93c3436041cb47568ec711a14f7b8e113cfdcc2862cf5db216ec7721a08d1dccc6afe4e9d0df7bb0c7a035c7546a7c77bd72bd0986534051aa99a1c7743cfd8150ae290afaebc58c214d1221465058fc1cd6a83ba6c0a2e78f8d599aa79f0e6c0180cbed47fe4d74a04fc751ce8f58cc4cabc83fd0532696407d11f3f82d1e8f6b538866cc2f02f397ec4b8f26362ce099a3745ac0ad93aa9b830507c5ff2f7c541cbedfffabd74b2b754d746ce8748660bf8af2cbdbd4856887a2847a6271a77bc377ad8a4fe0f2c8a316c094ee921844170f153167be01a5eda79181f18b6db16c539cca878c2d01a6f370cc496bc394e3e3a7f1dadaae5b058436d90e0a5fc0d081ce384f39fcb6676ad7d834dd9458afeb7ee626ad1125d0ecbee424be2dce51ad8207c0f748b574e1c66c2e7259320f2f731e48054e16fef0cce3666b32e0a2b1dac96466d40a74b00347abe3750f92554badaf39482e9ac24586c67ca8d30dd0a6d97b959a7dffe8b39b6e0301076fba82cd3673c20cd72d862eda7e8d2a346f60326704cbb209afbb3afc1287c167f4dfc6ffe8e0c1d00e55456a873190e7ae334c202875deec824f3f30fa8ffe565502e35f455655a41807df711a8279d29de5231047e72cdddc1d20e24c28de10e2e7a89ee7f1aec8e1cb12dd3d560000cc480b704b3c92e6500969ef4b3369ce85325f5b50cbd9445983eb73b4e0b9feeeecd57e60390cbe4232752a48822ae546cbf6c78032fa997443e9636d00c3e0f7d145b751fad4fbbb85f2143c78e65f586eb83684a94fd452469020bedd50a37e6ff15039bed7a3eb6f47f5a9101e8f275c78ae04e771b5b6732721e7cb1cdc656f84ba04fd0537a6db8396c861bf6a031d9bf237ffddcf8023b043d96329a0d1a862bed20b1639105e2ced3197b3601260125d5d7dd650cc6848fd2004d9160268e1066e9e30b6601625fd3beae7c0c1115af6d5152531d28462ed3fa182f6063f5ac7140e9dcbb64bf893ce8d250ef731f6d91a31cdc6b33601f683dd604d7b4ff8d4ba1670457d70d5cb4577e36bd4a226f21737a1783d17efd96e26aca42b0ec9578a448b3b352ff8099e563b7eaca47d0d39d1bcb72f98d6529346c0c64a00bd4d7c83c548e062f0c8158dec2093ff2fbdb6dd1ed3df58c0ec0a5a0226cb1fb92d40d98eb5f124e43f83b6a557e4ff24e51716f5605d26b09ce1b500b237ddaf38b0a2dc0a4465b4b46b68d26778879d5eea8c0575434be8f27e8a7099f025969fd23d155dc051dcfc57b88359d3796c3583ed0b62abd122b5f47dba18273a4d4975895a6046e9367d658d3d33938ab8fdbb607ad40b3c6284123b57b6976e452d9193a7f30831c51a44e3cacc5def71d36a81e28d4e58d7244289b59b3559f942e2c1714aeeaec5b667890750ce1143253675e1a3f0d19212ddb9e0ef3e4a152dd246e73324bd81e053a145f43967b43364fd3112b518b1f95b2a63e88af511b80392d793775329e97792314f6a7e853274b11d0017148c37cfd2885d151045c3e65c8c3f23325bd31a3781eac9dd9a1d20f056dce3106abf1591fb2b57a7203f6100572828df951af28364d52a9e08967d8ea634e65a017e911d2d549ff691591906a96981d5403570312fa5e443e1b8e8d3f12205683f10271492b5a1f93dbca95b6428952874a538178487ac31feb02022c5c18aee8e70cd7b6e41ec20ee39f4fe2ea4c38c674a71cdeb1a1f1ef451ffcf9cf489aeff40c4260e72807f93456b5bc0d3c06b712ba750a526675a4fef3a93d496322d4295ab8faf19dbd81a88824a07cdd3bb6cc324168461259b65b7376341727136a32fe30c84fc8c9741055c8e6c7d58a9d32a310c5970cef5e998d78f4a0c27829b5dbd82a24ca56d4039205b914d2ddb70e81c67125a534642c4c5f5ca0b4dda2999579d9ae9681efa70a4269bee00829d95a941c65857481cfda1a2a395d4682305ec065c545133acf0b5751b82d3cec4a85e5928786b86cb94adf4ef8cb82869f9a8d2e96588cf7d59df9e8bb6aca6458ce477388fd783516bbc237e6f263085fe2b6b5400ed6a421d4994f022cd28d1df13986aaa92d45abc2e2da0b1f8a683788a0b8dc9f351142adbc15f468f574df3ef882e8bac93350d57ba1758f07df2fbd14af838e03b67cad5708da0ac16c0ca95654969d0a6da7bfef9f7c966b8db96922752480c013c3195449e86823d12093e6685f53b96b057d2eabbe181994fb4b3cc8683f392610d015daf3c66a8b08beb2b76f66b20ab9b7b2680ab4599a7af0e02c1e102db9574181b0f0f5ee4d97ccda6ab6ddae30c0e860aa8496baf36e745d07b85810c7d0a7a00497b235c07aafb6db2947a334ce45096b9f578e09b162a983af02e535f8ae4c902cd20a2df4488258ee9addb9003b7f04ae3d013dd83d7741466c34819418a5a701dd633d501a61a09f1e277c8dd43a5dcaa4602e3ee4bbea92f30fb2883e7361a86ef41fb75cb4906618265a73e88c80fe01d1e0e922d353cf2bd50840778b9f8bdb40d3af9f75c9a07379a0fcb3f89706844130152f2c99b311e053c73ae919b667c3aad828d7af3278b8d07197db5d2551b8ebaef1e5c6949f3c2cb2cfba831be0b329bf7df28413f7494815bdf883a47f6d6f0492de9752a68856b4e9eccaf8077cc466e32ef659937daa0d864e7567aa55090656a4863d640a509e3810da346c858a3eab137d49c2f39a3430df790f8e57726940d923f87d8ce161efef6e9f7865e32482f8fb7c874805ddc6ae69d9506d9a98b5395dce60cca29471a20d55609009addc5f2f811fb625d4c15f885c111f9b684cd0c9492a9468d5fdac865b7af2bafe342e528c1ea81a3dd8d7f08d394dfbad8b7ae0c3786fffb5ab29bac6687009f948596e2fd1e7d005f0298e436cd429a65b36c7f2686bbe181cdacd8848dc80d36d091c8d4e3b658d08666b5357f7cb6bcd4e55f0828005f814acdc03a63f301e6dd990fcbe846820247bb82760cf21bc07d261a9a85a38967634714a70966215dce5b9a08a66aaab96ec90a8502f91e335a96b81ff5b06ef0b78f8c1124ddc48350c448c1319a0a17598ddc12b657b1f0a249bd45b01501d9675ba6a38bbc2cf32752bdb0478132154101c5f489705f9584750fc0e11bc2e0629184a8ca1f8832b79a5bc550909eef4994a2eda75484035225902c824dd1c80ab0114083165b07e511781b050a37a68927bebf15d79001d68101c35d9e0b9547cb5dc8082ea946e1b7b1f1ac392269d1c0cbd8920c31cdea180b9f0fb2e4fb94056df6c5e5a8af44233a740879c08ea06247c35f0c4d5a435a34b5b3f8c61716041fcf0291211615274f2ab6223618134757ecc1032c8b400f15007b6f522a44e358e041325192e9e54cab80ca367644d2e70954c6c8392d28c2256e424791005dabc6469b83a6627386340376caba250d97d6974dc588f9895a0ac6e238c4ed841dab326abf814438321f3503aaaa945151c34cf6f233cebe6cc80ebf09b73892ac0220f0ec01ab540da43e6f07c7e446bea073a3363662d1da527ed64c097bda7c1426136bc0f99f0d353d4f40d87ba0b159e252081d43016cda340fdb7f034c2328d7e7744bf31e1bce523247ed791bb3ff778314fcade203da89faabad4ffbc195082f7746fb07c94197e12aa2163412fec4f290b7122927616ee579a95a741eb3c430efdf0c7b515b0be3c719e7057cf8413c34d342fa9f4c065d32a10d7f38ee3662122d631fe32fd7af0cb82990763b71244487d4335f09481ee11e514826a2babfad2cf4dc956ec0d21ef92091745f05ed8c5dd76c22cfda0f142f261a6c26ff5e27cc9982a71e69d27677953907deaee551d73550c62bf9f938997c63995b99ffa1aa2ed2f3bcfea2b4379386f92f7386b18c76b52d72febe1bba0870f0d9ea24d43c075f92d82a675f4ec62a189bc8e903f6f746cdec8359df9d9edcbcb72b65767cfba82d614feb66b871dc71ec4a2ecbfee94854baab0987601667f3640de16a3b095d70c960a0f585c4d5116047aee1a0e02a9187e26a240c84700ff12624fbe0fb89e9f2323003ff6e65a3312e6abb3adce33a31600c1ef782e7ed895772fafdfccfc81a33913f91fea25c7a74ffeca4a5e12ff83ff4b40844ee3e761a1f155c11d9558a662b557464aedd53d68616c52cd4f50ca31d325dea5995084daf310a91dd869d94454a71d107e36f181b1c293d368e273de5e1af022fe773e23405940d55959739191f2d62767e7021dfffd12deb5593795ceb92d15fcf09917c65536565b1d5a385524d5bce787436245fdf5ad37a5881cd97c4cde2f9597c357811fcf4e5fc64aaca4503f97a5fc257693d8bbf3140baec2bf12d05891b65ff19395bfe0afde88ba610b8e37610b62e6748d6a057a0524cddc76373f421f3ba0d74ad13974650b45a58b1aee308325291e48a74451a4e0b7a046604e35c7c60b88286e209e73cdadcd2775bfcb9f375499fa505a964a53a0d469b54bf2d94f286fde1571da7da8034b377860b0d77391a377fd6ff03806c5e305810e11700af0d488bb7504dbee4a387f03b0e80600a5e9cc9e4bd2cc8ca37ba4fd78e94b84f1cf01dfdb1023c427a00cf8bce9aea2925184ed92bceec93c2608b6ed9d6548370e1c87a2168e0eeff4b6f60425249b4f864e0a28820f4854ce0851a436bf78f723603125ffa969ea3b04c95e1b67a659f3d4cc6db5e1cd79858efba5e7f213a31a1107a32ac74e1c355661c845942f5c16cb02ed1ee6832dbd52994dbf65d17828118dcd8c3fda692e9aa1279e2df5cf70cfcbe097a5171cdf659fc1b4bfe01259c1332e0b1615dccfd1bf7c3335f2b7cc60c6f93d2d49d67b3ef2bf92d59eea20800c23c806f65078d684cab0b2aef1576f93a5b37661a27efb0d344fb5331e6ad45d7ae53c88d3721b1cc4cc378e1cabc466397cd4087f8042a5bffeee887d21f3e1edfdc8d0c8d7d8b3118cd3dd945b04bd8ea3df9e53e5b2cc8ca77941e37ccba9ff3fc029e4160209fdc4d222771d27766b56972617b98ae768d62688f2926eedb468ba27c21b6a585ec1b438fb4a7c5395f9285435e927e5776f7555723bfbf5cfb8e9f72a8ba27d300ed0edad83b8cc50e4198d47c426550474e691d9801a5fb92f22334780fc9a455c896f7da751c4e6aa0cddf7df0111318c4b1cf4d49039f2629b06181bc1fe2445b665152e2ba259525ddacd5287bef5a988212e8398058e5a0ce991eceb9288082069cdb881c89af6379930c632339060500352bbe742f2138616fa38b7d12dc2b69a60998e92bffba75395ac1164208b2dfce5a0c4f8c47d7ea8763b209e23691a983955351552fe66b6c3abfa33ef654caefc558097e42c3c13e2ee38a76ef31b54e8f9e2b80684f7a4204332ca44531106be9258f110f2f62c404ff0c23b1be1002db899be418d032f2e38a26fcb93fce31af7574a5b52e857c15fcd76f854516382495f7f84f6e431395d8cfd0b7108ef3f013e30c700af55e77c64f30e5f33311d6847cfbecc3e71b93f631d26f2b33e74dba6867f66d8f6ed28f25ad9c77a990e866d8615493a406816aa95ffeb087f0d19336ed57c0c364af95e58cf7e58a371fc2799389fda1882e3f6a2c6f70ac480ffbdbdab73742176b62fa2741d4e268c9ed021ba48c7348f484916de505d6e9fe0f980433439beeb969f25e3b7098d64b226850b0ba44f308de1047b9198b0927f7f2331b2da92497c7eab9862fdbd1b22b3cff36976d5866a48d1d1ede803950be07ea8448abd34e3feed41d593c897d8dcde3f44144df8f9d39ce4cb97a86e1bf9c2c7f39c3a9ecd97cba6235de79875014e02a2a293efe858ffbbcd5b8eaa65dfb309691800d375812d094f59d325b6e0ee7d66102467a2142020ea316b8412f6f59bdc310753214a35351c800a320ab08e5d71024b9a094c234d851902530d022ad8004071f2e51b88a82361059a82a7089535180040051985b32446ea43e9e2b33f14d493a2e2d9005e0d122a18015f39f5751a08a91e81956c03a24812651880a003e1859b87a920c5da0c04a48e9c425ac0a0000125cc07ae9dc6020d845393a06ab600a90089320c40d09df0c24dc254905a8d06015343ce022c60508080f2e603d74863818641aa4558155b0250e848b9fcd9d26c6e146f9bab4d94d9eec2f6d83533d6c8516d106a12f6c479902887eed29b03b9f2e92fa539112a8fce52990f8972d2510a73205006fda5373f4265d2593a7322521e3da5690e04caa0a314e647ae7c3a4b694e64caa4ab74e64152197494c21c08944f7fe9cd895099f495d25cc89443cf5298038132e828bdf9912b93cea92aa5f1451b42c27ae0735ed39c275383658861587de8a9c76efc7ad0bdce979db7312f5b625fc6a30d5c6afd314d38be457b5b05b9f25b194c99fc0d80ca3c0d74a992f1656c09f8de5986bb568eb18319425d408c1ef1d310b1da132a8829ad66c5f9676259d02239d930e80b987dbf07e8127e1bcacf374e62fb3bd620fdc496a37c17190d836098722e0eb19c1a8f4d9236ea4cc9fc0cb3134f522b05d67e21f062219c313e6480e36ff5e529eb772e25673bd1097760362de026c7c97dc948c71061ef5236c110d99741e5a29b4de52ea31ce068bd33aadc97d465454a69311221382dd680a81bb25b8482bab3c6450735bb9bdfc2207f4c689df03c409599a6f3be613f4e9a9f98d96520d5ba89acc3fefcaea9f93ad02e7edd888ead03a3c3c8114586aa1ba61b81fd2ae0f7a7c9ae5398e210117695228703ca43b97245c156568859a5b3406b7a7b468e13813054996fdb3fdd34a5e178e369e7dd1203fcb60b65aa6b19c38aaa2216641d713dc2078da5f5006eba4f23f5681346a3deb8c011cf108a20f4b215a1a1d52fa4d72c79776945b3ea0b14c606ab2fa1cee6282c7d762eb28ff92d8f10811fdde9df18e26fa385cbf5598a8d9f51f5ef9d9009250ed9c331ef8ed37d7259102ee7efe813ffc8934c53e0f9bde61984475d52623d4ac8015277cde63981e92548378a10844333863f9461322d75c0fc40a0f49e6cc566500f69f69cc6779a678818bb474d168317267b656f69e70cf1c09ef29ee7a14f60710213d2d0cebe179a6c76c8129d85c9aa818edd9c4ec3b783577125e33868bf4898e056996328fd126ede44dcae69ea2185e668e48f28ad0e084a08756b679f4019b312e31c0d4f7ca264db153bd80d907a8994b122a2a592bf7b6a79f884ea04a9fa693ad332173cb5dfec9150074a8bb459714f3a8f4cd85229417a07c8abf6a1eef74067a29c70a7bba37fcb71a922b4a1005d57c328f5cb6e6e723f9f32e7c8798b98752a0064973746c2e366bc9e1cb8410703800c300ff11a8584d9e0c50fe081a006cdec5ca78154702a54d4d47c87bb7a2109671a743d961ef832c4435351013545837221f55b4b15fd413d42aa3ae8f6627d56deea0b0e0cc0dc89c84522fc28f7c95172ca374512a5f9be78e7305e49c49f420610a1d27bfcf8af76c080eb210e248a7638e0829227a3eee4e25fc553192e16728008cbf3d6dc37cd3da12427427f2b13ef9d1bb637703bae1af8146e969ca73f20a235befdb1f083e90271f0f3f888f7c6304e619274c845a2f1725469a853f9af1808defb5cdf30f1531ebbce8198eeab272c0ce14f1e9b5f2c5b0aea3b62db6771b489dee048ef5e6be31d171944daae39491903dce94572c52b8b376229c6478e5f04f907d37fffe5a4b4387674afe3955a54cffbfeaa2328afe040514f3baaf741c9fd435dce99dcd962babf482a2f840f914f752202821e888f85742282a0a9df5c6695022ca78bd49c812527372f4a9ccd7737701de3ea53dd2adb225b2ca88a0c91febc5cf7f2797f9a98d610cc414d60bd3669e80349466694a355fd3dd87b0372b9ed6073e5ec2c2cf294d723dd22f848ebcd08f727a834c8496c18e200594a4ac11e7a47484177ed6bcd768d5cdaa9ba43c968bbd811c585f84f066084fb235a9f489ca3d1a9b5703a4fb2f241043ae623445fe472682609633a421c8741c2cff06dcec8df790e7cfe6719464b39be0e02b9032b2ab207cd91d3caa165599ae76876754195b98f83a505ee0122f20b3512d45bfcc01495ce6edd9427e90cefbf945853aac24a2f8dbe9eef099b46ec70d1fb422986211539a42bc55d7855bb1eda70a41f5a8fd95471e0bf12a65f58184f5666f8687ce9dd62882c88a523e2261093c9b7ab88a2c86d29fced016cac7b377b56c007d9f793e56ed4d7c0fc442a629e49d8c77af566f86cf9d6feafe97e734f05d29db546bdfaa72af4ce221e09afecb48bfe2135e66346734587d531acfe3e0ac1d69cd89c8d2e1910c04dfd045b254aade6280a4ede1504b9d009103bac45813964db699a906d01bdd8755203b9139eaef6aa3525ce63cbaeb4a66dcef11589fb3d0055db5c1ae8798522b8d849208e743d0a70f39a0d804ee107510065e03f19296092b73ddb0546b5323fbd2d8c1e0ea5490a4eba10d2149144ac994e01ffdf76ffe036307163d0bd00ae1e77718ba81a06de52f83f8b7c95ddc36aad1cd85b10fa0866e6b04ec729a972d76e428b2bee41942e31789b22bf3ef791f7e040fb4465c7fd3022601b99492bfd32a89a6d2dc3e6ff176d54e6486eab2434bec9f8a0e8c8f9c52032db812191db64684c5a67f99de6463122b4d98307b26f763c0e87435be9cbca89c0ffefbbbb12d5750b87831ae501003ee4ac1f91933ce722c9e49e85aeee37070790b41494da3e7d8f6367d45aa6d592b9a182d0a92ba92d22eec52925a9c2297210d83eb6cccf83f561554a6382a9ec22ea95df2a2cdb194228061f38b508f48d5f0e01d13ae8fcf00165cabb79392d8adb6a39cc0cd3223b1fb470c1fcae81d0f622a4908bc872711f71f1352ddcd098d35aab67aeb3f6272a9ae34b12ac8f72ea6b8257e914d05666035c1cbe59a63be45106f3cab841b55a8f0d4b71928b11b57b70ab297de1c44725deb6309c85c6f4932e765d158679d44c8df086fb6eab639e43c7afed76de7761d7eab8d0a0bb42ef73fa133169939bfb6439f3e07418ba993e7fb171671f2b77851d7ad2064552d1a9be1a97b0af04e77e1e27bef5400db0755e5ecfcd9e39b89ddcba06544300378408dab95ec2d24f13ee6bbbdbb687ccb19ff3fa540e0bfabd3e8f5dd81d129302424a4ad5d321b84ebf1058d0e648069c28c976d1a3378d863fc3f854aa80e663015b15ee34170e81f4d6bc6aa05be9cd0f4c8ee03e185cd52250824716ccbe944588b28f741b22a141fc1a238248c9437333eb2da61e22778bcc00ab7b4e25696002bee03478c150bca25ac43b3e779c56b40c51a1a4ddae2f45e26bc019c4aa6c90a68e4a01e9dbd325b9df4fa546764384f0a42f9d166fd205f39d1c10a9879839769103cfa4fb756bd0b87e8c15b6dbd9f2b768a36879b5aea84ef9cd3608896c2f8f5b2c4008d8710fa41f3919dbc0e81ecfce56855c1a1e44205be000462821333ff0a77e904430f96ce87295c50090e47c97d3ade7bb8b851a11088cf482861eca8800f586cca79c715d31ed068d16c4917496d0adbafde361c7412a340ed61dc4c93b1c9bd74a046655eed146f7fe716ed281ef4d1ec0a8fff1e408d7dfe8d037326a2ebf716114e9e51230b69cc2c4e39974fa76661999a66353fc6b9cb68d008b034bf66dc3f3a558eefdcf64cf36ade73a8260f57330dc01888726fd3718ae7b26748814b8ee46e9af160054104e383a8c1e9171092d5fb80a9b19ec425b032dc9d3d39f9a0856246c7019d381af526f8ff1a8b4714cc3c456dd9d0021cc3841b63460cfb03d5387c19fc68a30684fc4051f90b10b68ca95e10c8150a7e03bdd0973ba9fe24e8d5e0940b1dcc72769099d63b624964f3f18f3775eb62dc66d8fd94ca4620d0d7543f8eb6e54d47f84dc2b7d0b03ec1590174a554889d087e4e9508f866d5767fb22cb91d93221bca0ee4c979270f3c5821e5fcee2c19a7f993d03f659409af66540ea0950e604c15d1ac846a9f3081ad384a98be5ee41c0be1efac1ea01fccaf73736a58812850a9b0af092af3642301599e1eead46a1a8e333d7ae9368e7c2cce7db6e9cf50a218fbe2842e1ccefeed42686846d636149705741fa223d9e44bbed4c9e3ba826df4585be9cba0555d10085aa10aead0b24cef639e3674ce7aff3685b12a4edce63ff0ca411db7d15698e0a215a8872ed680a909a5ad859ae32f7f5a6be512df347917cc631c021e8d95c73b2f50abcb0c6a69d0f139dc1552e30c91db0d6378e296f237b4c2d12a26c10ce9e69614e6b5fe2e96209a744d46e3c28e05868d693282bbfa2317240b36eeeff52b1fce15a14e8c476ebd43e6e053c6dcc46e9905fac384bb8afe6d91ad261c30182cff680b59be443189814cbf57b2eec804c597758fd916ca58c5f440afde652a8b0dc397996cf77ffab8b900bfd5e9d2f1edfbaff707e693015914aab54c30182f4bb61ceb19b32d6da50f50e4c58b38af4795080ab5de8b2527f461ff722d20262b2c7719a9b904f63626c193777828ad8563cca624b53c20c1b37ff017416a9bcb6c6bccb24899e3da7e7281cf962ab73a341cb53efcdb546be353a669121ec6ddc0ae49fd4290bf576578db9d21ddb37178b007061a94d01fd34213bc5efc9330588cda77ce03af0a7bcb4e786a9a1142444ca232884b76ca7b0f98bbe24ea73b17dc5232ee66b0935fec3c59ec105d2ee445ef4a50376be5f747ac71cfd5bbe2cf5677c4642a0cbeae42d52f8ef11b32d9a1ba3fce173eb66fc7532d8a89343b66bc97bbe45f126e21839044f49a8c81d1b4ac65f3fd358cc37377e2392eea9d7967e60a0e0fa0d37251bb40610a28d72f6e35d02bf9c816261178757e3de1dbbd3a02086c7793d2daaca1b8dca75689aacbddde6f4bc0d64bcc6e0c0c421ae77214284bcfee2633fbc340c5c7b2d5b752c21a1a3e35e1284f1a11847dadd3511d29df64065e56a71447d357b36f1ea8f6ce5bb87d405780fa560103026f902f158a3d2f628afdf0ab0787d272ebdbc7dff223da54ba9c036e7bbecaf95c41cec4dca123fa019d7063c42f3aeb0ef961d6a19e2019ce2bfb2c91cf2340d2304a8dfeb6cdc1387abca49f1bd38df8d85ea7b44c1c36de56d8ba6e5a7ad50b78b588e8fb8c14e840b8447d07063cc700a84ecf13c0c98205f3222a1ee69223c2c079acc9279c545b45fc13e2b007e6ec5fe08c71f5214a0f9097686a36dd4721c243baebb76e4b206d87192d2a548618d9205754928d697126ec043486695250d77016be5d1540b0d21f1d62120c01d5e6343126c1cd381c203a18bab8c56521aabcfa948f6870aa6299eb7aaa0cdca4fa187482d0addea49d06145ad53b3f8ab2fbd34152be6b849e6de3c305aa6b6c6aa84aca26f726c84f67b41405c703001debee3eb8a1f909f55c8e14c808eb2321f8a641e606940dc811ebdf0639b793fb11ee8ac3788f81e14f1b0b3fe3949d9eb761de244f1e23f65e991ee4ed7027a41d4d69918d6c1ece7897cabc0f03294b1de2f0942b87557c99def76ad36263b0babe9cbec0e5e4e4c75e9b20c7b88dc9b4b10856eb910cfd89a36b9d3c3cbac9ec2e0c2877901fcdc923fa0815d516745e00e0d316969ba1331a2cd3c5f3899d22018bf151b5c74be146653c5c0751aee271130d8eae058b302085c99863665dba414cf23f189f31b4acfd31cf57edb64912aba59cee9330e36cfba81539985dd90483962908fc0ddcced8793b77e39f9a3e673074355d7f021695ae71bd44d41aa33e8303ae45dfc23cdb24302decd2229a356bde6a38d1ab1206b4f0861072be195adb621382a0268032d612537dfdcbf41b22e635e5a822502df85452142d2bcf07867a32ae117b4ad409aae2b5378ba7af9c5c24754365adc6111a59ab5a9499efce113826808a608f0b440b4bc0cbf2439ad887de60132b862cd2f677fc5ef60b53933fbb3638dae5f076b932ed9d3eb975ad3d5956385cf37fb87197bced1e5241b5832172eebdfc4a408bed7735964c18f8c26f715c8408e1b56475772c4cfe6671f74e1d6303a75c26886f9f59fc8879748b82824ff6dc8de404eb6907b661c98366933593e34c2de9760bda9555d31f77838e8ab469f45601ff3ae78259844da0925bf9af4998fcb62c29fa5d2c459efdbea53ac3a900f0ebfe1b53f890571ff7969beb7daf8421df9029027cf291868e8b4bad5d00b52c4027ca0f7aeeb80447173cb3fad1e46aea0f1926fcf86aadfc333147bcf6e596f357b15b96b3e501f331c9b6128d2f0cd6f1d1da8a9f41085637186ef96cabc3fdf3177abe0941c16cdbd62aad849f4cc61124b9f2211d7bf6750bd8d68112f107276b4f0c78414d29b06194dcc07459f7010f6b0bcafd4ff1a71fa9c42c86322a012525bac7c3678eef7d04d69a3a64b4c5dbb01a9a3e85cf7cae0043702a86a8e9a4ceb724d03244ca6107e5fac1e03b5d581c10b2dd8db73d38a17eb64fb238e0b56cbae4dd870b2281ed53e38514306f389dad2af141109f01376958325c811dccd5898e42b515a3e6b1fc85b2d6e7d2df0340b2f676e8f2717cd17c91f1bc920b96e18506be267edc4825fbcc6196c7660f16166d79fb7046f4a25ae20854b138b8a28025bb4e3915a35a8c6598c2b8d838609ff12c5efb3324bc6bc50fb7825de373692eb153704021880b00f268236e2e6f005ebd600a7a1ed498e01f4b49deb5703a8fe48a7d1350953e543b06a7a81e6bcc780ac445af51fc43d013bb3e878118aa020c1cdd7a9876f79541edf8c34fc12553d8f192a830bbfec3db5b9a2634352e1ce388b50cdb1f01ab8be10dfb144fefb1488a3156835127d61b60fc5b89e9104b1a5040d671b25527dfa82e118a1b09c81a2e7afc42ff6ac5694219a9bacf3df232da4fb3d768935983a11241901d052ee7232e8a7701c6366903877b08ee1539a289299c12f07827c835c741790e214c622940e1cbd97ee854e78808b688dd2552bc483cf835807c05f9d890a3b52e95e57b22df7de172b53219197130fc0e7a59dc65836d544181bc919605e4ee240d6d2b49a4c2ddb0adfaaa4fd30589ab67e1e13099783dbd160cfa36d98cbe3221fa85ae38d2c0a694148b68fbbeca5c122cdc0092918f23da78b4e686d8a1a39d15f30f3371e2aae1d523ed9caeb419256da4af4f80fd965dd03d6798a4076ab0f76a6a9ce19dfda5bf2502427650aa1bbf4ea32731503039e4149da5ef2f2eb160b1b68c9ef702301a9250b4f8077873c34a5fc5c50b593121acc6a4aad26777b07c1e18f097826338563dffed29996d0b2a5aae2dc676ca116d2d9dbf6d37bec15bc8a9be5237fe94c476ea4292ccade99917fbad0f37799749ebad9976d3269e3b1b329675d7369fcbe3d171759d12d32a1502efe612535e9a31255261a5f4f7068093abe5693b22dd01854ef5f02c8bac401e5d84b66b10065ea5cc94589d6238361f23cf51b788106b6b4505a9e2cf094b89e96e362e6d961df3348b08f5f3059b891c7bf756af165aa18c70b1e30de16ab2a8d1844e4ddf7412a032e27c75973c8f71f5324a60fa84392f2f185a330d9061b66e7f194f1bb19df6e2aeee6c54639c7ea642904e7562b48d8b630158988249c1580b60384db03491608137ec576df142735b8e711aad77ec00eca33330c39215c703e79f18fdcfcd29c1d35008dc0843e61c2f1c15a39e50820471ea1dd1ebf1b4fbd10c2809e039af9cecd024fb0ab3ba586776623d00614aadb7124257ade86a91513fc28ff46ddddd38bfc9ef17b2c1d2132c76e955e9c938e3bc30e04be9d54ce99d91ef04231ce62fe75018ae8791946754bd3bafc8a0041efd7b3d75b23e796d2b9836e20f15607c230451b6b985f1ae7be9854388a874063516c8bf85a747902d5af1a91faa17ccbda19476e68c7991d2ed2902d03d3f3fc9523ca1b59081573d985abe508d75c0537eface4ee794386573c051ac551151b077ae11833dca8e0064aa172795b3de72a26f8ece2e9f842622543fc18617aa73fa8800904dba7db9be78f1f93d906c6789235924fa3e79690980e5e8512024eba018ec8fe8257f6631099f76e365d7dd126c385f73fc3b1d987fe6fb5fcf93f364abaec803db124349007dc7cd1b5d8df929f4c196745f6e633ee93151f4e10e8f23f2695ee1624efdb0923d56a7290a75d02ce4948031501046935172082d876f564018ba2af7b273fdab054495478ee302a0023c4178994a91cfb8a37a2222caf9977fd825b7ca892282733394d1efbe0a57dad916ebfad54846fc9ce133a86e704a03dbd628618494daf066e24dd5680a52a7c43bb5351ca1cf737e7e683f15e8d4458d32c7b3d84ff3202d3772ee8ca378fd0b70aa3159b99412a46ee6694bb13495516d3db4a7d2288ee13efc04fb45b9ace6d748bb2afd7693740de7a4b606e2ed982dfdee1a7632a97695f2e5175b07124578790d8b7faba6aeb6d8a524ba5d73bdf501c08a6c2e3c5904d821950e51aaaec5a682fb50a626c80ca91f61fb156eb27c25565fa36b71a223095d9589ccf193f54daf27c17de18156f0bbccaa5c0e7c960bc50b508d93bc730d0e94aeaa01ea8f5b5dbd28426f09060e7bb72ed8f50327fdd6c0746271c5f4b3801cc606b2a5012d1637f0e2ed59058c3db1bd3db96760cc474e00b3f5321e3db11b17ccba912d1ca7f15a9e52f52d39526158b849598002a62a3c2c43d7d82b8fd2ecabd30e9b15895d2edbc31e467eb524ca1daf7c33c16dcfd0c18ec6d91f5675a7ec7bef68386663ea61ad7e9eed80fe44571afa141613099cc811595f02ba79188e15228ba27abbcbc4d11af3f8032f002d4cad966fa16a939281dc3da140b083b4a2ab4a512c708803a3c0140f5e003343d2a3274df359547c1f630eb2c02d8433ef75bcc3b2a7dd4759c3db69a1de08079571518ba15e9c1081d98c87c1dfbaae30235abbceb271d60ea48a045d81df16312e7c0046bbd1c433a8f03f8d47c7e0ffd1f7f45bdb266a4e6da0189bc87cfbc37e3c1e5328422d01ee11a7d3ae1a9e9d009aaf07abf6e07cad4896afb872bd596ad84817b3a69abb65805d2a63545ad3e5e4b76914f29c94a25d004c7a71e8bfe3d617063b24f9e776b9311b7b132b3ef714cddba611aa467fe3137268b036924f4e72d4c4726e020485d758451aebac42126d4629e82265b17922b4c1c5af3d7a7993848208c5a3bb1370cbee8dc7ade3a7a1823c79d2222541771b37021308dffd8b7c85eec8e7b07205a81ce259817c2720e7dd68058bdd205168bfe6aab828422678c126f689ae159a44914c45b0239ddf4d784851b2b3f6b82f1973ac811bae0380954026b6edff1cc61539f9e198b74ad098c64755d4849d92efefd9c851cf0887ebe6bf6d36d75457312475e1df640311e162f377ff55c40e8283ac23245bee971ba8cd56b1db14e8f6216ed8b1978cd4f279686df42c6b136bea69212f3a4ecea01074bf2149c90c19ea5cf8744fc072ac273a0824f32300cc0e1b6f7154b7a9f7e89ad8ab34d36ab9350190db7051cc965e61e94e8b65484081b9b8301dec56861e0d666aa70e73e75434e48624a82befa511d015ce6346bf7f0681349d26679f89ee4bc3c054f6b732db1dbe14d4e41de502fbcb191a2166636359d3543d9828f7019b0a7c840b23d797e6aaa046cae36c205f28ec56d7d633d72bcacebd85b3ecd4566a4a4775a11326974da0ab71523c12b327d7de1fab555656ec1565b1e94488b4b03a11515ed2d3f7daa3f8fdc3f8117cb3721e9b7bdbccf1eb8f832bba63702e4788bbcbe2d6d53728621e4c4dba7926e4d6553d15ae696c7098245ea2371d220e06320a626ef4b6df4e7427c1a11f3357db25825b72fbff36c4aa89ddd864f59cdc53380274d47ce4fb53dc438b0cc9d8a24ba5be8055a2c297c79a5157de709daadd7bb44c3139a2a970291c6e9a9021a8a0ec86e46b9bd8b45699bf818bc6e42e92d8b5d82a8772f213de633e9fd828e0e641a55842cd55e007505e1a30a13e7086329f77826328da1df007af60785064893134b36e9ed08a564cbc7f86e928f549a7974750b7907ca6b2710ee8eab06ad4682ac4c1472d8b0a1a3316ed59400d486e5995725f8e01a1837ae16f338fc19a634f995d6d0464deb9767766c3212941ec1651b89539bc19a7b267d89b590157a715c6da9762623c5535254d21252f0ab5c326938f1e4f5bcb0ab335c387450158a1f7bae9dfda5a3df7a046bf2f40f1131f46dc8c662d437e5a43dc66962dc2a7957d099a98bc0ac248aa3c62804be7498604ba37f8faef502ddb7ddb9a25e3605e5765cee8b33bf568e49ae87bd8a9fd7d4d40895eada75d16d25d6973f6bd085e0483004b0cbca3e88a152bb01b4fb6995838b16c13be59477c5d9aedc20d7393b57a2cfa2f843dcd702dea8c6d645aaf8a38d2454ac6ef9a6bbb43fd92343476aff8af478a2d7ec524e7d226ea97080b10fa5600754ad8e1298f684b0b3ca9c44cdcb9dda46ca8991babe34a8c01553030dc35ca954f8a7ef674e40ce87b0513a350f8704b7a4cc97c7166b7184bcfb5bf14b0cec895d007421a995050990985e7018528c555be8881609fe33b6dbd4e791c5961d63f2f71e39955c460858342bbbf9b31c43416544c43b12ac6ef280cc5c818258cf1ed2e6538efa8b4751e4333812a4ede1afa57934398dce3dcf54606e9e59361d973bd1b9235444226314e9caa99402288ae8e8ccdf515a8e24045bfe60fa50c41053fb909694e461db4cf0a8f8e7809e7501e77da6e1215a322a8e18f142953b6b4770009df12ae4c786f3c00b3cc4b6993006ab1b05bb3d817bdb677604d14e7c42e345fc18c3cc230137e665e42162e86c393ba2be5e607942266cc442d6a79b5cb6b7984bfbcff449b47437f4e4712106d54e27d576cd0c1d7f4cbea2f6b24b736701cf4d8fa718625d02c0cb58ac82074246eb30d6ae80bb7231f2142f09f38a4011237e46f6080a966ed1dd559d432e8b22d56ea2bf14928324944d03e7c401f21fa885f81ef548ff7359f816fb354bc8a7b8a8e282ad8e47348a7c77c9fc6b15b3d5b4886ee6246e5c56ac3f89f607ea726d7db2a632afe915f6962828ac84fcb2800999552176d85f7e848962b5a257d592b90f12c48cc9f8f5e638848947c07d31160b6828e0a3ea1111ee65d8800a7cb06ce505bacd9ae345ed5dbd3d48c0da3f5122a79525e584c3d2e15995572e4765dea4f965db438174971cbf9efd4dfa629584f2b5c32f7f53ee075e0aa329105c2e911e18976e41c7e417f2270b1e9f87dfc186c63d76ed085bc7592d6e99df1141d293ef8402a0840ad108426e1f9b55496286f5b6c5a73bf52eb745a88b6706c0a5bc78f8ba1fefea029a4129fc90add1a49d5119c3a2050b9e89e96002cfa799f135fa3f91c14f86a2eb99b66c9c640a3f6cd4e1158363439fcb96c9ba41ca679eae7c31bd6feb946e9a6281189225d523f2834f60579314b255c8af364fea8eadc125b88c4788d1ddc00f95a35cac15f243735885c766e95b2607b9335d88b1546cfed625fa26159878b8cdc6b3ca619e201f8ffc250369409d1151f6884e3a1a3e4ae033bc583f8e01507d27c80d72dc8621c00074d72461be696359becbe30a2e137dbb79dd0ae35003ef2dce6049ddaf936606fdc8db37531c22ce6d5a021a439e24c924baef279a3388741e12f03ea90bc891ceb1a85b922e9d88cc1984653d198dc6c7a6ef17727d68f79554c147a41d31de8644c1d724cbebf9ad5fb10f807956e6bd5e32f54d7e46849955596761bdd6db82aad963c82c2990f4b82e3d10736a9237018ef2108819e93bba23c62204fb6d53175f6ca7d15c6d71218bd2274eadeb450082987792f52605c92fcdf8a1c9d992328db06290fef9c2be53249766a8529163051b17eed3581f0bd04b03ef29effd2efdcb0b59723df02cb50b86a3cd7d347e60cfbb3af90a8ec06857057f41cd7bbc05237e4c02f4e8d91880545070c97a481547fec61ddee8c868064f12120072f49b1f60ea8cae310b0d5c60f099d4ef4d621016d3461223e44ebcf332e5d5a280b33463dc66c3776f4295e3a331e60ade87df13d200b315080c05271e66f3917f89b635491e90d19660d13008f33188a58b5c04523b5de4532cb92ae7b3502cc1376b0b6b862e6fe32ecf7d96ea87faa4541e8be8ad1671c18137f108b58ec1e312111ead4f9d38c62b79cfb27e25d773b1d8ea7bf3db340d4aebcea77f6e56fc05d56e758df9e35fbaa418e6489fe63265343f680a059f97e954627b7071ef72d3f81ba6bba16d8e53a8de4f01d99ed3495a8104779ce4d7dab9a7b2b27d71051ffd3cd0b3bf89897ec3473892f1a26b923468924b7fa07352838362a7cfdcca349290c5ac9b7eb2f999559e3aa9920883f2d29a34560f8e36791b7296ca5899862585618dff8feb614adc449e5874b9da298e0534509ba12e1e680a8b000dd8c6c1180a78b57e38458dbed95a59da5d84ca67087571484b4466e4e45e7f1fee8356987ea16c6ef10851253a38b46be0e35f82e43c0c099791bbd85659ae43f9d8cea6ea13d7fb196dd29660ca670f805a899c0adb647271bdbd64825ff98879e91e727ff50b67c178ac7786edde57fd84cd64b53bc6909b053b7f25e35498c07209f8a6c3b4d98c389cf945e1c9e0ce508e89ff59e86ae3fa9b06bc4c67d0ccbe67c3c6bfb865498b1e91f4e0c514d2984115247c83e58f1386c82e0a66e657b4446ce84536804e1a886d3f235b165f0944fa5b21548e297e075305b9125ffb28a5cb36989ddbe34644b1cc7f9771baa95c40fd2a33c30cd4fe7c9574b38aaef273feb4c4896dad8073e397c63b3b133952b7b9e5009629486c138a1fcdc2d956db363cbfbc7bbdb206f854b8c290b7dc1afe4f88ba1b26563c1e59ce430fea671bbb3394c1d6bd5e8aa72e220de0037c8755fed81d3dba55a30b496828a349ee4ae4a2605e3e8302d795fb98adcf0bd7e89191ffce930f035e12d0569bceb54e45a0c316b534272b4fb3d4a5229d3ed5e55931124886611d6d27aedd6ffcfc0c0e44ac78c5c57df0738591c6de257a8cf38047d8be5b5e8497ce44d1eb1c610726470376b11203d93b1d43c88ddb8782b81df9fcf0ab97507e4c57859d5582d85b6d3e114661de8976d21c1da3c35372466f87d6ba65832bbee0e5ccf01bd483f2ca22c4767dbdda98f19c054380de6a23475ee3ecd9af9c02cd64a749bf6c82ce4242b1dafe05430ebcb623904347ac963904a29a26dfb7c8174bc39e10acab580f02a42183e678091a8c50084dfcba0ce72a007f39dc7efba0c8a1828c8a7d236e4ccfcb1e10c6460c6af0bd2c34d3552602c7a09c9e0fc6609fd1c5b40c5b3a235ab284e2d58fcf9b49dc1a696528d3c4e456448db457bd675ee941aecaab61623d0d921897c858dec9db3c51dd290332a54c9c9749f4f2757c23bc4e7ce19fbf4478339435e16b3d37b6a8084b7fa3319f2099d36bb78f6bb82003d48d57e89335b646e3c39d3e0221324ad6bd980300059f8b5a559014b59ba26cd62603c3d43f7c1f026aed616bc8ff571dc9aa870e2e62af291b5d746baece70a2c6dbf6abacfe94660c71785e69cec497033e4bb34014422a110e029963d1ac83f2514f71763d9d1ddb4811476bfa19a3609d09c4b94710fd0f4ab9686b868c29a8161543dcf35cf7df079b505331e150eb4efc95af366d0bbd87bb8800b5edd3e6528201a3b138224c203f71c26b99022294383b78ae684cd427787780ada27022a889be747e10a50c11da33283e0fbc2ce481ca53258b0704c12dc3c743b605dde19c4b9dc321695bcbf173295bbd064311b0523b406d18f7394c18bf2764aead1c665a961668d7891c6c37623d122abe4566b3488a62b99e70ea5444db5bac7a5704dba12e556af231326c21b716d77cbf0fba6de235676e16d16c96253c4c5775b8be60199025f007e4c53aca98e948fa6f166ce3040615ba33a31fced1ab34073a97b76929f1cf8456b8b309a33f2f0bee2d46370f7a84c00fd7979ed4cc9c5099fcb1b8c512073f673f586169802d30ac20e1871c6e31d9a7402d688b51f43a6887ffcf6d790727139dd4dbe625e2e92391135d2d0d3d2dab234ea65996a361ac24370cc1dbee09b5cd3e20fead434141517f7e461ca1b81e01b08441209a1b72fa811e4d002362e258a0b3448c66b03aa6433671e3a0ff96cf45bea767ede4adb65b0527f19eec19f1c78ab40ab4b9cd8d48bc0e7baa8395b5928510528f66704f86d1610c5264bbf3d6520d92763c6c37f22b463254324ec61e3ec76b45b20b7829a5c7067611dd90cb19c17c2399a4b1e9aebf7033ef7dfd76eb88acda4aea6f7175e36b9a3941e3d17d2904988264fb509c8ce0685981d6e3e758d7cef24243ab2fec69aa3024f62221bc43c5047d25dc7e498a43951d939d58aa47e3847b0464c60304db434b01013ea4646160b67491a78403d67afa9e552c60605289030a649be1ad317447ada8b5efe37a30a7596b1cc096f408845c3a04853fe05ba13ae7811b1a1d88ace7b0cb9001b97e9e1fb87b7ecf34bb746530ef014cca147b04f0e946c5c785580310e32cfe7a9e77dc0e52994965947b7a91ef4f3908032b6ccd504d35af8af37c5380549bd566d85da229430a15079d20a2d8dbaa5d017216d1205cc6570d568163bd8e6da68be6bd2a475d3af2826c73e6549dc36ecaa1ba46ae99de09d8de4f6c91ef9443d2a0dd938836b1a1aab3e97598fcb9a81402af282d49f8d8d8e1adf31186181f7a63e47f5f738d403351fd3c3727e28cc4fdf71b1a9d59b572f92ad03c2fdccc0fdab879b5510dab604be80b26b68bfaa56de1baf8eb2c98ced78ee39e17da4d2fff8f93febea98543adfde3912c3a54f2989cfa89d6e16da39336a2aefc4586ba5d48f119fb6a67f5dbd63ec0c27335f83bc401386b7e449af507c8df687663a495751706b6c1bc491a272c30f505cc89e2b4233cf6740a0d75835c7295692963076e67b61d612d3ebdd0316c4ebde912fb043e35c20714cad0ce10f3edf9bf81bc98e6c906fddb7ac5022e6117aa482239086340f2058ecde5354c36bd62ed1ab7c8eaeacd3481a5731627dd767a672704214750d321eb9736bf713d19d3d32606a32ba21b1f40e413b3c8e8ffdaf04cb983f9e104678b4ff786dc9e4f56e02ecff4be6ac10c1db5660dbb4b4a2082a9b1dae870d576099858c10e09b786eb0f8a3eea35a9986982cd2c1f2f5359dc82786e467633e17b295e858470055e9a00177eef474abfca913591dbd7feb0cffd6cc05900d91096a545451c7981145c8e61e4af7a31d6cad26ff935e5bfffd31ef3580deb1274d5613fd604c72bec80079764d91204a460694717e652363fdcd0f616b71229a612e2291712739a3e5b77a6c166c985ccb4c4ff1b8beeb780356ca148819ac8b900e28085c07d6be13070f2d7af8d54d0bc316574e0f9f403a3c1e53f2898dcd5d1ccf980789f6e322cb87ba0a3abcfe69b0edd5ebb5da851f2a56a5a3eb09e63db20bf5e42c18d2041216dfdb62800fd013001bc260d7a6bda97faf6219a4501bf4419ec06a7fcd998ce65f218d67508d824fe36ad3a96d5f6664360632c4151a331ed1686a95389a07df681178346345ee2a36c3dd70cba04fac0d2b7b12f68ca58105fe9f6055a0d408c6fe59e973e151d03ee040073c6089e07e96395c2837139200e60d6a9e401f845677cb5f29c50b8907eb1622e832b88e450cb214b2eb46724cc832d2c62013bc59b88a9f3a9d190dd28ff0b26b46f58e5b6f9220a5650b390aff5f47741c15e189c6e86e872c2e213c0840ec8188694998a691780e819231dccbd845b6ac2063a69a5c8c24ccb54ab354960a71484f2a650dee96e30d0d1d58418938000ddec9c6de9249d402db9d0458e0c453e3aa770e5fb2d851b94571f42985170b80b35250111a698d242be5dbcfcc1ac10e40375213ae9e0941d989f46588f1ef80aa0a1e5a8d6f03d427e4316367e81b51d09db2d717baca83510e1b39b37bdfd6c9c7d0fae5732c09e563cb11f375a3ca59477647e46fa10230bf5f8d0164d12c1e6b6cf8c9333a849ea9b2b66803c0d90f967ed65dd9a5fd38143ac2c5cbc51610de3e7404c64ffef14d3c1bf239152db448409793750ef3793b887d8f13675c053e459e9f390b7a2388db027d08ea1e0264c9a1fc7067416f24e42ead2c7cb5fdc9f2d64e32f780d559544f7a29b36875e0583e84e8753fcadbb4af68deabf3325f658a60169cb5635db93da85ede582ee05ecf23e54621721965ffc247d27ccac683af9eb7bb5fe113be5ea55fb3cb2401cb002910eecb8a7dffd876ace35c7e8c80c35f26808259f472ad31beb631725f6d0059080f73d60c433e66630e84dff4ba5ca76a827333dfcab48a4b4d1a9353434e104a77d59229fcd0807362d16c0df7c19117b4c0cf3cfc90afb846825d11ede76325bd0692d86903d175dc70176509408c02639a79f3cda0081bc23b055de81a53e90722c5df8a3c5d701b1368273bbee5db89b23225e032148804772597f3a0d8115a0387ba977e188898bc9fca1ec7984e87cd715a49539cb9f9cfb13b36ea1d6e735398d71c59f8ad7567ffddcff2ec6a47f460da3386219c6fe2d8f1f584c246224a5cd93082daf86cc717ec32682d90b5f85b7404a4c66a2968993713eae19dcbd47fb0e5b8bec3cd189cc8b9dba15893966fd58855528304235e80fda723c3fea243ee22fe0c185ccfd57c6b7c98127601ed18705f2db009484ce08fff6687c8eba0ac5749a6d8deebf28a904b3ce02db1b3094f3368e3a73d11bf1d9f1a5439933e27598cb334f1300c94e096a360473912882943d78973df22a8b2777137cc8ced3e7b3958e8638d1c59444217dde880b43ac71bcea9d9c1e1e458edc249cec5bceaf999244981b430e2d83003c11fb976e13cce423145a790d80a25d24ed23dda01b19a16cfd186310a3056e6f1afbd194e6d67b5b1f0d94d9305207d528449ea3fb937d94703edb131e0d8a01bd314ac3526655ec07106e0ec77b3d159b60046dd64fbdd93d94ee1ad2a3427d51f21ece254e02bdbb21ec16f0cca1138d111f091ea20ebc2ebe8ae29b9b7f58c17f4e0af0e9d86762ae3ea3dbaa2975542944235a035287a87edb9664421d8f14af19416cca98643a2e1c64a98de2ea7c9b415f357874a8ffaa1af22b5d28ae09fdefecbb95126546d3df7a7e9f8adef227bde46eb69b12cc396b674fb79f98f7f635fbdfa3f0cd64ee97afd623395fd4fbda799b3635390a39502855163fc9845c31c1767550a207875cfa88097c0d93cd8889ea44ff4344fe361855867314e1f9f9e0e60100f6362a776032c39b001b20bf9246d1adb89c590393b8e05e65c0f5fa3aa53455ca901446378acd2de02eb4271330a36163abaab7cb360dbae61254fc942131791a9918e60232dc197bd122742a49a0df62ec8601c13d6c65422a13aa4e5c99d3d760947b8f8aa84265646a90f8e7f6f8497eb5c8b4b8a96e5464cb6a12ef498e3f8b272b30fa48c3dc52c2bf4f4a6f5e4b85cb1e883dc4faf688f32be58cb6bb5a9020862c26fad6a6626a237456dc920a6b45b3e15a610b1fe1543038f7a2220409d80e57c1ade00e9c3050ca93687f092058dad7f53187e3438d981a40da9b456b258046a0263035065c4ca55209a145a979eb9920fab93cea017fcb4e02e77fe0fe963cca1f51dc0d9aab79cee69a9be2d375daae6705fc1a42927db63cd85bd1e386af08e369a42e7c2e166c7e0d4f3419a148d69e787c84376e1b0d0875acd389fc3990de6549d7260ebebf226cc2c98e09450c6e43cb0edba60a4a12a801bc20d341ee6df7768247b6e78196fec65d1f8cb287f4d1849ac8a842c501b06d6c94865595459acbfc2c0ff748f84336300502de5f0df0edc0a5654a7c61ab2a982cd5deb3869b9d61bca854f53c5867318b171071ce5bf8962233756d450897867ef87d762d6c79c00492b8544ba433cea0c0ad74d5ad97b8c843958b81042ba5f756a5b117a091033a63bd91aaed63e7c467c3eab7c779785a7fd51e5e3715069d68ce077361f6ced242b7e6a213aa8368e3e9595b3d296b6645f1d94583a241418366a177062de33e5bbf50d1ab664fb11d0fbc07b3e13921d73e773afdafd0608543a479d60c0101d414a50b801efd8d9bf75f4a060e0cf5c7e7999e821e6428551cf2dd037a0e54015569c53ac7c8dbb24a3b1a69c9059b0668865f9f9099f9ea3c5e7ae00d975aac71a41814e6bca5c2b56ea2e030d7a54e7b3ef46d67d7ca3d3d7aeda8503bc81c035a8aa5a32b2bccd49fc045478fc97def21ee9fad9f2af0af89fc18d7d0c53f2ffdd3b6601b31dc120c638b649b75a771e0253b87cdf3021f91b383e94d5a5ca67aa1d1e91d3c586f8558450d88df1e92bb7199e69144566693a5cb7aeb904383458d55dd2b062c060e678396ff162f1605c2ea024876477f93a30bbefb239c2de0c866002d7bd91633c655d50db43376cabe9caa4409b982c44d752047976f0203742eb191e7df9164e2baae6fd75cf731474c539496b65c080ba12332548c1a9a02860222c1ae6d659f5f7ce6143d8c6167dc27f0d753b463d3a6fde8f1b13fde8f6b54699595f003daf93d6bb02c32cebbcb009a8a189c0bde8a9461c334bd3ec9b3dc11e517a762d8a2dd09b8842c668fd53215f75c22e02cebaf2739e82e58ac1216531bae03789977b7e634ee4982f686877fc7746069697a1f07b1deeb76c16871e573b29e11fa60406ad03bfb40454c013c00dc3f39fa5b07dde3fce06492e5168f002fd97b22cd119664e3dc7271c272f1f145919199f24ee19fc27b5e4c4f8cff4187f0117cd884e679322e2ec0afebeb1188ddbcd07c5820bd3eaa592716dc2a03c6e82987b4e1ea95d9c747161a220b9f549a1b372f3fa4af9dac10c87dba7830339b080338d433eca253dc23aeef51079de4955447d7cbee1fd783cbaa59431152166cf68956eb68b624c38e5fe9471d02b4eb4e6d8aca2f71598afeb93c167a670fb540e102e43b03ae6cc5500e3520ee26e9c000030c30c000030c4331fe7bd83fc35a4c29c94449068570f63d49724b99524ac84ae7dfe71b10edb7d65ab7b5003c10e20d790e900e68596e91489c841ad5d934eb23a32290f0738c8cee2f26fdf2c90c914758b2375d3366a9aec3021147eca2a6e1636cbbfa3d8587ff009286072a15ff01248d32441a61cc508411a899a7ffbc1fd63fbf08445d74f4cb29a2082bc331d24863d548301049043f3e42ea68da94f3184110cf41905503004d1041842f0b4ae791b12c7c646d0439238df5c08e35440e510bba71239755f95143f82243dec57279b32c5d883cf4c475d44be51be7800821501d5df614eb0d22398d9f44b5d58c9746fbe0e169f4087ea0a052119203204052d610118437f725ecce4b914070efc2c724f54d93b538100144abc9c5a0a63d73482f07c9536a20f287b4a0dcd264293bf1e117f1035aedd2aedd05e522d20746c8676e169920227cb07479dafb0cf3d445f660fec7b698dde32f956220a207cc657c35b7de6ee92e9207d5ce3e68599ef973eb45f0607dd2d28edcec61a66482c81d50d627fcd336437a2562877d836cc13d8d9a4b2e20d071c68e2169b021c4573003913a287aff9e764e7767cb10113aa4bc631cbf7d3d71d607ae203207bc73187d8d223da6510e0beafee6cd65f1474c71a8845898b68e219a446b88c0a134f9f6ef79734ebd5943e40d272932aaa5926143c40de63e6da1f52d95f99722d206459d499ff34ecfc923c2064daf5bf8cc91a9e3c8039135183ca9ea5c5bde9e2da286b38dd5e90e4a6a8ebb109134b0f97383d0f966945e68409e16e34b9abe9377c523040e18c2861a122063070e44ceb0e820cf5c5b165e92e70f113328a79ed465e94ce7302a8331a7abbcd5a59674bd4186f400043a74a491c67a40c78e4a050056102183b9ffc2fc58bae0ed1119436b374a897c59d698ed944a2588b7c10111311c5a164f7d8c5a8a48183aa1c9f2b5b3e896da4a050b2260d0de32754b35be693906912f786a4ff3789abc990d0c225ec0c4481734c7e85126b241a40b6e9db80b1e73f4586233887081cf6e511a949cef71dd20b205d4e57cfaa5f64f93417410d182192f22dd4a4e556bd610c9c26b9bab3e67c182e1a93c86ba92d1c59c0e44aec06696e3668b199ff1e203112b7c62d92d7731aaa50a6759cfcfb831f6dbe907225430bb2032654611d5610d1199c2b165b1b46cd29442aa33b5c9949ae495c986481416555bbabea66448530f44a080773e99afc7cfc498449eb05a56850ccde1b25427d8b9ea3aadfa26a0c5fb9c6fd3e5738c32c12c66395ecdb986ff2011449670788dd2398b33e6b529e1dfd9b2d6cc959f4c22493864de083962abd147298820e120aea7549ddfbf98d9010691239c43d3d69369c1648f531031027bef2ff362f058721529c2c1b7e705b957ebae11224204fb5b323925f36dcb39c3d03c77af88fbb0905f1807e962d29aaea256e4601c446ccdd463ae4d9b0b3880b1c868df0c15ea42f55f9893a6cdc26cbcf2337501872f340d62274c462f5beb4519672354c34d28d1f3c2ca24be73c6a4566ab48ba44913912aab99d3d6c5729967516e9e15f2e62295ef3fefe266e9638c8bb463f2dd6dcdd982e616fb8b127dd3a3a93cb6455ade0c23bebd4969a938e0a885317dc7d019de26f252030e5abcf97dbf379e7a51e62cd4f84c3a3ee8264f9e35e090851e3ebaadc6eb1cd623061cb1f8dae373bcf1dd381b5858a3d97da5e3bf8e780c385ee1b5ec1a3b86a74ba1b1c1862b8e735a522344c7a8cdb211061cad58164b86d464f52feec70a343d4b9b1b3b78c90b0e3856817f4b426a898f0c385491aa75eab79459b72e038e5470eabb4f59bef0627041c5a23a9abc3b74af5aee80e314c7912d5dc99c64ed32384cb1fcb8fcfe1a63b52096c2b076f7251f2fcca96dc0418ac36b10d9e5364a446d061ca3b87a448ab92caaf5068728126f6396a1779e9faf038e50a44568cb5ae92eb8b48262c9b42c8774a9ec47cf4fa41b561f57ab33e8893344bfb0b9455fe3df89e5f43af5fce5a244cd893b5c5c997adcfa97dbc4196794ce162adc84164dd452a99bcce677f04e083832d1669b91cd493ecfee43c08189bf56cdb2d3b688c72f71cc8ce1c963cec6305be2eda041b34bbadd3aacc4c25dbca56e06abd2c14109c347edd8629f76ad2691c9f786122a93f686dbc02109379ed726bda6c5912b107044a2ffb5d11c3fdb1d3a1c90a8f34bfb69f5c50c5a90101c8fe0648ef1645dd2a2b83b048723b2f9344278ae7dcf97213f7c078df8532f5c0e9bb2741c713062fdd31a379e8e1d93bc88f4dc993e55176b9e2b0219db3ad434734eba49045adf567537f6b9b920e27e418bf94f7af8ea2c380ec16e961a0f3d77e953010e4324f754a81bdf0b3de328c4f92b9a7dcd3eb82709f15f6d4bde729b4caf1ac720ca92f1d33aa2f6f42608efc574a6d9e62fc317884c3f848e31f777890b10a738a1c7d5e37f3007a153e546bd5f8ed1d123d8c11170f841d9fdcefb18741c7d4886d8ea69594cca3c06071f30795afeed308dfbdc8e21ce82360040051c7bd0355a9b0c1e3de7d4c31d4e7486bf4b1efa6c32fcf9689bc6140f8b159fa309254f675438ee70a86abe707a2d77505f80c30eb6243577bc8d63ebd621e5ae49b5282e3a36c8a6800efcef6e9ccc9b22f484630ee7dffdfceb6561eb9183a761fcdebde6f25b70c4414f69f9bb318683a32e5766acebcd1fdfb08b687546932fe776dd70e8a85996844c1b16d55ca5f264dc247536a4b475bbdc4927f770af011d745685b7462f2154031fae64d43b5c954c4a43ee4988199d4dd933a1e11ba165bb4ea3ad4a3b031e97eaba1be72519cda069c78ff9d26318b50c890fb9e15bd67190e1a0cdc58adbe8e1b11e03ba4eec09dd1a4e07c57036ff314de6f14766c380d0daf2f144cb55af60a89306217eb32c9ed4f20bd7cc879b8595560979019dfe4cfe69efcc1e8e2ea8b54979ad27111dc33276e0e082a3052d062d854c7faa6d6141768b6ce1734e96ae0214c0a185f3660e55e27fe55f0c8e2ca032c9aca744932c1b7594b1c30e38b0609f6b961674fc7e4bca01c71510c2856bef9ce54ade5660bfb7cae437ccefbc071c5538875f96da703f7b77072270506137edb2d8e6f8a3cd9c822f725b1c150b2146c7714861b1a5322d794aff340b8e2824f34db86b759253b28e13ec08020e28984d5b6c31d99ad2da39c10e20389ee00bae9ed2e3cf66291c4e4086a68f10dad385584d308af575f8921f32a998505a997bce52ef68ee4b28b6ca4bd6e5aee65e09fa788ed1e36e95d927e175fba05dccbebcf1a4542a1ec0818453aa7feedb67b163c67184443697eab85f2747648447cbd7c870a9a3744a47a5020028e02842ff5f2dac7578316c1c44e0b443c6d5f892d2e0a61bc370e5437564d216933f008c7043185dcb82865c4d0b2d06a31e51f2a5d3ed35320718750ba6b261f5d247fdc78d5f5cf34166c9d3b32c4ac3831bbe685cdb5dd21d3a0861c3e0462f7ad946e83f3dffb039083778a1c9cf9fb3b851df4bdec516268418990be12dc8053774a1a7c88e95deaaad971bb930c9d87fa7e5c745625b725c8e7b6ad5728b773473b8ed9b8de9a370c316dcc7778ed13c903458a0c68d5a34776a2ba7b7b44dcc021d67b0e1062d1c35a3e48fd66eccc218fc53e7b9eb94f5ca02a1f4f53cf43e762316c70d426ab479d1b8010b3ba7ed9737e6c62b8a577d31bc6e6447a6c7076eb8e2f0b51a3ebfe853dea7e48d569c59cc7afa2e48772964c5b224e27933a87fd9ec2ad2319b5cff3a95ebd2b0b8a18ad473c9f0ce92f424bf54b83d5ad48bce94d1382a100d295e52fdb4c998539c233acb6d7e12c2c6075a70c3149fa9eab95959f7f8f76823c89026dc28853186d325fe49f6bbd40d522c2ef6094b15b527e208749cb163044280a4400d1f68dc18c5236a5b567739ecc98d28ca13f5616a5ada78eab5e125d071d68697408779e14628d4181b6467835c5375156e80a26c6b35692de64e5efac4395d0b2a7e7bace478c3137dea97df4b688e41549d40d6ff35aeb855a60f27daf09ab15d1a3559bf09d6dcd33aa86fd20f1f373461de1221d4c5db0b9f4c18470b7af141eeac5e4fb88189c5ba67bb3ae91c2fe612fc75c8ccdcf7f9458b2550a6c6744ca2fd2a3b953828993cf68e9a1226f1d02cb6cbf9afa2497c5ab2dfefaa16949425610ef361731695394d8c04b3414b2eaf6859f8f92151a9888f4e29ef71dc944a2506371e514b6264522642b629dd70843d3a53f4fa67e9f3dc6844d973b6235d707083118de8af5fb5edb7b81c8d5de3c622daa03976d7799ada15a14b5a972ecbe1432c4ec47e29e6317f943f51232299738dbcf51c74ac7d884c9c541b4d9ad6bcc5105cfe9f9f90b51058cd79ec9c2b99dc274431ff41b7644aa9b974108c064fbfeba29d5212c4f172529de77da47f1a08466cc8d1f2d855bf0e085363bcb5e36cb7a0fcc3ab9e44895a195126f4c3f96bb119ab3647fdfa80cea35ecef6fd8c221f963b73630f8e52b1973a7808f51e3d347acda4b5ec1feb791eca96ed3c6859527ba9c483d6e22971e799ce62be03c25d7dbfd26d754476b86b45f9e8a0d6e520d6e10df2d7aa232d7458e990de0a2db97ba68ed0ce01178ffa31e9b78cc772e05b4cef92b80617a58943badb34c68e5ce7d1c361399dcc15ba7783eef30d292dcce73bcf2da2326e30658c1e3694be1c73b60d68ea18f49b9061f4c96cc8f366a91ddfb52b730dcb5f7c481736e6bb941a90266f63dfef73429d86655974ff4f137fe62f6840b9e82e8cc99f75b7673058b7c8bdef5219f466a84d8e95a7c8f43947cb70cc24da94d2b297be2183597049a914dd0c6efa31945ea5d91b747dd6a30b37c4609aa9d22453c6898ec3e04618321f1d8316c365f9a560704d6af098d3aab52e327460e0c6174c711f37677869f44b7a014f99bdda242ee9daba7085d652e35173b718e106174eaa34851611d7e2841b5b581272a3ddaaa585eac5ecf2642eb7773f028dba7a1d21dab592297803490b2891421450dfd1ae9bdb942cb5040a12287942044a9c30819226b056aeab418f098fbd8409cd674ebac2735c37cf120cf2dbc2b86c6e1190213d7a9428a15993f9bfd462645629950a154a92e009194c6cbd85c71102e9b1061b55284142a5838e7717f468614d254770c458f82933d182ec532a951223b8d9df612183dbda6c849222bcad696a35d4c9adaa84080e2019869035d80012048d1e0c201186902142809461009260d822b49cc388ed8ac0b02b9450a5f93ee84ca5542abfa825193fae8bb9f5b402125f1c5f8adb1ad1efbb594aa56202925e305ad2f51763a57ce31090f0a2878f35c808e2390802e4050f20d9459d65f76bf396854974f1a97d9652a9f80f1f9c0b34d0d8332c40828be332438327ed9fb3d81036d6a8543840720b5b687ae76d9723fbae54780ce901081c20641d50a908a9c59a1b36caaf265b1b91d082917d62ba96f5e736109259087100892c1240120bbf745c96b232aef9a88d213ece7003092c1421be02ff32b95bb62b7a2880a4156604808415e81654cfd6c2bdfddcc10592551080441569d11ab324847ee1fc2249c531f7baa6c98da6a539a5522141c5ddf3b2857ef11e909ce20d2bba2e6a8c4ba785c414f65cba658d7bbe87777881a41402202105724a76ee5f4eca2f8364142724a230e68ad1828b673bdae4832414b81c7345c92cf5a792418104140797add3c632b4b5e805249f5873d357a4ad77a64ee2893389fd39616d254c1f8215b8a05249c373102408901f294948a5f24176b02385a413bdb8493f99c85c42b97042ebef30621ea36a5c18906c02ed38d9a2e890a577a409ff6543077dd25e35b7a352f11d2920c9c4b5e9b3c9bf6735eb31d1bc585a3f6cb44e2f71d282ecac6d1a9d859325d6dc31c75ff1374dd24a54eb394bed68cdaa294ad49279dc9755ff839c27718bcdad872bdde292293d7e00f1d1630d1249204d66598c719f7116d22307eb413849226192275bf42f5d633d85041287e977fbf82837b990206c240f22e402248fb8bc84cb55234227b78438a2ce72248d583bc3a466526e9ffc944a6505248ca8425fd052f5368b3b8564112897643c192ebadb294940a288259dfbc4ddfc778b192489b8f38b8852214aa9546a408288445a68ef316db2b34c7288e6ea3e5b2031c4a2dca7111b3bdd9aa710ad771e95a264ac6f0f21d26ebab93b85c7161f8360b48b61a385668ab582e0bdbe838e49476f892410c6bbe66b6bf24d2f87c6a6110212406462cfa50dda46e624576304247ff8546773ed71132e2fc47fa0000d123f98eeb21a847ed94768f80032c407f31092b2821d415030c4070781a40f8c1e7fc193ceec2fb8294ec2077547afc92c9cc6941abb86901e419237c91e9cff2dfd7cc13648f4b034a2734bdddb8e962c83240f795242092dfb8a073b488d31671683ef6a6c20b9c3a2ab9df81cde36f7af43c78e3e90d8214d5f42cdc7312d9fa943c2b4c5d0e6a3524bdec37de0230dcf4110ef8124744847889362a3abae5d4aa54232875f32f5752d5e274e2391432a267aaee43cc659537e3d8d1db21ff875132881240eda6a871e7df7ec95758481040e9b881e357ab34167f40dc71874a60fe1692b891b7631b6ab444f246d384baab5efcdc6ae4b4aa5e223c81012366823646f89d668a5352047fcb79ce7628654532a954a85870a48d4905dcd0bfa377ad97848d27090998da1c8cbbf41a9d0e99a93a021f1526b52f7a764947586df4af5c734f971c64fa95416416286c56a399bceb26b49e7cb80d2cedbe6b21ce7d9929021b9721ee31abf9fa3315c292211c38294d31e843a7d37654aa5e23c849084014fb235e820aaba9464908001adf131c2c3e967174ea95448be70e8998cf51017218917cad9b8cf728727196f101fc2c61a6a0021e9422b9ed522774aa5e23220e102972ea6f0fb16a3a77f0bed79b8aed09925a14c245ae82ab49faf8b261f0f13ecf03478c7409205ad3dfc6926d9e1010309167a512526cba42995ca1148ae6018d376da415dbe9b24566076ae7ce40965a63429958a0181a40a568748a87096fddab3cd532a9536dec710203f2a953248a670ce68ebbae93b6d1e891496ed25a1bcfdf377d72814d7927ae6f09c5a642898664ea787d161f3da1a9c3103099080e40975c8dd2452db636d52ff7016348913fc932542244db8f3959c06ffa43e85244ca83f9baf5fb9a4542a3cd44830e81fce020708590754a004244b48cb556b0c5ac3077379018912f0dc56ba61b4884d9f2409b858998e6b52122430a339484d2f7baede8e6029613aad66794de98dc408ededddb6dc2ed07125d06125d8e1697016488a60faacbe39f8474284c4e9defc5ea6b5420c00258c0ca3d8b515f716b35cda33228cbd94fa1763c790d5927ef8d8204d8691609cbc6467e14eed57cb028c63588dbafd729c6e975f6c19175ace7fe3ea39e28b34b788cd714af33fd78b85fb53bf7579d53dc88b63fac8ae8c3397adb48bae5a4e5142c66067bd2edcaf52f23bf94bed482e56bbce82de96932708901e23b8d0c26abfa5fbd1a4e5476e917059ff93dc4d79fc408107740849230d3274b440878e4ac56d71bed1c2e5b92cb666c9945a9c05959fa5b8d9fc49f3115ae42f5ffb6710cfa28f2f0dfa7ac7c7b4c82215b771b273cce29e4b2c12323f44c3d7d27534020bc3c77b6f5bebd35d7a054a7fd22f8d8f9a9ee88a7e457574fa7d79b9a48cb46259fc307b396c42186105a2452e468bf174d8d22aaa526b32e59b0ad11655a4b65c1699b69bfad99154d8e723c476c66b7f7d0415fe87d8205db66ff7cd0ed90ff4c0fbc7087600f91f23a75874a9b4585ae577a1dc2020a85436888f9802d141446f54eebf68522a95213c464a61b69c91a26cb951682da2c85a4261d2b12ae4952cab5930020a337fe958e5b95c56a5542a2a18f984a6a52790fde9e59c7bdbb9148c74a26ae184eab931cc18d944b23a78558bb1b565594d6842794cd25fc4c2f399d883d4e4a7ecb3a81f31d1e82c699ab5f8c825149d1be3b4dc3f0f25a6259e9325e5f3ae8807554aa51282914aec1aaa494be61edc3594c0c446cdf073396997058d914934727d4ceee890134292d83b47f368abd539654b1889842effcbd6c28dbc66d91148a4ef62bfe26eea62acc2c823ca0c1df1c9898c2d79d29ede46fcaa77726f5bcc4f9f11688635b2884ac36badd6cb23fd56442dea6eea977d5f16c74418bfc2c57839da7aec941e29437cf02065c81ade69041196494db57ff24d8394032387b0e5dc18238640e7dc18698c1422cfb91142e03937460de27f4133cadc4b1fd348108c8c0c32650753f39b9140382f674183de3713fb4700615939060946fe90cbb65fba97d2a1e9881fceb3722f9ac58df192da0832a48d20676860a40f774c6671fa15ea94101f9e174ee924938a7e72d943f7677a3ffb4e5ce37a2884edc878d9cd83df77731f4be6b061c3035b1dbba28366f171b9c352c767e83caf965b6ac40ebe8b1ae772d269f2df3ae4d9b2e369f26096d3c19cedc1e5f62c3e32873a57a8c90bda9f74f92372f87376534a49d5a4e5681ccaf13fdfb02b42884bca081cbe17c47a46d5f8c964de606761ad5cac8eedf36283113770253c07d95b7a434d3646dab0965e318dcd92cb32b381312dbed49d73a6d6980f46d6b0c99d9abf96747b955da9fc60440dcee911b26eaed337a66a3092064de6abfcd1b8253b14c2081ab2f296f7fba4212f7a331839831b6e1e5e96e4eb8cb0072366e8c48a94158dad75ed0e46ca90d6a76c8d31d92364783ecb17429692e37b1a83e6b207f9eca2f9655a0c888fc7d34cca7a8470240c8baaa629ff18776ea6c10818ec4f5f16524596fcf90bbe94f1e6595a4efae285c443bf563eb35aae018f0a506006235de84c08dd2145dbcc880b661c8da651e37fe6dc166e3937a2055dd019424d44fb6327a552118246b2a0c6145d2d5d4717d4d763040bc6f4a0e73fbf24cd5b60307285df45b190f174e9fc47b063c80f3652589083112bd431c718478c062d6b4046aac09b9779b7e73cef590fe281112ab42fcb5f3269ce3cf38c4cc158ef508fe1ce663f235240b5e59ed38ab72df9481446a0e0c9e9d36342ef6e5d41828020fd5836469ed085cc09a9e35d3eca1127f4b3df257a25f3b458138c22bc4b56b86d9c4c606ddbe5ffff15b17e64095955c77de94526f9393f80f4a8543230a2846c36ae861e699ffa4be99124bce76f9a6232ba267f04097eeadd979427af0c2f4740749ecc8bff5edbeb09749491824ac576708211232c6bd29c05b5235eea6da408599e1cf9493bb6be9c52a9f03863871a2344305b8b1f3ec6781847519e3bbc05dd57f51f448481c67bec8d10d9bcb96060d2f25a1e5581716ad1345eea470625fcc5727b8b39c6e4fac9c5522a9521eb6b78904a05457c61757c8bd299530e2a951b88f48293dffe74b2177b8bf0a2fcfdabb551144476714c5ddbe5da2eaf0675a1c7c69a929e546fce532a15915c9c833297339b79ec78b807a9547870420417b7be14fed6216414b1c82d0e3196992edd3d7c46c416c6ece9c36df82c68a94ba954d6e8510b5e1ae51db4a02b7d8322b448676155fd33a6dca09ec57254b3d13bbdddb452846c4a8ac8c294f313eae2190b73fa939636e2945c058b5b1ecf9edba285064de415c9e8d6daf73157202f75cb52b48558bd155ebe6761465d34994b562cc652754aafa7cdf9b38a57378ba5ff0b9b615745a22f68587bb116be940a3f37dc3e3b35ee848af48b54df8cc96f453c859a051dd7c28d0c531a1b6b98e2f0f1a4bc28e14174550adbf3e7f82d5688c790e2cf50f2c13d64aa77522a951e22a340ff75de9aa7fb7744816c78dab8ab61a63ea148cb9f4ad9b7fe6ac722a0c8b547cc4bb51ffb897c22254fb5a9cbba266c4ca9549820e209f46998576b47d7932b41a413cb6fa3dc3f57c6586d104438f1c87f31cbd7a9e14924b28964b7e70e55da4bc42ea2095baebc0faac52ed39e48269897f25b4ddc83d65e04137ecea6a6df64ce9ca5442e91f29693382534e8764b4aa5d243880f114be463213ec73023bef54a5c719d1ef6536651353c0da78008252a2dc8f4198d2baa192c884cc2fd4c2f0961564aa552a9f068e37d047117b4404412fa9a7fe7fb338b695bf327378134f75913f204d2679c6882d3723976f89caa449f4e32c106351396397aca5f04279860d435ebbcdcb9447d1dd43466e94633b5c482d61621b7334b55254e1d4e9d7d6e0ff1574aa5a2060f0708590790b1a352e1c10925beb88c72ef9b4c6b93e22793309eeca9d5bd8e76a5944aa5810ce971220954b97bd00a973f438e441a1af3c89caa42b3a4944a650427904896b6bef47efa20407af80f1f69a0e011890b1db49d1e2dc8a4eb89239493da234a9c272dae8d38ac4fbdcf9f293b92bb208d34560d16542a3b3e70c288ab45cb922a93f971cf45fcf226d9f2c8d80f1f20385184c93c68cdc77d89f050b0231169a905edb9cf5aaa50f7e07182887dc33f5f78787288ffe3c3e7c6decbe713436c9ffb15df79d56b15a271c9ce33f42304bacf4db506837032883ea55f66bdd289203cefcefeb3c173dd66051f38098471740a95d960765a03886579731d95c1c4c6ff436a64282164ccb46a2f7ef8a5101f75fe1bb34d277dc0be373d87aa96de65f9d08d6b2c99dbf08b1907277b684e9e2ed325fab35b3da0baba8329d1226fce94933c546619bbec6a947d060f6841fb5c2aef4eee50ed8b52bbb53719f2891df8cfed95a2d6792bad4362eedcc22b53ab65679cd0e19371b41c359574b14428389983f95e126f2b42c96c3a1a9cc8c170a9a46ef9ace891a6ac10326070120767339ec5dd8af6cae09056e6aa8596bd819ce0e40d6c0c57afa51a5cf04c4a85471943d850e3c40d6915cd36ab7f527ff406728236a43fba6ca69e9645af7ec206334b9ef3ce7a66319972b28654ec0b9ae19d715716b269f458034890a6c1891abe18959377f52e7998808c9334a4d55b9fc9446e927f4a8fe42e38c18f202768283cc52639dadd05a14e0952a9f060c1096e707286fd673589975dc306f747193b9237100f78033941a5924eccd0a88e797d84bd6ac89c94c14ce78216b53bf6e91813ec30e3840cc8fcdd7bbbf7103680b4b126a854d610028493319c3c99eecf6aee23c8193b86b06146073eb0e38c13311834bfe94e1dff19833c481abc67f06057c0819330fcee73f65aea365469c88f4deb820d9c806179336fa99629519f49a9545e70f205ef3266eb9cbf91c9f4be022f7cda2dbba4d4c88b91f168c34b902264cbd0d186932edca2788b6a4dbf55b2332a15ee089c7001dbed204adabf58d24aa95486380b74a408d932d0c916b253ffd2b15eb8931ace82132de4eef2bb7b163544ef5940bd4b7a42772aa55239c1023ac495c898fecd72a608d93252846c8a193aced0118212e8286347073e6046a5c2dd63c70a4eaeb0345f6b69cade73d6869c5821dfecd9eaae9bcd0a7c40070576985186932a3cba65b1e365d53f5b4ea89014513a344b25b3a4660a6d7afbf0fd993efe75c6891412df28bb596378bee8a814e82814e8a813e828337494092820859328949e534b1faec3c84ea050768b16369c66e8e0e409f55d2695252d4cce77861327ec7953dbb435d8e5a946174e9a70106d751363fff625344e98a0dec9c8d1fa52c75d043a42a003043a3ea0c3033a6e70b2045c7aaf9c991b39219f28e1fc29deff9b34e5769290deb4b2294348d9cc4e90b014ba7433c87684f4bc0699e6a32821f21323f4e2d59bee5566f45d8d9322a0d3c69c476968c94a0c022140529032c4c70b6a704204448569dd36d3a7fb4d1906b299ca830c2fd118a6542a42d8301186a6c14ffab9dcba9904837531cce812722d8a26c0486d4e272c7f6f6ca3bfe0aa2b635291532a951e26be283d97fcab26edd432e50b26bd40c6cd13d7293ffa2ebcb0d33eba8899394fb25d244ba8531ee73cbc425d70de9e445cd978d83dc82fc12417a96deee49a5dfad563828b44fdb8f0a33e097188c92dd237ba6437b5a0e1b4c51e7ee75d620bc1a4168b1d4c6a0e9bb7053799d062d116d456d7367fb43430998549d65d7b4edcaa93b258bc6f332899ef5003489010f4c124167b671634faa6c9d341581cb3a6dc38c25bfc1fbde22aad8df6a16f54caaeb0e518c4cec62ccde0d28ae5cc5d4c68bb6d316685a59aa24bbcdc9f6f3359c555a2a9c22ab14c52811451818aa7c833c7d2921ebd10a32ac1c414074fd6920eaee9f4fd0a5040c710935224d6e64d9fc7a0a5934991b83c2dd59e522353b886c9281c7b415e88f04c19d46b228acc4d8357cbc837950962128aa479c9d20e9afac2dd011d64ec00c59da54508ad0c2f698fc927fa389f3c736769318b9b78c298dde643bfe03194a9138a96ddd486eacf9956134e1c4db8d862709997638ec9261673bcc5f5fd1255119b68a24b0f1d734e33cbc47d99f498e566f157c3c459f214a363b97c69f925d8b87f599b69334b98b31c77b4a05376f6a912bce43979b8cb29f10b332f082d37894ddfbf5ca9cf162f496259345b92a535bf292f12aec8f150b5bb319b0b09b47aacb25d748ca63f42d3e049e7e676529dae72c431ae2f7aef6a84a637c4e6fb9311edaf9988cc5f371b2ee2acd2a685958bcf5711df2821dc74bc7d5c4e22d6ecd933698f0cf21b4418639f7ae9f8316dd41c2251e2f51ddfbfa336c4a9ee72fc18d69bd2a5aa1008d9236acdc598652684eb92cb594e66dc986a10bab97d668ad1c265fc268230cd3d7eb5f09d5b4e9904623928f5a5a2e5acdb05105a866398fce191224e83a67cd152a983878e43362461e287a50cd330e98329c3316c60c28753866398ec21cb708c1b98e8417b97e55ca941486dc91433c98331a6ec58c6160f6c6e7166b5c5efc0e5cb5e656f074784bb6f27f3d418acc3418563acc0840eabf555a95325c3570b81c91c96ff19215373c4ac47011339e81d45c90b2de567b9250e6f6a4f972d5a2cbd3f1cac4d5a54555975ef180f1a98bc417d756b17e36990f7dcc069eb4ebad3fdae6f435af4877ceea434da6900f91e6d041912021d23d8b1c69a9186091b6ad1f4673f99a50e4abd0674caa45c16719de3684cd4c07c0e773a234a7a6b4cd2605ad7bb2dd195c1366848b31c45e92473e2c134390377eba63c678c33a3a6fc3031833aa7c4c8b07e19f610f772d0af415a694dc88067168f2b19331903b7515469516e1331a499a5ff17d3ccbe8529958a19266148a4b55cebed9718d58ee42e808209180ce6d65fa15df74365f285a3ecbb282ec2b3d47aa10bb5a2aa7a5328a134e9422ddfeb4b679a09171859d56b63dba6da64b28534e8bd75abb5d4b62b502bd0512aa080a7b1061b437a00c1440be8501f9f3effe1e249e91f3ea4072048be060b8e609205458bb6fb29130b8bd13368314c568fbe4caef0b8245cccc9b4e2a5ddc40ae852f7fec2e9f0b2d49954c17ff764af2f5440af68dbb0934ee115559e4d733c352a97c28212e12364cca9f78f42e739a3e79c3745c896910413282cb9688f2f8fccc6d94f406f45c69861f46ffe264e482b5f64a79d4c9a5029cb2cc6261d4f6c8c0913ba0f19da3a68b0acd3129637db6759f4e728a78912102a33becfa6750f0d0f4c927009e11a5388a7562b2101312394858a7e35f911167feb2f5379da9cc4264648e737c8bd8e1fa1333b9a605204cbeeb7944c5b4a5f389910c174e9c398dc273b911986ff727a4d5aaa6ef60a8377b1d99127b494bfeb90424930be16f3b428caca64d001069629f2dc456773bdbfd83d7ea9ea9291b9765f3c2ea8d7efd3a5d4e6a950d28b3ee7964efa891785a8174f6a33e928ed02b1e259aa0eed3f32d505aa5e0c17fb1e3e77502e10966776d6f9b360ba94125c5cddb9efce7b3be8b6ea167ddeb6349faa05a145b6d02b3b06115719c48a6ab16b14b16a19b33afd2a5a2cd78db99c6af459984fcb62cbfb25591cbe4d673c1b1d5ecc128b85d359b01fa9b2c16420d851028b056d5ade6ff9ebf34a0a25af58de92e7f9348f2c2557e03bbe1942d46d3279492b4eb6ea627e29831ef5b0428dd1457b715c3786a350b20a6e634ca39f36aa580cb2e96265d0b9722894a422399fadafefe52b4da222d10e77d9326929ff4fa16aaa92bd32aa4f3d5320da82bba44bb398271d29d8c182925230a374e73cb53b84470a4f3e64aba8fe1c4b1dc5a26ec7d5939631b328bcdceed0aad1a024144839abd27d31509c6569bdfcf3c5150da551f289c5f29b8dbdc1747e954a3c61d84d2643b79da8937742d39a4fdda996706202259bc8e5b24413e617e75c96be7f375a2599e8e1630d321c508209b4f8d5e6aa9f52a9945c22fd00b280124bd45f3b735adcd4b02d6667e8283b83023b96924ae45e9ec57f4994fe9a0ed9d0c1e3d74d70cc95a0521132c487214a2891664a95cf794fe293bf714694cec62c4be2efb4da121a36a7d246e2fd513246af507b4d436201258f30344467393e7404df49ddf7e58ef3392c69c4676f23eac51c2396d44e9d06bde2b9ff227c0ff52164ad2cd061868e337688a0441187ced2b29c643fee4ac4004a1071f9853e3dcfff7a2213e828630325877094d85b973307995b3c8587a311c4cda8541c8d205ec68e546288930e59baf40bfe9905455052084f2ed4ffe9cf2d8b391b3af00f80a08410e5deaddf672c197a1f44175a52fa7d4667d9542a11c4d20b9b1adb64ee967388a361021d65ec40c10ed90facc00c332a951e41d450c3043a46a0e30c1d41d4506317258150c30c02940062880be9e1630d320a50f2870694f8611b9dc47e5d106f3241491fccf2cb7f9df4dc7d77f8801c25577a646492134aa9544e50b207216d780e1e50a20734cb26d2746fe78d5a1ece9bbfeb25ef3e968a071f6b90f180923bdc59a2a95e1a19e2254da1c40ea6a40e1028a183004ae6a06f341d273a8b504df7f8f13dd410b23ce8e11a2891039b938e974aa8e934c238c02101256f309db21242bc65d34bbaa1d72c9e2513bf322ea90d3f80f858830ce7ed00014ad870ed96aa9ceb4bd6d0697cac8d1f285143f636e26bfef23d9cc7193bdc479033d0f8e16307252849c3044ad07006998d6165a8f07a19cf5ba65372865ad494fa82bdafeccb1a4282949801cbf47bf9af64d766410080279494019590e100256310e23e7cacc180123168ebf16292fa99215d4ac2f0aa965cd382bc7ca7ec4109181450f2052f1854da4be272436fcc4bbac0852da4bbc34b1a2b429accac1a255a00f20828c942a17ca47c8c8e670c1676d1b2ff52bfdd7a86b061c68f10a4945c415dfd4e1d296f192e2b0829a9828e122a585d6468ce368869b0b0f2941863f0b4f0c9bbdb5cd4cccb10430ca72a77c134e567cc7d188ef52c9c3e8d01c39dc5d732cfa2a8173d5fe87cec444bb79d735ec5f0027ab7e455a97897837c043b86b0b1c68f11a0f1c347ca9035fc033e10a30b9c1c2d4b25bba58e9bb9b0a02acdb52682185b38d4b7b3880bd797bb1988a105d7a57a69b38329a547626481bfcf9af6e983784b812006169ccd3987a6cf7c4a3642c4b882a5b36b74396405ae94bf186a4785ccae0ec4a8c21de4698e71faa5fba810c4a042ca7399fad4f3f3eec498c2593a6d08dd73224a2c8614b67ef953eefa9450511436b3f2aef81a0abf2c9dce26b16962fe21c61332fd5c9774884e50b3c95a668c374a7c4d38fd8cb928d3ea2b32319880f6a456799f2c81184b48e70f639dd3bb54e989a18433aeb9a4dcedf64d6e438c24fc753a3f8dc78626570c24f8d266298468f8386263418c239c9beec27ba8d82c4a6218e1206456b5a45dc36e8c1845b83a8aac4df52e27d9d2400c22a4dff62e5c6b072dd130567de95d731033ef5318c8a0b73b6693a363d48381483daf34b3d6f91230cccf5697f9c6dc05f12f12326665fa46fbd6e58bd6847a7df9c5737bdc8b36f927d1531b0a2f16bf96eb7c9412f120b35d1cdc4a7526d9929bd24941d1c5e9deeeba63ec643b66b9f0e5d8507f413da71471610e27cc5487bf137dde22bd27e6b3643a5ba473d5a27ac58717ab45ae9d2d4b2e5ebee89b16e6c81e2d5b6221742c056516e8b24f1bb1e62d66b0078a2c50eb7573d30ef2658a853be2e15a6c41a751152c6add7841eb741a11c257b01d4bbd24c2c59c360b8a2b1635150f2283d21f11a51575b852391d3a74fe088515c7a9cea7e564165ba401ca2afad08e2296b7d59269515491ceac96b7e58e5d724f853967c630c6dc9736779e122d0a2ab0f6337191fef2588807ca29d2a925fa4597ebf82b450528a6b8650d11a5149aab6e0a35267d3328a58709504871ca4b7bda2183fea08ce26419ab65db82220a33c92436c9ec28a1e07d845af77ad9d3c50b149967503e8179e60c144f5c9e41e904c233289c58f00cca26b40fdfa9a259ac5a4c8a260c9e41c984be5b428318dfbed804289838b5a4a59cf510caf545b9c42ecaeeeee38b25646b09ae2cf443cba2f57d5a89640719a3ca8c6b8b5928f1a6cb2613df1c563a20a04cc24f52dee5d7ecfa5b124bea2dcf648ecfee3e126ecc5dbdfcb240c21e39fa74ecb019e76a03e5118fb7c9a0b2673ec915c511a8dedfe678a234a2568bd3a1f2a5e545196116b4d8186eb58a34d1a841657211f557bca6c90cf225a328c24f723a63f6bc7e0e4a22da2e3df97e6b1ef38388e54f62a495f486040122840c944368ea35d684feac77d31086508e41039442b8769b743c8f254c4e88bee5fcc298b07f492707e197921ab6330b022de5b2e861cf5e50ea40aca7c22bd5db6531710a1b427afc400104ae31b5b662fd056b51fed08d8e2d5fe8cea2854f80e2872c3cd5fa7e98d2e25e6c40e903df2f8d767f1097f7f8509532a1b66da9553eca1e8c41e8ede9138db93c29954a1aeb4384f4c8411a6c70a582c60f1f7a504365cefa293695c951f2a06a96a5b82a9732bd43c103a354a8d22a32b27370081b6604f1213a40b9832dceff87172eb793d843062876f8b4cd8a8ef5cb69a364a0d421ed1b6c37a5cf7ecfe3043b84b890f5910619877d08143ab8f7599f348c6ad26d4afad123509439e0d258e587699176630a0f1439a41d9352a6ce5cf0f0f0004a1c1aedcc724bd7276f260a1cce9d4179834134b7609d5f34d9db193b86380bdc839cd18110a0b821f9319f3a749c77ecdac06a4c757973ef5fbec990400724b00305286c40aceec969b83b80b2865e16c4d4e9f0d1d4435103aff3f28fbd581d2ea6c1e49fd784341b0d8716eb0533195c0ccfd900ca199e1f1d457c462d47f4008a19bace416cb7ae9cd2fd402943ea5c107246a090e1fb35fb2ce9a05a8396944aa58d20438478fa41c68e203e824aa5871650c6900ca53f6729e654c72019286248796956e99c90203ebe070750c2b0ac3a8604d1b16311286028436c95c69919f9664aa52244c817ceb86d7d111f252c5e018a1790615cd8b09f83d0e2285db05ab4099d3ddffae852787410149481c28546c71cae524d67f11f09285b40fe799c7ae1efe5b4682139f292fa2c2f5c7c87928573529fc516456d5c2ab180e6282e8a9b6ecdc945b9029ee39f55957ed155a158e16e71ff4dde8e8634805205cf3e746cbd52f9000a159061cb7cd35b94292c261d2793d0b26dcc89220545b3e87f69a42e4089022f9beae0e154c69c25a1402199644ec9a0f3e17f4379c21d933edd927ff252999421314071c2d9c48e09a1f39ff7a7f0e0e1010fe8386387901fa03401edcea6355a9e8e498609a56e8ce5566bb924d2006509b594bb612eacecfca584af3c260d9bb3c91d5192707af1134ab614a76eec01a4535090c09d7d7c5ccff7a1f91f2847e0641634869359bf8e532a951e401ac50856066b3997b2eb0d6b0a06508a7046edb51695e159f02f804284e5a0fb62f20f0e036d215f6e715c4c1d3461e04934090f5adef1e4120cff4a6a6e36bd1be500c6c174e55d3a3d7efd627773c93a66fb0f72e40b478bb7f9e596a4e6f07b81b5e0fe59b86aeb24e7c5f23a3ad67af61884bc0b34e79149cc79e969295d58a15c54a1c285b15ba42e39460772d862d1a516a70b2d4c97cc310b43f36fe6ffeca24516082db14856fdf6862ea97d3f2c96b3b25aabcbc597c357a033ddbb8368901e8446c8e10a5eeb32e70f558e56f4b75f420bdaa3e5de3958d1b9a67b6e701743d8abe0e775b463ceb79fa32ada167be3fa65687e3515780e7bbae5602a6b64a8f0636eb1c553173b195c428e53a447b44cda0b2f8612a5a82087290cd26cefe7efe51831a57ff87816e428852b5acc9f7ec39b5e9583148b2e3b2f6a346be1a5738ce2ec2c9cfeeeadd7c8738862c955456eaa0b1d2d0d055fea7a4a6741af860d280cf5ce2d4b3269f9c4fa04d274c7d22a3a3d69d513c709a9ddebab1a35cbd109ef6e5ddc54e94109710269da5c52fda0f37c4e8e4d6442e76e8f613d9569393461d0658e4c24ba2c4c20ba4ba0e52c71cbf96396121efeba4ba9547ab4c13dda48638d10e4a8444207d12cef683a15a244559d5919fdb4b4a4148420c7248cdfa5368eca20a4c592a8eb5e1cada134c90745c238a35be7c39d0312f67db97c59655b2ffb88a5f14c1f94cbe67004a741e67c2de5279bb1115a4b2fdeb774f7e26a8cc0a48da67b314e4daf459cdf9f339e4c11ff66a7d172991a4789b84c5394fefb8fed750e44985a8c22fe0597b33ccb21cec24973ed0c773ea221140ddf6519b65bba10e7ee667a75127a1aca410884fcce754abb83b074bad7ba2ed5a1744170719d253d5a4e6aaea6542a3d68902310a966974f953ed998aa94941eee031f42d4c801084e65b4f07f31d57d5372fcc17b49e8e83a6fa66e4f2163c73189078039e4f083ad1d5c3e2d2e7614a13ee46176b51d34778c397cd04457b68f794c8e3dfc5a61262bacc52c7d3290430f0b1f7316ce5c38471e16be42836aaeef0e971c78f86308dd743a4ee9c00e33848ca052f91e423c250d5935aa90e30eb9b83173ee69871a0906cea3071872d8217d231b2765ee34bd39ea6046875a96b31c734875c47358e8703a5f68e49043a5f944e8bb90a54403481a30c811076b839e96b3e0a794ce92030eabe6d594779f41b52c39deb05de6317d8fa2a1e5b8c15b9dd194e6b7e12473ededfe836739890d5e861819ff64d434790d9d1a21637033754af66ae8a5bd6ab9dad4f3de1c69f0e45dfc97ae949811e540837d672fc973d96551ca17e43883e93cefe679396d28790e33ac294b44f39cb75c5a0f7c8e3230aae5f6144a47267d22432ee599e80d2e759b7e0c281977647b76cb9c763158a6e64b5f767589d70539c2b06875b767b6e9830c02c3e26bbff5319fb8b97ce1fcf43167414be7f0c2622a57bc05cd72474f17de38d5a5d45387cb593a07178e71c76368e1b4b498dcc2b2595223936c6739f430c8a18534bd935a1dfda471e5c882f9a53ae13dde62eb82854dff8bc16a4c9cb02dc715ccdf6184c798655bf972580161a55561c1ca1c5440accc3105bdca10e49002baca1c5138e7b2d0a32284c891fbc801054786cc78cba2435a4f50f7c38bded4da590e6a2387138e2d881e2dcbef73df3541cd2d2d933b75637226d8731b4aa6d1fe93c125f4297aba3e22d739a904365b8894d71269aacc91844ee71dd3d99ed799f11c48d8c59d1d21aa239c2edec39c6a415dd6398c80d2627b185353d375ca5184858f9a73dee5d09fd43988b0e6d99125d4369a8887e1bc644ab69c6c0919ddc18930ca532f46d3d331d6ffc1e05bb664d697bff42e307cf183f217785479edd3135371f185414c4b22836f12ad5d2fec4b8d1b5e12dfd4a2bc4867ae5cd7ff5dc82e4eda276fe393ca5559176eacc660ef52ee2917cb79b15a9a3e99900e4e7091f2ff511dfdeeb4ea5b64e6727a2d932e980a2b95334e6c71963f6975711167324b4aa5f223c8f2a087731bab460e4e6ae17bbcc67ff22c70428b5e9efbcf26357e16d32cf891a905a53f74693db852e151833366a027b2f8346fceef1f1eecba1d40e224168ef00caaab4f082d6861f15d9d95d679ce106b0b27afd0f4b5ea3b8d4e5c6109d7747179f75c3727ad306347f12af19ff705534e58e15a69d4102f1f5c0a4f5671bc7d4934cf960b5ace892a1242cfbaefd4dd8e9e52a97890654307422a150d9ca4024dd99ea4fde60415e72cdd59101bd7ba057f70728aeb630ea6bc355d2cf9c41455fd7a099df5f81f2f4576193debdf8fdaae4f4871eebca0f5537418198d22d5245752456774324f44d1c7a44a34f35a0e7d95e02414e6dcbe25e3a9d47141502c558cb99bd2cfd3780e568d4a059d7c421f2d8b94f733fd7549a954528600e98010109c784291f9e342c8db3ecf75a21773ce72bc7dc670cf83a4000a279c68e584ca018fdaa8e4d1d2682c108983a140200c060042aeb703631108304844201188c3f1a85cdcba0f1400014232225446262632221618208b04427148200c874261302814088643822094c468186acb0768434af3d4c6ce88c4ede79ce7eed3c50fcdcd963fcadf36703c845ac2f37178d199a23c9a009d930f092825693cb7aead0148a5a6e3afb6a66796e4a5875019f6e926114348340e14325fe8b079622113907b7963496cd81664fa20bb027c23db80eac5e62bf1e3d88c4025ec24ac31b4103ae8c159c1025a8315b53fa6efa6683cd0dd8b1cf9beb845152f1c6e074a0094e43f6e75b58b61710c517975e143c89ce78f064474f5a2e7ae595809e330e63cc92a616106b31e9c39ec73862cc916a750746db5193627cfabd1978d43bb2a222f26b388dcebd3ac53aeb1694b95a2279dc5e1db009fc667b8b7e2c612e5ddae8d23e240e653edfa41fd282c9a219157f33fb5d1dd53f38f9675684d4625d9c6a052cd738bc0a2cb8dbd579db3f808270c6cb6d076b2754d4f7b34fb5bd5657e00244db293ddbeacde75f51aa97fa7bfd17e9a7ed13fcafb36dd6565c19abcf75df13c6c273708cbe6ecc130a0d5324ffa7ee869b206b6ce548ba01ee8b00149881128ba449f2ab6d444a7157abb20ce71dedadaf7a8f9a195b7fdd17cdf46ea2b7e50a656a5844f2bcb8629c606b3e4128f5ad7dcc0d0b4205f5d2ff22ce161d12e49713f6ee9799db24a9c9454ea867a4311e2a8e203d82d2f7162fdaf976f1692ba95166a66f5a960ea0e3c3492e72e0e078ea34b847f5d0a37e08232ff27d90e9073a5fdb412d65e2a75f54f99e5e0572a6191b797188d2cabf949101083bbd0428206a8dfb3528ea20d52b7404427dc1150cff4a1d64dd27c05254c58d4d52efd137cc8610823026abfc8c9bb6b26982cf636bde1c32f680c21159df647ab1d4f08443305820e75d9f3ba9c633323434606878a39b7c8c8042bbda3d78724987ab0a4320fc2a7bf0278b1269f6064cda09ba7dfd7c214bd4af48b4f73b9f5f3605678d4cdf95a872c659f54829798412f5720334f5cd1f76b2188dc2febefab6e83a562685e0dcc9eeba7e558a2bf3e9859962b3f536464abf167179a33c38bd6301df8bc3ba70f7d62ea62b9b118591edbd2428ddf847777036ac135237367b4e03f45b8c9f3f0e847a522ab3d59532e9c24fdfbbb4fae290c87592b4d47a8ae99c3527a30aac7b0176dccdcf1d63f54c1d9d2fd0ab1c739708caceea7207676abd7448946ee0848c559a4919e6feaf9ab38d6595bfe2fd6681d9f0bb1c2591d4c04bc04d78d0ab8a10a872b43b05b20d6fbaabc87f5ebc95f1010983d7b8d38314def92a59f3dea2a9801232f9fca2d85e4cd839090ed2d29f9e68bbd8a2e974631969fa1456b55727d139b0258360342e092e272aa611c0f9422a3819dfc375c5a33fc0cf331cc85ca89ffbbebb7a00411b899e4311434cd1da857245bec32ded5406f7c2986692930d082a82254d27ac7906692a1597d9067c4c50f4ece1633b2666ff2c03f9968752b0011f75c6c110a4bcdceb1894a1c12594a0062e73c6a64e1df95ad3695953315df984eb95ead836f76030508d124a16f315e24671521386acc0947db962a41c3fa054f8e0fdaca441409db84689be66d673307162f598248c0bed82b8d17b87cc98fa99110d907f2e32bf07cd077b9b6b9e55dd7709d60f8814ab699e89224bab11a32bd2d69cb8c8dcc55a0967f6e22b885b7afc22cb71472fbb29f95b1f6bb8235cd0e8e1cfc01e5ba1542322e74d538a871de5937619fe8cabd56ae6255f7b3fa5f7961f9dab0625876dbb493b3f8208bb394246cc28ce82eafffa3309ef96ecca3f2597cb0cddda97686a0cd7ad4c234a93ba585a29c533d06a77b0e72b69ef46219f36de0016bd27789b47b4d61d65b072173b449d4371dc0f296ff50c1b92e6ba87d7dc8a00770fc9d001d2c599ce211373ebf7a830033c4d4a2beb2f902e71d9adac5da8164e3ee86bc0f8c4e96026b1843bd285260f15869680c6e3da34962abcea5c550da12643cbe8872304faa6149290221efbf44cb4c5f15aad8e5a85648666213133387e70a5248180815d58cbe5ef151c0ea0cad831034766d21b1e65d3a04805cdfe098be5a7ea70aca2ded718b7c003abbb178938cef935b2d126e37172134a94046bba411c442803ca971a4fceeef8a5f1dbad8012b7873aacf0672c3f0f871d0d050fe94e96b9fe1ac8d2955c525bbf31c2f4521a7e3e7e86122ba44acc064bfdc170dfe5cee29ec40a9d514c4b46b98d9e2756c25a25bc34c8cd3c747a0cc1b959df7c3f489f26d93ec09b8df07ef70cc9af1d156acd32f001b08ee36d381d8700c04410c615ac99744920a1a92bed3951c067bf52569292a12e24475ed98f4b7d2d49866f5730dc283151077c68a29a74915007986eeeb9dd4e9c35b7541cbededf47a308365eba542d371d370e86ef51e5f963da18777d42914e98384ea7079718f31802dab7a4f6d96099d9c766c37924abf68dc643c2d35be15b624d28f08bc068b24178d287e598955f5241729164b6c4298799cdae96cb68587ab8347ab736a7e869c9323f78a65c3552f0f39ad8bb44e4e0c6cf3057a5f975ba4959ee8cdebec8cea755c0c4fcbdd0426188ea48462bc30c9269090b0e82253443a3c2ed655afc71663b59938c7dce94b958eecb3658ad6ff5530c235db0451b354b0b7847eb4f4e9bb2368f8190833a3ff074acbf60aa3703e52f763343df7ac33652914af3d29ddb51cfcaabbcfddb35ccf55d4782c10a318e2a2c24bbe44dedcddc974d7c69754df04e05d013941056d08b4aeee950e2e9dc212dd0ea917e02a5d089c36ea04a9fe39fcd26cfb07edc89b4b0e86a653be7358f44da31dbc9f464631f13292ba6bbd483385c43d892c042e985c6e75f9286b05d3b1d4878dfd7ada82b6adffe7b84e9a9d29b0295dd8abdae2f8a3b2c50848913931ca2a3f9ac5ab42a35457d161aae3431be1e527e2fe7914a4280ddb96e3c83013500a4ebcf4ed0f95b452c766eeea5c755705c630516b23345aa945cc97018e5578d7256b4323d439f3d4479edf722758eee8b4025a9ed9f83b2f5e1f0898b74d4dd42ba550540ab203939df4476396377026357bf4ea7f9e06c345a3fb60faa4f4e1f46d29f096c49d2445ba56cae9d8d3d927d39c5478e635999046ee111c8431970c8b9e9be1ef28c65d9901e618792e25ebf2b4060dbc219f19ff3101302171e2cb58b87676f655973dbac0a88cad817ad521237176b4a31493524d625e979503831f1eca35b303cf973c3eaae639fdc299e0e8d41521c61f7c5365c83f74d309d3824e2800fcab92e646b64c31647c3497113373426c465422e493c65d80c6d6d34c4e70d28b71dc4fa8d9f41b5b6ddb6ccecd62144318d3f608f272fcd437dfd35695d0e7ba7352112ac5ec25895208b89ce533996d7160441815d3811a2c979e3e2e4f2b5b983049ea98477ad6d1b0c1b398710ba1662deefb0090b06ce137808ad9f6cf2459ffc6e9a995b39c2e70898b94849e9e31823e9c5963323d9c19f4e272eb30288cc1d7ff18ea0c72e02c727a63384d783d9a9101cbea0efc983eb273f2a978bf7d745d95c79f35283e8d9ca0ff650b0c16bbd63ec6d85afad101e2aa72c894345ac3174a382e1646dd159cfe94e2aed9be7fdee6bd67c9c97762b7e96ca37cedcbfab5cd4e515be963271104049650e8b3091f00a28c813a4b6712fd11a9fa7b48ac05c0f893b60226ca87835709f803ee24e636278306549b93f64188fd2a1b1a0a1c9d6b1055ccfe43ed0e8e882768451a5563049e71aa0402d4156ef0e343261d74b9465227c36f63426b811a732af7459ff8a623a27b084442c965cb213cbaabe6c7e800d351cf7d9d448e813a327a173afaa94a8258c2528ee76ccf07c13c04333111fbda8267c83912609339085c72e084e8064b81ab7b02e9329003cfc3ec0de2daf35942503b6355932311bb11015e1c6a8220c5b197d9f1aa64b2a410d27b08923643670c51330f5fff6ca7715837877a26e3a49212c1a9efa5babddfcb49f6e5f10e48ef49b52ab81f5a5243585882ca830029c94e84f106f1788b60d21d0dd2e787215f1118958d8f05cc77f292ea0c1b0df2108242696a3266ad4ba255ecdfc68e77301be1c093b5949d544e5885cf120d218b57610134ecec6bb11a6384566568b0424cc5b2ead084ebbec710a8a22c0041236518e076cc36f931afd48489ab6b02be4d8f5bcf2bfdb4d4bcce01622d5896cbff4a3fe5f5583dc7eda34ea4b5221967443b2a7e36ea0e0a83cfbf310b0e1c9462b31539b4bbfd5fcfdae77755605214e51be51321b7469a82717ddae2f5c7d9b2cffca639f59a7d883684ca3df08c28deea2392f56071a0fa8acc8de62b7ec97352339b5e62a8c8b6e7f66cd02c5b3ef798b0eab52f1f62302cdf82e3f821089e30078ceaafb932783c70cfd3d6b6644c0020d9ece69e866d74f6f2778e3d623de067e184783ac3179e73c5a1b2efd084d912416e0d6f427308c92a544cd213c4cd1153ff0a2e90b85058d5cee36ec78e98c7f605f2e38535332c945c397d2c7cf28875b80067f3442e8974f34077fa13b9aa9100ae785e0f5b90871786f33cb4267be73301e10f739e25b7edaf4fce17b3448db6fa9929de2479a9944cb14160f01582f82c8cb97a25cfa50799c84e096bcbe293b0b3bfe519a1f419fa6c246b970a9c411ed28a30416e2437c986646757e10ff680f4c0b89dc2595f11b2070287ded900ba8821d0cd9d18bb6542cea488da1b6b4826ae5d7ee355e89173c0d7be18d6351185ded480687d54ca5e05b3aa7eafcc620ad42f5471ab603ca52b2c4cd5244cf4ddb8ec83a95150b143dcc500524a3075d70fb2e691f3672d5d1c9d02a837a778a99bbb1bb3ba14534ed7153eb9039f60babf8cf6e3a7270e0272fa8a9df2216950ca0081506f2a91ad9d631e71d92bd0e8b84a40e0347dc2dd4c0977878df40405f7475cd42c4868def1814ba226455c75c6b67e7761672f5000f49e7fc120eabb16f893660310f9cb3921ce287770d1e3746aa2c5a401e121f1a6872b4c7f944f0aa889b5ed64aa6c36d19e9ae503449dc3982060691a1e3d4fc5dca27f2815cb24aa2133f82e7ea16cec09aa707056aed201c28940afe821c0796b68a9cbc5ae592160ea2f0688a637e31a4474c256b7c4bec6b5047c63182728c1de4a4e2369959019dc1e3ebbaf07bad603db672d8a0915d3a69304cc33885fbb491a9f65a05440b4aecd402ed16376c2c4be0ea195df9643ef3d4e0097635f3b58fc4ac4d7654b412c44ce3a3e1c92466630f6750ab6aef152f0221345605c74e6251ca405ab92d39378b32e4fabb3e61f12f4b287255da7b1c5ec58e5fd58b9a2825949c357973f00a7ed9085b39631344b99618f93de98a234cc97958a34e3d2addff5be8c2046772004865882bf5c54d09d38868edcd9ccb7aef9b4247a3a5264a9aef1d58c3a8fb445a25777018b9835c6d9f45a37677f44b0c952847f7158b3c9dc528e141239443761afb4f506c7efc28170da02bc5d60abe3ff9a3bc917e4bda0b2ee9341f5fa03029446c206794287ffe64687135a3628de14a7d2cd22037f614590393b91ce705d077247c98ac3e034894699dd71473166886fc41fb24f2f1f1adfd69a7ea4657a5611f91a77a3199863d1da1afd8a28d543f5728d1605c088060993d97dee714784b75a36164faf82e88a43134789d8be135503dce4eec8d5d79ae6db6ab0ef72a537ffb6f4f6ec8dd35bef9f30bd7388dba505a768c7142113ea7e0058dc1a68d821df841d33eb5344254cc0f16ae02fba3246ee15a3993bd5a1ede45a5a7751c3a42056258c50136d563a5aad2303f00c27734e8dc3d462c4e5707e37ce2eefd87fb97a02dac76809dd9a55a6117615a38e976ddc9e01e91120c820f3a2f23f6f7c4a694406d03e971a7a9d76e044728f6644a74f2aca795b1ac64388883c624b14e1d7ca261a877a3739d2533319bc7e6657b08cb7b43023c8d857e03e4b163b533c6efe9c515451005b40f97c50153809fd3013787b324c0a33b360d7d36c29a1c26ba327eddb2b53facdf7763d9303024d10f29a244b3dd39ff78619319916566d3c69926eea5ab6869849984d3a6eaf038a57a0335f1b9622b91dc982acec66b964e7b2a40c8c1ee3085466888fcbeed40ce35f43cdc1c175b2bbaaa2937d7efc08af7f63bdaadb1976f17a81d98b568c82670e2c1cec1f5f57f19944de9a9fd4ff788f4a4144a13d5542e2d07d94197de18391cde1fe47e18b0960cdff4c7e8d012fe9301e1c621a20ca183956783917ac8318aec8aa7b84c53a52c6211d08f94a4974c76a3d8e391021181ca46b4fb1d66cf041dca386a3829072707acfb6dafc7defd937df9951fdd77384d152094c59a2f06c5873e0df95a06bb68ca678589ec8c87a58180054c3cf9cd56abba4ecd08426324c0223c2d2dfe831095b8d5e154b48af80a212115f5ed59373c0eceae9844aa08745e7c01b56c11fe2b582d4094eec5c93cfc58518694554836aacb9ef8502483142e3927c4218ac0bd12129237ce495ac20fa246803b00581bbd98c82c211e87a69c0ad08a991b45ce8d50e2f547c8f7a4f2c09a496bc7ce0f78c892a865945922d1cd599eb859b6cb2e3646c3cedb8d20fb948447152871556ec96f0c5ee03b163a3c21d53c7fa87af6e25e5a5816d7b1406f037e55a15f8d20ed4bb1fcc0ed92038af9430938162f089a4d1dfb74efd6534edaa84e7e2ee35cbef8c6003ae3ce1b2b802b54c32e420d5db4668735d4a8758ec33a9083a5576e3aa7543a9f67453da39f04da18f9bf9d7f1492db678cad5735f9fbe8f41f74afedf99c47a51db8634c50740ca7d2455b610122a44b4094b63604bb159f71ea7ac990869d235ab292acc314dae740f67d2bc668b5a258c0054eed31d770851450b090b879dce784ea5d479dd39b9b0238bc097d85cf6b6cc423e2d9b632b6be87396ab6d8df54a5f56978fae2ac61d4919faf1523a2de5eb9ef9d24cdc2ce7c822bf4e1d42ad69ad6730ec4841a3107d74647acd4bba3f81b7e10d6271e6baeb513efc24d4e061506ce6fa9ff4dd1cb4b7636cf905c5a5e91fa46cc9255c4717d0589ff3896ec658f19589cab46049cb52612fa97c6941cddab6d625c81639398a2db5940f43b8b16841981a101902521efc58dcfa81d5fb1304194dc994332ea4ac0e0c2272d911251cdbef35333af195cbe4b62bec6438f09a598168e8a06c9e0833ee467640988705b71de04a675ff22d719a63663d481f430ae4446892d30fd24509c8a5f180f7ef2e3e4e05bbdcaf69d1eadba5b2d2a961671c1da301769bece64c0d9598bf44024a65caad014b23b5a84eb24a74e59abd8608b0550b7fe27a04213f6a9328bec3b89507dd477d9b6b26e0cefcdf1193071d08dce3762431423a83379fbab26eb2213c5041cf3212812b583e07e495bc40360ba3edc8db5cbcc8251650b8fcb1029512704909a6f6da7680a5dce48023b8b4c1b89ffdfff6140ddcd6c3a62d0d307f69e3ab0bb82b640028e0fc9a2a86351d77d1d6122ed41894a4fda9480cf3250e401a927d9079ad4c306994dbf918ac2c6d1955e2bdb8d818071e9aa3870ed06baa42eb04d87aa45ae9f3473a9039a4013a5840f4ba068ece31b5a4970037a4a9a3f69fc1b885444d6fb364a99fa0f023a874cafcde1d235f595b0ad691b11d10687cbb5605941467cf2854695c5cd2328d58c22bc100c7c7fba3235dcb621b613c4f030d67d62bfab16f41fc91586cefdab51f3c960b1963d3e07cf16794aa9f968b33f61492e13be91081828abc5ceff5e31bbfdb24c690703ed35a97557c808c6fcbfdd4a277d3711690043c74b7c70f02b397dc8f07104a69ad6cbe17d281376107516fb76a63c3d8bb686acf6335e98819281c9e3d2a3be9620d92fcca820edc0ba61b69ce80375b825cf4bb43c55a1179c607d113ddbe156070a016c4238e4f26938b62d3363d0242f63b1c20161a13ab5c3c2c084e9414b25d71a8dd9ac825b0e85c11f89e80455fbea45e4b67a873b320267ca48d0e4a6077aaefc005cf415380576a7e05a54e861676ad8057e29f2214a3a5a2eba1f38b63a251aeb70859c5657dd41be07f252ec990cc927dc8664521f689b583e4a3e143e9f93c8e723f13f9888f30e20a0f063e7b58da705cc5a5cca43d259bf503f55b11130cdaeea30025b11c9697ab3cc64bdac4d04ef57d516bab4c78544197de4e320752e5dd60d3a9aa56e475af9c746e193025d9698243bd4ab901c074689f7b3afc697f62c269ef43f2efbdef65bee8682cbe955f281284a589b06f9425a9b4c2d1dc9c513bd03f1ce65494419de823ae9d763fe3129298f4b9947362a74519ec41eacc5ffa499810e840c26dd08c2f9bbe2091004284b9636097f8de9b20c0c6ee56c4b6d450265e0ca0cb76c6f8e303f4be9700cf97101ea1e661712148a95ada13947df9938a2f05d40a55bd78f8fd02acf19030e4e87be5351cd790db811b7db6e2d2c618c3b8716c3a4dc156272a031bdc7a938542ca17e0dec1be4ca21e50ebdebc817174221fb39ce8538693035f4336700e69d7210bdc70025b21d75fa11170ee4ca53fa2946aefd64f72ab852d3b53c9d68d5e39081c6aa8fb037f7e0a278473c8b5657dcf9d22237710b74c3fb79d8d8d1e57d42904dd182c19b8a7dcc596a639b4b1cbb38f38cd8f3126f493e5bf9b06f24179ca13044a6768387c83eaf2593f35641396e78498bbc54c2541fabc3f2934401423b34721475705e6dbf0bb04fe724464fe21f5a44ac490175a313458a1423bb40213dd603e55f7e4a7bb1c79100d0f57366738904b552edc9c6cc6f3893367a1068b5aa89bcfa2050b376fb6c6e29e1d2c8963d351cf093b9fdba8e72b6767d7d9404f1d85850309fe299a71a55ded84c029b52d376f2208b5b14a834bc65e1f096a2fa334b92710f13ff8209d70b1d1d9112479ebd44533da9124a387f13a79b0b138df4294167f9540c5c7c58ce62427b98562ed5b4a234b9f4c8ce659b820734f2c37743950e6f61601ba7b618dd764a31743a8a2bfc86deeb3d9fe900207aa8b94db21b0080bd7da2c5ce8d12886b226125dcf48cbd9f7cfb93e383f08e626dae6e43b34c12da3bcd70f865d683e300952dfd89d509f66e3d34b3fee658566bce4d7df14371e40f2f08518dd22ec8ff49a516e10562601812cdb5c5eb48f8782024e187f9d66cc0bed64d1c9f51cb1ef51db146e749e0d73ae0811d19721a90cba4922b252a4cf32b9d604c4999fcd8d0154fe12396479cc8d2839bb0e67d881a3354c1d4bdb2d1991f9455200b9c0405976a0b6523c6934108b0d4d81320f9be6f1cdd59db21bf28e42d0690c3b6965c41452550768bae841d28fc3ff27a7f4ffc05f7918b5f17ceee0462562a8987a3e60bc2f71269e2c4c88f347f5a57200012ae6b03f590179277b393c9d3513d0377b8cee653ffc7f701763388e4ae093746b00cd7690419628b6d4fcafce7a44900646fae002e321e8a4ecd53f5bcb150abbe1256c5e08604f9a994170f89f98177bddc0ab7ef4122b6924700c74e2eae5b14377dc95fbeaae9c55612fdc5b6de5a27a6e99f91e22b863ccf5bbe87aebb6db35cdcb7733a5e8c32ac82187d57caa578b17200b2e298c50a6b64e00ede9c4d23b58b3f736c5abd659e27d7280120d3e9d3f4f19944c9f7f479172225224951567257deca91452a7c295cff3590f4a6b8805364fd36cd0f91db845023fdf4f2e71e01112d6acd4c15270bd1cb989db3a13a5a3160819a4e45e17f4a22705bb984f0a357ebd8896c90213e009654b761e2b946851369bd73c5fcbadd637510694ef98e0d1dce2224c0b0065f0f18b7b41a00f76fbfe183389067f7d60b19cc4842652e178a4033fa8271b667cc6562a5093e6d6c70b4f068c7592c63966774f4f102bbc4eecdd772fa4074d151d96e31217468190f855f25aeb01ed0146e18c50483c6eb08530d3f9478e7b5d23baf211b7575051ac515259ac9208aede50aa01486d8ed25c299634dae17fb4263764fba0bc5c4215b30e1b3a28d5b48a11f7582fd00ad2924abd8a54060d3fb24758c7f542308d554a02c4d1deede8f6ae54d6415e1ba4856e51a7d6f3f3925cc78b179a5250f5f85349221d6813aceb7e16adcc1ddd46f721cc643c6866a5603827d8fcaac03f12ac81a7cc558af0f3b4528e8edc0b4502627478127134e65c40f3fab5fcb27208120fcb82073fde052aef2caea58c75b62d8d2eea89032ab70e6207aeef817de077380d89ef6187bb1cf0f0b5df39f9c04df3822f67c8bddd19fd46473a5ab01b35a05f3c25478e3e767dae59ad7a55916923de185db5fe4ce01459e11d3194c738dc558093930269da31b1bd14601144bcba4f36d01f6b3bc4ecf1e091332b492d71ad1aee95f286b562706d5c1d121121b6dab7953aea1c14678b0c02d0590787c147b1c78cc039a58908defb2c59d7dd3608a7882b9373d1fb799c30619f4d21262ab8ed5a8add5d23eed0fbe829adb3ba598a01cfc33294b9ca6090ff74a6ee612e28c0e72cff55613d05dbdabe4d319ea2ec123bd4e1af70c8cc9edc6238c459eb2b3417b926137cec03f0ff34dd472c621bd0f2913710746455a0a3c2599b1caf46d556fd6dbf6cd83670fde22ba9d5e2c8339cc21bb5564b5088d9706c721e05d9a184c3e8848d21d655aabe77eba9b388f2af665c2a2cdb9bdde81fe87a6015496fd33fe0f5a539362ba92e4a351e3c4fed55d81f5ab74bd17f47be2bc28a913a21f04397ee3cdcd84ac995ffa5544ef22b79a414a667181431ddca686ba644853d62df15e3d85359b0cedd7ba3082f1ce487fd7416d3b10fe5cf83fc6286ff854a43ba34ee257268598f2f569a367d79e2316dcde8843c14cd2ca6dc00ffa0a9ab6f41e013e94cf7eaf8f6119b4075fb7a5d77a6665889460e9741f5c0f74b1f4af5f6c8b17f6eed7ad6b9846bb315230b4d8e3ea6ffd77b8908ac8b937ebe97ec46c3021a03f59e2bf571ca2da7b273c96699638bbe320784db4525a9668550da71d6e83d055a9c971bfbf0c873277adef88dee0ca196b2f351406fc2cfd31f771e2948eebeb4b9924fb7d527e41dfe44eec12c43e035f6f56e0da84bdf887b3cf4a95cf51c0a339f0e833a7661aabd02a332c501859cf6dc152022e3a85ece854f8d1a324882b24a15c191b7526e9b0c1ea81781b40eee97b03db2a521b3f6b5a8538b466cd907b1b9326ab016930f4b283e9b23090dc29184f7789218228e25e89b152c1eca186a9dc816226a2a163b336a2683c24840ebb1b7c75f5d36fc235aae9eebaefd14842d2c62c2fb356545cf65487fec79c770249404f2629ec9d268ac667305b688123306b7f71fc8b3622201b73c54881b8385f65707d7fb766086135023b4c028a8158715c40065456e26f16b7fe88d77171efdd012fed3c87e8df728f62fce472196cd056dc1da4bfc2809f2d30f41ce3c3234c8a1ce3933dbec9aa162bb7b569f5668aecb86ce47b27cc2f817b74876f50355e1717742e93c804563e3046b613aa2b3ac50f970c381db73abc2e68bbc87428dd73fc301e91a73481e957e2a045436e9353a2462bfc88ba81e38a2b99d41c320f8d81a4bdc7d3dce5d061f029f75874bcd087afc773793ca019505ef907a18b92bc96c720d86548c637f0720806da1e759b6e8c198edd33abbab741369e10a766b2549a4e60d891a2c6b3736b36086db1405fe3996d56041c7cdb0f8477dab3eed3aef7dc03a9a4a852d2685ac98b7b87b4ec4f61f309396458b007715c0bedff186166e2b8350880dbbf10605bf676f0e7a9ae15063b0a9318286cb0c63dac95bbb4aba01cac3b5e95625a1ac385bd7e0809a5e800ca78b5d9895be333de948e4fec14d208654495d922d9851db1c2c693ed17657ed5a1e4acc5a9fd5615eb2d890a4eb7b4bd26e3e8a37ce9e8aa59c7567cfd81e5fae91a7d9ee3769414503424d61e51290b55cc5ad7f2862d249fbd349a45cf164f6ac8b39eb5f69402871807507c2266736e2891e5a3d72641462a34a0cbab58e6d52ea52e89d6e6e694257a22829001ae63011f4cc3e1ce97fd0692b09ecff72f25ec66d44981156412b7e880337c8efddf9eac66a3391c188e68b248b3f1bd846479279c7f882020a15511b63c7fa7760f866b2f4369c41d126f23d643f70540372bcb79688717d4a135d274f02a19b9f5c67dde498737c3637d11ed415bb760de433250b92a4086658b2d033ab6e5a880f3dc3df6165a501e63703932bea8403b8005612a9865b2edddb8951ef313e6c6ba5435b4b3a8a8cf4ed78ddaaabf77a7f1196f4c5f8276fd02bc232d2476c315d8cb4d3961165def09bdce0d7c50a5a4b201b43f64be76e2247860738768a92a6a76d534b811d97c326d4b03f767e77ec350aa963ffe47f886944c2a0a69e88afc0373e72866353deb35cdb794f05e3de60720bdc875c05ed4a2549e6168866904ceb2560cd44e9a954e0b5552f1f236b89c812a7744c3dcd28d1deced5dadb72198c948e2fe1ac2231ee0c3b6e07b2a329e8a45cf877e2bb91704efe4f20137a062b28bf6726f5646564ad05252a3291942981ca1146b56149cf4a7c9592ee3031418ab803890d3139c29bd901883379d8c15b72bf14ec937ea0e7fad18caf373676e1e1527587cbe6ed4ab4ec7ebfbb99537ef7d53aa53a6ba4c81109f88444c9b8944914cab376db358a5cf6421c4e2748bde634c81d8425ba72d62ce98b0ec1ed45c8cc61cc3103423c3ecb2f7f81b908448f8f8c5b0e686f53e722768e5b393fdaf0811fb985001ee53cf5bb00e2ca2c27b22a23792c6a41e84131a8ea07fe33db7b2d5eca683c6582b960d87258790bb5ed89c37b156df77a8536ca24e1e8bd938be95dc962fcaaa5aafcbdaec18100720e97267ed90f3e24fbc8cc97746ec3075788790bcb90d5d47756f58b55b2df2dadcaed55d8fd97dd44a05fbdf14d9042dc1b4a348efc638530bd316155d46f4aec7bcf912fea712ef80cb4761d9c4e7a07280d8927e6d43b843509c965d71a7fc4af651a791113ee918d43680542d67fe5404dada7f69af195c45b5572af3c20c5d5676c4bc532193092f706acad95a422fd112147f495515ce3884aa80853ba2a9d286ed7f6b0f2c420e4652f440f39f315a38f6e346ded8db5d21ef59dacc12df0fdd8bf873a1bb2c9a0f8f85988268017b1a8e55369b7b339f17ca9795719e8dbc06d3cc590ed85b1a4b248ec178591913547e52bb3847dffa67db7851ee86f76568a9cad0a18bfc5bddaab58e427bed1a0421a1bc4320b1f59f5ebca438a39d5a109953885955b135d4a6a2fd5624454ced55c9e83504baaaa712e53f3a20b584696d049aa87de463ba38ec6fdbfdede3f670573f483675527c7a4feb2b336d140e30da1796141f6349638093972d844df4496d52d6d936a90446d6ef36b338c2482eeafc1681c5365c63e3367fdebbe61df0303e46fba53fd6defe34204a6c66cfadc9dd5c335d2d02d463d01637171f39d470c462da219dfa37deb905cd9f791f80a26bccbaf65ccb3fe0dd77b9a7b670df6d1b74c6c5e7adfdd7997de1a09b444d4dbe07232cace75a7e5295bf931f145ae0f9b3876784b015fc2e1c553565b5cd653113d383599ecdd3fc8d702d1406f5bdf9d693f070625363c9d46b3bd6a4157f793c148c19accce7fd71b1d3c938ab12049bc06981e2117eb2a520881d0475c6c209822bacc3c2722950504231130d21b64f0a4e52bbd21162af2b33b1110c8f866806e2626b590841e4c691ed60b35909b47331a27cc944c6f88815adb73a4b15466a01132a01703c896bccaec3cd4bc724caebdbc4e824404a7d03e55e34382561245056308aafc3419d9c9b46c619fb7021c34e95ae958cd2b870778ceeb0f2d6098efce9f72ba550f0ff9c89eb35030fbe1dace098a327d8b4d101801503f99f9172e9e4e1194801fd71ffc4324e30ddf67f68d8249fb0a46e1e1fe9c1b441ab4fabb7caefbd1a43bf90444e1feb29f6f3666135b0f9813121eac1900f6785fd5592bf4d6769d0e108d70a0bd7fc383b2ff40837e822dbe0c089363a0b8298400323c9c01d1022b65fcf6af850117d3f3b7a426cb770ff85be7f07c594643532a72797e75b349444613810063f916c9c554d9e290b9b1bc9d886298e67f11f2494d3412e8019a5710599f06626a88a1cf527d85cfffdd41aec65b0ac8591aff4698ec168a1420582f0167e0804d2ee6d63038eda40be5f1af4843f836c18bb404481350f937576e59823a5550d2c0b82ecc052ba745ad87760f60d557f0c58a62cab2fa0e8fe8f0a5b69152785941fbb74da2bedb992c9bfcc53deb116adff288566e13416632341230c4008722127105bfcd00f68fcee31c07b9d7576d83a0f8bfcc2f0760d4983bf19f6fa83c3bbdb9a390bc52eba29f0c91688d45f57dd5a3df1b3a0b12e6fb14fc76d1232351ba95ea7cf55a480ed04006b280b86ee3734bcf446b0997c043bc853bfcf6839df4c4eb152f389fd9a6017bb0862a773278a0ebe9ebf77a893cfe157b18de6cb633eb7b3e0627ce7fc1446eed2e7f6ae6aab0871260c82f9c114d4d30db3f56e68ba0e16c65a6ddc34b2e0ee22f5ba375a45632edacb9e0f96fc23a799d6ccc9def30aaf7fbaedeba0ac135218c0fcd90a884cc27ad5c8510a960efba2d5ddb3d155b90b829364ecd6a5e174ebc8c497afc822059867cd76336007d0641e950e3e0768eb96337d5c508fc88857d03a6c769b6eb1c7c4aa6c63a1e0ea9136e71583d32b858d0962e9f9207af0116b1efee4e87824ddc3d94a3341e30d5ac8724f7da5be17ecbeae50f45c581d85ff1c066bfba6a61318cdca18ec0347f5066bec4493a4b1c57c662921ce53f1551da6e5b14b91707c7e5931533f329df91a3a631af141b8eeb433d0667e502bb006e3817addb44aa9833cc173e399b3bda7581c800d104b93c383d6d7927872de6db2197355663a73c6c807824bc9c5aaa56d6ca4d3de3427e58f821c696e66beaa57acaa618900ab7a50b07473d8d10ec2fd671498d480124d2435266b40c5bb989d5babc307e31df25b6600505d08c83b07456df1de4a43c51b8a60c35b1251920841ac1f50ae982315fedb006cddfb42fe97495172f1604df42e0f145aa328e568920d942c6dd448a7f86b84bdbaec393504b6f9fb775de70feb02221d05105acb4ff0decbd8fe0d2d4c44fd0ccb6b08474fe5fa0e981d1053daca1ef1ab17c9ec3cacdd6371a0ea020b2c998f33a35c1fd567df85bd7f5fbc241ae6ad11eb70461b75c0cc125e0a5a4e9abad1abb7847f92cc27b4b5b83e7d6dfd7a715ca273dab91de17aca946bb866604a59162173df15aae43220597496a3fa0367fa31aec1af1fe91dad69471181d28beae025ba1aa8b68abe3910882f9d9c64b83e8caa194340d8548d18212f8669e8f7d341f7ecb7af973a39bfdd3b7835cc59b2dff36f72827f01ab1195d243d5a958c6c5fd4790c8b9f0e3d3e4388c14189286c31cf30ee0b0bd25d0c58e8670144c9a3bd330571583fee8e4517f73544a2da800007c05aff93833676dc2d8bfa412df0051c2f5a7e22167a5e738cf171c447baa43facf4eba97463fb1e0506b51add33cc2b06b3afb3c96db41225a7f445fd72efd2689f5825777af3e74fac56d68230a28789cba77b44df7a8541ee3b77c4be430722af014c656763684ba99e668e8ebddd1ace3d3a35aac0beb19c93f97787a6c0fc299d817731653613110a03112aef5101ada761654300c59604c8f43288b00cd29a184778345f059e40503fba20775988ef23624a5162e12a1cb87928e242cb6b51d90ea328d53dae642bdf2e0b0741c60dafab0f9d4ebcf7b99b2fa67d9cfc581db9adcefa83f211910657aa38d169923deb1e584456456734b1ee7b2b6f010df3f326a6a5906425b6a8a59e276519bd2d80f4c7e0064b9730da3c9c02c4363e5c4de2234cb787a7bebb369cefaf06d06b91bd511722b026deb21e4fcd498b8af6ff4ec0e718d0435e54e0e4db7e629664f8f508db2f002fdc279bd20c08038a5f1636fe35cd996b33857ddddf5981407a90e82e39afdcbb9afa72624f1eb9b8d5fd4c753e6e90de3ced72bb9d90f6c7d4da70ec03e19b7d3a601216a75787540f1c6c9d62a73dda26c04c89b20508e1e648cec332466301d05d0da7e598a85609eb0c5d06b81a7b27974e0d73d2a950f923efa714fef64f2294bb2c2a15d76d22639ba87b13e8a61225be016e61ef2692a6895a25015d1514c304ee4f885b13de7302742478151511674d7dd1918a895979023a27249609bf33011713dcf744e84dd0ba09e899901826fcae09b89ce03e13a13541ab27a077426235e1f726e066827b4c84f604ad3b01ba2a015a02f46c6892dc688be00063cf1b66508fef0c55dcca82511e922aef5b5ee7e0124fff2b4aa9dec7c2f44f572ff2d474310b9712d5e226da8dd5741e33c365c156b6abe436b6648894513fd83d210127b90484e8a66e26998406c22f8c1602fd9c00ca16c92d3c60b024e93033333333333333333393fcb2c66fadb6acfdacd5da9749268951fcfe5d9f8b9875d8524a49a6249380fd5184e31cbc837780b78122d427b102b502b802a7cf5315d488248e5ea5731ef9fe1edd48248ce2bfbaf39bb12d0612c8f7c56c3aa8f8c9fa0837dce4b5ff539cdb1c8129992584bedf77ea1ab16cf57de88f5d5a2b238cf1461681c61b51c495d544a4c294ca247275597488f02dde54e670a31f2f8738e94b15e4e6fc59dc0dd1c6bc98d9f85f13049142a4da9d6c5484f8e43942d86ee1ae3d38de8b0f440681a660af7a31d45915114431de4820b47863cc8800228b5704913f60f146fc809229f606dffc9cbf8ff4e1d2cd2d7e23c393da32227cf8cc4bde673e45f6b0084dadce8c497737113db4417ca9afffbfe7bb88e4e1fb1c59a73b098d3916c183d1c27e54fc144d08f14372dc88dc81fd919736ea94dcfed8813d39ff22339c2511aa835f9ae4995e0e1d0c1be7539df44bd63990c81cb67e373f9b3519bf2a22074fa9d86b993ee66b251207b4efc70c71ab259b200287aab733e5206d347ef78662eea8f678ec864c7798922af23ddad906f45b86a86e06126183b5371ba35e8b858fafe11c3edaee6ff711359894fce60a23d3c49b66104983563b7b19eadac662d06036f5cc6dae1ba4a62267a8d27cc5cc7fdb7a9e55c40c565a0ff5291f76445f9132a43965d5922f33d7a508191096df3976429959370644db4553d16b414e4946480d2e22626053bc52a25e414cda168884a19bb3d994f13b5cc45f8880c1b81666d184a5502ae80ba654a5d3940a6253c8bbb802651146c40bf76667d6bf4f429e7607912ea449466bd694fb46df5c30f97a5b7a581535aac8163819be34eb7767fd6fd48868a19c1e7e76e77d748359e0f5334feb3555be080b9c34bd99adef1c337c852b78dfe7f71fa58e58813bb910b24fe5bc30ab804ca1d1e52ebcc8ce45a8606cd3415dae866d4d4de14ca1174a089b1f3345a480cad5a4f489115e4913894241841cad4e894061b3a01a5def62e4c7c813924159dd9afc1965a98f48751287fc8787f46f11467fa0860ab8f0f070407285332e2f57e5d49757275678f38991a59a7455b23590540169397ad7418a09e973e001384066d8d8a2040915f668d252949e1c0ba5296c2adf63df9fea5b339182f779fb1e2a874b154fa260b9da5bdd5969892c81c26a5ac545c8750ebb79823aa26d34742771429b2a5aca57f858b26c4296e3b89e3e1daddc6702f2d27950f9f3ea7cb28463c54e1d15c743665a09ac871232b4d33b8ed0a9246c7249909089ca2265082447c8badcb79269c65bbd8bc4089c5a8a80a98508a5380fb5154d32044509b34d7bf5561533231182593bdffccea6fc7d82c0754c75f9964a8070c54f9fe2fc95f58a5a90fce0144a958ad67061f1f1811aa3b7bf69d403edcb63fb46976e35f100a162f9eda5576c9dece0b728ebdf6ffa7cb33a387c9249665d526d39cf011ebff16ab46f121ca07d3a3d95a84f4a7717486e90c8d67675983ab11d1b14b4ead989eccd691a122435d8c75bab642571d67242038366c90c10cd12191c9a591283a591c0c0a02b25216e27ad7fc491bc00b964b1fa4b2ce8bd95b8e08ea15a5ae12c16445a9155aaaf77ccac4077aa2ea5a163f6a8aee2daceec984b4e5c4b55701e736696e56dbd2515e54fc14ac87c675b11549841c936f149dfb4e99153ec9b74cecbfc9aa2d255a2f45f2dc52d4a377dce07b5324981484d316bd36a6adf8ca24a253eebc84c1469be9c43ad625ab12b14660dc750a47f7eca9ccbfbcd8f08284ead8b19f52cd164faf0f050c17f11f9849e5395c7e97b4afd79c2f83dab9361c6432d9d48949eee985623334f9c40458bcea0a5e432ee914ddc9f37455b3bd91d4f57482005114d78eae32819fe99174a99a89334b5eff79339b4077c5163460413a9c7143e27f1d162889740f774e8a89c4468115a221b391d9ea9c4a91f55c21c5efac7d2fe890ea204973aabc73276d0fb27d18ea78c0965fc100baf2b918e226f7ab6749cb7124a6829fba7522ea15dd30f14a2855b20994423ab577b4497c8cd92709456c9ce398ab25447a251b320263723549690c055c38e78a577d2d323ea1337d12353d212d511790a29fb6b418e9b8546d20894fc954c52b365236144b3e24959c6a4458c9b45b208343be96063c26494a608a38ec57b4993b12b284944a1de2a5af46edb8c22e2d564a715c647b58a87684db6a36cbc1c9afbc410c7fc7925f48f3a25733592429cd2a7eddf3bbb134a154808a1e9fca9f23da9d4dd490681ccdb8dc5d670ad4e2208e5536aac123ab9c84f1208f5525f9d4eb56e39ee19114800f1058d55f3c93f586932897bc74c96725a247eb0bf35eb9afa50ce1bfdefcfd245c207ac4ee54b95348d5f4a4af69076cda639ded58367fa5e4adee53da5247960fc6386c6e69a9afb91e081790f4a43dbf3e40e46ed14d4f3259d5b213b5cfaa975ee2a1e4aac03b25d7184779e0ea7b8065322cce6faa2453207bbb734e6a68dbb9543de0b2f6accd8229183157acfb5e46c3fdc8f38709e931a1d2d32ff981f091c4a5aff4e9d9bdad8a4e40d7eb23073e661c7dead81e38b2c1237a849fe765a1aa18386923658192c8cff694bcb9b0412369c5c54e9e7bff0de7c0da55b352127b5831e5f0de73965192ef6661ff58b240d668ee5d6ba18ce3b4bd060592ea5c3837982e40c59f891579a3f60246630b7a591496aa7e8c93c2983596ea69db91bf6f364f8ac4f95e58a39fecf31949e6f8396f0dc18b30f2462f0724eef215e6977f41e1e1f22230943fb2394aa8d394de5f4460286e5babc32df9d7ce1371f15af9df3e1e181507b0131fb9cff4b152b170c104481a40bbd65d66d8c6bc285d26576988bb39de37f7878ccf080172013f0f0f048b670f78ceb9be97ac9540b596b52f9316fec69d3878747480d1b326c340d0a2459405e594e37aff9ed54122cf42a67c9845c530dc88205171656aa2880010a0863068e0f2f40bec0a262a889610b701c377284102000611c2cd0270000386ee4e8c00002f05e740e2fbee8190710c08d90f71ca846880d0478000027e3001d5438101c211f3766c89081808e29d8a0e152c0f137a2f060d4a041e36918a0030a61d8701a4fa3001d4f38101c333e6eb4130e04071820a809078203d5a09143860c0474302137f73e1dc39d6a343fb6580e0f0f1a1f22030c102403f9dbb8e1e171e30b101c3340721c19213f03c4068d1a9e818e25f8a92ded6a56df68ad810e25a0f992e74b2af6f128682e32d091842db916c386161d48288b668cde71db92b8e3088c66cd08850c73a5a22bb7e5cf474711d6a05e257642dd2f47042cbf9abea9dc89d43f3e3ca4b308d1e26d84c14500d0d031044c2fdbb8a65242b92884c252544a42f368fa5410cae1fba6a9b25456070887ed69dddc5f3a343f783fb5494d1b83bcf87d787898a0c30775d98765f6f7c3c30307eae8c1a1a5da35965a0d137d78788ca08307e5bb34a2f379720b0c14c8800004bac040175760e00a1c393490be038f6a6c400058e8d8419b397da566bfd6b4a140870e0af2ba7249595c9b73d09ebe1c45e4dc654b1d38b8eab8419e2574529e41364895e87cfa83a7a306888e7bdea732ea85d54103535a8e9964ee71f1ad6306988af42a152a1674c8a0cf2f323d6a5dd6907a470c0c4b418acec9f4f6683b60c099e9969f6ba6c60d8574bc80afb96df738faf6235f41870b5a4f575a56659a35562b5055f929a61cb552c8d645c20a834c9ee4295d9eeecd5a05aae2a7935a4fef9cb540a20af5327f50537ddf666220494529ac16a3de2ecfe1e2fa5d4e50b1c66a318c2ff71575a61024a7a8c379cce898e9d36e53683fea5dbe5ebd5e530ae38a0c7d97dab5e3a4f835a87cf9ac7163ab51f4e2e71983278a3587b29caff2db341b0aebc564e6b9f7112628926d3f11a398bf84c6685242c72a41e209ce558bb145d2097463cea97ee68f84138eda8f29446de5c8e42638cfd549576ac95f8d2674d1a257cef47ff460268cbdd766427998685387c87c55724f974bdc39ee0765e7e1f5154bb0a5fc0a82baa8d23306821884882186100101b5a403e208120423390cc44014a561cb0f1240b0388a05410684180a42180631c410420c2102420c44c4103244b93ab9ab56a39d41afa3e3030904de5ed8943f2628fd6db421de90a85b0a3628583e6f9bae67886b34236454443c09da11e6f229f2d99d0ce242e55d03e07a75ac2251eeb55002a18e14bcf47cf3139e04ac7e6c8dd00d86109c37e7b5694b0e4fb4dec8c796952f435e00d0ab87f804f156e60305427eda73b0a12594d8c8926ec5563b26d5b160937a81f25a6b43a6be7f962d124952020d3d4892ff4b7a39dd6a51db7cf4863b2df3886b2c47d2a6db3d18e226261df76ef543e72d70831301eb5b2bab70af96531a85f074269fd9bc1fb6e1040ba6f1a55024921ae6b87e921a575cc20c0e8baa26cca59462ef61fa084ca909e007bb6e02931cd953106586a6d1ac45e19a87fa87d8812d025cceba5ae389bde0ac79475fd87140dab9075dc23024098df8bd1e34c192820669ee631924f1fbb36f32332718e6c9766b1308f54c9a673721795a1b3664829818cdc9f0e016c30b433d7ab9488af568d97eb34d9d2a3fd905148c02ab0860dc667d21db82011df8e4d331d4f4c80690aea48c2dbe09256efdc68add5075134068fa4a74441cbdd28ed37d1b2c570f8c8224f9dccb75e054d9efda4c839ae217a9bfcff3b26a053889686a4c305e51e04d95dfea850336a76ab349c090f449cba1cbb6e12d63e46c7a8d397c5b10cff37223bb8c74268341420cbb947dd4a74e24a0e717dea018e214aae760ce3fb5ddf19a5d1d8b9c20d390699e47677d3a056b84b2853cbec1ce27bb20f05a426f164f8e108b2210f8f8c86450b6600738aef97327e9a44c60ae23b0c3ae03b41acb499dab8d6441acc3f065015aaf8cf3d5333334b5ed22cbc92c09ca179452ab94f59c4f9ab7a409a16cfe673673005e7c77a48559d4563a6804a052531fe6826b32e5a2f9c36875dca37314c284ac0a00cf0262677d0d8680266345d0101c8ca6e5b00dcac99439f94af6aedccb1d10c38f8c5603430a17b90bcacf7a809feeac5c46e6efdb007a56eb68a4c11c3f43f41ba7d7945d0ad762cd425a3a35c7749698d884c44f12e652e0927e99d3a962e37d1108fb1136912a0a8cc043add05b8af1596ce6014fa4e32eda1dfd0f9a30eb56763dee5d7362b81d6746a44bf1dc3132b0222a4bcbfb2c1117baf82980bf129eb9fd4d4d7eac983dbf6ed54ef00cbd6a33befa46e4cbdc1501273cf6a16cf78087e8780a00ce8eb36d4cc20f9c8bcd9f9c2d50add3cb023358c4304b16945832f29cb5cb47cf56bb362fe63786598f2ceeae0d9b093fe2df083dcc421b099ed91fd77995b7c4c82b6440fb26116e3e11594fdfde1a02d5e4cb5e7107030045c73aef75c4a2fc8f2df23e1c1c2d34250cd9e3d0b071c2f904cb7a39ae171ae438a7152a94b5efc154f977c503f9c5f18d24862b86d580b7dc990a984b4fa4847fc1f0c5fa8cab6b64a985880d46355d6406bdb2b150d2509fb7573dbe6d4fea1dde4a9ea2d85e7e2f8d422568ae691c81f21a9735612a9db352c3be4954fa8c8af292de309204c8eba6bd746b88fa2a3dcff3013d163c3a816331345d8c50dcd619e0c84da5e4f623ea3b06efaf1883997fde10215e714ed7ead7a97d84e2bb113acc64a7276313090fdbcfc38513b4e08befe1014c2b885bf0bca6b8d0ba5e1aab2088c11d8d6a9c89a86cbb8a96a8b6fe99d246e606c6f36c2e5e718541a925e0df5cb5995ef42ff29a82e53006868230fcd43940aba3508eac6726701cbb77409b993a298bd16f0a609028afd8498fd6509ac40b594150b4afe91b6a615dcda4d721729f666154669800405904c34e96ca5084e5ab24f74bd2bab4a2ae207ba1b0d57ba957b8b24c1f61457905fcb0816af5db086a4a8fa91e0e76a23c009c41febab11d466f3dc76d6b5047b9c0e592158ccb1c989051a722448871ccc3d183e846ba5d24763f3f9cd4bfb7577b158bf8d817463ddf03fac4140ac45db6eceb9896f76216adf8459f02cf89aae0cd03aec11b6d05dc9b5b823fe0280c9fc0762ffd09f7b9dd4aa8aea24b9adf9229e7c3dd98863e8818b18726f1944987eb1066b77eb4162e098a2e96e7f913ba4509f2769f7d4561dc0e3076f0dd79ca3d15f31d469cb7be7dd84e7e35f33ca061c352692842afb2352ed25f1213c0d3005f759ac4c22d65d16c332a4f1119b5a3aba3e74b4bbaac6015758d3de42496eab9689fe104afa68c52c2d4a379cde418ab6605cdf17568c4f845772dc6511d9a38ff9ec9ed57446d65f72645312a5af37b5bb153dd374f86813d105345ccb7d79effe9eadd060e3233c05150ed1aa21eabf51870d28a8bc44c25e798150fa7129e4c448e9bbf79131a36e978ca7074fb68584cb052b68dcaf444d2628d1fbb7e5b3ed61959f5e5c2773fc3d623c67b3986fdd14e3db3526d0872e03d0c21ff064ab4c3d95af58976eaf5b7d3ae149f9de445e3d4c81eb215b33c34d722bcaa39eba1ec8454be7b199e12fd3dac63a7d71635e6caa6ca16652337b4b2c56c4440ed5f828d77648da905bf802be189e63b1247abf344755a7aae8d7fe08e8e0ec40000ee7c9ef4823dccc85f50f58da04c0039bfd227775491b1679ce5f04ba7d0756f2d9eba56368a5466762b69a1038ac821d4bc41292170293e46e85cb4466f7c6dfc0f689c88d1cb5e61cd3bb27fcf1f6474221548b7ee595ecd41ea11fd42eb82dac40a30b1e3c78cd915fcc202032bac7610b9593da7477984f44e6b00255820c1d440a196d82c0225c90d5cb9d65299374557e409dadd294b9abfb1ff85be86cf5ac4611c1b41835670cd06c6678aea20c1bd4cc97392a3c8f561d44ef5b94188f12a6ec589ecf07b33feef671fbef3687f53f0f9f5542e8fcfa763", "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd00586cf1047e0a469f1357205816a7035dfb30b8d4b93aae112bee7ff8a97a5bb9ffc2c6eea0614136db70c733055160e9c5b710762b51e7a2408af0fff5c1a0d65459613d951624f96e88951df7addc80ffc027ec8b9f96b4bddbdade52ca94a40c2314f212111443fa696a28650e079d7294a1ce8dad9cdef43308792777d62bef1476368f0ba71af9a51839e2e8e8e8483c7d679b4ebff69a82e851b662f4e2a9a7a55d4dded3cc85538cec21cd5ed8ffe3dd89e6f90d9913b584fbee2b018862d0f94703fdaeebfea7bbfe04f093e7e431723f9f087d8e1bc2fd4fd3af06eebbef3a53f87d473d53389d90bbf64ce18c42eeaa670abfefd0f3299c326757a06c394ae71d8468febebb1f0fe0f7f3db01fcfea73bff884c31f2f7ddac7e674c6305f2f71d763685138ddcf54764764192f9c342fd4241b3469279a8259b7ee866efbb5297baf48542435e36bd57f3fcbdefbc3068863ca78ef7a570a4d9fbed3da1a19b4d36d03172e3207a640a836e727fe761d00c994e9dd27be1d8b9f41df5bc707ba7617bef7fba147aff8541f4880044b9f19c3c4ae14873e97ffca7e793c2f9dc38bf6f52d4c560af706e0f697e5122af3920740400e973bd9a2f60f65f7df78c2b1edde3d91f2423fba7ba45459ac79ceccf7910e866ce4863993e2d02256b99fefc95b754fe99be3f8579cb88d328e92daf59943efd2743ddbadfffd314064e5aa6bff2967dea7fc31ae2e02d8b57cea24fdfa81b49162b4b48c1156e30051362dfdc8d050b4ec8ddbfea151d696e3c7be578e4e62caf78d021e88fab4c9f3e85754f3f7d9ac48feee9e935795c65539e58d608c2b8a2b13c715e4d54db79d0cd1f20d86427cf5ed5a761ed95d320402e33d919f23cc48ad18bf7ad5cfcda11afd0d850737fcd8d696ce8b7df6ff110cd34c75f94c89b4ed1cd1e2096336a79623163d6234f2c661821ef788b26d19496edcf917e20db164da2599608cd14464900ee78ebfdebd7eee9aff87be578a4b9d670453f1a1ce7f4ca7efdf716259d65df8e941c3fdbefbae991423aa557b6be875ce8f5ca3ed72bfb5cb64f8d5c99f4b37bb827e1d1ff7e77434af6ca7e490820cda41f2999edcf8f06d28f44b992429a3df4720d3b7361aa5716ec95fd11cc76ce328565fb94ec9efbf6e9946e8124490621daafdde37f711090cb1ed6f4ca7e47bdb7efe1cc39dd9aa2fdf955acea95fd54008e3bd9d26cdf080fdd33b19841cbf687baa7befd1f280c34db9f5c1e77bcccf6a7b7a8384e2cb3d68fd38b6c7f9c64642b8ef38c4c69d45ae9e8ecc2fe58f31cb99ed1cbf367b7fa471e7906c9f3e714327b6af0411abd9a79feaa7bfce7ffe89efaf3b7b09b030067962abcc8a83cb35051469edd9a2549921910c79abcfdecd614c79cbcfdf45609031c48c3082de0a20b2ac4edb9eeb179fb8d8a1279c323939d7c31d72bfa160b00a479668a6b00638a5ecd4cbf766b8af43decb0368b3e0da02acf520a2ddf3cb164a188da1725a2de50489949d14204fb472ebbbffbbbbfbb14a3eceeee39ce840c0ce060e600f6cfb26889dccf79e08f2e0120fdd940e6cfae9b22384b0cc0be7bfabbaabaa73fa77b6aee32083172bfd72d176b1e79e4aec9f3e98e938e3e0dfb917433f777f49dfee8f4fd27fd25fed31d0d3b9739cafd6858f357cb515a4e5d7b34f4fc45b91e2d47f14c5388102573d00c997efffc6ea82499690d20e975cfccfd1df5e614427f1c3b0f7b409afde7cf8f06c75cafa60df328d319ce9c76da4be8669edd33f6cfaf3f63aa02eca73fce9fbd9abdaadf03f6cff79fdf0dfd4b269ebdaad8f14f13353d403745b0fea8caf677ba67e48274cf08aeba67dcc9f6edffe81ecf364b5112d97e4db75af4c9f667f7741e7964fb60f7f4db4f758fbf7dfb5ef7d0b73f732c5e32cb3c7188287d75f367ceb893fdbb19d2dcd16f48ed15c534f4671e873cd7a6df108a6ba83fc399bb6e7e345c3c7ebecff53729aaf60a8f439e4bddd66d24121e495f7ad2e681793ed83ddbfba7ba87f4feddec95f7f4a381e6da2b0f8fde97bc70c833e93bda93ba696ee1cc5d38738914ce5e8daa3c9ff356951767b3e6d4196bf2c4e37dfbfe9dcf39730d479aa3d83c1ac91c1eb279fefc864c2ff7775d7bf3bb7824caf76938c391cbf3fd9b14357b35d63c7fe456f3bbfacd89f27a95d32b7ffadf2bfff90dd9fc8675fc210f79be3f43309cbdeaa7df909bb298eb5583dd3373f6afe1ccdf3df3fd396f5592244952f45f4d214e7fccd9c91387a844ed11ddf4016749a29167492e917de4599252e4ee3473c6cffdf383011c6beeff698e3ec74d6fcd668d60a63f8279e4727fed9ef9fdb37bb69f5fbbe7fe7cae7b669edfdd70e62da4b99b3dc06efe003bf7e83764c341c0fbfd0db93f3f01cc7c9f7e356c7ff1b8fdf65d7f358079fbf9d55ed59fdf10fb37dc7e7efe3fdd75f32b3d178e1ce94be10df74978a4dcff38178e7509e9679edf10d2775c380620dfefe6c7e191cbdcdf709c65bebf85e326001c1a60848727e30ff9feecd5fd1fe7c225417e74749446e67ee62d9cf986a34faedf518f0beb6fe1ccf3bb2148beffd33f4d0a83b6cce191e6289e2f1e7fc8f73bea6de1ccf3bb78c8b3c5b35763cdf47ffaa76b387b45dfc3d9ab3195e9cf9cc64b3e4f1c2212ad533a1970febcdd0c387fde6e760ffd91cbf367f7f4cfef3aa4998634d7eea13fbfa35e8733d7eeb13fbfa3df108b8380f43bead990e6f9d1efda7b01ec9f315501faf7dbf76f88c54140fa9d7b36a4b93ffaf3f3ffe9f90de9ffe99ffee99feea847c3993ba4797e069899fe4fff3411a554896efe00bbd3cc19c1ec3fbb559be53fbf9b3d40fa0d99bd1ab9ec3f3f1a689ebdf2ffe91648337d1afa33cf5ecda7b181cbfd5c6e4c63437ffdfe8a8768a678f66aac79befffc6aa0df78eca7ffd333c7f112304f1ca2a644dd14c17effd93da32afbfbabba67be7f4df7d0f7afdda2a23fd83d334b0ba6c8feb37b661e53d97fe6385ef279e210514a43378180b30c2296517966b9b2459ea86ece6f06e23cb348a941def2cc22a5cc34cf986eee80d376d307386d3779c0694d46d4054aa8954c574c537c47a60c988c301d618a998630156122e223c344e55bc32484893405612afab2f099f19df131c154c5f4c457852f8d2f099f10be303e304c52be2fbe207c40f872f0e9e088912f0b4f8d8f0aef0a9e0f3e237c21f864df135c0cb8920445b781ee8b2e08df952ff6a5e0ab62a3751cf87ed025d189a00b410782ce03251c744e744a74b1ee89d2ecdb814785e785698a57c5b686dbc0b33816af81d3c067e05db80c9c0b3aa357e814f404d404b4034e9af4c064091205d8e0c30c32c46072c2c4c437850f8d8f0a9f1adf133e277c50f89af08df1d128f079f175f161e1d0e88ef061c1a4848903260f9086f0acf886f09a508282d7853703ce0ae7020e0a8e89af468de065e15dd18de1c5c083816786e7824ee6b1c0d3c25381878547a53b2a89c06b4167848f888e76777079d042784c2891a0b3a2aba2a3e28eb1d53a33ba2574657c44f896605a82eb0037851b41274657841214f78bd208ba1494982821b1418154a342d8d228c9e80f6e0f4ab12fcb77832e8c1b0637058e051e19dc0b4830e05a503202270497c56785c3c29404b50237c587024e0a2e0a8e045c105c125c08ee15dc138d01ae0a27e33ec079a0496fc6c5380e7044701ab833ce8852114ab492185c11de0e4a639488e0e9c0cb01d70497026e084e055e1a253038985705ce8803814703ae885ab159612ba33db0890165abc157834f061b165c09362bb62abe0e7c4adc216c4d6c4c6c4b6c1cf0a240635000521189244da146de1997560ac12582b7822b86f7820bc615c2f501e9089211b70c4f09de113c247845f092d011e133f296501a42e7822b836b4687c43dc32ba3f483eb45e9893ea28d280161c3425fb05dc199a07b017745c9072418dd40298caea89bc289803be2b2408de090e036f051e9c0f08ce0d1bc31b8233a2094bce884c0911c151c0a9aca46835e82bbd20d81cb8057032a858d0a8e0a77828b839b83ab03ce0a6e094e0b6e051c0638291f17df165c155f11688c8680538273829302b70687854b821b821bbb4f5c272e08ee076e13d7039789bbc4edc055e272e026713740697091b81ab8b07bc435e266e0167189b843dc2ad7e80a71a9dca23be54ab918b8415cd21ed92cd8352c16ac1af60ad60a360d5b054b053b058b8695828d42c32c146ccd3ec13aa199b04db06758332c13ec126c19560936091609960c7b046b045b04aa85a5d93168179608940b3b042b860dc382618560bfb041b040b03fb05e581fd81e581ed819bd81dd81cd81c581bd81cd626b606760bbb05cd82d6c69614039605f605d605b6059605760b5b059d02b582cec15d68ae680ad828ed11bb0329b028b023b4557a158a06bd81358135829e810dac85ab1515812b4125604360436669fb04ed80f580f5826ec12b60356099b849776031609ab016b84cd802dc20e61abd01958237a8515c252b145768a95623160c97a54b350d7a858a86a542bd434281274090a821216dd105d95ce880281e341a9061d13bea20a824a12a12df02dba094a85ee009d4213d1459dc457a591e8227a082a060d839a4183408f40974091409540d5a069d02a505a4ba168d0239a05ea044a063d8336813281964193408940c1e80fd02f680e280ebe217c62d01a5019d0f2a30185416b80bae0b301c582b280663144474045409ba04ed00fd0272813740baa04ad4233408fd00168029f0fbe19d4902510810358b2a37952d219a4762028472850e4c911201e8a14e9a827690254a448a9048209858992234340498a0001e990a3d4c474a2431325452c2004e4435011254ff25013a01e2c7004872f7960022169e2a4499123489a3831c050131f9c2041926d4a494c28508098d8948e702955e9a1002f25a33904044507202011a624441227488092dc94a44c2816005a02c502403624202c05a1e449b600142501b0400e4b2410d2510e290bf307a0262d2435e615260f489c3c01a22155610af9b083121d9a38415244c9930c448123e20b290a5307274e849e1479a284072842404d2ae0a488058096e4203d6126016ab28312284d7c183a82c44914253e040115191272f204482808c90933899222434050847c4022436ac28402a464488990131e867c38526487224a9ee4234f9234392244830dd219d302142862061426404d9ef420c44391244d7c704281264a9830d4c4099222413d2429633ad1618684840965a80950142032e60e4d94246902f4a408d0d091244a923439828407c908132889132436a4224c21273a4001827283449b50867c7832e483131ca431e691a123498a3471a22409d01014255084809ee4208931a10009394152c402434a9828a1c011264a8e4439f2a4302694273e3811daa1880d1218138a909321284e047044e8080e2a9217b3024a9e6421a025424e18704348e2c10402f201c88703e4900468871d8ee4b083a48309650912201e90d86042196a022404c44313254fcad244890e34a41a4c244aa034512234f40350110b3079f2e4481121a0244c94f8202e41e284895843a2c1eca1c891a123498e0c01150045eae2024a981c5132a4a4899217d216730912274c28500468c80724403f00b5906230859c00c09b6d0121273d00f5705be89cb0c9b23c8104791275b324c94c895ce6ba4cead6066183a04fe85683f898734e1f418204a1ddd4af6f7edd7ddbda29a5ed5e29a55bdf0d66db71dfba29756e66a3d4bde5de6e2da59be3780f0cceb651774a533de8e694d20bc4b7adfe68ba6d97f3e1ee3d6a0d7d9bd9b63bfdc238bd74d27698deda7928a50ee34ead7737ccd6ddbdd36d63bbd5b7f6bad5ed6e4eaffbdcb6ebd7bb1db5a150b47bdb501c6d476dbdd519140ab56d1be7a8eb8ee2280ae528140ae58e42a1dc46bf7c28177c7314eaa2501bca1df5a17af3addecd371b5e6dd8f076cf739b7bfb526ff666d35eb78d6eb56eeeb5bbdbda6e77a7339bdbf05b1b86d66ee1c2d4a6bd3975d7b9d4a973eede5b77db706f18efdefc7abe390f77af6e9b5293d31d3a58296e46d5dd33deee9ee79e5b77181898ebdbe6edb4dd6f7777fbb66dbd79a9b48271efebbdc1a4eae63936d4e68ec3a9971a876e1b6abb71bde66cdbd66d6ac771bcd5b9b96f3030d461a86fb7eb75986da34d69bbbb773b0c0c8c6fce39b76d9bbb6feedbd6dbe6ddee9bf7e6de9bb7fbd694d6c0746f957653eaee4eddbbdb9d7ad7b06e97b653dfbadb7beba6ddde5dbdbb37df9abafbe66ec3b7cdddb70dc629a5f46f26a593d21a0a0343699d94d28d526a636e9b4d0dd7341bf5994927dd7aabed9b3b754a679dde3075db3ccff33c9391690877490224049444c849911e203d8094080de9f07294645433de12244728c0848913211d32478084665e6cbcc8b8401982a2e40720af0727ab1e4a7400127a8253342f4e9c08158102b44393233c20c14d809e3c393284e40894264784868a0c29e981023e4061014129d28393244d8e0861d51094224b849c546008a8498e09cacaae62923439520448e8c8931e9c303982c409931f5f12254c8e4429020507a6071b0d0424a4431121274347903861c2e4c8cbe4e941c950131f84704a87211f6c523f00f15064a88912a12745904051d243cd8f1e9b1f9c5460c8c692234890002de901d2c325480f9e223d80961c614281223b3451c20394233c7c4b931d944009b9c903c502404b8a2051c284023e3c5909dd40cd1e4980a04001127ad2831324458480a238410224c4b3a407488f274880a0b46e8040434784809a00ed50e408942448704e393e264051809814f9e1480f37a61d9c3029b24313253bece084894c094a911f8092345152a48992233c20d1410727cf930408a79b3c404b8a0cfd00d484c7c70314254d94e8b0f2260f0f48868e50a0c890d091a16e0868871ca5c923740488099222403b1c11723204a54812264a7840526488890f4774004a5264e80720569426404e9a3d8a3471a2048a1050942216d04189105094222ff00001d243084a1127434f2c2084a4c8d00f4038519a00f9cea9073dad91f922222272a2d746d419992fa2cdc8dc885eaf17257abd5e2f22a2cfc87cbd883823f3f57abd8888ae91f99a44442f37424489882e1125226a232f4af47ab991179d4688e8ebf522aa4688281135f2a22f6a64bea81122faa2446ee4f5227ab991f97a11b911223a8dcc69e4455faf36325faf17911b795122ead5c88bbe88888888ac914944d44626116d2344948888c88dbce04ad03927ed01ca91198f690fe370cc25a4659a3036f3b58fc530cbc12f17f1c68fb816c317cef2981fb12c06da8f618d06c750c68fa12c062ccef297d93cc610cbfe630c58b27f0c52784b855d31c4bcf57211bb2fb3cb662a184ecd3f86d25b3770d7fdeac6ec464e8de4706239b41ba52c6786538b410b6fc5dca0cddc2073625d0e0c47b6c2ae1bb39c5a0e8913cba1c520f3960cceb951bb0173c991c9e09438b31b311c39650c0e8943bb11c341e69438240eed46ed460e4e8933bb41bb41e6c4726038dd0d59ceace5479cda0c8ca6a4c9a9e5fc989343cae0c4666633244d2c07862393a1c5fc7803369323a3c199e1942e3fdea8c5ac700c4bdc88e5e0186039658e188c681c8e81c421d3206769647f9f2fbce562cdbce512ba3c2d3b0e188ba3b1c89a8b8e5a761cb1157963b6aab97c0e76e1c00163c1682cb20c17323b0e19b782b9acca1cb39cd7815d3870c456e46c55f3a1792b07961d47796315cbc99183c68a65c731cbfe2b568e32470e1cb3952c4799a3960386a35cc572c872d072902e1cb2156c55e6a0f99105cb619131b4161c340ec6912eab5ace2c0647ad25d602e3662eab32878cf929def87115cbf1630e9a0c9683a3ccc13e4637c6952c06fbc072e03147ad05fb2cb15afd98a3f48939cbc33147cc87ec70fccb45ac65d70163c9767c37a3d1c4b2b3ca1a8fa7d941ee80c5ccb2f32077c4743e46874c47b90a75fcc3b2ff0ed9ac855fb168b510c78e124707d641baf0218f182b8603bb76942e1d34970ed2c5c305cc8ab978e8c0ae1d321d33560b985563cd78903b623a74b00e1d3156e92cdf51dbc103ef80e9a8e980b176ecc03b6838662db31a8c25a3ed80d1ec2075c458656d474c4729a343c69a913b64b39a8a45e3019bc12f17b105fb607196ef285df0cb45a4c13ea5b35c074d06fb68e12cd741aab08fcc59ce8a75d887476c6e2185143ee417d97ff421b33f0c346fc160d7fbc3f085b75e6038558b0ed9f190fd88bdf0c87648551ade4aa9523a301a1e650bb11dd80f59ea5bb04b87e421fb11e391ed90356f9d52b1ec3c662dc84e3f4a9d5aa703e351b610db81fd9095e12dafd391f1a0752d94313a2d90333a258fda2cfb8c0ead0518875d3a258f5a0b3a2dc074643c682de8cc5a2075623c662dc87ee8a07e9076c8cb23d32179c85a88753ffe9091766017664b2b33e9d4523ffe2875623c66b78552f5630ba4cc8f3a331d198f1718981f5b98a9ba991f5b80c9e0961f756839469df2a42308accc5efbf7663d311832fbab5ab28e163e4c099be1bee5b95a769a778965ff19fe19590fd972e373e4fc8d162da7058b2971be2556cbc17a1dadd9ea592d32c7af7a64383e071018101dd8d56261578b5c61578f2c077601c18181d06e60578b96835d2d98abc705040703e1b0ab556bd16057cf0c08c63d6410b22573f5d08084b8071604d62a7b6a401ef7c478d4667efc318b95b6870966f24153d1523b329e99e56a3e503ffea89176cad90b0f0da647cdf4e30f120584f448b497999f22e9068fdcce0c06bf5c44d574960dcc534bfd142d9eceb2c1a32ad31f7d90783aab064ff1e5229e7efc0123d5329019aceca9f5f4c080944148590fad67d6430291d5622f3fb6603d25901a9018cc8f2d1a4c6bf682b316ad1e1910da080436c220cb0e8316de3a61978ccc5b1eb634b1ec4268b14b7b61e6ad19fb2eb0ec3f33cb0e7b99657f5af63f61170c31213421b120b418166fa9f0e93d18ee93de4566bfb0ecb69c9dde05bb6080cd5e800599d16028bd95c227999787a965ff32fba7c8ec7f0a227ba19499799a9acccf0891a95ee65db5ecefba9243ccab82c45e90d160979019ec1222835d2fa8b02b480c7ec115a4e62cff17ec1252ba8490ae20b2174a170ce40b17bb84c082942f80b42f56a26db11a43d1be5909b6cd5e80a160a659a9dc60a82f90a89fa2f7a390d22484ec5e28ed8f4164a71f83a040fc279c6535d387551ece5a089175250c92702e6bf8e5226e987356ff142fce589ce53fbe20cb384be12cff29563c9dd53f0689657f0b8034f78f730b29e616b33c715e95a8be5044f5a522a297fa8009ddcc1969adc5fdf6f3416fdd9faff296b7bebea5b7e1d7700b5d2fcf85ae987fb9889bf7dbbb6ef7f75db06a4d5f69c97dcfc52ce94befba9203f8a477d1ece92d9d7dc9e55fde7525879677a195505f7ad7acbd60d7142a9fe8ba9203ccc7bc6b8ad10ce2cb53a1a2eb4a0ea97f795719835d54e62c7f184c858a2f294c4967f9bb6017a539cbbf0553a16209bb769ce58fc24f9ce54fc22e23cef20731152a5aeca23367f99fb08b96980a1539ec029de5ff611a7396ff865dd359fe1ea642c58b3b4c61ceb2b30abb17b431d28fb4acb3fb93f653bc3fee6cb326967ea4b4fb532ce1978b687f9c2509bf5cc4fa53dc7ea424f753e47ea4b2ec5b7843d059f46da87216fd1abeb3682d4f9c578a88f636eb4e5387fe690a994f5f3a99e933c5c805b19f4abd993e463c4477e921daa742c59e993e469566fa187935d3c72865337d8c6a6c4c1fa31cd1b16b7b231fdef49962a423d6a772459b9a3e46dbcbf4313ac14c1fa39898e96374a39a3e4639c4c6aefb463eeef4992265138d76c47e2a2e56fc4d1fa3364d1fa3d269fa18b580d3c76806357d8cb0e83fbf65fa18e9101dbbec1bf910a78f91157d8c3ed2f4317a294d1f231bb1fa18dd102b76f91bf9a0d3c788ebe963048ad3c748254e1fa317dbc76825f6cf9fd3a7b1abfecb45dcb6be77c32a6b2f061dbb8c7c88fe1673cea26fe44374b98815bba4f8d1d191e3e92cfa2f17d1c887d8f89d457ffeebd28aa5a33f80f333c5230d9aff031865cb4194cc415088b2ff48941d439953679c3a23cd349cb90220fd0a80b30cb2796629a198d38804997a10d9f148c93c3f1b68aed57f8623519e3f8368f69f213562f2cc9f1dd169f452ae5fef1172c5417e74c4d527e1261c1eb9674244452d5fccb9727dfadc7b587f7e364c1d1c91396cc576af3cd2273589614a996f93a90358be3f5e207324dc6492818314307021085c703f64ff1ea2885c936759e5861f103712860854485902599f5a216d3200451231a11bb1146021879e4c32b215d2852070414689614af9c305f27d2b189864881b262719e2c4aef9af264e84400841608124458bc92924e94fb2d7d0bfbff92d00550422449105294747e214402a3bee176d7b69d0352cfb77b80070c9fd1c79bc9816d1ab2280a610a19d6c653ed14cc2d39f13573c858a8e58dfc8452ca27b52d97fc674053832c9b4885ef9ef20018729f5e9ffb41038d222b2ff389190fd5df341671189730a1fc8e2892c64349214eb539186643d811123c080085e204ea1a223d2377211e7142a2dda379241a45f43231944d7951ce8bb7070963f9db9aee460bf62d78fb3fc2d765dc9a13ec5ae77967fc53bce2a4bfae39c4d2a0891c54a13c03041117a60ca029c22110770f002279cd8e28b2aa4204e71feb893c393a448bf88eec94161af26a25e9df05a43eb55ba71d6be3f677fb3f6d6900e69cfbe7f760a59d52b1b448f72fd8b67af2cae34b711905ca14302f637c4078c74f467ce0822397dde14e2a6fe6ea8944aa14e21760aa1f6f31109c895de766fb9b7dcdbefb82f71dc5bd25b6baded48a1e7590a41467eeefdf3cc5204cb35bde2b8a7d9de73679a0d9bc1fd25e1d92b6e0bedd4993fbf3a75e6e758bf8292b98d92c894ccf3bb6eb937671e29c90321dc4083c8138f94fceacf308a0da739858cb5e2a0539ee33ccaa3ffcc0900e95ff9ec3fbf20303ba664153405130838cb23a66407b4088a80b334028d7cdfe9771d1361508e893094d0c2fdb7cf069a827cff72a00a0db34ce20550a800669e784987630b0d7139681e65fbf72332cb245e90afc53ea8f2902a3b0d291246798634881ee539d239758832ed70f4b79f0d2d827cbf7e35f8df9fe51149c8f6fb7e7f36d4afdf784e9dfe9fbee148b1bf0dc7ce5da370797638cb2392c84135049152db11c615798422042cba22e471880823a89cc8e390144f7c791c320211f2fc201a4a352772d03c3aca429e1f6443298f3e68e00679be0d611e7da84204357024399fe8d28b8324b2a5223b09f24da6df4d0480b3f4c0947c0aa2d97e373f1a1adbaf782c9b90e526d2efffe323118d0d968a25515efc6d18348f8e8e6eb8c9f4291e896c18e5450b1b35b454640f873adbc8fd36f492f6f78f087d6bf150374b0f5c91873a3b1efba3fc740d6fb28737b9c3996938d4e5f94496f6195d7f573b904e8aaa9fe3de3929b672df5631f2b553d8b96ae4bb7934f43cc3b946bee1fdce7ad33aefec4aabc93efd1fef3c77f33befdc55eb5dcf86f51bc20338dfbf1dc0f9f3bb59b91bd358813c310d3bdb70a29127067b95233b56f58a12d11725aa5e4df04a40fab557b3be9d42c57e55b6610de7a704a4ff51ba0904acbf23cf2c605c913fc7080f4690c09648649c912d8feeb15bced9b0d046e7771be97f7aa33f8326f7fd5dcf490aef774ef704d1a3dcde469f7bfad940c7c841340cbac9db775cd83fc3b189dc1fe90c2f1ee9cf0dcfc9a3f14fd3ecdf7968801ffff911717fefe83784f31a606456c55a77b25de1d080eeb1130b01baa766fb3b194822dbffd12d172d966c7732cd66fbbff3ae7af4a3a1fb1bd24f3f1bfc7bc336d0b7df6da1cdaa338a10236f3f33fddffe86f4b770a4595823dfefaab78533abbac73e98eaaa373f1a5e64be7874e5fbbdc600b290b7a747f9fea4479df5b6706c32df9f4de60d8ff76710ddd3feb346428117b9ff0ad145be3ff3a9f192fbfd34aceff57fda27a6fd1f0dd786fb3d85ccb7dfddb0bfbbe17eff162eb99386af863bffe29196fea7bb5238967ed6ee29178ee377e192f9dbf7476436009c2511b0bcfd9c0520fdc4f40bfa610a068220b350e9a110e5122e7dd0580135d638ca50e64c8a2486c8dd4321ca1d9ebd2ae171da40c2e30f79bb1f0da57cefb5d6d65addbd3bdf8f48e7edfd2352ba1f119a37b7df90ad3f22253cdf7e444aa590c686ede74f6f863393c2f1878997701fe4caa367eeb9bcfd4f73e1789ffe8f779ea510b15c5fc7da90f326518b46f700b0be989ed0e5594e2123cf9a22a4f81006d09ffe9cd3c34fd23d00ac60573f8543f78c8f258fd38b5cbffeadb7be08da1fe717f9aaf2ed19390174cf08f2d03df77dbac7f3fd069491ef47a05b55f4f9c5ec22df541e83e4fbf3fb6955f7cc924a11f97e4df774bef7def7ba27e7e225b3d667747eaae1fef5bfbe59df9e7beb6eb7ee46a179fbed6f3873d774f6cc3fbde125dcdff702707fffa7373c12e58d0ed91e8f35dbeacdd97049908be36ef03c12e5ee4edfd190c69fbe7f8734fefddb77dc77747bfa5cb811e9df9e0bfbbd86fe6dfb9fb6dc77d6925ec8ff3e17d6ee7dd22585f6efe5bef370e866ff1b8e9dfdedfb48b373784e1e4ec4fa2fe17efbce85bc171abab923fd90974bee79247fb7df515a267d57e2dec3b133f7f64bf69d14fefc06409449784e1edc4833f7fd11b1cf61ff1ff790fe76b10d3bdab9e7212542b37fc5608992a41081463321c28b9a7ed5a97e57fb3bfa4d8a02439a670e5de9bb53f7f32747e27e279348a18a9b3f85d03cc39f3a3b79beadc17ee9bb523812e5d2b7570a4b6f7fba14ce4c3fd2463f22dc89e60eec15e9b9df9e7e434a7824da421529ec6c1885e69166d297c2283493486fc3996b670af24c43c433f71cfea9339f661b92f092edb92f8533d72f882bc0f61c3ed5d57cfa31e0fefc52483377439afb3b72b785e3f61c098f4499f434503207d192fb1f2f85b4a3defc4838c873733ded8ff52f0ea2d962a28d5a2add34230a439055b2cc200b2510e7d7cdf9cd40b057f48580e3532fd3a741327dfa3eddb365fa4f3f87fec8f4bdee99effd1e2e005ce29f238f997e37a79071275b222b8052b66feb8f8ec757f61f49f308d9622bd5fe0cebdb70012e04618b2371be87a32bfb789f09d107f2f6e32bdb9f1386395d18676914451ea279c34d261939c88f8ef2c5565cf35f4454d4c48ac9d1952d1efd4752eeff710f73e48e7a359c3fbf074c1dc0c49923b7770f56dd538485eea647e433f3eb28dedd3de444fc83e8d1d1d151f61ff2ecd8bf66c73436f8db77fa95d22b5dd7cdcfeddfef6c78431c40bbbdfd05f4e39128fbbf44f7f935a07e631791e8f26fb1b7b0862e2291fefc8678ab7fbcd8e291e60d738f03d8cd2f07fa15bb5e22952b4133e4fb54b4a1fd1b8e9eed7758ffc76d38730d5b9c5f0e2ed2ff690fc32912f98b12d117ad1d9b659ecf4d21f6e777f647af5c09796754657ffa3bdee2de7fe52d52edd57dff2053c84f9dfbfea4100cb966dde7bca56ad67d7f554cf69fa5104679fc91fd63a6109afdedfdaebd1ace6cc38642fd9f9e14e5f5aaff3e7dfadda7a94f73679afab314420a7996422c21ab7a75df8634cf2fa8e60dcf5edd1ad65e715367ced276d73a1a66a6796e71052674348d36c1dceb6fc87c9a6729041a59d5abfe826a9e5367e2fe8604d1a34c9a3afdfdd140b3bf7ff36948f3a4efdf10c7959b3afd3306006739458a3c7ad9234d2133773f378594f22ca7389155bdaaa83ccb295a6495f56848df946739254b56556f3aad6936752268999efcbb13cef5e7d71ed2dc75c87d8794fb9fee6612709643cc72f7dcd39ff4a3612b7d178ea55f42badefc864c8abacf7dfd0ea41e17ce3572f5b870ec429a1a2a49e6ef6bf6fc7d879de7570325f3f79d7b5c68fa0e67eeaa27e5c9e9a59c5c44e2e9fd0b5478885bcdc89c919704835b4aa498ac5fb0eb7e0a37ad674e635f85b96dc19cd10fd1f4d61d855ddc83d8693eeb5a8db9ac673e788115caca6157f54413aef58758b1ebe24a7316765599d79c45bb579841157480c50d8298d1258e0085128260e5d535b8820a2478808526c48a6badd25c464b3a2329ed4923509c427a2aa0b83d95174b4f6525764f6547f49e4a10f10afd913e3185501c348fb27d62ea84d689c9d3df85160493a7bf14da0f4c9e7e2eb44d4c9efe2db41e983c34728a518d3865ca94295c1293a79f034a7420472461294e6331d866b412a74cc9801193a78f50891c96726ad9767494052104c1064dc4a618fd10a7704f25886885f0c45ac4e4e91fbde6042080718427b080214e71eb410780b0022172d004719b32658a94139517ed9495688b264f3f951dd152993c6d496f6d784e16fdab52cd69c98ae764dd4c1ef467b6e54b45d45eb3826ee68c3a62383b79feca6b4c0fcab8779134f371f0967fb27eef2e4dfd20765599a5b5cc490ac392e746aaf5b7d450efea27d16b7f7ce6ac9e254d66499f75540653d666258dc5e6cf5aac86839765e4e965edc6b89896f6ba71b06ba7c2ac8cce9a96dfb4a632d07a2dab6052efaae5fea679977fd8d5315bab25251dd6b04bd6d913ef0b6b9739abe78fffc15ba45677339cff911ae559692eabdde4855db2ce62b3d6b08ed95a2d7938ccaf93bdd996e5aecdd5989d9ddaa5c154dbaeedd22d4dcb99bb43c3c554588b8d95b978ba667b365aeddbf2ae59cfd4eebbfafb460e1953c26c786c66319e7e20efead1419ea7bf07bb389223dd2078936d35ae24ddd916db689c8c44de72836d33cec236d259bd71308ee6b7e6aceee75aeadd5e6a8c76693eecb679577f3f875da8f2250503632d341cecaaf9179c9e89d53cc62eb096aab994a7590b6c893c532717b056da7e150deeef9aa6ff43ec42cd5e66a918286ba939ab6bfee65d366cbaa6d6f23dfe07cff7e08985fdfdfda3e75b0de47bfac703691fffa3855d28590f76bd00c1ae14f903bb401fb865d603bb50311eec7a89b95c6a2e7007b7b85030d70bcce542739d5cc02db2269dd5b316704bcc593d632e34929cd1648d8271fd12c3a9e5942612159b49cdbc143f3a42e1b8b8cc60205e643920898128cd707820be5c441958ee07bd855d2da4fe96969677cda4fa5b48183205d25c50b5975aaa04672e3014ed2505ea60175226f6f252a6604e43b5d45e64206a567a99a56228190c099625a7bdd4b676818133540dc52aa3857c812155ac2f369c9af160cdac4bec765dfb9b8339c1cc3ad54f93818991691859d7606a2a194c4c4c4583a1a962313418986a063353c1626631aa3245539131650ce92283a1220e48a343e8011563d8a07685d34a18ed92cd81d20a52b0429625ec2cc6d548984fa18c232cac708616254dc69524d816a335a1e60511c6e88178675b2df74b0104542c614410c4e048d6123d28a28922276011a7e89b3f37b3010c6c3085208828420a718ad63e2966925911c306464c28214eb154fa53afe1c5941b9c21461340d4df48d9d60fc4e941d3bb4a5df6d7fa4ba537eb6aa45a072bc9bcb2a391681d598a79b26e469a956a2598d795a4b2442b915e2723c94ab37b729195c898f276e57a6b537bc7c06060a8999d792ca66fbbbc8a565532fc72319158ed62a950718c9139152a8e30980a1559aa5a6e56ac86ab34421669439651c88285ac259cc5032b5ef0821c7021236533dac4924412a410450a4a50c2ca59a9469bb0c2822b94200a52cc625e47eb4824942e60020738c04224d14a3220440cd10318126512c4296e63a92c8541c4088c10821422c42996bc590c9526d09268428d34ba1a10232c5548420a4ef084b18301e10724b082850762e2149ddb6afd9b8c6cafc96ee9ef3f9d604d7e33af7622db24fb649ea93491a6d849f6c53cf233c14e3153ed837db42e46aa6d34307632d5481f8ceb6216f6d564b9bf98674b54ec6422495f6dd2342bf5577a35bb591f4f250a046d1d4fa7136832d1de8ba46c5fe447332c65c3f1532cf233c4edb16b863576e02afdf815915e2e22f8e093302b662281a437e9781d27d3cb63204ca63fe5f81c5f54747a29dc17b95e3010a7d3ea5777c74fb1a8e8be148efe148b4840dcfbac67fd8ef0071007c6f160c84ac359fd348442942b008eac3474c0bc75c2fd3a96f09609f7eb30f2d6c5fd3a486f91b02b0d6f715d9e3ae7530d93e99af7666033341a994c0dae21656033e4cc8ca67603d3c468683231191a5893343319d98ccc593d53eb998c8ccc6c26466a9ab294a1cdc84c4d3393dd86296960343452f76d1a144d0d9481bda955cea23334170cde46614ee41aec67c5bc75c22c13a8038f1c49c5c223783faff0a8c2d35923ab96fb73e0f1fb71842c2c53a7ff02e0b84a2377b3c83468b1662d51d36f43b311b351b389d5c058309b9a0d598d8dac86c632aa21fb6dc06ccc6e6235331b588d8df2066633b3216dd4c8baa6144bd15e62b96dd42e8ca359d98b4d0dec9a1847a66a6a36656e1b24d860c3de86ccedf2b799e546b56b470818e0001074508226a0b0cb062c855db38b1e64a1841524a41401c42e205c7eb431cbed0a5244087a104411152244f0a7784a793fdec45c27228c418324c4a80921d6fc0903d118887fb9882edd6df3a47e5a6a0d17882f1711089cb6f1a96eafbf6ffa1b7fcbd7646edcdd8d5d38a7c39ab33ac4efba99b9b00bc35ce1e390e6acaeb96e4a5c3aab6f3026719e7623cbb181b1ac71683fbb61836dd064f004d7f663cd4c36b34193cd68b2922c6be50cc3c01f431a399b4c2892f2c50f86f002718a5ce9474cb3021a519042902510a788c2311d68910410905668813845700c6b58a89c5185219a70244eb106bf5cde072b088107900085118853dcfa575f78cb35f316a7e25a7663fdab9ab738eebb1fecef3f615708c3c991ddd46265788b3399bab9fe7ec1ae308613cb79f2066c45f3d6a9bbbfb1ab6bfd295cc3a93d0dcea185250ed9b19c5a28c381e53cec46976251f0620a20c040bca9c164b21bb0192be0a0074118c218b1580c76839cb52758a1084b06a6c064301c3287cca9390db070011642a4b1033146b9800206b89899e10197910fd17f0c6795a4221b0106a69001718ab5419a0ed4588210aa808311a73665b0822aa85153420a43187368b91b035a302182230c50419c22875d54dcb0d3dc527ffb5737ddfe7679147832b5aa55dddd386633d8952326835d3954d8752306af60b0ebc6ec05bb70a4ba05e74061d70ac4ae1b27ecc261c2ae1c1fce41eabfbd61178e9ab3fa3d8c23e6acfe1276e1b0fd15bb56dedf611ca4b3ba1b074d56bb635bdb5ec1bc65b9b9ce31cbdddecd75b7ff786396bbc42ac359dd2c9ab3ba2d667de1acee8a593367753b6661715637fd918525ebf888ee0b878856aa44161d7855df5eed76dff4f3df13a7500922724f2a75de97fa979fcfb9e904a25c5a9e4634a2a917989f424525c6fc142aa038f353a870a2ccaba650d91169f05d8976f2d09f42e5c53a79e8cf0984fefc99f065f2d09709539387be2a74993cf4634298c9431f268c993cf45f42d5e4a19f0a65260f7d97909b3cf45bc26df2d04785a4c9431f0c4b9387fe29ec260f7d53e84d1efa5f383379e87b21cde4a1df853593877e29b4993cf449a18dc9439f0b6f260ffd2d344d1efa37fc260f7d1b9e260ffd1a829387be87a8c943bfc396c943ff35437dd6cd9c716e31cb23a8fa3c7f7a6bf50328f4e3e9cfa26d7bd7cb45746bdfb5bd8f52e95dd6f48d7a29f58b50260c448954647a29f5073088e62cc5d4f19f6291898481400161eaf11500375c2465fba2af5fdf2d2eb216e6aaba6c0bfa30e12293c9d4f58cd6682753972da333f0c94f6fa17011eaa56c5f84f29ad6a4a9c3ae9ed11a7d1217955eca868190428fc42b353fc5a292f72e99078d7cc0bc8bbbf1463e4418ec82f9d2771e7679bffdc9845da647bdedaf097f0085e8d73c296c5a9394ee38ab63373ae6394ecbb0141a9921d73597ae358ca66134dc421cc29fb0e96cd64a5aa3344afe8c8c51d84e378ccae66c965debf163c72c7eb9f0fc48cb3b69d3593efee70b32fbd7c8bc555f2e22aa059a0b325a76fb2e58f627b36b517acb3f63f1d60997de757a1790dff99e6f7d900a7ef72e1ebfe375be8577e18d7c8078e366de05be2bc7dff8d5b35ec71bf910370e73ef0aff1f3fcee3c0ae18ec6ac12e0ebbb8dfbee5633ee75db08b06bb66b00bc42ef0ebcf3ccdbbbc0c76a9b0ebc3ae0ebbba2ffdf7aa977918ec7ac1ae14769db0ebf4a84ffdcbc3bc875d24ecbad865b1cbbee9ef93de7b7f1a4601bdb0055ae8822cdca1853e60610f326ca116a4855af67f095d285b65f64f853bb59e9d5af63f853e62a8b0070c482cfbefc0b2bf4ce802e90299fd55a10bb31666d9ff0b79481d32fb77a10f5929ec11e321cbfe3b62d93f277421862396fd6342176a38b5ecdf12f2c470ccc72cec517e8f32fbbb842ec074c0b23f4de842e8022dfbcf843cb01096fdc1d04719f608cbec7f23945114502141b98134404093d1485811aa00e38a209870a285da4e8d8ca961c6129080c6123472e6028d07d64306e48a31c87001152010a7587ff4e1028c0955c0828b2b9c61459ca2c9f4a30bb11ab040065888a1c4182c10a78842014172a176032a4830604f0021264eb1544261202e4f8c0a4c68020d35ac5811a7b861206c8fd2a99081c68c055bc8c42956ec326120502f17d1e46396fdb314de72fdcb45aca59a2f551b55c906888198618d9908c474d6cdcf501347ee471805a46457abcce934cb4e936d333256bf32bbd7326569f64fd8e5339acccec85a7a4f96fd4b64f6df66d9abadd9d8875d5e7ab534ebb10aabb4136965b1ecaf72d857bb0bb3d561ae7a61b674967b8555da25adcc4bd855c93ab3355b9db6c94ae4370367a0d76ab9c14ab4affc48b0dad8666b2eabb0afd2402bab97f4d84b8d75b5a6b22578610efbf9e23d6e2b6f8c54f38147ceebb0274382c970b2addbc82bf31e06bbb8d856de1889bcb51e787ccf6523c5caecef95d99f969d04936d1b79653c7854b960231f22cd9d6d3118920c66ab71331acc9197b6c93852c991cef24bdb381aa9bcb38db471b30d468a71b7dc1a8f601e67f9c58dd564c8979837333b5d996a235f60de4ce9423bdd7283793112b7d5ee6c8b79d58f9bcc85a623953f72b4971d3fc514fe91234f38a6c76c27c6c14eb3ec5f66e778663b3219aefbe183b6da2949b3981e34ee47cd470d0849a2f1d0563fc81eb5f0076c6746aaedf820796a3f603b3352cdc70ee6a9012149341eda0fb2476da724cd7afca8f9e0d9e16a3f683e683d663b310e36e3299de53b545dac342b955dcd2b555e57f266259947f3605d598a956a259857f3621dd9cd3a58e9233b9a27eb60a58fec689eac04f36a5eac23bb9947f3605d598a956a5e57f2662559172bcd4a5dcd2b2fadd4c5ba9a5796ca12ad9379a4372bc94ab5ce8379b452ac233b2fe6d54ab983e52e7bb2fc9125b263baae7b10762a4d35d53733c5baaecb014f269acb579a6034d805c24ea5e99bc54ea79869b6fa6426929499689f0976a29d60a692e68b7db598d3ec64927db0ef74224d1fec3bd14e3067b9e9fb4eb553cc34fb6426f29b81b05369aa996226d85782e44966a2996626f2939d6aa7d809662abfda173bd1b2ec34cb5a9cc85c9a6419cb47fb60738b6c94495409d6c0580bac8596632d31d40c45b6d44019aa046b60ac05d642cb4bb8902d32140d2c51b096186a86225b6aa02cc3c0990baca544c55035940ca4b9c45ac896194a06d25c622d64cb0c9cb9c05a4a540c5573215b64281a58a26060ac85d6024395600d4582b2965a4b0c3543d15030b074215b642d25aa868a813317d80fcd25f65346cbeca7d642fea48192fd7c01d22619799ca5ec8becffa3c58f2c354b912eb297d84bed67f6224bd152309712864ccd52a48bec25f652fbc102037b29533597592af6224bd15230971286fc295d6830b197594af642a64a971a8cec05f6424b952e3518d90bec85e6428389bdcc52b2171206f652a66a2eb354cc45f6527b89a566293205732961c817598a96aaa5622e3318d84bf9327b215332171a4cec070623fb59e285f6137b81fd48912a7f8c5c6a3df23803ad34cafe339431034d8654c9626830650cec8794519531359898980ca992c5d060ca18d80c69c8c454331509132393519531359898d80c3519998aa682c1d4624a99525553c562c898994ca9aaa9623164cc4c46a6a2a96030b51899984a05438bd151ca903232550cad83cdc46866323055d9c5d4664817990c4d1553cd66542e2ad8c7942a985aee6464a54c8967c0f233cc54311e3fc5163cc317b3cce119b48821678065ff71062db2ff0c4b780be62d8e9ba9cdc46264663b68ca1ad80c326fcdb2d39033b21c3531195a6d2626332b6b605278eb468d2c86864603e3646a33e58dc7d8454333531393a1cd10f3d68d903543d69434b51b33339a5838439b81d5cc686435e40c6d065633a391d59033644d49539ba189c96868343099da0cce8f32335899a3169b91853fcad05835b115cd2c0799037663a6cc91a9b16a642b1ada4f11ff4853cb397e8a387ea489edf8716646d6942c2c430de3978b88f363cd6c8565480347f8630d9903cf40eea091cd60d4f2e34c19cef219582a8f329465647f19b078ab05bfbf0ca5b7b816eec9ec36b21a5a8b8dd94dcc5f069ab770386e870d1a8e0d984d7923aba97d0eecb241dac86a68b39b98b3fc0b6f855c8e9bd246cd06676333fb1dd8658366a394d5d466de8ac1d8067633cb7143c6d8d890619b9a4dec86d6828df2066653b389ddd06c9437301bd8cdec86b4a1d99039cb6f4a1b351b36a48d8e1f6b68311b36481b994d5953bb7123b341b301b36133b3216fdc94366a37a40dd9ff6843e36c60376637b00c3a7ebca1c970039341f6364a19b4e0816d6458c22656ca630c3519964823a6b60a5d6e6a5f3e26712903cc5b3a3a0ccb793224393cfbd90abbc2f2a6566212973218798b063f2c9cad9e16c230ecc910cf7e260319f31fc33156180b6931a1ec65b816d6b02c94bd0cd7c21a96fdc7702c8c8534fcb070f6b4f0cb12932e61497353a3211fcf38980be912ce42d84cb35763cdb4ceef397bcede4cf70a3523ee6e84ecbe65771efcc7494be2f5087727d478a20346b0824a142e103d27bb6b0009d9376b84548fc082ddaea50d71240b25c8a0892cb22ca4215a9c6c6d160d74912dde59f5ca082c89ce1ab978db9e4079cd1bcdfe08ca6ef58c83fd71ce72b0b8012418968a57bde2418d788bb35f93ad3d65fb0321641b44ded9b2c0800546b2c0c8f08cf0404b62c45bab2c507061afad3f7e4a7966398205f9cb33cb114f6cfe09e1c70a1d7cd5fe7c618514d6e260459953e6d0802abeb096b4fd58210339275501f32a9670cf800d26a83843035314b101247096239eb0cfd9cd6ef6da8b719082b2f5e9e7507198955f4cc1fa96834e8d9d203b3f76bcf543c511a41f4a44a77e26cf1aec600d6ed64d98959e02259464676c3f3234b6ed860128a21b9585044408c00f06c468910932c0fcd35c4021ab64bb11b3c945dd214952ca4f0a68dbe657346bbaa059d3bb68d6cc2368c4c44215987002952476d08412c22b4fd8300ebdcaa17e0e38fce03045051d10e2892b322bb048c25f310387c661a6fa49c11731797201027246733b820b1a2591021ef0208b30d0c001086eb2401a011244211082164e5891050d4820848d222090466094860ca090051d80e04a1421b0a9a2c13cb1ac31851f00810558b40009a330682ea8a122048e3ccb2b33f87070c4162f3841183688e20753e882a6288d9ecdb0648108247c67467760b0f54e909d1f41ae48b1e3ad9f1a9459ae6f2b019401c00248e3c75b3be30c99fe8893fb7687138618a60bf4cb2b3253ddbeffb99d5eedfc4c8165db6e18805ed10c04a0041f68a2092956b05084d833b9bb0b23a4e41600fe5901387f02b0f323f51c2780520b67cd2dd27042b679628901963cce7296270e11476f133ed4bca4df7ff4aeb5f6ba3f073a0bab7a35827f80041c4d11a2075992b0c507fa3b3a3f191354418a95286490850a9090c9fd60f79976dfa09b39dc8cc90a30ec419597d0ee71d60ba0d31fb9bfdff54726aabc851f1620d7832adbadfbe97743149a29aeb80755b678497d0cf6113d89d0c41062b229ace4200bd50c6e0c2e97674985102bf013b4a09e400b3fe559032e3e90b73cbbc0d2832d1c69dee81765648ac54d60e473eacc4c666aa5e6ad69a0797b7a3d4a9f4ea7dc14b26dbf6d9452f7dadf09ee2c733d993eaf2b5d4aba97082773ef555d1a93ebd77195ebeffca8afaa5f533f5755ae7547555fa6deebd2722feade8d087863eabdf75e997bafb5f7aaa64ebd7ff178af6a0ab15f5fa63ed83d5cae3e4b17159c6cc5ee95a35bb6ff39f639fb9e05b3e5b2b5cd4d21f4ed932cf5de2edd28a6db57c3dca6a51f0d148fd406db14d292edb66ddb46dab6aeefd38b376eead8ed373c6e53c87dfba429a4c5de1d8f8c533791397568ad7876ee3c4fa6a9e3ff4d1d7f6feaf8638a0270962758c23e2da37b463a46f6a7344a46f7c4647f104b76137c914795979363f2e8f9d38f484b9e53c73e1dc36b79a436c84890824e139e90c9b8816201a78e7f0d140b3885d8f7474d212d3d59a6101bd22c53e7bb9d1678a8f04e58c21951b081d60009254823532cd9d6403f223307f9068ac5ab150a6aead4af78ac58280c33cfa756a61028744aa656a6ce7c21506896a9339f4661b1641b45b6f6270c3964f6a758a6108be529160a4393793eb5c114d29227365501522c79047314200c6dfd9400079335b3ffa43d3f25f062ae661e6d64aa823cf3d89247f0a7043498ab99fd5314869f12d860ba70e345372100fa8f5c790229727dce6bd7ae33a7ea706ad1396f38d5e938e86ee659bf990f547d60ccf78120f82e29371f369a11bf9fff16c4526eb0ebf5bd7c07fe8bf42e3fbfa6a565bb3244f3e9bf94f726977f91542d9b832d34ef7a91dc7ef7f3533234db46fff53d4dcbcbbb5ea9f77f91de24d3b27d2eff029f065fe9ed5fa4f7996adff4544a620c76cd98f015ee5ff63799169ad2bfbe37cdc060d7ebe54d5ecafe0b7cf9177c0565f248ff023fd592baff02f1158a6b5a503805e22b27fcbda26fc2e08773fa5fdd77f84a09bb5e240e577ce565f1157ce5e5556ada98d05597c125e56646f4fa2e2a57f40fba796d3c101dbba898447f23986aebbba4dc387e5bb1941bfb4633e28c5faee499c054cbcfafd9ac5faee4995ac09fafb2a4cd2f57f2c07fbda4ecd691fc722593f7f3411bbb91be7fa5beabf1cb79ff7af992151b1a997fd5f757a9b0949beb343258ca8d73ff7a995780893533762375a77fa5fe7b1795924883a5dcc8a8b0cb68c66ea4e7def5eabef4aed7f7debb5ea737812d30ff7af9d4bb5ef7ed46eabe13eae55fa97779d78b7bbb91baefe4f2afd4a3def52abd7dd7eb657ad2bb5ee077ef7ab5fcf7ae17cca3fe95fad3bb5ea8f777bd5cfebeeb55bff4af97e760c29c06d2ff12d606423f157e03e97709b90642bf25ac6920fda8d06b20f4c150d540fa4f21d840e89bc25403e9ffc25403a1ef856003e9ef425503a15f0abd06d24f0a6b1a0805d2bf85df4028907e1be6341020f43d9c0da4ff4543494be866f76c4ffaf9a9eee97ebeaa7beccfafe99eee017f7e4ef7f09842680e1a29089a4cd6761d89b46ddd75e8e6fb2def6110ea8582828810093a7dd0f741d6fba0d207711f64ffbe0d37474731c82d78ac38e826ca4c46e171e341761c74733406d12833f9f43f0d9ef0f8df9b3e3cd678785495be2be131c53d09bcbf5d3c7af63b0cba393a3aca168f516672c5639499ec7864b2f120f78ff5e6c6516032c5392db4c6baf796cdcf17c0136ff9cfa74b78abe6e7d3d25bb4f4f37fbc45faf93c784bc7cffff9540b6fe19c7e7e106f996cfc7c6ae42defe75399b76ea47efe8eb75c7e7e03bcd5f233c7cfa752780b94b979989f4f63dec23378e4f2cc7758c3fad5e3781bdae0229ab7f91be2e43cce87bf858f8b2e8e673d17eac0456d5fc777e10d5c7423fc9cff421bfdf6b9478539708ebfbffa9710e3221cfc373e26bcc1453a5e9e7b99b0a8e8e66b662905963cf3291ea28d9bb7f953587483abec108bbebf799a2fd1e02a26f1bf0617c9fce96d709517b1687b9a57d57cea4bef1216d5a4dee64d366ffa14aee26251cc9f9e1416d9e02a3a6211ea6d4c5ffa1a1699709518c4a2ee6f4ab84a8d58547a9aafc155526251cdd76f098b5e385c45462ce29ee61b57e1c4a29aef771db80a158b526ff32fb8ca158b4c7ff3165769118b5efef43061110b57a1118b6adeae70951cb148f5a7cff15e589403572989452d1757398945dedf3c0e5c258858749fe6c1b0484a1191780357c92116d5bc7f88abb0c422983f913e7cfc342ccac1555a2c02dfe6a514118938b88a0c62d1e96f701129f52edff2a807bf0a156f1ee32a2db188f434b888e6ab5031fcb0a8061755a162cddf94de4658e4f236b8a846e6551ff330fff255a848838b8a8a8a4e6ffaefbdeffec767c2579965c2e9acf9aa70e5acf931210ece9a0f13fee0acf92f218d396b7e2ae49c35df25dc71d6fc96b001ce9a8f0a29e9acf96048a570d6fc53083a6bbe290ce2acf95f68c459f3bd901a396b7e175299b3e6974295b3e693c21f67cde7421e9c357f0b29cc59f36f48b570d67c1bbeb3e6d75000ce9aefe11367cdef902ee1acf934a4a5b3e6bf4022fa9271ae04dd14c189a509b24c1fec9e51a5aae91ecfb409b14e0da0eb5e0083e8ccb37b66f74c6fc3239737cf7e3690461c72f761e4ee67d77df71d9e53877221258535cc30e61633df30d5c8f4bd1a661132913946a6259abb5238bf2124fb118028cfc9a37b1a8ee1489f7b120d671e325763f75c0dddd3fbdc0d1d2ee13957dccfcf06d2d3f9d5503369f32df4bf438eb95e1175b4c62a38470e9547f00812134427c842112710e204494c81048c14515cf13630c798010baebca0080a53e4e0258b952fa2f0004c9e65144e702cb47b6fadb5d67ba3f0225f2fdf7b2f89fb8e4422fd4fafbc85c3bdf74641837cbf768f29dfe73e754952eebdf7566146beb67a0e5e9e58a0d022db3c65c00514795c91a81da2944aa5261a4c3cb1c40d6a392002092952084e492c010b3aa8c210624770a95921374909a521d068469278796e418408cce826850204a944a17bdcc98147afe8aa13dbf1ceaa57b6bbb3607141eeaff6fb53dd53bff15f5cbbfb47f7d8ea9804607fc541402efff44fe37046a69f43f75c1b821ad7d2051613d0a01a217941fb8c20b282225c89e207553802969615d0c088098a13d06846924031e576a0ab995639d58c788b24c59d65f0a88f4397457777ff4fbf9120dcbbc80015d95fe5ed349a9124b40a1350f900119e3843075b88a8168c20d3ec3808a8ca3f0de67105e6c9850e9e707b020f38072e50c515235c39e309b01c80506c000a25ba53799624a8e52ecf2d88f8a29df01daa5082312bc206cc00433ce511cc534597d08010b508216010060fa038420526157c7996239092b93cb7e86289daefeeeeeeeeceb95f1cb4e58a97f8773f142222fedd6de1127bf1c86ddbbdd6d6ea3ef6fc6ad832e9eb6fdf11d1fff11bda47a38ba61f8783b6bca43e14a26cdf3f22f6ebfb37c43e0dc74d0890bb817bfa99c3e392ede7f7d53cb71bce7cb14881d6558fd28e7e35dca7785ce2df7f7f89dfa79fff0d976c9fc5441cbd596029c3e08e2a4e9ea508c4c8df0e34a0da6c13ea124e79962228ed11dd38b18cde8eff8f6e4d9f3c7f35853aae5730ddcc991406af28cf9f74d6ee99993ee7611e79fecca1503470b7bb7153663e4042148e80a52cfaca58113870efbd97b419784106558c30040c64555ae05921041375a757f5e631959b0a91134555805144c613d40082d8cf754f971b084564b1a2045e9e3210430a5a2f1673b6ca82d4791be7173bdb8f2b1ebd9aa2db7014f76362a3954ae7134b4bd5ba5405a0fff8234f262a7fffda3dddd3d8eb157dff2de4c2d9acfe1ab6461ef5a73b9d754e377d1a3a45375fa59a29fbf4bb1740af574c5443c0ea21572965a29b39b408100758dfc7a157dd0d1bd0ab1c7a4571f0d6ca59f4dfcb56956d290224b2fdcaa5f0c82427db6b2b25029c331cbac79f7e0e8e7b1ac3e4c9850e52906b9ea50838306979e2105dea46a73cb1c464dd3f69bc3e75dc513aeeb6eddeeeed7bb76d73b7cdd5dbddb76ddbdbb6dbda9d3c57bd9a5faaf5b77befed2635c99dd4247712a90e79d76dbb6b4f758e6bae26d52bffeefea9e34fa780fe7fbfb91fefaddd5b6fb56ebdd5baf5562b676b6d7cefbd7d6bf5ce7af36b3cba72ffe4ac7beda9b561a8b50ab91d76d5dacddd9df366f7d45babbb3b89f4eeb5a7faadd948b454ba25772f7d3698f2c5325367be757777afd7737777dfbefaeeeeb77adcf7ddaee9d5bcb8f6577b4a9dc9cbeeee7eeff5fe6a4f75af61a8d5746b303d79744a4e9e5fd3ab49b76b39936aeaccdfdebdbb76adb56baddeeeb57278f4f2a5f5d6ef5abbd61edb30d891666b7fbcbbee5a6bad3dd51b861e876a76af3535b76a394baaa45aabadd5fdd65a6badb5d6db5bb5b5565bab9d3f4a74b37bfc67eaccf709d2bdf71e76b7544bfebd7255afdcdfeb9597be0bc79cecdddddd5cfffd52ed5bbaf7de7befbd97fbf1de7befbdf7de7befbd97abbd72f7c291494eeef7eeeebef7fec89347afe6bdf7aedcddfdbabb7b4eafa6b77bd71ef77b1b867baf3fbdf7de4b83f7a4e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e77ff5269ab3f7ac53d8f5e71ff02e92a73ffbde2de27737eefbdf7de7befbd58d52baeab73eadc7677777777777777f76ef7923fedaeeeb59bb3ee1d8e5ee6dafdfee84e84e62053872b7957aa3d0d4389ebc252480a47263ed99febeeeeee9ebddabeabb4e65b1b06f77ba9bbd3c673f36f22d0ff06ff25d776239729fd9a69f5b6f7a9fbc5f5c7fbf3da4b43759f1e159246d775f767487a8ab99ff3edd7dfe6df30bf542a954a254a873ccf6d9b73dbe67c8f7edb8fd65abbcd896b7a353fd5abf9a470fc3c41cfe37a35adb5d6d66cadb594526be98fd65a4b297dccd5ef6c38daa7f637fb37d8ffb1f6584a29f5da53dd76a6dc8f94526bffa7a710ee474a9bb316d75ecd9ff4e98f5c370ed94c7f723475041f1f9f26394c723a47bc529bc6bad93df47edd701090d2efaaf702e8fe0dd96e77bdfa0da1df5f7dff86f8d34f0033d3bf21cd9492a0faac79a8e6fa34b53311fa41f3e868a8664abf668a696ca06f9f560f01a5d92906267dfbbdc476b3877eaeb96b4ff5f6a3a386a19708d13cd499fe51a6b37b6cfdd17e67432290664b83eda19e21d377ea62743367b4e514e24fb3116944b5a6b346bb44ee1f65f27c3a5b967456d31fc0e97938529bef8fc84df6a76110ada9f1afb10985684d68657bdb0217bc00063160412549176745b557582cac0a6c16560bbb028bfb2d0aa68f119782e96304caa68f918a8ae963f4554c1fa3d595e953b14bcaf4c10bacd06fa3983e53a49c44a31d717b2a56a68f519562fa187925983e4629134c1fa39a134c1fa39c29a68f118f104c1f234e04d3c7081cc1f431529160fa183d14dbf7dbd8f4d9b04bcac542cc2072d8e522457b9ff42e9a12b9176206b1c32e2166104bd8453405174254ecb240110b8ca8b0c11547a24b8819c49897b249d95eca7671b5b7f4ae6a53d5ab787b79984afbb64f61d78e9d916077bf845d9396242a3c44eea56c2f257c008c25a4f86203a294ed05bfa89e4c952def324a89db972a0d76917e06e3f0f304551fc42e4a3391bd53d6381526c13ce81f27835da457610aa35d06a6bba8e4289655268a90834c219a01920000a0004316002030201a8c05535510abf514000c6a9a7a66541f4ba41ccd625021448c01020200002020106c62000fc30f09f7f8b772e5213d46283170154c961813b14c92c72e3b5500f58fee69aed566132c1a6642ddb4591ec0d82c0ce0b689ae02f6bed736e2ffee7bc3d6bd4b64887ca60617554501e9f9d9b157f26e16dee6f241f5308d6f30bb2020623739cf39067fe72f79e11fdd3a5956a9dce35e9c074c3a35c836da387f6f5ab4a6784c58b16eaa2fd760c76755b8600b5f82468dee413b55afc97b882f6fef194d6e40ab2c05a57903636e354d479fa581d1be86ec5b06731efadd34f16ff09a9e930f064decd147f547abef5d1d944dc5615a993605d0842a2910eda227b3d8de67b3d8a07e7d0668279cd961bae42d37efb0f1d89a53bfcf24b293e17296d9c96d9c5856dfdb0b6aaac472bc56c99def10f4187f5d277d7e8d401c6b036f4d6036046d339cd54d85661665d46a31205ddd8e05ee9403a69fbfd2570fb21c3b9306406358b41e6543a83c93e3405615a2a05b9628b0045c10687b9b84c389f8959474cab3e7cba92ae917965daa128ddf946cc7468072510c53bd99884e2a5942d6823c593de43fa6f4d6a1ede5731e37ab5adcc01fe34fbf97b6430a451a453776aad17fdcedc3ff967ebc9f65456fdf1209bca90185458f1f9e624e0060cd322c33ff30ee76516a456293c7d6262ba78f73254bc8fc2e600d3562b9b0969ca303b1d83a374059b6a282a20af291809e72b1d6d57a461b649afee460272f84f7293dbe53e3e2c121fa8c5b1931deff7c804b493901b16d59dbb00d64a95d58846603d002e59ff2a42ff3d0e5a37d7255a60689a483fa392a0b31acea6421ed894f3b771ea0fb503260bff551f580045a94436c5045171a5e75aa94c7d9a8d3330cdcb0d96de81e60a6cabc9ee6d34341978661f80ff365bb148dc2c5ee93af2c1368c686d6fa9caf84d0bdcf3d638462c5ecf58b1ee20747ef22b0faef74d7fc6c3e1102ce94802972c8245b44efd31c9d86393136dd71a53bc17acf6dba059e6d64effc576fe2d4c48b64315eca160d2d4a39f8ce3a230d6fec9a0999282330df053f486528c47f36827af1e020d4ce16accf61679e193b903cac5dcb14fc522a2ff1998651f6976a99ddc2ed930dfb83926ca5d9259bdea99015950ee4534cb0dac3a9350a9d31c285439db7e0e1188998ecab2f3a1c89c00afcc83670c1ab792faa7c06986f82fc8045564527705f07df24ef97a4a5847616aad30a77049a52ad0e70437948725a02c0f500a3073e08b3e1c0345ea244384d1163bf63c50380077c2758071827e7189815c77956b31ae09ce9f8702f88288926d0136fa4d018e5afd5fa73502534446205cf8a0d2af324bac6c9d6d5869d01caf2da1a3523821a509efe6e35de96298605cedc96262ddd27ea87da327e3930749ac312e11f19e4c1c4ea06323e2651b2ce7ec555bc0ad700a17ac90c4ef0e795fd5016c3e1bfb231e31aebb9d64d35339e3211c01979116ccd101407c37dca90fa0ae620f176a22449c18a3ab3513e2d174fb2f77f3b4559c6aba5378d1b424039c9392767c45a5662a488ebb854fe2d0972ec99ae9c18967506122312f26bbde48c816bb859db5e50a4b9053bbe9803cd5567263fd160cbb803a4454f77e8ea51f5598d0d4d70b4de0da623466f8f577a82e46d7e7fc46cea975a20f31c610ec218fd51f7c25b5581edaa108a6abe86af8fd12052eae36242180f10a0cea5ee2b911928fb87183d9474fc8531c84cd62bca6ba322f7e2910aec312dd296ae51819af3ac44f6c2cee3047c99b6d41e8ab8de90b4d94c502bb2b14baeed5489ac01294858020a5be99bb162de99fc8cd01ec6f8e11482b081daa79a18312c2973b1274045f123173e2024f49858ab8c56ef3e4eaf2df301de7803be7fe543e0644228c22f3ea1a7a6ba682f0ff298954083ebc1f4c4eac1f4c64dffcfcaa10db2a4b8cafa443a33ffbea2aa9fd07ffec4cebc8a79ea3f112039f517a463b4633142d546c5c7d9f419b2fc08bd0a8f53552d87cdad41c74220c47ee731ad72e41097b18bb372de56bb7106111a41558f5c9088539c3fe2d72829d85dfe4c8c43fd6f151f5ad4f7cab30d28aa7ead512fbee3259f18c16b604448e962275b7dc49e07dec589904bf6e30cb756510ef2ab70c84f2c36d772116797292a8b937a51de267156fd372e5825500ef4d3abd56f640fd580a6d973e4f0b399d4c88c0422e3d31982d44bde5f47c69d9c1a6719e4f1c4422b4c31b926c24d2ce2c6485621a7f021533e65a004e90330a2188bb2024a2f2936569894fad95db33a02a1e44b051f36c6bac69ed0cd3ffd6fd7df949edff82a7c5d0424d49384c75a7c8d65b7a6d761710ba1ce905f533ea045fb0e994fa32fb732444d69081f8c4a48b28fc475e45df888015dbd04c476412da8a2802f85782e96306ae3aec55deb370c9412def7e1a2803d14f19f30b469af87fc8ed8ae75fe91424b0d24b5dec3299481e63a9566ffaa97b75dd0cb02110816180533a72b203c1102edc3dd49b1f1f2c32682b7ff843fcf945ea195e53c502a89c897a93e9d6945d0bee95530794d639dd00fffd11b16405e400ee604b61f4c00bc0d56e1c21e33bd7d528ecee40a2cfeeb16fd80dc5f4219054215f0843278fb39bd59e1c0232a9c181408b1a7cde83e48608c03a59efd2ff0b089726420d93aaa8c98637fcedc0bec0bae3db2b785dbde2a6fef56bd0fdd593859ca22d60df570dfe8d313c33438e5834ceff37c9cb8f0c68d36ff6fec62677da38b7583e994f2228ad2897a05f7e86b473f1a6b1e6d8196bcfb547788088ff4d087727f1f087c42e5911ed5ce7a0032426fb1d568e5f7b2f762f5b2ad37d0efc5a613a38710bcca0037ce86838c030935e67ba6f50f216dc20ce5b0b87de17ffe64f9b7969d381a5dc37f9928d7d8ff3e2c78eca574ed2b9c283f561cc87673ae4473728849b737a737814e1533e1fe3ecd6d5d606a277d811859eae81c101cdee7ec8d69bc5ecbf8d707cfea4027379c4757ea7b94a2e4b84c8aa5f17db4f0fe1f665c91684a8e8f5f95c52281560e2f43100eecc4545d44f7b6ab3718ca736ca0cf1dad2598072bea1873384baa930a0c26d5378995f16077a7910aed0a307d31a968113a5851a6f12ede9065311ccc45c0933970956a23193ead2ab1ffde0b09852c4c9321045659763e16a1cda4f87e2d529bef6ebaa21370d059ccbfd57b62baad54105214e1b69c4a1095c5e640d7da73b3ca4746b1a0cb16e094e23e421296a3305164cc9a49ef64e91f68a7644e66f8a314edce8372847eae1e432e6a8ff54f3f46e2f7fc12c6864969941958e6bb30e55ed3fa4f6f3fb0eb0ce19267788d5f95fb73f50fe73b0ce36a6cd702d200ea1d0e46fc7c89c97002a3f351250d32e2dca2b68c4e522171d1a10121179140ae59af7c10719e787f034d2e1d2a536c21bbf9bf12669b025c6d52e7225bc1734cb11f9b68af2aebf172e31a4c9d8bc38ff806b1290fb2aa8c3638bd33e24121332f5aadcb2ccb531f03f0f60bde9a0394d84733dd4bbe73dffac03f691603f7d3a68162ebda0d799bf5b175a0f3f49d67dbc17f4b0756da3a3238054ab093da7dcb33540a4ba60f8f52c62e44d79a4c2be05e723812f5241b6faa152289559b6ee29b9c48785c3880c62b6d8bee204913e06f469a827912f2148410ae4b66e8da13a5c9e7b6aa96fee41ea1ba32bfff7257e3529aa672a889e2f85ebbd2ceebe796f9e6eedd65a121640ed067dc21757d4d98e8da7bc39afabebf41934a28b8376b579ba651cf1f142040697431518f6ba0effb2d404919142a18750ce7fdae989c427eae6f366968699628868ecd4562536a663e9550e30d41835269040216ab80f0eed10b3401f488de88d0e25e6bab28c6bb47b34b07d565521bbe350d42a357eee9425908e826649df849e58fd802794128a1831a95c1de9f7f3a07611f7083466a4a8ff047aa87235857f91852980f478b44643cece42488f7bb021bd169dfb4dfef3750ffa95e52ddfa81ddfedd24fa375af60311eee518dac6a311457fe36256fbb084e8938fba55938e8dd7bf4616507beef575957acd397f85fa0e264f06f438d324e7c29534070105581a9b504af4f7252b75ee73df01e17cef6b83b4ba04de76a6eb4bbcd20f1ddad3d60a7129460aee7f6325b5f282e0c692d67e87dcccbb2f7d1f6a941d99558f87f252ebaf28ae7df212055ba1ab39695f8f75348443c5ba95cef9df961d39cafb59eca0b6e1f71371491d54b5d02c42838c70f455fd6d9162c3db0569d6f4caa3620b587a9416bd3d74e98446f172d8c9bae41ba1383732a52f1ba408574c6e57ed9d98ac22e8c284f6bedfe6c573968cc996c892e95d91bf33e82c5438269072220d99618ee7bad0b853da87ded75ed7cd37d3e40d18fa4ee89a7d5350b423e5ff4398d9e3954d38237e5a82d721d32a8b809861a303635853321201d01f221b0ba1d847ce660d2d8ac86a98ff37f0aa41e782a1c642dcdd5de8d42d02d9da9d50c7b561b904139b87979635cefddcc5ee70106406f22a0dcab33752cfc705269f0d5e224a88d350f28417f33ec6516da09b40bf4629bdb291060029cfd2a07b0dd8df08c0b4427a0905616a23e6512c21eabe7495996cef9d175a40003fe0b08f2f2bb75e04ba02579dc16314993d52f44463f7dbd2d6382fa04876431d770fa08668c90feee81fc9123d5cfd8d36c6109d678ca4c9f543b227e236ed17e5769969e153f6588cb75b5494b8b8c7ac68066d9ffd757ca6b6c407d493f08b36afedbc958d894f8d150a0cf06288351da83d9ccecd42b62c61369f764fe42515d3088826854d2154795b52b594930b365a3cff466bc3b780c495e34e34e96f07add1d9436ed5675c66a5579386f580242c105c465b978e04d91178e6abc78b2fbd224cf214a151ac85a9fc931c05ae25454e13863ab1c7d164fa0f30f14b0c6ce00ca9449a5aef3022b476a431f05f9aacd7e038f5d8e1b128337b2c2fb3a828bfd07c63d78377fa784e168de8226fa3f2aaab972e3b054d2bcb32bd738c7225d9d57948059f6957456b1afa5a4c2aacea406706f0b8ca311ed62f02dda28d524661d805c095319aa1affd2217bd7004caa605921f4769faa36d5600d0d8ae1de4d41802a565ba61fbd50da73dc9fe82462bd914be0a8053638deeae4829d73a4c32c784941b1601ab30b3c66d8f061111430c43c95f9bfa98ddc812dd63ace89fb4ac7be7f47aef28e8a647360f428f96b57877c3f62fbb9d0feb78d68739a05a550d84ad3c53fdd7d709323cea9c849aed70807e7c75477795f4a92345f5ab979a239c9415e26e4572f1f9debe502e2ea6f5254a31878a8b06f61e9130636d8803cd6c8d92690eccc7cb861f6c90520ce7ae8bde5316801a211504e526cb71bd9d348314b9f2879b50ee8e198625282c18e26cb7fb0eab14992822a9da9231b5a6f19d1756d66043a0a2f426e346a5f2fb9e50a9d61712ba4a1ddf216b7c21475a0bf4f7769e0667da429fa46ef8e0778f07a8f494a70a80e6b42385daaf461f8a7444d3898c8784cc4441a65e8bc4de7c212d140daaaf698af9b220930063298127a2982ec6441a1d63e00f247b8ab62f9f5df49a00a39e222be866cb5df23a6d80e44178f52abfc8396ddb71e574c9c6a230b8959f2af85ac0aaba6e681a8b4a8de88532bf7c50524779c3c3054dc660a38ff0ede4fe513d7f71208f90ae9e5c1fbc8360bdb09ed353ceac933004a9253abbd76caa360ec8f1b0c89c167baf3bd496b9e20198f9a509a7574456637182689bade5a848a7e8466d5f002b06945e2bf4cdb5f4eec95af4f672a71bd6a7f04628559d5d9fdc42558702466b38ca51a10271d554dd0e4dd5aadd0f868b2950691080201460e3d442a264dc382495a6c7441cec29ef226ff04a2aeff27a749cb3aaf5a94ed2a65cf1a70ebb8a5310cde5eb3e7517ac1444756da8c1548a8f6bc136665e7daa303b66fc6242add0108bb6222d94d01b835241201fafc4e05842608b08e76adb447112b6bdeaf785ec54a9736373a8b9a14c0e47e2c15b2344c51a568fec3daa90b9be1e3da6944860db9bd8ecf416e58cb85d64a48bc373d043cb00819d4671e9b38a56ca5315d7f24f6e1f0ed6bc51ce230564ceeab26588422efa96db18bc8049ff40b4a8d7dd2face06c16a7a2589dac5e31bd919b188e4ee2454e015799ef7c900867085aa15ec545aec8670efa91064df376f26e247ae6f453fad269fdc5be004ec7dd6d75d02cbc11fa43667fa6b50d2d200d88323ab90dcb287c3506929e7321c238ce5eea6ce81c743955be42de9b898e7e7524fc84ec344ed33a3ea9c689c61ba7c297898ce46734d438e9f971943b30a16f9c92d0485519aaa5f057404c6fca1f823199e457b46def1ca182138e8baae654a5e4bdcab984235a1be231a58f94cfb079a4fd0897f92189a804797c4a9de58c3d4fcb32b1c4a9f222099c4aaa2d868b9e9acb7144698987772e92ff5c855bf773a03cb19f74912c7027f22716de829b94ff7fbbf14a0c657fb144fbb67614b78114ca99081048d991b147508cd922c7076b56b62bb20f0c5e9bb28a588d094df6b2cb46f26cf5ae766c24645c56bfd26e805f8f8f867e30037fb09ba805b88a9c69800b00281aaf089652f29000ec7f26ee03984f0bcfa9f561adff6043a1c453c886812d8b471b7967697fc65d99382fd477aba9adeac8395677d5ec3afa17053cc6ccca716b94c80b573acdfcf8a3adcc4897802881817bb3868e612ba1e98efd2b197ada716d00be87bdaad70010a36709c10213ed446682fc510528351b54622ca8a201660abb097c5b56fcae22aecc478ef3b59b24617dff16219c822dfa391a9666bed538fea0528b2697e1a4f073b67466f4f51c05a400eba04d53a65239352bc0a46689ed14004019b744a7ed98804fdbcaf747eb2366b9f2a70648ebf7e311a4fb18f69deb511e0192a73f08207822d4fa537f5e2d3fd3f4b7e3cea039a75d078e915d06a7db7656991539f22f5bb5af6e67ea3e90470b497fdfffbb087e4b30a71a3e77e49f141fe73765c8ea104bd778ae4e0dd2ff2d79d3ba90b1886a04fc114b13b5c839b03a5a054810fba943be499a59639ec27e6303bbb934c26468ede63d1e20a7124013151a376e0fc935bc2ea74da73f269277c1b96978aae2d9d8ff88c851ecacc38a58b3db3c01b6edec6f9148540ad0c6cc36e138177527dce8f8e204d92c1e8a0f73651629c2126e94aac284cc80995256f0f1d0bebf303a7c103cafd7453b518ad1c0a9d84a1f7eaee39405e387157f2f78829f3288cae26c0c4ea278a2189986fb5a2219de6079d7340a710d351e48bc73821070a1a8349784c69cb12f450feb139e8c57f6a7d0b71fce30c41e4e874dc35276a700cd0d607328d099f71ffa5271ffaf481632e6c540a04b9bd6c52bacce6627db26203f6d442a6f2b0eff173b3d571ad71659a259266bcf7dbe65b9466083a3a44ba05ee072f83cb07feb086bd856e90f1968b04c3818be926dbf33177550f3b7b331cdfe260eeaffe27c347b6ef132670d5cd09b774abd7d507410460033f51e31702817ec82a2b2ef07bcc685deba0139a4982ef8f6624fb7f0f9dd45d32aadf35c83cf088047dd0de4900492e433ba64a1f51b2ba6136af69c5a5ebe2a06133b740479046cd5da9df07b9f5c8030cc7c264c0ff41313478c3975ee107ced60d687207459e678499583b943556ac08fb8d815049475500922aa01875d7fe67d245082a512b74278dfb98c9c89de1b4bb4ae44efa2a6ca3e40735df6406ee0e962810c76cdb06988e325dcf716c4f441a819706f4ee3afd5802b02d97204f97f907f1c1c6810ada2794223a0d984f5d06358a405ade5e7fabf51752e913db13a874a266c3a59f1c6d8ba684e8846310347c754cab7149778b9222400c5df21ac9334c9ea1f1600fdd8576ac4be54e6876e27abf93721e0d111782941f946c0b884d9ccfbd0746a8d99003bbe14a9b26a397062925b19c32381374d564082da30fcb7ba69cc875e44cf42d7ab2bb3b8c5450f7fea8162a863079acec930dc9e721106718250d62f8870993b064203795c7fc8bdb21b69378afea5d1fca4cc4be32998d39aeb9a20eda826d22b5e088626eed7cac7ba1573ea17d3585b5a4545d9ce0a3112c860179306910759cb9facc30625dd6c705886d4ff20e263cef2e5efbbc1c7d96756cadf8131b740c68eb1144c72cfbc84a6febb44e6d75210eb2ec5171a39a4fb7a6d30eba5275f63e0771c402d4eb2771d379fabdf289b93e8e517453e3a8b7e4ab59ea9c1806ebd6633d9b5edddae1c7bf74f0adce3db491ac37ad2fc6265d56e4d8c5c03cd389d64fb7aa72e7079428c3a13b8faadb9263a33dc7406fb4f160bb718fdd0fb96e556e48b21a9babc9a95581070d857c0394acdcb2b56bba410946d19c064dcd47f834eab04d179b516802664225008980648424f1bf1b6f0989dfd531176adfc73c891fc69eba5b40419cc180749b652e8ca052b5ef8dd48070b8dc41fd4894876a2039634fe14f8e41b3ec748761b5dab84052b9244b155b89974113f18590f5e52497209b5aacfd2fe7815d84b9a967321076aeb97b9fa4d17da2981451bb2cbda73f965f34e3a38a0a8a2b594857b7dc364cfd7c8f913e996c01aa2c490b730fee2effd143ba217b1887ef3cf65b7675f7a2c89307bd1827cbb851e1631d0c38bd1c97debc2c7019c2a7f372fbc63c6e7bbe643640197e633281c2dd91846bf52b95053aabe3840cf684709df8fa288af2961253b52cefc5451907f01cb70a29acc2a26eaafa2df20180582a838ad5ef163734849edfcbf5c4a9ce8181b9f5311618e1c0fb8913471c14aee9942b0cae5d701d24ae40d35805ce06b644c44aafcf827bf59b0b1057449da27a895ab16c2203a5c10f8980b56ec2f73f1455f2513e28001e8d1fe14f43bc34d37f6e260fae20330ec0e114c1c3d4891ae6e4d5ab15141eaaf8de9de03833eb4856e2c513f97e29070ef2de312a4560f400597642408e6beb1d3746bf4bad488bd946253b7bf29d5d27777612c7b82272eddd8d0a93c37b6d276af528f5e77099722ad5a142c648ba7458f1519c91c2bc597ec41cf2ffeda7472db597e653394d23dcb0757a59aaa211d574b44472d734d9ef650fa04443d130bf269c6bbb6ebd49e2927519fd7b7304dab46ac1ec501ee979de175aa9242d15cf85675eaa6353020fa750a5bbcea78a764e2d0b6b297154068f322b193e258147b947171dd4b586d9215983f05eb4b49b73679d182c5d663e3f3f5d33693901dd101a49e076b715c8dd9ae0c7f21528bbbf6e830151c46818efbeba24c24e81937e6a85d98ef90a9517ee89c8206193015f9cca5e2df1b4b9b999eea5da06d1aadaa9b897f2c5901748366099b6428142c7c3bedd262141cd67d80281142fb3708da5a64393226b8f317896bb0ca5628deb999e5719d4bcf5390a08f163b47df116e25e4d35b46b2b668faf7674bdb2e238b7185e71269992540a1b4f955785bf8519641a7ec2abcf83a86175fd38ba08dd40c945d3803cee25dc4f577df8d3f6900198d02f06d0e13504560254cf08fb0f80b7a99e3876d22004b5d7a101ccfed0225d02d4ca048fc8e0169f6040498f49ac0114e62ea0928cca02b65a698ac3a61824ab83c07afd6afdc2d5a43d10328f71d56738f01994b023b475ffb4acd59eac5c248d71a87fa691cd00314b6077a0a5913ee06c586230893c3f23a97163639bdb4734584e016e2658daae23346c65b3f457da5284eadcf292d270615bfedaa90d1b0cf10866e36c6cc85bb08a5574223397f40ed2df6a54b0fd9b4a8258c20d9924de7b8ec26df0285782278818485959d1c5a9cacbad171c2a798963962a952af62b713066a90de07f1840501cbfd297bf303c81f304c57ccc54747e41cdbd4a86c5cec5e460664afc7d800064e21d043e4986c0a8b0e4bebbaafd20df5eb884915e48ff1949e5cf1129b98499a5a0f7e65e0e3e20e4ca58568bc42ce448b89406de1ba25b54203b147e689df31ad80e99201bb2113944e048ace0e684d68de8c93d63e1e81065c4f8c920bbc00b6a2039f05d4350619379bdd2a07bf61713b0554563dc2c0ad6832b2e4cba12cc3930fd70266c385df0d293d4d6f3fc5a241d315a65d6110969540218fef38b83a4f5e1a515904e36e76667abe78427f9fa4d1a775ac14be211cdf309412b658cae0cb24b14ff1ed66ca9c4a0964ff74a075a6b5b76fe8deeb25b599d888822105518ec402dcec672a86c6f05cdca9a18aaf971985b68c97a0315f839b105183537697241dfd3cef63488e9e0208d2c76e7c59d699f9481b2af2d3a4db7b8f1520e1eb7f085b2132fc64a382dd1126e981d7fbe3178279f87626576f904551f2f9f2c028bd51effdaf5b5208da8380c3355dbb4d670455975cf222373748205835dca2b1eddc3dbb391c833a3b0b909039b3c3ca58b36545e5ef211f875dda2c91c1ccd8df260d23c38156aa2838e8e93985444ff4b774c8ab87f010de4a71cd4ab3c1b17ac6f1f88db7f54eeef85cfb09cf357e9498c4f463298fbefa6d624996d6bb2945682977106f92d7e67767566efe3dc4206ce24aa6614dfe3b20c0c941c47d6eb208caaee1b9661b98cab646962705a0d2b8510cb7a0912bfd4ff68b021e4a2a2f2b5119d325633481281c426aeaad0f108f532e1923fa4a9e1905e4895c3b38e8da2f501211a35e36b68ebc6a667e3cc292ea2c9b8eeb6b66febcbfdc26f27ce9cfbbba8fc10e1707d9e9e890eb7690c391e1ada6c26fef0da4296be9d057428ab4722d340494c3d8569af82527a1f3bb7f2544d165fd45eec8c70fd4ce9a7e976e8413a8cadebe35115118808770613337851bf29047501ec6d0e07f4efab077c09c549186cb9f40128920913278c28a0dc26ebd8a586d96d955411c0e2173e16dd4ddc114fff94f6f9b9005ebcf56e8054ca9e1228aaa557d04d2850ffa0adfe28748d274928a3da3639b10f7e54839eedfcfbc815c0f68e81f3ae0ee944b8cc2e292dd977db89d2f46907bbe3e1b108971213433fb13868c6222ae86bf152155db3a6eecc5ba1a56e0bdd3c0bcb1a224ab24333952c1b99db26abb24118eabc3cf8012170bf877dac223916cec07adae5b029da67f91857cfe282da2000de1c74e922a4e09548c6a26a23db90096237d3395e8d0cd34a0c4221d9840cb4d4bff48343f3ab2d88e4e2d4241327f731335e041ad73256a5ea39d1ec03c06d81f35cadc49e5b27d626a2a0515dd561b0237ee121f402f4ce4041e2cd6da24112fd107ebee0b77277d1f4b26f97a3c948569586d20affc32052f56451c1a4eaac2925a7f031b7e41e8235dbfb8ab5d32647e4f594c226d2205a0f57080f00d3cb2dff4aa2ba0703de008c84dde901bdb25b254918d3d6f1d4b55bc5dce692715c8a934c0884333b325a2c8f0875374e8021b034ab8f8182669b896619ef9ccf28d0dc1c464420391f4c44dc0a33eefba10a65171cea7f72146ebf9b494f3edacef9962829ea63e06e176f729c14738ebc0504c53aa95b73735b14f84c14adb291076a36b3bc07a25ae644bec1ca5410e9b7bbe42d162e861dec3d362b4465215be93f96bf2288a8fecb8d4e596d99358653930ecf124d3ec373a3989d84cbe3533a1b5f90a734b57bdb7a6737b8f758cd751bdc939f30c68006d51cd71c8103d201e48970c7a552b42b3ffc34728953831095a712cc3f82c50681f0c9ee6259dba6596e71e6951683ef2d7eda2b699a01eeab48b961fbccebddd3a2f72caa00d0d6a766a8e64a6f052cc0815515c95ce6b0a0a063e6d489ee4aae82f155679cdf8b60460309e95352c04e8f0026e1a7a8f96b393599e49a9dbfc4a833a500c66232ba4f55f84177e936f4d02e5040cca086c5717b66d52231ea54233c17f02047da19a139065a4f0c642f5add2611590d923e886754df6b657b26463d001a50059c0540152406c55bde2e6d66dc83e47f6ed7800af950e235080b1e9dc689a9bd4939056e3c5c08a60409fee294c442dcec5894c6959ecd4ae1de176d8c82e706d378b02aa758ab8d03949b4aa1942b264152ed7f45c246cf111365d8dd984ad0c5b3210c86b5db647991d4750b4c5178316eb006582ed26f1172c2312cbf9e7d1fff0f2b2c827ade88144378f02357987a0bee94c8983149f3afb2a624c2b19cb22c18e93c95498c0241bc9aa5463b8793d1eabe7d7e11d34c592a1f529fe0313857af97a384a0b0dcbe0ef91f25b6b54d8f3ae45dfd85751ea5da71ce604902a610ad438317f71853561ab2bf1b100978b1bf313bc4437f5b27448a7c951cd378f8fc5085e4a440a214bd71622920ce014e6741fccb47537dd0120e9d6e9aaf94970395421c8ad3efa796af6fa22ab6c588fb2aa8a83ab8a53e4b30354076d9a3e924d258be9dc0e5958492d80ad3501938bf56b83b3a97888c572063d60875a2905e9ffc1c9849218cfdd1f5b2607a05f7b9feed07c0c0fef6f0c90389e154e9b0b19cceab5837723b77acc78d5130f5514e78f9cfb1ee56ff8c6e893f18702ede77113c55acdf19914639dea2f2bb825cf8a9fba46f2ee8368e94284b14a18864c913084182676ed66a3ee8f88faac887c096a842453da3a73d90e5b41306bdb3eb97a035d198964ec8041b860664d11917488ae2d58833d951030989b622110833cfd29d097a42cfef3ec34e1e1aa9869e339facd9041a8adda23f49cbb04b9e630942914fd63a74ac94a6d6d1eab278fcbcbd8ae32a14fc012252371d4901f40a912c6526b37c43812964732dc61174f9a317b247ccdd7a50f7696d5a52bc0a2294855d17c53f8f4b53581cad1525c5248946ff49c56c614bfad52f4af886249ee369db7b53b6227b60a212ae7760f9b6c44be58de27bd68956e6ade2a882d592d9fed9367e916af3c3ed3786875b1149b7d21986c63469020da0db4ae50ab209710b21a9766757aedee812868a81392c08a3e2fac37ca095c77e794159a2d1442f8d2bf21040962fa9ae72eedd70a94bea87387353ecde03b8bb905afa6625dfd38f3b3acc38637f4a41b803d8a539b1cb66ac2d1791278b4894ac74b1f668a232430e635c1a83c7102c7aadba209f7ee357fe7510859529e4b6beb955f26c57c7448704133f8a55e014a65fab665c5ad2881275bc6baf06f678015c7807d20a7b49ba87001349564afe31587693f34acf33f4cce38855603a24a1e7657d3f4cd0c324152d0b2531d49edf712c5a626b6f3965fc8e23fd16a5a2b8187e8ed9dd7a96f018289d9d8e5f00cdd49f95a79687c69c73aa7198aef609b9a371a4eee99196ef93e3c6e212e46fb37990e27cd9af2c8ec4c31be4f4d9228fac5f0c8fce625d5ce5e3f05d94cfe7cff8f24f139c5a0b6586d25a4e068c9aca9a804c6770be024e417ccfb9690006680431fab15117f66f3dd39e8937e05b72a08be93cdcc9274e687ef2078cfb2c5fe149701b4b62880e53182ae57a12422c0cd90d345f2737b4370a03a8869c4acd9202b426a26255114119449cd99b2c21ad5f29e9d6dc869498481191c843b1b856319fc565ed649896dcb13b4b644063a1037b9efbb02bdd341b51644d6e4fbb9603b7462f5803aac91b45e7254be20da5042cb2bc009887d864c9b9a7e182046e85d52ba7656ed4493eb49ce3c086527971256bc9536af9b248834f1d47bf275619625c28407eae14d261fec9ab8387d517c37a883703628097779c95c34021949d2d3bfee63acb6dedb89402e44a9d9c8b08429e15e0ef84c3f5977ebce8c136bc322471060a9c25a603d560433f3dcdf98c094f722ee2f58158f5a945a3ef4e1363ef7759be5d5d449091ed74939a635d8ab74feb90b7b28efa2231b7e1c5de280bd87007deedc284de6535d1fc96da948336f0af26e5c3de19c4389247feed59324244840069cfb6fbf7319c4a3a0c46789406a36c0aa31fe3f3ec57e4502a7945294b74e0d0d4ed35f59fbdc9f6f7cd5714c979074aaa50cdba4a8cea679ca467eecc3200a51dbf947bea22d4dd515fd4ec6eec3a60108dcb0927880d39f59a59271c1cfcbb7a5b46e460f5b5309a4cc375e1358764ef0b7931fc0d813ab925a3e544069c8a21c1cf3037df1d5a66032a76cca5ecaf2cc403d2a4894005853188cd472d867cb466e860e5b4c31cbd03a087405b051b7271aa695cb2f2392817ae4bead2da458de400cd043d0a36caf90abe70e1453a3c220b639016b9420ee47464a20353a40765da5de64b033edb81a07b21608d91881efef5c61715243adff81f83045d0431f2bbf2c1980fed399c8ecd0f22263c9520de4d86d102b466429e2945b8b44ce8af95c44e02c2e838b25dce7a2a5c776b5b82e1f613fca0d75fde143b9c0f70a3b30d330b64c89729dc07329e806c90ec7eb4f5f45522f66ddbb243bde6776b5ae77f1e9e2253657ab98650c177d51915eed702f18c4324d3051d7315f9b28915e1d9ccd92f9d22488f592c4faeb4539011d8212a6186d5d6c69c534cafb13f62ec6dd959db897c7ee12ca7c91bc452db1ce99841e9dcaab6a0076cd2c179c5c1866b5812f88fde2ae6142e580e9173d8a79e109cc79d4f4835f5ff06a95550e882210ae319be0e5f7a55b22205434d6749f58bc42e2cb77bf99bc94c4efc471574137d2c9b14ff8aa3326d72edeb5bca67c255ce22981516b8a41043fb7cb780e70fdd8a577d131fb0d14b6cbf5fe7399c48aa70b1d745011ffee6f46de9da69e550c42b13ca1d8205ba9e98a4fab333eddb44d8c57fbd3f90dbf54e7bf52f7eef23ee6b76404e5eaaa23c51e42ca612517f62e5b3bd6b543167212d54cb5a5c61adcaabbb85f9457377905d73b653f544c732c811d8479760d568b65bbeba585db255bef52c508e8cd6e36f5f23e79aa2761cf14b7d3312568ef52e1171da26339a9882442d4e28a62a3de2548486297d7fa45b7e6de2a7d088b23ab14fe6c976be77a0abcdfcee29448aaa385a859b9181abae63699d1bafc352a664fbc51b58c1f0e739a70503dd1f1b2d2cec490715f91df5604995e972068f50041331fc42b6a2d1e27e23b7bf89d28fa621a5974780d3a34af33690c57d5bfa14900da1904c6daee6963236e926f254f9403e7dacfc3473c1474323e769f19906875ac2e364aaebd60b41a7e57005b34139096dd385ed814e97a8e743d536fd5c50534c4d3b0adc9bd25fd3b24dc2a6da1d7ec1a81540e4c3eea27b1ff8b4278c316e41a00f1620791ab8f6dea0a5bc09e4094ccb208ee6fc2059ceb5ff311017a8935f455c0f0eec82d89aab872ce7d0883b250ebd861a4e8688966569fc6f24052d503f6eeb861d94a5fcbca7f206ec5f9129e9e671191fdb64036cc0d485ad61b951a2515c33218c7002ea139538b2a75b34638a9a7332ae5bdb64f5136a4606e69764147ae4c4afda64e8f606480d009e242893053496cc599900b6f4cd5c57e72ba4a3f8db7a1b6090e86b147a2c308704d80d9d77219a91665df762239c4b6697b87f709ad1d122ddeddb6c8bd79e21da835705a716278107061c3fb0785a1235458b6a36b88d0c945b476ca87c369af948f66b40428ac7e3766eff6ca8a99c9ae7cf1205cb8b9153509805862380f48246200d9f2d8e8b544ec2364af1419480c2d27c782aa6bb380a9a91d7011c1c78f214d4203585a1455bad0c21b54672da84c7feb14854b9641c0606c05bbe42a1818d363ab2e2323566a0a4a82ca73af988b3b472e4847d38ae0880b59cd538953a5eef2442dee106464394dc6569df6ca6a5662c61814a4fc5c6c6d78413f9da82164e4044b50c79b8f1dbacd81773335dd9d98ea609584a3961cd4788f3e121e2aaa006a7579aeff62c1d4d5bafda4009b6b0d2007c442a0bcd4f2ee067f94afc7bb5e7ee8241932499cab91b884dabe98ee41628860c88d9ce0f531e912fb2ab29bd85ece44c8c4999a135750ed8b76ffb56fe3065144696f6601c3a2f30ef257cd25d9d3f62d9015efe3464558da32359804bffcbcd0dbf403028a182aca7709f6db8831cb60459ec6b5aa8a761b496bd5c9aaa20b910b4e5db3fe1e4149d17d96e9b9543250a2300c0dc519e913e5bc2ede2ef381199b39b10e2482acc7c826cda4d8a754d936b13415154ff0a141ad9c6b0380a143858a476c8051aa78d936aa0937098d18d1a07e017a551202cb0ccd5fc7c0e971bfe4febb7771eef7df53bc9798ebce03314cc5e3da5831957d496d99e05703c0d0157121022b5c6dc34956351574ca7af0f7853900d62ca10ad8185280744501619dafd10f193ffff5a5e023b3af807aaf220657773790e29465fe88202e571123208f36397e1988f48e5971c51bfafa5da46e4d24838f95813bcfa8697487b3bed1b3a17a95dc412c6d691d70359900aa9d2824d70474c3a02660ac6a67e07584996a9a59aaf41a1827ebc78e8bafaa11a8a0b0a9c4603b097eea609e86fc537df7d52db31d5c54ec900758ecfc95feab6a3a293b14e8945880d88900502703f32671700830e85ebbc9ed094f277bf902f409adcd039c28ffef3f516a85eb7439bb40db6d651d7e116f08811beebb09815c7de33b526051a74c343ccc6b7cc28fdb53ae5bd150648c2673b109e88c32cde0e08c304061a23d052feb29813c679c2fef82f57bcfc7bb3d29afbd1cb1b410838c6cc9385a3fc6a75ae1c449e1fe868d160f080068cc8d8e46697c23120060907feef2c5d485be4b96a28c458cbb76a639953f3b49dd444c404be00382d89ca6f3036b434f96809479e04bafd2c9ef800341398f49ef26fe9ce6c4f003955c4141b6a8b2557ded7d2223c7414bc7e44e23f92a640f7af0dda4a36dfc130c207a89ef87c91e741202ffac6b993226d28b99f75721f0b123fba0525b52f39f53339ac3dfc2f3072dbcf1a485b71ac71dbee9bdea206d711e6707a3c2821d9babfc680b324c619f95e3211f289980f2e6f79bd044d963d9a36cf64ca4f9b5c08e10c440561e43464b5d52f0248067b79fd1fa9b28cf3d52db6c0e4effbdc1a1d9162326bea5160b90466e2665a030f3e55a06b9f4459ecec5d9e3791e5033145bf0f44148fd84eac66806269612a4b5eefc7acc126e6760387aa86b0947c50e0fe10557db5613c8a0ed9a8d2243f83ba4d444acb82359020fe7fe8f9b1b573d2f661fcd47cdeb236aadd99100024d1972b550ea184a3b237f64256462e3b48cfb2ff9fb831af2716301513e5e78ecc5c86d0cf05f504dfb24b0db08607d653ea31455a844fa12057e945643402d92d8c55a309f7610f49f5b3bf73cfe708c0e2cd405fc8071c7ac09f030875853a48ebcbf8be0a0e63ee236bf162a02b32b71b8d5eaa0eab46d97ab23b41e9e8964ce5f9804dfc8f514866e2566ead7945931d1389fd646c0db5fd6dcacd0d812475950e0066db69d2388401597f030537c897d1b88752416aa11294a8f8775621b977fd23f3ce624f9650c29c1af36e20e2d49b18d159fea57ba70e2c2c17ddf08b45826cb4ac4020dfa54ca13335087c254444232610597f2d22e8b22defeec49171c448b1fc0612969f77cec00f0687a7336991171ccf23724bc25b8fa531d0fd3eb5e6edfb41fd4fdec61aee0e4a8241c10c2d07572cc8dbc322098ebe4af47ab756888392c7b0a4136bebe3447a996ecc25b310c7127506701edd620893f1d5989301e9d33b2ee8ab82490cf4647c628230d365be5d1d69a00d4dd1995672d99277704bd1670d11d6838b5150f3e8f4ec85869d5f468c18acdc04ecdec9b7d64105f05ae5106e16518a5ceb5ea92bdc7d8a9936ac980358dda9609d825bf30ea4d6f565620cc9a2acad44ab870ddb95e91645b6116130da06fa68ecee5f97b515abda9b0a18595f415be17c5e3e3fee9c2cda1325a46ef5d10cbab82881942e081a14d312d09c8436064f4c663ad69ec995e286b0c5e839c11036ae2d88a0573fff1f514ede44493afc19ca0d4b343e37a39f53cc8994f9cf23fa14cda332ba14ef5045157e723e4f5901cba296920ef3852631c6d6685902a7ce7ec0e09017deca4a2e4d082505f085fa1e946b42ca6d16ec21e8cf15900c17161398825741765323b592098514531b1c8e43dd45281ffb2515a8274e6b47a204c6fb9f5197159c38b7b3a9443d849f4631807813fdab448996c04525f85a3e9fc0fc4bba01f10a02f49ba3702dea1352a66d87d3b7092dff0f614343a45740fa4c090d7baf96104ac40a98dc75075155a02867c3410652c05910152524d2db407ccecc00e25f97d2a1ebc139a83a76b0f123132a532193604b675a98a2481a0a543a215c43fc26c0f59445f8832ec7424940249e5c05ecf4d66860124f23ac97f7b96bee4fcc81bb61bc779b164193d895f9401a3bf1f72a2df5a494648f0d379007405a32a23d18a4bbb7a5dc0157e42dfbf0486434f945bb4da32e19a349a6fda7086933e5cc02021e9dac08fead4ad51bd84702d611730a976f8858cb802727b16733948e60ccb50ba458a01a87fb12182e14bdf0d768fe91c39e99b2921637c86b83fca622b66dc0182b48ef983f30d1133e360a2203eaa83bf2761e6db467e677b2188064176e7ec1b69d713d1f952b142b82bc8ca91f4dd5a7d5a6ffd8a9844914037670710151534a6b702b2ef6eacc3fb152c97963bf1e6c216e7e4c74d2669bdaf5f834bae833a36eda21b9da86210d321f39f44ecd8c35923d9d03d8f09fe438a5146e8fc6230a20e586f6d412df39c96081ec9a1d25a380b7fe5c8fff44003d3ef892b3390746a79033b46829353af387e3a45c3ba8460b4f098ac21a75297065d08577f6641c61726ace0e6276156f9bece2d9923df9100a12edd0989e11a92181f649c9f3f09829972233f63c79c6570aa41d10ab221418de06e0bf05212f220e0b5e3ea890791054b5ad5de9e19d1a47755ddd3ae0fba35f3a0694d2946ef7d8a18a30c21572865f0ce4788b1c82c6c654592c975e8354e06c67fc5fc9d475645bbfb6e5b8d971bd91bafb3c395dad59cce599fada312162b5aec6e6647ec3767b32c028b96f631bd53b667fd682776c7b6ee4a50fc1993611d333473b73e36ead1ad6789c5c43ccc4ad2c6dcf698582c8c43ad23dda8645a8b9e563bf64bbddffb11c3ab14c5558861e5bbc4e6286a1d5c0d7499d691e9cb765500a3a20bf4cdd81dffcd652cc5e0a245b499ed28ebd97eb613eb934db7262cbe4dc4508f1d1a7b4d7b64bfb1f5cc952d8f931823fbc3e4aa70aa91c230fb7bc7958713635b66f62394abaac9182e495796d98fa3fd74fb1bd894fd233e9ed3cd7ebb2508559bdc122a64abde15b68ed3d6e20ad0f426f3b685f04f075cb531a0ddd44e8cbb07ac90b8918b6832d9518667fe681756473bee4a58789a688bae1fec7cce4c83669edd17a489278a444e57b318eba5b083d06618bcd8a3c06fa6e5b44b0d1db0b27af2c26c2ab6b9d4cfb4bc7fefe0b63fa44c6650dd545ed935c6ee63b554de5bcb4d1484ed5d94a78b1c4675a2837f2a73df551d8e5030792a5a5916f09095e88ad96288a04f4c656b556173515a5413f96babe44d7fa3a6da920c6355cd0448f48f0c18ac80082e7156c5d2148a078a532bc9ea558dc004621d3c3685819d3a6729f63dbb5479f09dd5855c844aff746bf49b51abb7c4431db339d27e94a1b147b82aab635c4fe72d435534fc74939ad5b425837c48ac44a84dff942bde64580023e8d1e1c307e64e4e316d8eee542063e0c604184bfad04988b02490f6018d9dc48e32645ba035c915d147bae863732b0a075dab52c80acaf358798a079d59888cbaddea54d7e22235215c5553e5c116b35d457dfea08122a78b37666ea8042698f8780d00f468324833927c70ccb048facf98e284657008623ac392792905ababe60ae7e23f6140609a78dea1ab7dde0503146376057bac7b49fa395e8e7d2e84913fbe106f8c08003c09d428f43986ab6e2cfd92d2758acd7edb97f40f59281a0c55e8b7e4772665d3a05fd2541f8d88a668db4c1fa5ce77836d0c2fdf46328438620af31bc18666b7ba82ee2c0575faf074e5f21c3fec8fbff70c178ae6eb13afde888a36fcb071a51851dfc66bbf3fce56d23d0faa6665cc8300bdc0db3c8b7e4356abd58e462a4d23c66ee8691c288059ad9eb3464eb8998010c92a4cb119f77c6cda98265986f016d5f6ebe4252453f068866a6dcfd92d935525407f42c1b9c8dab2cbce8d200fed88edc8d65316899f09b06556370a7300ed58b36ab7741015f44893c6ad0de97e831773eab58a05b8339f10847070562c0893c96f18e2fd24d43c9ad799b2139860276abd9b71e8777b5266e2185d2fa1aa54d62760777d0b4d11e3bc7b856816240bfe571d4f17299a114c27a969bb0e6abf54b7923b41c00cfca96c0882521d3aaefb638e2eca2e04d351a93e71d7998ce1468dbddff0b96e594bc27d0b844d493837c3c7534b827f1dfb09690412249286d25deefd9d74e3b550536ee9ad7640ca814251f24c91652dcb37118e152e455e642c68f69856d808e92514875252a47da2bbe62402dfbf23343983301219731091a0c142982fdd8b38bf3158621f4cced469029f0e76a3960b9c4a6fc356031859e4dc998249665fde64a1d21e59505b926110c48c8323cbe6a7865531899fbe074a239fec1a067e2e55c514754efe1ff9084e724a3acb69933131ba58e3584303f3525c0568de010d2c8712eefd045c6e1a8e3f8e8fa468694caad25a3f4deacb0b559e0c3ade96774a9902bc7b72b58838d6103591cb8d8622c770a62f8c2b2497315b8e81431570ee022ef332f543c091bdcc0aa246a1f0585d5c4b53641d5c53efa46a7adc81a09e17a1a1b97e363deee58b47be1c119a38d238b2e9f9d34d99198b86efb75da26a013553718072cf2b051abe18b942c7dfcaa5edb911706ca203b476e5f07ea4034ee36885cc78e5f92dc2cb64444e6b0b98c0b24ff43659b67c3633275d668216f37c350b63e6b92b6b1d3098cd2e60ce44007848c43b535401843b443e4b073796fe4c0280435afd71256717a84e1f2870abc73fb59072c3b1e65678f009fb42bc0632c1343581992e27ced92fee1c09d7a73f397852f897d4e36105c09a8493172ee3cbfac01ab5ee6b8bfc51050ca86f19e1a2fd2c1560a29637e903be188603ef72f75b28f1f3d7ac5c365cb2c5d4a7978a28c55e86ce7af129fbdbf745b2bfe06761c9b05c3610f6f35f9e91cdb1168f98918a7b356b1f2901288c644b0823fa887d8c44340303598c060442d5a58891ea90de5380248d264f259b7399b7f41d0bc8455b20a7bb7453c1787d6003498c857b87abc8f4f8cac266194df79865fead317205ed6df2996c4ccdd39c2549e3b0c7c401cec3969489d4c774f4c046f391103ab270d8af4adcf0931fc5f449390a880e195f88fb9d28b01ca9b5ff4eb7741879739e9a1d62c9fe40c479bc9281a37a181a46cdc5bbf6d015bee3196d0d4c1efb99bfdd84103c5827b0cb3b46a9606b80b65d0a77c9ff220dd480b6fb161fc033746f57b1b6405d1edc7c95c9e3789aa79a74e6e995370c76ebcab9a73ecb86bb80afc8d1accf2bf7ff390817e94af23f9f83386325fcdd99791aec9993c3be078549ecb13b2cdc43eb3bccc91ee8434d7f457219e4ab3576c61c00173a1b68e415306571c15de464357f3210449dd0bbcce112e0e4f6cb72925f772d15e504606d9fa403d1dc58d441e6048c71bfe0cdc8f2526a7c47a18e94b4738004ec0cda7ddd22ddac92b6dcefce21971ea6ef58e38d5a0de35bf39a7d90200c4730c5af2f0f050917b94179ffec668925b8b557542d0fce8b5b4f4c6498a681561c025085e2c2a0410fbfcc6d8173cd206480ce7c967391fb3d78f9ddffd9f3497ee3349a97c807dc62531a1f4185bc32a677dcd683cb113b324605cf3ab4adfb7e5660a760f9c0c4f42ec41cd42b81b65226b5270a1b583b61ce640ada1c947414f3a231b36c32a601d440ecc264babf6d1e1f44e53ffa2c65be0caae00d64ead1b66d993d75d1fa6717c0315b3563a3bc571074bb941122950773c8f8d06d9e7da8545e58435621ee4b1db488e2d5423acc486570a7796a93ca39630288807b8e31eccd2a012e44b6513fb6a8ac2e9f372e500cacd8099980bc78353ab5a5e2210950d5d3a14f1b134e42c93283e58860d88822c10fe39ab051218f9e28614de1ee70470e814b794173a4f33203a16e86580e93b90e44fea8ee42471482f71d22930dcdefb872585cf97883180ba2147a215d6aa2c012d8d6d58d09a7ad5137be8e4e72807b4cf2baaa105450bc1af8914750220e1657011f44e437a8ac322ab8927b72fd75febcf244642684d56cb9d403aca4a133c4263070b731c315b47938d0023a35d1b883ec02976367172da45d5bdd25700cbbe53085de542adb3d31e604393fd265059a3801afdb384523510b12b3ef725664a802a431f2e6b3fb231c6e3fd0f4f3128248e9e2a0cc0aa4a3eedac3de3c4a810d61eca1a5ed1fa9fbc792c32131376cd0b5b25617acb21e77992c418352d668b5e3dc0414eea8180594d78192e2424a69592d08160a8a8c072251cac9908c99623b23c64c1c0fa08b15e9d546ef096af3bfd523c9b7b1238d24c71e2b9aa14226d698c6d3e36b6b6da875fc519d9055a4a41b47f48621e1526b14a1a95affb61644ea57f2b9c20fa42af13c9fc9a32df65ee9c1e87f50607422568b6df2b248e8f4f7d0fc9a828b61f47906c7ed74c2467c9e9f21bc09bdf261380fa2d6ae5997aa40b3dea2513d37bbd2e3d60c34796f814c68e6955e22d77ccda7e07447a595a4e76de1138c14b0cdb85df5ca54ac58ca62e420b58c08f8d001d4fc9c7fc85ee9ae73979d3df2e6d4d5ce0d47141f55be55c9941b3b447960631d106bb9df456f91fc4551e3bd2367cc4f5ac58d4af1891c103a3a668b4309b200ab9f191f6640a0a3ccf67d5da47f9345e2e02076b2fbe1b8a0a8f3f85ce67fa2f671f80c92bcbc895652c1310a91cd9886e7070d431a40bda83b9116e96fd7f46344a670752bcb99f0e7b3187a99ecf8e48e02a19a29d72c759c1c1fa6c03681a756c378bf1bc761ba48ba3e0a59ff5312ab6ac9d73f471bcd2af271488f9473aea8a32044a5462342e927aa1c5a6f58b449d672e2e1a54b2516693b3aa0fe2d009778348b8ef85044d8a1f00d416feca68de00894b477aa1e06ddbeb072d5a1e5a4223e372a7e7eeee2860ac0cff227505d6e559722b820eec31c59ce545cd2751300d797c645d0fe6318aebf9541673fc6312daf81787a0187b6321bb2423ba3e2499c81dc4a345da582d4836b793947410da375d3f6752be9b41e27c28da9a3c1153e7918daae5689ced25b09e107712458e9381dfaa07a9fa838e537626d5d8ef313c67b8ee3ea28bba9e5b004b2b38b2189df438ce1a4738e39996797859f3c24e74302d3923ea0a32c7f6bf25b25ac4c8f12d6375854326fe429b2e04f0544cac73e427dd387614a72fc849f74e70e41dbace5dada2ff20b02c2ecda6b7de44dab83906b70ee12528f982b97f22b8f876e4806cc8f1a4c5b01d141ee9727404be3b04655f17a5db6dd95c3a281875431045b1c75e97201b09e60c78d2406502a896b7ee2b140522000f0084585be405498febd069c37654d4569815e6efd892c61135c68876678361015b19e77a590cc1124a8042b7882c5f4b4d752fa79c21936d6d87c7c8cb0f5ff2dc3fc1f5d769a411e858c2f58ce48216d18897726b82f8946f93d53f707fae25d383bf31c2e26d68a22e31251129c18d1e38b2c106c70935864042a8e2800d10630f855943ceb727d911a06a4e48730642442f9fc331ceca2ba9b57fc4a8ce50db3465a0d7f363798e70e15a9d0f82cfbc7d04476bf714754af4fa514e6758dac14b309ed41769ff8a3154c60f101895f15a2724a856128af4a8d740285dc01af65f5ba96db46cc887320270239a3446cd181ac055ff459d3dc30953fdc90e1075657fbb1c8c9491517fc77fa81d47e07e3fce19998570ba399f86daec3c090a8ab3402a28017869f6366765a7dadecd78fff19ed24fa309f9f3e0444f5110afd98b647eee4e75a790ff798ae28810e3c88cd544985a62c3dcb637909018a9e786cad8e8daa386401eab7e7b7c5027f5e1b89085bccc5963626649faa520fb30832eae3da6f96cb5737339f33d66a09ac4bb60f96a1d5a953e41c8dae8df604e4547476b71d4376709a7223669a29893c89272efc81b9250166a53b5a38e0c45a5646dc140e9e7c256b22c9e651a6719628a056378e4733ec3d4f9824adfbbb4f7f3c87a4cb2b55bd306fe984598cd785c7925587c8bd2d6ee944a4a3044d7af0aca96278c75cc7f49ac376a1b9672bb3ea389da83487c07cad069166f5748650aae8e294e2a4e1456945dbda2877493d586b96494abb46f4654c918b629806b024000d35734df33c8506b51c7062910983f8c46e91d991626ea3cb7c600c530fdef7f220b81678f92deea97cb98dcaebec1630d969d052466a30a1700f18b1ec19eef27cb307d1049e0de7ccfc242116a12c3c8c9441718f10e02145f639a85db8df042a0c3a2be87053b38a88e0e9c7a432a412d4f2c52fdde1d925e818ee02f42d385117880b6e10b2b56e610244c4ef87097dfef70aef69731c0a1040973db0b4990d1373b2620ab135acf150b0225c6c318ed9053f5e026e311bd9d33ec14ac1813c939199dfffd06f4f591a287f548751367178769ee02be1f3011f22584d3154828d2ea285842415e3a64ed996f91e56fce55147323f110ac6226353076705d6c55786feb6e5e986bd672ebd47831c4451c14c309f320349cb85c68fe1487e96cfb8119dc554844623821b1009ab65da39c00f061e1ea88e1bc6c1665220ffe48504ed6a63dc56f3815c7aad0f772b0eeee02397842f33023c7063bc704007d9be7fd63bc0fc388dc40b33b023a0bff033dd1fc0c807ebb4f0c9eb385afb1a6cf5140bd1c5b0ac512c12197170a1235cfaeeb533f509ec31580898f594d346519ef639755625088bd78fd9536eac16c234f9e404cb55528ac33d51d5b8ff8d14127f6997bb5f4c29b79c9e87ac5d559266c59ad9342dde37b385350a815da4c33fd929051d7c8ac49934a52d4c2c2255aa791843b44d44128deb3f6b7285d14e51267972f2fe3d70a41127756a1dc71bca87d9152075c6bba7a051b7fa6a0a7fe4e81b007ec829a7e60405a346ee8ef4aee745e3430d57ed2eb56f5063e05c83c0bf7e35d9c48b4f20c9d9381f9116805110222b67ed3042f05f89b91659e453d0d73e9266581e2b12e51ab7530e6f10df0329787a9afb9543579dd4f9381945eaf33bfadb5122170e0ccf194a5e14f775dc20c8e1d244202222597c91b57c9ed129ca71288660cda95bebac7f6ac5acfa11d4172b556efe513b96e0f58e1eb9150fda2a70fa8520f588c160010ca2d14e8746712f73de3ec10638ea5cc5f593f76668cf0a30f803d1912fbcd7cd9aa0698069c760d8c7a06a39d1e67305504b0ee076b1458549a728cef848ac1b173cec47da92efd9225638cfb33fd9ed82dd49d8a0f0d60caf56a472d7dcc358fb5805f2d335ede924fe389710154abc104e2a7b8eab85ce5357d4dedac3eed6cffd3ab5ea5b8a57f76c0e6493f76e71fc370be44cdde6b17016c5c6cb2fc76c43788a7e84c248b62d53e2f05dec857f4751b4e8e05f53e5f1c180eccef8be2d1f73eee1bc2e43312d27ccb6daf2cbec169bc2d8a4ba9ac046203808e279da06c886a3b449344d9b8bfe1a37166efa668bda76334dfb5249ddda5d12b012a598c4a40280b6f08318b8fb2944449c3c11de1e67a26c179c041765c06bada6e0fff483155f08d48a89e0d458e45f38839710a9b74c69aa41fb9cb2ef4afcb6c1d75b14f913d3d28cf20fb9f74ba9d37c3da05c82ea55ba82997491c4af1a72a29729b035f4347e1d5b44900736c706d48dd494e2835cc1e053c6868521e01e89eea9c42db803d26870cc40d089a26fda1fa23901ffb4285a992454403f8d3a4037d0f8b4d026a092243eeb3e69bd04382fb733785688d8e5b97ec52e6155ce91169e07dc44ca32b97f7a5f97430997fcd151e8e038453b1f85e3d8dedb1e80deff2103f02e3a3b8475de077c581f3c27d116f7f681a5bbd193fe5635a1179666e5ab1cc1e807e25540c75d7f088019ec2c0bcc167ae3a043920ff3c92200fb86281d4b39fd4633955620deb7e31258a7ae84fbd9d840a2467d7e386c9c59e5cc27e83eaf34a696e279c5077368b439666872b2b850e3ba4f433f4ef5666f5e1fc136bab77e4ad183dfe06940513628371f606b6333508aaa229494291d7741f00b38b2c5bc334eaa11649d67d93e4b3a26d31f8270d58fc63c08677e94771b22bfd5fb8069876bea55bf25e00cadcbdcb4bd63f8a955b111b57527dc3959ca9fdf96138189e16b6b1a643b759b472087487b99c3708561ff718b234773f259ac3605eb48b491dfb410d0ea6b526571f23a88a10120a0d63c8bc39b59e382a6264a2319bf4b883cf653aa14e3439f71d1d1b7c95ff8b4f6838c1de63576ebb1558f6cf1509e65d48444249c5f4a93629a84e101662dd863243c88da55fd5528a1b406fcce08ad9fd28388e3a1db4514da93fc5540bbfd4b47bf4694353c7e004690962816c288dd524e2226eb44deb871d5dbc20fd0bb1e2723384e18e00cdb278342dbf24b998c01f840685c142f39639bf8e378b6ecdf1ef455e804ea0497805ccdc9cac7acdf5ef81ba70523d8b4707a31ebcf7197199c5ec54af2e4a6545c2997089d01b068188a829ce4a505afe62dab9c81b7cc8e9e9dc62593f9262ef2a342ffb13e35734fb166d31434d9f8183773122adad7b71b59aefc934f9c4d95c378caeccd475b38fed1d1dfc8c860563dfa22fbc9f8ecff3115e1ceb59c14ab00b1459a09e70fd608801c655d02137e3a27ba443d72042577304e0c2c3c382f2d65615bb9824712c466a7695952007f83c9e8f87046000b427948bd35bd9912bc8937edbf9622e8ebbd9c3a72031357ba70c2a89b6d3db86acf9856506d1edf92c39231654dcb0d4dede6a892bc7cf4743a1e8168585470d77352c02455e640088a0264afcfec7fe349af0da5ff0e7b4b8577b2e1a3fc40b655d9b3e2775f152ef084fa151eb57cbc25ff582e26f63fcf9ead16e721307bc18fecdd0393c8d43fd728e2c17ff8a67568fd984da42c4483d4f579c19e0712de8dce7e1f94e1cc53d8d5d68edf2158952d0a31b05cfdda9ada20a97f64c807ef8802605a7da04d3266c375c0975c6e0b1db440454bf10a81da1e89eda384b54f46c69b02579020cc5bc17d9bbfa39558eaeb35d0920057fd2d2ddba049087102b2029e16e5ac9312921b6732f90c88f57ca1d637950881d334a29dff015868ea4737f0e5d0d98231d47f8b65df1809027d67604df9065ebc77241dceeea211a3522e802366b7f9bd790aec9cbb7f6969acff45c7fd4b9b5be9f559603f6db8f5208cc3dd0fd946d46f3197f91514732285f2b92201c7e1e77d264633fb7e3ec4c1b9868ede48346949360034211be613a84fe474b9e9d8e24f5ab1c437b07adc2404c50e83563c20882c4dc38bbd0217f8908d44955c6c32c713262fd688039f453ef80ef7f610501bc97a38d8fecd96352ea8a1efc966d188486038db0da8b68bed980bce4962146155000253d48b9455fb2fc9a601b77b0ac2c8d55493210a10ee85be64752e1a11db6e275893e9d80136edc84be49311301445564b2cf67f27eebae53061c4750dcae803165606b75e46e4f0bb471b3daeab37be7d55e8e42a8c2dae56869e4f8134851c111d09495f2ce10b2da66b1676f40212cf607db6a0778c8c9b3b5ac2b9715535b4e22528367f01f224551a89a93b2faf404b900f9d00f495103c1b21c758e0105b3c3c01bdf91713cae3e957a4f14f583aea2921cdea58674288ff4385f28f45d1889031e3d34c6b36d5d52527b36485110337fbb22859036370fe2f0a1f9df5b3c9d75215e2d193f90bfe35d6b2429e384fc9437197a1852c41de48003ae28145c83360f041f3f08ce72530c43eaf73ca5dab0b83c4e837fa2e0b09f17a931dcf9c6e333d373be2a300fc8b84dc69ec74c04c777aa1e1afed4b3d303b962f83642469763cb8319e890376bd750993a81ada1f6c1464688712f318837be6486984b4f6cd0da9db33a07969a65f505ca9b8712066e44e95a9ee9097006bb6fc256b2d8829cdff213fec4515daa9a96a310d63d42bfcb20ff30bf4b1fa433916055ca02e56aa3f65f3f3d07dadb8c336b2ec8989e8d41555fad18138ffc2cb9f6ca7c14c4409e4b510aaee7fb7a6d68cce94eef0fbb1473d8fb760e4d0d061d9a05f262e4a08899b24f93467e70c90c1c4fa1df8ed1e172f5abb2716495c2c9c4ed3c1e4d5b227414f4372a5643ef44e1a5f425d47d326eb86e9f3b10ca2695fe8c959f024314b348c8f8742126705cd1929216619509ac90055046dd54db05d11b9b8d2cfc49671060980c3ca1996d02b8c7602da1fda6d5d4052324e07651195a169676229d67a82473b2d4e62f2ad0a61088e2f615d353cefd2cea4b22e1181756b449fed56f55cecbb0fc8be41a52fe0f631668eb001f5534bc11a4ff3aedd91897dfa8847f00df88f4bdadeddb6dc52a694a40c0907e506820651aad0729a028b32854a18a42ba7dc800339a032454c5d42860e11e33ec0748f1736ee21ea4125075178a590165f4c99dd51b4454622f0a4ece007d5d5c415f14a97142b5298d8a0460d2b30585d1bf8d270803b81bf96bb6ed0d9b4c2e75d29048691eb570a8181629e4d68d4f20b95da51ac1a052501440980f94e9858f7c1e20f3a53ac0ce12306988f189c98a095e36b6bc7d2e5709c73c8373b3b7e63c9a589bf7b9ba18724e4f87ec4b9fda3cced1fbddb4f250f7d12ee6637abb9dcf9b58686539a5ceab85161f613d184131044b9fd24dc1dccdd4eb254911353cc40053f3c9971a087240eb084104b18f132e292c4055efdc7dd3d35e2804b1521ac10f22289309418a003557e503057ba827c5097b03757ba82b0c8603eae7cedeeaeaeb2c3f07a41abf64b01a94e1ffe92011683a594524ab5ea72f28452eae18d1a954644100e1a1362d0d1952e26720033c244175afbebd5e385972b5d4c607147913930a4480c7600c40c64328021290015266274f55a39f8961851a29284106ca8341962091e3e55172b2c413321825c50440a508e48d24407a40ef0804506a650428b1141b001019a58d124cb0888116811eaa204457480a5081d473471224ae94c61832c56a2e82125458e2a1d78554971c15de9624205a418586922b6bdc210f920bb30a243ca87252d2d3de8713da1eaae743101856b2e4d92b00f9606a92c8a64f1c50e2f9e2a4b18713191c413aa1eb2f050ea2107525a304ba2c51076a64811c3061349f816d1955570f8c05685c633e40453aee4608b0734004494d3581ac01dff082164141e8ae8020ad8105b7840618a145862aeacf24382f9db731b2892393eaf3f96ec8bfc3b1c27bdd26aa1943c351c4bd7477ae7bb4be6d9e14443973afa3d0354fc20e5facb9e6fbb2e71c86d720ab81cdfb4f6fb66f8f2115132bfc89f9424806b07e5f450b27773c82cb98679e56cfe5671393ec922b318c627991d056ed674dcbf861edeb8539cfdee1df2ec66d7c2128bd3725c387eb7c3aeddd935ef589c2b74387656ab3f6a2f35d06acf5a6859e4faa39bb28fdf433bbf6a45f65f9523b7d65a433a821f589064e184ea4811590800cbad5dc507ea302020d0f241750508a4c46470aa01b8b5ba8254b7528f210a16acfb5de90a42d9494190c5e5062e273c5839d2df26dec1279ce0012770d08108216458d4e084cbff996043650828a838028b1fb2e8e834086878c10a86f8e108089a800100a860e245151df0600a1213a0a094504109b48862052d1cdacd95423f30e29401a1166469c10f4f84b851e34a971329b7e630e5096c0859cc600632224ad89030b1c3ad396c48ec94a67e7eb7b7c319be4b8f6421e14ad7125a36216a0696d8000527a0e2850ca4ccc086900d8090a2832dde95546a7084f94a293ad8c22f574e992282d1955360593aa003a88573ae74352972ed9553a88461058b4170f4af08395604cdb8a165674a9715472eb37fbc3376974d974bf396aa90217ad83afe01d1558596eb574aa1040c22438090628a255250c1054a8a1a42437411a58928ae7765951f54114c82a0c3c4c582af2443bc72d2ff9a876e1bc8a3bf529008ca9ea826350b447f476b0d8e406edde48bc26d9b4100570367a8e10d7de57f577a2dc82eae0c816eea5f40ba4e15f0af00f51d6f7e972fa5945fdfa77cd9fed2bb91610ffa3574419e1a70001d1ec24da17050960cdd9d2ba12c19e27272aee01bad658da5e9f5e8679f5a411ef23d1c27ca9eda9fb31a50ff8edec0d16f90eb9a0de90c30b782337878c3955e0b352e0d812ae03bdedc63f89453ce2bc718e3d4925249a904ea975e030e70eaf0ab903964b66b7177167daa40e89b4fadc75c295d4af7ea7ec537f95d4a29ed05a7c421ddbddd5bca1d29c598181819a5e6c989bad9826fbebb53702cb9974adf274df26738facbffeb2fc29da1d96928364fe9a3d9b9bbbbb4a2cedddda5a8737777297a2182e39856cd6e760347e99acd568c57439d625a35ab597094aed96ccd18af788869d5ea285db3d99a315ed14a67b31563ead2359b2dfe1ea56bc6e0285dd38a6fbe741fadb4dbc8dbbd7b889d5b1389439d3c9347becf8d7d79b5a72011943dd1dfde41943df94b7014f202ff9ce86f60919e936b7fc34374b5f006bf344cd9d53a1c85783736ece1ef823cf9378074923ab41088b6e7237f47d771fecc9f4b4129411abef9a616c243d8fd09d81d2d16284c5e0ef8241426ad3bdad1995cb9fc5656c141ecfea0d194c6ca8812362dc274c41ba2fff895e07acc7577a7a2bb5bea83fb4948064c90ec9083106e707212aefb97beb84e99e8e09452eac3dd65d7dffd637eccb801f311c3cb955564625c992b5d4bb690d510c8eea654764b69bf299db3bbdb9bddbbbbbb760c8e7e9929a7753d5bebbabbb999db4ac9dccc2d7dd224219fa79c53ce39e79c73ce39a59c734e29a953eaedb3631c57a94bc952b2ef7853963f32334b29e58fcc52ca1e999bb949d38a9452063cbfafeb46df4b8cb6b2acaf550a7a9728a4c3af188bc562b1582c203d3d3d3d3d3d308ec966fdd3281ebaf22b75eee9e9e9e9e9e9b9fcd2e50506262646466686c669689a270d0d4c27d3d1d454d94ca552a9542a158bc562b1582c20cce21607b18b85e45367b1582c166b0291322993322993329a524d8d8dcdcd8d0c1cc7c1699e383835dd0d0e6dd9a0cf5512fa9738f49a30d884b1582c168b259bf10fa338c5aa19bbf2bd43168bc562b158327072724410e11f0c3d0c9b6718e674efa7f933512a954aa552a9a6fdbe52e95f9c41d33585e66b0e4dd86c5df9ad52a9542a956ac26013366113366113f660188e30c28c1924d0701a349a270d1a61d7271d99187b18bf546de2b73f1faa947a95b89aacd995cff67bbd5eafb22a8d552aaa7255ab46e82658837333beb8fc24c448a0416376f96b782b4cde72f9b91adde417bd15e6e52ba4c94da6e669326d237e491cfc7c62efc76f2c6d3fbed4692951935fa370b45e38da2e1c3f2e1c3f513896b6702cd970fcf16b388aa287a3ce1d1ba5430247a3ebd4f7954affa27875eed8836a94c481c4377f6cd4e5e734bb8dea53898336cf760a9dc5d9dea401889301f86c8eaffef4b06391ab6d137f3fc65cefd975073f0b83cf3b1679cbb5df9e0addd54247b1c8cf447cf3ada32e47a067f76367ee59f7cced4f87c1c919230cec7675d5750bc45c6544fd094ecfc743d273bba74dddedee01f87c381c87ec78e138ef0e16fbbbf463cb6a7eec998d7fc724cfcdfb3b4af2c4bcbfa7248fccfbdf802c8c9ef42550b689669471dd7f4a1d33efef72e77b7f2b775edebf933b2eefff491efafe25b903e3aaeb7d7dce0377803daccffbb1270516fbbddfc12c348f07b5a9dfd284a3fd48e1f88d4229343a962f6e3fc769a0731c47813ebea363d9b4eb41dc5bfb7ddc8fa53b7ad0edbf723b0a72b236cd223e1458ecd761b15f079c976b3979343387cc8052e2f09151807635390a72b5f78f01a5348de6cc53a1bb44d44e03ab942be2642c9248314e4641d103fa24dffcf12995512a5117cfc67c9ff7020303a3817d29488ab5c9871463b104305fc748bed1b23c4e36c4373b4ec626f8e60bdd9193b16effe731603b71b236f573326e0b378be164325d8eef7b19cfe747cfeecbcb783e2f331c2f801a7b76fd79f5f9f713fcd13317705e9b91125f3fb9f647c74292790cd84e3424ed6016e29b3f9262a42f58ec7701493216fb653c9f2f24c54af0cde7663c3bd29ef43ee48ede5f03a5c441b29ecf2874163d94ed8d1d078e24a11afc8e9cecf68fa458774752cc87df7a2dd84f817722e0aa9e1d3efd4acfe5f51088bef480507fa2a110579d94dc781801575d6751c2c058080f19099943b8c22499979b3f45c99c838eac628b046378475eb95ce4a787574145e73ddcfd09232edddd407a40e9faf54448490c03810591d910e4490a8856c508aed3e9c4ab4d1256c50e2f409c48b5495eb63664406cb071a510111a983fa32c1b0f06d8c2084c96811f7cc0648a2760387cc07b70e2891d708882830e78314505585e5c48c9e23b38181e98b2c50e3890250c2b3f54541184117032a7a2a94329a594524ab550d4b9318ab76b574a29a594f6d8fcc5c51d45d9a44abe27aed00fe04091c4c8122a88f540032125988861814b134e5823390821b5012a487a008410aa003591848804db918fd5055d71c11d45d9e4a2188d8a7441feb9b02e87231d906419e2881a4cb1c3084e4cc5c9ac4a9427bec5c90dc02b5d5796b8b2b238e0643e6825823afb90011643adb5a93ba9b5c2c0620e2fa0c28327442cf1811050a6b8466f883e9a670bad4b0a0b83d55aadb84e70b52badb8a6b0507ea6e603a14c648cda55ca919612444b49d25290a8b4bbc27e7e7e8ae0e0b2e65416e50b36c92d368a181f919211364971844dae4329a5f5e78f0f1c952c62ced40533eee325032c06195c5b5c6250ca94524add9d8bd878d24388d43d6030bc5e80c165c4750448114ec6823b3333333b576e62a451f6f1920116830c51ac6814ac71521ddc65155c0441768326405a5c39b994eb6ec535c5752db4eedbcf97d31d885685f5428104b121c86ba802699ef9c3ae797570be5719c1757febf2ba98da01854adbc11de7092fae33fdb124856ee9965894e1fef333895479021367ca720e1447341fbc2faaec50ab10a122834bba92ca183f5861def9f43ff944947458e44f960740df7f769677c6fadc0429d5fa35d08a9e96eefcb639c351145a16e957ea976e5fc9e9cb1fa0aca0dc6e6e4ec6e11b7b52609e294dbd4971b9d2eff26d77fc5ceef8d5dcf1eba9836fec2980e4a1df9382d421ed948f8a4bb1f0e6e92389a39f562d3211704f0031f7bc8c780131c509302f623c3411a2880f272905ad6123a2030dc0005aa180063e4012c58a285b9cf4f0c3104f80d0c50a6010e4012856c0b274a81d1054c101952501200834c228047164b1979787f95183bd845836ab9898981f2ddb2bf39279645e7a2af0ad79d9ccfc0caa7946e8b6117edb981089b88ee3382aa35412715ce7755de737047186dad42f03c479491cfdda167d49dfaf0df18e9422e9bf1f3558500b07ac8989643efa62148b19c5be1c958b1cc5aa4d95cce5f83a6f34658f3ccf4bdd23b7827d71c09a112a2708cfe726cc512df18d62a32f98c7e6089bfadb26d5a4eb6c52392a2639aa25df7c9c21a9c3e6fb1d7c11b249350ffdf67e7c11bafd5d8e2a4765d375dea8cbf18d665433aa6fca1ecda4f8499ecf0f526a74779fee3eddab3fcf1c61119c31328362b12b96ab3d08cea458ec7f7006d52691ac7972545feada1701b471813614b451b5a93f47d5db7b387edb7b38a10db75c06e81287cd0cc70bdc80528a5e63234f05be36a924bef9243baa6ff373da8435e0d8b7148e38566e3f0d38d6cc6eff0c38831afbca1d3923a34d6bb4191a71bcb8fd2ee02836dab8469c2a6eff680635da3be6a8aee546b1d126e8bba34dca46689c39a2bdb497f6ba0ec284f8101a2173086f33b2e0b81c9f54f2a580f9434ec1175aa7b4d650f37c7e689ecf0cd2bafcbaf379e89b3fb4d7e59f3ce78f3ee79c3ce79ce0d8a1d5acb5dc484a1c9d10babbbb652d4b424a6ea755eae8ece4b8e9f90005d1c099029aa836f144b1129fd421f27ece63afc39eaf65b786e961973aa2fbdb62f001fb2143cc86ce0322650f80814513c8a1f6a92160872b012c08bdc0223fc9eb31a58eb953270f11ed8bfc490b95f467a77de9727c753a75f178749882f798c006312940bb2df4a55f69e5603a56e2f321de91a5ee0a19f475af0ff9900fa1c031a9837b9eaa55f368cf3ee4433388a9f2a121c7c23c36895db1c876252323532b8d77dc8f3da4b9ae9d6197a242d4cf8152e2108592455ba5943b3d25cfa6fda5df3ea548ffc5e3e18e854dfc309ecf8489999247f56da881629b5c988686a68665944aa552c966c67c5f8ecfbfc6f3f9e1a84bbfc6f3a13f3aea76901e4339be206e5f60753905df7881d5ed96e0f8c351b7dfb92ec53b5276a92ee582cf3a16d8e577195ae21bed6ae8f2db954dc23cdd1176f17c3aec5253a42e8b36ab8dea7bb77fae1c8152192d90c9523225323064487cf382e15d2df49f23fcc77f6432996c059c4b69bd9b93b93d9f1f9de3fb7cd8553570d5f7a8d96a869aad66f247fb7038e7333f6ff1fde818afbef1abd4ed1466667655cf24388ec448180923d13ae69cea726c8b1f1d6b1bb3f2059f7f3b8bddc5b53fbaa8c05d2dec99c4d1cf5a7cf3e71d7b769b7927021dbbfe6d9b3bd6318dbbaf7072c6c895ee06963e764aaf7c223654326b28b9aa759c6c489bc17e62a8abc55e5acc3bdb3192ef451bb8031402eae9a1dbf62abdfe25beb4db83888ffa532aa2d6f3a912856fdee9f5cb4681864cf27cfa479e0fd0d726fe36e29bdfafcdd015accf7df439eaf5479e4fad7d83bac8228b9f8be6227da5c52e6bb136b1167bf968c7bcd3d11f790be87e79e9bb74f55890b743e79d994ef2cebc9f0b69eb46f5b9d69523785d70b27994d4b72f38b5c0009abe30ed4681cb539aba1d0694121a7aee0ce21d72b2cf498f07fdd08244ec17514243cfdd865cde40294f1887dc5e61c8e57a72701472fd6aef5e0b30d7bd05f4edda7655c90d7cfdb9aeddadd19116dec0b50ae121957d0927a59452cac92d9d56598cdbf987726a8666ddda762aab9d39ad52db442e12354f9188564d5a11e71cd73c39ae6a566e5b27459cb49d04376f85799b75e5739b481474e5735c27c1b155577ee779cdd3f364fd031b0a126216aff88753b298d050d06ccdd45ccd9f99504c48ba66387efbfcaedcec48dea8410d68f0cd0b8322383969e831c450c01c83b2900bf2b81ab580064e29f6b3c7c335f006e611d6e06f83bd35d8f0dd2901d0f3d9e3d1973ddad51bd8534037cf1e69570b69e8eb3fe48252e2e890275fe1e6fcaeb368d9f3912c6a1af82829c7e79e4f8eef8a2b5feb211eb55f57bea681cf5a6bb9d1bc0127678cedbafcdd6c5a35bbf9b635cf6dab7613719d775df3ec3a5127eabc1189d4915c5e6062645c46a679cac8c8743234252e79cd0c1bbff19b9be67973b38d648fbc42be5c294898c4e24aa147ca8ca06c501d91331b80b0a4b8e66b5e6921c19ab029c69ca188ccd8d4326193554c2e3fb7b8fdc9657e1a44f55a9b67addb8855393ec9c9e8e47393bbdd29ad9a6b5af3d4b4a69db671de0c122cc338269b358ac562b1582c16101d99187b5869a8a755cdea5607c9d72af5eee9e9e9e99952c4759de78d46a4cfbfaf03cfb974393e9fd60b4d0b66ca1ed1b05e5e5e582cd6a84183c4eddfc135409a2415f4ae00c09b1f9b998dac7b81a9a9a989a1a161429384c5fe12409a95cc4866a4eaef843a21d5fd3e0778f3ba11ba69b56967002670063155fd2e9e0a7c6f5849bc749dcbf7772edfab24486c424c342d00e0fc0962c28b0937c0f9f2e2014dd444d9e0822e89850493efd5a6272c7a9df73fb71f66bb36c0187cc07ec810b30188cc043e0086211b200276f4970026800513f8028bfd335e0f97124020fa36c0d70189e87c913fe9844afcbf1fdec9b9357efad79f354e78aed4e5f84ea8fef29ef0339ecf09278033e6693c1e1edea0f1c41e0f4887c66ba12f0a5ee3e7a300d2783ee273a552e9861523003047966302980393387802f0fd9de8fb3bd137f763074b1d09a2fb711404d2246153dfb0dad4342b28be192cf63f8b4b726452478defb7f1fe8635a259d1ac6a944aa612bec6f329c164e34d2f3d1f1bbf83b998fe5235e4f51a21d00dd7b52780382b1027099bfa0100e220c162bfeef623cdea46a84d5fcac3d48df08675c332a17a4d8d4d97e3abf1369ecf0f1bcfa7b2bbfb74f7e95ee319c7d778e9f9e0f81d6ce3ad2053020874e36d8040a83fdd7892ac796856fdfd7c4478a7c6f77f28dea925bc65a2067883c44d8bc57e1ce00d1316fb69562584a3f554f0fbc40db0e4017d5f05f9e666a6abe0942183a60410e60a16fb6d8030432c9a429817cd8a2609f3dc2081e3f97878c36af2cdcf29d1ccc89462604a2f2e1f69e4759ca82463547f8ae138e4d670eaf9d4a0018e37aab1adcc00c76f0470144398d748031b6d7e70fb4500c78692038e1f0e388a326856635bb10161c6bf23cd6aac59359497a159e9c0d0ac6cc2682b77bc61e990c61bd6ea8655bae30d0b67959345bce30d8b51da0d8b99708b834468694378d210328730a700281c47b25a7c63c3e67466eb5dc8cc3c9979324fb65a7c567b0d692fffb15a7c3525e342066eb9f2e5ecca97b22b63b25455da4b7bc9aa69dd5cf40adeada1ff481c5aa46dd66afdc0c87559db269f7aa879b89f3fa774cd847e82da04ce930814cd825497b5202ea5827645b324a03c89400d04aa4f7c4a1ed9dfc1b672cfecf3cfd8c25124a269b5ceeb326e65ee473413cd58c8f4918b3aa5c100dc3b9cd2e4de4ddd374a4fe87777f78d5277efa694863bd86b7b11dc586bad95d65a698df1cbd151b73d17e609c680791a63d481cf7a2acc31aec782bcdc02b4df5e7a5c386af2ddb4a0fdf69b1fb9f58ddcfa2ecc93e8d9053e899eeb4e03bb5de893c8dd5df093e829a5d4057a12d55a6b75a19e44cf699d066a9aa6699a0bda49f49ced34505bb52a06ab2d66cd64ae208a9a3faf5b7f9442e1c803dfe8aa5b7ff35cb027d1732239b99d56cd8e1a48e4a95b5ff3b4f086c7f6daafb08543f5875ce9690bd85e1b2d30bb3f9adff361db9c122bebde26f6efa1e6a1efa1a6c5e09bb7c485a31585e3574bd786e3dfb174d9be7bd75aedb7b52ef089869a8c83bef963c3eee8aacb8eba55e3bc6af5b932aa51d797ac2aa5328485bb4f89837a38a548697ba59476bf7badf4bda360d9e46e774a53b39dd25a35cdd20a1b92c5a248eea69d82b953bbcda169379188e3bace1bf968d43c4756c475411e0b914039925df9dc8844fa99215d5efce5a579be58fe8909050d05c998ccddee7472b73ba5d569ad9a66ad66b74d24e23811d7759e371a91e6a89b245237bfaf9b2e2f300e03d33c616264e40c4853f252a97996ec045fba09c2c0c4c4c8c8cc1499aac9a4c5ab20daf5c45741883a6f44b2ae145a4858bbb5b6d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6d2dbbb5b6d6d6da5a5bcb6eadadb5b5b696dd5a5b6b6bd9adb5b5b6169d455e7e2eff68e5d7e0776c18901571f3689b1bd5e88f5aab61ad45148ebdfdfc19fae96fa1e4fc6dfbbc75bac74b6e05e5d5445ad065976876f9d986a3a0d637bd250e7ff67cea733d1b032c713837a533cfe8099bf84741e328e8ce6f2d0d6391612c79447f07cf1ace0efde5a776f50018a4a5bd9c703979ce59f3458d6cd6f4a881e5f8668cb038335397b620c5fe517b72fd352772870516fbfd3597e409df5f13923c24bcbf162475c878972f168d1f3de53f92a761ef2ac993f3febe923c22bc7fcb240fcefbf7acc588a9336e787e07d45ed7e67b6cc01d4d7cf3dad8843b58e01d6da805b9a36d21c5fe86358fa846c36834ecf6732dc6ed8b858497504d49d462c16c529b0fdd7f304795b36251ab91d1d0d054cfe726b44939a94b66c8c9a3192e1298017e12877ff57c3e202280569afcaba700edda20574a93f3b08e62009f7062411baa82f506988fa8544c596a7a142a6324020000002317000020100c89c4d22c0bd36cef0114800e5f924a5e56329486a3b118856120845118c42040082080180000428829643b00e211ab4f6b7e47efd53a227b62f17fccb0b585504019ee7dfc73e2282dd5aa917b0b6bf88453f8f699d4f68b2f9a45d84a3434b54092a0d942e8193c6e2023f05bc56a3334975b37c1eae9c718803a91d6845413c4c6511be0ec3e14383d6119d4fbdf351b832ad231bd8059a5c4d1fcb3520002ef15d300b16b7ac712f4a7cec7a222858e68d04f07481c4d7a3347a1e9045d02987409bc5d836532536052843342e4d0106d6483ace1a04a81907cf160feac65bf23e8079243d82f42271f4174340ff13d055b1b1342d4bc0fee05cca6079e54d3fea9beb51308018867f4bdf6deaa847a7c1f771099d5009fa7f81e1866fd3075c2d7316b1772c7877aa10ca7758cb3fbf4d0bc738ae638447af0a6bd2956a90336f64cae4d82ad60de02366572cf8cc935e2e52df27c56ece564d39088284cdf746f6c6a15e18bc677530f69e47df3569f7e8d62c995d0bac76933454af115aa372741e074755e19075c76b93d0942e20cd1f98fe59c4097282d0f245c8e915999f8c0ad2fbfd326c16e07b687ec9313a4c805944462e76c66aa5c55f6f33b8136a13d0880ee5963702b843918962d8df3ab07914e82708a6357903208fbeb5f56a3d64463d7327fc0c09ee7ac02fe671ee57e7656bef9d788c48ef4110cdd4dc892e3c082f2bb33c1210df4376d8175d6e0e8e17a0317c5af76557601d35ce2df8eee829a370b762b0fa76dd634e3a43cf799ec37f2da00b82e6a48a3bdaa472aaa889c05df08a503c1828cc5a49063a6ac53b50d443e3f324d4d501e7fcaff834c09ba1a9697c1fb37f5692b172ea496666b94baa2e2eb01c95585b81c0190ff47ce10ff06acded36c3146371831e3d6961371e70bbdd3f3cf9e594ef8f1b5c6f34cc2979d853bfb1acf32712709a24645ec86c83eb9b390c1c0a6c7b5b62076212b514f6062f2687ffc7e148096d269c06acf724d9f2ee9b27fbf7f64a9829ca5ae9add3fcdc9a49b9baffc5e0e3228c2414fe1333de2a089f8fed2d9ddd13628a70d32fd8588be7a46887097cdc8d3a0a3db5ed06a2a6a0dca92ecd62f4886f18a9cf7dc350bfed7bfd1193388d795a8cea05958947d0e3528e9e592f8cb6f65308cebc0d7913659aace2c64ba75c552bcd1dfeafb84fe63fb0c450bb58b73bd9b9fb882d27fc4930486d41de80837634660c6d0809c60d466462f83eb7d3d4cb339e7bc509c0c1a489b814719008992469add944e73e5239417019f5ee3320023091e8d8dab5268f96f4c423b7252a23c6f8363a95d6311833ac860314cb95274ca51d139501ca3dac90b69f81c9d449a88706c5709639485f0440a344a8553e76561c387003c99ffeac762db23a46894f0ea647f64b729f3fc9429b436e2bdca64b209b7e36fd3bb8665c48bd595fdf75e59f99fb1c2249c0c6aa8193f88ec67835d1fba17cdf842f50a7961b3a9557f1c38dafd9bafe27d96a271ed44069be6a01895dcbafecb280185f92f8ab531101e078ae5cb2aac80642903acf53d9fd58e601323153ce8478cc4eea0ea02bb709f31f0bc55a38cc050c15a1d26976292ad8ed50f0c1180dddddac7ad2015446e86223c3d173c3cbdb46025b8d6e3930ae946bbdbc93e04abad716b1815f81212b4507ee038cd14d08d7f4f6701d9619c5101ee92182c65e483dd164334ac180c2df356b014036b92f369bf9561584f5b32aa74be7baa375f30c8ce57eff9402be9e4564c44987a3ed1d0c8caf477dcf99cb29cdc955bcd1618f16843bb878a89153cc1f47c4b81be5803803706c38083a7906f2b4e60edf6a62c96aa218bd757b46c151c17f621a9858ed5c65ccbdb2d616ac825802735acfa05386f0488899372d7a01252ccb55709a26907e2623accf570a6411a10e1a19d2854cf15a66c8df45eb8648a8c0651139c4a0132af7265587c5544000aac9ab5b88fb2f44db1fbaa798bbd65a8ad52a44dc5663712e688de2e17f4555fa7b00289c5354f74e4e0b2f80ed3c951409f10c3994f64830f9841484aec13e53750a802a263e01d3c75e9f0c0024602ad634018f0690a50e0c82fe6d73a3faf7de2b539c4e634755868fc080a053437be3fdfc9a7ac7d2f7561a595eb9bb085a8d145823f61e19b8126cc1e7d306b6b9a8d6fa30799254129e42e999f40cbbc61c3a58623f544adaed6a818c352137f360faaca64376a6d378c10022a264f93fe4e48a273020aa8f7e75c170a8da018e0f55a1c8484b01cd3412a0d31c870df7281e0c084a95d2c50ad6ed665f30c22e922140203f68960559f000885fd16bde41fb3463c0fc43dba87a473f035849700bc16900562d72320f58b4082cb9bdd2b251809ba8a12f6c402d0e160d8dd05a8e746714424e0270f3ecf3a2e098b9cfe57ccb32fdf197ee5962014df847b74f5acbb7cd68cdb1f281776e480d86cea1208096f26090e686724fcccb6707f812a09d91d4eced1593dee70dd1abfc37452bac37d7825cd7c70de87697e2a78c87bbd9f0d33f79ff4459d69202755539b0e263d3c342fe421438e4c33b39785be0d0c34ec2f3c24b0fca1254c6d5849dc12c3f017c6fb13fb54dbec93618dcaa7cf64c967d5a30fdee9f9d08d4226b734c06e75c872e57a44fa53f137e6dee64298c56dcf39ad847a268396a9ad2f77a2b468b36724d2cd94dc9832def4f5eaa2643d21ec3f3732b10b76d660ef2c3d5ddfa88fcc694a855193323a06105d6e2c7e928f769c392db63fd135965faa69be55429ef7afe451c94bf5a6cca555db745bed56396ceb661d0974f1021ac7a0a85f49dbb7b030b75ec47261a1a835ea1feda1a1a84decc14e0e454db29878a6fc3d0641a3cc2f1287b2b41f12fc1f8bb857e607c96367faade4584a33043419ec28c8b1ae475a9d1072804651715fab9c731409e782019b0983eeddc7096415517586032ee0483a861d458ac221f9db22685e75c4a7dff97847ac0ef5a0339b948bb2fc6ee699a7471cd5be23be30eaf40f300de60cc33c102f38fc6161752c81ffcca047bac79ccc99a2651cf693674a9eca7676de2a120a786258c9cadeb8a524b3de1aa4b150021734bef0d17a30d611c9fad6ae404038448ab79e309278fbcc2a0aa3f5fbbac6484865809879fe1a2105e27d4dfe60fc2d34976d6b568885e00bea8e4cc17fb07b21112e29eb0f9da6c319f411b5136593074890d7bb3750e72b499ace08721a1978feae28f7da2a865b6c67b917cb2448f8f1a9a0334e5bf181b118b103e4509033991484d67d96e723885aa37235b85ffbfc861f22903131ea7ce82e41c54182f832dd047b1ca01bd5204051767ad35ae6b057a0a3d26138e85b6398e2de9a0e9914e1a4571a730678e52132f28cafbb42c1aec0544a35d82b257e8f114f187c191496676bc50b5cce31da4e8a898c26210d99c9f7ed391dee1534a0f6f347cb04614b5b729afcaa93bd48caed86bafefb6642998c311f808c87038f3cebfe23f068e31921440dbada6f1a3254411aa6b7f9e77b4cd60085f6f4f3422ef389e82f2c354c7665d28562b161007d3481d6ab370c05dff50bf9f2ec502a9fc72f46dbef93353587e92bf29ace3acf2312201cfef99413848751899887692f47de50c1a087111c9d08e71e2698ebf835c187392ecf29973e0cd3467e18378a022eecf91c6edd3886d16fe3248c684bc1ea189fc618fe304a7d425478f7ef319d95ad1862097a7d4c52118b2e07c4b4f2d0b9a0d771b037e31846bf1f9130a228e7811813079c2bb4d9fb1863bdf5c618dc20e082189959980af47a077b6388e1b6713e8899799a2ab283ea987f9e73424c1b2d2cedf9f2edf88b1b502c86d31c447d21064e108951c44463a857c19e1a0817a886def36ee545cd2b0b7a5edee5de85825bf93e7eb5c4230f7959ba5b89f8db27e4ef6b0fe11c324a57c1599ce6ddcee1f2ecb9a456d8bbe5fd528352e8236319c1765a41ab571c4b205c3a0b8ac66315edd21f7891a8ef079a4884b4c52a1aa505a1284ef3098be2bd1caea1bcbff6954479519b493a701c3515f4d8278a45f8fffb24abf9c49d6b3d1a4f4ea2b9793b82cf86bbc89f4d85d8e8f3e6e57f7c2d9a713b9444270744b10a728e91e87654bffd997b58c52c7debc05b32d05abbc83a7af0d1776843b722b67f43d54008d8d722ce5baba582a6239e1a312f49551a293f2d379f6a5069bec80380ea809f6b38614dabf64227c25a3c14d12e803d1c0e88959de2a9f627139d28ad5d2286bec7be754823d2733438597fb81266435128f9e6fccee08064b1ee19950d54d4bd43d225905cb5e45a0334200a6c974358d46a58acb30fd8594b9280bb6f9b40c3afb419404cd34464c459d01996e980d1792bdd62a6d36b913f52d527d1d3400b22a2c5e58b2f472027faa1943646a4a57fcb9a594b3504a80ce9ca4d636d52917b63639de568d08f1ddad4fd170677d7a66879a70066a076178c88f4bab92b34d4bbb8818459bbe5ccb5b7056f2c35acd3c802cec40bc0673c7bdb546cf35dc574b32ff6fbc24b4987ba573a20b4480c22a4f08a448208bc5c8e2d29584ec50e19348a38d992e2edcdf91dda4a914d1e446e0f747b1b7ac480786633aa543cdfdfcaaaaa266565d02119e1c49c87a08814ac8cf3a2546202a3059a06a76dc4ec55e4788cbeff1c2a9e6828b587fb03a26d7e2b3d09cf583e546e21844771e442f974162cf1e4b91f601161bdf004d4d2ac97c008d1bcc45157b1f092818b41e4b28c470c96ee10b9c98f9afaa8f407636c0fa0dc5379d81a2af7f92c5c7e32cb189572785dd80418137e4f9645f82c3981d9fb26cae5af6a1089148506a272ef1d2dfc6ba2d3e7d1ae41aca8607811a7f952a4dfa3f488283b3d57b14f79bc4300fe7d0871d55d522883264a09751f24f835b877f47f45e926a1fa8c9a593e1526c6a37a1cd0d7b9f06445243e9b995df0843a6e5872e90461aeb28c78de6c7065f0924c648abe04ced7a48fd7320d7a5b8cbd26205c1910694cce441d3f6e00d101feb5f69ed9f80cb805a4058674150448c483d5361089b740ac9ba01987751181fbc370996ccd122819dbc58b29526f629fc0e7514a8966ab6d47853ed60a07a4cebb273ed24b204ed08a42c89d69314cd9b893e130d3d3b4429de3c788188866b3080d87b95bb9c061cc1eab17b9024a1d5dfc09dd369d9eff1f6beda2a0810230c72745d07a87cc061e1d0258f0269b7ca9633a3cc45ca0f614b972a1a233b027947494c39fe50b2fd2abbb0911a7b2daaf6b15699895484fe035ac63444d876fa3763ac6424a0815f69d83ab823a12aa5037ed323e9e50f72564479fc70dd331c77a1463c79c64ed3b416b45e812597f34e387ccf9226f0c5003092c1015758145ae44ce88f85f72c8b5ddccf17ddee85219e60cb1242f9af464cca2d491b64fc56a54f80371091a0adb22a109c32ea0d188633dcd4b04db0bbebf81c13c375eda978305246f595d36b5c484a382bcf2aa1e9f5b78d7bbf1a1bc5c294f6768466feac6e6d8af2280244c511efbd024953acd40401b33e7594f1d48418e38ee8841c6e4b7dfe1c5e8255a2ef06933258ac1a37efd8f88c75d5970b8ad481b35342e5b6d061bbb9120a293294a93fe36dc4b3999b15fb81e830c515166fc75f2f1806653318f5ea259b1c7c8025748a8b3766efc2afdf5e600c093cbea946bba8cd9c7dee94fe0acd9f5a2349808a3a9b23ea02e1165811c4c2dd9e4844fb0f527986ae6801a462857e6de0c057d7533e73f5e29e21d88118ed779e400fa14825da48899b24a060fbb6989c97a6d57af8b1ece4e3535ab3d084014d5940eb0a5a025e3a378f24d4a822ed6c0e7f54cfa083f9551a3346ad6e9b96c8d4225426a492cd4e1ed0afc884367efc9b504ddcbd8717e6470eb744052ac07227bfbf2eb708c2258e7f6679b26677a2137a4f5e2d47932100c77592cfbca1d8ad8708c4cb5b03608e1243b99821fa1583dc36ef2280c3fbb3d9849e9f9777d948aaa18c155c6ae6bcc90f5cf10fdbe188c3d631639501f111b2db9ca8436996b726038e3854f02391c98c6d8b4e4acd0aa62a73d710f384792f6eb7a7ab3e6050dd2fd29355ee8690787c6726ec5f5c0afe991b3b259d6d30256c619d2407fca7273c6b34ee0c882ee5f76f53c5abd6bedbfafcb17b0bfd7b02032c367130239e10e0a866d8d34305a9707913d819a89b27d0495e8b76b07e86479285c95e84c41279626be8b0e8d1c8cc9b288e3c9d88c0f549890a9b0800cdb408b7b89bd5d55be2f1db9e283b83c728e5c26f66a193e20c1ba072c8b8cebf6648adce8bedfdb7585d0c78153a8627557a376170a81493f6170d1c7847ba6d30a4ceb7593359e116dc649060389253ee0aa37e4d1ccc4bf6a8eeb6f9cba2003adb64bfe456747a4fe0ec0298823fc7783f9d7b6856c5e9447ac07efaf7adc442e1de7ef620a7f42b1eac1a71be20dc75a441d68056d2b6569051a492b44c3bbfd82ad0a1d83dca85658fce2ce1522a899552984be0c07fae3d9ce6f62c78783dcee18b769b6b6ad99b016ba57307ed3792c4008dd989f3bf89447105877fff10aeff1f3359facc3739638940cc6b26676593d6f4ddb1d9a8a16d703fe99d29b4124a88de2fd6d87f2bfa3cc43ceb5165a97de79201fce507f915ac6605207986dde9d070c6a10dd917ca04e43a51a8d2ba21b8fc5d995d799829b9bb2af9a31133a4683354528383b0183e4ad0849d2e4074967588f1561a3e8adcd3fd2016469f20626503f55f652c78ae340be655ab51b466387d0694b1f2f0f1adc359f0282354ccae307d7e77484308c437b196f64a8db239042fac29762fcce18eeb2a1cc60a047960f4d5758e04b5eb8da449e185ce7cbec00370683aee566aaf3a5a460974a14ba2bda76f8f1a52961450ae69b1cf5753eab7632c637a0ed977d50ed53330f1b6d6b56225e0738de925a6a1a256d0cbffdd6b1584fbee069767538123d5ea2adce12446a6b4b6372966e3132e72ad17d2e5db0fa4a26570fb12b25100fb092eac373ca329b42143fba4b2f08338fde77341b596064880d9f746f86966100d0665d903807e21a116a38a2bf497aa183308fe49aa3b97750880a48581b8ab584644a8d25436e5243b229c8d4bdf12001c9affdd6c6aaebd00d186c1654ea755a024685c0982b3a682bcffe73546ed7906c46811d6f5763039a5a9736d3b7611f77d41ffb2e69aea1913f4fcca3d71c4c44975d5de6f69d6eba8a0c4cc26dd3e98e3f1b2592f937557c788576d81a9948b3041825bec056229655feed43a271ced5780ad6b55a055c3b83dee9e38dc984d7e5f5d599b1b24822a70f40d08654a1c96c0ceeb03c6a86e9514b35f3ff94f573f0b03780ee89718ac5c0f64dbc3a598b7849a5d49b8ef62a49646fafdbc4bcd00d3c06b8b308f4381591c56299e6e1cf43995033f56aa4a31813f2b4ec260a3354dd49467305aea1c8ec93e2d1a5c38c71f421d7324702f9d2a0e54d8872b95b1bd6524bf49e0f703da01611280a75a8798dc872c736471a93271ee2cd8f3608faef940058e19ae71e36b6d7f1a9a331fda9ec184e8f010448d2f6b6596a022eac4d58051a3e94a41f6cc6e8832c95ae49be4d58fb530a515de8493474e66ef37e9841bf660bd4159e72735af9b2b004e22b2ce38c85e3116dd5f294ba0a0a28a98df6d81fe71cd3c94887dd4ce90aeaed4691a49bd4b2b31fb40198fe795155a353524b4a1239388f28ecb78c61944bd022939a80345a17e418a182be46344b23dcde38fec7c89e5ace9f9fd628a1ee84401acd0ab588915dc87cac5f782313b04d343ac57d6b75071eadad89c1753c57d8f597911407ee37ff44d45eb4111b857d47b896f65ad411a095dea0e99a6696b078072ad3a0b87a15c4eb12ca0529c621f988692cdb536437caad174eb5fb03c58481c4319e0d7695c360996ab0cb041ea7b1a3bbf0304f57ff807b20ba6e01c2a443150a9e82c9a8cdbad9cad8bd5b99686413a384755624762a740d75b06170695fba7ad848c560b89c499f6d06496bc98f878d546966299ef74d6c3d4083c2e59a6e1a7e3c1ea85452ef04af69234071e05745a40c3e25ae097e40a0c02f4e778eccee534f6e24f51d4686629b724274d53d93c1eabba9085a2fd202bedb0d1dfa7d1fdba67fbe4c80b41fd1ab06b84e66e70a1af4f667bd30344063238489c1dd6b5f2034c2749d07870c152dd3232cd80f2ec6ca5c91f9aff86d46d41bfeed253d4b8db7bf0ebd0ec2811a47a8ddf86477c086f50f9277ce97f3fcf7553ccbc5728f2bb663a2fb247d841cf30e38f9169e312b58c544ebadf73be9ae9de25f6b8bac15f0986344cc166a35b4f05543535b8ebf2decf11fbda84dd27182d92dbc8d67e92f12d70f166c8efcdecca9cf745ecc2049f9a1e67d04a2aa5d422078f9d5deb43580c451bfae4b2bf5cb9f095cbac14966e3ff1e21a26aff27e4c76ed22d2428cc739a288d7d8494060b7aec8b59d2b2d3450df61f325d6c4531db55482bcd7d857d7578ac95473efc8eb6692c60239b72ef5edbb056f90b118a4c922415805749e93fb3431a8b99aa7d48025c6670bdc6a0aa833d0dad4348b7da1ce23ecbc7896f69ad757df1679c0a5cd7523a03cd030fe2c7bbacd2b8d77e150e047095c1d4bb1255f607a09b8a11e3ffa397a62d9ec6e91131c5432effad80a321c74536049fa3e59f6a5687a9eaac72ae5df1754dc9343a1eb4704f18669d1eb32f280ac1d50381d8b31a0fb01edc8d9583e5a9965c6f9cb46c2c5849ee838f1cbddce9bb7692b31f25b871dae9b856215f0cec230197442b3b6f52bd0ccda75d71ad12cb7c7485cc38555ea98b7a26e4183ab652d06a8224f94294112569dc4c9cde2492653f88f8d9135c1d911d79c37f359b1b562267d3d72db5bef10dccade5005a26cd3a08a466271e9d7f136eb43baa1b44e526566363f37930af326f2ca312c24fc78a500e9b3d402f498460c685b0ab21827688dd49f2379c60d4527b83e223947e4fc1b23139e135c28d4202034d62eb5ac20766028f9cd86ceb07a5e016c34e9fe0c2c7e1cd7640b0285c5d4800d469d389b821ba2f63b720c51b791b22be50aee8a93de48b532e9bf992513cc1a0c4b3e4a643a3aadced721a0617722a310ee54759ae5711cad04a128a9adc7860b3ec0954984dc0e7d37f9c7f3e8216fa4871efd04971191869b1402d193bbdd01d8dbe64ecd446d06ad08c233782453aa230031515600a9e0457dde280ea851d4e27975535d321ee0660484ff3f525c05450584dbf82ba820b65ec18164aa7c54cfdb3fa21b42a372b58ab5c7d6c13df6e7a82abdef621c4c460a7f73214e387ebf0e05296eaad5626da343785d301584dd9a8b2b75299c8fec42295cd2aa5e571aea4e1d29beb3ab715b18cc8ccf4aa4524fe63b9b6ae5d6efd3a38474db7a36545f928876bf966644f54d875d7e351efe472ad479bf6fc27ddfbf6c031208c4542ae0c0193f6c2c4657e9ae1c6500194536e2dacd49618d98137eae614ab27ff05d8b9ccdee6e982eb5065ecda940a0b4b45a98c355d432f2a2d0243c4148a2b88ba3c0f3b95d8825db01d7e1108da856a660bc8094ef4e2c0fe11ddeffa41bd9627324d03a2f91d5f24711eb386a9238e17131d52b5ab1efa985bde62b687413c7fa16802369f05021c5264498a643acd00e1cad7477077609b845090d1693012f61f24a5c9e0ff6e282912ef97ea95712b4438b22848696b0c992019f5c1856ea100c8ab791a72570fc6c8359bc22b27ca7210d298fd6549c0d6e27ba60d43822b2a6c7353f0590ad82c47df2dcaeee4e2600acfce259d8be09164986b5d5436f2b6a520900143d83e8b7232f8272f55c73e43795a65b54718f5754124e4ca38d384e9f9bcaf036857666217dca8f9537122c201b6ea58bda1ea616536c936725c880a426ec76576c6ddb0678b4ca7f841268c0483d64f3154e7f52818e84bb69a05ba9fd0ba25d45632583d0365e4f9d9ea4533342cd2e064e6f3e74d40d513546c3fff52866ff80db245168ee15c85a0a7764b8e611463418d941182c30ef4ac48c49b6a64af5084b87e0761b009660fc803f94395c73e803cc71448305086201ac445c0c9057493e480ab236a3dc088f387bfb4144d63cb2fc60371524c5c4a7cbff75399d1f1dadc2eb0b08ad0ea4c05814f380a9e6d410895c39a0e904f72d7ad5ac4a11384bf851ab5759b04fe4391219bd388bb1998e4551b38a759d1d93a1c492125adca9bd7461fce2c79f9922c44b34b6a22c26f65c76b2a0fa8a7a0f1f3cfbc629d9e2e16eaa6c512ef051254b0a3f5320b8106178b7bf81efecbf97f5d5f459dd032bdde532c408ca204575810ad37757a2afe50325bdefa1a496b6bfc53da21e0c0b7763422a73938b4ae090f3a7e1de28f5f01b65a09653591c9975d0ba291513a0c26fa9df93caacbffb88d45d856a4b73f398939c1fd019bed2f7508a2c26021b4189a315da54980f533702008f59fd4318b38e18184e34c3be1e27451e6a1a3ef2214ab759a577f8f2668a6c2be957c5d137ca0d45199f050e1490993bf5ad400669b1209856ad2cceda13a370338842514179ceb01a2010a90668abb349fa4d184ff1c38825a13db5e4409f2ec658b738ba1bbdee1cab0a35f6913396f067a1b65c9fd7352f72abd444931511f2780d15f4ba7c0d5212e0521cb18930b342c54f74caaed073c4276c591aa7a67fd380ae2c8114d2a7a4ae9205151be7ebd4dafb632eac000cf3eb5ab7678f829314967ddd92e683700a3ae80f789a3e3f903c36e8dfe3402b3d614719d6bf39a127ef9c795810e03f5497b6b837d7154a22bdf1d03acc0a58267e4d2871c748a3b6ed26d9da0b0bed0fba902c6d82328582cc847eb1c56021947c1bd542f4b653a44a47c90a113453e63817400addc02f50e000a25ec99d47fe4809a846412197269f8dd699324c84b54aa23e6d87d086c7ed9c6d801c8dbd1f873508f6fb838d9101c5c68e3c007908f0117554b7904eeadf93b2a244b0e9bef0a8a4f862fecb78a3efb971027281f21c87ca14c9fa357e15c59192adcc056eaca0aa4ae8c3a78f6e6380e1a6034dd08e31d8d18d6f694b7883eeb1fa01aa00499202f28370ef40b75dc3dd4b580ad6c5179aeffe5e9ca94936c8268d4d1abe5af6639373041754b6df60d5c6f56ee45576a0be458ae39d98424da2610e3ebdb854c9881e0754f7fd2823b43f82a47b46616439f1ed8373b998efe9f1cf7fd453bdfdfd135d28ad7a085522f0f205e05be2b64ec84436e45e817473b2bd6481eca0f01dd157310df19f2d47b883f0e70c6f74087e7240fd949fad24b6fb4413d549d53ca42468676b27cd863216b6f1adaa7978eca6356a37c69a48324b9433f8b0ea7d3a5761763c845ea99fe610078f704f4fe949e094fee0f9546a856ef039d55dedfad2770f28144401caa4c49723ce8bc55f92baefe535a0a12cc16221be9dcaeea5099a3b01045dea85147db8674bdbe2e4760cee18715af18d929bed101d1dfbe42423f347d6a110d59b64609829fa2fab333746c05c9e82f57a99851929643497ebf51fc1b22d14dd40304086c9281d7ec0b337d022b1954cb579ea47674849a507fea5e9eed0fa2534801daf222af50b68c59d90d65e42cc25b2cde65a0d3dca08d9d05ef047042ab0cc7b95eefd0e675ea270896703ac8396f0592f4d75379e72b55de7d7701958a12e204e697d2fb51ad2ac8eb4a00fe94c665d9e87f8ad8dae94338cf2164a84578633e55cd60ea4c4b6aa2a880bfa15665e8393d24fe1fc179a097ba77e624892737d04b63d3501f26111bb9cdc16613d552aa686e069147d85dbccdd83e0483eafd050c1516cce891ebb89a13652f5a12c72b884c5be0a0a88d0427cd591722aec42cc553267926107eb82208bde6e0b45c0554d8f2f91dcddc0e9fe4522d9c09a76789cb595d00c75e8ba9d68415d7c4c18af294ff39d83826175c30da48127770ab067426155432d4fd96b97ceaab9cc4a5a5d5d9644420ad2242f4c2e5f4fb4b16eee072634e656918f85b26f9fda2b63b0d09ffcc1e6ed80ec8386ae7f4d4b65575401d14480be653e172ab6bd596e092182c4869e548dc35da7087fbf4abb8f9739b5d70a27eaafec990e321ff32500f07044e543805995263830ba5696c44e4d01a3d63322616563a0f5636ba5a2012d1cb10796d10a6e9069b99c0ce78f8c887724b37e52a8c947195980ee780192677ae6e4d0145a5a30584652b962e30e438ad2fee1f0592ac4727b2a710b23a4be9a1fa1ec8f132621af8105a4fa4613f3aa9a6c1d0e27fec1bfe73ddc8327235186dcc2c26dbb2613d682ef8f360419e9fa178cdf4bef503e102547526f4035f8089b33ff9d32b51840a71f0fb090906691c4f89c8bf1faebffb781f05c295b1758e2501d32668c7db7ff7ea250708249fa2f5485645619598e90a0cee5120549d1ea5a28205add02a97b05040900a16756c494ef2a63a9402d53452019f9425676f6f2f8454888360b3aa414093e85c12dd9bfa673d2f516790536f3493951eba6481814b7e597c6283d0fbcd43319a885f91b8354bc80abfb0b00c4408f1b032fbfd4599ee38c47f34c0f2405f8de65c74694d0a5d15577ca927aa10c04c39e67da7ac47972eda319d24b8e96d9222aa7ce79b9473a9c81a6c96e1ae310e9e1637da4301d72e0387f287b047d157e08b229ee0ce8564432871d5b53d0e0e927457c040e07b0c3cb56b7ca02836b3641942de44dfc68cc9630c0f568fbe02e03211993f7f64fa0c1f04d99fc82f16e724431a37080bf03afb64cf0861952a6653cde28fd9e9ac88f8060d398372d631900de919547037c003e905ee769067ba04b7d2f00d95545455306354325b159c747d0a0e1dfae095b607fc29f7a332aacc16a552f44423fe276c83e22868629c91a458f5031e4e95b1a020997d408a75be7c70a138842f0212a1165e8218055228781d2ad4bc3029be3b8312edc2026b9019e214a808363f5c379f08bcb624b1268be6c5976bdff40448c26090060945f4252042233167976d2f3041c81db8ec984fbf18b39594ce1f477e58e3cdee6198175386d168bb7c216ca77354e37ae7cfc21a6ac989756a87875e50095626cec0b0e6a3b675d72b51823d136691580aa323da82943bc6189f777aba9a5754a357265b864a80cba978350432c78f802fb9f4186ec1fcb68ab61efc9ac07863bbb1eb4b0a823d21b93b629141b98800e14140532f4de9f4bfcaea6913f7dfa3fca71199d4e0d270e3a1a110173626aea0e7193affcc956cf0861b01308825a14ed715d08cb807360196f1bcb47174ff5650d1f40acd9f48fd479d0fcdbb6d5c912ccca9b97c1279d430d7844bf91cf375d9a1592f645517cebe81104f8f664f0ca154069c3a778379bb42d4f60028fbd386e6259274056ba8b02fdbb99a81f0591247d2745b422a9c004717622c214f9301c7f0f4dbaae9fb7a4ba40767229dfa9119450000a240ae2cdcc1cbe973e972c89d79f325432e1d83375a31f7131a816cfe087d620b6d519a817b0d9f7605136144643cad52c1010df82599288a983b75494a7bc38d4099bae57589de1779222e500e1f1c357a7c68ff3fcf359ed10042982f271e40bc587ca0f1f576ac720f8e1c240ca88bd1251bccbe030532cf8601eb291e0e5471fa505f4422d766706eadccecdff271b6c2ddd26ac62ea3e95e55ecbe0be274812c0da27f88f62e8021f56cdf72261f25b453a63ff0ebc7e0aee46776b6657e9ad8d390672ca6f3f4e577a2ad1ee7cc72eec9adccb73ffdfbbb18e3ff87d90bf389761edfd36961b14a5e3e4f549ad9f249b266f34019ea1179ba6125f2c35211b311a0341909a629fc692619af2de59db8bb34199dd4adbdb67209d84adca8a67ff32b9b612dbf261c900210d3a9ff4816088cb615c3bac89d070ce89e59f98c392f617808b66240a5f104796ae7b57e516c47a0fee15b835778fdc92ba80c3cbbbb49cfe24af4f2666cc449cc1006cf58ca2bd4ae0ffa2b1163df45206f1f5e6c9107485f625131e773375fa6b819e43293efbbd009a83e58bbe19fc216296eacdb118f9386a5289b00e6b40a95a96c86d53ee12aa9ef68d32d1871ce08770d9a15a2a3c45041ce5d5a20eba1405d2bd81b2be15b959c16d6fbc9aa7df7eaf42a68c6b20557ebab2d414396d70a0815849c58d651d2acf441f93f8ce7467d46a88e4e8d921dae1d0cfa552963592047c2573c5d92bcb107b1e37ba33436f91ca32caf37f5ce3001745f596701e5c4043bfb5c94dca82b926a9c8d9ec37db63dad2447c7982c35bd218f6cb1809e6560f1d527f76451223316d7c45c04b17308290441630e65a0a2b2e155f7d46b7782f3b1e160a38374b0d43434bb55e8708ae1e62211c74801b5b84f17605191a38a2888b500e1d049e43539b5c3a1826ef5767a3a0fcd77896a54c647bbc4ea38f3bbefb4b560bf554e0aa7eb8971db86c452102fe156551ef3282a85e9dcaeb6200098244271fc39dbf5016677d6c69504c5502225694e73744330be3d86ccb85ab931308867dcdcc56f2c318785eb4d2f6f3e648c92934076d128d6b7a1eb4c5f12afbbb131e48bf297c39d76efbeea811b232a5208fd9bfc7a253d304f4625cb88892a28fa937c2786cf868f6a1bdc8b039a3c2d59c753055b884611d11067c9efd7a3ec83eb4f50f71fb404b4344ac170b30c4ff5242d590229feb1a9da8076e261593ce0b0af681ea7ce715377cf946196a477a23647274d9b49cd2b7d901b88a8e34c65e3520aed9726c0c0e44bb670c293e0c6b3d93e9d3cbc9afede02ed57fc155dbcf9029c7f1b65031c1aa53c5776bf8fec6a7d63aec509b949690b6192db15ab590a3eb485ea34ede9b966e91355d5ebf1e733217c52aee760559f0149d0f9b4cb25d526282c74f45f20952cb59edbcaefa4138448f7666084ed9cec4b884c323b70b638c0064d4b62b07dda7cce439a000c4df962db42f0fabbd4b0167ce0a7987a489560a10527a1c4279431af37730d4650f94074227d99b847e8ae043e7cdb1ab21add329b1e77876466b8cdafac79921fce229c3cd9abe552a03f31691c51616dbfa1b34fcdae74f393625934cccc6f3afbfd34195d2923030376258cbc91c4288a7e5ba2b71c4021a3a38ddbbf221474c64ca973e3ac0a42b220928190ab9079bb88530a2cc4540c1fc234424ed0aa0384eb3eff356f62813c8b42e10a5a5f0e21ffd3c59995fbba074873e156250b7b3fea32acacc281e8a276d30da18f62238d6b8a8176f1b258ed71c0f076a2e317c5edbf3ab4782792c780091d61a1e4bd8cf0acfcc4489702ad4cbcc4d1009a55dc85d40867620642c867c43589c870741405c00578fed39a089c28f45316f5bcadaad8d34a002e16010224d96807c0be605c3a8fb4b4505530e5b18903bfce78ba86566eb97ed94d46b49da6f1e83dba68c0f68e14b3cb9472637b07fbab2660a60b6a26ab05d8bd1e5ebff5d4e3c5cad0960305f57509cd8ffbd08e33dd7f869df1486929c5546993ea7a622a84833ec44033edd4c631027b7e5aab5ce903a90afb2f94ffa70743d4cf0431208b68f96098250329cef6358525653a0c2b2a7504d78589c052b09530ec68ce0a301e3cd8433552c672000550328844b5a751575eda4b38edec15d91548e5d3c9c3753307dbd262ff1e2129232b35b74b4b39d08e8a8aff66ccad5c4737b9662605000d2e8f7ed3b1d628d3c8eda368d252de8d3662c2caeba70d81803d184e1136d4618319b73ce3ca4c784e1417e6ae803ca06834c1837eebe29da76832d9c668235532ad98587dcfe37d824c2782d0e344d9ca26cb46e1f524a772973eaae721d6a436142ed92d3e4326da78dddbd8c558a6ed54ad41c5eaed8e279f51699c5f49a6760d8bda4e7bbe770971de36335477f1a77a05623b2cf129a841e0138a8f375792f2b88878bd7459a9efb0e836af7623495bdb14ed0df5b348481bebf514635bd89d550357214ad4839b5876bdd7a451a97464c0ec20c31c75ff24a1aed680b7afc1c86e1d0f50e8e295112fa849e9ed877f3fba52ecd19b0ba5158ae2834750aeb00389ef13e32d3942a17bf74b3c34c9836a23302df78aadc8e21ce1ca1186e744c80b7bdbfdb420623303d6a60ce8a6a7fcaad38991a2bd27bc33044fd42b4c458d5f5f9a5a440e679f906d883c9bbb1b1807deccb1d67c1d17c3d8710a537a582b6317ea7e531b6046ae0a48c83f6d20aec535577c7ed3c900008828cddad84946123258f2130edb66230862bc35ba1aa72cc6e5625ee9dafcd48ea5cf1e1b3b1fb8c04ea047e79ee3c98d989c7757b5e8ada5b75eac86d823238b596f554c8af76c24144c00455a73519dafdb167e2bba737c2737129ab425981f0d92b749c6b082276bc166caea6004e918740fb7ca99774777786507ab2332598c70a8fb785a48ac3182b23fb77d8c6dabab4dcc19946c722b6fd313581f6102a5843d4d6f653d20ceda798dd06b48ff57016f5c51dcd1bb00e90920e416bd0d35b3fa77d39397377902e1bc37ff988d89c48a0f6dcd5aaa2fab619c6af0acfa1ab8a9a92e3b9c4a0fdc8ceb23cd3f23140777567b9610ffaaea5019ebb2b1e1c4c7e5257b9433acc2f3b004453b06e9c0a673aceaf485a4f36689af657bd5212464913a1c6e9f5efa08070922ace96c9edbdfeb7ed05059d9466509367189150859d556528cf51100a249c49424f3d85448ed7379286ac030e575d31f5e2b75cb799560670eb05970259a26c3ac41e4edcde78cc88f8767e0a95e3de04dd8b9ecb77d33d3436d0088f56c3d4078404547ee9cb13ec07aa9a5fa3fab46a3adb21de5fa4576746e85e2085fa218767b6baec78e64e82eeb66c7ea38e20386b90eb1d3dcba1b53cdfb574fbb09d0d91a5f80c12b71eda7b3f7c262775482349e19597a838a1cd3f6e7b745725fdf870559640c820c33a3b162735530aca063553c7e8b5bb3667f3659dc5cfc9591dee14cf5c68c5c7fd77db31e9d00a2891852e87e75286cac794a6af306c986fb29db10e51ee97dc0c12118b5129ffec561f20bbda7b6a3036d7c1df1eeb748f681d4406b3a02aa97e1abfa5967a06c3b0fc4170e6597758c2dc9fb81f94a2a10849c781cf881eeb191fa1b9af7893618522b1c709c6e4c55788f87558ed13421a5057041a9a40fd3f8766f7591e99a745891c12f45d0ad07a37e83c97c2631d4621ea0846912f0dfc756680739e58f170741c2c7dcd6ad5c5de4e5ad3c38536dd4ccfe82343a7d9f36a7fdd85b7fac6f492a170622d80f52d9696d4e29d1bbc91048ba3134692ad3f149b77108d8dad82f7e971a94550124b5ea4385958cd14259885f2bf0417c38a44cf9e931d43148c63973d5292a0df36779d8a3cb2018e7f9bc5def854d2d2c9f60b14de08c6b7792930111f651b6c3fb17bc20bce3ec3edb5ef984cd473b26e063f33e2964f4e2598c9b0f22b39555c12b24555b8e1420067435dc4899134f2efdf7b8e3134ab070ea9c06d985948014261325d508b91389d0f7d59d4c24ca2ac5ca865a5ce687d17d8acfbfb1b06baabe9ce0d734e182cfa2954feae8c9e3469e697b88e6db002ce87eeaeebfd839ec67f6b49317b5ff9c89b3984db1dfe762297d21292489d510b9cab062cf719185d0128768fb52f1002c7ed092bb7271d0fa2e73008fff1a51d01c80c4746946aaa53f5d35c0b5c47b558132bd5377ab14f36cedb8f4a2ebe8962d6568c7d0ca67e0965448ef022b1906b18b4266c70b708e952064f49cdd2312352a1b7ca9307bfed4762d6fd9cf2d4d15749e548c81814c9e2306fd8e0ee8f991e02263f8effc0fff2be117ed8bf3436b8bca9698a520138b22ac5a36daf27fc5c379d5dc0a40be5fdef049844603c09a9ee36e37468ac5639d5e24af997452fa41974629103ba21b4555e8c10a61000d0f80045ce3eea1a67d317a28f133d3701c078f4a2d0a5debc92c6a11d093e126638ab66019e24aeadfc876261475fc6d2a37beb6efe724bb3ce6b2c506f8e10951296e241a35c93f72c81864573a9ed15a9155a042ef966b4ddf68b4a03b9160d7e1611836bd4fc0b1a24bab953a567cc84e8232132e660d943b0b2fa40eb47e87ddab45d0f9a854e58ed07052a90aec88955dd3c3f35272f4c649e49228d234777d51d5dbb0974922530a4121e3f352e3ac4d8ebc98a886e2af20051725d161976d88f5621d6b2ebb8996c474e61911c9ff66a99c67f1a84820218d993e44aa4e2f0c2ba61c29762fbe9f9cc7f4dd84af0768338e4aa1681a3ab12b9ea68ce54848978a534fd4e52b2655d45fdc1c6066c1813652c797ab48bf322fac9a02ca499e745b505a514d07f8080abc55e0efa8609b5580de55496a1264dae5fc4fc6f64a2074a520f508eab35524af3e51d1858161c0100314838b0b241e263e873e42b595fa066a6c8e0412ed561cd6c6d86e429bacb42677b72db794324929039607f3062a07daa66da32490624831a498528c17e3c57831d853fbf40465d48180c480c880a8806056484888c7a32121c6c4149ad0901093c994dd9b044a3f85994c4c9c361919fbd309c34e98890c764d4e4d9c644444464642264212929089f04dac09865958c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9ee6336a8e0b21826852ab4a05a99252c762f76b125eecdaa4cc5ac5aef8b5b7fc32cc7f762d91e9165263115d8c41f0c642328575c3722f2fc10c1853ad10784ebcbadce8d0c59c05a46a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1f1d078683c343668b11846dd77605cdff09d6d5b1ccc5a226e629432675af24042ba10ad83a71cbfa74b242b02713984514afa601bcab22c671bd26cc886b80c3a82c84556a43366650b8cf48d292bfac00e6cfcf23bfc511cb68da3bdb0cd86becf129f1f18818825b41fda0e487b7d3e99e3b89c6d48098eb346c8db25e2724b7019a404e83bee3bcce2ac05bdcdd98696e032480991fd0ffe601a316ec0acc53d481cf3869408c3d05d4696724e774a6b9d1f08698e2cd01cd303818befc0f80e11eef58c408b2631564dd3344df350da92af7934f9c5c81e6e0c48ffee0c1277467e2440010f11202d4b4944be410722701a80710288c8c92c88068808cf0652f441f800d8b60f9a206e9b37c8b43555f1cec41ddaa22dda32426b65a55b405683b696a049509c4d5bb4d5759d88ce786a894f64f17b77cc549554ba8effd168549a27cf2391489e14e55c2ad18ff1a5fc0993a57fac55bb33204eeb9db93377c60877e6eed0367b3e6846892ce76b1e2dbb587d6dab1eea824b0b6111b410e60889106adb221186a14b4a39e71026c8c78eef1eeef8bee55ceb9c18262f4be6ccdc031e59fe867118d9d365feb0e3678c73442090273a81700e72e7cc71a11066c9af0b755ceeb28b755dd745904e08af1cd14bc90b182c562e6a48a162a545ea69dd51cda89ca4a094949494dc04a1a51342b1da5e590e5f6595c90c0c0a752f2a1586420853b4c9c7ebe43385420893c069996e7a849bab8536e5e0b46e6c3408a4615c6859a38612173ad66869da86b76d73bdd0a696e926aaf8e9f4220f662d2f87f752da29bd4aa14be74723221b12d10bc90b8cd015863a9125f5a297922b0c53288c3fa0cfe773c4cd0dfe7c40190402b9c2179ac466e63e98b55c5a5a3736332e98162d4a3ea057c86b92cb39bb56b4a975633313553c0fc46b09f190cc23eb4cd4c997452f2220e6cae4230c435718fa78bd4ac21de697502817f1153153fedfc378c1220b4276d33d98b55a4c3bad156dba31d9ccc0e888443f2aedcc5bca9bf471ae4aaea75a940388944ff492734a0fe61cd18be8a5e4247485a18fd72b2c094b4a7c94e8520f970a6d6a996e4c36510504ca9e4ba9872eb9268adb3818d14b4bc757394767fbe9e5e4d2429b5e39392b9f290c599c84ae300cb7f003c5e7dd05064b9172b95228147c7a710f4c8892727282927292a251de6abb33cc54adf82ed043cb5ef1a847798bf214e5edc909ca538af2719f9c7c3132ca090a0a0a45a994bc7c1593d73ccf43095568121b92191298a8b24af1fe1b14d9fb6f61f6ee79707bed78aac74cb929f494872f2e17894d642911bd98425f55d18babe42a39494939797b82e2a2172b33e32b1aeca703e530fb3e58729d5c3cf512a13e5318a6c2b0a404e54b5052b40ed4a3a03ebff8aae4829199aa92f7cf3379c754a17c8936f978a168d30f578a0b1586295a04048a16e538f9442f2ed18babc75c997c84a14949c997614c3a7e0412d18be8c53301018992abe4f22394f44b2ee2459d29ccadedcfb94a2e530ffc082b5b1892c46cff1b862f8bc37bf04f072434149d74e62cf20d87cfda64f9d36eea81ed33c2a02fb10dba6ffdb6af30d14ccdfc59aee8745a9f6edf02894d11439837d36608bad9cc9b9422cc160b0d184f27ce064075792a0cfec4a6ef5188aafa9a288f21e3e9bb2bae5c7c0daad5d3779dc8b2e269ddd9f4a74b54b578faf387b85a79fa1388a862f1148c61c383a84d270af52b71555799cb29aa54b217a91434a4fcb449d1f326c553be79d39aaa6c661621aa329a88f2f7af2e5f6d389e7a4dd5a63351350c51b54921a200f06d7567fb672ebe02bdb21cbeca2d9e721bbecc0595e5d821b9c557f365becc19d73161fc41bee98275cc96d972eff554acb8979445217776b68f760a6dda61f26056ea882c7f4c94bf7c997c60995c34534b02427658a59989fa7cc425986eafb4e9c5c5d4b2f342d1626859438696a1eb902e6d46393f293174aca1805983a4e54646d636bc6d9bd521166d6a09d9892afeaf4b3aa59cd24dc9a63403e32990f79313906f84336a62c4a3a47b754f9874392634b4c4912dad9423b2ac78ff90ef72361d1d3247e660fc017d3e1fabb9236e6ef0e703ca2010286f163df20aa30a09c9670f6636382d53cbce2b4c156163b35a7d4a3b30ab64335143e491d72427a37f72ce337bc744590dda2a6d6ad9798551c5643a81e40009024446a4d42aed1819c940e41c1315f34b97d3f130196102e5cc85b84d462ec970564a69e5f7d9345860ccf87c30c1d76079128066bc7f4693cd901ecc6c5a37aa1a74c82b74e1944ade839b0be405040890204058740966c228dd94643e1faa3b9d145f9723656060f24bc883f9a5cbe9725276cccce411c7ab76c1173154a10769ac460fc61cd183514764537146f7f15344969226f5756c7facbd5646aed2926056ad22da84a53838d4560ac4cb0b0d22470e2a034361a80dbdd14167662aa6adba5dd31f700cddaea90f18a62d936a8fe262dfb159fd6057eab9b326017686339ca1467ead94823d9faa60cfc72bd8f3b716ecf9dc0bf6fc908e11056632a8c19e9fb50f26c835626c01663aa801cc74ece934394e9446f24d1a69776916cdb00ed7d1f11f19f697bfb24cdf2d4416138ae885889aff094319f67cec0c27d8f33b1d250b4f7e8fef80d32e03337fd3be636666cfc7da8bb0d1ded2383afce6c679784e8c6b7a8b53350a7d64f1ccc83e6a5174fa189bf685b4c7909e5b93720b69b9b96d3ab7bd3fd631a2b82fc698c20fd2316ed8021bbfbf27d3eec762d546de78bacbe8da57e2f5520d33d9a41d9fda2da5d4ae76eb95544eccaa936eee54ce5ae57635bdafc90cb3e87d2dd23a3f32cb5e7ab2e8f9ecbefdecbe47cbeec7ad7d0a66695f8c7cb5fb5887b8ef4779643467a226cdb9f743de6a5a8259b56ae9611de2fee81397ea50c7ecc77e89cf64af2f710e735f40a26c2bbfe315a2d21fb94aad516be46af96a7365abbdfdc72c8b014ab7d4a4b5d7c7f6f2abddf50d4b2d5f653ee480259cea3aae9ebb52fad57ab52cb11673136fc7979e52d217eb042583a1b1f202a5e24de60d6f08b2e35f1f73455f2f3e0faa003d68921f3cadeeb6c11b66cf03fd7f50a86f6585be7290254aca16a72ac4b381be605c15cf54daea731257d4c35267d0b775d29de9eb03060e3cda377df9ea6e21a6e67f61cfbf64d8f34540357843ead1b37ab4dc55df2d44152e48163eee6bcf14787f44b1e77fb2963dff662e7bfe0da3c8f63d1adb3205b54539c33e68579869c7a772867cedd3070dc33de736917232c13d048e6dcc7db5a4730999f698a8f9d445eb948e4a6d71aa4e3b7ec4d9e00d310edabe615491c9291a34397d084a87c8fe5a0b9b4522775f9979f657fbfb54cb88cade836dd08d5fd3229d1fcfdf30ddee385574aaf007e2d85a54c93c98a57db6a21c27b2d8777f16395bbba1e637c8e0751b64f0d60ed86c8ae50c81caf98913e596ea4aebdd94be7c05b3763606e877c398edfacdb0a6c9c8da6b525e6badf657c3b36a9b76ed7dfbd25e56fd1c26cbcf1c22cf1b64f9112f20d6c8bc0659b2fc731a64f95ab65f6d95db966c3232084a4a300b04d2876a12814d5f6a77e931c6fa0171dc30d926aa8ab0d734006ef45ddfd876a05b03014aa32fbab9de64baec9d0de6cde5ab4bbff9253f6650e226fa8bfeb15fa2628b1ea9f6682b361979071a4858601b92458cb6b2494cb35d2badf76d7deb5f5fb32930cbfd57b00d5aed0ad5b70566f9174496980bccaaf73555d94b851fdcead7a7373c2dd3f725839c3d78c31cae8f899af53d6feb6b6f1f6bcfe3afafd5b0b9c0f4351919bfc43bd4d75ed374fdb8f1b7c02cfcc5c8155794fa9d34fb1addb4e6f916d806f53c0bccf2784c5c601bf433b12ef0c7adb9d8a8bee101eef531553c78e17d5515cc72fa61ff615f0f5e0d214c05b8efef1f0fde75815128aaedc6f4f53153f36bc038cceddf0d276abec7208397ea5a5998601db00df989e80b9c33d5d4ae9cc0c036e4b7c1c0be6f0754544f29dfcaa75fad0df971fbbb90292b6c437e94ae70a45aee1878077f020a2044b0fd290862601b746b323c1ffbd5d6141573cf3cda863feea0cc853a178d4825770f24c4dde424af659cc0c7fe8883541c347a9838bc07af77b62005b445c61e5ce40e0fe9ee3ea774799b9037f94334b2b16fba30214b9f2e7267d377f719a3dc997287b63021278775032dba309928d444cdfa11bff4bc67efeed1b2462671e0d1b146365d076eaf8d3ea9fd1aabe74939a775813637ea13e3e09b3ef51e13e5e144cd21f2fd885dfbdf30ab57ebf7c374bd943aa5966249a055463b77757767825a32d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d458155010549794ae329117f5fe4d4247b6c8d6ec699b76c8d6ae9695b6a6699b686b1f0da4652df4d9f41d03dbc614fd0edbb8fbbed66d988e35ac066dadd344dbd6b6676b9e06a2856827edb4595db726a28d6824da6f254f3222723285807825d248d47ddfa77eb41ed8b24695fa812ddf3fd3924a1a5339af4ca6fd4a3119480cc3acc5300cc31430959003a396d2187386578e942c0cc330ecca5c994cc6e3f164f72621e5f130a121418bd990b0c5608c31fe72feb8100e611914ac048f47dbb439a788c808496b12c9bf8cc78917bde87c6440a0cce59c8fb8b901e5cc85388e9b739e4e59080212623221210605253bc171a6d764170a85e69c2020212613139c13a15027eaba6eced97525251e8f683422954a2524c4a06c1eca8e9890135d271a8944a23967ce5c0887f06785454c8ece892c7f0381b27b3bec29510aa5e50b6689643e01b8fb315193f423dfed4c95ff4475febe3dfebad7a6bb9d21f2f660f7ea7e74a596afb8ae156a71ad518f999a3fa241b947f4c885b70fc4b1b71f85334ec1090b78302681010f46251af0a00d0e7810c6031e54e15e91c54cf160d4c2f67f808e9e127907e806e8e829d333402f40474f81748fe918579beb04f560ddf66ed93b997891850b37fed26b588fc291ab07193f38728d7a4cd4a4e145527ffade1402d2853aaf0bb9d028df429fbc487f7e459bfc48839e852ef9171af529ba06dc6198c539a77dcfac06cf94b1d20f57a2593c488fde44affc478bfe44b77814ede251fac5a7e81abee3748c2add17432ee3fc741f7aef429c6f7fc3a4f8473da66ae49aaad2cf1f6114cc2a95343599c22ddc3ef943bedc5f65c32d34a848fd4732027260d8f359a4eec7546d1f0f2bdd6baaf0cfef7646300be3ae5b21ad903e1985dca955732dcd2591c3c8ff733853957dd3fdc1f984cf1e369e82f1e0d4d9fe5366aa64bccf99150f4e9bd583b308150fce1b9507e711373c385b017870260100d583b389ed3f7d982b2e079c3f8013087006b1fda5cc5c71a0dc218b00e511a04c02944d6cc903944f6c958b07a516542d1e9450881e945e5879508e61af460fca32b078709260d7f0a0c4c2f6973d22cb0b304601c61ffb3481b90ad90c60ae422060e4f1c4f6973e4416d4cf4879509680a5e4417903d0835206260fca176c972b387950aa60a33c284f00d2005f802a581e3c6193b9eaf4fcb1b3e75a13c5e1d8e4ec41aec525f1713813353b1b01740278185c8eafbafd81f9fb408f7bf9aa7ba53e1ab8570c6ec607fe06b9170dee650367e25e7b7ec8c657229b938d888d373f94e32b11c8e7e56c1fe8855ebe12bd3652e835800ff4ba175f8d5e3c351f7f6066f940af6bf96a64d3e5f86ac4f2026829e061e4d4e87212d0bd7c3572d9f88a04e3a91c5f916cbc0d1f1883004fe303570af0333e1065808ff1817f00047caa7bedf0df87c38b7ca097c39f3e30ebf0261bd6877ce01dc0837c390278ef03bdf9a297af482fbe2ab5b8cde63e30d7f84df4b281c68ccfbed7a0dc9fe22b66dd8848ecd257cc2a7dc4379ca81d999582f4f2b514da734d8fe4852ad086ed0f23ae3c1817892becfd64fba7a24ae4fd55a2ea7bff165195f25a9ec21f230b0def2fa3eaf4fe35aa4cef9f4555c8fbe3a8025179ef3f8a2ad2fb83445509895d3fc56b557b29b45793eb839ed763a2a607e3e1d768d0b2a63e91d3edc2fdc2150319cc9089a015ea38cf5b19e707c4b13d52e9fd3d52899539e9bd1e5355fa78884878aea94af1f3bd9044825929526829124524b28844f64d1ff06c19b57c5552c0075e1823189f80d1c8e5abd20e1f7811f081f9001fe819e003bf001f88dae0c8458091cbc607c620c1f8ca6bd1819403090752cb571eeb03ef0004f0811ec955e3036f8ef19be45aa1ef8f95be3b13355f858ace5a74e643007406009da974f63251f34b2dbef24636246fc3077aaaa7f18179c6c7f2d9b064f060c5a7f8c0acf2347ca0a7e2531ff8df07a244bed6a9d4e22baec5f485782d201fe865d36f1f78bd0fcc204ffa402f7b8f4b313ed0f35cbeca30a5d5077aaaecab9f976060945ed4e0a2856865c4c2f38177c50766d053f1818fdaf6537c206a65dba7e18bb1eda73e30c60637172a05e544dfd7bc3f666abe89be51e8ac44672e51856bf93ef08a7c603e712d2ed307de900fcc20aed67b1f78eb933e307b35c378f6711f78c1bced6f1fccf60fe74ceb1851d917fd31204934a86277213cf25c1253e5f978983fb81687939530abd66d9b3f46e68f916ffe3051d305b3aed603c7aebf8553b5851325f2606c62c5c1786aba0af0c5f607636c7f90c6f607638b3b6d4f7a50b4bd7bf0b4fdb79b6c5f61ef1f7823e668546fe1e67221327d7073e5b0f5e0607ce5c1b88dafbc9608f799740683109db90044672cd0770b11359fa46f17226a7e49df2f449418226a7e485f3244d47c4e5f3344d47cac331144d47c0f46fbf95ecb3d9f7f0dc89814418e1385b1c7eea05909c06c067bf6982aede361fee6da42db61d6fd6264bf7efdc69c1a732610f3e5c53e75104d3b6d17d7aa2b9594827c6a11d3c6a6fab654fb6bff566ca3befd1a522ba8d66fee983333b6ea694d1993a91666c25029a594f6845994bb41d81c39eac77e75ea21a62d3eb5263f45ae021f9d395671549752448bdcbd1adbd9f4d8adf956e9bddab35aebacd6e24d33b03dcb38b0bd4aeb79ed568a55e9f9a8743942b2c5c8c2d1aaca3c2f68b470628ec6e9b945da0791880b3db7fd48fb307a137c8dd12704a7a5765fd3befe47e374959ca6dbd65a2be5b4574bf16bdb63a1d742dcb66d4d84381c9cd073db731f12fae244718fb78d7bccc27884f1e066cee6f160d87aace7ed6bd769cd308fc56e66f10e52fb64952529bf79c4d5e6cd7cfbda5f9be9cf10d9be7633fbd56a4b2d09eb106dd86f26512f9eadd9bad9e5b425794de4a1bab9313d5f9e9a3b3a663843f7a1c57f707101e2c55f3c08893d87e7d8539b4fe8e8cc1e134fd7d4b4ef5f65cf830123128804e26660a4666066b65028f3ac808159a142249339fcc19f51124831a418524c29c68bf162bc18eceda3de7e08aa450bdae28b91690b4a2966eb8b17342444d3368cfabc6906f460970303830a0961c264326158e6995971c2b0138642cdcca050580aca8949c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9661040054d8b3ad0810ea43083d0c318dd9d46c16ba0c568315a4ccc27e613f389098179bac8f7cced6756ca1817db6a31ad6e83981a54a734e83a775abd06d5290d64462312c99d569f414c754a035aabbb3bad3e8398ea9406f6ab775008a15d34746e982827e5705a29a5d6524a29568222627a3d427272aa1f86619809a544240444d33f42e2d9be7e23249ee781be5a31ebb4831a7312e5fc9c481c273a461596c6aac53af03ac61476b74709daa77598804a44ba4ea49f6464341a6112c90953c9e4139a689accb6e10fc6f8e4791bc61fd0e7f3b1b644847b1073d98cbc80be7a82428c09874cd889cf079441d68e80be7a62e2e38406851813fe68260dd32c4846260111b998358ee3e6b4f67ef593e927f1783e235fc88b0876c262768233996e088857228d445d88cba00fdeb4101c1210d23b89424a29a394324ae9eef7fee007d2bfede50936dbb67138140281405de5386b39ccb25e04111eaae34648296594524629dddd3d36d28d90f586fe56298da896ca1f48296594524629bd08228c9052ca28a58c527a11441851f13455418827bc5eaf1748ca70cfa8c2bab1c938a595717e44947aa279da544c54fc2ae78bd3cacfe93ef58d952da5499ef387fbcf980be01bc4b1294663e5e49171de8b73c0eee6494dd33eb33c9b6b797f5664f4cbba400036ba41a09be50e0f2a59a07880b08dbbc11eb6fc6854c995ce49e9bbcf396f987cf273b7220a75a2b96354a951a5075d488459a7ab93c14dc6b9b146a3393712694e6f2b792021269f2669ca3e208e7db72b4861081b9594d29c85c8e0dd930819bc32329d73e6ccf96db307799220cf584d97fa94d807c4b1a3c56ee6d13612267d482412099449241217ea2a2591a614a952bfe48edc8926208847016fcbec517d43cf6b545e91f78ec5a85d2d4ee9eefb6a1d9fa71317606efba1ed3c6cca45150e9b1feb52f38b691d3c7583cc76b74c5dbbf6e39f441629239d1f4db7c44131cbe3d93c9ecfab94af5d9be9ebe345dd7a32ecb5eb239a4bba7a10b4e3e33803ff267fb3da832b42640fc6f8e4d5a87bc919f81bb9240b89f27c31aa6ce9e5cd02987ec539ccbd69bbbfab75605f8c36cb3eef4c56fab6cad7de6af6dada622da68fd16dd354de6036363698f616b3ee5b9cc3acdba67dc38c72e4c8a1af8f6b331790fd4a44d8f3efc5f4339cc364e9a0807469912db225f360167d0fce616e3ab0b75ac7e733ad691d2e5fe3f39bcb57f42567945a92c5fc99c1b9c1910b0209f0415fa5969c71b71059d0fb411155e6db0f9c1b2cb5eaf6cf52ff70f56e3dea1686207dd9cf6fb2875bd3ea263dbe68fd6edcff34786901b61e53c5437c550db3ee8df1455ff4934d481c1cfba50765e86347d10b165ca6206a7142b793841d5f2a1157dd4b9620b25013c4195ee50ff2250829b3e34b1c4416fc333cafda1e9433dc8372c78e36aa50944774b16ed247796fceddcb7b927d9247fad26ba2d24bbc8325954a928725e5e4b464383727ebec6ce6dae49b3d3f73b92f39c7bea1e7e57c84bb849215f67c90d4b2a7ff007b365d4a62823e947557424297882059ccafba94c4444d14f781259ced034b4de00f2cf128e9ecf9195872b95cae56eb73ab84444ccd2f1d61cf074b4bd8f34b5128b54a2d8f93a4e7eeb2c862f2ad5769bd4a293b6be70e74df4ae547345bb67c6d30875801b306f6dd970f304a5de42f23574a69d537acd57443eedb09732f4490040a9a60010f183c91c5f4a09ba68572901c3e80d7fa9e6dbb3e3c1e8d6e5bfbed356d33226b7fc3e4b2af8fb92f6abec9c838ab744431f57cf2894cea481dcdf3374cfaf1b06d3f238759db1723d38d5a6a37cfe6f9640fe9d23ca43f5fbc0fc2ac7ba9f451431ba98f48f2a369ae5353ba46790a758d525d9f5813cc75c975fd65dab3b97e0ddbc8ae4936a6638c51621b79bbd423186fae453e271b74bb3665e93a84e336d72021d75ee7ba24724d1a8d36d7231269732d2a9536d79de76dae4320209b6b2ec475369936d7201b74bbfe8c90886caef1fee85803d342dcd7e40748b00dbab5d75efb4636d71b09c9e65afbdf5c7bb4de5c679feb5be21a3331d95cdb9393cd754541d9640add5acae6da51a8cdf54ca5aaac34d014a814941393924fa73ef6ab5327955c7a37e66c3d266ade88395b7bc72c0d874dccd9f63ed53762cea6b4ce1f1c0ed702c047cc52bd2623ab7cc4ac1b5456c4d5df302d9057bc6b0dd0ad42858c6d5719594776bd56d25e8f899a3fb6e72d667942f0c3f6f963cbf722f08d952d13b0e2fac64ab7d3bd266ad42345a3c83bbdc9ab628b591bf79a8c6c6388e3e6f48d95edd70711d962569a6da8644a9d89925a229a1100200000d317000018100a85635994a561d87c071400126a7c5660563e97c89218875110045118640c318400a3804186204343320b04986e61db4cc327d578348d024824faaca79c578f46eb3a6c5e169b7c7bdd4f91a600c7654ee94fd86568df1c9851d58f440af30e61d556397f97454a296ffed4c1a93e4e07a3c145a1520022d615136d3ced4815ef38dabec40cdca8d59eedb202e38a02788d79f1d8cbaac98cf81929468bd889b8c9f6d8111862acdddc862e5d2e6302801cd594805180204bc2ca95da843756a5d1b39efc4c6609c0c91d07c2fdfe9fc8543cd32b8626b902b868ca0fa4781227ceb62ce0ed2117b5efa3d1757ef4334865d8e4b50357087b5ec701731280cc6e28908b56586d87ead146c24283f0043f89b06ccf63789d84dffcbd4df53d47db518fbff28f24803497d62c92f7a236d1ff7d9c0220c00926005dbf47ab378b9e414f1c5d543683b65167897d6f3921c551f7171909186d6818ac089a01bc3f93c8d3ac10cce806a5c85fa766d30c50a9a97de8dbde457de0b5bfdc5eb5d2be0eb9437a774ad3a30a33717952b940c304b40261efefc886616710ff50ef62a73a0bf5d74df9ba02934bf645cacf3ae4664a4128d6ddbb893c75255e284eba99b0840a434653023b3591ee1faf93826fa3f8f0cd49995bb301bca70353d663de7b6f1192b309a958cd1727d38c78480c6efd024c8007fe24eefbc08c45039a4e72b40b575965d37e01693695c36a0ec4ed0b39e3d88278fc16371ebcc65020e2d93b3c01e4362f231e81329610e8b4084102ae791029b3f07ae229983d17aa7fa6835b084a169006a0392a3a2b69f5d011fb99674113bcd5907c7c497e3bf46370075310df859c90e21277906818724e059f62ca923b20c9c9246e32dac644a2a3380e7c0ad428d5c76c0911401ba3fca0088356e68972b1bcf695f85f13c3f074e751acdeaea2e89bda95ebb6efdfb6b0ec58757cda0cc8cecbcdb73e74d694a5f01924676ba0ecd2a2ac0a387286e29c6ba22d33fbffbda74812c9cba1ccb2723e2983120f4e9227ae1964c11102a0faf07dcc84e2367da287d5de73735813b9ca90dabe42b0d96d290906852b96fad0d8ac3e6c8b2bb1f5d5ea561f7083d28df46bcead11fbf42187a6b022ce74d8229382221777c66f59765a7382f41df827ff949bea5f4760d3a740e2e6b3fa3cb0194c4247198528b9b4e47f215366942605a638a4a2c2d9518dd88dd75cc1074fb6153f1f63fab8a3c97c9c5a7c384d806c56de04100ae24fec43bcae2c85420b9dc1d6b1cccd2b7d3249e716093b889742f39b96a7eabb94e86451f495e5cb5bfa906363f5d0273724672bbd0a3bb02f7becf876169f9d04476cf429412df8740452030be40f6d59c3a5eeafab089f475bf41988e4ac763bdcbcca1be2ae6d75615d548741deda44e5f90c3918446950731f9e67873fbdf8cebc69582e50c5232ff27f2ff72c4268fbe2ccca3ca3b1b62f844264abd87184988f18891074da07474b1b00b07de3baa55a94ac98413ea59f79aed208999b23f4af914d047b67585232bc477a010985970334ac9a9f71037c8db019190b9991924a84291dbfd2879d0a099113fc5129a04485f7528fa0447c143c150e26542bf78d024e4542a4fcc7eae7b2c553ae227c08a6699ec39d2f434e056031baad2221f7989df5059e13f49a0ccbd29ea5786e0fffa2cd91b19819995748db39e5d2f994fff02321d98eeddc36edeab90ea0439f501b849d562e950fb98f8f8408241d5039a92549c85250c06eccd87dd4a042fa1d919823fd92805dff62a6a41e00bc8ae09ef7357e2545961da14eb47e9744ab816c64c1d2194405659f98ca260e890c58c96638626d4554394a374a6306dae18ba9299245bf46ec4e6b4a43dc19d9c7230d30b5d9c943f30a8d4ea9c330d0f4911194b6885b911c8cff8ad0f9a31600e46865e80618008688ccdfcbbfd3abd2aadfe27dc9cfb070a2c3dfe10bbb16f46f50b8f2cb3bedc9226b51a6e83ec64d06438c853e8e0af1b3736924233c8bc3b15fdf053c30ddbdfdeabaf8906ac6db643e8b01a9eb3387d897a9089a0b72aa14cd70d4a0f25448cc06cc928ca8293e647f32767e2a72dc9c85c6efe4cc1118eb981808f022cbdda6fb168e60185f585c1a263f23eddf576377e571cf0f63c8c51b44e62cf135dbb34c8659905fd60312726b87abdae0ca3685ae8018f724824deef23566155f1a138d22259b5aba803fbc2b9df4f8e518e88792cbe38926139b6ef510a184649416ada5a1518096b19c8e1bdb6c128e8ebd49957c802de9f88f241da7f5eec4251d42f060f3ca5917d9ae9eb60d47cbb807b40cada370f7692273cbbec0457a93845a430052111c4c4f9e42fdbeba32513f576aef7d704270f19774793e01055d0528e83a3c2c8c851f7d19c51297d47a3f00085015beab5b72a863f08bd2a50316dae21a581a6dce8d5f7d3f629d1bccba307323918db3e10b5de702062444883c1c1601cabf8bfbd78b88cbf8e91cd7f6424cc19cc8c8aa2630090052cb0521e720d9cf57f04a361a7cec70b60cb15ac41dbbc352e29a7f13ee8a8b34021b9eb01651491c09e3c56836a20e1e04fbf0ca77622072c0f6457798780ee9163ef1b2a47e6ff4719b1bdc4daa73a10060120ff914186803aea9997002b087b90a4fa9ba25be83bc4e337bf8c56f531a18f192f7093af2c6f8d8826dc86b99474c5551c28def7ef76e4ea5effeb4f7dd216d78345fed7db505cf4a557529c9a31bf44e6df151fa6b170d48cb00238b12be7805ad1691f8e032e7527c0a5ef492e7ace45b6c3d3cb0f9a5438207ca9c118b71407ad868b32f310605c35d16ff82b6f906faefe1fb77de9a9df34adf4f3fbb0ce465526a394bbe093750f9399555946f8684d584f69783d0f6b8ee2744d852a80b79f68740519f20dbb6ed85b63cac528f61b375ddba6bc715e79a51355e7b07960c8cccc0b24757e481f23f73d2452bd68ad88359c1b18916ae8c2cd055804f47a2418bf23eaa045ea6c3cc2ee837dfeab4a55c59e3fdd50359e7df5976cbb1b454f1e5ae5666754e410283301b37e296ab966d140d793511b5212cb769109aa97e609f5da0de4e406c3ef4d9d6d1a5f2a2283bf6a01b0e2549be1738496cd0b84964a66a3be7a63ed2e60b4752807e7b232c988818aaca8cd4d740b871ab287b83b57f3e805988a2b2ab357b086160af28d5d7ce68d006ea2b337d021518673b1f85f264654006e9fcf348c37b87138ea03f5d9e9c2751bc291cdae97c01429cd8b06ea68fe9bdb220423b1f202d610f978b651b3598fd0cae1e3da5f06b8a85115c8a0b4466ba896de385bd96b58c2a7e6dc5a5ebe87758e9e28e307e420c93542f2f516cf8a5dd5cce40512109f1971843448f23a04d6aa0c176bee753ab414103bbdf206ee6ed4bc26414e13fe9ee58a848dd74f223730eb49943731eeaf9daf95706ceda1e35f4cfa99f469dd97a0f95d9cd36fefee788be0e6a21576d50fa237e024be4f589e10fe7c239ebb1d058409d47ba89b1a749be54c761be3ec9f2d4086890bbc6d85a7a1d17b3619d738551a27660c2481f54a7918b2ef3c6ce4a6fb2e7aa339d2556b4dbe55905c843f46e1e40ef82d875498b8a5935ae4fd480ed146de95d387480cebb7c97058dc0a694bfbe6fc65c8b2208f264f317c53cc6aea833bbfcfab88da30c1b07da116666596e94f4db4fb45651bc11ca59790b5e6cb919fd8d2e012514ea4ad339d5e1664b2b6c33150d11189ff8835821a21a4576d5b9b08b7468a6be2dd1e5dc7cb5bcac4e8cef9548d0e75e4865460326eac5093f076c2b75be3e8d2ed16b70b57dfd0956aea88db331e6d99c715579af86e4c922b3ce45cb08a810ff5cabd8d245be927570f1bbd54968fec68578852e3e0020b7e92af820978af4e2724c795e5bcf317e165d65341ed3a30b6ea395387fcaecc64bb8028107c19390cbf0b99f8e9399cc8ac927a861459dfa3065a1b6a98194ff1737f72fb01ed8feef3f1b4df4615f798f51d5a3537d0ed14180f00f5090fc9184a6400a9a6204db538acc8d502f3a5f1766cd4b38188dc8ae9fb2198a56233a10847e524644e3270fbb93b72900b08ee2a757435206447f92ae980dac7911f244c5297c3b535877f82b20a54a9741bb461ce5d7becb779f24a185467f88d8540bd2cd5d02c0f55e34ffd04b8588ab347a017d3fd558a9aa87440e4c69e349c5b44c7c1ea7780d19b61cbfee813c18c0dae7119b4e2da67fc92f74fd339c66b6c1e3d09ade2a3fa463a2bb8cfd45c2c4f36aacfdab458674230a06b28b1d18ced2e85a581b022f1a2ae9a4348d9b85fe8c0b9401c08f72a98822cede89df0ff22835fac4d268ed78b7a14a6a764022c9835b37a78b465a05a85e4299da5b187f806c9ab1ad28f85bb2cad9c7b0cac3b26f97df921bfbaf8da97f8b8e18a1e8de1428928fa65889cb7c8aae3164e65f0900a8b505907a2001dcc98788c0839f7907e2c55a1878e2aa923ef7f6a28e8815b2c7619151a890c5b2bb4df22d64afec57c6f3186eda3e91e052a5db3528c0068f65e26146b0ccca42e89c514038570e48f7536b5556bdaa924652804b0cf559c2ec45b2d60417d596be223d462a7d67a1f6e082a340c385cfebab6b12801206a5253457f19fb5914c745f3c5926a7ee25be39be4483530acc3bd6cbb85ad54a9e39256d46cda08420d2f3960f0efa9c6afc96a4d97e6cdac3c03cd2c534d6bc66ddd24f2408e0a926e56f272e269c2d9e38cb194bee60e5d8ce136c203b09a08e82d97f22bdb2837078fc8aa055416efa85fa8dba29780537f91a9486d308ff9b84a07a393c791f44215f7ec6970a5ceec311d21b37394f1335fba4f9451efb1a7905849798e95258bb837ca9aa55d16025f9acec937538e536e14f3059edfba567a87cfba276795087c560b2ca8ba4443bd0e984f829c0455af2bb4489ac6af589e5e028a24bda556e81e0b88e74b975d9ac265d57118374581762a1ae1b173d939b39019039db2203f20cc6cfd6a639a10814b5f2c5c4e5e6d976c63c4743838375128f16bab23f466f7ac844597ed1ad52f88f5eba3827447f885fb2eca1d579bb3cdb52cc0915de3638d6d8c03178fd8d44ade1dbea81806b5003821d8ee217454b465749b9ffae8f4e61d960e297707fa584519ae9b4ca92ee63833ee66c34c31c591b1f823a9eebb810d4b03ee640b9c819ce2a0935af29b18f44f8ac638628df9cf676d78fb30f34df660a798e44b40c84c2ca1c5337045914ce8214c1ed322b795edd295e5150a461cbf00fb0a7ca973865a1330289ed77108acd48de042bcd6610859a22f9cbce508a7fb9b41b657da3b5da42ad08e0ca7d019c2648f389a86e62695edb9d89df0468a9520d486397fcaaefa8ee400b4e0194ef02291fa7aef7a397bf4b13684540d6bc6246d3725cbbcfd2359f9d0273eea216e7d5edd991e874b4c9425771cb2617a08c1955f1268a8e596f66b58f7d74a49da15b1a9b05e9d1d2b2c2c954db3d6c70bd7d4e1c76f1b8bcb8caa14b5aa72e6b605128110e9d63f9e548a934aeddf6289abc66d734cb46f173209daf583a60f930e28435549ed0a996f6b50daab93c1b71330178972e371a1266f5a81c2640f64b89be159fa6d8fb01bcac26cee50d08b839fa490c954f631a84940fbc7d23fe36199bbf64c560d27c6af16bbb50bae46c7c38a82ce654d9afa16d79e48fd8526f47c68b7b9ea0b71d492f831965aaf4014c095694cafa1414cf3f983a38b4a567900363502362b6ab1ff2eb097e62c85e056438dd79c8a69b49508aeb86a146520d41b72a22fd7ce6cc5b88269ca24abafab7c3d57cb6b12bd3fb33e06375f722aa80f54865408ca2120eac63a9f883a8a6c7d7e36a0cba325ed009730ec9b0876040be07d2093b790a69cd544c841b2587fb430aa4e2e0d61a6bfaef34b142d0d2b126f2502b54d1f70378db5a083d6417ec0b95ce7bc9117dd04f09632867374f9438f2d6d557df18c80ce9c89dfe718a76cb158a4c79da4fb9bc01b94a18c8e32b9ffb1e632be6a1b5c1abff6fe731c0e5a07db7ff659025a1497e7d454eeb02d333b93f59ced2906531d5f48e97b6d2ece3f98028f5f4351d374e34459b79624f37e689086f6e9956079e78fc260a0b920638399e27e5e881bb2bf21ba7a212202f9d492128fb5791c900887a5c898fd3cabb0bde8810aa2739d1fdd069f1ddae7cd59cd16b6b2cbba8eb323dda1db1affbf59d85bfddfa7898f71efc8e81202d2d395a9b9c5a150ad4f5b9daaa33d634a627c85402c798922d6113f257c86c2b4051c2c7fa60933debec2ad2068e68e705c5625587de04f1ea83e3da6b70e61ddfd79aa181c4a9bdf938ed70913bed37d6d107c88ba20bf45557dd9304cf026b3de80c3f7bf6766143a395f5485f932557e5319f300b995c6490d38bf2dd1a44b1d35fc8a02aa4ecb5a91859907a85ebe7e23180ee458c382bf30f436ac22bc3dd09992756062407992061b1c7ae01d4facf14d5103aa12549bd9ef2296bea6652657d14ea5bd7b706ffc2352dd0a437d35705fe823012e31e4515bd0127658899053a5c0c05648fa5376fc731cc1f8279668dec810f002dadaa67961f41919eef8fa1e6abba67b4fbec913e1b399be66dc01bd9071f6e0fe44fb8a0c26728577dd5c0824d565e0a6623e92a31740983ff66c712dec48eb825fb52d064673b5957b6e445cf26b9ede4080720a1d45c64ce83c90dd1ee4963130f23139da71fe867802a9b384861ed58824e60100c9ef8341941d8a0c0ad638f3388792f6e36c2a03db965a7e54768832b93eba808304f065a3e413ea99845471c008a41f32bae5b7cc889268761765c29d08bf015b377f2a627a5627f785cc0e015e94d41ffc4442b3c3cf9831014c75ca1cbc812fdc2f57bfd5e3c7ee17843d2b3e4327a9cbb699dc9b1a8b68cf391dae9e49ab1e499fcea06b3f96ec3c2fca9b281a9b0fb40189034a1a16163fc2a3cf1aa727cc420064d619b8eb0ea806b10ccc3c86fe3049e8da632ab569bd31d88775e6035bcaae2a88a7916d2a8499407b48b64f4d9c6cc2ce73569cc0f5c2a4d67a83b435d4d5e2c2f2eae71af00dfd907eefd875561412c429cc2ad618ad197a441cb5b6413b5cc52d5a93365d6ce96db4d162adea919731591a1285e68d4b6823fd9f31bdc5db6af855d021734d741d905b9d809bb765c8c975dc7d95c037941f997270e0661ac92327bb88c5323cb3e97ae10c9326b07b8effcee6f0633c73ab23045170aa8f51c91fac5052cca485d7b1079a546d639b6997c6202ad1b0edcbea0d6bb2fda54591e3d392c50bb2bf518280747af9a8f81ebe311da0be24642a729c11adb39db123ef37d52ef48b6784cd2629b8eeaf1c2d8d767014f1ee86356f981154fcb72b46c698cfc071cb5dd50a36570e8bfb89cf8ec5d8c620f449ca4b7095b6a05fd9372aaf0dbf3d645e101838d4b543385641fa2edb1ec4600cd9ffa49c101a61c29ff3d5420dc076919ccb06082691097c14c63797a1836534a88af6003b97537900ae323d83884ed9535ba8cd5829fc19c5467b1396226cb22d4e083710803cce59d16b9e898b65dc875fa8bb1a06615b0756811626aadce4182c357a3b3ed90599ae43f631d0772d5b22804279c760c0f85d1ed7f112d968bc7c28cafca1a0588a70636b114c655da4913c6ae837c1650042acc70fcad12db956fcd71c0289957d58c4e83fa98f24b2ab1a52efccd1c3eff98b415ab288d80c65e754d1427d15e5033adc59044085ca6db1b39dbc5a3d0168a0cfd4ccd3e5082ceb28bc65a3400de943e19d46c84937f2dc06d5ed4937fb853b0806944e08e5de97d03857c10584fc4610a79eea8f7c5e5339301f6123b6a6706a3b775b816135f58f87a090afee41efa3c1dda799c43006d74e3f40a6f7ef8052fa09ad7cd7b0c2806b37f2ab41ac13604b6591cdc91f96f012336c9cdf1371c108d8b86ad20b7aef32acc74b2b8451bc9cd8ea41cec707ce02ec2870e242bdc2e70d5f15f9ac136456c71a051e15fd43a2177b257d9068cc35eb5040156c32b14434ea90df459aa01a5ce31c49cfe789d3508645a11ed65a2ba93da7d598400fb6cf491653a305b5d3c352c6b4c42419a72d6e3c7a2c26cc76bd742a12c8fd17cefccbcd823d4e92738b257646e91f1e500881b087ad42ce91a0b0a0a24a601869496d904ada0631314d5716e027bcb678652326de63bdbe037e5c9085d798d83a9771601746e3672c59e5212e924ef45b67816a4ceb856778a2aded4e9156d5af7c7795c245f35c741ac42e3b72bc12296430ef1f20647c912ecbca0a8fd1ac5e4b8706b71ebf57f1a7bce7bfb857dd6e2795d1626d5ea2ba871dc66021453c258d0361a16746a0ca7eb3563a9b24c3777edc12d21a6630f447631b8eee00c3e0d8612e9f243c6ee3a1ab417b9ea3c52c55248c30a42a1eb91688784d8a7b07b13e5707af0db2e03c9f7f8c8135bb136d7fc1ae62af2debe0dffa9d52dd5f01b91ca7c8225bee01d09366b34f73572486520fd21fc4438a84f2a5ac7ac35a320f68eb4b27d55d2c4e10c231f59c5ea7eca8c31a0e747a45685a185b39dc326233a58c1bb0cd51e55a4bee52438d0fda2f81b21d23c0db8302a2ab9e768f4ed861713873fa634395c79cb5dfb1fef035d3d934c7f36acc0fbe86803d54cdcb987b692f4de6bc81e186a94f1cb04187969c3468a30ae3842272255e83c10be8c9b43d35704aac2a78ecb56109d2deb4a99167c238e1bc2154db808fe06a0f07478600b94326de4f942ef696cfd8f026e8216050a3fafba65f72ef0e02cf25892d1258e2ddf252e4f07cca2176126fba1c109de27f637bc9832139015a5270a08755e9cc34ccfc14c8d1021e5b7252f2b4028c7209506442593f3eca86dc8e68b01aa5844553280fcd1dca8279bcfea093c6e5ef7e91ee9909b1e40f3fef4306e33abed482e76ae666fe5b10930811f3261b4fbe0061f9c9389e6d7adadf1a6151907f66013982f4d91fdbdab77c69d84f5c9981a08dbbb2169b29b28479a3cb214557897dd8fcf9e62398bc81a456357705af8a2408f28d45ee02f670df5e70ef40b6a56223605c6c61e46778877adf14b8fa5778dc96bc544cd0a09b68d93c2b45d77fe29a7d570a9bd8158480b0303b327e97e85b6d71d2da8b908159b6dc225b208790a63e00451a33d7b05a4c7028cce5630ce6260b575db5f696c2a4a40a0ba86a4321fbb0de9a4f224352f42a1714a24499734503962fc98d219e0a7a7ed5bef8c2d15051d4d8911ae54d60c61cba7237cd9cd3addf2a4a8cef94955b8750fcdbc7b9d6d3b926a2bc46dc59f633e9d33beae0d436bd8a9e744e59d0716c15824cc04900af9cb8dba21c363a03b5cf6a9ebde5c6ee1965f03ed9a883a7a9165d7d3277d3eb1fe810509e419cdd8e8b41968a31fc09e92d3b56da0c3f4a43ea11e53d6d2b39fa10bd483556b40d35540dfffce772c0d3b7ba74b385a83f4d95c3f561ad14359c9543a5d6704898b819a7be51b6334a85418f5834af818a0d3bd61cc199362239102ab68b44aee192b8004b70859b36e8c03565d975fd6fcc09c66633a9d232739c8af4e94e4025f2dc373429143b7cde9b61ef92dba5d51a3e3b7c9c981090847c53deaa7b6d041ae1c1f7b40d8d7ee63e387d0c095f75bc0060e47f58d3f735b9833d344d003d60a128960c0f7198803dbe7c4452275c8df25ee089e721f07aa28eb6c3a8b268097e32f23409963041f452d42bb8a9444d3368141d5e94721a758d9602e1262390587e293bcfa26fe139170929b2abe9b506d9a00f5c2a69b573994aded8aa65ff9001503fba086970c2e4cd0ba9f11af845a2e0bc7b788e4081c51f66b4195e82eedb3b6207417116842a43e18d03b073056398b0b5e784193937e1ada65963ca8ad57f88b5a446fbeab6ca9d9179575eb71154e0cd67796aa5092ab6e3a763d1ae9c0e8d43e484e739a9d5c7d7d3793f687a6cea112222a15ddbd000be1a20d00a5c0ff7ff43fc23d6bcb0797f92785d25692c62205142419d8bec076a20841f99e90553f1f94dfc5f6fe2b90a81f6fdc960d668f5e395be860c9c1a4895fa5f749e87e82b2c778d50a8c5111c03a88fc6876e0f061829f3f286046edf8f3851f6e796c099b4815ffe3a63afcbb056879418bd9d70a9a452bdd87976b9dc4fbe78bff5e49b532305fd59c78034dc9c2cd7c8c8749bfc52d3bc4311d52014d9e3c05e605915fb27410a0ad53023890e8355bc73cde1042ac82e54751171b363959c1de70f532148e23c78d4c3e3e5b02a89e0c34905ce91d570546498dd1ffc775281f014feefeb1f17fa15945996a875ee09f96ac6167c7fcc43e3ea4f95c51f6576627fe012db8f8fed0f8fae8b868ff12929dfd8242331a843f366aac81dfe31c6ffdd87d74422a4f68513848115403543576d82feaf53bb5c6f34013d90f9263538728ae23f5530055e896a10e67d2517d6cf99ac51c65aa3677726e5f16cac8b2175e2d2b6dca1fa3c3fd3a95a9386bcbd0015a565715998f0f38ff87e843bbb01e5d1864502a21807642cc2f1b54f861001f7f3c057c4ceabbcdd65f7756bd70ce2708b2d83285bc757a5fb77026214ea22bc4e8fc06e28cd18e1449a6fe61ac4fcbff12caff425f4a85c8347efd36f957cac3b67ceca1ccab933be87b8914c7dfffb646cadb8ef8681ca200db3140b0d95460a75bddd7c4e333bb491c96635ef2fa19c862e8b1c198aadd6ddc4f8a2e1ad7f1253dab796c21876cee3df4d7bbee65fed9c59162e01de6ed734bb35878a93d957c07f2b6400bb0a12b2a6316c64572d2817b0ddb4fe910394ed82d729a6e3204eb99fb42ef4c164ad8eed7ecdd6b675610fa0ba3cb735fd51a2e85b5d4e21022d720b1818e9210b7e9fb5793fd37361879efe3776491cf3c05317768bcb180a573d46b31d4c6f107ed353a02dd9acbcb28411931d6951911e9b74155f603de8ca87edc86ae72ff777034028eb8f91c9470ced67c76477a3456e04a5757029bc16df7aaaa541f3b6f3e0e8d76e6b05cf47b16a00f33bcf296c172c2ae567476885ef82f3f8343874faa0dbbbd6b8766450a16c484b316939b79d5ecff775c3ae10adca8319eae9295f9b1d5e8219b4d141fc99680825d65a84e7ffae7d765ef8d8c0cee8d3759d8ca2940af0cbfeae8418b936e473006897ac1521b3d3859b7258b6c05c5aad394f79faa10aa71bf95b0eb0cc944a391e0d4403eb8f39a7dc4813cd51e8ea19e191387da6953fdc02c8535c1a6e3dc5f043ce8dfb098c64feafb40c8158ad940e0c9236492e0bcdfb67994018b3c88863e492bef072f92b000b4d416a205dc63b2d9c8f9f10b4dbf8e01767be5a07f75221387067bf7dad0b01a512ea2d7f82886c638e4c8f82d6e32643d7483504005e4af58a812ae50d248c085e11189afc1de3060d68f817cc507e075ae1ab843bbb04f63f8410af1db79b8d1fe10e7be7a3c4dd4f30e66b7fe34b90464b03cc7d9ac005cb6d8eee6121e5c7f62cbdb97a49085fd69e84d86ce46f28fee5fe6875ec5816e29e505d0149d3aa605f3d153bf9f9b6dd108b4d6493682a40c729c62603be0259c8eba08069411130ee9a7b34d622f803c4b07af7fac7a74d8edbec363d190ab12ce6b77a57082c3dde39df9f3b1adca5697b55461d9f07713ec84734c29c2c15a6e2a232f009a85b9296c3cb376a2552e4da01c0df2b666219436cc1b9899137e4fc90f7339f7f71f3c2262409f958c104559b575f56e399723cdcd535bc98fa3df53b5d0052ef063f220bd470618d69071bc3d46b26a2015a37e606062f1130efbbe14510b33cb66bd0596fbb8199187cc5735bd9b366d3526a6dfb0d1208d5d63537d7d9bd5c282f4d9b79f6a53778134437f3fde2fd62f00a09d3ad3d2d9f1c58d59dfe8871b9d46867396a5814ad48c78e0ab7b3657d7fe9856d7b019b77c417997bf3f6dd63b52db99e649c97932b7b60bafec98a8e216405d4501e9362088184e96cdc3868146150008425f3648f44b220628530526a2e27ee24403a2e381a58f8682b5fbf3cc6bdf6f0bf23f60e8ae903480930e2b79712dd74dd99b3efdcc1812cd0b56ef26132d945614a3879c0897b4871f0f8e817100e4411fd52f25319dd7a09eb81ff98cf5f4d4b6b98b3a80488824a6b8c9c7b0e698dc17a31652cd7df7b873cc26a27d2ac129c677e1167e86bacef93db3e65a1d2157151b0dc20825fb3b064f448ab31b79ea1b6a0bdf8b80d95658aa6a64835d5c76626406e8ef3c903e491cc1a8492ff7a3d189be1be9aa63c2871d043fd42d332334129b01567aef02b7d1e16674d8e6de982ebc58481a35e4119e4dc2f355b5bba38d180b72db0f20f9187cf149da4d3a7ead22697bc8520dae0bfe4a5ce2d892ffe0c37e722f4b4727fcd4287818523019fbb3734f47fad33d947d6793df75242be36dff8302f5769fe9d575d0334066c5c1f61ff9b52ad056e34c5424833e134484e73954f7cca7e4dbd6c4693084148fb590456bf2c4a9366edc2f45668e19f4d166c57ee0b1bd9464962e6b7b034186db7e0256ec78809935b0876a496fc6fe67b3dff70394f88d4a150e19699fe7ae3efc14acdfa487137513314117e99bc1f94414ba2a8ab8c222524c81144f5e44e7da7d1d83848fdf33e0e78887abd871429dc611edf719f6168f8302844d12fda1389bbf339a73ac763f013254ffcb16b72af44804eb4481a5f56026ca32593eafeff938fc3b5a2ab72aacc5ef5dc5e0f3b718579e8d0ba7c7ce306300d8ffc10ffcf2c742ae7a9daa3166c32adc853da96454ae32b2b5c3ad9c84b530c428119efb66c1c8fe313f25b7a570d09c41196d780c34dd4aaf3946b8a8b57191d4528cb6e2046cc4eefb116ae6940178067a5aec3aa2828d56085f9f173e8f204eceeabe2a0ca6654c2b83367a4a34052dbc106401d900175ce67956e6df19f5a366e54aea42585e4b98467295d92057cdcd8e5b3565b7ca40ddb800d406a4673dd02e5845c8b8c2e502d03e569e54c044a00b525241c7a413719d906e9425f3a4b027d248c59a77de6b664a0bcd07af2d10d6e4b8cb6156769c17abb9c9a1dafe928e81c12bcc62c6d6e4815c5d33d03946d768ec31de6e83ebbe1cc13b40d905fc24b80f95105ed666259720d282618503ed20588c01b2e5adc0bc15e925f4ceec1ad262436f0d4a3e56ebbc1527d5e2e1e82075466802b42e3a212a175d2f8ad55b977b42b42e8a10451735880e469f79be318a10ad8b224429465f713e215a174d882646ff535e6314214a183d2ef9842860f4e3f6945151d13f8656f64d496edfcd9fd7afc6477b7ce4ad3445576ee13c707c75294c8e783c327409768d4f43162b2e143e6e1af4ba83c7eb81322aac2cb54baa5c1c42cb5c2e351004d4cc77895e7f650dce449df313d47c42858916993c9296628b5fed817f8dd094dd30f56d6279e604b94cbd2903c2d955517817d455c29325897fb453ac638fd60a885aa1846a0b42ec5a804a874ed7c1c08132dae3c3568cb08ac5a594b8fca33d57ac98512012f94e1381a97df63f0059a1bae94cecfae4bd3b4c2a59ce67c8b1cf0c69f883e441ff5b257e3390c51168ff4e4b2bcaf255018d57ef1a588e2386022efe5a6017103ff1903cba1625c9eba7cbcc14d9c8d35ef6717ebdb9b9d0e00169b07be462bec9a0900787fdbe4fe10494c59d9c2221c90656e6934f57f9e0b1b3400e3cd03ce5e551c430a4353f09440c9463cd47e81ad21cd00f31204b416a29d56bea998f3a7f75e6739853cc493b88018aefa800cc6951c19cdd373c72a5982b45254e02ccf1de42a003978306c5e453e2b738e28934938344a3047764d3b4a63a84f92eb3eaddb8dcd3cce468144ae2e6e5740015031b56b93dc4514a7af30ca5161e192f8e0aed759e77d6532da9b43b57bb4c4e13f769a54cb83467ad19a1ad34dcaee1439a15d134507b16327cf72c5a3adc3d70394ecaa4f98828f30d60a6d60765128097aab3bbe68f7eabf9ac3bb5d681ccf1fc8ff4a847433279dd87bef1040beeeaa24872c327d115d0085f24242ad08b090cdb3073bc33c572e97017dab9d7c3e463bd5695ccd2bffb62817520449d284cc41600709ec3888354a1dd85c3cfc41eac5b2ca5aa71221297f7deb2122705bd8c6cada35bed0d138d28f9e2d0fff5f4151199ab0d79440a93f2285743b587d89b12ef0e152f26e4f37b0f3ce38a0fdd4338af338a9cea49a7e9136b385e3099def0beb3e61df6a5ab3b16307ab53a1fd10b6612b29240551fda3e2cb17e2b0c93c2e7461e6c8e70aa55489d20547c9a607e7a8ac9137fbb57e6a884531162d7765fdbebfe5a4e314c87a3c15158c22713264797bdf9cb6d4ab21396d05cc6432298d84d64afbc5900f05fc2fea4301ce657274bc0eae208d6b2eda1d6953b85979c40f4b539cc26f6ee9885762c78c8c515d9c6788641b07d81db08f44a60d4b233cdf9c0e29f5be282509627c8d324cf62008647d65730e5e42a5cac1fcb6f033325d079671eb83de2f39bbb6348a8fe5ae692d88d7c41847054e40e0e78841670b02201fd35593af861bbd84ee8b02b5449e93ba76232e85e4783e81d3fed08cff19328c2717b845da36ccfb31ebf878c4bc649effd36b5175d0b772b46577eb87a82b5879bf4dfe857420ebf84f3fbdfce73eace8b46675a1d604f46a5be3ecddbe7921fa99ef73e43a7a22556fe8137fbb4e0bd517ff30aa74c037ca0737acbc3e9695fc1f6e5f3d26c3ddf0f55a31e5cc9ea8c835d96582fab2c475128aa7847a0f9d738e32cdf0874efda3dcdbf923b20622f026c1360e2a7de7819571a8b0c64f958ad0e10802b09574aa05d529348ef9c351be4c5761a7f2ca41f3def3b328da9a3c722c930c45f550a18ea08cb351df96350a0d77ffea8fbe3fd0a7aa01ef4738a40f60aa47aae86719097f60abdcc838d64541d3638db921bf6d7feaf853ad89f44ea8c5184681d14212a177d271aa3d72e7704681d1421940e7a001584dee6f9c66842b42e9a10558cfee23c42145d34219a187d50f9c66842b4307abbe411a28047e7992a89a1ebdb5e877c87a7a34999bff752541980cbce59e2802bebf3089e9a1cf1a1a8571e017138e763485d414c1638d534f253adb21e7c66a35522c7567945e0ab9c0e47058d4cf0e6c34acbfcd910152bc140895f764c59b9ffac4ac22afe8f6e9091d3866370be1ae44c7fca035300e84a0269e09f2d0429220c96cd56e64fb772dda6db220db4bee1d7e51219cf19c181b8bdf6f55ff7d94afc399baf9f96309503a4a58525f3e540053d672be1a1caf2ffddff312faade4bbb39afe4741457f21125a45db023a047a817c8bc913b7232735cba728d726833f9ca14cb19b2c9530929e3ca94f4644af4b202df4cadb892582e3b8d3f56d83f0cb1d614b8c83468a52c157f2abad81e61884a5c49ef6d33393ba2921194a521293c1f8bf16fddf4999471956d0818e64e0b50acb179df385212e5de10573215016abdaf019acf3cb6db5c69029bf9f936322797e32b995870907b625583579698663a637b651407dd1411ed850fd636c822792b8c618119947c2c2c2dd280ec10fc8e183c4a156f90f4482364e4e8c105220b9d5ae20efa7b2498a82a984915bbe304ddab95d06a10e8d6c1d4373fdc72d48cb5a9fb331e62daabf435c9a3a9b83bc028ee0ef2e58b4e8c3d5ee59205648979265dcc0bd6b3a4bdb2c323774ee23a902d7ea286f8eeaef30b85821cb11f566f0a9ea58d026e0705bc0e86bdf9b19357bb3b788cc3e1309122cc772a44fc17f513d7991394643f709d0adb35a0730f4568bd9f10bf8a54ec110ec9b4f81cec1260eed8f2c0d4263baa5872ac0a4e60dc1baeff370005578c582169652a6c0256052367e947b130f65f546b9dcf60bd021e56e81de90e573b4484810c592117981d3eedbe6b85010ed0b574d06c3119a219a6c91a546f74b2b04c7c0533afa2dd48f98847c3f138e42ae2734bb002be421fcdddb3ac0e9a859e48e4b44d9944381968236b64cbe3d22e685fa9d500e52cad111fd65a1aee5a00cfb34e6d8163d3be1d1e0174b5ff077dc1e8c28d841f7c3ba62dd7df827cdddb57d026791bbd76836f0182c6a02e71c0a3a19aaa70c1102e5db4e7f25b8293d22cadb22102ab783675d91fcb7041330313d8151761ffadbfae27220e09642ff3ccee4e765d0ada983927e806f32e38ab7113f3c4fa1844288acf3b05766edcc2ef1155e3e2d2df73f0898dd7eaa3b81caad2a97f336fcdb874500a3151250728cf02336f1b43429fffe73c0dd61d1da49f18759504bfa0d2fd2f76020df3845be9641f17b5205a707f6316d35fb939cc62032cb3286649b085ffc582136a188ba35e22509462f47688f09687b1d1110aaa35f6ef3399f3882e3c9f025f390855821a4ff8c21ecf2bfd731bd22fa930f5f6263e030a2a79f4034d87ccc64201a6e29d159b1a9e2e96a4f35493c803e2bc668a19d5b5d6c87f70d24e800165092a419de11396b6cb7cd35cd0ddddeb3deecc97c6f715895c39bbe5d29c91e10b6d29b83026117a9b7dddc3cf9177b2b760f6e63facad7e428d6f45c50d13e86dad8ff53a74705cc43d623c71ffa874d193bacffc3fc7187de150fc41b23aaac96530773395438a7c4738549532e5704041e7cc01fa62185ff38d1941a4f869ce61c1317b5d7dcd18598434a3d098a2065ad756603d989787407423cb410d911cb133ce4081a52d3fd4471d9c6ccefaf0438fb9b3caf69d8488ca13ae1988651da2f1a444c69913b7880007d7f020e5eb3963ff613178c90fe4f00808bd813fee0fd40aacbf73e37619b6190f3abb39373a066bdb15c1e6c521e2100131776fe9b989c07f98d5a2a3f67c3a3c4f6e5f347a29cadab253c1512978205da860dd9ad1b08eef3cb38e915007cb772239fdd3ab248fa1c0c35edfdcf777dd29a9a814eb1b2eba6fad6d717a236e56ed310cf83bc459e685fef80203f7f54220f949e856ebe0963c927352c9f9cf2a4acea399a68c1da73571bcb0749d7f2693a39a2aaf1699454b0d3d6d9d152ea6e2df51fb4d51f1b0ea00cef5ba8976fa50cea1550de2a453ef3dadaa39c478a2ecb03b03e823a00b1417e299891d6e900bcbdee4b9b6e4ab201dec6aa1c30866f69ecbf0a28e77f68e9eec762ff0d12b314171f4b1082379f010d94d5584880b011f79c4b928dcf1d02479b0319655132a2aa725369e90aa846224ea6494ce5cb05241ea7261c22da3410b8b304e2d9827a2182d696be02d13628dfb5819fe50d9fbf8508ffd20a904d3eba05be2a4ad3e3012c50c63de6d497bb57a8f5471a458f34805a0a0f09e011290e4042d4458775d28461865104db7a70d35a181fb1a379f6c8987f746df267d761c884587ee9625ec747146f183d4693525773daa28df54580a0fdc03f8434ba2a4558a58639c337e4d9f1c8442768bc359dc435dbcc09f0a4bf2ec25a6becc42abf333ba09c34654103a090083f3ad9355078fb05d80e6b5f6e4fc3835ae1196bf4c8b703d8e7a10dbf5191642a44a8d15c128d35eaeb123a8933b68af1ab8fff7ffd653379605a257f1cf84624338753c487c0aa0c8792dde85c890c4035196578d1aa3a5aa7b20d43471370d57b2381aa0726921c99bf2608d7d4219fc01d1737f9f5de0336646f7440f0c812942a3fc3d242a52a8346f132d5284a4c2390d3a8322bc1be5410776afe84e185e8422acf83bd12d6189c38cf7542e847bf310888536c322c0509457e6e2af33f6d224fbe4004be409ff9e393a035ad3f9b012c621a2a54a413074076b91b08a358b148eb242081fc007c4e9782313d25a71c1e4aa0cf788ca47589e87b95fd494cbe22aaf68840681d411dd1f726bad774ebe2a2ac8a4c7159aab0afa1445942a2ac815dd726e759aa1b24aa2eb8aae8ff41d5da85b863ef92331a9e2f733065d7620a1a8a1cb3e98e41a886ec28a4409300974586421fe973c5842644ee9331329ce3391bab3c0c2148a54442dc96e4574ca53d0bea938c6423e9375e346aea46173d7716a110b0dd61cfd236f08463b4505636dd466dac6a4a27fc79de94d5217e2694c546d9ed724186e75c89dc5508cc6f9f754dd861204d9b5a3f91d26a53945449a8a829fa5b6e2c53f2b629b0cf141eb81965a55b9e333841fa5432fa2bf11f201775b024857adc1ec6cdc71a7c69d03ba9c76a01aea7e27bb894be6e16f4887a9413f22dbedc76e449865457f575313d03aaf9aa1a941008d495d676acc683261e22af65c68e30550c2503ce84d1490a07bc54a5450bb5f9758204be8c1a980401b531142405b5bbd5ebb92d61c91e568939403deea85d80c6b674218b366d32d66e26aaac66c1f3a10219316626840517a17cf91752d6b60c07c27d7221d7165f649d7003d99b4569d791b6538a69b5bbe265e3f3882af9d614f96de1bac4633082aae3cbdcf5e137cce40926c0e8d3d41fcedb23424364e71a1fa9b2aacc5dd50cddaf8d53267b90d9e7418e7caf313b7263fb1aa6b1765d6c18fa60db0255cbb1b38eed5586c074c7fe950dfdff47f36be15555532a916afe2a1f799b5dd14a0d3fe8783131e49553169a7a0cf13aea663a6b4774ff34ef3b5a07c0a6a908ba4b6ad6bcdf6c42ce64c6e0348e56fa82d315319f465e5d75a165857297861b79a2491ae319fc10e6f278d3398adcb8abd540da640da70c291138b817af3387e7f61077f92d81eb9acd10222788a114f1122232d4490cb4007438b9967ca451fbc7162551812af97f8de94b5110ca4db1de31108ad81db46184ba2370f3c206287d85e92641eea09e33fde7dc4db1981e1f7db3886e7b9a5729f9016fa2818d9b0e4640a707eb9a119b444d7494b50bca8c363a3593899990ab0672242a406ba4dc50740774a0c883c620fa75213720f5939e05f7f0aac400d56c6218b385849a4ef0d06dc79cff0bd5b6f749dca485f7ca101374d566f5a3d201045b853919670bea27b0a1bef2c4a8932cc5137c25a1ee99999ef98291a7959b7a0f275fbd2430dd096ca73b08eca6109a8bd4be3959941935dba662f76457c583951b9bbc8e0be32be42a1742342a184569cc2c0ec7ec338088dcabadfcf850ab321722968e3b34d6f40462c625bf42945e0e0a40241eeda97f5376c89a8239dde09bee9ae1d90d562799a91889fdfac2bbd58b312f13431cce974b659fa7cffd37d5a33ede3d42f3515603c887d284be7591349407be4a3a8c84d058cd5d0c3a7d29b31a1bbfb5a7749f6e5cbdea1a367dc13b5ba4022d6611f6b5170cd1f8babf65c263b559633dba96cdbe8ee85157133a7413f671c40e264d9d8accd9aa352393ca33222dfd57fdc6531380ef68b91ca5923e7123471c138e7a113f48a025ac91d5556509c11a5034b499b5a9980328f8812844c4db278cf278d698db933ff0cd688250d18283c3c198826291f5c010040280080d4dde7878795e627de3cb1c7dee3468422b4377d6dffb3f66d9f6c42b6dc7b4b99524a49a695052f0552051aa76fd4e77a6348187d78bd2c5264857c59e8425a370bb3f35e85e5f7121224b4e3f3d0f012b3574428b65fb98ab022c97bae1f4168767c3c0f44b4e3fd2b43ce641365900d515f2b9758446f584f32d337585edfba491f82d0ec78af6fe12071eceb5b396839749038dceb5b3b48de491cd3eb3319f2c647002de943660e195c0317f00809a33f5dd008704893d16f4943d46f2f31832e31836b8528448569120b0c5179c8a01374281c29c709cb9ab77aa9faa15f7a1dbb1394a21e7157aec02d44fd8659c02e4030c031447d953244fdcf19a20620836d68475a238a5482f2afaa093d25e5a49e948d212cf3114bbe7d0a4a9b62545322646f7609399b435dd08a942142c2234025c0284c210b4d46aa7ee0e83020a81af4088e1ef981040e12260812649950a2251ca9e5f3f8b3dbe7d4cc89f4f953950cafea32491108f4d5954d00f40dcb828895952210e83f57a682286962b7a93fb41b6cc6f04972fd963df6be6788692a22aefb5635937740c47c6d741abda174b997e0bf6caa9eaac54afa8a87247d25ad482d49ef151012c6365011430185fb75df9e1c58ee9f722b6e722b150232ba7715100e631df00d0edf7807badbb7db73edcb3ad6cd8d8ececd5a37ed5178d454f825e47d5f9875b3372016d6085e614d4145747f1eea75576b6f3a4f67048fc0111cc1111cc1111ca2379ece832338822338822338e29da7c33b4f8777ded3e19da7e33f783a3a4f47a7298ff4a6a7b330facb7b79d30b0e51110f19cc691cecd3d91b10093a4f88faf0e9c011734377413884f2c025447845d47fb048bb81e5a2b6b7aa381a9f4efb95aaa6c1d117dc8fbc60711553e04c01473e7077e79c73776a633547d990dc4dfcaef7a4c929942e1731499aa8b78e03a27e694a560ff5122555354e729b1383c86834b9a9aa7136d634036b7a0a427f58d3fd2a04abb3922e8eee12f27e7a8e779eb38caac69f8e566131c43152553f545a68114ff50315e16829e7a074ed8cf7a4c9cd90a4895af7665495e7e3a669fb5b6bad756bad5bebdf7eaabb6ba44bc8fbbda807a54b63734fd3d3a86a264aba322e77a130ca3b4fe761a137e010a57690b0aa690c8eaa699aa677ceb9a751d5387803ab9aa9f2b4544f9b626a9a86c7f3b1aacae32e39cca7b088240ef77ee3ee2fd28937577b3a37bd19d3ff819e2b77e45870046a7b847a3ecefb39fffc916a88ceea6ef77bb9cbdf77f77b1d7a550ce0e89cdb18558d63de03ab3d25038391ab31aa1af7548df40c4d2e558dbb4b8c0f31d3e350d5ac14d97d13f1e774bd5435ee2f38340e4fa6aa710c3a0fa0b351d5c01c9d99604eefbe9d2e98034770888ab455940e3087aa9d8caaa6aa645c362a20fa298aca21460e387088ce08118223987309797f3dac47488850946c787c171cf28346c7e0c877308ada3060e860a243c5316204000600e7b5264cff0eedbeed8caac69d870a88c698079cabc519ef14f5cf544070744fddd01e31fd375435ce4597921d7f2d67c873e776d7253ab65f7896737f81aaaea60eada2cd88d0d86dc4eae74f91638c5d203277bb8b63ab88d0e88d15a191b7691443d0a2aa2a5045426259564965529db8cf470a29a44043168d0a2aa8a898d8dd6dbbdb76d35d929e7882b7c084ca89ca89ca895d272c272c272c2724e984f7edee36fe7c8a142902862cb6b0b3b3b343851632bbdb66c108383838383838387ae3b596553564c8104a045890c1344d1fca6acdaaaa0ae49eb7d65ae3fdece7338319cc200a99ce1d0b468c1829722304284a8838e79c7b4fbc276a484f4cd384c3342981c282720262019da8aaaafad02829a1617282f241f98868442f94aa5e17b63263c60a8c1832643c3135e14b88a43401051438d4f87c2c906559554c31c5a70996f50252d5e933e9266704454bcb0b979717181ddcdc88ac2680402f24aadad2f2c2e5e54509a0269090949894949450544a28a4b2f2f9883c2c221813552d2931f9efdfc3b2f6ae716b4dd4a3f9706d66a0201037afac46cc16bbb9f7b77fd80b6b3a76aedb3b96edca5aa30a6d2ccbf7a732f3c5d68c2d9685a2b6235055c4cd2131fbd8eeeeb0acbb3bc35cb7f3cc2e2e2cfdf66f7d357558fac58a25670b2287c4c62c48ac3d6e4f7a4a6a9ed5881fdfb7f72c2b0b45e7b0ecbdd42f9362366dcec6ffda6141ecc04ca028f77919111f96c923af4c0c26375622d8b5d6866c999999d95a666b2db3b56cd9325bbbda677eaa889f7afc5ee8ca5ae233914074dfaeec6373772cf3cf7faf592de025f27817111d750bcbb1ed2b885f2e8844a218a28515b6fd2d3903f2ef3fc91c26293325df3fe58cc9f76fce9c7cbf2773845ce6686932fb9df29914b18cd9cf96e39bcc8ae27beb85c16af1b584f9bc49cb210ab51c359a4c4bcb61034b1c3319d372ecd064f651de32899e50f47c0a96f1e71b13492f3d8a880029da37b97e68a2fd926b0129da27b920305363fa7d1b2d47a60cf5fb3bb41cd964a085654abdc746dc7e1afd7cd611f4f160598fe8f9cfd3589f710461597f4613ad0fd6be75ace7e2eaca5aac920899847c42dc873a2384285aefa57f3ad643b4230a2144a01ecdc7ae4382ca185949a87ba9f50e7d8ca69ec9004ed7aef5a0731686086cd746b7a24d6e7aaf07ceee3569ea76dd0cbf559c31f0b9aa6923620573dcb67803d77a7276eb9e6ffbbee69aa589e22b58a7f115bc636d63d325e46199d2c42c4dfbde2d523ad53c23fbeedddcdc3869e21d9d918a1e2cc298c3ac1c6c3f697bba84bce74b88e7a94bd2d16939ac9b26a3ef58e735c0776fb41cd08a949930480467dd34d61e104c6d7e8a8fe84cf311c68ea868a73fe31deea227dee12e5c7737ccf5335fbca3220c0e51918fba709d39d2dcdeb7d7384a52d28f779cbfb96fececcead02c2b17645c3d1421ca2b50d82ea8cbb7dddee4db7696bdd134f58eeb25b752158d01df414b373fb62be65126af91822243c810a500bd00b900c100dd00aef067d3ba747382322f64b11bfe614b14471d6809e025194ebf7ed1ef494bb608e8a46ee5b7ba9c2f2492dfd54d548188dd55237d6b0601cca312120c8553520907390827149163ed5550d84cd3813fb839954b43478868c180ec6c3a44b827c3df51285702e155f2f3c2d1f0fe48b65b2205f2b2010e44b858404f2152a29817ca5989840be504e4e205f272828902f939414c857492804f9225151817c815656205f160b0be4ebd3d202f9f2b8bcbc7801f9aade15053fb59fcdc505f2055f5e205fd43fe46bba2ec897846190af0703468c0a088e9747d619193266cca0c1d78a44303090af0600949410cc9e121e04abb9aaac6ceca85c55ab26d020eecc558d5bf74688a6cfd7a1ee27f793f3b87640384c7fe028aff0a7aae9feb4f69bbe4ddda2e55d70db5191eef80a8b871d8bbe69726e0239a5d851537babbb7ba6c939ca510f5a26271424f98c32278990a8945c1d953d45fdeb8e4d25d74edc554dc90fcb5af9cff5e3f3407ec7078ba21f5459af7215f1a2f4272d0fc4daf103c8ef60f99337b18088767c56fea4aa59593979a2892648dea4aa2121316985421f258b4f6337496c2cf317e2592181b062d6232ec6c37f250b1b49ca0316519f450b51ffe40a511dcb347ac7ea536728a9c232f7eff7ea077ff83ad67b785573d20e7a13d0a35435208cc6025d2d965c2da2e812ee54751203658289c99d975c1ea75ec76fd21c8f101d29163aaaa35a14291206235de80e8eee4caa839b1bad628a8d4a3de52bbda9551c93ac7c3ed589e33887a2dac5586cb53a3a1dfdda2245bc370c46d648173b3b6ad823478228810433c14ea5aad955e1275c132fc251cedd15d0569caa38e71c8b73ce61e9fcb5bcf64709f96b6bb73293d0c7dc2436094b5b2e4b88572c152dd4161f6862be8d1a963b868024129dd460b6afa8f84ab3f08b7feaf2da0ba7b74bb19e7b0b83c2e2ee4cf8c5ba387d79ed65c98ea0afcf53545610cb7c3011e1bbbbbbbbbb2b4b2351a26444e7b2ad2a17ada3ab5e929c63853987571069243654d14b9f2bb3115b92a81e2cf8f9ec39cc7db0ec41ccfa92aac66dc468f1fce7abebf38b02ab7d1862f56a4445d53796a515b17bc801e65209819e24114072ae75acbba0159f4ab5505185858aaadf1358ed2bcfd55f752791d84fe5788e9cc66db828f48f00d0496b02ab7d672f8824027211bdd0f819970c2c060c18313019d78ca7f122b23e930bcc0b00b4dcc052e33db712a382434826c5064a0e273a9804a06407121e4033d68d0f0df4f480a3c261b5843007e5c3240069008f004e87c7dec1055803680d4c9df9e1001e1a1a1bb18962ffc7d65ac332ff1c45cf51f46fdede9c688657f2748c51ef8d5d584bc88225b0da3f1853c39a111258ed3d61b45489820195c8760456fb20b0aac61fbab75b9fcb46376f2e654cb28c9da13a349cd4326823880832b3e11c83dd9531fe0e736e254992967767288d2692bedb25e7307712d69e8a128657db02b1dafbfb0ce8ff19838516e63d774aa331532d5608ac9630da721b0d49e41e001cc238ea06e83dacf6591021005435feba85e537c0fd61b5ef46d5e098c501a6ceb8f7b7b6164665a0289b0de89a37a822c772c87cc4c82c22484d22918b6763688fe6ad309002c98be9b310a3489f81dea36932fad9bb415b0c8d34ed054d8e14e9c396c3a4c928cafb952223ba44fd1c35681af6296aafd6fb10db0eb17d8d18b1ed908eee9efbf31f56879e40e5057f861213e49f7da697d99250ced344f937a448ff0686f18249d7101cd5e57af12d2f2c2e2b2f545a422cdd9db2d2dd282a3cde7327ea9c334971ce95a038e7484e9c732013e79c55e29c1391784095053f94c7dda7cadd25e8ee6fb18c72933b7def5eec0019f93b7188328647bf2871646307c8a88f6205e79c4be7fc9c37ef15569a8c5a96053e2c9f0f071ce41de8f6007fd888f5ec115af178070266eede8c614fe2d03da24a1c2d637837ff35880df6f6f6761fac44c28f9c98a333d820de1013093a395144612f42fb190a8949d5ec37e43bcf497c89994ad4d7c6edf55fdaf2babc687196155709a5a09c9894344983daad8fa782d4243de7cdabfa91bfaa616cbf65741902f5238a7c206f4714fb29c4b1b730b99e3d423366ab848983bfe5db1bbca35599c81bfe260a8304244c105962e6b4810c312b06bc28c45f875a7bc3b17ccf515137e01307b4a5a81dc898feecc5f6804b1ccb4678e2d03da21347e3c4910f042a13477b9f7d32d08b9451d7509a483fa3dc624370cc8288fb0d2bc918feec256a49890b054848485e080102815a2a6059168b053e9fcfc3b2950b783c1e9521aaaa0a6100429842044551281998a6e9a40849924c34f0de2bd980738e8403ee0eea407747cb03fc6136623dbb4768a51a15268e7efdc70fe3f1521454268ee42166d643cccf4c8798fad90e38e070430c0d1a317288fad98cfc170088fad94b4c1518219598bd165093c9483e24314f627e6654cc1ec5396093d1f76ccca7ae4f8af4a72b0209a32f5d0f48913ea344fdf742df6f884d94e910f5b787a81f811cd280e521662f2e9669dceff85a8fd895ff7b58b6fefc2d0204344dcc3749efda7b5d98eec6b27ec7eebc1b379ad85605af31e6b02d02091291b1a4facaace8beffe50dea1bcbdc5bd17d220f07af5c982b1726394aeba6497a9db04cfa27ad24bd63eafe5d978fdca6cd016d073ff7501f922e118aa2f6bd7b7e2fbe7791c77b7e01d76bebec2367b2773ea5ad995f87eadb652c33a6d140ed53adb5d6da0269adb506446543adb5d69ad705eeeeee4c16486326a46c8d955898254a804c144552c4e5c4f626104ba38c69d611772b4288868f65bd499dba9c27394fc648b83f3745c63488064bff55bbe32efde4708bb85b3cb5462295bcd69c32d1249c83b187a5af4a0401d232a6bd3b14b83b967e4845eddd1ac998d6bc2ab0f4fd5727635a73ce39c721b840bc0696befb0562e9bfd65a6b16b5a2a22c2b8d6a8159b5b64b58faceb285d530cda61a96aef9909a4b11aabd9d21f3e36e6fdb993733134866a60ada3989677835be2a019a99bbcccccccc3a41c8dd8f791bd632c6252d5e376766eac4eceeeee6cf2e632d39487263665edd10a4b482cd935316567bceaf7697b0daf32e33b356d0c3cf32825054c26c4ada241e6b6ee6422566767777799777b9a1c0cccccccd9c028be276e9bbbdcbbbec547abbbccb13cc2a9389b80f9f60b5df2098899a7cddc2cae56c576035be767777a77d2c33267b341fac1e2738339b33737516a69bbb7955d070a4ee88a90653b0d32e0dacf62d2ddc20bbcbbb6cb1e314acefeef22ef7e05ddee5b7526626dcdccc85bbd4f46e40513636363636363636363636363636363636363636363636363636363636dcee9e34bd89dbdd939c64449bd0e176f7fc3523da04b7bb3ed26e8cb4b3432974555f8e8e402994a11456fb55d5559592a0a8ddd9d55ddd31b42d7637b50414abea332fc633bcaaa9f984fb3bd7d65afb7d1ece33edadeaefdecaadbd8f6e5a066ed6b922e613a17a0c89f9fa8d931b5be788e02998f999311bc47c4245f93d58cdbc44b43406fda35b0b657ea2fdd042b1178367782523509ff9a95876808cd9055cd4dfe791cf33bc1a5373e4102d661bda1035df61ee518bd8a8980f6ffb018abbbbbb69686237c609200010398a3c18334245cccccccc58b6bbbcbcca85d5767bd777b7c8ba3b7e0b937c65162bf3aa8feed1148280ca794462ea14897945bed1467c7de4c18d75d7dfeb8604c6aa6e77f7d7dd1dcbf81b732c785c58ed7bb0b4399d22461ad083a5a1cc7aba98affb3e8b6d6c12ce39e79c0bbdc8a282130395262625bc3d78999793339979b7b17061d811a8eaabae2eb68c6de1acaf431dabfaf0a63b4882a1afafc21af005ad33637c15b0ddedeeedcef7c1ee5e26acf6ce6968dc0eebda0e920d15652fcff03a6dddcdd9905e29081756cee39e4f7fb6e1c0248741b6de73d4bac06aaf2d682c485f90922c4579e0080759229bfa0afc9b7b3b1315a5e4eeed52ebc65a89a502abbdc321a5c06aef1283e9bcf9756791304677b973ce75280521949c444952e59f673977e522f4dcbdddafd84fb93bdc24ac24b026d3efd86d97b876da64fadd1bd69cbbfb9e78bbbbbb7327dae56d57c6f4377ff77d808d1705254992aa2b13c58414e60ddd5d7ace27772bc4ccddbdad4fe6909a8c23e911a41d01813f884449b8c9e457c14192d4246c5202b7ffe58abe7ae2a49427783b45e22466aa064dc99531d46f121617567b69dd95d530d1245032147acfffa5a97bcb186a0798423d46044a204adf96f51e7ccae102a48b88ae71936c0aa3f5e4b90581d55aa6acb6e4171313abdda5e7bd4a58ed1965539e2b6c2afdd25ddc210a4cd9c1862461d6c7df0b859c738e17ab21a5b6dc1728d0b9a7fa7c5ac55a5981cc24dadadb44fb3377ef7677ef6ee75c9bf1a8d40c9dd6ac74040000020000d3160000100c0c89c482611a47512af50114000f5d784a6e6032164723b1400c842808a2288661208410638c51082aa4d4d5260038ee7c5719f9fd157fd53de24537460adcb9475ad26b8bfb30ea1b34ffd9a461dedc397a7f21b121397d28b33ff960a0d105df144844aa213b2d7e7ceb4992c17b310054cac0d609673dc9418533f2a9a726148d35a91820575c0ee88018bb01256d22b16151c7c7d80ae9134be59d3c710a231a8c5e70ae0a11f511cf2334198b3b0196ba711d0084d64d71f9a969a5699d60f9fcc59c0b401ac4c51c71c60133a0af88521d065fab88d27d51997ecbba19db930aa13a822be4a8d3647e181b1425cbe03e7123263e11238ea5702ab2da74965876946c6560075b48c7bc6ec618dc10ea02c12cb7b2983919757b0e6b1afda443e26378065487b1853a54a7a92920adf773c29c887eb8e8e6ec78e477788b43be4317ba00a4953c076bdb0c4e7c2fbb6bf604046000e1f4a395656384e0ae78d95d15991a95a33ea997edd95be589a307b3888382916e70d2e58b911d6ba26ba5d946bc0a5738d6b8a04c2cc75299b46e4d3001105e9a7a0ef7c4d59b446aec15b031fbd61caaf79e0e99b129845658f0035a43264f8abb99c81dc006905f89d7c8e1f0262f85b08a0965155689e981e05c18c416e9a88a39cf5980bd9a4ad22dae59be9fb1c85016ea9bef745b8823f1d4cfb66a92ce8f87ee9b32b2133085e9afee332daa284b15a23b94042ee856b6e51c8f62a2635a0b90e9d02642ba6ba56d68f8aa5612c9894e539c54a9e6d0224ece5a4ce8e4d0048e6a5ac0a783febf98ede2934ed14ecf906f92e063239b81d0cdd0ee8fd2402b85446e4af5832098a32380b9cd577a58b57d741de2033bbb7543c6f6f6eef900652ce13ee204b21ee6405372e22a01d85619444a7f427abf488357970cf17915cb053c08b0d9ad919c84b3be857d96ee5de7e9f538050730ad8d4f331c6a154d7c1a4b23933eb2f1e01d128776e8ff31367bb0902dba1604515675dad7bcf802928cc221f48f7ca07dd7a261fab16f37b1f6c3f51938f64131509868400c2b7ea3c785c51ee3226db5d9b9949e38221ad40edb937e8b48e64ee18b0ff9a1896a9980f8db9fa03bd0989450624ecb3461c9028b0f5981202b362c608802b87e79c1f4ff918242f66f69a288c19491a672fc08e2679e7aeebceb950c6f47575608ee82c9971b3d7f650b3a47a110f19871acd548fa02c0131890d9f48aed454eade6ccc7d954341aa8d8324709a311404bed4854af06c78fbc61a0a38f89c07951fe8bc1331db9a34cefaf3e27f7c52aa9e178d4b9e0ff6ca4e0e40915fbc0395f43d919a22b0bc435cc1b0f0da40105dc31d949b5b61faac74a506e8973c226482eb5047e01df7c1e507c015f63baeaca43e8418643c25423207c4d4cd1f46b1e28677395572e7af38a18ae948f0eee66a1598e5aa14cc34d8833c7a7b129b95b99f0f8a0833667f6108f6a788f21ed907d626bef958684b36c560a0d27ce93704366c20d9f7e2e63dbc410146b2fcc9753d3260608f1bfb05e466b21d2bc35cd4139e27d01fe3e43f6d2d8a8bb1ca9c75a1c9dd0b2369c800829ce4a21c782118394bd303b2de600e8f0f505cd407520085d21906a3e0d2770aafe89c23ebeb8124c464657adcf211709ecb9e47bedf85c114437d5cf2d11f85865e99ed4035f2539889d2fdde151757dbf125e4df3e6b35fd1672fe2f47c6780570c2a7d725518cd82bf298d7a6a77d69817739e90cb794e310d2c303dca8cdd950fc64ab12c2ab1086d660908cba7d781bcc446d510fef2aca2185d9e72b63e1e6a1a25a0f430a1bf8b94b34174540c157e4b40963a96128fb0e2e6bd733fa091790d2bbb3d5873c413735fd931448e025b7a4427f7d5f54138dd140236409fd6961575aaafb5348185382010c13eae9c93b6c12b94894f435dccb1d8422f2efacec7358bc6f3d9336353e0877d711c541ec71af5123f3f100b4e4832f361f7e37a9d62c38b295d8d4d573ab886a30b10a78e7473dfbdd32f783a4d81c9e3c9ba58f9c4a062cdc3705d52cbc63c09a2ff4ff93afc199750c5106c1236d9624a1e491d260de0346f7721a6db910cc32e0f518e6bbf7af4fca4f41010ea78639f10198d55a6762961daa59110dd579bb26d2b23af170955c51632f217cc181959d398846fcbc86b7735c04541b532cfc8db217820b410ef6d5933d962e9b70d824bc364be175c05f9df99d81a273f393ced179f7c42cfdf369f0a5475c7c34485bbcfa786b169911c128c1a7416bc03d620e5719e0bec1c9e24804cf43fa3511a3b9f4bc7f0cad1b3a8661fa484a7b0fc82b09264777de267fee97bd07cc19f0089316fdc3949aca58906b6a804357910f02626e567170ccc61bf37dea4ef5a6f98e5684e50b04a2ac9895d8cd3d7ce966047702b7512919a8f58d392db681222062296e4141919399bdc20a12e85a3241faf3caa013ff85885ab5d2282955762b568b5a2b9a9438e2a5298faaee7b05a5eb74d6a4f3009779a54b8cbb51150582d61f772f4a2cc95b3f11c62b1ec31f445a2c12122a9b3321b004dd2e511b85f05e615582db2b298bfec33cfe06a9f71f3e214c61910b3a0c344e847cab76ee8ab86c35bf168240aadf88da3e5e80420c3aa96bc6a451b3d92d0c03504a71eb49acbbceda0f508d91dc0d9cc24e546e57202774cee3ea9329647890366a2cb15a0816f9d68256142869baaebbafc704b5b094e3d7e348ea6879befec832722650d62b2b744ea5da2a75213a0517fec58dbe1343f5853a7e121df1153f941f16ef0783725c5bbf9419c381db9af5979a29c83998801146d293409036fe818f72fdec06c1c7a72f2b60daa3ca686306f804aaf5b6f97e2a754afed22ff50d40c246ee694be39fa512bc618b9f8b7fb4296643668198672788aac8dce5053f69297ad3b2e220069dfb6e0464d138632fa598bb16c6322246d95f649a50200d9461e2972fdc6eaf4a61b3f94eec4eb9203cc9cdf550dc9aeb7b702f2d7541f2b100b251da7ea06ccfddbc08a1b0e7f912bfe257ffc312e02ab41aadf822e7619a1d3fd005966276c14b4917f111b216af781b26960803d414c0a9dea0db1a5377c70ba4728dd9394bcc195f696a16b872c0d093f8f44284e0f088079fb8034c3eb88ee269ff58b466cfbea73aff6716937aa57d8b2b4aac26caaa04b8b35218bbef30674ddb8d55d54e783e17d8791ba26ed97cd9ddc4b8c23f9e73ecfe391726339f443129c7aea2b40c8cb639ab365ffb372b58cceb6695f0deeeec62e7214cb7f8f2136c7346bee27c9007d609cd95fb873125cf21417442d3608c1af3140a23d843b128b41a48baaa636082397e5d24a8f5ab5d26717d8ab5a867a04adb7b547d7ef7bd4972f134c6dbb658823355adf673a7b595b24360519c33cd6cdadd2c08fb083de181345f55cea0962b357b1769d271cecbbfc6a5800267662099b277f3db76f068660dbfb6fc206f372d31fd8a92ed0948df510bedb16bffc96d6c98f7fd9b58796cf60f790918ef65ca67e718384bd1ffb2cc797fc32af8ecc40e998360b93159e4cae6a8757b602aba832cf2998a46e0d2fdc27aa9bfbd807455461c1bc82111574c6fb278affc84aa5880592009f3d00131103203b4cb5702866213d7a771e79fdcdcadffd60700b86995a0ff928269472373dbc9536c8d51f8f867c5edad534f307cc749f50fdf66fb81774b9834111b1cb75c23d1811f22bf89abe3ef9487d7855b4c65338015e1839318792dda583bad2ebcfd2392999c6f17cfa5fcef18db4ea3140d60cb748cadcf26be2e87441ab462f78973ce5c652444c1df7a7febc82ddb95c51018e54e3b6d01b87845f92c31beeda19003947c7833d9f876dfe5acb0d3c048b8948c0c59dc29a8957984f8467a87d201c99da26fbd341c1fb8d615c1e4e3f60beb6b973a5869eff2b8cc29bcced0caabadf92fac8f26d0e685242c9cc1325b57a893d99ad2c265c6dd40a9d512b6bc1e60e0ab4e58fa978ae0253e8b2a5eb116918d163d17d40e8c11ce945d16f26c74daa49aef3a0ceae57b3780430eeb186bf416bea41e9716b65eeceb94737ca7b52866e1787266d9c47b7975d108b566700549f4721a8cc7624e452ca81cd57843d165cec64b0c520938d765babd4ac94776b411fe44b53108b81d685c448510c31545bf46de284fdf0b7aeaa08f77e580590935a7f74355a661df287e9009962ad0960d28301c1d0939c25904f0bd10e69c226306fa11b565e4de32361f78bebec8f15e4833369e8146bd02e4c2b4cae7f240fabd3ef30dd7208f3d2b867014a61b3bb154e1743a8a6d116e5719c3e51244155673c981689f394a6fb394a95cd58020e1939c592a0289d926a898b831dac4385798ea33d827fc03422a2b2ef7eb9356c2b27f394d048db0232967f727b022661957b14cb7ae50f1660c7796c92a5e6d7a882ae869b5e8fb2d5d07a630fd410998c44f95cd158798a68d65177a5fe62be4a89de87ccba04f6ed5913a1ef0c2c0c21a18915c3f6ec6a2c9b2f8a80d61c22998a72133385ae7cb363199571ca95f49486b76f981f17aef09a7e5e267522e07a95e48a2c91cff3de7abea24254706df6761009b7001b8c5991da2380fcbf2982931054c382161dd64a9c0ee4c92826d068139842afb9f975e333a72435d34a7a0d8b183a57f6308e796813dd85d0a27af82eeda5a3914e1c37d181b108a2886578330271945fb392cacc01b2b1ef4d00dcedb48909c8eae85a87a6c0b9e6a2374a74479dcb73b52dc23cf6ef253071d7a68be296223676c02eae2225cfeb01e1919c7b3cbce4568171cdfa27b3b356d642f98747eb8f6e4236543db9001e7bf22b6c963f88fb6e3552be98e48fef8116999a652468703fb7b4423f0a8052e121a83b8650c6c685af2a4e193600fb52be2e0fec8e4c03e4b4656a98b2065a9451b98839a5dc35d59b05ed1e01d1f7edcf59d66a6e108015c825ffdfbaf242d3328f9162185b1cf5df7338a60ba31062d5600c04002161da60eac6ac75d03f5a56b91f068c926fb2111b6e37d69bfcb04995f634fe12adef168ebf199602b62d6c660ff8d51ddbb350d568b7d00527d7ba8be844aad545ec892050be235071574670f09f108dbbe903cd6355efa5a42f82b6622cb9810a4531a22f700f39d41b829bfae9a7971e64a72a6367cf02dbb1ec8fdc8d805bbd5d7e60508dba358d9b5d819762e0e3e05fa3b0bba7db63a33aca40e97511541427e55e757fe8299084abe9fa5f6064a91cfb05d63de24cb0d8fed79f6bd371910233e67cc88bb114523057a0f9286e7da2b1e0309c3ff7f2e1577be782a22de5b37e2e6861dad4ca51a6bb68664137cc0009c57381b3c9f0be41018bab143b65d90f13bb9f47c4873d766a297574d70b750eb721c391f48c598ecca28eb3e25f46d82b8ccd625f7dc2f8465afa51b5f01448edb198900c1531e2d1992cc7b3316c87967bb3d349e420d8e0641ac3c10f648357ef05de34dbf14214891ec930f8bac7e85826e96cabc148b3a01a376c22e4e1c320ace58f2be1b64ad1e350166eeb58f25967410678f432ced702715a285076321b158a3d0d501904ad0aa1417641e2a01a9e40f524516c088358d0b970172fe697b5594fc7f66718a907fa6903bd4f608985cf56d09aba8bd9cdadd88cb869e6878e72f4570e37764373e435d5246d30b31c18414305e8efc111fed1116f46d0501473dd32feb0f14cd9da5b824cba83e38a8a78f19440d224834bd11797d2a5fac4a753639335856e1f3500ad148ecc0c8b9b758b39f817c09f4f0bef3fb672e3b08fa11b0980d82f45e5b26326a4d9b069056a5f79754a021d90509cd94097d7b75f2c770751d00cea2001e3011c50a9e3543b266695d3a3ad411ed5e056e6123c7164a2d2161ac63582649dbd153fa05ec3517308e2d8bb0642a82029ff6ca934cc00d2957237a228448847160de22ca35dd608d9aa6693163515b592d35735f88c2320d224206a3523d2b7bacb555c8163ed1858d7b7e2e55036c608b725a9c00bc7bdb2ac7cfb36448cd0d7c4d3b9625257e2d3bc89f3bb63c04230651febbd3dbde18a0d6192c5dd53f8d100d683892dd3e7317ed5298d56f963dc726ed27c83d1d283c9b0361c356a67e8cf4c169666c71c8c0c5033cc5427554d90460053055b6109c4b4baa1acecfe2a82eb3fe241dedb48dea2629d30c9a472c4fc00665c828a925afac8f10af6b22d35eaba545160057b669ba0713447bc12a378dd57560c0e810a60c26bec1160b4b4d31c7b3706d6b8646bcea802e9b30c1421312e060629ac6cb45fdc3dea4c3389a92ab1042f5af6f2a75204e4389f5e9754e0713ac308037e9964ad90c2048e60a0cb3f1f44a6ae2604e91d6d80f028ad428809aad254f72e4cc285c08d79a187ae779191baf1fae26fda77cba563ee9b0252a0c615ca007bd2289fc21cd6c52ce51e2f6de00dc5f901d36dec7d214f49188a4e56446c9e7b58bf0efaa05e051af06b88d5619371514bc40a112c083efe8e6a0b7938aacbb2faa2b991db44c20807b0494b6fb02039aa336825fd0553211addd24d8c618039b87bf495ac61f8af5b2e8da7eefe2cd8ed7636e2aa85f6344e231af4e519a22ad616c6b384938f365cc07043bf5dd1970b2ccbe40009ca0b5f37cb5d17cc4b13d31f946002622fc76330afbcee300fff20fe805017319b23445aa7eff83a75907a8b04b8f970b40e3737e51b8606bc091c3f40b96d8c71aa148c5d598d31b9b932fad43af02b652db08318ff982fd4050a3d71e83c16c1619c5bee21b22c9e0a7e2226a5ac48a8c6302dd9cce4ba7a883001a8667d546d85de3527645a340f2140e7063d2ab330800da90030857cf8e0e5f55d33e7daa9fb401d8da79e92baff992020cb2d518855beb05fe5c40689a58b7359695e45f1b960d727a099f25d2835811c2c11f8f3e9dec9554ae749b685e3c4ae36e899f889e4f49248c812489b24724e8c376ebf4ab38c53d46a3fb0b27dc61158b56a4eb460251934d45f342ab25a28dc38181d169c12477d1c49ac600dfe3b07b024cf21d410ada3cbf2dffb7222a096528ef5fa78f5bb76abd015c3334f71f140c32d3777ab7235269f4b81d241e2989fde2232bded890489cb6fe37ca158d61b3303b12a995f5fa904427f0f81bfe651beb6c978bed99fb274c36e1b31c52bbfca60f52e4ceb59e693d52a5d3b0f3b6e8eb794b69a2e573d97fa57b6ce9322d6265a7de85684534db0f364e3e00428808a0ae4aaab9cc893331c2364f2b86fdcc610b141511e3840bcdbb47f66294a599d49187eaa7baf006a796c9c0d95f404d1c3632c84cb5b0b87fb950caf0efc6465b7e022a7266c29cfe694f69d5c2a7bcf4d0a1ad2df6df2695525041685c762e9cd5271bbc2bc45e723ebebfd9420c61f5534e93a502906f1a153e2a3cb05106407dcc714a7592e540d0a09683446323bba7f76a2b066d9ef5aac6f309d586c81eb38648366ca6ca0231a6017b486ecca235955014f0e5a601f510cd671b3994af1c0e93bbb61dc842577bd5ca22f3793483572a6016fc7277919c6ca27f641a69ca75fc41565da27e47e5dcd3e8366f608d2f3b34034f504cd05c6ef6f30eeb06c23dcf507e6dbd631c769ec1bfd73614dc8783c8a50c6e4421746343f0f170f6238002506759f7b1a8a5a84f677788ca789ccda78b8e9faa5b46edf8d26c9f9aa6ae14555c1a740713739d80d5006ceff09f99e0b10cdf7ee1cf32be67a6380bc7837018ed3c2f7549c71add0eef0ef1ce2e1ec8cd5d2a76e23eca4dca2664369f023148aaf602ac794fe9e6095517bbd789015edcaf333e85a53998f8854fb1f27f9e05932e8c7970f7163e1d0e77bfaefa637071a3827c6a7bb58a16a97c3ad262c7f076f81e127e33718fd7855207a792b5bbca54a7f73fa1859b6b6d8ec31d560ad37b6b482a2964502d12e2b2499cac784a2793f61d9910329006ee64add7dcb4ca816003ff15faac64dda8902f4a9ddb75eba4569af1fdca0a8dfcf3fae38641f8cff8c44c242ea5bea1babf979758323198080aad2bc252d4654bb096a5055039799e6bb5d7da5478a1f6bb44881dafbc821180d248b368827fb5ecdc85ab889e7d65d30283a7085e9c08e0b4fefd9640f1c0e5c5733dcd03451b2858fb15b8908a3a03370f05f6cc779829046c1fe6b5e015033234b828f6de47a973dc198ca0bc1f997e432c491671043bcd191495fc5dd5bf968f9a9990095c71bb73d2ae758d277f0884b7a6881296bf4f575814eb770392e94d4102b3a280741870b852ca141ae3150a6024d2e4cf59662880327a41d34259ddb3eb1062f23dae6fde55aa2d125ddd8580eaae1871fab15cd2ffcc41ff6972b814eb7e8769c28a129570091e8744b778ecb329a622588806e9770d1c73a90904899de60f897d0957ffa18984c200f312a426960ba2a6160ea484121892a33779ba604c693a841ae0515d0e8166ec6c4b21ac50a5089862ee9625c965353ae0111812e0c80ee98b22c000a2edbc883d1b37f71837a0244f700a015dc174ba0af8c9740b254bba74d37fb336877081c17ae81f03ef4d3d9e0853463f933e4a3e1aac7756d7b5553ae2941db50f65695da78aac84491b610845579252914699bc11e8b751fdb769593d13400acb739d39c4f50ad2a46c28f044391b73ebce9ef2fc0e527b05ad10c2532a3e2922ee2828e7b0f7cb48904b7f8e17c753c1171614214d413c1514680301712667c4184f190f28c106f95ff47f75e81a6676824c82851be26f48b52f9dc5b1d2641a05d77d5032a67bb95fb00bc8e701b11e4f4ef8adb12b6e6c8efb62d72c2077ff8b06f226f8904acff1710066064d5cde5f24be54d9d0fffebf984cd4975d8342e38ef8b009631b53e3eb4e1b1c58071d8db05bef3c2c41e017d2f2ec3fc472773878c39b8ac121ae0ccdd821d872d50ee301b99e0c110bdf268fb25b85d62250ff455585798506a94844075acf9161f85280b0c7d1757e7a9c8e8af8300adb6d6e6f7847f32842a6c47a81e36b5fbdb9fec60c1452a0de2b8d24c0f6ff72e02abff526174f8a7b2a28b114c63a9b15c50b414e20e4f16487af1d2f85c28d55cd18ef7a866f53afb0e9f6bd167dfdd8164670b1b0808f94efb1f1002f83aa5fe4019e286311a6b442d7be9c0d436cc7aec9db916ca8b7c42df524793b5ee8a61d859e9fc3e78faced9e6876f77cfb48cfb0eeeb11c944bc93e13aeada3e82da8802e867d23f0242d8a6910e4ba24348818f2222356881757651e28547c8960aac2a589710ae952a9540c8c822f8be91e4f83351eb6c8022479be7767739a8ae2b3951d2bef69117ab2e19cdecde980553fb6daf8106084f93f79c696fd423a88cb26f015e057a81ed04d65047ce2da3f16a56b72755cd2aa0c6496477a5461cfbbe58455c7ad2ad96fa01e825c3d83c5fd285226a038648c87c8b42082cc26a03339800ff9eff15532050b865fc72b35fc762c23628a430e9879e532077dbabe0b13a269e634cc5387c0ec60d11ff62557e48e3b62742f59fdf25070d8c5a03e3442b6fafafd22e4c66e49f69f2090a9394b9e1559f4b492c20847deea928a626a52bd14923dd1aed042f19006db25f96ba42123bebeb01306bbd5ed6867c540ebaf07089661715e73e0ccd21d305066064fbcbede04efc3fd8b77a4dddd393d76ba93a328d0fd74c7753b35eb89aaec141866fac9838cc1041f375bef9cecbc79c0c20a8a998d1b95252420255052b61269247c484ebc961e033ac5a12379a55130d95add1d11212b62f21e772bf65db59f63abbbaa28e048c9f199a2b2e23baba92aa260a2a3c1329e0d17719ba360f0bde3209617e97f4bd3b6f1e6583f4f2f52710189f85419e67fbe32ecb23ccd0bcde0bc03afcd1eff5525cbf7d7a0f00ba0b2d27deeb17e9da11b74fd9639919faa2be79c408bc9f317055a0b471d69b3bb8c206c6d9c1aaa7d666b8353051a5b3ecad4aaa9c85954ac67c40fe9200b7d968dcd595b08a32cc7a6296997055eb0e8449cc10a89b2fe70bb2ce51ab4b19459e3fc052a230bade57c053ec2808e292334d971815d9e01ae004aacecb39777f89e8ba7c51a5a37c31b3546931992bc713d0a52caf056cd5ca1de1975631f227576f522d6b46027244f3c5c1928d2fd9633f1f18907bc42cb692569b708991031572edaad0233d6d096b4195e5e69d4055cee4b2c9f6449c79a6571502d2e5012906352df379d84dd4a6857ae5fb6464a5c9760d4b7ebb054526b5374b114a1bd5f67d99914de95a2b2841b2c5963903320625a49b45a04665330e4ea75178d49814b2ffb238877ebed32180dc966112459f985dd45fbe9f4966264d89b8efedd3bee419a800eb167162d6467ac65a1cd47fe940dd0b55d67d772f42284eb904394aaa89328599a39cebd6c2c04317f0595cd39e654aff6152a643537ff6aebe28b98682b4f5ccf9167932014b317491b2d5842ebd763823bdbbd9525642bf733631edb45655388a108dca1583826a1b1964c20eedbef9ada5ec253ef87578be60d1b42f2562d6df3da5e00b705ca36556ffb95368d38dadf91f025a24738055430e3df7cdf32353275787df31d7211a02b3808da64bfd6f42ab096981c2544c1f6d0091cd3f8878b82c08a1a2b08a877411b3216a45a3672f34666657473e54d154811ab3b0ccedccb417ffae9a78ceb99ad340372979449e1fd7b5682ce927b79d2e226d1a9ab681e3a0cdb6dd8e9a55aea13eab56ee6dbe56c90c3d2193cf00b99dd73342de150b5a6367789bb3649348acef0ebed6ffd8c10c464b2b3f452d0f362d13157bdb32f263297c497c04df958a4c8ace304c865f9a8e571a13d404cd66c227f1257ce486fa52d84a7110e3222a0be2c72ce45ce94ad79227f124ece48d63c31fd664eca4c963c99ec2720abd636114244f762543b99e9750689fced8b5cfb04bee1f8412f07c195a9b81903412ab4fd9149f33594d3034b731bb41fb31d1494ce2cd8525197bf13118848489e0a1ed330832e2395186d71eb70f7e0196f5f5fc4d731a9ce5dbfae01e05dd24e184c59067fe5244ca7bc5e6d5a8e705e939b12245330acbbdd1dbc9f9ecc3840f9b7bf9ce44712f2d1db47c7beddb640559fb57433c9abd3cc9dc8ea3889604cb2be284546397c521b065ea5e9b2ba59526f44061a00b5aa5612acb4438735b6579422685305263904472a3a883f4460554793a0d2f8123ba5c5d4f4df9e5fd87c2383f071744607b86ad3a3f9bfc0d0969bd139d9a324319e0d3a4fe346b51a73ed70ccc8efe872b46df672303757b1415426bd52265983e99d5857c81713fdb32a34d8805164396303c046460dd2a9da17642e3c42aba176bd3068c33dcbcd16da9c79c76b7fb4b2dd53ef71ffb5b8b0c6d5120d3cdc13844baea4a8b02b2be821111c388c6dde51c7bca06c4daff6fdde2894f33266ea00047acd25a8071775d0a08f72f6a4ef5de8a7f598166c5aa2791d29687599fa97bd044e2959cf1a050cecd42da0048976ec5492a730ff35177fd44cfa8e1d876f96a16acf58ec022d4863fd9e505938f9a2255788c9b105d1aceadad255978d7bf663fd6073ae65b57de63d801cedef03199c714e02aded37892c66ab137ca44ae7ede140d56c84716965143059e172d9c2d1fdc20ada2e584bb275da8adc0389f10f21478d7d1a44acd14bc11c81c6fae1c9a53fe98822d07eb17f077307b3738c4c9e425349aeb5595dcd186e8c97d5febec634b75e26ed7c4be96785da87f17a728a354d0c0dae9c84b93325a0fe41e72017fb1e31d58e17c083821d94a6d10bf4c9d22e907c4cd0efe0eb937697e405bec070cbea764716083f8e7a5722a44b67bac96afb767f0be6abe80a72abef56adec245ad44605d4fd683e3b73ac82a639d7863e0fbfaeb6d7ef379178438900708d0caa749e1408559744592c9c4c14647d571d0b9d381a50580550c3aac376e76131dcc3d07f50ed3330fd381a926d0210d1b8528713298432cb64eb4c33585f8b7f685ec29ade7a4bd49ccba4be556b13847a2a6591322ad1c7a2fb1a8c0be82485fa9e4783927e4c415c7c25d2bc1dfba29df135e3e3ea8727bc8121fa389a1ca0b3b802e6edc724a9b42b31c56f402302cfe966c454837785bea3a5906112c8a6bf2274e6130097950e1bd64e2c8cb709915c43650569b53913ace4c1323ebb4ba5e83d10fa36c3e2454ccfd4af343a75fa3507de53d60e1dd65afab33a8072fa37a96670abec78169c8189365c811198233014dcaca06646e4d6a5c072d7a8b315e664fa11fe6967140a5852234e0a287a65bbde6f9b9fd8c0ac640dc769a7836f0dc3a7dfaf584c2ac45ff83a08ed906a747c08a04119a83f2b0b7f2913f65bfb57518d159ec5eaa46e50023bfbf18932bf92b431d920f71468ff4a49fb64500dad6902b629d4e13ecb09cb4bdc41f1a1acad17f5974df39e3aad858c5bfdc69aca36d578526e1ed0975577293aaaeec26025c83d885bebb8c2de334469df91345ca0e99601575ef77b8442a19ba1016b7495303784d281bb17689ef6ef2a647c86586fbc2c893d3bae5e0e09bb4c9e4e2f3b60f5d2b4c21f6f819b31b9e84a7390b6373dd6728ceb66e807fbc84c7c39f097f29f872792649dad6911b9f176530b655b9335721add91df0316e0200fd64ced8a600ede9804de1deb40204f4af075482d988e85a9ca917ac02b963eb866cc61c99af61123bfedb6f86e6f496ab97b7b0aa1a113251bdc86c5131a558eb078650d02178193ddb4a5d1597d382a45482d0c4b1187d58900521ed9a17f10794a3032dcad500b53fb91d68cedab2259308d082ac0114c5cb9d51cc96911638e1be38644fb39963be60ce91291924e96aadbada627326238b2d1a4af8deb346a3846aa41d8d4d23b940c970d1af7d59b143473d10c9ff9126a901f33c8e945107703fc7b9190b585adb5581f8275fe2538edeb245f110be7c0869c21ee35c9047a1f45ec268c8422704e153fc39008fafd84d713f447352deb1c4c7de6e432bf4a9c66eb02a2c48519b7a08823f537d7039076597792759ae530073d5b7ea6d434158f36af727b55abff20e01484a002d37dda057d493ce9ebc01cd69809c70c9bab5eaadf380be8a0d0bf65a22f4801927fd218d23ad7d53142ac091da3f81cff09c9ce575a72a61d686689662858c1aa3432aeff3fea9f904a994913f56b542833499635937ec1c755081ad3bf32d4912049be02442169410ccc6188963cb542529290ad9c4b798b43103f9e9730887a7ae70e44c5cb524229713d4a0e0ecf8d654c75038104400df1148704849c6b267eecdc584d981b0d2ac8a8fbc6d0d71eddb52101fc47e3a87481bf260939127a013a98b830696ad5387eb2b2293be3c231a68b61b31ee5d67a041bd91314ec16603c06ae514ce88cdb169913cc1d393dff3fb9fed462f0fe2a9b04dd5342ca4a45b3d6487e088740cd2a423b96e48eec61bca2c4a1bba560f943222d35ef0878b15687c20f4b993c8ea637801afab4ad8858e9f496c54ffa87e52a39473fbf96ec77ef2d0893efa53a5c4a61537b9e178161a1e5080ea55e4ba281d09d031b52f6fa6d60e1d352e7abb6ca425fb3f06926cfe3661d95e67828d6021d2a61da89a23abd3b1461b9056bcf5f23e8674f42453004e19462330ba27c2a82c56ab0ef827a38c6e915dcc1b5054df1aba2bb0eab46bd92dfb993429bb6b41bb31b8434d8ca673fc8e707bb9e288a4a40e046791efeb7d6fc40f5fdc39d8e90fc38bd7c1024d37550c88117c43a38e9b3dbac42c313278a5b1e93276f9c3ee5057f9ee5b34c916112c0198036f554a279ec3474e0fec409cc2895f604d3e98039e32734dacc56208d427eab4d3628f1bdd689bc45748ad7b8d9bf1e70c81dbf136d72ba5a701d87fbc9ea6b176f27c1e72b1f8f6d3cf6fe932f11c18c491f1784fd2748538e92a9289974cf1e6140195016cf63d23b2b13971c7cad8a09fc064a25aec00d7ec6c467201695090da73fa324851e50aed0cdeb05483f35f39621d1948f074d8241569b2963610b441d5b8f73c58c47d26a49caf1bd9f7c7d6d7741a477c82a8af8f298455e07fc38da5469a850e55656942328433460565971939bba89e9c26ac19877897304455fa05f02dd71a291e5b6f03d0acae46ea688e37873031ea211b2fbb861a120cb3fd02aefe0b742cbfaabb7a0770fdd00f7d7cb2ec5360d5c6d4149f9b5a008ec8ccc355a50d005d24338808e7a3cd6fd850c0a5c4b993b3ace5d0b4a9056f22a5afa7fa16ec51df71143d214e1c255ed605a6b4141436a12ea0d3009a84cc275d32b9310ba5f31902e3d2dc52d28639c889f749529300089246a2416604a10cc57e294ed67050e1a33b605e586b7c5287de9133165c699c13550dbfd256941f9dfdc823d8eaa2fc62780038529765db17a4b9ae9879eae30a44d42366e41f1a3853660790ba1419769318b20da601ad6276c1caf7e49c1898545519a5e64527ea296b8ebe4b5a05c9093d0bd213b05308becff35aa7f0e31227984e3ec74d0632a39f0a0f68b476b1c79c4425d8ec1b71df2fc62603194ccae8c5bcd9e7e7aaac18b6042401be8cc916d3acc63cb701343c19b0e85a0874e8daf548eba0177d6bd250d21b20095b1c1fc968544d8b1ad4c4662418b45e7780dc4f647519ca619979f5418e82626420b7918665859e8a2560c257abe516b350e57fceed7730bb64e154ad3a5910462b2e371b0d6000eaae3eed16f865a64aaa9a25d301413eb399fe33114ca991abd636cf59778af26d6395e8d868220abbb81a5ac7c49c9350a6988bf21f982f492e07663100afaf37dcebe10798118ce84c6d1fecba7244cd020e0d3743f78267bfc5a7e020aa8e2e7a583504eb6dc4eb945a8f1015c253ec59a811392e72c7b604c7bf39b3a3bf3008da67444cca10697722b9877b13f65e7e08b7cf1d8e6696a25e97415f583668607986a347d7a5a22c998cf75e96841bce44395410facf6f1b7135ede6b0c0fd32cdfb43c2b2ff86c0907d1eac8bf8bbdc0fe8fa99b526dd87223b80c4f1df342a3b9e1fd545e1efb5dec14531130a80336d8637721627f17dd2f398127d0808ea111a7a2d5283a529f98c0829c404156e06144af543017732ed5c45ea3d14837cdc7ff7e97494e4c3b1eeea2a3884e45ce7a159c5fb0ceb1449de5462ef2122ff03817979dc009e83111598a7cec71a5367269973398d1a1fd5e489f4698970935876e605efec0cf78049d630dfcd5ef05f3ff951e73a39e64a3d5b7ea19e66517803f0047fef88eb336595a352f63f144ec2f34ff76a8f332a874f3ec1e674e359c6a6f28ce0f0c00d1b2487a8319f0d9fdb0973cbcd7e55f2f2659237e96360add339544f1cfad99e07de4db8b9ee7a67bc90a27bd4c1d2cd2f9377e996a1f877c916957c02c9c8eb845b3d2a9c1b2306fe7842cad2285fc96c5ece63e158bd96c59ab42241ecdeb2eb2274e660a21c9d00073b117bedeea0738f2d6b130241a782c0bccd35660c44124afc24c33930319c098772aee935ea1f88b60679814d5331861fa2b52f7e57147caf7c8f78eccef95f61d281cd47da1dc2dd27bf2b82b25f75d3ed1b76788fcfc2cec036fa18b1c67ad517a2f5fbcbbba43a028168ed41de7c2805293be03ef7c3c9550df15c97d79bc2ba57bb164faa8c4cbe68cc867b81bd3ad651246475c474e804a51ec47e598564298692ddb80c0ceac82c0e2bd5ef73188f5edfbfc0a336fc449919621205304030faaab8c97e4ba8b703432502bce578e46cee3ad7a2f40588cb41390791e92a55a9c316b0055d264ff3acdf052f3d7f98bad4d6d3400c27f225a2aad231e302aa3a7fddf195f2123453278577cff64e4a4d4c06b1aaf45902903d97c02c693b2ce8eedd066c074e89c68954da04d1b72a597322afe09874e9bfbe71946c3c60dbb493a98ccb0e03d6e9e019f5d0a90e5cdd1059c4a672b051429fbcab489bcc06db10ff28b8fc963244a11521a34947786c072fb7ff9aa33b7e4cb8820dad26114aaa6fb65990e7e6107a5d01b2be56acf7667915880b908c1be3477d04ca07ef5000906c5391fcd0882b44a6614f0a86e34965315e99ae78e5f4c25161a80fbc128a1454d1c5d3dfb88380ed4aa5b72fca4151d529d88a0b49a05b83662018807eb219562ed6f4c94aac4def95c72ce9f78d1be3f4f663214a707f259e07a969ba12786461ed3932d6e2c0d3dbcf87ffa8e2af393ecb9ca5d49684995f914a1cc4b538df8b71a02dd8846d6267cb12f7fff87511809fafd87852027090e4a306f98724629e08b1710bc87696755a7db7ca0446cb9a5134605068cbb06f63622841f5344ee1baacb5568394edbc23abb2bcc737bc022012c711950e9d65f2fc9c24223fba84302bda22c59e000e7196b43975ba94fa3ba8a02906d3999a4d8fdaabea5a78d1727d1e442dd1510bac73394fe39aecf61dc01555acfe0340a7d2a9a07ea3c17ac4626e9f0829c0238020d26a0d9a05a6474057b3a0c1eaac6506c795e1986100d511429e24268349165504708558d487d3761c39c108ae0b93ef44c09f34c696ed8f37f69a4bc1a66806e7b8bf1d653090df18a4fb0b664e532ad5a9b6e6a5651ad9da0ca732ba029c35cfac5efe74478ef0fd83ff6b1f2331bd4bad25900745e4890ebdfb75c489cfd9fc86bbe0a46709042fff89781552c97511ac8eeaf7b84572d9288d540ee351a5cc68bd6229e146490c548e56263720f9697929ce41b530a4edde56dff20f2fcd2cf76ad22404eb55238df620133b643255e71dae2349cc5096311fafd63cd48756dc952492aaeb57309e5da3f0870a39a11c6740a48c778a490e160958d7e2995400daf463a4b75f5e1696668b37059d7a10be8773fe456aa00ed90f4d814500a90cdd3564a827cf56140519521b2b31269849a827461b5443dfadc690f1db782ef1404472cbb535015b0c1e6c93728530db915eb5ab4b06aa31a73eb3dc993d4e42ed56c10867499f9cda25240eaa0baaf03de40ec28bac42caec1e89468765b53c84765922cab64d91237558706c5d5533574e8a7f00cc33f7d3cdf9755f5f702e35b8619b6bae6048131182356f912e859e37f52f83e647559d0f6b8493e337853151f683c95fbaf9673e9e7850d59884612bda953610b9b1548b68bcf378e4edc7fa4105b03e645c9a307f2836b1d89b8d398c2f67f9795de4630bfe6a6a47d01e69761199f881e3b43c7aa9ec30ad84a03a21b92b73fd3de41bae9aa2c50fa22096a18991b5c836b56e438189812dc480e01bb1aca3aeaecda6fb730dd53d252d44290d9eca95bd8cf99f0b6f35cd462eb791d354a2f9e48cbfac81e99b4c2be5f3c0efbc6abc0fe185f261e20439fdb28922dc770ff18489052443288d06114da1fcef33c5d126420719302339307a2f8a905a5366f5cb676818544040186314aa6241b14957563fb9b8ff81d14cc50f52387ece0255b976de5141765d42a2163d41c1c4ad9e48c51010b8b554f2b27dfa1a8b0412811baae38df4ade9ce34bd4f8551ae652b7a8617001b779cacba8e23da3c2631e15d6af2c6b94ad3eb404a1c2cf636e00462988bda58cd91995e06b46c633ea0e9a88b278e6753c101826f06754911f5f2a0e7694aeca1587abc3c45eb1962fb81fa3e877702883151b848c1ae3ad80cf75c41289537c315babb0103abe498eab51041e074a0fab136c9a4bbacd2512db6c54ddc11c85b2de6c46051e638f9948e12a1c95f84c4fd934a9b36d8d1d71ae8ff051ea02dd86d396f67cf5e13e09d709cb47451ab7a090414f1f58810af6a69683056ac2504076d2b3b37313db1771f713191f01f2f44673041bb3c65d2be142e9bf96022f3285084c3bebe4b01627ce026c8016b86afd8df51a6b636055e5edbe1f0f51fd521056a112764592880f518a2171ed3451415ccff669789bb9190d3688169e6bf00cbed69d6c5ce22e7d02201ab495f291c45b2b569e9793b1dfa2ea3fd12d65292c288828f47dd7a86befbae4a054711d02146540d62db625bad9e94729f8e1b4780ea46b7c5ad144c53b3b5167b14c2f962c9a35c65ba3c36050e7ddfa3fbbd58e489aefb53395800dee0d7c6a7aab269af22fcf76ccb9097cdbe1321d373490a4bb15128325c8d34c7399a9b58512b7b854c80d76e905bde651502b3523d3acec8f8b078bf3fcff4e0bb0393ed44a59f2a9ad5f9f420aadb09a1b946fc1aa61e5d1b35a9f78d61cbfbe32a49b8306535ad057850d5f2e93403fa61644012e805d31e516782cc19231297cda3b44e03f8ec0fcbd88a8981aeed21f45a721ce55ed5386d3b12ea3891aa3a55ddc1933b0b1426d8f34f2f65e22fb955de0b202dc2dc9848ccd5d9cad54e67482b49358158fdd3c307a195c4cfa330791646a7c46e8f2bee94cb8bc57f16bf31f38b530dc125f7b28928139cb127d5518201b43f03996e9a693f8d48f0318f47fec2a3c9296b37bbaa6080666f7fe18788cb29b81eacab81752d77a98648a47227f0176e2366d419a5776b5c00b8b1a266efc4ed8958226b0f839cad4a19398828ebc0e9119343891eeb9bcae173997492f59fbb54392a9f2dd0ffe271f17cd7935b47638083133b5dd6f291fe46e5bb3985e64aefa14cb11aaa97bcf499ff3763a299b9477ce23796105073405538b0d93022c1366835953c7bae0c050a303f60a155e92174b2219664ddd03c820abfb186d6a6cbc0c2c78ded43cdf6819b52336250fb08436e5b85b9ea28f562fee39b72feb9799d60a0edcd4127bce06039215b9225693592f6efa418aa84624d62f732f37e20367fcb89a0aaf1d877187b328e09d5789b3a8818773bddf40744aaf9095b38b025fbe4aa93195d4f837054a53e1644e446decd2c52e730a7649dd6355682659ef30b3c95655180ef6967df412358ad067a89bb67f8489699372b0eb84ba5e3dd833a5f4344d88fd6c9b67e8188e2676ac3915a81c3286b75128e05a3266f5d633165b32f3ef82f6105bbef036aa1964f6750889c61108583733276ce1725aa2f30ab2b6012594499c62594fda3689b90d07ce97d8ed196873cbbdefd4807254caac3c0d5f21fc504b0928f48858404e3b0e45c3625cd2ea32f12a4e1167a4d6a5123e69c62c3422b17a32f3da3b0a7bdb57a3771d97958e87131363c1867c8e9266a847eb931b5a42ec819262fdb44971faf702e2184c8999a78828de7b15804cbc45b76e1cfd46da13bbec5f45144feb45a2099a3aa7ae618512307c152f7eb7b32c752e19c3ea3f258f631ce4bdefbe66e7d9c8d5257680a43452129edd43c66bba5415dd1ec28b632151dba31a7145b63055005f2f66638d512b92cf2b4b2a63a4b7a346159549af23370647570d98307dab0900ef24b98f3b6f6ffc0f8962873344fd967432367cc553a01c23256a15ffe069a1212e4b982a40fb6945b5537cc86034c7aaa9c7703d2bc598aba978bba44dbcf72454cd15a958eb2d6a4948ec6da014b79f5a40a94057b27b060bf20d21fdd1bbe86c61d33d3a21585431919e56694bb8556ad9eb52da98942c158b87701348ebda8bac0bb7fb76bdf68941f2c73ecba007cc631a58ee48f402065da7920c4919a24ac225d5f83cb020d40f48bd52cdce8618eaeeee8b04e749bc9eca89247600f1fac58c8789f9f951f29255f8ff2f25c3903ac9e9d294713aa2e9aafd184b1c73d4434828db1187ca25d0c6c6120ca222a4a103e3a28d7dc67881a91a93cf28740543503278415c0edc919b0b500896a3f29254ce740ba382599479d4369fc90a4424a6034e5948303c1bbbfebd580087098d1598fa3f82f042d9b0d5a5c19431fae2a380285697240a7b3574b568714a8be79cb08f65839a2cbfbfea5bc043d1ab4bf245969ac778206ee73864c17b08690d7431d4a0171546a96bb84e044b6a24d8b375d27857dd718fff3bd676e162f4ad7e59aadd7e97f6075b3c0fd5b8570e5794424a37dc540bad98780918a859c8743489be4c295fea7a5400bdf0f2a069d097caa159fefe6a4fb2dc4849ae0d30b44d66954972a1c4620daf81f9ff4951a926443883122395f6d8442fa43d8269d02372009d3144a5266be86d4f7512c2c9d8c691ad591a54460a5ab48e6c27ede120e48ad035f4e116ad91e2961021e42af48a8850999830c324e64f77852c1a30436a0a315975d7f4e8ff9f711da2292638ba887d777ed9a9028a66abb5201d33d44d82ca4e1e2e02c1b49f98484a09893717c9a4095f917c99c65e70b97f5d17bc043bdc8a8d41e4ae1373c0146a4c46023d26583875cb40dc2438f14226f78ec81441c25710b4b009f6446a7843b650d7787c59e4df09043886f573526a76689e62eadc3d9f6980edea8b964785c4a833cb7db549bb4ca68823cc0e936328eed2a5caa2cf81f816843de16b7666c350e0a4bbb47f8a33e8bc6f6b9e80efc7ef2971c319727f3352601c5bbdc617f0dfab7bc80ec3ffffd9f77a0e50e5644a67197d801b7ddd139b4c62b140b71e324bce9bdfdd1df31f122152c7e84ffe167d72968b7f84f44a88bd2470646e20440561d17627bc0d48e6cbb0e7ff8dbd6cf05efb0784e4f6b127c8067a768a00890f69610dd0952eb1f08ea814faac50c83d1e35941069184ea5ca42ba52127670f4e5b1d30aa9aa2a8a1503252169023c028b3cb44738b4861b9ad12686096c7b1c4420a3b4080b740d366e0c3274f462e251346dda8b5744eef1982b3e17d33fc2bd10ee05622f47e3545484f221ac280df407c75133d9d090bfa05cabd28690ff30360bef9485bbf41d67218c7b0dc5c2826b43cd45626cfc5747b7408c4e8e35da69db471da01d34878165fad93d7c49c65e12bd914c0b6ab8bae55521252278400892a7658efd31ff83d70b2f7dedddbeb2e2fa968f3876188f62bdb0ef16841c457ab658d0a18f9e8a79b730db149a694a8e686e3cc8fd257128d20099fc2ed186ba885ac5ab7ed79ad35c4e84f4da4999249a1b0a96627007d272a25e56e313a87f707ae1ad070b7f57d7d82d3800572b272dbb04583cb9fb71f26427b667b319b1bc68add90b3abee868cdb639da3a552c13eac8f9c0a1d9e04032b0555a2065d9de4af72676c1df57504747ba0010f0304a146e25ad02b6a5cce91bcb5baa9d62242d8028520e45c50e90aaf5b875f42313211bd6e714d83bce1f8d5cbc266192207a0b209286d8358ee4425659086710267112ec2851898383ff08bd9b8481eea0cd305f60bddecd3ed878a9059045b4c29edcb45c98dc35aad7628e2e8c159db2e8b3e7facd91329df451dca00c79ec80cf5cb8276bfb0b475899149c7cf814ac002565ea7e6bcea163a9612ec431c00a786c44eebcfe1dafbe23a80037cb5919ce176ef7be57df5af1cfd284c7835344058b5bc3a1e2464f370a1ac3b07b6d12faad1777d6d8aa94ef5341fc538b61a00db497de0c700b8a5019a950f4a76739a29602b85dec7d9814773bebd82f619a80f241b7f2ded768a1c68383ffc8f5b9c38769114c76034a023b9e5720942a520763404f93532dc2259725b45e847b2c5b6acd58699944db8a914d0125bc3d4f8afecf6f431e3bc5c80b9d9b14ce595004d0352df4acac5d0c4e9309d31e90a2d812f6f9b828d96c11d9b2c9de7b4b295392018609d40993092d7cee32da03f7739b81e519e2e75e41111360d92f2321c032b7088eb802f0b93b20c415007c6e3284800163e9b0851a537658c5b028403f6928354ea809a24109342ce1867663841be0b8218edfc103c1dc00860d540c3583204d13248dd026bc29d1946238a14e2e00b9b905ec92769d1d326003cb7623cb5ac3a144a2819b684191cd48e714f1b50dec7fa473920440cc2e0400c43726276b1b4c0be2ed642dcb5add366eab1b2744871d0ab0c6bfb0b002901a1a6e6eb8e1870a3e4e3dbe7390c07030d81f1524c8d6712ed454e2b1cd1ebc01004fe16448fd26b213dcd58aeb0d3b0749e90404086d31e413b2656edf84db6c1be53ada35e136a2173285f8bc223189f954760e12da394524691a57a269fc979033fe485a0af6229a0aecef51a41c2dc67d42761553c0fe493a070a4b481c2794e81c264d2346ee2ba480256d7e13dd37216bdd0240bf306105679ca182990233cc300305679c71c619679c71c6192b5041ad566b5cb7ba551fe40d7c90382dfc8b0f2fcca316d2d727202cd80fdf3f9483fdbd1889f2e760a801df9006269d9e058913003903d334fe3460ff3983fdfb8244befbbbd2f9c2c20a407ea8e0e3d4c3c554e2b19146618b08b45f68f36aed366eab74baf81753f1c5f7e1e229ce7eb781915d1d7c12266f3f33e52ac9c277b38ed6d5ba20d4946975aef0e7f47ad844756ca2644049c649eb158d25a37053470d1d2839fe8d531be11a2b354e34c0ac8078aa63e14cb170bbbbbbbb7bb270a5aa9ba9a64d197f52f8f9845133e52b0f855128549299f258cbe713eed54c392d7739cca75546e1dcab5ee17c8373c7666ac662b4999a3fc4dcd1683d682e34936ba6a8e94b62ee4acf63ba5698b199a21d103177e10f3187a7f721e6479dc48caae93163372e733553b53389b92b8939e421d2668a76dda869d863be3a9d44a2c7c0d812b0573bb03ff1d50a85b3af56ed2bfbd9d07b627d4eac4fc5d54c55d79489cd54e57e35572bfcc542312f76056d4a8d4ad076c56b75cd548dcd5a5d31d78ccd549da3c66aacc6a86ba6ea1c7509d455eda0aeed49a5551a37b71fd31673c55aeb34b7a9b94dff759aa3e41b68cc62780d18962af8719424411321f6979721dd5d360eda947abf6dd46da497ea9e360b023ac5c214d08dec640885ec48cdcd94f1aee2321eab6e2d47395892a9ced3e69044a9eea9989580f9b6dbad664909b7cfcdea2a51b2b4d417dd254afa0e1c3e930ef3e8d7e8b6bcbd1583dff2a3a72d6f9fb6fc2894b8e562e97e745bd66db88c3fe92e6112e2a6810c248d3f8feb448743b1d75881ecd74cf97b148f6eafd1b250ecd8e869cbd31f814366dbcffb60fea313b4210bc4b6dcfaf63a265d2cab4e05e5e58e3bee98c2a8ea3e84f2527bdbf2f455b0a351cb05c121a3d1078aa092c6583ad1a1104a51057d6879fb9fbd2d2f71f822704828de842d61cb833b48dcf222908716d1b670747ab7d416e989446fef8641fa22d0d22d571c1273bf81bdabb0bae536127ba51e9d74c27030dc1528baa023cd06f69740400d070dcd06cc8d181cd8fbeb6927db1cc180fa07244dd224cdebf03abc0e34949068a05133eda49ff712c651ee795e13b8bf13e24c68779b776a2cab57893e7ff8190615a48606dba16c833d4cdcd2b5743f7ac97d4b785bec7fd3da9f9ce55e4eda178be839fb1df8ddab6045f95f4836e803f7e07fa0070ef9be29411e38d18ab4e574112871d7896ef33028b709a152220f7c4fcc4c28ea3b10863e3f8cf72ddf79600bf8a21b452412b378ff59efbf0e1c0282fe813c7862e9ebecd779defd874185be2d14129950ec894e504c1dd57122c515a68a9d5f07a44cca5cca3a042e80ad300d962e604114646c8b2a9806cb98162b4f45c9c264e2d92f95f41d77dc1184ab9827306b6d59b76eecc4c474ab200f2dce2a3e0913f23619b2b11f03430d3760d934d4061e9f733a19489f69b02f8c72c2a6f19c52d3c817d10904d20f13009747a037745d0311b03f0f2a6d875dea930f2023cb06f60fc31960ff96521ad86f706c2f8d44c922607fce0decef491c60ff90a4010e36d8ff51019038303c4c0dd8bf1ffb4f22120dec89997e46d1e71ec53d6dcf1b8d7c6414cea88cc29e51291929f3a4b73ab1847152876cf049186fe4e34a19b4cb99929132fe3174364834b03f6a6e5ba558cae8932cdc7f9f43ec7d4bd5e7f69bd6bbfd8994ce6fdae3388ede1313e4a1fb8c50efe9a43f76ec7f7fc48adf1ff15e64822498d0b013951395ffa7a4efc0378af7df8df2bd9c32219108422532083399b886d4099e2a2f9f709ddbad600f33e09ac50937009d78b35ea5d5ab734e0a8a3ad109c7b53e476b1bdfd7d2ed3e27a5b56edde19c251bc21e1adbe92a596f22a9532ac49d86600f8d4724120f1e5e320d394d3ff5c9b36684938c39c64cc14481194ec6e6a37a3c423c3e1e3c78f0b0200f1e3c443c441e481cafa9281c37e9686447281d352badb356d08759b7e66a27bbaef33a5a6b0d0da2325a7dd2ba711de765cf0e04e46e000185660afc5c43ab05218179f0d64c19d40d37371508e8a353d664109229e3b2810ca1cd0101593ae7ac6e752b79186a209cb30681401107536db8cf416a54d84242a68cfcb633856476a29cc190cc94bb2165fce1a0cd817d09405ee77533ecdb7c0348030e5437ee7350f64918253958bad52aa70c938ae96fdb1b353c9df0cd0d5dd23dd45a31159da8b38e4fc2642ad1906a641b6a6298271f61bbcf49bda6c65d06ce86bb11f2425ff771de68ca6019039636e48b6591ec49a04dcca319ce1ec39266b7cee93e8b94eba1d978704c398e03ab53efa1a18e7beb0c3031f5c01edc9312874e6badbd304580bc196da32daa9ba8c84cd437e6438e6ebc9a29e375d0193a0e421f26eee648b6e3396b66ca652065fcd97003bbc381dd3ff45888c27a3c619261c6749961c6375d61bf74329c0c0e708003730c32ac7c12267f33ecffb98cff1b61fbaca36b355008930e9c3b3a62ae567383abcd39b3a2c63f4a5b9a20ec0f9b06303ec4c5c740283f7f8d169f6cce9e419c1c2ed322379b41681dd5df5d09690eea801e9871b329d33f419d0f73332084b2ff9361d982db315fc264910feeffa64ce26c73c66e732bae064edfa52a24c31d8a4d997ecf40283f8762b85d94928a7c38f7217c122677cd5a29bb654b79e94feb36f2e573b47e2d0c1a32c39cafa605a2386a8ea06eb59f4819ff2bba29d89b0af61f3d0afd818f49b6b87e5f252ced2966275e68f39efbcfbba7f0276c5ca2ddd30f7d62e8b71b657b2b5eb589596aa8bba1904b6fc8fc8a4b6eb384c5f5b9ef68f736a9a32a65e374f253cbac12357b7aa52dde697c686034b0fc5c1b8693a83ec5eab57abbe7b089d3677dc1f7e5fb32a9aeaf8c355d61156847983b90c755b4c584307798c3fe1e6625244ecd02c803f94ff284520633a00377df3d28f321b27636657cab4d99092465b631bbf37409f93c7f72f83c5f13863bcf5867af79900ddd79fa74f6170d5df3b98368bebbb3b772c302d02d6ba059af5ae8dcacfb9dfba7ebeeeeee9bd0a451b2b43cfddcfdf86d3653a121e2569ba9104d87ad3680ad86fdb995db705324cadf9f9322fdbf71a6b82e3c0911f3e97310f30b40cc281c44aebb41cc5d9823e6f0f43688f951376246a5c45cd3ada68c6ba6bace46cc5d588398c3130d623efd0c627e940c6246c520763562ee421a31872718c47cfa19313f2a8898512f884153c6bd9a1a948c98518f12f39f4e6100c41c0240ec60c4dc852d88393c5d517c113dda64cd54a8e5d16a3c9a477b8f76f26821cdc3d33f0a95e90a83ff956eab42b5907f880eb759123ac21c32e77bff10d04c59174de2cc10502944eb71433fef86b7d0f77b212fb4d52f0e3882e84807ee2fd55c425f1c70b84c1cba52ceb85c891d7b72e0fe2f0e3870370b5faa85442c2c881c27dadee56ee2ac6de94a55883653b350cd1fbc56bc2a4bcb6fe090910487b4bc101f35a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab83595717345376e6fd745d189e4eff285410e8fd80de0fe8fd80de0fe8fd801e6da664a855538342fd9f4e61e8d1ba2e0c4fa77f142ad4ca41387693d52f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe463783ac89650cf7bb7fcb75dc37cb1806bfcb4198c33c5918f7cd21d72272a14805200fde70859b392fe80aabf003880a131cf243bc095510e23f6e87c34b5510b1d06fea0314edcd3308db97ac039a33dcac5af8206bca842d163ff79fe87ed8c621719c082d1c3247f4fddf6ba6ac6bcaf4f7db99c4317d93fec4e35d7a7cf70b778b3c6e8f37dd0d9f7a7c3fe95dfebb097b907aec20710fd174eb89d48675b575992ec53dee1b73e6c203c874278f2be5cc89244a479d1cbbb49183c986e9363e5d897bb8f010b1944497d37511a59c315d89453784bfdfd266aaf42d52196e0f83ad998a92c5f42397f707abb84d8fe7f1fea018a2f707a9c81cd14fd694718943faebf2a4bb611e22334297efeff123971ee24de8d2c3a54b2e95478fd2a4d8e5d29fa61ea27414255dc7a32b718fbb8449c883268f785c895d4aa3aba467c426114b49fc364e341a8952ce90ae1479226e7618648560cb5f1412751c4b7437ec289035531e861f6825cc1dde2af8d9d16d79d1a55885fef0bfaeebac4824fef60dea58f0766f4393856b7010aedc1233285bbc5d4adfa9d8338354591a8ce969275e4f3b69e96927cee130826e5e8195e133c31246c614b007499cc6fdb5867d0ab85f86defb229ef7df7fe214a1f73eefad6d204f9485bad6413dc3fd5fd34262c7a68c8faf5c3ffd6a8db8bf1bb2440910df87be48e82508c40f20426fdf8a537c1f127ff887de894aaa7e14b10fbe5449504911508ce17e1ea9b22268e4fb1f4566b8bf8913150df7f7a82468e4878b4564b83f04842578a4c9e72fdcdf899ed8b04c5f35d6dd1f4078df7df7c2fd9ef71e9027eb15cef45557d567c4955557b299ea3ef49902d14efc0144f7a10f8953501aee972aa9fada76438acc64b89bf450216419a51c2a4fa4a2870a21cba8f29ec280aaccf3be135b4074ef8999be785af5143665bac519ce0566e0828dfd82010e66e033f6d31fb7912fe4e00940f81955db4b9fddfd1e3453245918728caafe39ce553f7df573415bd0fc79c1666c46abe1ec3208670fca33888e55cc14888a53cc34865be562a6b05ac3b2859ecd09e7768e4fc2e4ce67fe6c02a5a54916203a092598c1a8a2e27f00915303335a40c51e2a9e7e4e0dcc68c11d3de37ce3085e8caa4d14f2738dd0d6ea799993e1b0ebc66e744e267146b89f6b437240929bb94de37e8ee636deb22f861b85a22d2d2c6d08bf50ad35c4fda8df8486072e186d08ef090761a62e166579157f15dae8ae02d8bf65aa1ba58c7fa9ff03d8bf832205fb4dc8c9f0f658e8ef3065a8d88d53c645230827fde447bf6eccddd88d35e4893608ebe71b8f03773cd50ed789aa414fbca1ae980d61ff573f53171b61bea92fc46fa62cecbea8dce11b8428e9998a360843a15beabaaee35a765d0b4106462dc6f96479a97a4a184f46556bc0084a58a9be10194b0052c920b04410537df64a172ed50d9c5065a6fa446d38a18e18aa45866e10870e669c05a2c550107b6db44b0304b56e48d30fd41bbab96b62869e5e110ad260a99ad0ef9955d4005265e1de89eafb24f87d5fefbfeb43bf27e6be4266df9a77a21232fb26a1a4efb843621f6af05432b113144f31378199b404439e179a3498a1afefddff2f74e98fa3660d42ee337571ff01b799a21394bae88f121d84b98e09c55c87379008c78972f638021ca33763023468e117a2c2042934558f0060aa92d7e09d022b41322a367128556ac052f5d800d5587bf3a30b23b4543d3d5e2afa4e544d6c7290013a5aaa263d9b0f6ed05249afa1c79b8346c374116db9c53105328054f3f696454b956383515663af1039e32f6de0a3a2a213d5a441986f442d294793a25048f4552ce58c2aa70666c0543f8cd0df7e139be01005a6a2a213d5379ab79bc8275c6008a3aa67cba2758a6126133769294df0014cd5a4a774064b25bd869e6e0823ca04c4650d1ac000267bc4a0c50d603f74bc0d1d7811a4f20ba4c1054d25553208020b33992d6b508217d4548dc50850e0a3923650636ca93a8bd9173eaa6f85e92d57a8a2ecc4065a90a0a64213ff4941133830aa7a423c60a9b2fce841ca81fba51cb8c507d272ce2b714f8bacc994d131d20c81a5a262961f3cf4d777d284448496aa490f0d0f5c30aae8f7885bb05454eca99142c62893400420c854df0b5923cc37d89bb410e547d5c3d154d26b6841b250338327bc54f3eb1611d862e5d71292d2eb56f06641e4728d15b0004835afe3ce07a68ec6927e8ef3f92f2132316d9a7e223fa4ecee298dbf167f50fed7a2e3790b0f147f54369d2239a57783f1f9830eceabe34d9008104c79a0f8abb2ebc49f74e9dd55947b309533404a8e9ad8c9ec0efa3e1b42d18ea4a36c4bb11bc9148f410186b72aa69841e5074f60c1ac0e2ac6b80118480083093c5a10040c31c000418b0a5ef842f645105eee387c81450cbe607925b081034460411c41256002076cb0860ea8088e1895a0c50cd47823ca1d2aaf811761c4c00b31381274f1460cba8803868322e00f4b180edea05f10be1347b9ce76212db9d05377c238d83f34c34b178019a7c939a4f0e42271589033408200e04f27aa82762fe46305d16798cf2f849f65b00107a9068fcf9206a5cf12072e9fa51ba6cff2072a7c9672f4f82c8f70fa2c9960878fcf520a2f9f3b0a90cf2d6585cfcdc57f6e2a2c7c6e2b01b674377ce44ad5476de956fc555bba147f9b3d72a1bcdc71e43d8dd29dd8616e93a708707fe936764919ff169c472e39f2804c4d285f1eb938d9792191fdd295788e3335452065fae719b8670bce73f49133fd3c774e995c348d172c979c6179a3b5d65a6b398ee3388eabb5d65aabc96432994ca652a9542a954a2e2e2e2e2e2e2e5f8b614b7709ad5205fbb7159048e9bfb682010cb8bc3232604b377b2b9048632f8aec2bb4aff495e9dd57fa8a273af2e34c1d119de48da42f89de48f246923792beb3331e9ecf3c76c663673c76c663673c3ff3b7f565ede71a9873218c0b61dc73218c562badd22aadd22aadb6bace445b26da32d19689b666a5d2ac342bcd4ab3d26ce65d7872f939bafc1c5d3ed790782c27674c52ce94dee5e6ce45ece44c7fede72ecfcd0e94a7cffca427eaba2018d074cd9ff99aadf9fa71b55e73357d26cb54299dace9335793e534af795035994c62f6990779cd6955e4823ce63207aab5567777cedd3dcff3dcdd5b2f5fb98fb37c7496fbf88a63d16a41b3a01a6d16149301c11aa8653118eedf80dad53ffdb2266e7bfdb46b7bf5aa7d9a65dfc4f15831f7d8acf6e1c4dc2bdc7f6463d16a41d6c4434506d5a41ca941337524d757aeaf5267e2f9a6729b75ef910a3453fde4c88ff5654d549ee7c9773da27093fe881adc25313fe9bb0a49cc373c623e513999c41c76a924e6aeb649046921cff7efdcdc98e7bfd0efb4ca1b8b10e610b6f3fe211a12a701ef1fbaa07312f0fea11a6ef3c3fb8740331525cb1041bc7f389ba92850fa0e551606bc159d0a089adb20808e9adb1879ff3036534228600161cf1127e038535d05080367a251d412c144b396b1a5355350bc7f0b6ca6a278ff96d94c49f1fee1984f19956bf2cd119f652c4b59964059d2b2ac6519947b95e473fb342bb72bf74fee57ee586e596ea0dcb4aee50ecabecaee939d95dd95fda7c9677f4df1d963d965d981b2d3b2d7b207e5b9cad3274f569e2e0a7c9e3f2f296e17c5eda0b85c10062e07c4bd38d6b6016171b72beec6b2e2d6a02aa2dc1abbb5e77614682bdd4573d153daa7b7e85557a0a14cd1448585c420c30c43741840049448222391a4b5e82c2c40c593f1882a4da5592de51ed9f9dea1d681c009ea6c3694e30389340e77aefd4f76b2db3e9192be43f49d4fc7caf2b9fbc0e7d0039f4f1df8fcb8c481cf285c727daec1a5308862f9dc61ba010dd0f072a69cf81a5eced4136ff3dc8b03da823816199f434c2ae3738749a4313e777834830c31bc14f212bf54d5d0c0f0db4f92f7df5e15a8065dd9b6d6e71077063807cc1d979733b5c4cf7c90175c9041bd2cc04b03bc3cc03b1921edbad03eb6343bf2418a44f917f91026714c5e671173177e40cce1c903623e7d07c4fc280e8819358a61d04ccd58631183f0a8db8098bbd68038761962ee9a0c3187750c317723d7e88a98bb390b5bb3ce8098bb9503c4d68e98e4722ad3c5d2648a2fbcf8cf6114503c0cccfbcf581826b99bca74b11c6958c75a68e1fd473e5d3ce1c4fb843e13f89724b7b29ed2fc4752fc4fee13faaaf3f11f03e0935c0a650516de59e0e257f8dc3191c08b4b5a49eeacc0535af599a9a6d2535ec9e7b0897f7939534cbcf823294046ae991ab9925c57992e969632c5399212811f4bbc7f91f679ff17299325b9adaaa2820fff5ef9f81cfa8871753f2fadff386bba58daca8fa4f8539aff683553bdc523f119d583d2f28b2f672a897ff144588e78211ec2603c05debf6533d5e4fd1b68a6a6787f1f67aac3e8797ff79929277fe4fd1d3653cdfa1ebf9fbcbf03cd5453f1de54de7fae66aaa1bcfff499a98ed255bcf705de7fd266aaad78ff599ba9aec0fbcfa099ead5fbd3d64cb518df57cc5463f12ee5bdabbcb705dedfd666aab3787f1b3453adc5fb7be34c1df1de56dedff399a9c6c0fb7b2c0cdc1ab3722baccaad4162dc8d7581bb0151b91c8b7539a0302e1704c6ed5e5fdc2ec88bdb0175713b1617977b4db95b90cfdd5e5bdc0aa4c59553e600df59dcb6c06d29b7b1b872ca10e0fb8a2ba70c0fdfab2ba7cc0edf15b872ca10f9b6e2ca29a3f35dc5ed28b7a1dca6e2f693dbe33d729ddc9e3bc56d722970a5b8515c28ee13d7893b81cbe44ae02eb94a6e139789bbc48dc055e226712f12574e1954922b5547dcfa9a326eba251e1ee93f6a4d771476ff719f27aa2dbfb3733dbc805b7294e91570b318f1435cd307010123fefbe13a86c0edda1af13b0f81ff28380402e24d6884112fc421408df8a473a29dcb61214cffc30fe24db8f3c3cedc31fdb7d99dbbe18fb33bb7e2afb341dc076029e285b8dd0f97620584ab4e55c42fe02e31bd929e112fe0bf226e94236fc5ab8e88597676de01ff80ff3870c803c49b70e7253864e785f8036ee3216e63075cd373e00e120f219e1c65dab9132be0664122c48d92850824ffa920322344f23b4f0411e24d88e4253804c90b71221aefdcce51262462e828d3ff200e71b11cf906dc9633a667c07d39637a216e37654cbf000588411c114f53c6f409b8b269b263d3ef5c07e246c9b2f340fcb7734f6d776e388e23fedceedc6e1c4723bff308408078131a4180919d8b7294c98858e3281315ed98deeedcc63f98fe939cddf9213ba29433a6e7b93b2f64eedcc6456e9ed80771491fe0660964809ba5ac0037cb580f37cb2002dc2c6b3cdc2c693bdcdc2f2237f78fcecded1a727307e97073d7067073d35437fb0bdfec3f426e76570e373b90006e76190e377bec869b272be7e6e98373f35cd970f374dddc3c7f5237cf97cdcd4eabe166af650f9ae1665fc970b3fbc470b3b36a6eee18cdcd2d83e1e6069ab9b957416eee176e6e960b37a364ea2bdfc4dc254b4200dc251d4cc3b07f0b77890f2c52da927e879d300b735c12e23cef9211ce73b6c40756c1ce962cf170f6c625a18bc9273b506eda28d757cd9d080604e7f06694b7b89be52c770b36e25c5fd8bfbe664aaa9420c1498c60a26cc1494bcf8d13ef69279c11f07b23042a3953f235eb6861ed47d40a48560343ddcc15aa3bd18d0861fbcfdba96e3895bbb2ac6daada74d5da8bbe7aac2c958c6d3255df8d08610eb1ad37cf1556a9bac99aade99a3f2f58cce572b95c2ed7d8ad429f13eb5b28d74f4d10eae7cd8d3c3daae666b25c37cecdd5f479c16232a0266e4e8faab999b96ee6a672fdbc603119108bc562b1582c97cbe572c964ade62e97acd1caf2168bc562b1582c97cbe572b95c3556bbaafc172c26039ad1582c168bc562f5ac67b3176beb429f13eb5b2857cd8f8ac562b1582c568f2e63713541a8dad34eb310a87399cb5c26632e55f2f4a89a1b51953087785ea9fa64279a3827f89a106619dba1009edadebfdd7dfb8f525ab7219c9c711897f107ed08730df6fe999de0fec6f4d215ee9d9a9a1937367563830d760707c7e68044e40d3937dce0b36fa0cd61043a5e68341a8d46a3f1fc0c3884e7bb21065b13830c32cc3083a5a1061a6aa8c167d750473ead56abd56ab56c6c0d36a9d4cd8db501c7061c1c9f8dd3896cadb5d69a2a43ad41ed6c74db899121c7e2e4dc70030e385801e420801c72f0d93974a252ad74a4328ea38da945721082552a3b001d06a0830ed35b874ed4d65a6ba9d561880e112276071e76e08187e9cd430f2d9726f17025ae9a62ac4cc927ad1b6966adb5d65a8ee3388ee36aadb5d66a32994c2693a9542a954aa5120ee010d2e70387ad105007ab54961bc000ac0ef4b95bc37f72880e4386f8ec211cec0c2c7f8a40a6664c76738ac4d979f9930b99337af9d30b69e382fc99acd9029ad16a41e35cb55aad56abd59ab3d96c369bcdd84cd5d68c713a7608a8a363632042c4c6b0c30e96871808c0030108e0b309d0899ae3388e93e1fd3919381a463e328c2edc196552319f6c2395711c77469406b1b6585b0da61e2c01409d1e2c0c05288085c10006b00780e1d6fc277d38800f3ef86c1f3a91ad6470b5c5d5d6a88b914f0c231f3adad99a7233b40f3648911d5b04d4d9b1417878ec0f418cfc60c4c8f436d2dddd5bc3b08de338467114154fb891ca388e96c5d55823560601405804803a405819993b33bd83e8446dadb596da2d08e5482e54684a41d818052cc0c608218465404c0318d080064cef0674225b2a954aa5122d6d32148b2b565456ab55935cb88d67a691803a44d8979ba7031c605f1e10e501b608d47fd288228c30c2671b417b8ba15226655256c408cf4eebca18656cad56abd56ab54ea7d309880a3eb8d3e934e1903842e89c6a8a418925226ca922c01a017510602b1040d89a8023315fef0cffc9208e041184cf0ea226c0ba941da12308230ab0b20eecff2dc0facd12c84891b99a4fb07cb743a66aabdd0d89d30399b3f3f2fd0d6983f2a019cdf5f382c564b456abd56ab55ab5e5535b75015601a0ce022c8d1042581a0630c036806688060c3184cf1ea213d95a6bad35ef5f6baa0ca71ad4ce46b79d1819449f910f9dc184c40e01ea20b1418820c206718003ec03825c18fe93453ca088227c76119da834eaa28e7ceac8e7c789e62ea1d5256667a3d62586743ab16a0cb608eb821110b046803a10b02e1c71844dc2bd0b4824410289e98d84b5d65a4b6d10ea2ea8252a15861212769493b019d449c28e9488c06889082cb1c4f45ea213d952a9542ac59468cc388e63142a9ed491ca388e4d72e1288b67a69bb04c803a4dd8979ba90ab0bf1225f6e52e5103fb7f4bac045e98488009139fcd24a6a909068375bba069d0e081b160309825551af3d2ea55af7ad516682cfa8ad5aa75658c32625aad56abd56a4938384b849c43d68460950e48e48c6c128944e2e1e1e1e1e1e1b1d65a6b2dc7711cc771b5d65a6b35994c2693c93469ddb896c1ada405bb7cdf78f586ec4f997e8b0a492412894422f1f0f0f0f0f0f0586badb596e3388ee3b85a6badb51691b2d3e9743a9d3e25a6232c04409d2392244122c7f09f4c22279184cf4e0289ce9d4427d14ab4121d818e402fd14c50269898de4c30e1895a26032cdfd190a9918f6f7ec5c7f032a4cd08e63fb4104669b491cf4c9d4e231f6e091b015067093bc3041376a68926ac9299254a962cf1d94b3a51e9070c27184e3545607029638c2b2d2aad56ab46cc2d35a7132b069304ec12504702d605264cac0b13988075c2851be43ff984134f3ce1b39fe844fde3743a9d7e90b299227336e598429870948a50a1293d6151504461a10075a2b0282928806a4281264da6779352a9542a95624a2ec498482f2edc388e4d72e1e182f41451766eae3e324f5e5e625e603098bba069d080b160309825c5702fecf8e8a38f72268a53e14f381fa98c740e6a044a87db986854a8f49576411185144d7a6c9f66ad5ab5d65a6b5dad56ab954baf7a9cb01300759cb0dc134f580e8a2840228d5f9ebb34ff4929a290420a9f2d4527327150d852146f607f29a4a000056ce9369103fb7f4d6ce94ee16af4d09e9ee9ddd3e3891ce62c9f82e5fb15327552c99e43e2d097df469039dbcb6f3aa4cd8eaf6a412f584c06340b61a7992a723a7153d826a0ce14f6859e1efb821327b6c717eecc931efb493f79d2899ae3388e0bf2fe5c100e06dcab202e3b1b8d31d1ede561108b5089a131a1a8a0781e755db082fb817b5c842b2265e5f2c28a3371eff23206bdf44a4c8b4aabd56a971712b732ad562c6ea6db0a50a72bf0c66a15d2ae08e5c08ec5e8ca48692c5a4a4b9112136342c5cc66732667e4f02904973be1e066acd96c6639120f1517acb5d65a3bb3a339ce718e3c7746995470773e318db3c4c3d566a3d9f07ae6f54f8ba0cd6812740cb7ec45691cc7711cc78de3388ee3d8b08635ac61ab7e02ea3415d604058a3545e92a486fba2f58d155b4156d85159da84d51aa9851b0c28a0a5480ae5634ca6ad2ae987260411b8bc6028bc6c213cdd9acd990a922b44520715e5e7e9b2173625e7e9340dad096bd60415df85d189e4eff28544daf562b2933f50ad4e92bec080b2cec488a14db16e07e7465b2680b74169d45169dc89a4c269309f5fe2694c905891b860a613c34e6c5a55f62482eac562b96cb0b59803adbcdb58d2d369f9e0212e91d2e7a4a73d15c7021c5b432ad569d46c3787e09859968a6e7b9942667e888b9d4082f97cee14263d16896c4bd4934c9b8b878dee6b9d0166d792d97b6e44c194ec7e0b9f48aa9d5c229e1f0740ee736f565ee8e68e3b0b32becccceae98c26a5acfd146689aa6c3513e4e997ed30a66adb5d6da71f4d1471f7df49102eab4056c6741e5bfcec2b616bd0548a4473ebd45fbb48f4f27b2ad05a56d51a3f8f84c99e2c38505b8a0b52e281d5ed0f6a2bdf0a2bdf04494d657b0fca622535da39038a4972f85cc7179f94da4cd4bb37aec959dcd66b3d96c35530db3ab553717a04ecccd360a5ec47cd160c4dced3fd96134181d4687e1b33b8c4e54eaee6e8ef60e94b13ea6f5555ff5f572ab0a2a0aea19af9725b9703b228c0acfc8faa475eb34ba61ef0d834119ebc7dc2574ec100693336a842e20dd100d1e18ccc2618560b2332947a08c8ec6388e9ee78d33e56848997619e0769937b6ae8ce1303943229148241289878787878787671cc7711c478739cc615c7461a3f0850df2028c2f6ce96670150618050c5bbad9b240228dad1c8e6a16a8636ff6aa60699635bdbd315da5adb4159fdd563a51e96d7dd536eaacbe51615505f595654dce81e51321b1c4e15ebe4ae6f0bc7c1da40d89ca4cc6a46c1cc771f4b161a586d9d955b8aed255b64abb4a57f14476266754d35a6a6db576b39683e2f2fe7674793bbe84a4170a89faad8b98af4c4dcbb53339e34fba96e75a21340d1c72e6a5dc23d71b254ee9fdbd271287e7fd3d2a3a877b7f2f8adb98fe45cc3263f6c6d3c788b93b0265743bc671f4341ce6b099723b9e3890bb21677ad034fd269f4d19afe1feea41241289442291c26055a1c2a272810b882146152bb4adb495e9dd56da8a27f2c6be801855aa9cac58c1000632d0a2ddead6f4ee56b73c9137ca197f89c3e13c63f9a66564aaa9bc2cf1bcfc909536f5592de5c88b0e9b32de0e2b5dc7472e94960e7f6e4b97c3df0ca268a8948cb74549ef149a19000000006317000030140c872341968759928b3d14800d62a2625852348d08e5990ca378ce18430c0000040000000084a4a6013e5748e3ef21ffa97d790fe7d0a098f4240bbfae98874ba1dbc54c8a14f19f38b0a30c2c0a70e989a52230d72402343d3e4738b7f34880abafce17772c538f596c0cd37df18a13d6c997863111efb931b034039eb8b424102e377214f12729520d7ab62816fe9132aca294f17f7fb5f28dd75bef59f4dc34e78f9687cce76f7b89aec73dbbd7e1b0cfff1932240058a910b3800062fc411403162000ac19221906425d1c1c4720225d88ee150dc6d528a004303f786c03c1b8faa8e378f131728c04ebf236d55f1f56b42c48a8f5770f4ec99f89a0bf683ce7059bace8ae792d867ab55a73ba9d39fc7cd6728b461f344f4f3c8270de7015effe02b27221971e604349cbbf9b8c439a3f24de04ae0ec166f6ee0d6cdfb6b6e9eb201808fe3dcab46ff8d63f37e2a4195441761715b4338e28a66749301f8aa03d11c775d530c4052372292ff08c759922f444cbfdb9f86144607c72f1839e9bb9752b0589d2d8d99a9c7a58efc9e39a66bcc9282f57d224234204c9e5ceb864434cc4aff9724aef263365ff9bba67833eeb0f117a73962e035ed6136f0cce5daa41148a23b15fe72e4584808516246767efa002c520caafa037a2538762877351246412c5ae6e12cac4df48e1b4a0defab66def68940a1caf4fc74069c89e48df0e198f28edec0d0f359338bd18758a3ea2bd8f8f5d7ba41945e800fefc49cdb53298b1168d8a690a50fa9c0ee99b05e13135043ada866e181eca345aa24a2d03431f4d4333661b5e36840075d079a097a8180fb723768373c00a8783b10c936ce99b98c9b7929753d2bbbf47ccd4c346be0a7b82ca900e307cb496d94f54e284898259f916775f33cad8dec37cc3051a028a4f996fedd97530ce68cff0f0f43f37909198d849d98acc486d5e8a319b6f2a5261aa541c81071f8a588f06294b608ab387c4c0889adebc9a25491b9d17c0ff5a95178fe92de6d0fc3b42f354a6b713d611394e2273620773c37ba713cc37167e1875ec426f597353f3b4207dbe81a499eaf06ad656fe64c37d86e94f1bd41c893b0369f51841e758466943add64760e4e76e33114cb7b8822a0303907602e43d1b4bd15fd4f212caa4626149cac88b5bef5615951f418465ba79fd73b902c6eaba1912bbf491bf2a688429dd729073726a6a1e72976ec7ab541184d744422f259cb0525391ad97a0936a456ef755291d7c707d197f729d4f701ae262efc4748b85485d1abab79d46ef129460840208984d0a4915716bc04a6ec9031c775bfa1373ae6f00986da8f6a4eee4e31d28b99200e1d4a9c1e49291207f946e30002170287ff8832b0351e59206955349852a3a9a325725f7bbfa04cf89c10101ed5060e8d424dc858d39c1e0e09826793802278e816ac57f87eb677f4a1bf61fa260424aebd28a31891285349e0c2e9b45b947a7e8d2514c3a5129efa8d381ba7d305209c7bf2fd4eac5bda72c3ee169d64b20a27b0aebcee1227e930d141a4f6f1f75db8bae6f1ba289235a644fb3954f44c56fe9dae9af5e15d940e4576c90a0a002f47a374e0eb53243213946afb5f8ca11e321634fc3a3a714c89304d09cd22b7ac97d1dbf2173729446be507bd7a4a7a374f1cb43ea512f1ef44acace9c8ed2d6b87848c9879fd4ba76e34b9c71ed4c5cd850d57e24e2191fb7ef5c89771ff8608a3eed0cb0239244e2cd843f47ba39d6746ca2310592ef4b956395140f1ddb92e69822c2f551ae787593ea304ec28e5209314e075558d5dd81bad91e8ed774785a9c0f882379b8fec3c5c3ec3bc7a4b99f239284a89fca287f8e6e109eddbcc40404d090bb48546ba50bb98d35e066b39fd387ec694fe1661f0402b9f0cb6f76e8ec2137fd092fb03c3d5f1878a84d8ca3b6e2cd2cecfb43fc8a0a14c0c3f1cddccb2360e5c047b1f719d7d601e67049cd6ec9468299912ef77dd01d9d49b35e8d05d6cb8e3bd48384d03c952ffb8449448e5344e66587c48ed164efa66872f656f6748e47542d0ccd3bba8728259b20b88e2af08be61ddc97ead64cb0a61fe0be161c8192eb95de1d57c60226fa39e32855391ca07d79b4dd517655fcc84bb080565f6593f89c10010a86e55436bab0d4c4f9c3e41b3ec869482898bdb31dd6270df79e8075d90c0385bf00901f2004e780190af15e80546c4fcfcd472f3b8e51b8c4c4b7ec9411ecb4a9ba0d97cd8d3cca443b60a59860074ecb00ec124ccd441d78051bedc4e791e4a510880d676d84274d3836fc322192a8d8d9b74bce6c14f4f1b45ddb73724e5cfea8b19b603928531cc89044c236516de5bc7fa9130df381af71fd337f691e5a55bb29536c73157ba8713e091ae546c2ce6de22acdc6427aabcc795931e39fd87a9a815ad5f6297c6f48d8e8598169290366ae92a0250f8aa1e258a00ee657cbe52d76bf60ce2a70d99ec97628eaa133c2a99d8f7031b00e00371f755848156766f6ecd135e76b122ce9ed20ffa175497368bb9337c4ce9dd4ea0edc0af6b4f1a2d8449f13e24ece237c8e1284648a9c051d62a70332872efa78549543d48f431745e2e0820691ab83d760317520f2833294dea175a9224bce408857fe36a5dcec6febb45a3a2be3605b31f4bbc7951b6c709e54150a8e19c6074eb91b7cd124f8fe73198f7e65c74f46fa71085946358c3458cb684fcce251d2ee32fcbb283c5f6afeb97b746309426b3a489c9d9e43259481985f825e84ae1eca1824214b2d42573a9253fb71ba81570e8ed7f337b27d8c1ce669cc111981f26424729491cbb58c228719f51c280e6fead8b5186722c542e1694bb1931eb61a5265afdad36d908d333093c908fbe90f68ac210820f66cb72976e5a1a358c4c2de4025d87bcbcaf4d7134498189b6a9dfa1c1ded44af272868e8b6dab4c37629cb168ab54b4c4d27ad676a71e562393f1177da15a180ade8e2a58569773300619105b7392c4e61be00902a5729e1dad2846dcd1806d224d9d496e6a3b9d5d2620d65d285a8e39b6557b3b618256b0be12fb7e3d6ac636c96cdae3348c0e1bd350bf7c28ffa2e35ebdb6635139dc17de2450a0945a0d5a0279158b968595f6a745172dc9836eba4da45e08a8dd15009215076fa68cdc4b8d435d31d36055346c83eb1b4e22fb28a3e124f451df2788de1f20e614c7888146f6b9578baf8b16cbd34aa77f1bfe807da1295c7ae596d7d37500aa91ec8c20ee49cb1ccccc0b0544cf2f2e10874b143da9684d4ad09b715e7284c8262e4829ca4942d956bdec2536f5ddb33ed7c39589e3fd89cdc2caaeac5c512821c5606c4e271fd27d9ddbe344fd9f219630b98272b6c8eeb613d6d14426755b441f627d1dfbe7f846e3af978fdede4c166ec4ffd9d1a32c519c75cd130f8609b68ab70c0bdcce1b992e2165b852770bc4cf669eaf245c0274a548fa0c7fbc6429ecc7de2913fbb35279be78af7655b26f4f2c91c7952404ea96b445c7c8ea4c6825ebd7e9ca4862f3fd7cc61830d6119af91106eae4102d98bfb25f99e3c380aa906ab04a22027c0c674512a588ab2f37b9106061c636e5a4e4607220cf5030380605fa9812a04cde1126f98fae36341e214c28669aea00f8add09c7c018b0f41b5390223a8009243f07c3c421c760756bf0081c48e95f72704d87ccd123c5fbb101231c33c64826762a05822886e2328c6f2e637d0f2aa1f4bb99ebb241539d9da87168260ff334dcccd17f9460ceacac3361539069c727aa8d823238ecd4ad39e0b8de69a245c82423a3ba85c869e4dfdd95ab1b5bb416a589e2f7803f0df89a5ea6e3228d7912b1d3572fa85fcd6ec064ad2a5ee97c5bba93c37bad6b64376199b4a7616f9e524fc38653c8aaa123a9ab123000dab54c8ef94e7c1a4bb0c00266f92037c51a979fb2b1384779202dcd8dae75b21099c1a714cc631f28eef97861a121bf65ccb07c2f55802196dce4aba386f5074496d5fcaa9094e5b45f161be1f33668dcf81cb882a5e090ec874a8d5f3935a03ea8d4808df4bd2befadb21cb86aed0c2e2ade27606925abfddaab89f2180b92b794aba653723d4bae937faf105aae2b71fa102b5927463859f3b5ce4a91a6165a82c5222b41a79d3a200fe133ab9d0d4b9330f29107a87b0fa8c27347b73f152cbbf7fb6703b8342d1b23e850ed8f8a229e382a5dbdee6bd21e0c8e63188bc78f78bf050d9b82bc3c362d308842fb48e6e7110373caf88446f986cbd032042b35bb272583710881dd0093fc9bbf1bf0be6cda1581bd71a4673552ea0d14d90e0df924cbacd0082b30103492cc23cc7933698d1b4c006aec8acb0639c9e28362f0e4d11a3cebbf3f81c045032f561768070d18a4f55d08a48a3c0028ad0b6c220fa7c72680d559ce06a6c8853e2dadbbc04b9c0689839df46b90b32d16b8f6538226067088b6f4bd34bd322499f7213e3d2f1f13ad0aa3897bd31516d061b86465402093ba30777931a6f3b6f84478d25343890ba3db924fc0437cab2363e2682c586d9b092d8563c4dcab0181347682ccb94b1f8a547c1a0b5eda264fc231b242a548b48f62ffeca6c08c13cca81e0772c8c11ce5a07353602e4af766d29713b3cc025bd68839448f972b9f38d6183d50be4e5b025ce32c3055c939049e59d06c722ccb762f4d3bf3e107c51e110e8b4b685bb1ca0213fc8908ca8fd880123153353be834ecaa2bec3c67300b971ac3e6aa8082a8c0194739ba3a0330106a81465deef72fcb5e2aeaf82e13f82fe02049ff0818141e507857ffae26996fb1f3894d01a3d4d6585fda6fc55ae7ef821c1c3c8831d6689438c398262bdda5d9118262f17cb18399ecb241b188399c3979f2f8c3f34657cd02460e1ac2a4087e745e3620539b7050bdb0b7ebacbe03e3f2fc582ceffd253323b624cab93adaa9b9e84035126f4ab51dc6a690e38f3c5f7121f43192a431a12539229f42a8a637957f0720e1c24d579164ad5cf47cfbf763ab9811fa7540c7a1a7ab1e5340352f5e376180a9ff81c5f3d8d6ec63ba5d5b7070875054612acd8a8e6f6fb2546712a7a7f6335946370745773fabd7e05186cd0c92471eab33179b6ece7e907aecae267504fa7cd6c2c8c34f99b9a8ccd46b2b61571ff948f293a65c37bdb883c3b9206f2ea99c11816bee6caae1850cc22668da559dd329d1a3ffab92a073b092a0dba6234197588b04dd1751d95d0791123717c8453b1789606316953375ac4db03a7e0ca1e4be3961547608002dfacb1fab203e0ea4cd2ba43962bc4bb1f22ce2a5d6a760eafaa90d1e41c0f2ee52744822ef50c99d3b20b881e0989a734633e004f80c16d247221f120e4eb5668fc4810a7ea761b6112d18c5267a53318be41898665e77615cd69545c9e50974e137a739cb5c39a7ad1bea82aa83ab812c6d3d4cc18e4048b75fbd8b43faec1150bab354dd9b5bac92af3eb6e39d5d6cec66875465c52e41e67ac084273715eb40fa555bc3d5db6b8d02d1c8f385d472ebce99e6784e3dc12da6ca753feef0cae55ddfc37bf5b3e60a8f236d54dd5e05e25285464ba94e9706a3c844a25f4b683ea04d78067d342ae481b7e9e2cb58e71dd3117adf73507a0f0ca6deec23b6de952e5655a4aad059c3791c483459eb2c4d98417a4cee7ca9e91eb6090ca445ebe92ef025105461975e44f4d14af58ad608fa10fbf88267a24d6c31204964a28fe07fffb96215a94413b1d2be13d2de296e3caf340d2b9ae5466c4049de8c4c0ca1db8c1c7132ded32cd006beee3e76bb0dae00f584ecb1b3cf135a62102f077b1ff144d58ec67ad4836d17a925add54901af7b54e703b6c6ea54d349b53c894c06f9f0ef6ff3480376d20715c62353c39d38a4c5e93ecbf3805808a3084c7f09bff54a86aed7ec13c0fa138aa9243b5e4201ca04700c3594245d9dbffcb6016d44493802998f16a8ac7fca140a21c55558b96bbc7056915498b5d106de2f73b111d7814d9d953ae8c29980422121e4020c7fa701e002b20af0d1af152c75f24bb18ec00b0c4807848934482b38024b9d6b051c43ec60fc6f6707ffd0026520f683c4624b5be60b5c50f9f31cc83ab105a35ba35f0233101c637b666816862551324b065d401f711467f39c2994df639735d8293498e3dc514e9cf145c1855c46c651108a11ac7c08c094d51e3a7c7cb9e141c45de328943461413c11e8d40619c81b8a98830051a1e1f7927c913a7a02039a64c51bd30ec20fc37ee28497003e0549803a9bee002924f13841891b43683cefbeaf1ae6004a3522995a0cd0cfe9a849b11ff1ff23fbfd53f5a3715f363a2f66891429c309ca917f6d729b022c59e3af8484c71d7000346052813dc72d2a538f18c82ab421fba255f2883a61ac59209f7815eff88bb0c92b4dfbae43164c160dbd33b25d4b939808cba8c42470b989187b12e4bbd1d4006edac9482ef39a2086404733870d124dfb8dd3d84407810e1749219bb6da6f93e22444a054c6581530f03cbfcceafae136def18863fe4e12a9bcd1cfc8360d91ac6365e8229c1dd97f689b416520461f94a48e097828e3d2def9bebfa5e594db796a5d82953d905945f98690e1ca452a5628ca3c0969145a5fdd2cb2ff997044c8ffd7c063d13faeed0223077bfcd74cebd02b32e023fb4f309c891b8f3892b8731bbee4c1a5e14199d05807e6196dfb4c11369a84143979ff76eb0e1359d7c09fe0f6c350bf81b3db0de0e8186e98a864caa2a080bb2e3f862655b82b38ff5fd252cff2c6ee38820bd352d1bc3c8cce48a17507bbbc0b9eba6fa669d586e7d1210af9aa2475dbbebd827a47c787457f419f3620a40116688486f2ac6c3f323c375eb6e10aeba9a8bd269781b7ca3160b10b8abc8f06b632acc3b6cf2f440bbd11a491fcda0eda478b19ffc24204a2a49794d8d15d3ad2fa0d54f39093909a0428e858359ad1e22191fae4e85c44413c370c6da26c42eeeaa31987185cd4217174f01952a40ec67e09782071e952c724852c3490b8747a0796680611feddb8d76dc5c78dd4c3104cba0a28587e96b52aea7879e4591fd1ccaa358ff1f122bcd18f94c9cec6437fd0bec05a7c44292a647e2b5dc1b5d48e0d60a5a5902ec264a76e9c8ead8441df03a60634d4f04abce3e27a7cb5a3951bc39b19ed75c60a20879f244ae942f1797f8dba554fd785f4c96bcfc0966b5ad407593e2331a70f018d8e5c144316f59c743126e4a807dc5134f8021d0e53661882c0dabd1d11435d7d6982e77d199efb662d3676825cc022f45c67a9805185c3106b35baa8548514c090ce8aac37a8702c0c3ba4ee2086fc2c12bd74eee8ffdea0118c971f1bd49902224d4ff728973c1a243fb3e7a0c2fad94312fb3d65d7c7df7b537cdcd02930c52f698c381e4e31390b753bd3c18e1262cd4a6b62fe12c1fbb5e5a303a5c7fc4c98c07a2287caff64617a6c52dc85b725adb0bf2b07535b30d688553838aa1dea983c9a831ab51b54e6dbe93aebb0bc89b8b0f968f7c9ce5407fa5edc2538491b5717c4450aa067cc7658b9e1ba344fc24b66f9ff8f65942daa46404242fcc4fc50c24df30ff272f411cda854c3902b7e9651cbd7bf415bb71643056d1b28dae48da651d5b272057c62b3142a9780476b60948080cb78ef5949b08aed4a77194abbde580a821193fd796c139f3362f11a66b5446ad3ee74f892e5888e12582acd6f0052cb141ac5d82c5394c9ffe218f9300e6e199e521a2523dc54d2d38644165c4c6dc0e772c2fd88969656cc7cb86529036a55a52f98bfbcf6df03b8f32687235c4bbfecf19f77c0f0e6e07337e45d41423e1924668c4360c034b778fc620f919124ab938e3da412ef2c962c390793fd49325084f364be97147fa1f3f2d072866652fe56d88a098a9de07bb8a7da55142df1ee72960763c2d34e2aeafe1e02cb6b8a9b669f4758327494578e65a0f9e29307e6c9310baa6ebb635b334bc4bbbe05e4f606e833bf654211e72ff1d6f6cc034787ebfd15f06a601c04d36b610a4f900c0ba172e01eaf64b6f9386c41cc7e4d363294f0c25acbedc1496c898e93dfd991bd2cd89a034ba2b80c91a795b5628d90a6ff1067f3a62193eaac275c9621a21995631ddd54026042a002804ff942abe40edd68e3e8c7c2365d4142805ab25d8c40dfd203f74a7f0e31010ed095821e974bb34ee69332b61e2eab885059e502cc5bf2208f503f6907e375de437af821ec9ba04f62afadc44c421ca9ad819d5edbbe6d2dad8197090da9710bb03a31640a9bf1083a010b423000d6ad3c69fc1e401fe5b2a1977fed677e2138e38750fb867bde60fa6ed8e91f02050fb784839135611c6542fcd29b2c45755ebc00ca15de41a139fd86d59f6cfd2ca7c0782604bb2234a0add2cf5f7597c6ee55dac11ecf20385870daa54e7105105bf0615ceeda61d0a013124f8102ceef8718fb3627151a267d1ecd7e3e9abdbb9e572634e4f783b934a509a4ea5c4e97623329d853032da85a4b18a0f881ffb31d8dcb7d0756eecf790a1cdd1fef38c874681df4c1187bd40ab83a0e0087f8d689bccf73c58a5905bfb08b27fc21567217d87cff92c17fccffb3458eee26eb18d0c4c64d6b2d8c1dcb2f2cd50c59c39dfed82c9d46513342c4445798101ce46b4241d490d8001b047ba61262aa9b3b959a63f53a2a4dd35327960eb44c37504fd7441edf2c30b09f1c619318e3c5460fe01253b0e556119b3e00ca302967eba989054980db45ef4b7a75286fbba9dea98cf859571d985975f17b75bae42b8f527d04b32bda26fb467009843bd355d37f3a7c8d7df89be27b89032fa8fb191d625e45fb5ea36814b80e6bed01e209110c2ea6931cbf98b9d8a8a60a15b08f962ae6428d2ad2e1b0144a6497448013073e09e225ea028e9c8a8a04d48be9d660633e1e47634e75b8c20a7fba865961f3d7bb9bc7bcdc4c863bc8e42ff0a7ebb21444d232b5d70e2b0122524455114ac379b0208bdcbe527665390944346054d5e4e16fa77c9654be894e058e476a47014c4198de4f22035cfa5584ca16e0f9c0b22217cb063ed76829c0fc462a1ca14d5d1e2ac4527de486aab43cd2e935a044633ae8e99d96912c3afd9ce560e606c42002072b270a3fc3df75e09ac6a19390752e4a2de790e88588377bbafe952f11c895feee6f42ba9cc400d3d1e470d10c0633d3e06dbb093516d4aad18ec1fd9387e44665da1b7a09196b585aa51e8de313a948fc830b0f538660bb9a5456f0b59721263c40f7e020cdeee2ba25c9b548287b29be1a81eb1072869520cd4742a9c967e99a09ede722ca3007712af06707f0e28ff3b88a9bab8e15ce76530540fd818a711048e0ae1b7f7680e577650b747cbb954ba7eee9acadbc40b53666b5d07878da8c679b0a971d3ee9bc5d24effca362902bdc7287d9c4e9fba7e3901e1dcbc92e720498fc7c89e25fe0e3996f26faf49d9da3979c121694e51218f30c434f649340e7058f7dd618d99d2aa95f2f2a9f4f41e5d6a75271976d767e84905d44c5bce8dfec220f94bb048e757cc0f1840b038ea1a40908729340ff2657465091f1d7cd0785a2d586824f4489faf06d683fca49c96eb945f24e884ae1b4a5e8504c01c453a2f7a7dc34540134aace512ac43615ed6215f4b84aac5fe55ac62a4eb36a599a382098052d6d2c212b350c6d95d86ad99474fca8c8df9509ff588880e9c01a32caee06974822d04b7fb32af918a3286a408151f4c66dbaf6f01c7c49f1909aa2d363363a23ba0c25ef838f8973d5a436f1957223736beb20c2d8708324ed5cd0dd5cfb5f14d188ecad4101c5d9fe463d499328ba092f5535c0f3475d6ad5a100ef1d115ce4ee54cb5a53710756449299fd34ff937247bfbfb6f4fc7dce7023abb87ee967ccdb8d04d5d3fe78cec098f20eb1457a68ab89eaaf130bbecf7b2c66ca44f1394d0085d41305eb51c63b969c653cfa0452f0160840f7637781bcee5277966ac6859e50f7569964096033529d58494065aa06b9524065a80261a580cb540d62a5800a86bf0e1766b1da20d53b9e55be90fb3713723bbdfd8e1df083853888946433a4469a3be8eec6c51a7e6b09c303534ac078b02d56d85f43f0b08beb817eaf14858a9dde7d1a3dff62710e0bb60d3182735ce3595197fb24133fe0b0d1274c8f4c90dd6d811542a00e50e68ccd073d0eef9de15b0221b470f48231e279e3bb13e509b9096a118789c231908cebbf22640ee258c5a327be5fa914428540729e1d7cf4a5ce2cfeb1a8e04995c1409afd61e4ae717fbf323030cbfbd5cb402bb3ae9c171352fc32b4313b4438395ca4a51d3277e3c4ad5b5eead107b3971eb679ac6fe101504f0e5815b8f84b7935983e1fc51f6437b6db8e39fa15967a9c1bdd47026daa614ad2a2e0ce63b27895afb88e4876941a749816fc1963f4ad38ae8470dda20a6ff36641c1b7c551268ba39f68064a962218b27a17440bf77c0b648af572a4b15c91cb974b723c5ed8c66e256f56390abe475c2bc657e43aff12a4ef47d9f600a98dd0d02601901a388be8168c20037171ca45823e67cd336f463f9b108594fac991906d787ca50460c1455b6d063c729a8687432a4dc9aa4e0ccd31c3b0d001fc36d59b655b9a91fac00de3b5c996c1b9a1c4ce779c991e5dda65c0298122b1cdcf107b1efcc3a12badf54e161f25513666c2f3d8e51db38afb89e1c92b1e52a769e9e7dcb1bb3b534c674636392280585914d8880070dc3015002b1241ec288c9c2f8008b03d0a200bb8989841b0da7f535b96a9e51b90104a2ee0443d880be1a05d4462398c9ff3382812178e9c0024b285dbce352e0f8ef5500fb6313199cf87e39792bb13112422fdcfa94669f888520d8a44a26223ead0b620eee475c858b19a2a21740c4716d1b4c9964566084501844df9516496b6095b1a2e41b3a5d2730ac2c595558f8c5c49e3d845ed335e14515a360c8cb9f071e0c412752435aeef07af359f1e634b5cad11a96264644bdb417c8c0479b5f43c9e2d3db45d4154bea99f6de66c3b93a308e61e1e210ce7dfff82fd12e1bb3d9d78fd9ad83b6147f1028e029e6491ce9c7d42941206d28758d04a8bc7ce340b4ef5329ab24a5e5e58d0c603b952753bf713c7662cb045ce19c934c99e5e88a420b77ae9e44c188c9458969e2a98587946b161adc66c104fdc62c381ebc5868143f58c95aa563231a3dd031c1342273e8023e7c8d78c1b3062199eb18115410059302144bb452c6f71d7c8648655e60af1f3cfd7e78f36cfbf0d3f7f907bfed9f5fdc3d4648f518cc4d14183d50c895a4d4fe589e8669eaa2a08016d882f8335cda62c387d4ef3f8a6c8c20d839300d149b755b190505240fbe6f4e64c594f6f9a258c57e7578a4256c7290a356f2a0a815564b8c819b5a290fc87e5b507666fe18c10e5f7a78e9b971e6f1cfb030fd00d3a407e65371e88bbe30ca180e53f0196d67f3abc3ab61aeb70d8c16c15d8a9c09725ba81c8cffca3d4edc8a70a6dab91985dfd389fcfa639063cb315b4138f52260d47421169449b4b8e8142fa26c91334362e54526c8d8eadf0e8c3de26beccab90d53126d7e8ad9972e0fcff0dacbef1265613a342ea80a3517144bb42c25aba82a3c84c9ba844200145fd060f35da4f533c595f05531c60c8312e8ad7e632c755d7c48ed437922b1c3aa8b06e76464ae3858e666e122febf4b7f088621533abe62d4104c2a60249d6116179bf455d4296103fc75eb8f2cc6240040e32259492c6d684d292e7e1e97345e15187ea9497a492008498ab16fcec199867da7507c7d8de0a94f49fc8603aac98f8f814b9ea549239b6d67be20476acf784ea615f3316ddaa33291afa1e8ba26d510c9b6c3b2a1c4562c2c3dad03c91bc092adee8c5e765ae87dcdef562e119957a541d9c95c40b6d1b64de88e0ea0c980c82af2d8c6af2e9e484a21b85ee691d7ee33bfe39ec17f9f05e8c05cb1304f1a7dc03502e13ce872218928ef4b89c47462ed37435d20ba643a9eea1f29267e0c005662ae077efe80bdb4e9440df14e5d57cb9fc2857f74f402707b731e78a41af5dc759e54fee593946f5bd4f9c3c19f3000006d4c900274792e5f8cdbe686a0738f35d46d3d333ce0de71c633dd8ece20cf8ea4b2ca9690e61c85bbdb43a3c1834997e532361a0e0f7796a07035df63e1f784e362f547e140a18f0d7f57ce2fc3696f2978af3cf37970f599c7f88babc4980e667ee0924e4451d4701f29a1725d48be637711c40e6290668d9cb1e271302cb1ef731c48675fca1819b7e41b1a4904944dbb5c2919be617732d0df55b87f15c101f05ecb05c93f934319e8d85b4c6e187dbe5d8398157e7128e32282839259c914292bc66f05930130fbea4e31b5997381f000a54d7d8348e42dd30206ca74c2e3e6bfb5c095c9287c0d1b25da88cdd22d44bd150794d08680904a25a39381e74db3f5a678ffb6d2d1b19299cb94b0db017d27ca20da562951e5a61ccab5db9fcf8c4b2c7b78fecdfc606e6c2537dba4a1ab401010847382737be75f8077a3a1bc190a94c4c4926db055da930148c718ede4107e28fdc8f13b51c6810bffe7d9444f05d754b6f99402011fefd4c686e3f79a5d2c1a2536effa65e1a043af24fed9ba26f45ada58b183ca3969e08a0fea766ecd923265004cef6a282162cfb8416b036ba105e7f6e387c8c59ee4610ff4bd08fb1a4e209e441f3972dad01f83b25bf581058cd2fa00b2361fb296aad014a492867c57a8609fc452192b0c42ed20fc3600272de43df112d8b6382fc627c7b2758997b9b78602b02f816c9b5c9660d62c5abfa2f6cf1c0bfcb1678661edd0e4d719ebd95b0aae35db49f66732b79555d9d0ffe4d977394946dd74a95cd44b998c19c165fd0a9ef48cb3f8341afa045504960bb520741d84f83cd7e28a9f6db05a99168623d645214f55ad4bc495f41d478135055ae64b282da18e94b0f3d7e4cbc763ba9d72839d656391b2d32a47f94ab2c705348782db24a36f3526defb293ead7fc5d3aec1998c8e1d919d1bcd81f6f885324c0577f31a322143f458e2878ce74db6589e89cc12e4eaf585be064b687d07ca9004de168416888bf21452f14d4d896c751b9f2a58a26e52e933736901a686c100e1e76623ea951b15aeeaa0ebca6b72ce879121fa0327ec6b2ddd135b6e247a9ce6e3742b9ea05a211fd2984ffbb50988f2db2909099a50b7dbe5b8917e0c21bcbaf080924b8e8f122a92f0415465633bd31a3eac327f7716e758e032ec8c51823b6fc11b0ce4a937f1dd40be007ab772d0540496aecaaefb2d1244aa5f84eb2e44441336b17da2908885cd6881e3d6d0c4997b241024570ef9f44d4c3ca2c3f207fba3796168c5e79e9063a896452cfae3236091f01c3128defbb96b885616a2a6b908f798e96674b4e88c967018788f667f86e586046885fda8dccacc72bc5a167a6479567c2fd6e50fbb9a5b97a52f4f38b888833b5faf9a07f74c6766bfc6c660c8668e2382c984fd93d1dde92fd3495b35fb78536cad269ea81dc687b0b1df20be0dc35e1a7ce69f8a73ea08c9542cf1486fd748772271d080a7c178f512a17d7c07da4c4c965db4f9f7ca6c9a655b48a6045f541dc64089c0d87b8561396510986e060eeff0c0dda4854d5456e165fd37548586bb1aa52b79707ba0e75ff25387db416b195998c9c12d677895ccd4a3b25008bc9c46248ead735413a95bc055c4899f4fd615958eefcac1636d117fca18cd2e2356fda25e65124a4909b3414f0e7a616802cc7ac616834083279fdb01a1de3140f3709e2145976b12313411cc76a66e75551ac68fda8fd119902b5f5a2894204a74b8512b47386af999c06342db8f03d7cac966ba5438442e442bf331c9d31327d458802a2624097a01850f4ea051ce52a4a5bb326372330535abb83a501d854563410045d04b948d1eb196961d1c9701de4850cd8dbb4cd78691b20b81bb06df4a7a833aeee9947ec5af4be80ddef4c3a528ec6c030e05d47985699aae88185610a40331c66576afd5532962a6f115e5bff46d0cfaed73cf9deb36241e9460a65037345a81e293831abc887c41066e49245643bd38e9f30a467d98915d78f0271f1d264c206f3d573a5bad46ed1e3040bef545c6b8e69b30ee8cd41379b309d8d34aa68509853eb91ac27f595cd3317a54ed2871e69dc4f786942b3254e652aa724cc58e2e17028f4964cdf0e9c1fe2b8792fae59d2287c87e041bd207d2a159e5dfa66cb931fb67c96fe372767d0b57b4489f7667f291e299ed1ca5053e00d6075393db02e1732add4cf7e1fc3fdd1e3686caf56c59dd36cbe04c44122e9cceec3cf95dc09dc8e10e80dcbb0d9d691eccaaa6ebcdd84ec6a8dd148c87ca9ddbfef9d76929ac78a9511b72bf83db2160c419f5a30bb111df9e25a3a561593a013791ac7a2ff4bf873f28ea4349a55271e0da556b8e959d2b3e4899356d70fb794a20fe90bbdced2b35f534dee2fb6d0eedbc786b1a2f647815ac00c34b71475780dfe31715a43e9e36983617313096c25a7e4d42ded24034e07ae4cf4e8575c1318e51c28d0042ed6e20362c5fe15749e3ef6f52c4962effc55955e2e0c4f745f15d82ac918cff0ad5c53313d9bd4318e7a88e5e7208addcca3ad2eae355a1435c9ec547db1d9d9f34eba1d17da195d86540de166d4a0bad55a8db2b0a69ae865eeb1f8218c71dc0cb9d2331cae3db79a9f6f7e5e1a44eed5b57ccc139e6dacb2a5d963115b7f582c16b3c856f1ca89856751cacc8baafee4ef509fdfdcfbb01bb7af00a262ee79765e5f2bf99f5b74a0dd38dd01ca9ca84b23f0e85a3d6647e056a772190dbc22cc386906a5dae01aee560b9d5be03a4b9ced6947e9ae7303457830332d8ca401c80f194d6ba474459a78388b9750a1645804db7fffb2d6314c42cdded5abf05e747bff4674c30a17e92aa77976ba7f5c894a69a98e36f47e4dec24b47a8de8462efe288546b6c29e4c7bd6a4ac7e46f657bd47e4b596598fc29191aa0defcd7575b0346ad25ef0d108e32bdd12f61158c943a923051df83e4189b771f0439958f5366299890f10c8acb3583ce4e69bae24448f4be871115d0dbab4bbc3d9a07175e477d39cc785524339caa16bedd09bd9acd0fec643328d7026a3ec90547904a5cd83e87f2aad0baebecd9e8cf2642307691bf305d36c90b7cbb1320e9162922209aebd0562df28f2f6b48ab31bcf8e2dc75d322b038161bb070a05e9082e142c47206fd17ab9496f464f9e046dcbb6e7f146443bd229f2c0675b84e02eadbc489c94e78bdc649059dadd6061d2c582e5c1601bca5f4a8911d41af9dad5276a1da36d83f75d247ba11ddb4207db8c3915d311558b96a1a841d3e778f50b010da34c46d954138c629d8a5c53b435d99ab5a650c64502af44f3139b6648c441bf439704e70c8bdac203a5644724983d845e6d1857c89c41b31c87b2644f024603252408670e56ff708deeeffcf3d89eb23a06a8d8c8bdc0d378539bb4b82d6ad1b1a28788951bbede2ce62f38778ebce9d6572dba84d45c089a507d23f43e6f3a2f8d2f7c8c0b6c71f48f9da6937eebed2f88cd77c0fd50b148ac00ecebb20f034addd4249bf6dbd7748284634aa6156561c85a3f0e3f3a5cd19e8e59b0884bbe8e0f2511424024d2c621114b176f31b491e9809bff5f84c858387747f0935cbcbb1cd5c1a22ab0622455d5dc693a8eb0d586459cc142f0c8d549c5c6e1390b7d3bfd47ee2d7bd5569525786a86080381f11cf6f07b18f9a7aef1e252eb9722a34f532e7a8227a10b98bb936c4f2550c26b8bf7b02517671632bd45a88d952aefce71c2128daeeeb239edce3fdd15d2dd26b1a055714717f19d4faf976d0469071d9d2299d0e2c341d4604d4eb5eb4f463aa6db04b4801afde8ce0e2cd32519f29a6c6c6fa258db64c657393af46b53c69a321bceb4345b7db1d9338c939fd24c06e964a54c72ac33a7ef2683b6c794c67772eff97293b961b4f2d6d025481ebceb7aec8e3861a8f2a2dd1a75996f244723b7853023747fe86c1b4ea1efefdcb5110a56b385353edf0238032aae42e8aad1143a3e1be789f8ff05bb642de755c5500cceeac15838340dca665a22593bc8f2c68ab2ccb0b4411a03143ab23f7f5008cd9010ecefa4cf466c18d4f2151eeda79d9c80acd3526f42a94c81be0ee869f6908b01efbe8e57c8d64801d2359cea7a5c5d3768e9985128f8fa65c7c3704293dc5ec7f2a9183604675090958bc0df958168f632102bcba10367385f812493bd4fee5054d14b7893e19912b942e25bfb736d77980395bb8461c0de191c6468e72e3950cfe6fef0c2c663d54cc000e96c4e065c99b8293a47e0a6961994b1642e676815aa9e8d893e19ba1bf5244dc36c4548b3e23d20838e631ef920ffd7bf59dc1709e2a1d17adfcf2d397b04ecd56bae13dda06bd9f06fb61599590ecd18539eca382ac68d8582b70fa4d429b4892265a1b1a6f306624229667af076b7e242f92703f76bd0b5171ad8b8f97210262f2ef4837cc242fd12a77809158b0912b70fc732498ed966a0a32d09714e019298cf2b1e71354d93614be8a591a76c9c26baac439c8b83b88001850e2c0874184a131471177c8e798decd8c2112137bb93edaddbc0543ce837767e7e3b201e14e5fe603a97a3ab9f2c2aa986334cabf957b1a1dc7274dc7692fb0ec99c356d0a56b76ea11a1a4a82ae1923d8e956daa9190f4b2197cf32f4729baf2bf144f3e4e1fc749792afe6dac7d5c6d165b8b027b8bb59f249b6029d953360b52926b68c857ad2b85c6deda9447d7ecb38d167986451094e0a8630e67d358e9302b0aff40c931dc22fb2c9f06d4c802e884fd188e7373d454af46d14e88cbebe7be34584de8cd101eeba00b8d722d5368b46f17174858e97c1d590af313e34ce677fa1a1aee4c36ebff10c79b141c76f20a1f28677db5c3e6f07dea625bd967462e675ad7df67244e294ea0476a5f1398d6c5492b272410308923589d369d1ded4b1e2c134ff7d57671fac7a2de1d594b341d54b420be4a767a8fb6ff1d5a80a7b1b43d78823fce75d9899d9eaa6da89b15e973bcf58fccadc56093b675ef9d8e9926d664bb64a7e3a210233b482985c3004645e7d4ea30a084a8111260bb70d362ca460864c7bd3055e43e0ff2277ba218ec09401593c83df535c7544508cffa392368286cf48cce6d295c482219f6c0272f174b10a368c1cc6c99d1800aafb529eb5bce29a2953d0257174cda87d4507929f1059c702344b91d9e88c9ddaafb4744ebd7898a225d240d38b12f485df026e6e27d0649213555210f4059d173c7a9ee76f310808bc11d91cc469d2c488bdf900974e8c7b69b781758c665614811f8f452cd3f51f0573992222f514a1a1afd38bcf78ab52d1f6ab138c30e0b7b58db3319df476d033745805c2a06c37b0601a03fdaab3bb026109c98db8ff43d2a3baebc0e3ace47622701e3c0e8f2958c02acf2c7c6be3c03d538238c73a671ffd9aa686cd0e7b076d3799877c97ebf140d6091c55a3363e6616dde35a34be6c6b4cc89989de1ed87f2a58936defc85b00b114d5d77761338d1884137322d3dfe79a98fb3e33faf304547a1d1180c26bd6d2b12d88b45687cd155deeb7d8bda9185d309450317754108807f838e51eded7a05e917bd8d18518952c930b1fb4e17e1beadaf416e95bd21a9ec3bea9514dd32293427f7a25da5439f693e043fea7f75c559bce5a5bf3f6491f45820c0c09a1eebf55f882ce46a4aea16ca77fc1e446fe04b24b9ea3f08d62fa65e9ecced2adeb26b633537d1df8bd998bd9f3908f29e8c2f1ef0d3689c976a401929c7319d8791e51c2d416fcae94b72892c913fa5651c65cc27b405f64cc588348a4390566fea042782c58534a24b8ff7fc48903207b5204b22515e5c3ad1ed3c29249788d36251331415802dca7de9a6455263904fbe2b842ad598e8a76d0df4e6bd2a7a0d6c8f8e2525996f27c2f3e91e2b581c0e0097eed2a7ef54fcaa360dabea9dcbde6a86aaa70ea0ef7aa8b7809aeeb2500d9511981157b861f6eb8736edcc7b9a9abb77d802692432fd462850ff4fc00f6c92dec68a58fcb9be3408c4bac422696231fa007457e63be6ea9719c0228a445ff842a969cb762bd3092feec47b2c05c56fb491b72cae1b46a9d2a796f6931563872d559de1662b006aa46ff85d448545159c5f7e76c35631059a2ccbcad1ec603f56d51f603337ed00d9408a626ee6d7b5c24e1955791a7ac8b66d59e5b2c8e2ba62559ba070ae3b3b4986f05aa7d569f485b1a08facb24b5345676cc9ca8cfd0a7fdd165680c9d41c3d0393a8ec6d130f4b14ff4635f4ebfb9ebce301d47e768181a43c3d0183a068da1f7852d870a07dc3144fe56c4b9fb340c8d8ea3f368383a43c7114d65a29b22ce839a9b49cb53e63bdc96079584b9e80328dcd4dbe74dfd1e16bd685a19807d63ad40d28d5c636bce0ca6dd9580252843815d76e7d5b08a9ce064d95e8355972d37c064835ab3d024479f2104908cf1e62e82c77135c288e7e9386f5a7e8f8ff07524c1b2c676589d884932c9afe5ec72aa85f715b707bd847f17f8015ce01b7400d6450104fa72580ae49535e1107f25a5ccb4bcc4c42c0ae3ef40e14f4575de5c81fdfb8e3916fe47901e147eea2681be5aaf0f3dbc14e38d04c06087f864561670d01de016dff420b9cd94621d97a54f1824aadf36136e99fe9852b84aae881800db92953752452637185ae7062be8bbb9d491de1ba611fe9da50e0907ccf204d1ae08c863507b0128535150be815fc6d1207e49043ec42f1cc9c130d84cae32da5b70b909068f9035af12179eaf3a8d6f99e526e0d3d0c94664c258a0da938c984ce066ff96d7be50990cb2c0be13846da710935a32a573414d6d1fe65ec0852a882918f089fb302d0664af99782ba07131b404638f7957a3d36698f3a990a9945c56ecad18c1f499bef2fd1649aaae5737df5b1dfdf587b3f91e12f9bb9d32dd7947f477774a70ff66164a9186cf24b6d9e2b9dcac4b258c4426f22d900764951abd5f75bdc19568be694a46545a7127e0f0418ea96568f79f43982340811a0756014b7fe5f625078ecec07d2112dd7372babdd47418c72fb38fb31e545d394bf2e2f6cb16023105fc7bcd3a7f5bc21e1a7646867e394b455d6d7638d26b84c00b16d12649edf23ad6b3c8500835504a5ae22bedf85441173f42d761b1819de25adcf1624e5fb3fd2438e0450fa18c602b7dda8a9d08b58a8d9cc573c412280fad7d67cd63497fba425677b4b282d3ebf4bdb4342a794edb2b9bd737fad05777117950aea7f46451cdefe8ec4b36ee4132249033512098aa9a4601d622c284a18d2856ff4cb8170dbc4557f7cefa6aee4dc65da9ed9418bb8c573f5d60c4122bb3210e7c7a94547c2df00b0bff9593e6ed7f8420269c7a18c8bd35a414fbdb5b8669678abd7127bb6693b3c0ad1ef2d92e944948273975aa29c4a9cde3e5bbd2f0e0caf5c5f1422ebf030f78b0c0db3b5e2a845525ebd2b56a5c4f17e1bb41e10bfa702408cea46a78884d90dda00e988705bfb16608e74d64d084949471286c440be3750b0a41e5d39fa0b9883643ba2ca6af1e83954e28519850a9181a58468116c8a3ef573af40d1738c26796c4b4d3aafefae6af338eda3ebfa072042b3f29b8bcb8598212cac528fea0379d63d289afe712ea4e865160e962a3197dff53a49c69f99c350c1a1a01d58e0c4e197f23a7613aaaaac712f2793ed51bb6a5a9fd94dd5062f0c7d723c00376115650aae63fa888416d779af511f4f5202d20554d90697a803abfe79fd65ddf4a3ee45a2abccf3a962d5970ac6b45970a6fa992d2aa7bb5a64549f33b53a2dd0d5255ffbcc67b7f74026aff1d2b7ea11961c7ffa636cfb225deadb00ff3c3f89547c036956d4187c9ebe16588902da93b58896cc99e58518af6e736c30b5a7843494b0a6c6ee5cad88399613a6b371c5466d0ee6dce1c55028bceab01b9a3530e2e6f3828e9b6834a13804985c2991fc827c826a5af6566753d377af31ba493fdd4c7d0689ebfcd6f91a1019f51da23ec5baa7e9531127b4837d2a39917261300ce2124fbafb7430e0e04e9b28c1907eb87f35490c141ceeba8ff855dc9edd5c44c5b1097ddefcbb018447d460411f9b876cdcdd86f173acc4e99c1e9b1036ab700756dcc2eef52846a341de08e0d053759914caa7700d7507af9e6f2f9de007dbe5daddeb7a3348fe275bf90ac6d79b4049c3ff78b47df95978be6676553b7a2d4c5b56cd4cafcc10f3ac1d749ecdc1981f4f9f0e31cd81798b60832c80b5561e35e1e229c2f8795a854f801bb1fa1417f4a061fb4fc88c3d1873e6ab66fdb0beeb27893024cd265b9a031733a158c4ba1a94a8103c4024d555c2f634dd649ce2f18cc1724afb59a5dcc58f89a78c627224b66e8bcddf5ef0199068d8b015e482af0f6b25e0a5c1a7cb13afe6767eaa3c8a259c656da7429633b8a271311c8f5152450dcbbe5ebc2c94ebfe1de626574fbe3f23efd3c3a58f39c713311abbb3931e4b3982ddb3505091fec9bfb22e402a1dd9c661fb71494bad8c068f693720c9914bc79296c5f54b3fe0fd3bc005abd4c7460430107c9e28b9309a4fcfb36f20078dcfd52175f7ddedb169692207cb70add1eea7e172dd2e89c0c0711cf0aa826febce97969c701694f1aa3d84e93cf371ce4d69514bf9637e4d8f3d4582a19bb4340b94483404d46269414d7a1821c0242743b084d77c919ea5e509c29ba3b59bfcd27b3686fe719ef4dbbe2265ec2b8180b5212e8645fee72d14d2b63d210ef9fa90101e8f24cb9a4cbd804a31caf05d5b61feab943ea6ddd1f5ceb4e7bbb7a452525c438b1804209a8f115bb8bcd6bc7f249b10d218c4112f9f687510d5c0aca4011bd31a9c16397759a7c4b09e87b92f90f8652f59ea7d4b2a7db80faeeec02cd5ec8c26c256135f139574958a946e5a43ff9fbaa5d26e806d8056fb61aeba07678ba24f46c10c1e203bcca1b40130d546d8f960bfae6da7789a397b54309a0911c9572d1a84e3aea07a2cc715afc1fce602616708fb4addd7bd3032e92380ac389ec96da307982b19c635b0410d615e2e119d12b0f176f5148033bf108dad6f37d417840ffc4939113647f310f765677fd1cd16ac1a9ef5e315e9e477b60f3267834ed3f9c03d6c34aaa17bee60fc72153a1d486037f6130fdfb423fcdcdcfc97209979b455cf736ec0542346719628b85bc94ab8bd1eb5a563607aa2cbd6e08e5febdfb8a2e1ea485affb64a4613dae76c4a2de152c8d9924e48d0c8a68ca51a0f101e7d1c8144c0eb6eedfc7e0aa2239a381f68addf10b4dac3db0d21f3c9860ce7890b5608e38c0c86d16e5995cdd636d5f8b49b9c74a4da203a515a8aae3a06946b8427b89c37713a5c40fc8c1d11653114445fe00b9db86331d638309f57a87de176ee68a8a19cab5cde82ee4591f5d0fb306b7cc8a0483817eb4e265f61f8083e0c51edbf92301ca01c8e5bc9e5258c107037d2a3bf925d131362e40aec6a6d392a1c23272636fd5861a7162747bfec9cce98db1fc2788058a57e3d79137744dc26f0b4f38ef3e303f3756900f0e775870d8dafbb00a8cb7688868a1b6c12810bc015bc414ec4a9897f80c1bd7e3e745f5cfbb08d0870c339844f864b3420590116b41401d41af4a4aa4fc00f49135a7ee1077318078060bdb410cc574627e33f9886d933f827de39ae6cbf0e9eda5dd2b19025c74839bae603b013a46f9ba76d88a2a50d4808f319e8c5f846dab23d4545fe7eea8f6e5a5d50b86d746e558fa8bce5ea46cca577103a185b2bc8d50a26880e170ee068f5c6f80ed66a370ed86612e17a9eb521846178632f69cd4d5ca6ef359267e8a0bacc139a6f49b304a1c18548262dc808f1990ef42a55cb2bce48523776c89e978a0fb080ff8fc8ba6aee116b689efa440d9683e77ec6adde6329ba7591474a2be6a06f57888eadff38e24ac51e0c9ab1ee5a1ad69948b5dc3dcba3b60bbc5364cceda056e31a78d1f41cfd38f2784b546c875e3a2ca91f923f91e88071961de015a3ef3a0e2bfca5386815ae256ac7c6642562dc3fb53a3394738eb27bbb111492f15912494250d4c3bc262dcf6a26a739f749189bff573505ddb567f95ea7cf32394ac70de60c70d4651a7df948c8a908b2fee9cc2d13e7acdb68fd4360ded3d2983d52e6adc933fae12805068d8fb8490046b75fc1ff4f2b734681f00a1ad78e20103d7a1e30186ccc147925ff24f7d5886afcbdda35083295b5281abed235437b882ec6770f629863b5d9c5d7f1d5eec94e7ab5a06ad4f2469769f1d833618521448ef91bce68771d18da8f23e76a87a959b10ea24a37ca0c2dcbdae193ba81e80c9040f44714908dbc10c86f49640b7f9a8c4ee83999fa35d6083c2109d23077d72271250692d616e804f15e5f5ddf80b99bb9f6eb9bebbd13706d75113f9ceb7ee16b033520737261442db9d088809854d9b407181ce212b31a116e0f7f5b3407fa47d4116273b24bbe8890201f15df2b61a73406e52ea54843b713034a9d058f68cbc7a922c8c1246da7e0960ddb48b4a888cb00788b400c48f58038a178859bcd92e1367897fc62cd871a9290f7097943626afa569374e81eb8948a88805f3e5be26e6e9fd8a696f23c48f831a25db9e65b5582d3656913f70a7ba1604dad207e3153152ff006421bf0622c9d32ef9322754de4b721329817176fd0eb6271a06356c6214e9a4fbbd263b48ed2e7b340b9b45793362d972bed76af4c6bdb6f073ac135c71941ebabff1bd07a9795424920762349c90dd9e3a4477a39aa67f4dfa5260251785015cf0fffcff7debad621939696019bb9da56bdd1323ab014e2fd6c7b7d75f8d1c986d51bcaff12ca1c93cb0097d398c873c775c604048dd6368679552ba5f515eba409686f4faa9dbb9048d2e248592662911c2de03d83315dbdb4e2739600dae1a6cda6df06f8870e10b1ca43325b1137fa6807e9bc93d4c15c02b063eddcab7c9abbc6eda813a85450c2f84ab7ae4675e3274742356329e7aa5d65527a68384590c344ef2da7b8efcc14222047968b990b476d4c7d38db6b6782e5d0fb3e8039c307f13bcd8a85cea60620c176a093651be84899342567342cc85eff46bf7ae057ebcf8a1daebfb22e54458c1dc87146003509cd984d5bb9bbc17c7f98187aab2c9ce440afe75a02302b7f8ebe137ae3159aea16ed257fde0cb2159edbc3c089822f799c36a08d09d4b754b46611ee417f64f5bf119df2a49eb5ca930a1ab5578412624eef9d033a1bd02c89b5f348828333d461d71c223eb10a7c5cc3800aead5f64b3e42600dfc61e3f16e2394218eaebef185b5fa02c1fd883e6ebdb74f977cf6bc7866d9c4e580288e99ad017242c50b40e17827b40d0480d1e9b632beccac70c12a2c1d8ea14927b6e165bad2c781ece0225a633a3a90be4e9eb2412f7e03c7da30bf59d8e5f2dfa651faf99fe932e660c3c72b382405a5aca182ef18635703a9d1498267593c6dcb799727ce98495ac742bfbdb17b18d8a34895b9b52147290763607694f6a79cf1cf928b070049bc0a1fabad6789d6422e910e2e0371d2de71829124d244261ef6e36b87c06df12e92554361771fd561e907404ecbd2a6319ba109c962a9d3bf10382b8252b90bf470e6d4ab28848773d216509ddff392d8f159251b87fdab0c2d30c9f47ffe620a0b5772ee0d5c67197fe81cf528c78c73d28e427485eb35aeb14e62ab0322242d17c9a073db2f2082592dd534611b29eb05214e91e0d823c73daf6262956e68a9267a7f13a9e496797c25bd36faa36bae547ed5050642a6a746f872b74e3c207a4698cc7a223b83c479677288350e3c0a418aaeafeee273b78dcbfcb7fc2936feb1bb537793aae192400f16dacb6c7029dc3a352eec26a5a3d88ba23b912f596521ea4941abfff836d489f7b3215edbe2d73a9d12b87f2d063d21e7414849eb9aecb29fd989fa4cf49c8d98f8c35e92729ee5e45719d41866a00c2dcc4593909e82503d5cbd8fdec71e7c27f2df4713bd8da7999f850a07c45253f07d7c0e2527913f51769dd74cba5c09c5a9f2b9235c227e4b80040d1eaa3fb383824a7371b1a5f7d38b850f2427571fe0254b818528e62951793db9bab62f8965c83897e5230cec8e08ea4c19b5275ff74c28d2e15c452f03504babd98c3f8cef0706f65f40276d41e9cf013b7bb7e5b6c0f6fb8f532db7bb6774085dbd15f90a99bb771218f82001195950fcd21c4ac14dfe924c7c86904ab065beecce1ab98ca7c92265d1bb56f00eb1e2b5b39e81b0913ac02d1a10c6e5021d8f29d62a436e68d10c5aaf7ba95c00ee8c75bf1ed77c122e811b9320554d78b5352172a66cff3098fe38e4f539023989ec2e6db92c0de63a161248c93a4bea2eb1ab1525374a371aac7bd130d4f09bf175e976f277e0422e4e7181497f5847de2354cccefc8800e7893d30478242558e5d98703d5b696a8baccd2ac7089e6762ff54036c176adff9921c1401c5433d6da737cd697bd6079df515bd70f5d1de078acd8025e796be2bb6bbbc1e59539eb346c8516144fa991f484124dc09664531e62db1dcf7df9170b31a4b0804c33a4d706908c8081570420294cfde36fb47f00927d856a4ad541a6b16ef82a81cd2198f4ebf950d689a1944e96e1a54a38b26c9ea64c4eb5574abe4e22f3b6a7ba5297912051810edff6d8663b74a6c6e2be0004032d73af3515d0e932e24f5dc221740b4dec9d1d5397229217c9a961b79a52e888b933cc699ae1285048c8c3df1618544875f02e698c0f431da9963cb83ec1ee2484b7f7c323d9bb4956a4e28494bb9cbadba6386bc6216bc95620cfe8e64138349f1289c4da59f85189ee3539e2015b333b2b9126301965d36dc1f864b3a6da9b3becfd5dd46e4f6b31c5c83bb808b6db730f14d735ff863ce5525589e4b47047dd258f437c83e9cb4eb42d76d9aff719d4e1b6ea762098b0ccee172645da394a76271cfd84b8738c625042048730db14fd0b988fceea179d04913223e63a410bda63f1394ded1218c30bc8fd8698d11594700034e5f6cb7aacd6669dca9d83374e6f964af4c8b4e61c3bad9c2512ae7ea58433ad37801b599d0ea648a6150174ec2801da8e64e2d25f5df626df000ce02c7aaeb3f4376ced34722e97e1c2785ed499112f3f7ccb2617973da34ef4e1cd18603864cdb15a51994450e34526ad8d6617b331712f697391e8fb1f6d2a2d822f143bf757b2442964f8a4b6ece9aaa7ce43de982d9722691b30d5e300153285f9ff2195fe6956805a99283267651cc63b8509000c55470af0a8db80f7f05448de72fd4c54b02199739e66d4083ee2bf56f25c88f458e3df3c3d644ac4161a13e7e6a7ebb539cbc898f0e8a1ac496e770287c5da6d37cdd893a250af3e84dfe428154336c67d1c7c6acc45d740c97a3597c2119adb1a04bc3d7355c8cd61404dc4f2a2c9b8fdde2a404e19f4cd874d2bf23fdd5983038fc0a027a15448e5ab83f8659324bca8c63c8d2002c8aa245c69012ae3b42c53a0d2913a00bcb6309c25d05992477f18f250c4a796c2eb69b2814eaba0c7a9f7026304f05a30becc7474b6b376d4b322b2b7b1baa3fd60f76fe6d300b125b2f708d002bc02df463eb761dbac11ca96644ab201b8029602ba020b4321178d36d2b62debb6ab647bc16925df981a3d83ca4499f0aa3251263295710a5893d564a44822851a924835d30da6996936fb76777777d8a1508c22d188b4b066eaffffffff50148946231269737777776729a594522ab0aff324e6648570cd94430fd41eede155edd19e1167d229b190aa0db4c332ecfe912b40ab954a85ac549bb2a03c436c8f0e692250892891655522224eaa547974c812e122d06b7a04ea113dc2ab7a448f8c38a74915482e11b84696e11ae12310899a66323f4d43fff48ffbe034a7d1fa5d2e3384dd2129e56a8fb350610211b961ae00e930eb018815201d663face81fa7f50806173c8992177ca0faa88f8ffab88c8c8abed80f625f24dd4229964495905ef0d1254c4aca44992cab321171d2610d649a2d89ba44972cd1253f3fa659af4c37b869e6a69969366b1afac755fdd33fdf524a29a514815eb2c588b4955c804a5e2a2d6b49c4b9320d3463eeeeee0e210dd2382f955a70be4241f195c9e45d9fbad369594f0f6b5006638032994c068180b5ff86b5100402d6600dd66a1f7f9328a6aef33fa5c8142997558a38fd9d81fa87d997ff5d3e0aa5a2e22b2c2b2c2ccbcac234da07572994a656a71633fba03c1de12ca516235a5a3ce4f212615e6060961586613ce79cec03d39a6934cc4ce3509fbeff3e4ad0b1c4a2b7148bafb08c18d1e2f2e2f2f2b2ac2f3a03398cbfc0a452eea9541e23132323b3ac322e57cdeeba6a1284e00a8652354b56363fe332a5163324489828b900ad4cac56cbba1271beebadeeeecce7a52c5fb16868bc6bb5dc73792ed7b2ba4ef1bf8fdf77777777ffffffbfbbbbbbb388feed22e133244a943061c257ac158bb5acac180188c65934ad96e7b9ebe57abd96f515638cb1269eb86136eb4ed4f8abc6c6e6c4094701000a0000585600449cfeff7ffc980ac19544a54ef1010840000f40800106700258290848918257536c01524a29a5943206b46203e98662c9858a4624f83eafcf359e6a5a5951a958ac13270a98b1ebe26c67b039e72cb97789e33c64ea4c5db7acdd0c36679c73c2e69c33c67e77efefeeeeeeffffff8f0c351443312e6b8ca2d168674bf21169dbbcc495386e59b939a72fc30eb1b2cf25ddddddfdffffff32994c269391b692732514ce64ea4efef27f593f45fe4f9e324a196a28250f31c86432d977777777a398baee744a49917f4a91f21f8552598132994c8821feffff3fc618638c29f21f8552515961812c2cbccac222bbbbdddddd5d4a29a59411059e30ac58550e9fd5c1dc8407e3f4803d7af06a8f1e238ee74d89450e2e826b4cd3850ca10c4d64faff93b746779dc6285490bae7f948e187c9890a4074429d3a9755a788932a164bb569c985a70279aa4dbdf55415e30f2033c80a30a83085c1140624c80a309c1ca8399a93a339416038393a3b50777467477760393a3b31215085a8105e55212a64c449699ac998e22c0ff7402804112532e2606d057b155a45d1b28e96198642cb1a42126a21b691244aa02a5125bcaa4a54c9889beaeeeeeeb4499ba218642d93c5206b59bfecffffffdddddddd1772c35047d1c837dfdc97d5494cdb2d6e5ba8e1b6c52093c964b218644b64dfffffff1f45a31189b46d5e226deea512c7a19858e633777777efeeeeeecd4b258e43413175b0eb78b5ebfeffff5f4a29a5942291c9b4b2a252bd0ab086097f82c015a00c30d804072a8ee2f0aae228ce8803526221a7e34c233d5008582bb17016ee8417f26af782145662b1294ec94528678765adce8ec6a0c634b6ac1a13715205dab463d8b07b595bc4f9e7ecc484b0c003954779789407b42384059e9e215087e890213a444a213c3d438814815a448b14d122526e8f760f5b848dc02348a0225124481489ba4a0e3536d0c686576d6cbeeffbbeef8b31c61863eceeeeeed3e9743a9d4ea70b56f5429681063ac306da0303c280c1ab30608c388d61f042555555753661f089e1c8d02486b3b3638cba0c02e93649c9baee3a57b574d4a00da4cbd0e592363629950729d546433f803f208490aa016bd458d61a22aeebbc96ba5caa4d5d2e1b1bd5a636dd1f845043041c46b0016dd8e0551b36461c948520829422ac8d25614b58136ec01b3778f5c60d1b259870e3041c10070e5ec5810354c2cf9e80030788c20dbcb9e1d59b1b79020a373974ec803b76f0ea8e1dab558eddb13cb6c7fa80298c38a6a9f6d814f6c7aab0407855a7ce11c713a4b2eb260c2bf86c0eeb40d5511d5e551dd519711c45a30d76ff38b327bbc331b833095296e7894624879ea7a3183fee93ad6d0e1bd398e7cd6073cec962c1e69c739ebc3ba5a43cea51a86545c1e69c33767777f7ffffff8ffef575b65d37e744710ec564ea4e29a79494654d7177f77e7777778f31c618637777777fdff77ddf77e2504cdde9949222e5a3200ac5ab28d4e4b95ac1e69c73c2260f734e7777778f31c618e3ffffff4b29a59452be0a6a45856565c48816178749c1a452cb9a7a8149a5760661220c4ca8210ccc9c1336258df6edeeeeeefd2c235a5a5c5c5e5e60523095e2d554cae505a6e7c718638cb1bbbbbba594524af97ddff77ddfbfc0a4522a554c8ccc0c9c99e1d599197777770f7ddff77ddff71f08bb357645d81d61d7c6421246dc8650c3b5b44f9cec8c63383cffffffffbb5f97a10c4d4052a5a107e9326cb5f4f5ba7182e298cb9200851b0972c01c3996358788e5ad966ad3d6eba5daf415238e9b1c3a76f0803c78f02a0f1e230ed66e74ece0d1c307f4e183577df8d0b13cb6c7fad8147ec01f3f78f5c70fa7f1f09182911e08040201c2ab4080807cfc506106811a448304d120ba5aad8093a3b313d35877288a46cb4a52a64929a5cb722bad5628cbccac9af2b2eb58baeeff25c562b9e795d8d5b29846679ea734ebedaec6664f9ce48043ed871c70086000025214a002aa50c1ab2a548c38dd362f7128cb6a7abd624cb12ad6803d0022004a00269000af2690c0888b40ae640965eb827419769dcb256d6c16287128a60edad8b85869e0c43af000022a1708200410f02a04108cb815061a702d495010a0da04a021404e2688408df4c4feffffbf971b6e0c67c618638c317edff7e9b71f7f1dc361ad7f93557bd3d0a892d423486b6a1c050a0a2a500b78880b703078015fbc58d617a2d5caa3a1516d4a434313f372c91a1568d31a478142b5290a14315a80c18b0c34801b8c38a6619081061bc0880163c4e0d51831a4cc603758181b6339900165c8e05519323688c1818c0e66c019337875c60c21821022082963c8e860860734200d1abc4a8386ecc0031a1f80004358ad78aa76dd8d5d1c8bc24d0e1d50870e5ed5a163c42d3333333377ddff4e29a564b9e7ed6844da4ad08b71f6c489cea49452f7f5226d5ee250200acab2a2bc5e7243e183a2f549489168d41654a42e6812a8493409af6a124d32e274455f4b5e5b4dcd891311b47c5affff1f9f27168bc562dd29c54face789c562b1952ff6f7ffffffc718c17a3e9ec66231d612967ba9105ca5e24b7a4aa985fc47a9aca8acac2ceb4a777777cf39e79ca8538c632a8e5259596161f1112d235a5a96b5e583ab144a53ab534b55519eba784ba985cbcb0b4c4a9552a99655f5afb03967ffffffff4b29a5941266448b8bce608cab6264646648942051a2c4b2969873c2e6bc6126e3ab87befba7bbbbbbffffffff743a9d4ea7932a664686c44c0912264cac58def25a9eb7ac1e4dcbf3b6b7155bad50c356ab5736c0e6f7f77ddff77d254cac562c160d4dcb839ec7ab9ec7a269799ecbf5aa813535bc5a53139a4da6d93923a287a8b9bbbb7b8c31c618bbbbbbfbffffffa594524a793a9d4ea7d3a99fa6e5792ed7eb159559a854b1bbd98860060000e31a000400c23010868120ca3ddd0014001522252b1b3f1e0e934dc4b1502448c7520c06428801ca18640002c02845cc507200738ea1565b7ab19d2ec2b8208c808aec288f5be93205a2b46528f8c5c8fddfa4894a2b1c740dfd10dd66b5a25f87b2e85e0546a87b4f9f102f3e2faa186a693b1dcaf820448389acd14a2b73ec4d153040a877db9d8e0c2e66fa9892241fc218002838047ee413d1c7e4c9d1f4c7da1300cee012ce2706251c6417493be1199956360c6c0ee1e4a3297566a6c436c205ccfa982c20a4a76b0e2d29d396b2852dbdd9bd9a9fe96fd6cfa4b06b8186c23717d2669cac39a397e01564207894838532848e26c43a361a27014e5053b63733d2d6eaa0d525d7fae4b65c02ad386d4f94c48d0ce8b2de58781c43db2c967a5abbe2ba87cc1d7e855b8547680e4f5bc37866df75c7fc0e6189f9b6e6b3fc76741510ec8bf0807839026b9a5f7f5d06d0c05dfc4d672252cf56997c9ba6da811d580af465154be1d217d5548dd209883709a53c942632542d0f912c6b1b35880040fcd63f1ccc0ab8dea12a134ff794274aa889c8a4c77d010eaa49462649338369e3de5fb5760fac0165309464e2501b90288eba3925d1788324bd394f615182df00ede1e50e9174211103485a394cf1a38699b58e22f2fafbfab2db4a55618b3561891d5ee2fd9d77ce7d217a3ef12e3905f3098210fb9e5f922840917b084e80a01b660e502923a66a6d78e27107f6915217730e1c4123a6255b905a175aeb5e80d5d3658477ba8c96ad3c27e042bafbaebbd3ad8b4040172d5c7473a1765d481e8bd36de4debc20a821feb3a45c02a11e86bbb9788be3ebd22320d0e1bfc2af5db511507496df02a76841d7bbdab191d001419591de5dec08c9f5dc5c245419599dfda97332763d1d6fef28bc5c2cf4f53f0a08c0ac13611c05821405117d25cfa85c2aae01934e5d550f02d7581334ba99e4a515352852b920ac5339a3e3eeebcd6fc90efeb5209e382308b1c366788211602a69695c266c5709e10e3fcbb6102756d6e2e882a7f033ec7aa80a6434f06228e886883712f5968b0a0c3800cd693909683ea31aa52d8b753c8d403eeba8b7d0efbd511f20aa5188f5885070515f10ea78f8790b64cc63ed7b228ce07c3785cb617988a7e57a86944eaff5a6fdcc2518af2994f4a34f543f96043700f710fac497fe0cd7b4d7611f4aac4f44cbf6899347489d02eea94823f819ea3cd5e84473cd5b2965f60c56025d34849f75b9db06cabcf9da4e9c6f8471e4fa471bef57f12cd0c2f69e1c72fa09c486d20be685b53c40300fd95dfa20945e859b8a245298bbf3b2d0bd39c7a7add694100314722a0c08297939026d9a0bf4d1808f9b9b08a0230277936c1409b9354a0243281349d61e537f84795e954f381b22876dccdea3b1110ae82480cf2057345d8c03af2b92fca024803444d32ead70a380705d39f1c569b41d5740a281689dd2714106d19383a9e29877763db3ddb92fe83e00ad9d53e78f0de347868258509c1e8303126d1537b17ca441758a0a690e0e62bb15c1068d3d6a44af34d9ef305dac023ae83ca5a13c9b335bcdd79221d00aaa116117f4bcb26c1887751b24806b0ec920d21ca1741f4c0920371808e6c7228b831c34d028e809d56625a76dce466e6395c38d0445073ed1c12f7a06542c34da5ea97f04aa1bad058c540b67ca4230895684c50a5bf78198d433847bd4d3f301ea99cbbd861cb16d54e537c8ae0bdb7f20c00dac77357793395a641aad04b2acd1dd5a1c89e4e607e71aab11b515510948117f504a32f49295208121212031e7010eca9183cbf17651f543ca97f97a09142fd27dece23f80477bccf9d6375aa6d718fe375b293b50e5604100f33c91f46e4077330377186af1e4756772a01432167dc00c842863b6083c804dbc4c129b16e560a3aab9537a4abc26e4a0554a96ab63554747c054f3e1092e1d03db922a6d4c88ea890d755a69c708f7ee2f5b583dc8f5b60e3f5cc1a3e60a930404c2c0a6e0f87b46dd497ca1bef97320feca86b0d24bc2c7250a40cd392cd6dad75415427d7732025d104ff31d67554e190a2b300c1644812a040f0d835b0d654c37fbe51d5cba09adcf8e5b96c4f12a58003bfc61907068bdcdcff1444dc2e1eaf126432f02c899cf4f13fe4acdb70d9d36fc1ee42bb90e109d6a9b751c40f0a0611d731bd23f77f559139bef8673dcaef41ff11469c1091dba05e9bfa537c74e64388f748e7b6e99dca1b38ad01c450e4526d4613f6b6227c2dddfd99049521ef5f67538172f3fb71575441a4cd935cb79094dd47f20fbeb166a961fecd6e845aa1b67b3c86ed1b5b4b114a4ae7cfd10957e1db075ac9eea56090816dd95f6497840dfe58b8f1bd96d589136aaeea4d4af3f34fdb354b7eca3b5a29261c2a2583bedf8e8871655f702dad4de6dce499020df4c0914ff416673e05ec143ef53c35d973b8e224b9040a317e457d510c03d0f42cf6ea397ae9817cbe058191b68c65466457624554465f603f5bd8d77a482fc82ed43302a111d56ec2b48ed39c1cacb7e820f401a0009e008f1dc61414005c4bb98776fcf55837f7dd87728154cd9c562c1c5a6c7b375d5e663ad36f3ee1178f72c3c8a20f0795561a355f93fe347d5be3763d710ae6e36025398fc22790a6a4076366a0068787ac067368f929076ed91cd9c9ab2d2b4c45f861b6badae22fb2310d9d72214a478981fe9434edffab95b3ed053db8d054d7507a5d908d843be06440fd403e794083ac553f6877979a49d0b31e1055241b6885f9014d22bb9e846bd0d6101def20d4e0b06f3726f44b1a6a751da160eaad1697666eec06c951168a41312b44ad1acf00668a8e1acb0b849a17717d4b18ee991aa824b1290ddb3668d87651ae8fb6b2c157aec0799bb7c1b4a8982666580dc2df89ea3a57e590d71082236d1cb13dedf07f30c172ff6ed39a25a97a43289359c80c3acdb0576051ec469a484032a2a9be175822056715c0ff6690666419d4510b8fb870aa6132c25d688ad5d736e238a85b8b3140ec835c956342936b22bd9fe436857df1591faa3fe5a8388ea962bac17540b248a82c537468d8f6d5aea7b6b962684c20a74d0e44c30df19869baa11eda59ed35c6aaf213ca95d3bff9bd8e390a15247b2bbf2ad696a3b78400aac0d4132d7580d6e38f079a56dbd3da3d14045c5e496d8cc9efc82faa7c98e23f7502f85f537044f54d5bbf40e1b8a114a024a9fceb3fcbb82a28ea1267f809e9fe3a2446695f4e9ed0f6f956fcb895727d9c725207f08667137f9967de4ae63d572c0bfebf63ffbf70fb3accf58d328e7d651a070f5320c5c014bb24c9925608e29cfd42da576efc0f8bb2b980cb81b9d5adec4baf0c358430e3fe66b6b70908739251278e971bf8aa6f05f4c24d44aff624481760aea1c8ad90cb3be68cf58f715db8ca5eee55c528a9341571b7016e90a1d1cab9ed41c25fa3dd5f5eec5cbff748e9457f73044b5e28f38d407b1874e3c0d281c9649e7802655bf8ec56abcfb0cfc0ff895fa60b7ee793a6b2ff6b36aa55a813eefa4143a2ff03d92cae3387024107554158852321ded28bed8bc8702cf8209c6a2d547c7486c0b1d7019f5500da7e90d37fb905a50cf53a13baee7db1fcf5b946f8ded77aa4de74dc7f948953cc73feb20a9a822450b558aac48b222d80d64483b7d4925262fb19dbaf8e11c6bc238119bd8a1199e44a140624569526c6dc719cdd958a165c7b569c57f3527292a48b7a7b99589d645ca2b7c104e8a27ab59217fde805cfb821fa8e38021645d8a048507e052200de61c54bf819ef54162e95e5e09eb41843a4c0376301137a8131287ee889a0929253d9e99c244f590354ed827d7a4590a9d083597abfa7957e2404e270ec25c192872f0387728b1cd00eec632938293b7171889333cc2d71cd732ee062a8c9320b0a423f45cd28a9bf71ccd9d5f1e4bf2b92a88fb8e4ac8ba2c045555903bf5f431e7ce6450260bcaeac50009432276408f88389d2c9ac9f1d52fbfce8ef4492060187aa4974c99718ac82c843142b52c829b978f6e866a74b3a9027ac420862d1fcd1b6783e3019ed6691c533fb415e299e0b90f0bed25ea9637c84a87cb90921630f342b48e42d7d47f8202257911873107d2a96b4118c7093613f9a82772c9e78d63450d616fb85581209ff4fbff9c1e2f10d693e39c3e5ee4193f3014c482c2f48c67e081448428173b94841dd6ccb17f7cbd9daad7a3cd68a0640b49e7e84df80a1584f924ba48a90a6c39455c6112133730ba10733fbbf9a259b47328ab5a8f0ed343d88f13b081fe1c817d3155d17b831632f63984f075ae89cfb18d194035f116b03bcaf0833930474ff82f740fa17830560321d3aeeed27ea4935248e62afa068c67019f5cdcd05a30b3d725a413a916fce62d40a701720847f8e8803159cc9cc845991a88978e73e96411c7dccbf0020900e5e928ee7fd351b45f1e8ceecc8f04879f6cfa21b67718105b0119ec124a02791aec894993739963015022975a3dd1536a005a78eb4ae2dda2236f0ff4511c824567bba33d3b0b03c362c0d798e1a909ded8a81155ea41368fe3c4501e875d05c202d8805f0ae5217060044ae4556d02908b4edaff6379af15398f88041893c1663f54ef929ba5dbc38351387f71a0a65d24bb6f0d231b4ed3007901f6245f783540a77c2580bd9979a64a8a0df03178a5158bc893574d1b71f0ee7258ccd9dc042ff7af39d6faa53ab4abe15c0c0250a79d1c495095663852d7efee037a0b6b1fed8dead6d2bc854a86be5cf9c37cad1a949786dcea3390111293e8c702b5766a74fd9c7eaee31fc8527911bf602e88b730d2ce75339b4d9639df5171c33de31168fcd1af4db4b1b791814ed433d3230339d33b1e7123fb955694fedd35bdc1e0ff50fdd4a6375e9e07c28a2e6979302b1e6fe2da5d31d6788d0d3a486a2d54d6ff8f3644609b8650d7ae7b639530a55a1ffb9049575fd8b5d3e74a1492fc925a64f7ac59991a91c1b56b34339533d45f94c821466f2314c1ef183127391263099f5cdb721dd3cd0cb5a0ec1aa6e7dee56925f84078ffb11e1361ff8ff5e9f459118b5f16f31c9162b3f6242ff75bdee4644a701c5e44973efeb6e8feb1770478092eed327681fd84add833b5f7a20860b9d948abc40bfe53d6e6b1ec72d3e3e8ba3aebb8002829531ffb9037d4534344b6c3aa9cb467e2a13bbd6162aae4f871bfccbb865841eec3edea291c4c6a48de5a1e1a78ef7e7e9146fad5168e6bb2af36f140937f8581c7a39ee9748ce87f638a5b73b149aa938cddd5d3a801db8dc8747b8e4643cc1d25bb92ed7b24f5f55d118fbfc7af51534efd9826bc372f6b2ce05d5c072664e37876bad72a7d0e79e6f883526b8a46a2ae0f9c6035290993f4acc7a18a505f4fd00bd29efb3e18425243ef3ac21a869062840c2a52c393ee4c56041682709cd741f4a78d73bebec7deee6fe57d2bdc8e0cefc6b0ce564678fefed2b26810682ff953431ddceed45db62a9e830c853a4a89b25a6a3f7f936490abbddf41e87b5ab4ecb2752fa77fbe1004ea90d8732083864e27be422dc6a4bc8ea96a64201325652ec369ac67a0b22cb10e4c78f2ddd61a81acbdf4117fe184ae1a4b2caee7e90f76a0d60741715fd033ba118e2e9b35878493a04e280eb079efd70f7b2ae7bd0befed80f44ff9dff12f3586d9a011a82302508ced268d9c913d7aa61cc606bbb7b0db8d8677e4201dab78238e4085c9e3db76a389494e31d2f6150f4bd629c6c53e4685c87a3f9ed380461345df2eda578c9fa50ae38a5f838d84ebf98df24615865b9e09a1176d1544d0570ce62a9ea0fe853768aafa24fcaaa7edfb1947fddd4d1957505a5a34b7f7bb28b494da5bcf547515744e61bb2983a36343ac894829b4d1fffe0e7198668708b625e681f9c4068f6b9243ab00eb6b826325f89e14e50ecd87a421ba8a38d9b44556a5ff1acbcf6f3159ad80c233a4af415c56ec2086e949f8b143990090f5bc39c321ccc36c9d42f040216bae4c80f9676778e531606b2d11fe6207b969b96201f180f21e15d19461ea59b28f752442146d7d52a09e100079e224ef9a7dfed87337312c8985e578afd3c1f2e265e92088c1058a03f99df9986bb0e8f0cf60a04f7c4f0b001ffdcb26bdf80afccb8fac1cf4027f57d5befcb0261638b3caef435bb6a885e9d7c1a341c15ef4a77c96d886d5524d8fc1c518c70230ea12ee67f3adef6342d9c9348b2d4c5f772576ea8b7403c20ffe475dff437afbdcdc547d4db17fd62bffd8e6f5872820723011572a74dd79f6bbd6880058f6730af00794e10f3e7bfefd6836d7f1ace27a6a34fd9814be41fbcc81436b8ee6d0267124a47a8885525ca59744e2b5bbf28de2411b044750f9f88933254b9d309e1388643849769e28f4d96309f5504a059c51915c6baebda779127d07ccb02a857795bc8fa6da7f81618d0663bb227cf83806acc831eaa838d0438047e4a5639a68d6f0d8ac1122b0d9f64f98e69b00159eb079190b37c53408fd718c1c772884f99f8718e31581d87bad68009d8f314b48d496bad7e6fe553e196b25f13ca3ac59c2d45ce04c9bccd324b4cd93e206076e901ced8558687d31d1e1ae7e346acf5d295b85c43bc8d1f68c4088a05173d518bdf75617f8ae6fbc27154d326152946ec12099e19bc8ce7549851f6dc11637588ced13b3ef7ce427883129ab34c608fa915b0cd745ef718d9faee9f3b34ee5c1ac5d435cc9faacd62f3761e242d350dce0fa082e81559137b7a0aea959926993f9b7c1945976f50675f3e67df26b3a296d7aa87bbbeda752dc92312c766425c19ebd5cd0b3576ca434528302082dc0dc8535695ead423252668929e43453f20b53cffdb5a40005410cb5e4de418c08fd1c9fa7231d9043e28e6b383b2cee1291dfed75aca19c540954891aaa3f9fb2a2b04c43d211f9bdb6f61b5d3e643fc8cc253e73c31e20d5e942dae1c5fb8445df1e89332c5b0166f9e1f4dc6602005bcb03b34d920a61d5dc9f404761913da4c06ed80ce12f3855c416496811b10fb0202a78eefefc8356ea97161a74b5ce780a5432b2afb3227d442725b30ea1a8c4e5a6c07782ae14ea4fc8c7765ac1fbda35a34ac0b23a4a8774791ec9b63e5786e363e9ebbd8cfa319b309f5058258e207b314872b1f17874dd9d777c8094520cc73fc45ff3ecdd092dec059bbbf82ce63248eb8b669f25b96b4b98bbea2e7397d40a0fee1266e475162519851a67310e05645aa646b9961056cdd7b5f7d2bd3216aa190349d089dc3d6b06d7b470b46eea8098260bfeba9c4b7bffc328098ed1a2d725a23dad4e2290a04ed9226d8d641470fe30eac9538c2f98084a292be4026a08e4b0a3c3ab3dde29ed4f55d4f1f7aa325d860c0fad781803a5c2bf05a58fa9c3591e469ad2fe91f02dd0edfe4dc05fd868a0c9ffcac4e3d19aa9213b753830237869faa3e342566782d383f477817a1cd45b7b37b3b10896671da89114f3009d6a73c48065dc99d768bf18f70e8aa7762c035800e6a973281a63a9044e98905e60f93372e118930b061de8d307f5312d30a81c28d1ff5634d315f1c74fb6db98650738eabcab287e61910d72c05cedb3f784bdc7525692962c70389aea2f5a6431365eeaa544f85338324dbd4bafd1bf4b0f0937441f1d4b307a6fa71bcd8cb6fe6e180ddd563a74aacd6c32d4aa6174890458ff8f883c30311bd3747e11bfa448b017397112ea502b8f725b4aa5ebe208c48305c60803af08e54d91e92a93e9c630ea83e4157666b02aba4e489504ec33a1142f40061638b2c670f6fe7ec62871fc68db6c708f15b86ff1cf82a0829888cc58621bc9e5968e5e4be3642a2e23640cb78dbe94ccc72c4ff035e235b6825121e1a305c34170662a5e225ea366d6ac94a7fbd00ca1891a0c2e3a7bc09c0bee9a8002b9bade7e1d0735623443e9b27f0e36d9be246798f4826f5574372a45a1b1e65dd63f6b637c363107f38bbee04fdbc26e2827ccd331fbfcb0677ee458101bcaf1e8830ce0db0b002122378392992bc603efc75ceabe79dc10919f005cf43527e1e4c1cd453d5d34ee6e87daf3a0d80b7f3d237a56e120c448cc93a8dcbdc24ab7db0bfa20579ec12d6efe4106c2a9d67a3667edd39103b325b528cf1b76f9d067256d34d33e0d3739281be425e4f0eda42adc56c1fe9af90748a446530fd5552d054935f8d4cde815fdf48f8a403577e2045406cedd4e86c74853b06911079b74cbcf94f5abf917be3700945de2dae347eb392bc3f6ecbf4b165f14974dd9953a791afa4411d1ab72ab80b29616f693d20fdc9c3364ffce0e9dbebb016772603a6903cf47adfdd5ab266fae0f5f5fe8d290b3c9e111413c9f5dfb3959707f83eee814baa62daea979751789559af73a6cd81244d86d09d6ffd71529ed9a7c6223fef2ad34ddddbdb3964cfd906b78195cfc590ed10f7a82ed8c69e83ac9fbdb92644afd13fb3013d7f39db3733cfbd76b493cb4d1c575d2c92a93f1e8c4791431716c208fb827caea113c4023a1c16babd93a360ef85300ddc57d36e7fd7a091d5ba4b578aa0a71bfb6eb89f289128b10b61027dd63dcded9270f609b9a27de67ba2f21aebf306e64ea7c0a9a04a0ee5391b26aca1a52360066ba61bbbaddf9c425dc360de12c2b6b6ff18528b2cecfa1ecc6f53df7dbcbdd36140845548b3fc448f36f88bdef4b8450727aeabefc9309804d3aea627226fdfca0ea283a5e8dd086b04b1464707473c99d710559fa35e720ca2e8ffa3cdf7841606bf812e889bd85916d11be2734981ef68a03bde5f5c486c5d42c9f34a7435bf3dd102cbacedca873d001822fa993de97ad76310a9be057defd33a0acbdddb003e53239de5cacbe215d27070ae2471c1e98452b73d6932780f96937ee21978bb0aa22960e56c81b6a8708ab706d22469ea0ffae3179a59d43c2890983794e41f8a5167d2032f392d99b4cb40287e507052372e5f2c26a3b877c6b668e30f315773f0f7658e815bde29cfd106a92adff3f96958475c89c2f221bd504f57436223a95816a1b3756717198ee4ed6e304432285abe75fe29bbc951f6101c93fcc8f440c01c95f694932231717f86d47cc62a236639ba1f7354cf91935c23838c23a2e2112f503cb8786ace162c20723a1b1b6104c50ca573a671613b31923863b02422ef388b8e7e982f0589a7f31663ea242eb87b12c76aaba5d638ad0d96c39337f43c271ecc0c3be2e81147fbca1564df7489e6902fc00f23951e1a8979dc0f139fe08ac4a3a7ed202795f20df726c59c55e2e3c47c9169d270bf2d304426e29d140c24b859f16d55042de4424323dd9eda710155dabeaf16b580a09afd1b0194a8e0527e787583332abbb88e140ec5254186700c58323455bb6bf4cf8717a06c1f0aee0e437ce308eb145d185bdbef3dbf6c30924c5400d2c1ad4e3a28e68ca9e46c32d9cdc741a3a4daea723fd149c6dd09257c47a1e3aeb4d13a31d95934a7e00eb4ce5e0b68b3e0e83466efa0afecc18bce795f1a1494a429d6c7918b7f30f4f9a8998c0aa7f5c0cad3b0a49c16718680b4ebb3b3a3d016095b8a2bdcc643a5cb598964e628409927240cd53d66513a5ae69afe902bcbb425e6661cf6ce48d4d773f7e5eddaebff8d3ee2e11df201799bc2c1bdf9adb38915834bd4bb7072249a578f6ed7974d61d8e2a405a2ecf1069bf663da217be4cec3de5d6c0299c634241988fbe35946fb64efa8a96005205d938623382dc84b5790814069fe1a527bcfd2250da4420f4ca060dc1c4aa5302573c1540ad8bbbf7a6fbb42d135f5fc777439db8f77b10b11c9caeee9888c9d3cdd901d145038653634291fd229dabc796d8b0c7dcdd58be0eb30dcfc40597dd99be5e3935cd1a5414c32a8949c56b2c61d8e74297c1ca9a18f669e1c0bc60f640d217d7113251424df598f523dfa7e8d2841df4a1d385d63c6dd7cf13bc043977ed021ee7b4bf01e4ac4fd572ff8a1044ddeb06c9fc0733a40103267accc13b2ccc705b562c4bfd66d40dc29437eee9de919c607fd6aa6bfe789bee98e6564b9d03791d9a747f6e768e4558a0983374007337c6467931bb5474c912f401b90500887237e50e4efcc27120123a8c1aad434141ab409d32cc6b6641cf2cb5d13feb73736826d5d9c68bf3c9230fb8ce449f11e7ca99dae8962f401b770ae3a3e683b97349777f1bde71a720547dea1f70003b92a8ed55449f1677879d17265871878bf9ecaf27a7b182a155988a6ed437a89805401fd4a19fd4fe1b74ed11f6672c88161a41efe647231e80674290d01aa0b85414f93d9d5fdb9b18512273f3a3c4e97acebc2ee26f3d2c581f14baf5f9b3f6dd71b76c2a0c9bbef4c6e264b73600773db75a26693ee17fff322a0f6e3930599474dbaf7feb6d341ce5f432f9eef2aea86ab09f0f38357e21a25fe9010485ddd6389fbe2ce53ebd9e0242331abbde0ae1e28b6f4351501c6aeadaf148979e147e8141ff3c4d6b4e03883a303854ab2bfbec555654831eb0ae2a029fa91c7d55442be6c3ab62218d75a2d6f5208334b427edc496fe5c0760049f303c9003e381701c57bdaeb6600c5eabb46213e8685788c058ca48c3a597bceb4910d200a406a7e3be5f0522090b9102a67664c0efacf8c9042bfcb1b7aea4b2ae6fa6bffd7f40c0dd6e47148ad570ffd649fa43c494935b88f092221f433db8a987417eac8a32091e8e50c779e95836c7bd4da565e59474893fe33d245f9206eb21dcb4783440c55a530e134587171d1f4da2fa69b9f311f19955d18eceb5a03630e132f7564c4345a363cc79d194e37a36f36c2583857a132c01c09fc858fd2b51a779c97cd77b9924e9251e988d251112db18dcb1ae104c34b9366d71dcd5828af50d8c34bc21e04103808d27868b816a8c55097664a7c51ecbe0e6b377b3c11ff3bc972c5b1cb03091f8f405a04dedea3a046bd423b39e103845f6bf9fdb31f6650d4423ae5ad803c56d999f4b4fc207444f7c43553b44c77551697d87e9f2c04031a15c75d63d85ea6885cabeb897da6d58df4aaaf8118f1aaa5e6f867540d559151fc22cab5a027f39059435c9dc0963c1a454dd96f4a25bd930936e9b6cf09c0974d599de063b738300cf54b2d73303573e93a161e44e638f58798da3a5be3725e4a306e38c56f5fc1d48d8aafa4ae982c361a9c1bcf25b5837418c12ea9b4e3afefef6550966060aff37530c8174d71c86aaf1346c8cf0e22c1879ca5b5d88a1cba3aaad5708b7a349e566bbdc7ccfac03235db81748fc71b08a685b36cb0bf7028f1da5a700abb12a7f8d2784a396a8637134ecf92c71129538296c209053cb2aab02b8182859073507f712cccebf21543368862e4e80efc8ace91ff7d6b32228afc47676e3f859f74c24e73cdd5ef84a474af53d8e7d7c420141090abce28ed21121cfda51c8c2778b79f0db2a4de97f46535082274146a3a2aba8faf9147f77cc00e4b59149151722ea4fcbaf0de2597ddb70713031477d11e5cf1214bf96214050d0e0d92e8da6dc055bdf5d4a58f52e57eadfa5f514bc6019fa7bc92d42ef7002459def46b465b58d465e5aa0304a96e7b1ef6985d1577effc93ca934b92b88069c9fbdcfa3c1e2429750b906899a0c96653d2abbb6cf4356b7313ebe8e2bf91b0a138d3c749c74e573ebdf9fa921a1a41ff0a7090a82e997c60505f16550547a0a4e749f5b732299a549b41e97e47bc8756c08a8ea2343a94a692be6f7d2077fd39614bd0d526c2b3eae6a5f558968685a15332e9a37d11eeb4b4b28902714e7bf3b9403abca9609a5188aa0133fbe567aaec435a6d7c7bf43e3bbdd3a140db9aaf7ac3fd4119cfcb8804b81d66e013260dcf23b7e321eaa65e1f90dba5184fa3fac8e02c8ff23cde3c3124a7e1da178bdf59a5ff237c7e97199a9f59124ca0a1b2612e059641ab112b4d8372652f1aef2e9eb2134b51b3c259d7d3f02895a45e518278bc72afefb6633081fcea2e037c8409ef9cda2b53e536e54b01e6d7c152d6ea0e1e99bc0e23db2780e253317dd2246c3d9467fdd52ef924e4201ec5e5cd74a9c942faf52c52209da4931fe7f0eff93e2d494fc8a94042d5a81af18d7864adbfb8431ce743e5ef9ab32ac73940e5aa4710d3a3cfaea15d7b850cd3881a9b903d46e045aa3bbb659301ad6a603ea744d50a48c0ec854d2afd47bcd9cb0682e244eb9458404c9f4027a16e3eb820bea1bef82066e9a070376c10208800044793da6a9178eed326192404c298df5fd5621a3dffaedff7f93ddf6de7bcbbda59429c9370b910b5d0b34737e93ae2ef38ee95a441bd2397016218ae42c81c5f808117615620fb147d3878347f724c2865a8abfd959a8fa16aa1e4d54d3344e9b7376f334816da72abaeaa6aa9e744557aa1621a1aacca736b3393b3223b9f9b06d5a582ce1c346f584529de8e4744ebf5a345f9f4a9608e0d2490518c08c4b0fb5550d1e6a38353cd45e321e6ea86f968d7603000f35d70c1e6ee196b2e1a1d6a2c1434d67e4a1b6f3220fb722289216d1155579f53984a5abcceb91942cc9204b31b214832c812e5dcb9125185ce64459ba7ec3a32cb9bb803cca120df77894a517dc7a94a51921ff78942518f73ccad28b771eb9cd694efb5cc9d11480936e01ae66a3a9341618801be5e80668030cb51608ace14639f2803334dc28471604408d1be5e8038e40d1dd6aa21c71a0ccdd502fc170b3c9c9bc82f444514dcae889a2288a9e6811f45429aa66599f4e980c574b69369a4abbab97eead974e6f5e3a0d18725efa0bae971e82d1765efa4bcd4b6f39bd74968bda6c5efa3cd9f6e96ad17cb56b1e6a5a385ded3d689e398fdeb44dd3b4cd5fd335a14cd774f584f2dab29a659d840b9a1530b20bab398c8462ab733cbd5eccd9c301f3687ca8f1ede1407da8f141daf9b58b79bdf4db7d884d7ca8f1150c92393f8fc6b2da9de5b0ec8c79aa4559369dab73cee97cc35530dfc07896086bad5ad56aad9a4d76b59456a449596b291e4d96598ca301f871e63170bd0505a993187aea6609c2b0ae51114954d5a29ba8a3fd03adccd152a924b42a5e623409ad0a8d8a28925e2bc845d28965c71cd46ee20c097ad5a22631283dccb2cc3350d6ca2f39929873f5de38815f350963ad34d60d521d22d2882ccd11d8f9d3e9c71b1dacb48f2d2c5a1f36aa6b5a5290e2e38cd96717e6bfbed873392c579e43ecf4189a14c6d09c16a57451477b3eeac7b7def9c73dee798a8398c94fec48d49288246d07918948ea41d4c1b3c5363c508ae7f9d8603f9cea3c9a352c9b4258fecd3377ead1a405e5820a2f4f272cf3d9e298c04063baa62bda901eb9ebbd37456019fc3883a12d88f7381b704e8b9cb0ccc2ce0fb5540543d5f931f66cf1a4453ae0cbf371c96b0b3089a7aa2892eec49d71c0ece3cdca4649ab455236e1e9304360c35ec9302c8bb778a8a558a5e56a3772241b24736adf50c379e93304dd4a6e9a5445d4c1f153c1f9f16898a6e8499e6e9418427652669c79345e8d968a3af8bd1a6f08936f4c75c44a8925a0f842cd08247440cbb02cee9e7f7cc5eb178278c4ae524f3c0aed89c11ffa19067146f2e84d53a1b45b52c0980e35aaa773d36b80e721763d06e2abf50ca545d25b2fc9c0ba6b5ef6cd0db888373cb0e2638a5f8e5141eee392970deac7161654749ba64229374445454545c55d5c9e789ba6c25131723eaccf6ed2d12e9fcb61690e0eeae4c2fc7787300eceec7050275db09e5feda3e73c9a2ff69ef78009d29c16519d1649a72f3061a2052fb360bd39b960bd4c8661a97fdee22c1ed616965a5740bf21772c47e9cabbbb31bfc1867eb457af0dd29dcce78de71bd607a4562bcf400cdcf8f65593f865ad1554aba8822eed2d47a8b7783f1a47eed89a92a32dd8b0574d6a3589c120fc34ecd2bb89c66952889bc41eb614b48816490ffb869e28aa4512c783401fd7423a50ff1c0214fc1c02518e54b4603f57f1937beac320cd5d8f865b00067a9cb01eb2675dbd413cc83c601b193dd122688e070c6bb560687f4b0143d06f605853b254e568a6664ae5de0871e8d026eae29f1bba6836a0ab1571c982f54ad1249d7a59d7a5216c9324326182880f63be67d0437e143bbfccf94a27c4d212b8cfe11d5ab4b14524792e455b702f5ed229bcf48c1dbbf1dd1b43774c318f0ec6a0c1408b81268338239d5e4e4a302ce6d3477d06b5d417b6bab310927a18431bc7942452f1831c7c764398d797df1e0de6120bf265a74d4b2fe829ce488f3af8e515ac66c399877af4cfbe1b92abbdacd07d5ce2450a9a58118fbc8c624a28e6c4f9c0b373cc91abe7797476e5f3ed4ce695fd0704282dfa9f173d03eb80e1a3835147634f991ca10b3b57d0858f8ca315a98265504b51c19a3e116334781df9dfe9d9a3912e8b39bd4ca97f1ec6340d3e3ac7df8da6befdd9771bd5573ebd49e20d0b5cf0edd1c829588c9419f150533512d984b5988131442e46992903eed9b3310ceb6e8ca5bbbb6b9e91e02598776ca09a20ead800e82711310591b280ca60662187658f29c24d11c299fa9b26cd9494820db514bf62d0ce3b70104bd32583a8d52092320725f1529b814d7272e2a573f46483d3112f3da4a957e2a5672ee729456d5e7a6fa0fef4b6b154553d4f7259c795cbe855af7ad5980c33b4c8d0f87823822f3eaaec746e761145d3d54da2a7d9051139ecb45147fc0c6b0d072f3fa71e6a46ace824c419e97cfb8a3823fdfb9c5e2132f081dda447d2b3c6f936354b8ea4f74a8ee4679257743b2e5a8a77c497ce9ec709eb1fd21c8ee6c89206833892aed51c598a26538e968a82d552f26310b060323fb6b0f0e2c346a9542a554e18c457bb1203afa47c64120328a87c3e31254ee50e1102012dae7287a8b4a8a8b438097098589c85a5a53acbcd9c8b69267a1545d23f3145537dbc093cd624275d9a353535353626596337cbfc3e3291810b3e1f99c82007524b69a90a86b5da905f41e877738221fbc755ee7763044366f79c87e40dd0f77cc5a3f9704a10fa9da7783e3aef9c932186bf710755451bd22397e23c7aa745d27de0327ea713a3491f97a10645bb748d0631e0037c2e5d8341d481b9d46c5e6a3678c960a8a95e6a4720b1c401543cd46ef0d2231be0e426150f35235ecee71fbc36843a8b73396c3733d7f63955422080e50e21c10d93105c8629c991d30d133d72c261a233b6ae683d7b8b47c3edd1f8c0653c36e79cd3072ee3639ce92729dd0c4d791e85301ff0db3fac8790c04d9107107a0a106ef2098b5c14de78284821d3c927489d193ac9858e0db554cc19717451cd402077ae4604613debc5e29c13c3306cce897577e7501d598aa62877746013cd7182a5a7266d2e9d16d1a4ead2a9a444faf498875a8a1e114b2bceb5f38b1e1195f81a0ce91335740955c51929b150d1f0edd6ac46136ca8a5e24b0f352d342b4a2a1e6a54684b5e9eb4cf8bf6c40ac82ab57ed6822fc6821671245dd3c0b05690828c050098e04c43d74927b69ba1a9dd4040a0ef1bb24f20a00ad65083971e8a6e2c69a9906ef1d2c319ff124934278aa4f7693ea9499a9197320b1bcef6ea5c5fcde66a29ed6a4534502ba2d934a9c1707e839a8d96fa504b494d3ab1dec72526e0e219b411455df4fa395187cd66af477d066f744cb58833d2eba54b8833d2e7a55bc419eaa447fd06698edca24897620d35d490c372d246065f2fbff4708853a4e03d7c638b0c27be7a9cc882c96b3eb0cf9c6b745ec3a3e92892235a911e491f7934d639cd46b3a95ec11048f7d5ad73f56af66a29276cf5504b6945a82a85aa6e2b1147d26b783fe67b3df87b1567a437176c48555a11cfa56ba9265997aed9b867effce8791e78e473183e10045df50a62a0fb0eec465ead5d18c473e7e69d8fbc1ef53d1ff900c4571f813d6c5e9dbb1d4855ce6dbe71dbe635bc1f1bb852c3b376ab2ea9ca39f768340d0600783f32700648918098b02155bd74aa6a129226e9bca44e5a249d068f86419ab3049bf974ce46d734b2c49c00a41636a4bd92392f5de6581b7ec952a3e248ba5c72059d974ab0d8c7d615391f362aeac05eca2c6c25438a8fb1449dfdd68f5e9425ca26672e879d7c694e9c912eb10869ce003a8fcef5eda7974d7c415147fc58a96c6223768f50b06339a9e7f96cfca4a8c4b8c2d2e2027aa1e1382e4134086610b2bdf9040d22a0790581d85cf379277b3b54df4020b013d898aa9449b0ede194a3eef8f1841e3069379a1848e6d16bc0740cec8182a06df6828b3132f6a458b6b2323195119511acaeacd4de9aebae3d0f17ac26cd56144d28f6c55b3c7a9bf3d58ab448b3e931bd98ae7905e9fdc03e84a6fbc060e8c57990c166075394616a712c95b23787214356fcf3212a4eb554add64e30879716f07316dfe17316108824ec40acf8e70cee409dc55940205484b0f88a0b797115157f71212bcee24254fc85c5577c87175761f115e7e1c555ac60852411d2e29f0b81710ac50a49b203751817f2798b0ba10ee3ecd184d87768f1cf778071ead10b31a8438b7fce038c5357718cbf57a10d390ce00b357506787ae9a0cbc432faa2e2610c378383a10bc3a67a899c5e4581eab05667af6874f7a42bfe5113d0d39c58c4587a324e65c5a9f3f0f9e714149264071530c4ae2284fa03a289ba8a5350081049785001857c4e5d48921d3ea7601026212baee23b50577176151088240ceea0e22c20102daee240b038e5d8a3c1815fa3d19ca8a269e5521650c88aabf8070a49b2c30a186267f11557018584180ce9a0e29ff3c0026a2c50bbf9400ad6e964bb9a534a6bac758bdba6793435737a449c4122ce248144d5cd6d36bc94547c072f9deb3a8f6673ce8b1e4b0f5d82e65088a55ec951fb8076c1de744eab60df23f41ed9ee91cf5f5aa2d77139ac565bb857b2144dac16cc03a209f5d2b193e9e54693c7a3c961c89028472156f3d287d01dc97dddcba52c3787212d6094231890e6c891eb86180ce5f0f98ac7df81050482ba8a7f1e4db30a52f8e945042396e68d1cc9f9846d48c70274d38597d5b99498c2b2c9cd9327ff2b2b1e4df515cf4737a6c25d58fecfa95741ab2eb621dd099797f8c2d293f9aa5b3db0b0a196724d5659093d95245e8c63ddc7a303892fcd797477cfeeba5d1b868b0c5258b0ed7d05cbf9e48c2f557937c4ff7c41826d9b1da78a5260197336e7cc3210e3b00bf48079c95a7a8238532a3916b99981c46846e8aa00cfa18e679f7959f10bc61d3244d2e6eca348ea9c552e83a1009ce30470a98aeb76f659051bb23adcde0978b7023aeee21e6a823873621bd2bb4b5310291151247dba523c03537c82ec4def2e6dfd76579eafc709eb930a36bb61104aa2143e04e0cd61acdf6efde83980a31243fc76533eeea0820d83f8d9e4a3d70006435267bbdd4f97056201970b08f480aeb7c18b589041cc79481e8dddea3a6e084ab9216541697ae5c0901f8800780a96299295146c4855a10c0469d1ebd3fc213d45ec13760d7b3e5cf9330a36e417d80512ad264578efddc86405e5bbdbef3560fbe93cba7fce95d65882d01a9284bd8d28e1e9659c0a055b433f30cc83f8507bf22e0dca4baf1e2ba83d81e2d261b552a968ce6aa542a2522159552c954aa5322d1567b8afd799ddcfb22c95ede4b0b014762fe637740c04b21603e98a4df306a7491a7633f985d338372daae2e6a60a9cf974f20e12dac40d3316bd0c7c62e7cdaca27d4eaa62bf91734eba6a918a2261deb8e3e78c27ceab4592a3109937bf3561339deb74cc7934c879382fefbc38cae4284dc282ec3469fef38bbd62e00ff3dbe969d3b40e44c20553677a9ca8d80e1d3970b8b4c1b17b7f7a3e7adc528a478fc60757af00bcef7d7f7fbe295e6f4873fc7bcc1b2e20cff4f67a4ce76a57aff5e9f9e8b100ac082aa882cefb478fc11e136c25c10907bae909058b397b6b4f5c8c61181b91e219e01881fa22b772c0e256461c61ad89978e35fff0c226ea18b1e2c3186c880a7ccafd816db8e1a6c54bdf71c3ed8997aee3861b0c422d8c978ee3869a162fbd7443ed89edde17007803740141a0070c69ad3e2c7869a6f6a4091ba5d0e10996bd298a9e66b78d0d17d69f8100b21f9496422549c2878dd2b1f7c32cc5440b88f0849d22a8a00a3960cc400a5cb05e3a4604154c5e3f75b0940f9640859f3ad63f4c6208264ff8a94373a20e76e93f70fb2cc2aff317736c3a61a6a6cd9c73bae69c73ce393ddd24325d369a913902ebcf2e3fcf54e51e8ac9115554ba041e51205481b25ef228a44f78d983fd542b55fdc04db00ec6089e4c8109b657d3c8cdd3cbd1d3749cd868c3e7d227156269823e9fa9d94cd54cd18f2cf2180ac7324560359fbe044aabd544d5e2a2d11445cd2dec0ffc2ea06c3a56b3b9041b4e97b661d335a3d4fca427556b15cbb8e75c38cfe3b69468e2b0fab57eb4903bf778d88e815cb7dff05073ecc6a5a73873e3cad76e7c7a8a3ae4cb48faa19f77fcc07ff963d481615e69ce9c0e02fb7117f7dc5e75b759394e5a512802857804157ca6f904c3eebb82dce35a13f5aeb42804027bf4836a0bab55459ba4833cd5f5310cc67cf368b0ca9cf70d9bd3d1c26eee80cd499318c440f7ec59c7556ec618db9c8bf2b3d22255930f4db047fff41b27435eba76d3a44b1e54bcd169a2e535d64b5aa3f382f7a06eb8387da8dd1f5e146951fcbe3fbc40b5283edf1f5e10493529b69e18f1510b3fbcb0f99151e13f1fb7eee2f5e3f2f960f1f31c24d19cf89c055cb9a11fec1dfdcea92a343d499c620a263e499c620a9bff6e683adbac72d81f1cc0205dcd1c3b4f6095603bbf01863a00448bc8883b4c8c180113246890cd2cacc97ebcade35cb0003579b9c24ee7609260a773a11956583ae3059c176040020c348e40c38d70abb0f38245006320420c3154c4c8702383cc143ab2f4b98c6c3941f2b1db99413404d14808a31a52585a03004100000d4c689859325343ab061b40b071e3073702e08300c078d305300025032040140428001405203d412ab14a387a600f405d3a8723070f72e8d871bde93618c009031ca0890320800904f058a279f06b0b1e783e3af74a586ed5d4fc7cd3ca94801dd8990005e8c0ce8e03bde8309358221fcee797530cf4141360437363ad0812ee2394419a4375603c4cd820fd3d8061907e76d9e9133ce2fd60d79c8b1e0eb707f666cf07e6d51b0bd21bd07c5ecdf9f25fb1c3495824ec064e9f21aee1212a1f974051b59a34811986e51136d41e9f2fa35a4424e4b5ca86309f1e3f84813dfab176addb90b89e80bc193168b1fe3c62791aa175fe420ceff386774c70a6a20de912bca9ec3033073ec11076ea1cbb7ce222f8844d23b60361260ee4ad1f25d8b9e621bf1ac3300cc318e3360f35264bac1215a5a5725ef306b65936b0d5c35e61188661aec120561bd82366a83de11dc5aa9675e00f93b5549ce955ad76dad82e069ebce22c2d9fab30bfbc74dd6c615951f9422d99733366342d422469a9987197433b50fffca31e84494b451dda6b2a279aa6691adbc8114d75287edeef6b6061fc48e64754e2145650f1f3aa3ccba78185d961974471126f4e46f8d5a490e684d355a449d18a1f45a85a449d74299a54ee100a26a9b5ba06d2538b32ff783459f68952b29d9efa63af58c04c57aad999c7a399b3abf5f3ede38d12293903daedcc4d4a59bca55f3cd49650f195097ecf6fce3999f9b31e0d77d374d4f95e32187a6a46683492ed73952276cac0ce8e3d738e993d03b554910a76e7dcf5152c7f1e4de6f9617e10f90cd23b44882f887ccd3be7f67a60de7983474ededd1f57ec74600d7d5c52851fd8c4c086f475f37d3f2f6d9c4ce1fbda675063c51918d890e6dc890ac1f7fd3e7a3db6cde75432592d92ce7ae917ec620e427007ec7c410c229fb91f57ec70a7a55c60c1185a6043eca610833dfa37242b530c3193880d69ce74aa925b4f0c26d4835d734d4b550985e586d0cf5d3e3ac8cef5f5dce0e52df9efcad5f38d4c98e0e4bf2b5b5827a3b09c5624cbbc3bd38c70d61e2d255f562bc24efa3330ec9e0343ad499bb7b7cf7a433d3a3e8c47d3f56aaf0d897bce696165ca960286b3698e4e931ad43cecf901c18e9bf1718917504c9b4d6661e3731e6e9ee5d09c6de3b66de3b84b75b44cd3e1421abf56bbc663816dcf409ad3aee9e4e468291d9d1c2739394e74422f730536ec15e8e38d0eb460d3af55a182c94dac56322051b1aa674c2cd1c6b22f6cd6201b6991649b89b26c83bd4083bbf828923db51ccc145895d67239875d989f97ffbb8dd2798ebb9e28b0d1c42a60f244146c6a4cd97373579f27b0ec8df56a7ecd9aa999e2fcc3f9100e1fceb36b2c458b5a20aa0b1ed01c2a9cfc1661432dd5375147107e99b2291ea765374958b0da0e0c2d680343907b064e0cc3322cc3300c03b38f172d92597c04838bc7918122136547e77bd0c7d1228992a56f47e526037d3e9471553ae5f4ac499613e7cc3e9c2d8ef3e673b20f656610628906aa4545606f6259966515cba8e761cc6f9c3f4033611c239d93a747c3b4b72b6bce4bf9392c75aebd768fa67b896fa7b7afdcd57cc44f718f26c56f80cc1397e2def5a8e0b98b3d3722c007208aa4679ec36abe848d5878e9a14c183604218e1986908e80589a758a97322ae1a5734458cc310f71c812e8025d38546e4072e45d9091e7eefc14eed21abce7dd1425cf5df929373e10ec04a5832e2852c6457ffa8c250ffb8442237569a05666e87402cd1abbe3922394c4893abc67cf9a34a9bd9f3dce4e60f66fa7f5ec392c9d6a726058192832af26b52c4d18970bc6254318578ee72933c51e622f6100c3ca81a1ad6008f2401b1a280f58a3e592253004310c2e19578d2ae6f47e605fe3c6cba1464b068acc4be6d58dc0d668c992f5b086ebe54d0d9d8f873572180c6bdcbc077471f6b2e97365746470e448d61b599269c99194ad9b97cec9386912f69ccf9c26813c9a395bd4e2dd10655a7287be9c3237d6ca58114b1c4773cae0c8e45c11753469927c124556c41d928b6843be8c1591c451345b264796a4cbe070582783134d931d743517e5a5e7d541284daa0ebe2ebf77e78c8f896143ec5d8d6948576322819b928440e6e9a76f384c972ed8ef1567a4772a39aa2a3798873139ec74ae938c3acc85e0d7f6980c9dd61ad8a35ff38cbe741928515efa0ca9198c7429620147264a93e214643c797933e46528f39ae1d43653bcc4f8700614d599020b28f870862259c3e06a124c08830bc6d5a470b654aa6852bce293f0a14a932eca74f132ae2892cdbd877530dae439b9846dcff45c5ec9194dedf9009f7aabc68632210e195793da27f8c37cf0bb21d6f30dcab85a340611d91eba1fbd23183731d03d5704866d6f496103f576e921d40da5a837057b680f11c19139754933a7de03f59ead16512ae3a2322e2ae3a2a1540815221222124285525ae825e4316f446043951b1c241b4228e921948b4baa496d3f2e594108546e9a440305d24081ae1a3c50608f7aa8bd7ef7df0db5330eca73430df6b8df9e244ef1c5163e499ce28b20fcf69e9b244ef1c513b85ea2bfcb2b6e76df8d264f7de9d150b007f89d8d0074350db6219d58130e1c2db3234b38e248fa6cc591f419c8f81047164bfc0d0c63ef252c7b0ecb32aea8a3e5657d99282f7de7a56b45d8e93864b0db4bd870b6240e6e6039cfc4fa813027d7c429c038c2f3ed1aac0ca7861220d460b548d668bd9461d550f2d261ae0d3d922568cd96b5d6f3a5b08cbaedf6168347d3b977bdaf374e01c690e76e36814cd76f1ef21ad01f5b36b4483ae8d16c200e1c322e1917cba069220f74e9c03527a3f34697dde66e74dcdd7ebb718a2facf0dad5520fba7ef370989cad41c27786037e3b50d86fe713c3d68464bc78d989c0c629ba70fa3084fa2c6cd8a9be1dd025a4ea9074c986160d990ed3c240970e9a69b6e408c6b344081542bd74ea2ea9d97249bd741b2d19574bc62547adc42ace489cc7c4b0210d140d942c618e830688c313c28632ae9732ae196bb0f9184306020e42520a14c1c598507bfdec6ac5bc7628e25318cfe5b0b209c98ac130efaed5b9dab5b116e24307bf70fdcbc79b29b47eeb68e89c47ef40c337101a14209b60c366451db29ddcc41b9a1466ae791053cedad91550f51e7ce8c067fe61109f05e9d77cc83e73ee869b356103fd37ccc9ecf9c8dc0759461965dcad0c7ba4260906aab783200906aa877e60de8e8140e4679db7b787030efcd5f92b18fa889f01c78074d205919a6f3084c3d7c8e40485efdbf2d1e31c9671a46071131f1070c352a29dc0862dc546860d63eb0b7b43939cc70de00d2d9aae80164dd957e0a18026d5239c4bef86f815fc613e1056b340aceef6901e4d2e7a9f9ae40282f8c329ec612034bc4bd7d0c0baf81097e901adfd803c1fd2bb592e971ff3af6952e6d37b48ec9870c6672b9f7546c3f390a556d2a3e9dd070ce3cd0a080c23ce0c9719362b74137313700c6cd618b65dde064155588c477596a2455c851396e206e42a725c7c56afb154ad0522fa1eda5dbcb667382e1e320e37498075f1e67697eea1c190f4b0822109ee10e52804227aac6e801f7371ecbab047e302720ee388613db134c3b90ed45dee6a5ee6718e3b7e92c7a7c75aaded3e6c1608dcba603b876daf3fb061779396a24b26244e62b35a8909c993388a1f7615ff82cfda7968413add59cbd50c61e134e933a76b271bb2ce4fef9e4be1d1a229528092e638ae9300f53ece7d2e8fab80167ddee2373429059cfe31465e08a57c73aa160c09db981e7edf757a2f1167a687db73de600844f437ecc0bde1f268d1f48d0b36c5c3d852408ba6a7388feedb43bbf536a2a2e221233f1de63610a268facbed21b0683ae8b6116237e99c25a46ac5a73712169fde2be92b8ea9be82487efa77c85cd6fd6c77716681613bc83d8b31ecc05b075d66b568bacb0d39f0d65b6ec8df629d876cb9f1596ec8addc30e5c366852ff7879972a3029ad4a48f4fbf21e553b3239c67dce7ed0d6240f41664252d9a9189ae69d1ecd316868d4c9038797ed2a593693aeb34a97db663a5e972349d39cfe567662d8ed8358eeb30ae3bedfe284215df03e3fd3833dd65c9c4a3e9336af1d3c352126c24c2e4b111c186cc62d956d26137017d1c25e1e65f3e2e4982ce739fae32194205cf5e8f23a11dfc036b92540ff14043473a8f262ef4e4bb164dab8456eaafbd20399a3ea3d8be91251ecd922566c5d1f43923eba71592f0ccfad6b6637b65f3d327d6793e72e8bc0770de790fe0bc5972d4c44fe7ee0d3207a9440769e22147d337306cc82c66296952fb4462081130f918450d24e6abf79dae4d8f71ba6c068672f5d3a7cb6260d8ad9fd3676b4ad1a4b06b7eb262cc047bd05e1f081a03000e5a5cd8e81cb3d4c2ca523d45309cc01736aca70f42339d5396a3b215d5a4e670fe44d5225a9435418115756a11d753f57a9215d5a4d8310b24e97472312773c2850d410e881fc1506d9124a39778b1cac9709a5441efe7ac49e6e4d9591fdd39aed6222de26a9382d951957c5db1cfe8129b6878f6aa24b56a5258554d14e95234558ea22c0c8267949e186718ac45b48833b09e5850554d62af489ae40f5230ac130cb39de77a8521acb4882519d66d4dc5cc254bf51447ec35f55c4fb5c55b1942a03e522184cdd7f0910a11e8bcc7cbd1fb31bf3deb7a466e4f8c33611032d82149e4ed5a44dd362992a6cb88d17a2588c3666008037b3c7d1e4dc11ebc61c0c5580f57ebbf16d6b3972c653a72d4366bc952f6ca5adfd9ebb16f97597c6c8d71fa2a70d9162c4805b44392c42e4007808b1cbb38c4724627086c748e228eb1e5fcc2460ff939c6e86982cb61b9d6151ab8193b24494b1f922482b818d34ddbe36cacb947a06b3f4fb6141e754bc9fdf27d294f9e2bae3dc684f2e54d8ad2d52266e98a1ed6781e81ae8d34fa88cf7186a59452c6528c9123478ef2c5f2095d9b1211454d89d0e273ad31c8787a254ec6556ddbb4b9756bda29ead070a03d24c9cc926cd543d66c52b50776cd66891544309b90fa1b1f6f8a703dd77d27d8f978848f372750bd11727e868f4b8cb0faf674a8a9e165a21e12996ec8916946b121bfb8af809a4dd09e509f9b07ea40b8b04c9f472f870fe4214738c0b08e630914d73c815df2a282f6849945d7cd2f3a9d9519cf9c9712052b46d1c2a296a39385b51fea5083211d5a1cc67978711650088bbf380c2824c90e2cfef2e24260bc050cb547538b47539d2c576bddd022e92f370739b2d22716e28d56b3b9a48b235cf1450eaf175cb278cf96979b176660a109d31ccb65d374b134e188b9a344cd13d36503fab51128d81af250bb8141cbc966a8b1de412d256980515618c028edfd3c74a9c3dc1567b92aaea566dc680add6882b9d164b251bdb63271fc9225f9e29db65131b70d77af5ad5aab6316263d3465aa5498f26cbb8b5d44c49d08ac77c14011e15cb6198c7f3d1aa8ae5b62ec3e854b176dbb64de5b35badb5c69bcf67ed0ddba6b29b7b3c46911c79377a1fb0ba74cf9bf7e6b6a5aba0f36806f40d93bb91490a92f8caa81b18d0a5688a26ef4653968d02506badd289f5d7d8bfcff9a3f9d4d7f7b9a73fe7d1f5254bfc62569c91fc04888a25320ad6df3fbd044a149f7b9c5f96447224bd565b3f602c5940fbaeaddff77d3b1d68d2f7398fb64dfa40c91e8472a1ce73c4731ecd1fef0f0c7d40fe8898dd53bdab6b37e453ed3c7de557e99ed0c7dcf7f1546dfbbeeffb6afd7c1c7f36ad7a4422c681d2d18a8d7b1a5a2499c53b545efa7644c492254ea536236c287a19e3c7ac2629b979e9ec8ad2a5d18aa568525ca264f5af97925b9cd3a8254ab6f890755e4b9608c2870ce565c8375c5f4d0aa3eb779a14c69daf512c50c5f8283cb340167506c320f4bb219f5ee4241469de8f76cd99c5621618f2e71f8fb787fc1fffc09007bc21bec73ffe797b341e300c42fff3f9aee6adb5e61df19c862e79de65253d1235a982348061c3b86381d801598200152c273e8cae2c8a7c187398fb2e4d7d9c47d354933e974eeb6b092f9d5951c7c7a5f30f3c97ce50f0013ccc3397ce4f441d1edf6e9ea9f03c6422741e7212a687cc64ce217c98555ff1bd3bc4f394effbdcf33cc5f3ba69daf37ddff77d9f7f1ebd0f68af7cd26d5acd303a39c5295e65ddea630c41f404c10c82b30c10e1624c18b29125367113427cf7a1e8b9d8655d4491e43257751e9d7501c64b979f17c7b47a77d71b253b00e7a19d357224dd5690dd01d978a6d7437e55719d5262141bc2b631d8034b6fdbb6da9ef7c99d396be494b3468e36975758dfb66ddb368c0bfba2928c797f37f4a4a28e493ff613ceb09f578b9af3e81f305e4daa59966599d4d92e3f16051b1f7b623d0f11b1aa9ae4399d9a245fed2122922418d1a3f1388f961e8dc7b9cba67aab6f1b3604cbce436e5b85419c89419c91419c2972ab919a7a1b206a762fc03bbf813d8041e4bb49550551d43b59c65e0e379ae41376db36dfb6cdeec8129bda6b2aeae88a7a517533f871a9bad39cdbf40df59b576b7f6b00ff06869cc9cc7a4e1ee7a8e771ee46d35cc2db1613b278ed76cf456fdbb68b69ad039bb27a02c36cc75304fbea9d1e5a344d8f9dde1fe6e775db3cff3c87826d0f3f4fb09fa78ba6184b9e14c491e71449358928aaaaae9e14c4d2670b9e932c7d5e3287dd1c1b82ddc0eed422365555129124a34836f88068eafc72dd651377ab97fed9022b9290bc74d92911bb23a2082547b2ef0ed5394e3e61bbbbbbdbd522e9e9505db70af1509d73aeb3913bf2016cea5272d41e7628573bd80d7e5c9b872faaedf32282e661653284975e91784e9f249290e01d9e5355f18eaea94b1e8a979589972820bcf41ac58b8a559b08ab125f59551567ee914a29a594997dce0ec53b24947e51f10ef9e217d5672ecf8977643b9c7121ce4049198288974ea1bc74f91241ca9097cef2f5d23357f8e9c24bff8cf1d23bdbe11d9f289c7121eaf86821cec8cf16a26b2945bc4c19c14bff44e11d9e53b4215dfa470b5cf298208ea4eff018116dac80e4b9410a0ade13831412bc043d2bf890f1d23f515ac458b0ed0c7e5e2d92ddf7b3f379f527ca67a7490dca495f6048c1cfcee765fff3fa44e952d7d4d4d4acc0248f1047f1793061087194f2f4254b9e21e248ba0a60405f1e90be3c272cd806fb06844d5cf4989bd876be99730c3621ea5879e99f9da843933b7224433b542038af1e8489e36e8807ce3befc079ca76e448ce9a2b6cf879851daa0836ec769e7a876ad2e672c2f0eddafd21641008a683e46713cb850dabeaf39a55c536d84336b4061d703126dc68c63d3b2e620822ab6e82cb611909a718d59271c660020e160d321882b015160f639ce38c3de77258958ecb61637d0e894d71954e73e9ade3a5b84a0b3be76d5bfc6755a8c79821493aff9a58f048a58d6ad44e0776a64c516654a3627f3afb791e85644591d46e34e5b03dea77cee5c052e7b6cbfde77e177b7be316df5df9957e3c0a8e0a37c131378babe0b0b8ca4a6b5ac56a6d6f6fb087cce7af64debe9239df1f2e9ec1c0b478765d32cf668b4be63920c5433870dee22d600f3183f1f695157681f9a1f31f82d4b7fe4310fb9f0701bde7dc0db578fc946c85c555405eb19ac4028659c6ab8ccbb82ccb38ee328b57dc04af78c54d308b9b73b55ac9960bea195cb16065ab45222984a56c8a38384aec953ef8419c01429c91fe91c2c7081500548e17e56202ace73c845b5d579d4bc28692f5b954d2a521247013c885f8fcc57b5e11679a90c03b07f31717f2e2a14cd5974e6ce71f3b87b990178f6bcec38ba6611688ae2b19ec813d4a617f58b7be5dea3d81e78fd31bc2c1d93a17bd1f937a96b094869bfbc06f6fdcc298cfa654d223e93c5aebe6e5acf3afa3f485838333b7ee868166dd79114334a805f6043f8297110bcf4795457c1f288b5c19eb673ee24fa924092b51a7161dd19c254b1a58595857d75c88c76f8eb079047cbc510d79cd6b4807cdabf3d0d535c71c04623369600e72243de2b826a54d93664cd34080c9cc2c53eda12cd22239af0581ac458140d64a9b54938ac8944c35898b48955c3112965d9e244a9e244aa2e44916214ff2248b90a85ae5e9a53cf12bfb32974a48020cc60181401500b9a2681d63f5f3764621305d76f74f56e37047d89051afd7ebfe681580558e15a3186535d473291e8e2c45538ecebb1a67490e153a2fad70a150445e1995a957d4b15a81cf9e51ceb3cec3986ffa79279f804246713bc98a4cf04ab2a40f22cb87921575b0bc74ed82b260adf05246e18510b19063f08ece434946944c78e94c6452fbde9fd758d2fc0343f609e67413c960e780dd44d221b03549df6ea35ad4a946d154a39a48a31ad5a4d98dc26922389dea22381bcb1b595a31b12628592ba6b057dd8a893a62a957a2efcba838235dfb8cde39af7ca944b25ad4a826c29f647db751b2f57ddf952dc9924a244bb29a34fbdbb64ea15e2f7ea5644a8b359329999225f984644996646517db810d9be42f3de3018e929b26c5256254e143ed514ad1a410952eabe01d9d4ba79787025a243db6c430c287b17503035a244f3ba8a883ddde8e7d6a9a0cc36ace924ae48dca5a21a594deede75a84781c73212fce853aee3216f88b3803c6cae5282c200fe457f5171782b9c785547f7150c75e48078f63cec38b8774c0dce33c60ee015f78a8fe0202b1993ce00d39920e8a1e7b1297500341fc7417e7e95dc86b00cbbe2e2e6eef777f98ffe2d1b8682e957449b2dcfab14b55bcf47abbe51ed1b0cb72ebafdcb8640c96d7797c1c236c8aab808cd3a2941bb2d31c1c9c9c1c9c2638384d72388e717ab5c9948de1bef209094577651452090c9285028f6b2ea43ae6423cae85618524d941738f0bc1bcba10cd3d3478c0bc3a0f9a7baa63ce430579f080dd9223b999a229097bb2566bd93def66ef5647ace7b964c952d76aedc7d667377bf61a40e3bd986ede394691cfaef6ecf5e0e91c7b1f1fdb8fcd3330f4017f58a7eec33af5203e7a3dac533026ce4ce70f88c873cf2de79fc4e9285107e71e6f270dc503d65a31500339ef36ab2495f48c19922559ddaa49dd77136dbae940c9e28cb0ec8c6a914cc9229ca294868c9229ce707068e3504e318a89308a514c84535d276d5852896c4929707070987124d73ab2244fbd1347d2e5a977706e7470c487f29445920f7b67255728d40a955deee98d4bc4e0c2cf9b799cb0b2c4ee388cc3388cc3ab8c57bc7ae9dc16a365208c699a031b4db5a3c9880d252b55abb5384dba8479478192bddac90636603700e215f67de3167f93c425638ce0d9a3611628035bb2a4120e07967ad82b545b8183d338d21b25b52a63b8edd5416820e020a6c62710838b31610d1b97699ec9a7e1fd76b55bb1ba45cda19ec34e9689222346b7e290b4a86fb7ea5401a68ea8c4cd92864d0e3b4533820000042314002028100c0784c2219954a829a5fc14800b889e4a74581e49931c874110420619431400c0801920001888b60dd2bdc7c0ca63fbb7082cae1cc64fc1c112fa5803b89d34934ebab626c663edb731291bc4c5b9bcacc47473f53aa5a842403280897ed9fb27bb7999f01cc172118778f06afb5a46695bfafa5bba8e07d0a7b9cce5b8f0aa5aa049b7b874fae50b19727be53c784477f8e152bdf842d6e633f8bf77795cd8c1cff32984ec70daa4bbf96b901f16600f24302617513ab4ddae99770eb062c8294952623ab36d7904fa59cea775a052958fd6bdcca90ef8cd1e2d04323c17bf0649a10aae2472d4172d483688a3cea681bd8c77bcaadd71c796462a4e6c68372a3cc905cae5f101bf20dfb282e88bc2d79e6d058e8bd5d79e12d878b500abd8ce754a0ae43d390cfff939fa0ebfddf92e7ad732a6614c75fe2a39a96214ca66acaa9e9f8952dcc867cb603a120cfc8b527a66934d9b9eb78ddbcaa8ab37dde7425cb6bca0c494b861d219a49b9db003c9ab154828760044a12e2a227ebe7e284ed3d7c6a9d4683f2d480577b9d3d22e1051b76ff5d5e1388999a0694b3179b694dc089472533f6c48d80bc1279bd6bfbe9a642abf7c0548add364a0a0409df8ac19ec036ec0cdabad967bd191da211e75a40ccdf8488e9a34d6616b9e87e56a183a19bb04f5e2c11115383133c42df22f0f96c053900d6248feb9808c467f090844673ddd857fb4c2106a6a0733edcfd40d996b416bd9b27998c70a60f8b12bcf2b56a72548ee2393a5da3645e295039c00d7269e0c4efeb61aa14de76271f52b01e113eb8ef5269e2612307b34e606ba1846c35c00dc175cbcff4dc4010797f094a51d3511aef5ae08787d28e615b445b4f37bcdd5e7f3b0800535292ea300aad08fba52c94a90aa7e20860de6860e5095bea6a1a23b117bd627ae9a4e6f4d759911838f86a0099530715f5c3767b0be5a22c028c538a3f952ce3406ab64c0ec2b3dc6d4d873f48fb24f1f907f920e4fc90477a237b6275a997e61b4cd84045cde333cd053d269d90871db92802e13d0a426b1fff43f20347d46bc7cb0788a6b99c0f80827bd9ed75af9eb6abb2876487144dc8bb96bdf3b047f4907eea31ce8e0551d4178940f682c1668c116c2cdc6ccfd67b586c211b1123c8f882aeacb1b9457ca9f08d1b9efeeeebbf47050edc0cb9f257a80b07020d6910684f0923c60db3e102f7740114a5a3e02f4907f904556837c7a9aa588858b54cd7c1da9ec737b3f15b67446dede0c84cc65277a8ab6a8e70f8aa8bd00bf01de7e4ab665fbedf5d30eff1e83338cd144dc154886626cd48d2ccf98bc63682c963928eb79565b24bee1f721c518ae8386a3ce7d65773047750779fb7a74207a9688d88b30571a7596f3e2c59686376a8a577aed6c4e2a2d8eecd74fb44f6a648f9b8103a62d0c5079208038810d73a29341f8d70196674f8c6038e32ef1880db03552a06c5cd980bee60638ab4a791600dac8489d8d22ac4359acf3e7676c118a40cd05e04beb8e59e41c65a2eb9ba1a46f5e231db3e9981725476aec91afd1ef2ecf794383ed81dce189800e5a37f77d20c673fa3b2d718d98b5df39e1ebdb582057810c2158aaa788772841b61b44ea3dae498c7a2feadc166975323a6c08f20e89d7c80674c3745e1bd692981afa7f1582245b056d5e6f4eb2b7c8158d05e23f963311e1a4b4b7126739ba557898b493d4618c632ccdced08e5925ae131dbeddd293f9ae13b5d5fec7d194228b70f051fe154a322730ea478af6ff0a1f8a387304756031476878578d46cecca14ade39c553d12872701b8434d9a161155259302e06840b08be1676b2ef160494cc170c3e8dcb9fe99216e3e86b98e500824b207ee171d609b1a325ae4d855ce73107caa33ddd4866d6630aa03ad8ecbdfaee6e8e125bc9398246e715b433d76bfd25bed662c06683c32cbd28cb382ea1abb86c9557f598e03db672244e251ab4d1f87ae99622d36b190d1b420a74f3d335ded72000e47766a12f549006327fda9e255d665a05c4be8cd6cc1c81725670cd460880682f1942de020d261e17143e2e1d6649470ab1918fba7023de98b5fdf35388226488c00f9ba702760474eee0c15e90f9d4df8d2184605ac42554ba73c40d4752559edd0fa10d090e06cbb2f5ba24758373f2788304a2fde350a1bccdcbfa2896748f95759eec40b5c0e7760a80b6d51788bbb48e859e124f0a67e86b150b0d022412f70bc30f48f042c6e1568095eab02f3d5a4250483582999a0e734843e1cc86a9e405407a555a00362136fd2f48d0a1d77ab1fbddf5e767424f0611a39420c532ea230c9206f7d8e5a593cb4cbe1c8e95c7c5fd97846e1a9b70babab394b1f183360b76dbbb24c9705c876565cb818bddd44ad6dc3f402f81803330752a532f835b1bbd18e34b60b0118e839f8e90f44a25bc09483a350d1b965d749cc5af18ecae5040c395ca620146300689e01052cbcf55212e6fc0330c624cde708688009d3020de1cbfe0dcd4ac45a46e40383f50c19c19debef600dcb1283435c0c93e7b4c7e9ad41fa629a4271c09a8b4ea3fd9c5185ce3d9db6efcaa9c6048075a4ed393e052c4189a6e6026a8117b44a0ecf54bc9738b9839827e0abdb3349b8c39e2b986aa44519c1ef781f9e5615b673c112234bc766f244d51a939da8141da08c9ea8da1d158230a8f318e5c682273f6ba394d30482af23273f143f6740fc5884cccbfe9fb01c444131495c2bf6d187936f638a392127bcf6b68f28419e1d093a1afb0c9fc518121c4c703ec961e2235e396bab728f9746ea9d20c31f660a83d36c5a79b0e27b5820ec8831530167683f15ec608a7a6aa9c00ecb882470d8ec909970672688faae8ec706b2ad0564b3b4620487f525565f9320cd953dc0169296c10c5560c63cc748cd0a8b0e3a7cefcccf73214a69cc08c3f73213f6ced79232dda244d6081b379eb66d421e9102331441547d8d58246eb7eb96e46587507458f32fb56a97321a458d3ce88e0b279915439221ba5aa51d4da9470d077ce0058d1ce4490443f900697d7228867f31d135cc486f46c36eabe5c6e8283b6253c451034e9b99030d8e627990e6959dc38631d79dcac3141048a57113eae80227ce3cd527b582527db238656c6c07f151fb93b3ef2f606b6a777efb2a4263d89222c2436d58ae942a98165187b442ab09aa37d4fb090013e3aa60fe8f0705ceb829ccb1ad6e48dea3120e11ba2b5e8a32d50da800f33919907312093404e56d387f597dc62556f70872bdf712c9aa1bdc02882cac679f4d524b1061a07e892567b71a8d0d91eb7627e9cbb6bb9b2568bf192b09021ab2e3c0ece90a2e242e40fd2df5a4d4a91326e6a8686388b65d5492d4412cc634c6ab9eb565828dc7c8d32e76749c4c1fbc8858d3847c50d2ce27705ea566b41c485164ad91cb3d4c74327b4fe2a817dcd51407e8be23b11959f9aff06eb73033a7ee1824152e8e3670552eec0085bacb7fc53673867959090a73bee684c5ee826dea9eff0550ae141db71bc522a9a53ade3a6762b69d1513ee9a3c89cc28285687b9b28404cace27a29381127b5d94c3a2341e5012f1469db9e89aa4e588ec51ce3dfceb590396d09f02a47faea91dd72a4c49d7c701e28430eab5febc1fbaf78e3e34e870d21f10c6b8789e3401e22f82ae4a792e27e47f29cc9c45113b3772dfef7ff7bb4553de622345ca1d7c68d66ac899d2c52ca4d765a8a186f98950d66cc98ce0d74a3a2c88f291c78d525357994417132127892b21215f2bdaa14d7a3f3fd8cd51693e6d1c489f09aeed1a32f2d3434377a7c692133bf726657d0786c588ee9cf594bd781c0a3434c782830e1b5f871a235853e1f53bc362124bf7356cd0e3d2f26b01ac60f031c12a260ade4e751f1608bdceed3bedb1a435a7ba0ffd95e58c1157257a5ec31c3d4ac656456483157a1e59a0a9c06c49fb282d6e69e684207700d02baf51b428f3bc1cdf1ea47fb35f472969bebd0a98b7992ee0fac2b02eeeb11f691e97f09c6fdc283f61b46d02251f5b50885c9b1f7d0ada0478a77a7b3bc6f8beaea38d2bef17ee39eec214d505a73f7538bc2f5f387688d837e0d5e6fec127e7bf1b22c5ad32fb82c4e5c25fb08af1c81d14b17f8e67bb1af05fa28ff4b930956f482424084cb0af76619ad8274a7047d2d842a737366b3cd0f6aff3e3c0f32f8bda7acf867b0ab63416b45d7528882ee13627dc794372ca1c40807556451f95039172cc308d3aa187237d7d8397a972bf58efc572a10bc2b5ad402f394b434c09f17e93bef5c95100da5dcf38ab920934897b50cc309e39c6acf44bb2e1471870852d0937fd4b7da6c5e500136e438aba157b01936d1c2a22f2174039fb851e86c9836952d3a568c8ca3bb3cb3868719cbd120680af37eae75dc97686610cbf9ae26dbe8911e30028b6c161085c680c92bc1e466f18d7300f12d6c1049750b2c40c043ef5988aca1aac33f49cd9ee3cd166728d75d94c5198f8908dd697dd4476f6022cfc5645bd8563283e2f7fa4fb3104ff3a0f8db523d5d427023c9a98d05153fb9aae447bae151b89c1f96e0307b17fac81b04718628e00c62414e582f89e5599c72afd2ab04beacd902d7d9313783367bb9359598062dbc4cf413c3172f1dd23f2218a8567bba4c0e759d6608bd9adb5e53dc2859b12a873c5dcf2113be69bc9a70cc7a84ad733b8e254a9201a6e48d0cd370446f5eac1da9d0288b92f043219ed0b3be025db393109f4a9ce6869d28c0de621b89e0206df7182d06bfc7184bc990c204a957384f480c63fd3bde32d3c41b4abcbdb1f78ff2f086d4ef0d0a6c7ab7657703b9a19f0079ac32b54190692966ba0d7b0432522acce19c8e9599fbe1382b5ea5750f6a0998e5ae58b3e28005221cabe8e7af46d5989465e7b293bc7c673a06e0240631612a56cbe40d0b03355e53904abee424efb4c8bf899eef5bd9c0b3cba10a8b899ea37334b109be0b901b7cfc04b2627a697fdec2a774f917a5c4c5d2b52e4ae2f7e99b59cc6a2f9edd1a1ba13209ea1fa39872196ccc0cc042e6bb1da99150628440866359758a816414cb008a25dd27a65d5893d789db2c467a7aa9b261f645636e054b5937345ae476a6c29717c0f62281688fd71d238ec8297ddb0b6defffa91df7d82b4c73397f34299cb721dd2610ea9e723889dfa2486f441d5682f5ee267287ac54c4c48b35cefacf610369b7647f5744a1457d2f8a5c6611b9f3a3a31a61c2953a802a8c40a7ca8899ff28926e66174d9bf989f7ed227f37bfd996de63e8ed1762d31796190d084ac43bb4042c1ecfc9cd2912972584093987316368c625a141e8fce3a87b7be819efb6281fe5534a24d90423beb900ed875d091b3044dc9d77299af64e4f3ce6f88d37ee515b64ce9ab0091465bc2c1d7404cecb0cc6284ff645311a72573ad6ca26bfffb686f8100f9d79bd7c4b19ce721c8ad164b3753a153934b744df504185ff8688a38afaab037f9753c6ffcafbb18f7d538c6546da1a0759336939f2d86fa1b8f6ca65e928a0d8d4619675658af16d05686a99b6353f7b10b3e59799eb1c06d94f73701eed1b2bfb6233a3b28112c1f5e48300735972dc68927cb01665b7b40fc720cd0682c409b6f65bffee9da8cde7d988c256508cdb06809570c5fbdf66b752aa0d1cc9d563a647961a484bb141d02a7fafc43f4f7839b546b9c10e6ca9268c8c8080607610f96983815f73f1c0c448e112b87f93efebefd9fb65bc94bd46e7e06e0b4291fda90b941bc19f133b3b655ca58493a313d34ac3fd1780491fce246ae2dd503b446b987f5a52531c9057c9fed294ac5a4ccc7ac80219bf379dd738b345a800743f28829b5bc1ed18cb76947525a77463deb146027c7d9d63d5d6cfa42d17f21b512a477a30060676328cdaa76cb3d7e9c7ccacac496ea48c485c83f7c4d64847d4c4864f924aa58014e2c9e15f2e3b792987877e1f833f85467bde6ab0ecf632c6dbd6568c4afd70db9a9c68295bd829fbfc3d7aabf0cf268c80b7b6bcea3c3ead9f448dfcf848c307e4ec33a8f91cc44864e366d9474957a8f40ff3165db7b90099fe73965bd93b496f2f1ed53c275eaeb24e355540ddb3faabf1287b86afbe642e22ff67136fb9984ba6454dc68e8544b9722ed4565486fae7aaec5d92b1a7e77140e70bb08c587337ee8ce4bca72307be9a9d8febba1f628ca484d7a520cb4fe33e781a3291fa3d0eb3c92e88a6862ac1c6b299f404779457066d5e447b9dd1f9fc868d385520399aa112642b5e430e141f4919a470d24a60a8e1322cb8f797a597c2399045602e32ed7874f00f9748d69dfe4ba736536ac5f367760a5084e549af18068636d08ca990dc1dc9da753bc3736425cebc72819fe48eb731e8317f8c9a40f033c451b55e6f0764c1efa2771c7a89e2e362e663ce5cd0bb30e69b622a3612837901ad97b4f0a62c95017df0bf0a850c774a325d433a77ecaaaad317d6a5402f2d2f6eea6a32192b651b81f4742105294cdac246dce154e3a9abe3d9e48a76ab8be602485c5e1236c6c6a97ef6b50636d6ec6ac611254eac31b4c73e0f8fd0ab5c557e869f67e1fc2f4b85b0cef8b602799cb69916d77bb4159dbc61172f9a061d77440a9885bf50af8470392323b605199cbc6edbd375d20656d992035a4129e601ea144e4fd4880f798709535eb5ce08e4868902d6d98172e4aac62fe050cf6cc5c457b1ad708c6023c13a41902a40c0439553f8989c53fe9592c041e1d7a50389171807498582a43e53b0df214bde1f05c4becc1af9a9aada93445aef14604a0c0bda80d41944196704ea92d82661c8b996103ad831c0bd915191e015236a44939948dea3dfd37881536b34827639470ea7b7dc9da7b4a5487a0faf5b931b65df4210ae1f21a0ab83d1d92f5cb61745267abcfe6c5f5aea1b9a37f0f9cd4781ea89cd60f5696ba4a49e39f9f217c597379a891a0c3c55b0f26a9faec62ca4b5d1d5ad7376c1daa646b5c080b843199ae7bd2fde063a428308b91b8d9688e5cbbecb6e9ab17ccdd2d79de2e35663987724c942175760e88e3c931248045daebf7834aa31c860baaa12841e3603ae2f9a365117fe8ab41d3447e463d0583002bfbea4c3f99dc210180d30fcd95d69ae71d6d441bccc2ad34cdfa08a2449a2b8348891213d1b2978f51ea7eef4c3ec132478f93ae7101a810b18e54da6f78edf6e0d7bb066171a23430d87c11c05d87f1d1e0896409b5e9e74434b4812e58f5646f16405cb8583ee8b4fa8aa8200f557e2b29831aeba78a61a48015441110539f6eff33c84918ebb13d48959b522e28d19768b2af1f64707408a19de6b1217213920c8c16b3bc9e18acf92613faea31e070a3ce2a15da80490091876429ad6676eec98d6200f597b4222f2364f3864efb3a61629aed66acab9b1f113e867a86a6ad59c5d10eace3289fd5d092df54ea1591c0420371fb7bdd3db54a295575276ac31a79f25ca7b5b03955d5ca55a1b95e3b5725fbff0da2749ca59d9568f1b03d08aed7898a77cb9d060af21bff5ba7ee527b6f30ceb7d1bf067d9a80ae2fd18e013d80cbd223078418536e2caa28af412cfd758740c680d2e64acbd7282deb3661aa8a5fcacebcfa1724ce472db52e4c22c9061709d98355507858a0e94c0ae36be4ea945d21a98dfb35e09785199d155dd011fda6a53262376a4c65c8b5ff07873f67fe641533950300a4d9395fa9c4cab7bf5318b29bdabd117f4488328388ec6bb7e48258d7e22dbc2139bddcb2cf05586d3e9a93225286aaa3c59189e931b38cb635ab8a36c1ad89ac810d413c685da871e30d483e781c9163c36d8e19b9ca0bc1da14b7520c6f4020455feee3aa0bd35a5b181a776cc81dec233c1ec068dc13cc0d21a0b31051e9ab73d8c5f7dd5918ff0c39163f7e1e256c731b42473f516e74bfbca47ea0299c8c67b045d130440e90e34fd33968627a67c503a55c287f48e7a4f1359df3d5989df73c2c1ad10de5140a310cefe42d45c9823f7b7684477d8401e650b96a8db670685d38977c86c0a3a32c029de874a536105f28ecfb5e6d1a19a88cf3a1f7d992d07729c81b08f4fa6db95331df04b965483f3c54cbe4158ba7dbaad62ce4a1af4bb2e8971c38dff948c18d3abaf54b49b46c3042ede60a51d5f8aef3879e1a886bb382a48665ceb3f35018278b834c608b3185cb4fa76c3468bcd00f75b0b7aca5e588681c68393520e2c85534d1310a3d262c3293777c6ebb836e9e508a37f7acea57b3de41029fa97b764508854eea910f66fdd595482aa1cd0156e05ce135dd56f68511cb03f5684057e5419894a67a89c2e626aac46fa1d49c9fb5618149a36acd5bba2a2c570207c331d2a9bc9153dd97a59d087c431ba33288a864c6ed2756e14d316e8610f9d56db80185f858d2f2790be89d0da44d82556d0bd7597d5a0c14d5cdb6df57dc46afb253d66e024a46b7c4393e237b7a77ac143bb79881db0c8fdfd38f09806bb581c7c8e86759f5347eb4e8372159b74af1ad87f0828973e9034a3aef5973275a64a896383e0abfde79200210978c13ee6b2afefc3c64d1ee1956526982090db783895de2ea79f30d677c567a6098f8a0240418c27e2d84ce42faa1209996524efc1826f36afb4ee31feab10b31d7e96410f9244c85391b289529bee098b8027f5c5c9a7e027650c6abca970a56ceeeeed7b718320f41f972f93f454f1ac32e5c460dc16ab68c51252c45085326985c3621861ac05bdce76dc3a649c2e23e5858d6185c4b85351867e5c4995d64f9c0eaed78ead9073cecfc3d11c45e229040353545a5d2a61b0d30c39ed507a3394e80b4f0e119624c169b00985381d6b1172ad9297b9b244423dd656288c2da6c0763aa37085926b1b9af9220541a30b949cb6525302c5f3b0d56a088e0ba5c5cd5701212378253c79c7117054ae221b1b36de8dd881d89a44d49059500d2853832cfb1e6aec7b426e60afd01bcd1e09d4658cd835462d551b076ad6721a2148d48c3e14b987e330acb16c2a25c5febb6c374cee74935b5c27ec6f8ee037ce3ce5ec2530986335241097344f5f651db8e2cd957294f74a3d318ab6a09e412bbe3cfb8bf6ba9f5b41db8d42a041a3b3deaa9b7f78e0aa68108eed1d5123ee3f72709e95ca55834fdf0c44b6e8aa98989d10aa731ab10342d6eebc7c6321a8ebedee169be873c9167200d9456a6548ad3b2956141eb530b4ac2f1c4abc6de0a9534ab193ab390206653ed89ab64e0fa229deeed3151564ac1b263d08181426fc101ba740307dc27c5ec34e4c61331315e7c49d2ac1e823103f4ea484d86cef6127a475d2bdd4c4cb41f6c7cc1d4bfa6c311c992f8d2d51a7dc4866194093ea272cb26121cc1523b9bbcf6381b78770f968d8052db995ba6ad41e47f42651dbac03c6cb1dd3ebf4c055fbd9f3adaacb12664e65d07cbecb92de25ab88c48b53ad90355fcc770623ef4bb8a72aba4b9f73c8a104d877c643631f7133da0c332ddc963a1b41ce0e228d08d640db064a3013d132ea27790194ac70593651046eba9ed7acae49aa18bb07e387ef9330e4de713d22e7587570a02c7bfb37016ba79b982eabc6008a674410aefae64e96c37d86e12131e6ae148f307a44d4cf3875900d954016a9bac83a8ec4e5638f6453887c9fbc4aa53e527d6dfe25b98a6e1f6b313d3a8ba13a42fb762b4ac1145c1d9297651766da169547ed570b0f435b3854c9ed26da8c468e55dc60b0d9a7e38f90848521610c6f94b21d434fe2bbe8751c3501d3f66e5ffd7232ecfd537724d7f8f28a7e8641420ff6c912e594b4ba5316540a64b8a0d78a6204c85f9c6a16e909ed2e06001d1cca5364061ad3ad35935fa78493aff97563cac9008e42dda4e6657cce3c8089f74455ace83fcb696a74039d82f79289eefc4a4dabcd2860219863ac1e70f250e308e3a718788223a4b65b41e58060b0ed6f5040e3902936df8a127c929e74a05a783c39864c3f06fdd87956eee7070adadbb95fa7afe618773f21a2650ee89e774e5240f80834f778c6454e7a754fc7e6a65aa1517ff21ba8516c5757cda10ecbc0b3db19d009024d1c50cb6e703b62b3990ca3eea4f5002617e96f976dda4b5ff73273a4929c53a73892b6af489d27ea2db0c934dda3ca80d17fe183636f8e73ee1050fe1785e1bf37040355a3fd1900ad37cc13842b9e4cf4c1414ff61cd93a88b36e6065eba05e4900bf0f3570a4ee23f310962b35b63283cad32c1ef73b88b64d4cdcf6494e382c0b915ca2954f16dcf10424986d8286aff1c03bf24b2482e76b099de2cf2ecf2085c146bf5b3ac08fd8b4a2ee187573960f8d9c12fe468e23ae500c79ebfb178b4bc78f07e6534bf490f080ddf078ee82173355c0782732e67e844411128452181171f963f4684dd61fe13424ab9d6a75c1c4a3301c54be40bcf1defd372af141d1ab096072e9ab92a0a8ec8a9b6807727f9e7aa75497933c6ca081a66d999e8c1962e8329ecf7a2030f54cf0104ca8889999b5ab772a03f46862a2a98b7eac8643eaadbb14eaab75f0f962c6a5b468bcdbd466975e5f3a41dbeda30d42a6159058f072bf051c2a29028df0947d673b3e5c4398878a2ac429dc87490c9abca4a794c9bbb195bd44684b9fbee237ed2dfd971f704fdabccbe6c0c0545f83a515c0f05a7a617b9555279a2376630e0dd481b90b3c233523cbe9d669f42760f90893d7c1ef4908b0fcf57816c85193e83868368372552759b86f64c02579db32ea95796dd10f260d2c53a05c6b33474dc862f9d2d7e8c6accf4850e388e3bd804685bb2d5420f4edc8aaca10d8a64f27049c11ef0c04c9136195964319cf47e6e1fbc76c3a687e80a5332145d2219eb9a516c85248c08544e3a6540f84b83ab30e0e3025626ce9fb3b854a7e1cfe6c5c9be8d34018483d64a025aba410e3e31f4a5f98d864f13ebb0f8456ca613ae1b53cbc326e9b2fcb0236efe5ce79a52bfb16cdf06373871f3352348d15df8be8dd23aa8e8bcc245a1b19bf1638609d2a1f64651d5a1cbc1ee68a504c0d7770b1ba43eb018fbb00139b66ce2996782feeaa366ade084c72827ad02a659b30979a074aade010a7edd60fc2b45c6c74396d63b93618769e83711ac1ff69281d58c18449e31085858703c1f750ebc602d517acaf01c3af63add65c02a88b4924ab70a69383f1f71a10cd485bc088a188710900efbd2c85d47694693fccf214078269bfc6fea300c61bb49e759da177d737b10fd70d878a3d80b820b42ca860de5a01a0b61d1d034aeb41a5cdec899b69eebff562905a6b2a9cc0ccb61c2dd9a6acd798ec632052f27e8cc619914b4e4250bd490d0391c3b7d944754d3b500f341bc1d24545e22d1f59249829ad8b61e28ea48256062968e3c24709a9e66854603a187ac90a820fa8e3cafa582af4b147cb2a9dce2801a0e6f2b30ac499a460899b8b3d5d83ecb58d6112179dd8cadfa9b1df581f20062c5a8bca67dc0113a5f67d4a4e0d756664401e4e6768ef0d9014ef12dccee2b863c7e688ddd16cfe56e86e89d9ce6cd3abcf8fd267cfe6c962741fe6e5101b584eec248975920132893b3e362b06e6f8c84bb4df6f7ce4ac8a5c453b6ba36fefa9817632fb6d3cc10df46ca0ee883760c154494814d0d6a932a9e51862e410f1a5718b54795b335e668adb5b91d3e3025395520df697c08e3d5d094347d00c2973aa016ac386ceb8a34f2bac108718c4e15bed2228033875a919368257f3584fc4e1539871d25e6e36b905763570f3f398a1df4528d463262653720675487b505f5ed44ef7471ffa0b1a066399a6718ad64c5a3232c8ce631dab02c6fc27c58a8124791354b299120517c23cd9193a191a3e46e542ae5c7db8a1825a7d684c17be6b52162115a0d6ad85bc842676f0e9338c2b20279c23936c00b06b828337efd0a09401752f5e3eae289cabae7c16dd1351e279e06745cdc1812400bd2289931688a838794b3189db9890f131a132ad91ce5b0c3073b4da6132b08ac352c92624f73cb87e0ee08391c78a7e66cb6639f08d83a13ada73955af3d60f60fdc55d85e5630e66e4271635d0083fd2145d0f3a4abdfed48f64fab1ddf40f2e895a41274e992e8824ef33e8ca557942f9fcfe4d4f6fda246e2e0be7fec7f206d0cfb8d80a7edbd58b6b87a146e3a34b4756be4294d375659debf7b0742a2c9cfab70d29b8d9f60d73149244e984cd0270399b406e4fd46dd996ea8dbe9d70672b9dba96c576087ec925563ab492499891668a17f4c6601c10c3eee96b6577ca8ccf062c35cde711e6718748a9295399d97052d307909f216112d0065647bc0121fab842a5b3c85f9f77aee8118936523bd8481aab2710604e4edf4ecd89bf88d58fce24914138527c669b1868c11844654701c43942a8b64626b107b585a6055cc515a42565887bb1e7e0040ad43c29c3f60738eb2c1cde6429708568bb8118fad8c41e84d769e4d5891c4681b7549fa764f5c92c53d022675fae6b6ad65dc6d6c2998ae0c5812f328697f58a5313aa27ccfb2748df3a997e252d8daa6923c981f34158b754a8cc72c0a4b8b647a1bd7d632fce3b87fb48df02b61b84fbc7138066b8a45e1c04b8fd9479997e142110a9c56d67b0eb2cde9b03e6ece1f24cb8a86e9ba5f0de58370fc9ad68d089a7592219c78f2186873b601fa2254102e9431775dcee48946524214ab15793ba409d3935327cf266882eb60e1715684c8bb302afdc34265729a16f1297195f5ad3770b5d26b62b0dc67815982c1486f1ecbb2080e38d453741025c2d6e33d8ccfe4c6b550db93c3b7207c4428feb84f5c08654e33e3774dbe7402be84da28017e0ca1fa8ca79a1fca189cff239f522dc273274cd237b386d784670726f9c3534cd46b53e340e092df6b0a96ca6da249104265b434f3a7736ce2060884b26af1f45a62f69c4dd6799a4c84fe7e0a4628b9086f28b6e06db41a0f517014eb128c25f2b14c582cf899f843a551e28398a53a23c6c79c999bac5df188c230265da834afa44e7baa12d5d65a89f9b5e933f175cc99bcacbf50e30df5ff95ee0307f5391bd46d519d7cd9b74167e2585855411f3ea07a8b40bf84e0c7c6220784de84e8570b46c2a4e70a98f1a8c5845bdd848eb5380624dbac135a0ef4a2a8551618226cb327a370325b2c526bd5611d0b8dcf34a0b472223fe99004a222fcb23f224d3ad54e78a6fee6e88f3b18cf6c94b96d87423da39fbe33c8ad7fa5c2c9fdf0d637d75c67b890b46ab9c3d6b823d697023f2655add351e02189a1e88c6dc4c64880bf22d99cee88635a0e8a4b37befe32726ab0773b49d1845530223b111162e8d9ce0429c25093de9e664d46e8875a5144ac9f6594917df57de18832300813545d2ab56d66a4cfce9de9c7bbda794b303a95de0b52914ef0b175c4f87197c5579168a0ab86611e7948660a4345350e953f540239c2c3574a0ecedf33c70ba1c43ae40b82d04f0b4c0e0be1c5f903fa9034e4cda5f2b9dcd20e01501ab3b8ff6805964d47f55ce1babae5051e37bd4f34d40b013291a28377f0f4d34d9cda1d7060539cef733a19b1890c2eac2fa32da83b2e940f90506a259cfb16bd6ba25fa4fb1fecc19de567cf6f5c7b178103dcbc909fe20daf873d6f1e309d51854ec8478b33d1d55dc90847dc1279447a996cd4c294eb91e3d0c9fbfb4d4706406cc0ebe7ea614aa99edfd933de00d196677e8c4945d000fb426bb6129c28f2c3b4b9a673e806147c2a5cb852d31b66ac6aa5f0af9459f3fbc15b1e665e675815f9c141b45d63dc9566a85efe054b67dbc8a20d0915a3324915ded217848b7a09e45a9adb97689aad74da09aa6417e39851f35ac14afe842672c86966a2bd8c8de304c27a3c33fdd1fe3dfb39559f24ba0bb0ce35e475384e96359940e3f4d34d59198775f1d93978b5578ae03d66e4084661bf12a321808e9e300131ca5e90a5a1f7db251c3c917003a5dd81bf2c5d7cbddc7508f8bea0683d174c6f948105adf98b14866dea0f06cf9a7214375e5976ea2d5731e07f80036a48f57b84857ccfebc1788d82f19fff0321015aea99f4db9c5426ce2c6c1b44630ac27681593cf278e2d16b9f92c484fde970d25b3248b2a9530a9faf7cf51eab266ecaaa918c4142137e78889a2a3466f8c0e54544224e92e6cf8eecf7f6bb8cb8bfd4dd8b193520ea5b398200fceadadb94e6b41bff582aa33ce25b251edec62d8d28c6b9d88091132822a51314ab9fccbf421df874cdc73d5ceca303a6c20c1cd6c175918001767656f9ac1e03e4b4e305906a82201183d7cafd1fa2fb288abafdd641f3de594b9eb349dbfc5a8dec444bc3be1e3bf2528bc093b9fad9c761870e96f7da82a3273f8231e58693ff18b0c5c4af011bf692746c8efdb7a2a6cba42345d1cfcd37bd3e5a2ecaf538093affe2cb8cb854da0d60dc2d8b8bd6533baa02d8f5849a085f2b02d324e10a0bd7adec21aef4d82b958f15bb46e2f798c31160fd933cc067631312adcb5d4fc75e1cf60d2254080298a052118813f7aa6c34354ba035a5afaf97d1ffc0cff627cb6a051160ee8d186df47cc0e7d6bc76c25d93ac7d26b86e983b60ae432c885047ed2d513ac9d6a39d3fa54f64007ab81bcc34a56c6633f6c33acfb7d38a895639ae373f705c734e9597a5deb16970b989534452770a54a06001442f532c3e5b5664afc9fbf41e12b67b4bcb2a628693579cb3df4ce055ad611884b8a2e3825e875485202e2b1380d25c427f296a8ebc25e701fe6e5fab82ea2609ed169c614890fe722266204a5bf29d2491a7969a6aa261104756af620cf3dd100cdbca6ae1878b76e853984cb8d4dc2c71a20cb4c9c63d7893fffd6b0e9d21b8454fb89c1d8c9e0ff9eda2ab2dcd281feea370a01e4c53f54ec980fd37eec616cce963982014d15cb223d1740af97644aa2c0d9798daafa819324e2540461c660d66fad32fbeb69e85c6d416ced559850d66db526b72d488665466569d9cd01b110d7310201925c09ac889a35e8e20fc06453175a6b6a19f130a08bdda21575b486a73b206528e7664b6a1d15ac4c90780d98918a9f20222f83ec8ebab30b3fbf95b24c439b8092f171872b6ba7d18cd216ecc458319c41d1b7020d7bda984e257378d3a2d05ea84ec3b40e04ef2c990dcfd192d7dbe8c73404025b427be3a46495201bc62be2ea6f36a2a28e91f260ab775f81a9826cb4f50a696b32f4b7e11cc4b1e20106772c7fee19fa5c1005c2e8e3c5b9cac101773e5992d910b83c0a02f6bb7c3555482b0c4313d50dbb9e4004a6a8caf008ac06145aeb18b1cc83646216acea0694c81e48b08a75b91bb6b1b3dc75d47304487aacacc1caf087a5546d8b11e9e7641d0e7455d88de0001b9e1fbd72051e6dec6b0138540b25610b3c462b2987de7521d1a3e5094e3aea20c6ff347b3500400389678858620b2f671fc856b2513cd4a2326333e5dda00408f639480fbc29725a33e0304ae29a9b9b1114f60943c73632868b0fdc5c625296c74c66b3b67e6f44c99169d1dca8253dc252bb5fe28e9b08c66178a03311ef5bd2ab1efbf63f700916699f2658939c4b80aebc93e7e4f8ad17b69e04c3d4701d65d543e5e0980683da37f29c6e4d0651e7fc4b13114ad6f6a03891b6816cb882b5212d4f2c46113b9b72741c3787e1ae211390d31f0a1c15fa04b6d2dfd3dafef38331dbcf367384174c333da9d810026e7e354c8847da19f1d5c61456db57dda6a6be50e490a32a3aec945d5423fac872688485a8344bbb59df45ccc51f7c01a154c1c39d4f48f5b7d900d24bccaf6eb34fc0efc5f5778787dcd8f0158a6195e179630e280d9e1f69d88a1b8d48025258762e6761aa6bd20a12d3d0c1cf38c5038b05dc137b85b4bf2bd0e756f89d8831a2a0374f0f75a83bb338144b1b7890a1fbcc62c72389780e89c99c09cd536bda59b7a6e8b2095b15360013339531252664b395a56d2b0720f9ff0b720f1072b8e41e981889e2989ef8b395390ce4616711d4c010e6fe885214eebc7bd308dcba48075cbcd135d0076f488811a083a72b861807232ca863f41c8c2d7e3d80aaed653066fd3ea58d4e34b5856bcf5ec40fe22fa857fa44eaa36559eaa9f5d7f3779ea5d88107db9597fed124a775ad9c8dc82c15a349b619fa6b84db7b0be482fd1de8f77e614bed0640348f1b9b12b6ec371f402d73c6bf0356bc252d4519b4f196dc7bf7e554b7f9edd0f6f404536f213a1d65742adf2824669ad013af8b05cd5d91215e374b63956e0a2dc3743349e55374b90349be2920abd36587a90668f8482c3ff2852b8037664aa4a4c00cba178225fec96f196e1bcd644ba1c2ed9a89125394a48f30bc85b9e94ca68a65c23340137ca00f9db3de1a34bf65591f53f867acc5cabd401102b130436a5a3577af1172be994cebc57542938d5b5d720c33a10f4792e59a797802737bfcade3c3d9e9df1071d18fde1b75d7236cd84c5884dd89fa71f77d0529844a3d336bf6a3c16c6a464568bc54fbcb6d0f10401f32482a4d60b0a14db8657430308a5deb49db65654d4b2ab670c552216ce95672ba42bb66c6e6aa0d93953602c6a40b017ced698f5bef60bed481cf37718d93c8b0249a937dec76b3d59ab3e3f212ca7f665ee1d234ea115ae456e935c8ff7d69bfe5ac49e5b805c88357229419df1efcd1309a37697edb195605a4e613f5d011a9c571c06eb649e2cdc16fea3cbaaa0727ff7a24d8ea95eda307780aee7e863044bd645d2d4c1531c2aaf6942495425c0abe967284221fb928815efc7feef21883f11fdf054e295a2a0bfdca3dd6d23a8dd7ff9c9091b3daaac0e403e5ea936e1149a13e11edd0e112b97e4e32ead45ec73b35b5cba121d86cfeeff114083aa729779db439e565f29778defae1345e165ff880f27a6ca8d5a7e735282d1177a98d3adfc2788cf7f539e3d462cca4975ad2bb6cb866441646b1be47f6a685aea866897380b1294d82bf4c30c2f39ef23902bdc76e62fa20d6d3cd54e107e2857ca14ca0ac5c470324ff23fd69fb7927bcbf27c93a3e898711a50e1d994239efabe4d520f009ee75dbfbc14ed40c1a5432305f0b0ac3f81a90950af01b47a7de033c7632c82d93e68240145b54b2249535c4e8091b5267b45788d808c16213a42d6e8aba833edf1d226928f640e119de89c468d67de76df157704a2bbb6696dbfc633a67fe8edb81ab50bd603b1f72bf853320b4aebed72b0164e7e906585e4bbe45578729a4324bcfa94cdf3d7dba610bc48b68a46e8b42b5d2404574389a065a59c461427d16552243432509844aba94b66885e163ff30e640db589293946cf8aa1946f9c2e773d3314ede635492fcf699d3ed7c746d5bb3de8b3b48e93ed8960b8b3ad552eba0ee79b44dc73d321de9c2544171bab6166859ed1ee41524d34f154125a8b09717cbd303555e038eb41d2028afd04ef884241da206eaccc581032d94873078d5c328155ee823215b03e9df13fc9bddd213697baa75a229cf018c523f1bada97ba8a83dd3eda64a84a9a21b22469a3f5d261c097b8dc86079ebd78e57b2ab9fb4a97c94c191f90003afd93e2b2fe984ea8688ef4cd1bc6b6286e37953f8f5224477c73eb624c33243e599648b6bfe157f8cb19be2405e4fc65962a1fb1e9621f0f03556b7954e4cc5e9632e7d906a3acfce25a6d30c91344e85d5badc0ac2a027887bb98c5e90bbeae41b08be49cfd05002f1be29853afd9d2f282ea76401a101578026fdc031f58d83209279670418217fb38a5c44064af15161a129532825bd7e5e2e2f701a1e08d8c2ef34b4541acc499dacfa20321b6b427a85f8f97a106005c9ef81f1e3e0c86bf08a00e6438d1901dad37cdb7f694bce2c6e693cf52e0b0cd7ffc8319f9d7ffcc2b8d8acc467cca301180f794e4662d34efe87964186d9faeb57317317f8c8dead45401165c173cbe3e3d7348634a3b86f7c006c180bcde8c17d8715e85bc6d8162afd21d132071b8ef0476273856ddb724a5795dceb96e186f4d4b0fb6bd1358fd3e98c3bff7fd74e9473a5ef28ddfb69662f079037774d96fe7c7f71e582836d8df73f9d53c0eeb43f44b000b712ce7ac05caec26c2c508b3a9f22d004f510a9ed8c63dd78aa9e782093b2c8f89b423acd7e6717ab6fc0e9de28fb4d46f92bf8c3813301db8775e087e01d04ef58c2f8c38bd3f16df050694a16030131dcf4f24ec3edbd002844d07738d6f50f8bb6a6a6acd030b2d52d69d4d2d4a5d03216a1a0c7deab6d6c7dd7427b5da63bef666d98f51d0dddeba3f0213f532db147f86214d235ce1db58095e0a0b91dc7f82c7928259a7dff50663e030972cff51cbfff2efabf61403410689726ec64a6bc39ee26d9ed510bf57e19537390d186ac2bfc0b99f53c8733a587e6b4a113f6f08ab3f52e95f6f56a6c6d605357afc5ee37f817ca2177f30be2440adfbe49fc8cbc32821979df858e38ed2c4baf4275d331e8da9b34447b95849ae882c134f44635f3b26f0081780551dbb612000fb4aeb27db8d27f2b84328f9ee19291457b3da3f3c99e12595d149637d0d28024ad24656a0ddf46a5871c43272b78029b9d587e4e862f8a02c7128a1fc8284e516f00f03d06fdb8c39968ef29198ae72d2d121d507a65b436aa9969e7ab25b10b9ba428942ca82a1ab61c942da4292bd2d298cf49caeb704c1b50d6a0362030f3afc265a3d53976c4fa496cb2b5a955b00849bb1463efbc2f5d1394b0c3e3117d1aeb513393ae988ef67c3c3dccda3adedeec996c32e00bab59c37fd2d8592dda39989a299c0b3d596b783e70b65993ced3d5ad7d5645c1ca003e5aed783ae69cb8a3603d450eab480ea74e016ae2d37c91ba45ddf50649b4fc4b04e04aa54f4388fa8001507b66f9b95fa88d29ec0b275a428525bc4e9142250783391142d3410d6544256c2d756e6fc9694a89322092f6b3dbf91835bd0a213ce48dbea1122f20c0e676ab233926d2cd92a094588628105f00e8a104365662ef3c6059f0f7f3515e40c8a3573c61e52bfa150eb0803c0483e702b3de97221824eebcd8d4ac1d4c43f0f309a6072116c5f6d4d6991b02f50e805e0120a6dec28f09cc86d1882420e105f664a8da500ecb062acb770045a8c1518a344cbaf8d82c7b9c6131bbdb6ec841520188b6145e39bd1b2d9da9ce46cca79ec857a981434c0c3caf5ccfddb2ed1da0b5496f98bbd67b1fbf7601169faa04415ae54fb10a9a2f64f2b672f71dd6c30dfb66d8f237a8f8ad182a07710b61778fbf390e25ec43f41bc718553126a879aba44f35b54eec723b14d3cdf24ffb2c8d41c86e17fb1159fa98c6a0593df4554cf4db48b13a78e2259acb1ed5ede6bf5e1d13c75554e0a6290d637661836052c5b232d896543040db97a6f06cb944ffd3f0ee36cc6f02570e78ba6e57c0429fcca0a482ae4576d2468c631c2869b97224a13294ee7fc0cc2c1b6a59b5812e2f1b0b10ff3184286740464d1a429bf67e25d08ae659e2431df1c3ee01e47f49051c89e2912bbceb18da68082764357381f8b79024a5d5ac22a98c0072a2e84f23e04b4d917db3039ddc14bf19ce22bbf0a17fd046e46983e68d09feca3f552a49bddaad36ab0bed7903fc5fc70fee3c454be3346855f6f47fe9fb90e9863e5437541f64bacfe6c673504ce2c5c132642bfbabcda79ab47064afd5d10fe20361854314cef5169cac93692d4297ff77f35c7e4d71f1f058cd294d22d7373847d8c379a7109805df9db8e0aa5001bebff31ebae5e1c33eaa2c2006fd85d8132f00b6332fd78332e851fbe7e6abca821620126abbfcde6bf87964d06a8dfc8ec0f687738ac0e874199ce0e46d2453387c8973d7aa7403488d9564824712b29759099669381902d57be8ac7aa539c196c2c08f457a7b67c4896bea093722bc2330011fda07e51461ba66300d18473a149981ddf7df2a978228394c6e24a5106b651114ed944aa54898eb8d9c6749e8cb8d6a4123c15efed3022361de766cd2aa245c5fdc8d0be53c3e0a41920a39f1fe14ee16ab659dd6d5038f7a4f10b6d66e11ec641d84a7342a35726a5546a7a1fb78b8edab21e621a3fdf3c3cd20e0dd5b37bc022c5c444b97031b3aecde36dc9b84d9165d94eaefdf3049c352b4cbc02222771b4e97edb3addb220b6ee9e466a8f7c0c6253174082b7ae70590185fb4337a498c5b75a1704c9337892a79a498d997a97ad6942fd10d9c853dfc7fcdebce7c0c00f104800fe90ac77cd7e72ea7d744b7892636cb8b310c7e8552ac90549cd904bc1d33b632840b15ad3a77f40847bf8c56fd254727da0e96d624b1e3c5f265c40fd65d504d922a0f851f397cc937604d62b4c6d52a22ee1f49faf771c2f0f0e54cb1c7aa52e40c9bdfb63fb595d01ea9e5216c331c78887dd7ef302f002e4451a055d2d3cf2437fa2859abc360c122e7e88d81d7e38a24cfc3779e130cd035999a6d84cbb1a234905e6870062df122104966972d038d4db38705225f059c874bf014cec18acfba3fc1ec203cbf75e2a22dd4f4853c9f59b99dd480b6ee8c6461c7e780495201f0e508f4aa5ba2d69db00eabc9d0f439c948ca0c8ae20ec1ed9b350ea47f0c224a47bf940dcdd2420d25a67f7f2d404c8c846bc33c6a144c179966b9e15eae19996b6f3b6f157586802e5161833a6291ea4fefa3e5eca39fe2a8fcf8144defab37028e8c06a52be29612243836e1253e0fb3789018280e579eaee0d92b1e9692d567781e569227fdd027ef8dcbd33b589a57f1bef1b5f59e75257cc7fd6b897a9d204c07fdc5aff84b7440a488953f6a79d7bf87414c3f7a443a17f347c35f64929c90925804719685def96e7889975faea77bc7d46693934272a1e56dc853590065f0ab8bdb86b439de87005f70a3f2c489d2cd86d61e5e8ffb1a52f90784c2c76f7c1ce275780002f2de6afbc1d0b29708a998c507a654d28d501252bfc2542bf9b4f7b5088e29aede0bd3b12e697fb674f3b8c60d065a519281bf7e0edac35fbac30c08088226b316f100e8b3b59d71fb56cb9c81fe0b6c3274b005d62b54c10b457bfb3602dc9b38350c87285adba1b5c9b796d8a6ea043f056cf9560f0d372157291a72391080f5c0ac5d49eeef81ac42773d563e0bbb7ace7d41a1d5053e8b30cc450b25d9df818000fb703da63b14110b1d35b55462eaebd12cd803126360523f5cd7e1ffd9410d3820ca7bbf680ef77ee67b8bcbac5f7e07b04df73c66ab51aa828f367fe5e6a1e38f6ea44a3434c499001bc572b16dace84517c1d747e2ae025dd02a9151bd2554114f58250fbd06904088c625a2c5434f6e3311963d476b151b35984398d4e7196e7caee67570467d8e9ff7477a4f5834b2f8943090766fdfebd2fcf5142a4ce911d68d170bee046c208ce376daa511af60f8e470a3c0f88dbf0bf255cca60a34843938296b31f98f806bcf6887bff960f1a06a383c5b40ffb01d411421e46f16e222b273c702d02657dda814bd6f0b38ed3da2c6954d74358a54e727b63fea8a12658b36becf5cc5d267a86e01099f77c39bac17179e23fed8ad65f3781ffe9022478b38abf6516db58ee434a5f9a7030459220263e989f2ebee9dc516d59ed5dad041557bf425168beebca87d4affe71400d2114e2d44f29df5f520048ce854a3148de55d8b0479e25a685e6483b790ebd09b2d35ca9dc800170db965711ea95eaf61d297e8a3ebbfa1a3e937ad36ca0b044a96147f89044195f93f28b6e9dc9c019d0659977095318332a481abbbd8fb10def0f5414d9f20146b5d75718d827f86b4af9764e11046dabdee7bbc2268467eb1e6c65cbcbf3d62ab8cbf6c42c689d4a2720f4b6b7d0ac8b6174a5aaf7f69bdca8b37bb02c387f4c92df4e9a4ba2fc4cf00ee283d2b7c74e093d8ffc34f8af648b7485dcc91ace72ac507009db5ee64fb79e013d8e7834cc0fdfae5f027e7bec0dbb7de5ad86b294a71a6999d4c19605bdd09e9364aa7a7f272b35d5974a63658322c40b15ddefb3ea45e067c0a698b834c7e3f0733b9fd1c6ec2de17a2671a97948e757d76b093d7fe61ad86542b7cf86026b1bf434d6abf0f6672ef7db7b543ce2ba0a5ba0d5f329fd83e0e6ea27d3bfc09601f92439dacf69daad58642c45ae483e016e3da43d66c276d02f030edaed83a6a9b15f2f152a86411f1c6acaf0cd0638356328a6c45c36704d74ac41a3e76d084b60fe4d643b24bd7190121f64f7614a1bce8d4d834841dbbbdd2f0ddfcd8d5a80772401bf65d9d3a2b7cec603031f2fd225a32dabb8a2b8be54007c4e14e0e99299bea53ac3e3cffb3ec72f1262a839b8d67e3e28c05f5caa3cee516039825fa45c82b0ca1b7139e65710c21dbe13859f76aa07278848aae854542d8a650d64034c18872587320bf970e8e1cef8f240b7fbd9c6ee0f0c26f340b45cbf09e6572c28653025bc2dc7d5fdcd3472412c6de23c106e532f0382d95a057a13223ad202639b974bf0e9c962a4258523e345c42edc9348d630647841ba03f3c54d3a78d13239f18dcaebb6f6eb55d89c520e2ae93a448f88423e10be90575e146cbf5eb63cdfb545f969d42bbdd41c5d849c6766063eaaf37a7363775dc0ed277f25f5c3353abfff951e59c66457538f291ad7d5586bdc70ffa75e0175905cf053e07489f8a2c674f674ac73830ad69d22631e6936e3d7fe8991a7a6f7a9dafc0c93d7fd81733547ba43c914b9bc4ac65c4ba0750feb0d5d42f533fd1eb42f1f62a136231d45894b9aaebda4adfd229820ef93c6ee96e2f112f45ec07cc2ad6023d15a9d880b8c135b70f69d241eb89994291e21194bfe7553e6356eac31ea629cf89baf0525f5aba241ae07dabca75e0affaeb66df393f4460f4fb13ea4a956129976798821eadd00a015f46813064b2677148a0b13df1b2649f78f96a6c9b5e5319c43a667a104fa563ec4053ba7e27aacbd29c4da5e1b0068e910ca16a801e178fbe346c4a7b11594b25d66ba86d231c8011d7c06afd7eb07061f4ee7ee6b4e71d60967328c216385f2845dd1940420bf0f116127827261ef7e4147eac2d90157676646c7b6a20a6082767b75979eb7854b6229b20d4191b1601e4c1cb80d91d4d5e27cd147b75433c7b9f447014a132b4c07145222de7c3c6712f9b6a75127057e4249c9d43244e32c9c1205fd665948cca2af2e838b0005c1788614300c4e061dadd4ad03b9240063fa7ccc2218bfc42f4cd1640f13a026e24df27dd469c404c195b53797edc94c9a9d45092718cdf0a13d7a40ad163447a9093b41e4f9e27d12d719c5127139c9565b9cdd2ae916c122580518a54b813fc72c02bb098492d4fc82e6cd87202386dd62692d60c4a798668fc0ea7d4ad7ceaf9947eedcf70e005e20d327a8b5b7845a7c70c7282be53b30c8f3a07dc18b02d755a43b48886de6fc705c3ae53b7f4f988fb84b798b03cda45b110bfdae2f10567f3bd50e5c1543f7531ad3756711812f46851ed8393c93570c55c115397724f3c682054de7f88fed9140e37df14758800371fe487136baeb60a3e17dd7aa605162c716c436d0f8f7339d03599bdf7bcb96aeccdc08cb78968c51b52d51776f62c7ab0a6190061ccfdfb3d02fd0e66d7d13467ae0fff2d3eefc4b41d68aa0f3c256b177b214f43d29966b5f02adc76ff9e0a3d2403ace992eb718193cc710fdeeecf9f3ebe98f934045907763ca542b55aa60bec783d5ae9324f02f9fd830b2df16580eb774d8d509a6414a3ec48204ccf97d2a265967a28bd52d876c0cbffac2d1347d8e7bcaa8158f222e0556035f8b8debf659771e3f7212155c4e252435df120cb3c61295edd4b0a05e8cd674461c36fa3448801d5dd4d3a8eb99ab6f9882be46e8e73ed1a56bdf13d6cb1b172c28b6839125ebdda22846d699630b921cac0c07c0fa7fb4572a1d0bd32c20355164d61bda36b3ca3a93db90a6a5496cdbc5dfb3a927157539d31674197d5911fc794fe62ca41164d8596bd0d1b7c43db7ef162e35e506161a7e885a82ac51355195323d0d724bce28c67326208fcc6fd2df2b90f171e67bfa222bfea530ce7325f08fc97df8c4d2499368b80682c53151e1dbf213f00132ca1462e696656dab7af348c21aad07309cee84434a360d2ca881983d05c6216b8d34da770f468cd165a270fca8215c712f11bc2301e725a37ce58ec7322d2b8035362790797aa63bedc5084585cc39d48bc3789b5e152788af30fbc5f7338e005eb0e72e269797798f6584281d3b2cd8ea2373e611a131a0210c4e8abe2b07b909af80e68ece45b40654e77dbdd8d82486df762e317c38dc676a047787b44f6ac2d7e223a2d32dcf60ea25e94a44f49efe501d6bb33f30d9587defcfa65a8c7dbd250bdc4f678bf1da8c87b2ad6483e7bdc8a61e91b5d40074d18d656cce6b740d57189ae909a7e038cdf0d67605973d2e95c5a55ba1295d4e1b1bd133f4b423bc4782a7c9d6d4ceadf1a51e2f8dda95fd34069d19235dc653da4f1b2d144e0c9ee5d8bfb4a3614aa74ad46796b2e028c808049703809ea6926373f426368d622543873920ca4aee3a6b3deeebdc8d04ae77f24cb0ab3154dabfe77099ef33a2993c5fe5d3030fa2b8ce2b18fe0721334a811699123a6022e68c12b997fe159144d8f0b2a838ef0078e2c7801b32b958bd3a6a3bceca8f4a8bdabc8631d2f26cf152a914003d08c9003e9db463d32e8984562cf805e3dec18cbca1a4abfeef9db0fd7e16b1eb0d94e8532e78da562405a151965a4c43ec1236e0271a6c2e192cc5b17a075f076fabee4f5716244efb2ae9573dabf80d54e65c6290aff7535bf5573fb352acade0bdf2b9e97e0d0b0fb9df6b8e5d564d1bb6a13cf4cdd346d58318409970a3e8c7280ce13e8ba1ba7f65b650bcd4f11b8aff7abf57302017cfc921b52543f7e0914e014c0af195f5b20eeaf4673c4a291ff677fc73a2a12c4612123d7d82474fdc3d06868be1f9ecc132e5c17f927248b9a94c246f9b6e3418f9346a27e7b0c3f8b9a54f609542a180346b51b972cb609bda63406b3c320bb55826fdd07faf15206c8274e2745f878094d0d980dfebc14830ef3eb9a0f98fb188203a1e229dd08895bca33c5fc453b66db92d62133ed275c6db9cf43d232c42c5b15f766af4b87253021fe312b1ec800a94b2ef9bde04fc6c703721fce5867eaad0d21644cc510b72edf98d8018ce6b4cd01ee7b41b026aadc0bc1a98b26be7eca850301373e4421e64d1c0786b1c6fec2d01084d072225e7524e368865e3246b1f18d619bf7852311c308e22889d6a1f575259a252038a639b16de524142f1240834fbbbf0ea44f0fd02d1b23ca9771b26efc90cf3da1f60207175b51fa8c42cdfb601cb876b9c626c2e0d1052f37b9d750fce5ebe58925773701050e2ab7bce39a2f7fe22701c5f1425e06d1ddcb4e4815e3328503ad8cbbb6b24651767fd0af72af424c7abf9e4a6ce390a2fcbf587a2be6b8cab8284be91f90f00792c64a7ec0e080db5b52c924fa6301b16d36bfb4812cd04b88c96a5742595147ac4918b587b56fa5ce1ddc31bd70ab821ce0b820e5f364bb167c6416f59bba26028993d6b54b17366e6b1f1dad5de53336ce7a0170563c727f01ebba5dfdd875c01f24045a94e48ad30f1546a68803ac7bf4a137813ab1a9688a2546cd9cf197342d510201019f07317f4d3650591a3f60a0d1f989dfcd127db0a9ce296daeba39d5ea8c3b7672a6f401ed9b005327af0d7c964e7fe329c451f943dba827ebee5d346705bbd198943d71cac54d3521a199ccfc4549609acc1b22f9b8ff2cda32e133c94b2624ed9da859b425a649cdb1f500558daac7e895ac7f844d6932fbc45ea97cf904892cff7b611dcf3e058f7a536fb66f61549efef4d16e2c62a637b19625cc43eb50cfeea888c68d008e204077057e6f2c43c306aec991e1942a047a98c3c6cd81579704fa699a7a57ce6571c91a3c07c77f11105343625f86c50313c3c92f101f212c4ac02148e8fc4d2175c301c682e830ecea1b39eeb4301125b4a57641c032eeee9abbc2fa0cce4519411810557320bc3ac7f1b7b9ff419de286ed12cf2148a7a9b97af0df8a72f336b73128526383e35def64f5404a6376d8aecf58e9c1a7adcc3f9f33e115e0582175ad56c564fc8afc3ef36be93175ba016859ba97a49b7bbd0b49e185f9e4f8f250af5d5459619d7832471ba54441ed9fa415dd0abe46b17c84a02d9608fa67e40809c737081a6b16b813ebc360d01c9cac57bcd8ec724659dce6a019e3bf4f32bb7042056286fe0e68ef5b1fa4a9b0d907c00eccd3ef125f8f60b3dbe5d32d5ded17178971045c5058afbd28edb93be60a58d54b6cf97b06e6970bfa90853ec1312337d8e34157dbe11576c39e1e2282a1436972ca0755e3a7a3d4336d1348a8f445f78d850b6eacf6b53feb8d84e379f42d5b8a0e58b2d640ec7c77a1633118c598e7673eb3d6f611420fec1c4a11aee68a0c416766a2fb2cb8c2bb8ec59c0f7aa9c50580d2c8f868561311dab1877f7be7f2d8b270e53b455c862a95299275a688c756340ce89c21472e852eecb2d579e09b4f18efa3f801236a330e29870af8af111b6923bff58108e8e4216305c03492eb376578167f47d8e92f1892f488c60811a6bf548ed65ad5d97a8143a6974b3bcfc533242e24f6777a2383c154dbb7cd6641bbc2695f1593d8f574f704110eb469b8567a6b2f2d1e704a5849686b1fb90d846d241d6103f8d7dd4d9530353da2e47a58302572908f79a06019adb4a91290406b8779bf0e3e98226468d9d225a9d4eefc3d640b4c1fe27f1b509a4a7933c94c67cac5c6ed52ff657b006e6b0d0119305a9ddcf2bda852164ae46207e75d57a312ba5168b7e1ead0a0bb0b5dd0ab8020f60ffaf9f33c12865f62ec0af95c48afd1a29b31b5aec7b45eb03b77f1fa4e67dcc55a4d753af3dd099d1face1d70ffcd412cf782fc1d7624b61fa1ac1372fb49d1a2a4196161db401ad2e9d8c333a999978cc802395a5fdcc84e4a598a059631d400374c4be85194b1027d2672891882946e335d437adae48e25b6c67e88d65491d6a4669fdab7976c9ca5268e5b6e35d60093b2128752e51ff65b56a6b34a31b73eaca2c688ab453d3ea8b106a0e0b0257dd131c5a0f31de75d897750ec8dba64b701e1f38c0e530ecde73007e648182b4900e5ec1a4040d77b13dc4bf45c81e82306df0d4fdf5305f157b385b070c45238b6b0d459fc52a616c342a1ecde632304bd050aa355bd072b7d24282cf46451c1818e71bdbf24018bdc74ef7c24f80805f6c3cb44029968a5bcbc6a9d0ce2a4aaf949825e273c151bf98b97d4c40795146ca0ea5ac14b7becba466929010589cefc55ebe3b5b0db8a0ca864eefab92e5ec1298c2e80aa5ba1c3e50a592d24716649d4ba0d286eec73c549347a23df0a967de47e58ec63c478b9b0dcdfbc1808c78450a9b4528c0fed82147ec6af954960e56ea619ef59e8773b014b10989a7e01d3628c21b90503ec8b7e198606112b048fe25a4645e7b314d4b7c06d113b3682c572dc7cabfb05ae2a0938cc80f0b3ad2fae303bcb0a60f5fc59325c22e6c62c1116ea397bd352e3eef39cd8cb0ac8b92344a035220fc974cead7b2fbbd1c6286b94e414c14e2584f3e3a06bf7cd08414d0e0516ce64ab68530fd4280d4ad4d837a811ad826597476770649d0df90435a2021b728e5c2ece895e0fc1fceeedf22e13facb0d4a1bdf80405a9f5020f9a4b3dc121313b75e2a90c872a368108e2a7ebed5cd7ce4c915a5bd56bbd33ea5b5c68c6e42b2cda2061bc371e8db25a9137cf6e6804152a4fb2f5f12fdf6f68174727e01513ecf40c5d5b0ecd45a0d028ae68f312c56318090ea3622ed895d027a83000241dc56facac46f391585b12a87ce48567fc90e91402f4a611175c52422aa705001bfcb91e338120ce10d3caa907f2225f6ec6bf4b12b5b65ca0b53a78fb6f238161fa26c5a4807aefa2d80adc813b1e115f5dc42a70fa89980a5c0a11e85a026c7c91d7872a856c106e25042cd0a853604d7a32956d9be0d9b73c4e303141300057eac403f497458f8f0604ced25167ede98922680eb12a720a6b3097b6c5c8b4736f55a9ac92c9bf9ddfd359581e6b69e651f8142336ff53d651016a65382a73252f744a272d9e4c791b9e306e95c18c3c5a0bbff39c201d0308e0240985adcb4d6c13725b92722ce974bc660f35b046ae6147c55548a4209f8d8d365a30ef6e64488eead03ff595866971360c310970292eb91a27ff7fff1ed796edff46e70c54631704019b04c41d99864414c327e6f4fcfda8b1c124d8917868b4f5df290e14220f19d7452698321c17dbbaa06aeb849de203efe3aaaaf95a831073c537167857d7d0696422b5f285a1d7466087459150c0749950a38167d19acd91f759f5d53c7c9cacae2a7c6d483a8652244032bfa2426a7afecdcfe48f877ea33336c9d307ec6569d6c65c1ae2045150ea08e08ae8f31c5fc0c345ecfdb45603ae81341f14b084f0be3b341d636283268c0280c1b02882ef3dc4dc1a159c88d50e60dc28cfa87bb3c6074c08f3b7f2406ec5555c2fae1d1c95717fffce300981c518256adc90e8f0c2a21c7697971c7d6ba934d341c08aa644be47cf01d0d10070b4be067cc735629df8006ec7505772f2addfd40afefa12ee4e2ce0832766bf0a2040028ff4eae10ce2d441b7ddf2642fb3e1ce82060176901f9bb5104c01435b040b4b436d57b72e4e6554333e8ff405dbb13d1acc6ac182ddc66ef5b39c60fb99ee2c72ab897157874690dcad6a202db462984a65ec63adedda8918ead4bf2ec7e38d6dbf82522135e69ab1be56934a9f70a46fb746a4fb705eb8f489f19aa5fd6f351b99188e794ad95e06412b115e23d5af0f5a587e5f2117276a383dd947551a42ec7230f794f423689756454649db155f219d25088bd58a484d334b852d0fee87038397d603be25a250b07a3249d0d680118f7322e09b295ea1f80015bb1ef3dea8d813a2fbcdd1d4ee3deff4d7c697521a8d4b1641b7a5ffd66453aa909865c18bda058ab3c4f69ca88b8533b50058d2e5cce7adeee37db22f0b6cce86522fef7a49d5b3e8335d7cb34b9a1ef5604fda260f39456e92adc7293264b464fe88bfe5c939c3d856c10d50d1443b688cb482577242255e39018c5a81429812ae5aee58230eeb860a76e73c5a0ef5509e1b1fa00064a15481d0a56ee84d05e76c3f97ca631c44f66bed734ae93d1b93b2958ffff1f72ef94c3a480683de72f3378aa07be1fdf0aa1ef8877bcbf05c4b006d82fbb58cf20fff4817b5df4d6b88cba0312795a0b1e5567d397dc43e8841b6775ec6cb5cce688786a76422c2b2fa4520a34e84c20a2c5d721f1587cae7f281be04fc5e3c937edcf30ead23aa3cec2877bd161696f5f83c556b4a7ef8888a43321a7883968dd3b15f030601ee46ac0425defa4a298c5acbe514501bac6cf753013402c8661ee937304f622a9837be9b981e63d02821bd21d52dafd8eddd68751ebf575452cc325d7d8d619bab8a06a591a7212c50f6266f17def00f858f33ea4adcdcdf629a54d1bfbb6cb7e08d0badf747437fd89630b2ae24486a041ad181716c2ab6244ab8d0123d65f71f8d809b845ac74b8769d278cb77909031699c1cde8e95ac18e6e2f3e2d0981ceb79fa84961df08be1586f7dfe6438174a749e26c5699870f4ea5019a76cb35ed4ea42c6076ad175944462d29b12816278198f8fe3d70d3a4c5fbc2e575c0bea57b335fbe57f7f8e3f1196a0bb7fc3120a10e9af8b30c2f2aa2b796d018bcfed9d99c6afe761f800eea9bef9dd5ac0bfc8fb208562d8eeb136698a8ca74dcf167d999df9110ccef0739eb0d1e4cb75fc2ca7a96ade89a2a8afe31a73da9d02f728db4a244c9359985649e435dce4a6f26d1a4a1d419e80939e49ab8813ca54e574be8211c43593e299ef5fe8af61c197224d5078e3f2eec6da2d1226b6458305709e21f46aab464a297dbc23471a33389cc8c4135601554270613359dc60db48bfed4d9d61c998cb522a088468418a6c523458d0215d580eff5aa4d72f1f1f183a5a5b242f35d1b171aff3a6339dcd1d2822b372567d56f8cdc72bcbe4bf629d7dc7aade016cffc86b648c1499346ee7379b3b5e0505ba26ea7f0c3dca57f3630bb499ab31a34db2516e38f81d9a0a4f29d3adfb1cb9109d52d2bc9c2efab67a8b41f3633d49f35d0bc0bea382341306a536f7a231305f44ee7b89486b88ca1276e4ed8e4edd806c190d6e6e4536a82d17cecac55463d77b1f5e046c9dd054f374ae2064cda75e009d701a3437a902eadc567b7f941d1fd1108c1faeea88047bebc74b45327ff6217ca02a6b2471bb293172692d147c37040be9b904dc7f3c73f0cd796ddeddcff783fb9a26b8eb890fc9408e366e175c82ba83f8a75ec9838967991512b8ad48cdafe693d9404fad2ef4d0a70c600c3ede11979235ff2d4f56f2b095c5cb894a3313927936a16edc67b815b5f5eae46c4be48967f63346b73b3750fe8fe3a99a06fd4aca156ffbd1ffae3cd2c62da5e358fd806386e9f203ffcfc48d0eab17fee8be91f2018a1ddf57e18fc54367d02790bd324f01fa952f62d623538b410073bfa7017ac9b5d0c78db5702fde1874193f94fc63b4937ac1e1974c932cfa85571d3ab1e83d137a95e75fc4524e01d61353978e1e821197d88e4e53a56530b3b7813ee6d1f5b5605407afa222eeb14f62d817c1a041fce19795605594a171b1e016ed3edeae5599ac28a7e09dbf84ffdcf5b7951fa1ff42aaeda0d83b500d82388afc0b356108082f25dcdc377bea57f61c61ffaf7e85f40869aeec0b43ea11bafeb31669d84a2c78f677601b1f19e3e8677a6cb826e57e17e716f2c23c3b16237c1f7807d71895d98d03fb71a9b632a0f4de1a1e661cba76a934f5b8b178fd3052bf76f53201fd8ec4ab7e94eab4fc7b7111307ca001ed1e6282e89cb2b9f865d32377a8a44d7d213a54c338b53f79179cff015d7cc762b88c9c4d82b57cb269a8e57c333dee5389674e2a6013d34ca0092608ce460fa50fbe0f5ee096a07335f6c4fe3e82d57157bdd23a756fdaa41d85198a8c9a53428d39075285583979413217e1c902e0053efa6763646466d0d628e34ea6a9706e54d62714bbdccd39492d92c983202655d796269693b3694c6431c0ad217343f62b201cd521ec06b79f8b2e79340af1500e4921a7f9e786828b0cb8aeb61158b3766629fc5ee797b5684d544ea0067fede73ac1f1704d07c63cc3a551d2bdd9ca7231dd79d8694b25d241f893e511eaa772f93a2c39969460a9bb89a9eaf5be38acac350d2e595541040a9601f69cd14774216af9733f4508c24f83d6ca583cdce01a4aff2279d4452054a1c3494194bcf5ff04e70e244f15763c5b5b270b26f058bdc6ea2e01584810fcecfef971257843cbc3f683fc9aa01934aa0b3b10483d349c5c9ce16b3a1a1c118c775f00b35783bc0c0aa1afecf602f552e9daa71a9ada78570111c997bd988ecac881c7c46887313131192aa8d35ccfa411fd38b8ba6967b343440f2d22537c4ef1978ffa247e1fd08090083f796f7f2a0f81b6732dee11492924e70e26082d789b55830e2a5667fd4ffc9c28bd0b0af0ac438a4b54f01bdaa05a14bbd312a1d3b3d4e8402ad9038d7f10b98799d6241176639c78599218d4aa53f7ad03964bff210bafb06748bf1f26b0e8a6a06d07537767313e093bcae51e7fdbd714deb53a2bd7d7c7c1a1d61fa8935d00d5992e8b752831d34ba233aca2519bcdb4e8fee54ce35c96e6b76ea00c2802354e5c73baba995494cf952fe8dd1d7d3ad84fca77a1409b8da8c4304a5e9b5dddb1501b6f2a3c6b26a276db518a37c5004c4f6dacbc638d1966645a377b62733add3416c2da1e0da4dc07649d0b302240229052916c803553cee8966b71031d8001e84743eb6f9e587f3b3359d8a1f6ded307b81d2e17f010d443956a2fffdefd7ec460b4f310f1c9265cb22660cb6b7767fc9398a5a73eb0307e417c90ded6305e198fd1a2989cd004b20aa60bcf39dc4a050c0bd3d21f911bd921f2c64d0d2339f0c4eac2c1b6def031c4e07c9817167cce2c739f3a294835352058374543bb93dc2304e9ac2091e3440d9663f100d553f5f72442bd83cb4ec67785164d0025efd27ad74f99a474d77d504f24b7152a7bd019f1c3f2583aa05286a3bf483c2246afa7ec981754e56f54c01b01dec47b9c5deb516149766416c36c707337dc33bce59ae46d9f5b3901401771c97fc1c3b439020d913cd6b14270c17c3cd055fc82b66f685817832840faed01c4725eaaaf03f5558cfea98ad5b5d88508fd28e22b4f54efd0f1b4fa887866846cfdfebf607b04903ce8223122782acb0a6f9fdebde9f4fb003f06e755559ca7403faf1355aca08509bbd6a3174737bf7a24ea206ce8f5256e88f7c97a94eadb0ef2492f102a06eebb39fa142e31061f55bc1d85d6cea8d26d23a21ff10b921870bb047a7ed64c8000017e2b472b83355bfd0854215f4276c04f86dfc9cf70c085a7581eeb599c2ab22c477ba080219b8cabdbb57b4729929c2cc60ad60e8b3c08928ab33200ac20b35bf9e3cf9273ff9027558300b82f4fbcf4e4590deadc0d3a7a176431eaa566ae63ab23ff45e9f53d39650ac083f9c45b88201d0e5625b917c7dfb19427f16a56f06f6431761d9fe588961efa0a8be321c8a6c643e3c612a264b00fc639487429071cfd029053cdab97def9d621dbe58fd5fa30c750f3335489de86f2f4b00b785678155e7a580e16abf175cc5459cde7670a6305f443bbbe92b5395103e2651dc6ec863c61afa43b98c556d2730e46a62a8d7f9bb95407acfcf832c9d77541f0de9c9387b36b0336d24328c743a930a43ebd42c95b0d95f4bbc1bb29b0f0ee5bfbf9522a78ea4d1266118a1428ae29abd828ee844ebcf5a876201577544249fa63253d6ad4a647465d03b45b44d97b1232c11a87a9e488f42dff9df0e7a2060a6a29c0917cf06aad34ed53df9599a4ab61f392fc8ffb48f3447e3f1e6233587d613e8a1897c7c9e143e98d801de2b70a7a7ba2d0290bcfa62db27f0d7def60de1697ac0c9cd371f9726b958abe4e7fa6ec870d4fec72736f13cc09633d4263b55f69dbe531c2f792c8a888cb5b94c4c72e72fe66017a844297fe21150fc416d7bf898ad667516af63b14586e5b0596305720cffcff8443653ac7388450457fa31e391aae4f8a1d18c554ca22e2ad0a0307a471c3e2f67cff7091650aa8a429a02059aeec0c472b6516044513a85204cd3ff14931b7e9ce95a486dd38509b408e6881dc8500f4e8a5845d819e047d7ac3426b952f999e9cce0ce142b0e329789c96f02825e1b09c7c392c5d42ac0cca98b75266ee3c4b1c6ef24cca07e9785fe90dfae094088cfb04c2b4e0dbd329a6e858ff9cdc816fc0309041a4bd386bc64a9d7f547fa24197dfcf3ca961f8da3eed5d881529bddf05f794d31fefa62f3f40ddef26d60dcf57dd3b1e3be7a04426b387be0647418b6e1642a7e14605f66448181245a22351543d5bd2528ed9b03d71743edc08d18e255b23746c36016ef4f63e166c4df6fe9130e468356ff67226c6a907fbc9b9be105e03debff76ff7ddc6b25a864e85a44c335efca6e7538eee802e0443b27a8b3c03a684f12409e8c26de097124a8128a1aabbd14ecf42568e3a9d6eb4a0104ce588fc7f2919e87a67faf6a6a202abf2d3fed2f650d62d7ab30ae233a78db101999cf757d4692b21816d2126d8664a9b7aa3092c50e6d7a45d518f57a6d7efe1043faae37333033ae28090d492da8c65e321c2def73a82f9c5c904413c591568f5d471bf9674832bdca67e5b21ce521e50d33ff27627d6b1ab17b2409f0a9f61fa16d5bc3b453cea1f7c4f382ae4217e73354b5f0b97953fc961d69292b8e648b7d862b5122a9ebfcf26d19d488b675169dd3ff1069c22e6968df53ff1af6759d77cf0cff6b1281e9555d7d74ea21afe15f53aa4b989da15f59867693c0058ff47f695eec693bce22e7cfa478ff383558b70d5259b6a3c1434e6ddb19f1d1f0222cb34d6483a8a6abc6e6e933af8175c1228dc44f66c65eefe30f8c08e8f56ee5fa7ca9f0ce6a0baf61490ba5d78bc88394e2f32b1944f00b7b87205088d283ad5a749ad1391dd989b842182416468c3501e7c08867db45b9030133f4a473fa146bf9b013f7f48b282ecde41016d59aa1f5e54f25bedd2662ec0a972d3539cefa5b758d55ea207d404931ef91f1ef591ff2b26363307f5d20da89b96076093b966f0243411e63985cb2abfbece66ae70df0b2431849493f821613a141b9700353e9f805b0eaa0b4d23d01664201a4c0d170742ffa3ffadd7cfea17badef1fa0f39b14a40cd576c3e541534e4bb1b08d07e6fd387e76a413404f6c2265b5dde2332a620346e40b38a9fd62c2f0bdb99de5c3bd4f7ef133adeedc5989a0abfd70b5b8c5e5eafafcb22ece5bd3fa075ce05a91d5aa964b73e5c8f0659214e3f82f06695f6c2870c1901042a05ae79c4d70d58305c55493a9904adb84954be5ec756bd91e477784112d931559cccab586cbd8a9d4d0aaa7845e67885e11f000e0ce08d185c3212459aee058e32057f8ba05e61562b2b86bd5340b7b289ad6d6d1342082164934df6967b07d00dc20d740d98858b0881fd601086a47fbdf61ae790277aaa5d62c1fa8035ba4c29856cc8f41acec9341ac994ce70943e936e9061b0507b11da8ff6e831eca33d9a95b4df9276eeb026931b8e9a7dc0183a02cb5df4f89202e4b91321cfe1be12f244f44558090e5779a298116c3cbceafd6672bde663620ac821b721b463c7ac7f5eb65ea505642663cf30ec70c321447bd487b4f8ab411b8e1b0eecda75abd76b036426670732b3438b9447a330bc75df4dfeb677cfb05b7f5d1dd82bfe62c62ceb3472fec39e754066f296a33dfaedf2d082ed8efd833f1db6c1aedd067bc5ae3dab1709778cbb109d83bb45f4893e8b391a65612a04f5314160b17f3048a63d1a1ef6eb14fbf6efba6e2cf6ebdf775832edd17b8dbab6537ad18b5ef417feb6d767dbf5daa3aff7edd15bd7a53dfa4cb1d7d3bb78db85b96278a63d7a2128fde9e97f68148418d5b04d864ba4f6684b7bf4b3b384833d3d42a672f89029194a0fa545a94cae47eaec6a904197ec0a433a6029b83fa8a28e16c4b2e68c4d60e8c44ba251384813418458a81964bee3b239b72cdb66b6f5b66d338b3a4080280f00d09352665847876632c341a8ce6c6207f6cf7ab66d38eab4a83365f803451cac1b55834e8208c95ee50ca7c81c4ab2954388f6648625f7afebb21c3bdc65d775dcb79df67462135b7663c333368b79663ca2ce57e9c4262a1df94aa7622233d1a8a833e1cf132dc833c69d183ba7bb487b4e62cfcd553fd19e8c3a30884ce5802729e1cf3d99babc04c4d4850120450402f4e475a03f500ad4aee40f3aa9307432714cb202fb91482d5525d25db14ca15c3d562c40a1c5c202194cb0862c83fd754f56d5849112880504d35ee5f15493a73daf9a3b31c3ced561781a0569e46ae24f2657d72ccb925478fee6cef4e150f49b9975af659d7bc5e1f9337daa4f6cddbbf8581f1a355f9de687466daf9e03d680b9fa8c2753f5d82deb73c705b783eed9e9edb2ae1375a2aeeb3afc899e3d13655aa68962d6660ce0a93ab4f0dc813115f63a9bb0b1b71dd93f7ad1b3ec6a87b04445b7343acc282291762b1cac7511f6da134599833558dae8deb0ed5547b9293cb073c7894695745499beca14b7b4579d146461aef2377dac5955912babaaa8e895fd2712894456645f8944a24358bd7b66af4c7bd5bbebc1b457798dea5e1d46c67619a52368b12a1b04a04e201d2e9985310000eb1294a8d6d1635b0e98299e3f4c582f48a651308d0acad5ab19b4a4511172f8a78708b58812d8ef1b8ece39604cf5b902ebf5b71bf35613ed55df6e3c128d74ccb9d78d3857469eaa63b7a2508335524831d8cf1e99f2e68eacee25c955e5e56afac4274c9d2115424ac8dfccf0ab59c6121dbb72d6e306b365d10a0c56067b58d82a7e0a5d44e24d748184ead0a5fb4674a23d198b684f06c9d00a999610ec3ca5980f99c2f04c9429923cc949336303db48b037761f3a851d16d1271f7cb427a5b0f314c79dc8d3a84969dc893c9167273ab1d33b4e441e083ff344dc7922ee3cf144a322842a19fe3cc1837a8545229ede4703606a066a016201a7603f185444a76664a3acc39f2c5a9e4ac12231e51b004ff25ac8529621cb199982353e3f1902f99081ed53ecb5274f29a5ff48f4d7a398d2936e0b89d4d22878f9570ae12194f1487187448a3b3b8d8ab345863f3a9041fe6658804bf008999af121539e930c71cf68520b023ef658cd3171e2e47afc4857205d71c5154b581ae9094f78829ccd35914197c844a32a29a594524a29250ca905c228458631498c7f310a18ff62cf132ed189d3bd7fb1890c1f751a158043001c3e1a69143e7ccc69d43d7c2cd2a81f3ee234ca74f8218dd2e1f049342a87c30b6954cbe18334aa7478208d7271f8231ad5e2f046348a74f81f8d42397c118d1a1dde478f467587e7d128eef042346a3b7c8e466987ff81c6879946d5c3d39069149d7196ab3c65c67581a797cbb82df0f4f2984b82decb616e0af45e1ee35ae8bd1cc6d5a0f7f217b742efe52e7742efc57b29224f1717171717171717efc67cba117a2ffe72bf2a03d9e58577617eb95fcc2f3eef77935d72006e1401f4e24b40863c5d6e04c6c4bfb85f14418e77b91f9133e47900dc9803bd787c6311e8c5df1b71a017ff3b047af1a69b04f4e275b842a0179fc30d02bdf8960b047af1a57b04f4e25d5c23a017dfe2fe805e3ce91601bd78962bc4ca121fe0293e05563103bdf8d1a501bd78d18581a7787b3de8c577d7057af1dc3df4e2b7db02bd78ed92a0179fdd14e8c563d7420d42e8c56824cf9c2211e7c9101a9c64d1e40a58ddfc90e70c8d5c1df6c8d373790b29c56ab9aa5e610a0cc95332d1a8ae7002ad10991cc5a4c0d1b99a12499d5dadeed9d6bc356da6bcde575e127ff31788599ede3ab4ac5aad4967cf2ee99838da921513f5d5b38ece57af905cd5bc6af55ad5eaf37d6daa96178879d65aafcb7afc552bab9a51e6928eaac22579832356b3deaa0419b4724b7b4d6aaf6772d3c8de4cdf87a6d1a88fe4c1340a3ae12d59dc745819620863ae95e116e3617443273f792827b5b55630c349ab7938279669af3d1a3f34aa69f467fa34e414a07881bc41060f60adf7b3ae0f5d52a27cd35b527b11d3e468d4079ba6bd48ad579b8ebe759bae97b52b69594d1fabc753d9f170aba20d6c49c74dce31c62893630669dc4c60ab2cb1f86e3a42a04a564bc8e0016c87c3cad9a1cb0781dae5095b1d23b1a4f624ce5155588591485a5570dec2e853f27d1a49d33f34dc30527b7ddb5edbc0c68a1efb8d0e7aecd98d1fdaebae5efb86bde297aec35c310c7b9c44225f9d88fd1e7f998a35dba5c961c4c26f26b0305b2eed79183e1616fe7bd5e040d3d046cd7a22ebc11ec26df268af477bf2f30596477bf259ca085d4a79208dfa20d08f467dd58846412764791e3daeebcff21ec6d01cd80ffee41042cadbf8b64eae4b12016a1aa67ddb2e910b8b26355054d72e116a8526ecd468cfbacbc9d20bf693492ca09d7a03ab4175eb184fc64d8ecb5aa687044fb86c42272dbb230d73d303d0c069cdd80ce06175760468c8f3ce7c318087c68033f068549021900a50e80cd510d998a053a37d4950ee612647587b368c472086917ce21bd2108f2c210a950339eb232cb730b53dbec294ca4ab5b47802e8c5235611b2e5436345d790c893638323354448550059ebb37e6094a2165bd6831565a7698c8399d4852cc2a053338408e90c3e35a7024e24f5699402179c0c2d01881bb2eacab7cfb8823194985af8b3a290a57585265616a3db9722a6008eced1e6b3af59bc3860aeacfbfdc02da4ca5526e9cab27c608cec3c053cc953a192492c2b525286c41f252ce9a9194244250b273550644788603d476a549e05c17e1610a4c416aeba5a4b80d6aac2328275040b094ab27663cd75e13544264ee18a1434a91942a48509846a669a07f92144342b7a6a544e041554a3fda6264bd2fd93e1862c592bad4bb0a200ad269f95854c029b872bfb81dd4eff451f48c508aa907bdb81926152e6a5396e3a462f05d1d9d87787b9778c5ee7cabb8b4405e7bc66055b55f44965fa30c9f228b7cbb5d22e96ab0f04ca5d73dd58c35d4b0966551d6bae1f518bb9518fcbaeec96f4692f9b8f58feb4c77257ae722b3c59dfae8527ab2fa4924ada9337731bc27ac472497bd9953f28974b1a25ca44572e694f89fd2795d88b4ed3dc96f26ebb7249cae58ffc694f927c7c9e7157fe489f918c28a7e994ee96e829376611ca3b135265ee2837e67721c83aad2f46020dc40d08fa78a9a4511d5e92832c21ab8af6b273d65a1249842d9f11b694549161ebc707f68b47a2cfbd72c4a68f8f8f0fad2a9b76634da6b90c8580a76608116c0c40d6b719638cf1d61cbb6384395a3f1d6fdb24e47aad3ca435e00338fcd40c2142e282931a28b00f21428b3054a39d48017c6aa0b0200f49a511d21b6c1ab2b4c4906517b28d02e90a3de02a576b0f0baceca3cb112e8d5ee5afcadda5926cf94c28aa45186a4f724f3a1cb94487d3dd5a8b2a891ef3e86aa25b2be56c0a87cd00035aadffc866b0910aa972c4306e08c3d447d620201772ac17c9b651ab8a3e256994948296600c3dc8462cc8b5a7086c0fb667640e87b8216e08fae41e6cd4301b4483dc21e4620e7686c02c14ee0265552502e59e81653900f4686c3e004429c9f290a6b75beaa17dfb86870c59d902929d9a21442a2608d56827c292a4068af89b9a2c6a9a8ee533b28c0053416a40942482e524898545964b7012852b64792202445948a0b79060593e5107593eeac8d3ad39a3b7b375638e3e9665e9c81f9924c61879b28c3d0a8835f1081492f8583a578ffd2c1fcb07d69802a6aa15d609d9a2421099e26ab5d689f5e333942f94113891eb10d8a34f7bd2aac2fa59c2fa69215546a2e19cd75cb814b1e56355d127c90de5c894d5034f3265f57043568fb593e579006568f94cac665986ddf2b1aa6814a462043859de72623de9d48c23969246412a44d04426b198583f9690644313f2673559831bf267a1c1c28e7cdc501e9ab99255ac100109f9049c1bb285e2862c1ab720e015b9bae593a5e533efe32268942396e36935217592210088c81b8b48531a811a64d0e5d3628e3e411585684fce1378f404596234b0a2a7e6b1798b4071d93adb09198aecf35996a39e204b4efb5cde4ed8b60b6b241359abf55050ae0c1ec05eefedc61a1893c424d85539abbb8ae276558e25861793c02113e40f06451d5c2be48e6d3c963040d798615826e2ea35a7288b22ecaa5ca76975bb8144cc5f4ca26d385251278b564427a06058d4a1a0605dd77547586bad45b95fccd1aaadda56cb509de854273ad5894e750263e43dcff3446d398ee344afb513751d1caa81ad68e893d4618407572717fd3a83fd913ee049bec33cb65ef4cc8596ab282548ea33eb3d30b4f5d372e4419d580d28ee5069d520ab9e45fb6fc6a551d945d684d2fe65b9ca01da80714685d998a3d8411bb5461b5a9c511d461b76461b2935da20c519550d1db468a3a582f5b7d1c61129d1061052b411a425da10527129b96a120586e4fe11d14612157f5d1d48b431c4ca22570f126d449cea42a28d58a40330a63a4543ae9e4455551fb2038d5c3dc9d5234e8c5cbdaa6e459c5c85007ad5b5fb02bd8a875cfdaa1e3b5024da70893342d043ae5edd54049349072a74d021872972c8a105fab4b4940c502ab928800b172d08d0a205c9071289c5060bcb4a8d9515951e5454526652525052282823d46824e24124b234aced06d075dc0e1cb70960db34194dcb6664192603c3ae98ebaa30b55a312c8bc2a0b43ae5aacad57c8135a40c00acd1778135605669a9d65c9d4711d5617472d5b3037d628042c97c62c083fcc12532b9f22157af16bd3ac8c004dc623f1ec99a7b924197cb850af0542f5f20ea1c885e14c9f58511fa4247ba649d06ebc2a453239c9a7a39c2c932b56424d428edf5dc3f4d93d7be43de463b96026a4fc3b5568d947209c21f7647418dcab07a6e6219961a050d09356ac4a45143b9be8e8652684043a3b8432c84724d3561c34824d960451f1da230b158adb30c16c32e42d865341a6a94f6fa913cd5d76aed08c76703423b86649402922998baa25315428891d0f297dac9f59fcd69affe6b119da653383285225329575979c50e658a746dd369715347e4a99e745339f254cf725338f254bf726752bc2c533c3235da913d3295f2fa54129942793d94a20b652ac5234fb5ca54aa47a65c2b4fa924f254af1de5a676642ad6d4a7ea533a4fe5340a47a65cb2e894148d82d0d35e9f8aa2534f746af43ac2291e0d4a2c5897205863cbd5450bb9ba6091ab4b1972756143aedf8b9c5c5f1cc9f5854eaedf8b9d5cade8f52e4232357a7d76474123a1f6323c476051aef2f8cf25a8a480d1514ec4e828175d89d24727427415ac440a2e651809499eea53eee5a91ee596b28b0e6b46b794e192022c8b5e8495109d8a4eafc4e8d661cd2c83c55b0d2c2a48d6a36ab5161594eb4557469eea47b73eabb61b25055817bd87751186f2d4835e4a6c849361fd6884c363e58364aa6bb8730be81a972079aadf782ce742051853690f86ec8c0b93940b933ed5bb04c198faed05b6fafc265d98b477038920b04bfce9c02e2fbf03c88cccae8b507bf5da7509da7464c7f027b18d7c10950d864b3a700983390db68fdd1fe4a5f1a972b4c904065dae1f1fe468a825320ccad8b98bbdb70e07911dc336198ee7eccdd15e7d778568af5ec201621cd6b2ed8e98b4574741edd5378c8232fcaac49f4b935cb12c06251eedd5c3dca3bd5aefd244a646412e4132950282a7fafab938c9157309ca7514946b0a28d71fd87ec514f8916d667072fd752b86002072dd5c9d830c62d6d25583004eb865588d96cd241a28602305aa810fed964ada934a1a152977a0d25d60d660680186c16a061f1bcf4468149b68da51de8d7ba07c34645efb4d8d7c36a3856596a56516f6aab61bda0d3404438da239905ed56c287a4704395e51ceb419337ac40a8bc1adb6855995cb14e959e3a4708ff43ae9b25c9a73a98f4a0a061a61da840a6934485a2d191ea7e4eaf6912138c972bb51a98c431ce210879af90dc9f58d4bf1484a11d39c1a6ae406538c61087427cb531d79925ab470d028681229a80fcf4ce2639941ea7c512863b7b9bad109acaebd260ac99486698e3c55580995c2fa47732a4b8b28b9bad14703396e433c639f3c3e56366d13f34231371c3237a631367132542d2cab604db3544d73300cc33021ccc2300cc3d6a547dacbc93acb9a4c9e886b76d993e7b55a2cf561863f29740490264940525f2855aa2c3a0c60a8b0a8a14798187a129d08b527e3153c32a5759826694f5ebbf396e2b5c39a8b88790d6b5762f47922b4a7602550aedd4a83ddde4d509ae40c7f373963b9758851294677f2d01c1e3af1477b641a32dc6e603f3559c4a1228dea9c68a371221ab23cf6ecda6e6018cda147ce60b79aa25997cb59bd36471414ed704845b36e97b3babde4237b114156d66dda757fd06b849085652931d715ecd62c079a43a348829680ae80c620cb1ad024193b82fde4fce844544fc14a68af3ec24a40d1437b7525503e0f6bac34d8fe07875a68169685c1be6190b16bb3755b72e45104e51acdb98d2593f6b85cfb5a05cc6bef31afe11ed5690e8b86ddaeaf96e11644f7528e2ed1c3be3f123b943f4b244f3dbd3c8032dcb8fe9b3c4249e0e4905cb292d691564c735a9020b424c73bca59dcea7502fb554d9ac8d4e4993c4de4e46972f3178584660c1a2736d140965f014e09e607260e8cc9e6b3aadd4aa80aaa98d40cd75a6b862ba12ac8a7374a3f90250e8c9154e7d28d364177e4c95283954cda6734042ce4785532dc869853c8dc23b6e172de608390e3e5b28719c17e3d845561e93f9a3394e1153f70c1135e588110cce0a4463e872d08b964c687f6e4ad966d87fcc1259a1f56a2007db2301081827d88c04697cf72d0b0bbe52cde9a9934ecd69cc5ed46490128d7de03e51a1e0245f621f32858f6f4d03ec243aa6b58f2b46417f148fe264f14a27932694f6245b0f4dfe4c16e4ace2e9cc267891caf95fbb6e47aa3c4631ee61e398860064cece0441f998a5a8027792c7ecac086202118239f69356b6399d56ee8219a036b70f1fa314685fd680ee591a94ac90fad824ad1a8d4114a7ba8132099923f42cab1168ed0500db2424de807600c08604c08a8119af3499d1c2b7c5c00b71dd9375caa1a18740037eb07f63a4d6f6ac8d9ad99d4d63079b63c79600daa0363640d608af6f8d4000859d218e880522cec758d0838c8d9ed72468df4334c73da9b3cf309cefee338ee1fcde1ec9d3ced7192e3ecb767f6d22334871aa13934a7515b66399af5d0238da2461a4599c8f249d86d8a254ab63d99d29eec7260f59337ac829cdd2ac36d077d0989868940273e35509474dce49b4cd37d45b9e32991680e3c2591a9aa093cc9574d688ecc7d493fc8fd166068fc59b99672bd700a9f26e46c08ebb525ebc8d4acc1e4919367f2d01c2a2453f112127d57dd7c32040011eba622126f2891be89d44711b4f622bc9449c01a25203a773c06202ae2740e99222d01bd782e892538fcc12718809e4ce5a896f4cf0ed858a4bd781c6dad3836c258c19f1cb56a3692723ca951467234128dc09f1b2e5213c48ef08d6960e0fde0abea555738c62a56b18acf4113233c4dcb6e18638c31c6f8081fa33cc2c5cd7f0d54eade8735a50e9714106f1141df58893ebd859580a2d429613de252f71a14eb73bb0bdb2b4350e7a0601b9413875abbecb74e6763ff68b82f5c5992d591624deb48d9a2d374b70eacd1b5065607593610be8e41d5571795a09c7bf74e9139392dc4f29506eaa02cab65c12838c8e27e4a761e1e1e5893d23bb979729a1c69ee1d1e7ad29ee4f0c71de592fbe81f0a0a77947ff187bb0dcabbd3f4e8c6a1f6e4e8b2566b510e210afe46af40edfd74372af9e17e1a559534aa031a553c63bbdae1c6694f9e7b64c27ead93d38de2bee6388ee3b8d844a6e250904c751c0aeaa038c423e56bb5360b4b45cf5a8bddf063b05fbf7590e05e6d7ce570c9d2f84b477479142962bd5f247bebc854ac350605b5c53c282e71a7b1479f5a5809287a60b7aec43cfd4d4d877b54195602bbf50a97b87e8fea8d8740d17dc8c425ae7a877bccc7473c04c3250e9714d0a72722debad5349dc5ed58d0867dc8933c6c928361284f550c9229582394631378042ce223873cc91c5001b046be48f3e830b1f05febf4e32f204a6446ba32862c83b4bb29adaacfead2d9d27a354fe5b47acaf9ea77deaab507bb6a9594d5a59472c2ae47ca1d969414b0f2ecc38ea721c830ade9e73ce693a49a8d6a4dcacbb2682405ac2c4f245bf550f8d1d19fd79af5b46fc9f6c1a4532802334dc59a6e9d396743c9bde5e72df5a74e9e3f99a6e58d3db193d0696fd361657aa3d3de0d052cf9465dde4c22f1464e8b0542f9195aa104142801ca32195aa164275bc127c7c8d08a2a449195642db7644c78227b195ac1842239830db0d00a264891b3ac3dc35e3ddfcf662c1ecbb078cc896b731de698d19b585517d239c31adb64b7b057596321387e9dadc72a0821d99d893146ecdff310d7adc72494c29965b6cb46d75e654a740d7f581058ceb40d07ca6106731663c4b2190ef2e0b667d997e1eb6608912432a67d4ae4ec9a908c4d27b24d3d919c5db8e990d97a86dd2cfec27e7db3891c2920f317b3856d2eb8edb01e1b7bd6e219fe3ad7b7c05f4f9d2c854cedc23408b357989a3984a816cf3e21cac5337cbd5ecfb2202a8e3ec0a5ca43a68e18227bc49f8eec7147f6885d7b8c22da88d770e778ed157694ab6d385a1eb14d8b0e6739942a9996e58061c7361cd96db4ee57a603ce01b7641dfdb9aeebba361d59b670fc7563147146757947ef2b7ae9d2bbb8dd5b5c7b1a89525fc588e7fcaa19638c56b576d4675fcc194ac4b1a7bdea333245fae4f057b7993ccf43a648f8086c57f067710a06fa62d61eb3579992cff0fc84cccc3d4258618a847d42d4750c67d9b56347c14168e7f01773469a55bbd1077146c425eed5b11f215316cff84ac8ccdaa9902a6bd8add115ddbae1d06e83e1fabaedd0b2064f18e661efee841e863f4bc394d25bdb0d7a2b9ab90f0339fb3290b32c6799d391e57ad26d696fcad39c38cba25665af4eef7793a9f678bf7f3663cfe47643abeaaf9b0b471fc419d5adea3432f6441f441b10661d286bb556469c8a48df6c958b32c80c7ec64b4c5373b8e07640698e46d1a6b4e6a0a1f92147cd1cc8b0bf3d4aa910edd126700116fef42028630f5995a2b2c50a140c003d795a2d21cbf71172017c8833e4673a2546c8d20a335598a1c24cd0cc1466a4301385992533509879c28c136680669a30c3849925cc289951c24c1266ac98f99941c2cc11668c3053c54c1166a8989962c667c60033059821c08c0fa41429b1254f18812809021dbc0028c3474b4254b5689412e27a29a3ec283bc608e3845546fbceb27659b29064655dc209e7ab0867c4eeee892d4ff52cf6c09a3aad0fe5eabb608d2b57556545ae9c90abf9af0ad5aa3e831142c92199a7e91979aa7a03c2e699f6aa4f2c234f5508ac1358d33991a9c95325c9e6ed9ac853454b94d69e1a45a32015433892ab57a14665d129959e2a45a320154218ca958c925cf554a05c452756f8d8207f352857d5112a86b093bf7a45ae6ca6b1651af5cd2455d72457afa8102493a750754d646ae2243e1547abfecc03b68f61d1012b2511a414ed55efbb90ff6472f5f6aa27b9dc0eac44434662662466c6b5a7bd2a06f67b4fae3a279d9346a101c7e274671ec858e6d510870c6fbc412cfc69e249feb42c6a32bec2a59f236fc8a41afb6945b5350d1b4a28533dc0537f8a6ac50c8cc1b13234e6c4de278a86c00a2a9c6439334d2701a8a514ec7c8e191ce60e4b16361d1c6441dbb6cbbb9d5eb865d7b2f6608c96d629eb71489096ef6e9f65adc9cb0d88ea16d3eef276a7162ef5618dd6a7d89f37b0da371c63cea433e2ccfe912373220e0e4ea3644b097bc6186344cd0cc7a2c242eb573d369bb013c77ad59bf90063627fc6227dc40fa1887344ad47fc3042e8871147cc98132395f608a4d1554b991aab5859182bc4335642293bc29845cbd9ddeda3bbff830f1e8c10cda3513caefa8c5e1e370715700861fd8d6acfca3124cffc0dc93187103c289d4264b6e829be80cc11bbc06e7bd485a4904117394760ab2399d96481edcf6d6ef2dab5292cf7d902bb7d9bed75db55de755bd76124a2ab6c5779d69dbb36dbcde8cabbcb7d1bf794af7457e5dc558159656e1bfeba7319b7d29db3e15038148ee350bef20c6565eb1ea4512b47b9b18267ecb61d6e875bf716b74238adfbd67d3bdc388c44b425d15ee3e8e2f659cc51796fe7baab9ce3baa7e0b4fc2a3967f00056e51d15673892611532a4c20c51642acce044ce5e5d47779567dc57ae4d77ee5997552d6e3850be9dbb2b2bf8eb7e8198579ef28dbb2a5fb92aef6ea888de729188444f799faeb75c98234ea3ae94ee41926854b7f24ef9b7b2b2f29594241ab582bfe7148b575656f09772946729378920429c046914cab71b28510b22e4491cc184ed58241a09f26448a3381738955661452928efcb344a6574f8c658f047c2ae6d43444edb7474f76cdbb6ca755db722c160576acbaf4bdf6dbbd175d85b81ed7f357358c39f10b923ab68e880c290933cf3079f7ca4aa87c542fad4a7e920edf5ab9388034f32f5a3a11046a4bb42d9c9a08b8e8d2d446679235fc1f6607b15feac0b9199e26f48eed334b4a4c5dd2f89cc3d6b2b9628c9f6756b1cf0d671c05bf3d571cc57b2fb7213dad4dbf78d39cb2e253c8e09252ee98097c701b3fad12586edddd42062b6dfec47f619dca1079bf2b9dd408171239dbba467f0072972bfc513b9cfd9c3283491e1455644c148ee73562c7992dbd2faf10b9285c86cc31d7f2d43b4781f7e960ef1e7820249641b791ddb1b5ee2b8991506e226535ca292d2e3c0f4dbfdaa8f8e80ee560228e676909205917d47e392f5c35bb24e0f4b16064247add2b28e63c310c34cf19744555d2547cc9d7c8685c8148a6dba5bd8467421f7935888cc1d9ea28f3eb720ece1e5a64384610b1622738bcb43fc95f0748185c8de86e0de027f3173ef8f4886774223f2101f9eed7d4264e6f0a7446e1d324f3c2bfcc90b9159483ff6fbfdc65f11db8f0fe04eca026e3bb0dc1d5ed245f74b228be47683f4afc5b3eccec358b3e3b09ee18a4b3ab6d7e3d85e6924bca25737e6ed22b96e5d558b169f2fe9b05e1d87d5e2559eb8a4a3fa3c8e16a48f3e2124f5a68324a2d70606617377d285871b4c5ddfebe7c49f90cedd33d8007bee197c8085562c619239a96da7f7b35f903ce7a1f5eb52abaf0bfb44ebab8ff4956f9702561ce2100738e4f9c61790d8069e7bdc82b0e7b8aaaa6895b5d65d8eeb4ad64bd9bbdf640b97b6d7df644a731219bebb38ae0e8ac3d261615a5d04e1fd482702c44d2e552fe998df8e63e20dcfdfe40a9774d057c741f117247fa393b01099b9575888ccf0a3df64d8d148eedab3dcef883cfacafd82e4d155ee97441ea5e019216e320abe40ccf672d3a192ed4799769ace41495a8bad2973ced93db33e2f7d7577ccd3bedf84d9e7b59187d2c2df902ca433c7d56f667b528b66537af6a765117d536cd96f522a33a517e82cc25f125948d7b6b8bedb5e3e939706a382edc33c3f2fad10999b02310e7188431c7458a073878574e6b0c416e82ca4f3269160cfb40b6b32ad2fb3becc79cdd553ca9eb0a65ef70695f5afaaaa2aca4a56b2c274fe90234e3aa7849566ca8e5f9f56b31f258d534e594929a5f778fb784b24d62a8613dedfa8eff17d92c49fbc5a7b5d610b65ba90c11d6c5b45b02d4f299553a65a6b6dacb3659c73c60436fe93c93f3a9842fe9edbfaf418704c8921b411e18cf82fcb6de188218c9142d2490aba1f46c0c7d75b94f6848781f014ca2a299669cf93e9aeb536ec0abbc2aed0ba4774f78f46c1232c9861c442414734ca8846b58fb7270363e2e795f2144fb2d04945ab00ea5475819aadad5a6699bd48888e847df7ea16d19ecd695fd1c8147db55e6125aa5bafd8b2ae44b5b0e612cdf6b9f6c2793a67d085ebc6636e9fd527b522abc32499da70eb8826cdaa68756435679c71c639e3dc663531d11cdd5e34e79c739226cb5c992af3eae824e1d661c12b2a19b73dbbdc9c93833574ce39bb6a65f373ce39a7bd68ce392dfeec479ff629ff46a38ffec51f7b9b51ca1ce13947733447f323fca5fc7a96722390684e7b7d8a5244974864a79d737eda4f3bedbfceb187d05a3be79c73ce39670ecfccc2d65b9f1bcaeded26da9bafee9c33a875ecafcefa6571a9abd69c73a2d0572fc27d439973ce393bcca3e2927db570c9d6f7a85ef11028ec87e01edb10eedb6f6a685abb3308d5ad1351ddc2509e88d8de49ac6c6fe36448dfc33ac543a0187d88bcf511ee51cfe1215d9d08faaaba12f2f44454dfb012dd3d3838383835a22bb3bd152777b7e2e0e4ec4201a96802929c4d0ecf6d4e6dce6c4e585361cd9c73c623e62d5cc4873ccd579c439e660e8a67e4691691ef4942410644cc2f2249657559c9c0180b5f61cafa856bd3d3577842d9284aaaa79ec5b5bd299b07f6bd062b3fe75ffb428cc4cc4066f2c44684aaf8c1070f26470e21fbfd2e8d4ab155130a42061b05ef0f9797a68ad887f66077cf99eeee8e34da83a7e9ea5e96694f4afcf56d85e92bdc8da9d4b1b1bb7bde548dc41e1a8d923f8c3822e690a291d844965088e6871f46c02b4690e1230822ea47f4e4a10a1c1a412844219066532bd0ca5476c86dd6add0ebbe7267ba4f48ce91a91ff224af82bfa7604cf2b1ece5017af4333df880235751b33e619492a30163e83f1ebe207275eebac013fd0693e9b57be8d167d7ad971651dd8720b9b2b0acf08f5aad255dc61c21c412acc027063e316766c6874aa351924857f45a72f9c878301efcf9667208219978333e78300280a81cd0935702bc076120aafe25c3bfd001da205d88a2d758a08d161735308c9136da789c210f8f02614d89367e20451b405aa28d9938c3830163e437ada5b10c8c39e6e5f883163217aad8013df9faf32bb23c8557c8f29514b23c1058859904c01829449c210fa390bf1953184c261dc0a0830e396091430e2d4d5a5a4a5f28955c78c1858b165d68d182740589c4c2051696952dacaca86841452545282505250b2828232c8c46a22b88449689b59d15ba8eab02c76d54d8362d48d3b229641926050cbba2705d7549ad1614b2cc21650e9943ce1db0869432cb2700d6681813df597e881c42c829036bccbeb1a4d686acdf8385ef0be10962152231e6904197ee18331887fa5a3d5273c854ec403cc957ffacf5ef97f60d7f32b1031185fdc238b7f01780fc451c527c414c0194a73882ec01c03c19f98b4332a8fcc5a1e8040bdb2998b2f264802c1f03a2aecbcf80a97a792fdab02e0f03d6a02ff202dab070d4007c8135288e4bc0187929b38c433842911621db20ac118544341c007dc01a5ade5e04ec42dea018f2f6c134e42dbb0bf9054bbfbd884659dffea351f5db8d68d4f5cd760a65fb2481ad7e84dcfee33107d68079fb1671f2b64936d87995c7d1a7e84ac8be08e31a004fdb21877dc098ed7304769ee5f1f2f344c8cfbe12a34b5ce23e048a1e2a5f9927a2cf8295106124fd153c24055b79da2e513014d9b7c31a28b6c78ab3ae8cbb36c71f2c4021c76d477d497b34d2de76e8e38525b9a461203ac72cdadb1e73324d7ffb26a3654edb4ed3dc760dfb686fbbc4c256cf44d7c7f6ac7dbc9083fccdd18535a20b6b6a70a7b1c4c5b276a18f178290b98be5de6ec41c18b375356b1722618a9cec637badb6c39f25917ecffb64361e3066eb4cb1b0d5a1cb866dea91d99719b21eec949fb0669abe8971060f2736a5bdccc22e0bc3ac26c3112549baa68f5d560e29f8b0708a251cc9d7adcc925e65c32922b5176d2c0de214adbd28922f5d403aa5bd222dd4a351700a253e1ab592fb41224e2cd2a9229a8f125e90fbd148a7a018768a68149c620939b9ff435e1246216f2d77c2ebf24d3f6135e2cb8b0c18181ef0e176039fa637fcc523a4169bb26d3c649165b8984c3cf03001972c037f4564202e79871d584ed35b7c0b899462adf69d483906c6bb6b3a8cbba3bb097ff1ab79a340ccff6601b6f7e9ddb5d90ef3e970db648ec13264c4de699efed6a80d5f40f64e772cb78b34ce16e3b603e6321ef1b7c365e0cec95e6e1fe9c19a7eb1c09abec024f790e1143200cad94f325e4ed3945223b41ac282a50135aab5bf7851c523192c0d27f200fed11e99aa6ab59644fa3dcf47caed86ccb31eec9dd162064dc738dc6ec4d86e74cf7abb113718780ebddc0aa72a62a4f2a9aaa87e945440d592eade8ac9155593f6a4e7441e800034ef51a83d2657109316ea5aa751302f321ee3998c1be3f61198cbc0ad93454dc6856142a851302e21183f3d83712fa1d3bd8260e08071b5c06a3ef87a32f484d6a3258171613ed938cc85b9997493ce02a681ba4d769b4cc19a14ac79b9361ee3c2dc471a658309d3296a43a66a489e7e1a75bae95149a746373d2e69948c9bba9b4cf1a647238dda6e6a7113cc4d97b9e9c54d336e7a74a251d94d8f3c8dc26e8271d3bde9318a466937c9984cb4c764ba27532d371d9a5e6d374c78c646a10cb71da520b6c76f8f978183b48ccbc036a5185c7a39cc320e73a9eb3eba2558733d516261fee99d07732fc6c914062b0cf564799925195a923f8c27cb6739372b92e1b45c6c479ee4b527b2fce5c9f230b0ac892cff82899f44b216e6c2bcddd87261127cb27004a7a66fc42ebc22df1b7f723504970065da2353b0a6521ffa4361706644e6663374b28c8c4b430637ce8d22edc9120f78877f1e0c8f46d0a533e30268a0fb974399b231313131f7616626db4c40e65210f1dbb76c3dc1464c7da4d8dec9381604fb5d439d8cc7a1f6301c2058d3e3bf4bc6bd9e24b1dbbbedddd675dd769bae81baaeebba6dc357d000aed267c46039cc0f1428c8dfa553871a151b3543a62a1f20da74319971319df8e283e178d3b7c7edddbf7813be82dabb84b6c70ddbc45f4c1a2862791732fe6ddb26e3d29ef6647cb505863025e3a66732ee257405b5c7c4946350a34c996e374c57d0c5e412aabe0ea2492e1d2d9afed5ae1a8a4cd8fba2f46b089e240b8ec1bd5c30262841feea100f7284798cf9d0570d9d4ed3d590bcf745e5a33380fbcd4ce37adf4d3ef170181788cb8d1da00f0ff77a8215c9f2f8c2f64c3766cb0a7bd5adeff5e41ab294d8299c3c11850dc038dc6ec0ed46cccb667a6c528b6653ea57bbae33ddef25868c7717e632ee8eee1d0ccccbbb97c32dc630ddf4cec1c17e604dff1a6787e9b148a3224ea33aa7aba87c5a88cca6f786c3647ad6837d91c927986f4db4273126b0231d96d39e1432b1223102d1309cce0a82edbc693b40b08d651ce6ca38ddea497b95143eed3d1185b6d31ecf4fa34cf88baf7cdaab7eb0606336bdfa694f9aaa18c269140cfe629ef10ce6529c6a08e65f35543dd9ba7e79df185f0365914fff1ae81a82b930cfb82c37695564f918f7e4840fec477b32eda1548969e298e2574df8b35712798a2819fe3cd1062c7c1ac57216fca40a998ba3fb86638c8fdb5f9ebddc06a23c005a623ac980e9deb8f4cde5e584bf5a65e0cf5a18fc91b2e91f29bf1c9a301231bf7cbb31f776e3e56283a681940f940007d694601c884b8e29c59ca6615d030bba8053f3d9ccc95c985f6e8ca5c378bc384a87edc1786f40f48681b86498c378e9964487d9e630dd987f626e4711e3310a24765822f73328c466989b68e4aec35f7f3349402637b6897196673dd898186390509652b427691559c2b83667516b2a328c3bca99d4aec8306e8b9c4dad923d23ac2897c1dcce19d5625c1696c7f896a45152e55fcb3f3b7575bf7bda8b21e824377878d29ec4a131e370bb31e334bd6d34be5d205a9639dc6ec8b8c001f064a0481db98386f624932b1a08750dc198d42515eceb500fb7710dd5a1d7f8cc0d4080bbec70017ceed89651d821fa3d78f0c07e70eb7c14d15d4b6c3bb0589cb96363e9048c912e80352a103376f96b08d6c8b2fcf564000318c00078c8a6067367ce5ac37260619edfe230de83953ad77643ee543dc830ee968d1c9138ed495984c915573001ea20d9412df28b9ab899f0974436956a2988eef7177f37b9eb6d07e9dd12b6d4020960c8c9a70c91d0a40b196e417418c908c3bcb8e90a91fda43dd935b787b20b2e8a16dfb61b2df08ccdf7029dfb2deecc708339b7e180390524cce1d6025f43180e2c0c1abb6a5a7125d33bcf0c7361ee5b325de62a6726ec098b6366d34bff286c02db8331373ab97b7669302d02fbbdc86d3ac5a929424da5cb384d5f4343db0dacaf27530416c3b996b0f11814f6bb86280dfeaa01f0570b803f6b7dc01fc9057fa44cf177cfa33d356e26ac03e625dcc5bca3456e60bb6ba851f7f2d7934609e0f2184e63451ad5e2f2584ea35e5c1e33d228d3e5b1231813984ea3767897726b898569716bbb617ad683bda7e9b8ed2805d1dde52ed806003b3c6e38220f1888ce5de2e130774bee15c0bd9e5c0ce76245b01ccc0876046302d3b181eda0ab03361e863ccabd9e5c2c00172b723117173b723126da93a771b11917db91b998131acc8d426fc8302e4b869b0c7c0db5878585711eee0f23846cd4e861a61a6a148ccb574f1a157369fa67f3cb61ffe557d0e9359f7efcd5d3574e57c11f29573e30b8844f26fc916c87bf93f0e7c1b0b61b3138c6a591da077091a8f277a52eea22314f95cf57e31dfa3400dcd21599744b8d81e89c729577869b8bd3748cab9da593ccb9dd98db8dec7d775822c3b839e4d28548d002132e7a5c6814ed4920bac378063753b78d2e105b1139e2af74202eb97b3fe612a6a6fbdd641830304dc2f2b5381097ccc2f2fbb801d1ffe3a6c325ff7d83b8e447d3fbd9d583d50e4426c33453167396f190c9dd4df2162f10998cc51fe4cf25c3588397c8df718653202109b9851643c695c10e9232fe18efed7bf98c6ff88b69dc4136415c72bfb18de9dd4d2f3d335d9877a5bbc178a9afe9d9d44a77ebb6fbb9e4edbd6ddbf6acfba5fbb9e4d28d37b51713d087713f93102f2f1d7edd1b733bb83164f44f2c6fb80501f3eea60bf3784b87f11561ba30879b8ed2b7d334fe8ac8305eba11c633182653115f1119c6673aee575b8e985f0ee37edd6130b703db61202ef773dbf1f2c6362f2f619bd3fba6afc3405cf20b9ea7b738dc8260d171c2325888cc313e037f315888cc321e65bc878881bf9865bc6574ddb6955e99de7d93813f25aa6ebba984bfb8451d1dd47d366a7b87bf5ef20eba5fcc5d16d7a6a3b14907d6f53b8ce9c0eae89b4e23237ef1edc22bbf78f622801d0e3b35806b48a64632872123860ef13ae460732700990bdb7bc1dff3cbb70720c6e0af9e64c0c07879005e5c9bed26969b4c7ff12c9b1adc70bce0aff3cbbd77dd638c3cd01880007690790eb765870bdb1300fe2e833f970c93bbcba091bbc3f890bbc3e85e1a3aec148dc31ec00ea5cb1c364a003fc58899c103ee68e00f6600f8a3b103fe7cc8f102b8b03d197c0d759f8165e0afc66098a11818061ecaa712fe9e03f0970b01702f5e5e20e6ed2f17e600bc788bcf4d47e70ddbbcb8e9710b82e5a6c34dc78b9b5edc2d01f085b6dd78bf22b61db0bdaf881c3b7c23458edb35fdc585d9b4ddced17497b757fadbeb107053daf047249bdee21dfe80b8e4f8167f61c22f5e5c96fbf9c82d0e80fbdd24c92d8eef57446e016b2e9eb17fb60971939f5d2066965b9b0e95ccc272b9dd6f6696f7cd020d4f6291782426893d910702c1202804859ac49c8833143f970c43c3870c835a7e3eed482e99beddeea6bb637bc772e3fd64721cbde55f4de5a0830e17760e2d7764b3f6eddac4c3ac1d6e710232b9843f1e19884cc6dee2b68b7b03bb37b0f7fd80b864164c9360dab3018b91a26814094fc025a3f434aa597a6527cbab644e64f9949b19694f1e43c14846c74698884b0d14d8a518be89ee114060c76d5c0f846613fb412797904c5d6c8027790d34f9400984e43514cb3045be92fcc8d4a5034fb20e5d492e276ac8dfa5e3b3440df9ab43d710e9629f4b8b7a5c88c89b8b48bce968dc820632b88355c12179be564969d7f600ccf105fbfd873405e8f3040e0e5ccc19d8525fbe56219ca692768441f68b3842304a92509638b55a4b8a385103b006ccf2b10445aa8833333333f3d32b70027bc6c042924c0505411249a660cd3d991c65d4c007b2844db2880363e42b1c93c86d049b082cfcc429edc9db2858781fed491973228e3834b0f03e9c6833c8e001acbca5dd3a50aeb41fd6a2993942aa1489f903c6543b32158fc853757b04d778a45a893fdb78ee5808c054f7ea3f608d98ab2aabaaea2499ea70ec91a7ea1cae483996c156187be494595b72ce96c7ae6cd96368c1e57d68afaac7f011f8079ca1d94860213582091b7ba0467fc854866728a5f5d4faac2a8a9164afa79b0eeb1a7dc5ae8d751d7bbdd675eca3b35eedd8d54e73cd3e8de85345677cf8d15ef5d8933f9f9ef8530635d05bb8ea89c2d2631f86d163b7c16ed9466155add6fec0b66af4f5a23826a9aab883da09225371079eaa78049eaa573f3918410524559890f55fbd71750b6772b6272bcb7a5773563dbb8a5b75fa4d99a3032ed05fcfba48033320c1a9812e3498b0988c4c65f8544af9ef1223c94e9fc94dc7757a5d79ebdac84cc6ebf893bf8075e9e595b9742afba4d1a7293f5da64c7bf327b01ff4a990665ed51463f0c2b4b806d978482353f0aa66dc5c60297d25447b3355afeb7a6dcf16b1b5a634cad2648a06571eedcdd7a9750ad64c2c8435054bf111f8477b96142cfc0785a093cb03590f56be654b591d68926cd774843e19de05c511b70c8d9946cd9e91d961d24f38e7ccb2e2e0e0e0f8d4f47f08a18c8c0c3cf5a165cd1985dc32146bedd5c0ed466daf2726d9cd0616feb3140c4277f1ce44a688467d97a171970c03ac7ca8c46c9595554d32a6660682000001f313002028140c0845a3e1783ca40b73ed0114000d94c04e745099a7414e31638c21861000000000000100000810004c8d4425805e523568580ade266aec1755d39f3940a251a470ad2f1d3a415541413c76766423b2f0e3a706dbab3981fa797788189f29194846d2adf304c5839e844c72de243763d520e0faf983b1288c1f08cef3f1f91b43c39f8a49bdaa3b7918ceccf6bf9d320e5dc9f9670cf364be997fc1e2e67106da818d2925a4a9449a33ca77f0ddc2f5cc61244b88eb61e700cabcdc42f498e2aba964f254aeb10bc81af41e71e7c7c3487fd6a046a1752cf0ee6a1e53cc2d0dd14c9f0ddbfd4f523f9d454b113ad78ddba5aa33008c85f62e65761f6c86f6da2d471a4f4e744e57ab669b3111a59a41498ed68e36088c525a6e337f45bb6e421ef99b186560215e0fc7bbb943e31f377d65bb5ed007425747406248959abe2ab8ceccec88c861363125511b3621a34cbd53d526df51c5355de699aa2b68b9a867366c8f26c93664cf72df6339e1c50bfa1632c2fb334067919ff883d3401e905064ebb49b53b026835b1a6e14aefaaefdd4728a7151c13cce80b6e25f855fa25486c6d360d18eed65c0bbd7ce5ff8cb4fe20ebc0325d4fb3de57931e55d4ddd98af600788724b31973da9a5e1a4c169564e59998de65d690390d8a6c79a9961e8a92170f98c59013af40581764df317efe290a6ba69d3649c16b0cd6562ebbc2b52ed359a49eaaf6958141048c691be4a98a46c34c5a9dc90cb553b28448aabbd32d663d4df42a5d2752a0b95f8f5d4dafa2e81eb612f4d140b98878c6322caf1903268638ed073c21c656d442a11a51398cb4678c8afd8bf0e2955029a48fff10adc6e08bd845ea9dbdb35d938cbdf989d30252392f4e25525efc046511a5b666144107778a0a4625e5998a8304afbeecdc948bbf658e9cece2d1140d15f7b9e8e478ec8b30490349334e109385aeb49fa95182a3a0833403d0e1b1a79071bea0cb6ebf000b141985cf429276114993ce8c8389748ae8c64b47c0dee07319397bc9d034908c09d7ab873ee9fbd8baf696f8107baeb070afde122df8c926ea569665e20497ba1c11d745484d553429a6bbf630c1b18db4bc14ac4c36e1240d018d075c40cb985f98630ef5adc7cd181e06a4bec3fb074c0b41b08da4c336b2e71fa886ece374505c2225d2e1710c21bf40192509df33a862577721193cab86e4a1d8297c9fb889af53e9b9b127ef9f83ec57990584cec1c1097b01cea2c18fc992356956a8ab01eac4d3d91342e8cabf50af64aca55a8e953cbb8b7ae9db506f6e7675ee4235fe20c2174861d04e9fd6bf062a428201fb15667ae87aaaa4368bd99629546156158d6a56580090654daf6a1bb714fe26705a786ba2f51f906e41485beda0ef4d8bdd81a3035db8d11b6e10aaa722d3395ea65d78831dfdc4860c67bd78291e725288775cfa5fd721a7f947af4360e89245038a77b4d6915fc4f1d5b9849446308ea7cf5fd338f994cce94bbced5b61c6da799d555348c595e7bad36c28a170fc471c22d324a03af79a43fa6ebdecdee018c96f1f53a89ad6d7b8de7e3ee029c84c9d6f52076b3ca980434c12ed2a847be6ba904a294526912996a6ad2b54433f46a387c4b10dff053e62e59758c2b551e29c1ad3285df4f45a974450a7f05094f42ba146b07644bf64c45a243d1c0d24f519cf585fbd1f65af966161ec9d7ebbc096ca8e4fd1821efe37a4ea3cd989d4a7b377171c0b37cf2322092cf9caf0ca702941b1089a7f700dd851a040095ebaab5e47834c5425ef016ff8bc2dce727fe2acf0707d1c92134a70b59b32a0cba597c21b9dce19776a138b5d8d7f9c86a1d28edc5ae4f70aa24ea2acbf1e202a8d2823b54b9d2872174d02fd41a73d16029fb0507eba11c8e9829af74ae894bb145c6fc7afeafa78d7209f479c3e4e91bb581f61aa4cffd2a18d600acfdcf2412185b4bb7f3ce5cb11f5d912c0e049bef8d94e0472f51428e53764ec82061900da5428804f0d2d94071cde29259aea97154622ddd5d81a37b8fa8adcee2382475d0f92424f3ce5e15f3426d3367e56ad9afce410053482783ee821b3f3bb46cd783a62fa1bfa09d691779bb96b04f021e02df10d7a80f25e62d81eb29a9c14421d9b9437e44b2c0a1c847d3b1db09509ada3abe70d943ba42f0ec164a58ff8beae7e87f5d34d89608fc5e0af89e1e52a6aa3f4b60307702324f1ccb4356a109e9916c319f93aa0d22cf4ed48064b50b60fe8c4af572f3f26a2454eb32ff77e78bfa9a9fbfff094a207cec993bcac9db1d239e27f867ac5d93bd4108cd497bf535263ab9182eb4a0246d6849c9f36951d546400249196aa8c547d92bc9c0cabc5ab4a265f412d2a07ac25db6bbae3890fd7c3d5cfed70e159f886f6e88263e6a79506431563849670148ec4e83c10757b61dd898569a41f502f78038e6d1ec766a9c367c0c5e0faade95d12be43d4c5c6b7d1f48a1959ab3c71b1d714324942a85dddff96bb34835e9d0528dddb4bd6f58f00d2e80e025a560bc305b96a70d5982d2847b89bc8e782dc42d88bb56bf82931af0bf215ce87b3625980da54bcec3a8d60f5b6caa978e9b2173cc524191abe32559492a8cb2f0db08ca737f9bf98cbffc70bc15a2a0844bc4c824baf7269dc585235acf63d209871d2a5a2b1d5e4721c95b99a99938eff3d59d2287c2d8470543d20a4a6f61cc44b3a9e7c8871e2af11a8b7d13a59e9937788497ec454e500e53a338aab84d4fa4b3298e2d086dfb193e9e3e0dd0860404d63426bc081ae0d23b68bf552f81cd4d83307b7fe978fdc7268b37a1e589982ff618fadf0aa3cb04a41b29db45b3b37502693ee1d5430b370208441bcf9ab7fc1f1b37f095448bc66de73de441826bc1d2301884f175d9fe9239086925563ec898fff470c44b45d81a5160f12df7158818162124cd0e969c8fac07573f9074a3fb7c65786d6af73b82d87bda395689d83ca7af58959492187b32a89f610ba616716d842d25149574933cdc0d61d89963b8924afbfd44d4a920f121c85a5d474fb81ea8007ef24039635a064611da80030d50f951df9a655d9f44b2996dcf47b847490f9b382de91360bca503de1652811769d889f68d41085b271a1c621853955b1001298202c2eaf5dc31f1e489fcacf67ff1791f30ba17382a9148e76845f50bb834450949f594cb13101ac34572e1e63e686900be82219fe39ecc0e55ec4a0af4633d2b582c1a7da7b0d80685836236778119cf2583de7a330ef834f7a4070e1928ba94bc6e1cee99ad9934e2928314fd41b45a9672f460210c3f21f85e61d6b2183422106e54466b34415432b47eda6e29fd990f92a3f9c13a1a030f8ebb16b36f8921a6264ba6b510ac07749390dd295e5b0e0170b942b8741e2045191210e1635f4fc272ce024f35704a048b74463da01fdbd312d926311fcaf377005f984e545db946ff124bc7483cc913d4ee1f56b051c92567c3fd1d4baebade8fbe0a5d67309515caf04ca2808d2832198df6b4fd4cfff51a97f8296bb45fecf47b53f64630232f4bae08c6fe3bf4de7bf4a22510440961ce624d120531beee620858012f4579d82af57c4604400600849cdb5a843e1be5c1bb3495323ab75ad5fa457d8961bf0134a8eea2d0f25fb0d5a596f1722792c2c0dc2e1c6c75b281623dc5bee821276449a21dbaebb887a8d981507c2f461b3d655dc5219af9e8c61d1c52898944be930318f893fbb5c6477e41aac9761a028a4d0ff0ed1d51f617b9c786f0dab2764d96a02a54c8d73e647e8e586ecb687564ac87785b7551efdff9b3d72abb619f2a725db8d40d46d97ad905dbfb3a4f8cf3ddd0e3727728c8297149268feae7df6da4dd295d27ec45600e32976ae3560111ad09d10170719f71727dd0142c5f83cd274470dce1bc1d89e9a49bef24b8f9264d2b6c0f1d3040f85af1c7363ac60ba47ebf5ae1c6b3be8dfbf726e01c742f116165b54bfcdde70929638efd6649f1af14d6c1b47a64f4969bf3b455884b1a3ed6ca1e8c4253158d26353bdccf30c6a628a088c4dd6df9aa28a4bf861979fb9205e055779c48fd8295953257b11c36c7eebe358e4e78a55589cf4063060131f92c12bdbb9ebb99635914bfd56271f047e90d2b6dc5993b5b928d385f2420f5bdd1d361e8697eea105ed2df795516826257aec6fe9b06a0d55f6233e9d4a509ffccf93391f771788e418b2c803480e43028d618040b218d5382ecc71c5bec8f24d84837814560d46a235865f9f2eb6eb56eda6214a4c46387f7e9e6a4d731db8196755464e66d4f126cd106e620ba9b08269ba09b10b7de4bdb6c17606ab788d9011752c835a075584f62d525f5ad340ed4207cbe8f3a31c8142d1a3b608eb54679d6920422fe9cf1add9da6bacc2db4e6ade16ddd3adbb798c55a99cb2eb5faa045665fedf40e0cba9a24d3ed84bf67c3cba61e935f0e17efb774ee15a6c874fb9cdb6b868d7b11b8b32fd685fb87d9165550675c57cbc737a4b744bd51c646d64708c4958be1b01082c39a9ad09c71781ed1d9eaa544c9c36b402103e07d29d8d7e84d526458113473cde2814e14eed667b3b4d0cec69f04015053bcaaf3484796a5ccfa2295e3dd2e08e9ef3a19b1eace9e6a7baee25f68334cf6d2cdbfaac05cd10219bee20793ae31c209b0db693311fd693b3f3f7b57c7d6c190c084c1d305e6e44e1f1e38cdddafcb94024c780460d77d2d6a050958490f888e4b0cfd82e157b99bcac9f4f07e50e2ecc9d9cb0dbda160adde02cdb4b53b81919007aace8dd9f5e62d4f221c305a805421abcf8d25ed713c93e0ec480f35606f4223b0b7e7b9b8bce3a370213741efa0ba5c2ec979debb0b99d9381f06008749c972d30611e5dbf84092e7d079dd230166e1c2403f1afc09d9d30d36c03a5777e6e8c880323a2822b29988251bce5dee174c8d398124a5332148c5a92f1f7242a0e3be3aa554c224da54adf8ce872322c94e0f36ca9f81784fdcbadecdabb4d8575914bf49b33e23794ddbe414bf50d94f6bea1fd73970551f07c81c47c431b7e1011a0ca4f97e715e1e18a9d1efa59450268db34d28c10b0020da47af41e0bfa138121d6aaa9f63f345eda7ef0797edc828c457095700f787973d3a1e2694b875191bf15ad8055212a225c8df9dd4e4815484047b77551748aabc03465fe55abf42754f42af0bebceaae18f1bda80201dec851815e78464f597c00c156b0ceb94dd65bba1412f6ccc0965b6fdd11556ef46732a94879741efd6ea213e2b777373d4dd8bd0d843d12e0ac9bf04c4ee3807cc64d97f963a4e2be5d42d30d4d0db4b9a4f36104604de91283a85a160475d1b37550a9a9659c275561cbc6cab6d1233c2e93a813164ad7b7eb76a3e6e50f549c3e08bbe05bad1218fe04bdf7c5f7d9f744eea5b1cdf76f1f18cb81ba5fa4b9b179e5a3818727221c75cdc56b628e2d17c6ec794da91987d2ccdc4f756c4b9894f813dbf2ff1e79692d81e3f63b9b507d5e281ab1fea2b6928689d2520fb160f75f89128ac2bc6b9e66a9b5b13e1bec75614987776f88ec5d8dd72b2af5970a549fdd0264de6ec41db83536619ca0da0df2636b085afbae774b915d89daaed79dc4aa6ec5c7367befd4e12eac0cde3665f341695ba5586a81e44eb1018a895d9bbdac047953e8c9a17ae18e06176570b20e4f42b6a7a1077827703f01a1c67a82e10e61a06a179ab2d3b75dc50a426d123a1dfc9538d6e6f63cc9e4f32b560a120ade9b6b1b37cfea039017eb09b03e46a6fd2d6618d0f60d439821e5fb5f968acee8c63367d87c79212586d102ac2b0692a94367585b28421cbfd7990c694fd9d7bc3606ead398262668ebb55a232911779a5b4537793989f07d3380e0871f204faea4e7c136db4964f84aece16a53b0afc66ddeeead3c2f9ea7b5886d961f7c007deb3ae89ac86a21122e01a45dd79857d2432b9fc3c347af1990b76f40b63c9cb23011aabc66f305b9b56b117acd789c4bad06a0e13df3afe44478c20d6f41f7abe8274dfaaec0f931f74a5e60ff721dabb02373a083981039fd6de443bb4629845950d6bb88d4d7415a66e9c192f88bde068e7dcb4ad702957179d60a2a51781e779302f71ab2fe07136a41cbd248a4bc51c29ee22b0668bd14e2fb20fd695878414fe6795db5a56468ad6818088caa650905dc49826ade9e2889c7c948302ee495e1b7c43845320b12923105616d5d039a3aae2fa386cec1672050b27f6a46af41fa93438d648c90fe70a46f046a4be9b3358e9b460e2838f546df513109705ab0139dfabaca66a2e44d10b95253cd9c89ca8fd83b2698fdfabffc97f99ffb6e21e4cc158b5dfc7d532f964c9ac7a8c5011cd825a50e0e56e3001e8f25fec0f7b9556d6658c7171fe24bde081797522ca8abf8ab583d6c420b31534a88f4e03cdf47035db41cb8b36e3085f05e2446de65f9945b195ae7ea7e2b720b00d3bc4507c29f308193468f4b176345d6609c4d43ebe20994bf23d2b0e0ae3a6b81f14bb2cb8793e0ca35ea701d425d9db17847596b1583af93d04ab80f5e3833e04e2c3ee0d71bd826d783494f5a035a9b93a830b9a8361d6049cacf9061dcc75528ee5e2f21cd587da2e245375efaec1b49beccfc282131daf32a3c394f4896ee845fb2e66549b48ffe6ef7ee0ed3eca9100051054fae3e3f69b0fcc50107ec97e0cc48acd592fd3edaa5038d2615735d04f654aeec81736f773b5b1952f6999702ccd2551878a76f29ae464fd79ada65f23e8ee702a90becdcd18a28ad64e43758cb08d1704bf4694e3ec4bcebd22941528772413c6a3e8cafb2c9173e3d7561566a649ec37410e3302c441d58c5dd615f3150864f7d712edeeb1d6aceae141b9047721e151f6f359e55d52eb0cd42edb7e3c5bcc9fcd9de4e1a499dee3c73144432045e1ace1e5a5bf9048511ddcb022fafd8e2c2d5923f598990eb0e20e8e716a524032040c8548c7e81eeef8033ce482f4d0de1e1537e72aa8208e90b043321a28b731e0faf99cbc962105bc1db41d72e314cd460d7ea5d741d202720e7cdd2a93a37ba9196bc9647c54889246bf547ec8bf91690023e2fc70a5f1e69bb20bca9557bf2035da91ebc82de2672813af9199f3a4352d1a0b19966f23c5c3756bf726e36c487831e33d31a3d446c9ef9aa68f63ee3ca0aca3160af7d3f11bede6845da5d51cb67e00f95ea1edfabe532aec5fbd24559c958ae08e65c80749873b9619db0eea347798444d15f1dcdac89b07f8c227f406ad90b6bb04ab90a95806e3065b0ab9855f88d0fd7e18838f4c9fd4cbb15db263718f1694e25b14ff4c901872a074c1fa0d8782b70b43d6b278db805a576f18898dbd87fc035a2620453fdcf0b1e705a51ebfbe87cc060e213547c1ee34dcd27e03edb3db23b33eddd21701dd3582f25320f3f1b15bb656bb95f8e761f86be325bbe61e17d73cffad35037eea8a2b07e48b86f3c48aea7b121d920c50e3d964a6f208242b4705dbf8170cc03220cc234403703e6d63c554c75e3ef69f55afb98367a0df4c8253a49bb606abee765662790950180a37833363379ae8275be59db6b7f8668ad41eff87f393d53a547e0df68e06b86b87dde1b9678396c6a155f4c6e370853c673cd0804556d765d846635989f01de3ff0e54def41e26e12fd55305114714aa0a439dae36f8e0649c001d15fa7ba6ef30f02ac75270490fdf90fdcf114688f98fea9d72604084752f707890e9186e401ad8e064f24870838c9952941700d410715139e360462029cf49f047fc01759e0e61823bad546621f10c4458aeea70e231e80b2ad8cae6400fd6162f2999a00c4d8782747139d914c1445aaf71dc9ad80aee5484c7ccc6f36e9047df68261f58700787f1ef363431e1408ce2b37117cb372323e01a47b1332584660c701ab0eb8718d484d879875f4e1c4caa8b920229308579efffb359666ff6f761ddf17220639ad680a1ce43f2d66bf376c2037a0885a588504360f274a2fc26bd389fa389d4b461f7872218db039dbccf0299adf6f1976c528453063fe60e0e98003977ffa14571303120411bc509317d0e260f7463eae30eebdbc61ac9b68fb4fe8125408b4bf4f252e301b29d09583c8183302f9624f1298894e5ba289f9d6f8600ececf8c958623205794cdd79deb79707bec6e0d2fc938127d8f00b7ddb572ac278d8884aba28f806687dedc7c85c55410d98b3f839d201a5c630bbae0c4844a7fe40f0bf18ad350c8c986dcf840af79c6bf150d21240e5dc085f0ba980f1744f6541c531507ad7fbc78cf4f23be63d89a72a26d352444076f741b0dc43fdac3cd704ff106bd233c53d9594f01cc5c64e9c20a2b05ac9bcfa8d5e053acdf14bab54aadc37f1cf0f0e38b45f5a63679644d7a112293eab98b01f8d99173e6c8e0355e651751510f5729603ca85735542d8c24a23a8d5e2aad376bf546e0adaa215409fad393aec7364f8947ce373d7d4c3037fe869c4a0190eef918341aad3389e554c238149a0989e3bcdba69c2b598ff70605f1380fa17b69a60f376b656d1d13ee8ff2f24d0de44f4d6af3825e7095ae5dad28e0d7d44e2ffc95109e86f78e2d93ce25019606099302d9957e8506d56b3221a1a26256e890aa3cd932190a987106907f9f2bc99f41930a32c1cb74c52681a09225f311253f7f3a274a3bb18b45c6608b8268a11f076bc990691397f8198968d58f0c48654bb1d944c0158ebfceeb854c8950b2ce7b4add069de19ff234275a44eea104280b0c31668d1fd143b738215c2a97ae8f218373437795b776c9a337b7558b24e6145a9f422f25b20739051acf2880792f227017dccc20f382347ae4ff68717bfb742c01bed79a5018db6e55bca563f082a4489d502ae714b7b1b1a70e8db515360c65bdba63fd82d683a7afe34bb27dd36b99beb520ab9e60aa326594f478dc14132e53c731116cd9ccb1dbb59d91ab41ae0fccabd0b483880d60497caac993341645794bd6ee0056c560ad05a4f980c7fee8b002d58aa189d6ae9c51ec2683ff2cdf1f5d12324bc274836c69a303844c81c51298c18df01619cb07dcebabcbca68462ab58376e5b2d6504dde4c350e03e11458f45492c06272568bd1f7449e0d80671434452ea8b6977a7df0112670e205cd0a89613cf346aba486fa9558927bd565720e51486d284ee8435abc272c47444e3c40088da0e1be40931375639c50255e1cd462518e8832d8fe95189f796c52c18f68c42bb6e25412aa0a22cb1b6d6643cc0048496299c2f33023ff917da743e6aa88de1a30176b40dceb95f43597a922141aa16388ed0980a39c3ae9ad69f2109f903252bdb540d73daf5556449e882a6c99b7c46dc0a030ce17c04bbfc49b17dbebb748ed25230fd35a1264a6261cf0b5a10be56b267699d8e57417935d4e773db9ebc4ae53bb4eec6abacbe9aea77699d8756ad7a95d4d7739ddc564d713bb4eec32b5ebc92e27bb9cee727297895d26b6c30f638e63cf63792e5b6a2e228bbe861d294718d68c43bec22591c913b5c8c143ac63bb91edbc87a44fccc5c2ee6903a1f2264bee000b82d9995876fb84bbac90bec8c19bf7423319f0d8b9aaa7744e1248091d8cfab40bd3bb059846ed408d6044bfdbee99b4bea857f41303f553f910827b5943e8b4d872d4636d81260e6de9b096b917ac65b1a1926d34278d684f693fac0a2c8db6dab304ad0b412817af16687b801dc78ba750db1d788d67a2e254b7ae167a29a05303f652388747ebd330c343c121f11c5b4e907c771691bc3dcbf00ae742a82df9b3dca503890a688790cc56038eeb7017d614c6f8cd62d10bfee125ac992913f0538b23e163543440d46a2c1609f7244f7b889942179661c7dd61e923c7197d2f701d15ca6c3e47160ef492aa80319484e19a724d7b285340646fea46fba174960a8c1c8258382c470c2c32fc1dcd1d200babf20d2ed59ebb394253af0a1f0438261ffd10802dc316137ab9f0a77633ece754bbe767f1c26c26f26d91320f427ca09ac93e13d9f1925e3f5178382a228aa318bdda4be5b852855207ca2254a142f8b00988ca299b8c0482ae8f89e8e3f4e76478422b09a2f531c0f347f056658b57b7cb626a5a52018fe219900db577abae9a0ca5f0a4034bec83ea5d24e292073659cf02f71492ba6cdc064f21ce4561fcd90639f3814aae57a18bb2865a70c7bbb25996ba5b6e96d6689da8804a4df399ca3b09ef47bb1ca156309f7d23566ee288f3ad1682d8634b0c2976946792d59f16326677eb8f94298dde72783bfd0824483704e37f9d1b53bbb91bc57cfa53b5b553e4aa646543a7d9754d5b300f53223b9b0a1b64850c0fc5b972007c28b7e2455c9d3d053a3ea14b083dcbdea5046a931068a039cd51748eea84d3a29f3e65761570432ede02dd311fd06db3c235b292b8e4e4e20a09188eb999e06a57e84548662ccd057c99702181787b15cb192ec6fa9007334caf3a5b7d2ec4b376ce9e2ca013b5358f1ee73d1ab55a33eec09e23266e8ef6a839300c11e04650cb9ce13f0d647649dde80941a77e20225e46ad4b6e7df8492dc806119bc59ee4398ac8098fa3607b0f067fc2d42c2c60fa046309aafb745c3b6799d4887c1813310dff8129828a68e127696b327c9114b2cd10789d7b8cf02e3dd48cc09ba92f6576bb23c195ac0441b3bcddc53117e827483c3f7ad33de9d30ed57917996234c7a1d565a7afb183270ff08aacd631f73b2de6ccd44e1009753bddeaa7662977beee9fc91be6591871e37f261caf0a13ff696e80ec6ee8c3f60dda2311a614691b059553c0093e4caf31e66a9359cba01bc35eada0fe0db94359ed2d3ad09ce88741495ccc5f024fd08b7ff5ed66a954d5f00f1f84351f6e1cb31ae537ca8edfe208fb9755910b33a94008b6fc715edca8f60781ecdde9891d5bad02cfd6a33ebdd7c53b744eff35b8053d937ff679a3d7cd12f09f8a5cb7f770f245029b19eb2cd1c687e0962572ee8cfb8655eba2a4eaca4c596a1a11aa29c864ac269f2e8fd1fa13bca231ecf831d31cbeb5a6db4862d7b043ea8d2cb899060e319c7674cc1b63853a64e4300d2671db2d7bd1d548c8f2b40a4007d91a49981938392085a8bd852054ca734286b45148d7140d992ea12c7b0c156a6a0492c877408821826be690e4e8c967d14a0a47009a4db9e6273d0f9c8db7fdfcd081f755c50428610b0f12814f3b28cf037f06d9b434b9ca5bf827618622c101d190350a9399ebb4f9173baa4e5fb36a5cc2199d4a36e856fd9bbccd11e983904141a5e100e519cc180dfb866ea1318c041514e01fedb578e4b9d1af0f55d4d78c3d83c828a8d4a3e822327513712ef572acc2a5659c45c387cd625aed8f1ccac2938f54e8b1982938ad4a84b76c238a316f0035c402ddc45d77129f75c931ca25ec0934bfe7dd46c8342418c3b61aaaf16ad0a757c15288d0d163daf34c78750560e6158a4318dce3aeae0f16d94841db4f83b49c662eaa80f3e751176582668cb1030e7a88411b46af26070264f796236015c9445aa113b75b0e087a81c94485f08dd9cc31879e7f2978af3c937c0e648126f11b301d7b0c899b813207e252a108816d61c8d9e10d622177e8868e9fdb8eb1c3bfa35c62a1516f83a96cfa4058e706c8e08959fc78ec9e7a76a4cddb728b1e4c4c102f9f0b6decd5309ae3c3cbc30f9740e40c661ea50d5e2353e3452e88e1ccc9554f68307444741118cf3e80a248e15d78687a505b44504fe4da8bff29a465eb67a5d643b758e8aeb195a5f56c3180a91f652dc2e30bf7642d97b0284eac340a17db9c310d4e44505c1ea837155191821747dae018b332ef0fa79347a719928aea50599f567291343897f0b4a847504edbf00fe10996fb77996cece6dc2874c8ab9cadd17e0e0aa64a5588c3376dff75d1bd54118254fbc5fed13beb1120e6eb3e1532579332ab2868ce43ba64b18ab1efc520384d54af859d71b8b8f13ebe4b6b886249a63f430ad6b6b58bdcecb574f601cfc68daaa2c461ea91ab9ad65234560fa67463a4d6381ce55637b10a35edfd54c515b4c2e95a8d01c0181c25b54c8b619fd78a9ee50376f6e696e79a568db3ee311f4b2404f0828ddca49fa876cdd25d6bafb370f0742358a38b3bce773057d9c085a83302e9897d3bcd17e89fdcfa162c49fa2fb04ec65c8a34de83f050226ca5d910196ad1aaa9fd8d4e8ab7156261589a62952f5cbcefce59048d18aee0bf8b1dbba27b69f8a1202388ca5f80d492ca03dd11e39eba0c6be27982c741edae76d9dcc018364e384bbf466880db1c8cf85d247827c6a975fcbd001947ade6191947d98ac8d0cd5eefdf0b2ca11a55788a8c6fca05649bb4fc32be37914f64b9920ab5720d0480f9282f639f761c6e0ea5aeaba226f83894ec5bed49d4193e9d4ac545c76c268d936e834a30fa00a6de88924537b6e7240cdeac3a2466dd673abcc7a05c3c7e9853c51db243039cc082fbf026008de1ce6b2acdf1056b5c6c43e1a59564876c0c43bc8c499b8fbb4f62d8ed68244b12c1787570c94f97337f3ea2580ebdc920576bf99254d33bf5862c3baa929b19f667f8208c2527314decb6f20fd7656f7790007f8c5d83304b370972f8f5c67114c4024dc6e7c811b57d52804e11cca93e170043006f958847bfb7ddeb54130d64e4b6508250c5be4ee0892a631bba496a8d72878f9f381c3657c839a108a366d2c8a3d0679ae41c295b8c04852bbcd6621b64083f56884c64d1afc6295f373ef950ad58ab99ed2262fcd018943c42f35c08b43c3677ef11f023fdd0a8ce08ce3bb38f2dd4a421bb090c9d308b0226ae314c3e5e7b3ad5f286d0b20ae7044b7796ae0390392143bc789789adfa80025a48be55b24e614fcd20a3e80e5a0d984b4ba0d7ad8cd013609b2a52b40bc319c588636dbb811a5a0a0ffa13fdf734b0696cf84e1ae997361dc00230be6ab83ca430b96a967b28c65ecceb726ab22a31008037c09d90dafa054cf08a352acbc28944a3b9777741a82870b478e5b4a1688d78964856e75d32f0d201f4466d3e67ac355784e887b7721b58c739958e0260605aeaeb742020ebb5ad5461f4ec7084b7d7df1fa9bda0b974a81752c4ecbd3b2d151e4725c64bfc56c4f85b7403b02b4c5168ed884dfed2c181409c8d2956808260ed076b5e75470045b34c19e0e9dc5107e6d4b96af9fdc93f1d2ef1fb7facccd42db837b1a01e92d03f151f1aabd92b51f63278a503502542dbd9aa18be188d1cdb08d91a8751b0d6e8d310e737e6fff243496af2015fcf8c1345bc80c45e73ee7a6c0240f290bbcac6cdb990ea87f9ee65f324858ae30c2202ef8b357d400ff93accc20dcf6d785934258d5214e4f8a9c7a36dc82416cb2bf402832d8fb9aba96ba412db6e1f31efcfb532416e6426d37ce86b8cae06cdb076032e312eb0d713489981735aa481920fd785ef539cca24ee2feefd9410b10440a99b3def5d8222b6f8e39b35e00edaea26918723f42f155d9588c60e1a7920cf02faf20cf479bf833744645d5f076733dcdf85b8c2315d6d4ea60e17b9a73902b4335833412ef22604b6c6cf6ac5048718ea754a75c5079042589661378e618979fd54e3aeda11c1c1da51f2748f03ead7a03f46738c78a99996750bdc101a01571e85d9b59cdace3c45ed019834a92bcd7e0d09f1419a7e805618c0e2b7471af9038a53cb079bd26d5f4701039c352397efd6ccf41cc1c86005caa1fc840fd2f460968f05d36c9f8f3d7ad66cbf486a0818862f32c3d72332fe02ef5ce5c15a381e0f811b4e769dc2d8452d5d69527090c3cb9a002a5e0bad7cdb0f5bd5bf413be8e5b61e0e20b8392a3437cf726da32a4cbe1a76a2ccc04b28f0072b14fe0975bd8010b73d7de15837cb3b944a9eca75524ef9cccb0425e3bfcaaa5976a23c94f5b56079b8aa3d24f0f5f4a1861dd8000f38c184d55e4a612300f5369fed5883783375aebc8d5816fc02bedd4c365de3c9395116c3fc65d6e6e710e15c6234388e825e69edc4564a60ca46ae99f26e9517975f271247117c938686d8bd4f832a21d42d543a351b583e1127d8ae3d7358f1530cd6c74a84b231811e0e8c152bde56917cee3c19143a57c21efcce1fe2dc5bacb693506ad28c0412cca7b9419f187e184fed4c1d9c9e07f11f3d1c905b41b75e007d0b6b61ab6797f33bc8c12ac44955ed1a6798c4277c3b9970e5dd12d46f501785586fa4402104a773232dbb7645e4faab1582e4eaaa05a27b7b8a0b337c95dd6ac57349ce230afff86ce4cc7ca17d6855aefe385dfc67cb37812158460f6efb0ac04f6ecf6cc93d8c82614357fdbb190eaa358400091c7c3e99113a438ae08db13c1d36ff921c92200b18f258be4e0b5c11ebd1a3f122cd0ec37a39d20d3600945eebd965c73735bcc9294013d1ae38a07de5351b03e521f94c9987bc35ab525876ccfa8f5929bebc146dde75532cf9c796dea0f6e24caf5fcb3b600fbdfe72dc5c3b88b306080bbab979513afab039300badbe58b4dc6df079ccf597eb96ad7bfffb312659e2dec41f0257f0cd8cf0e10308e3f29cb69ff8fa316ae5e7f0bff8e99694ee99ebf5569964d116af17626281307bbfc4eeefee0c150e0312902db7dcae1f2bf11ccb0127113bc99c1ed1044ba0a9d2177b947ad04a2104544b6ac8c7f1de2bfa9f494211158828a358a3fff65b8ed601d952fec2309cff14df57a19747e836c97e131b5a09e8c7a4e7cbe2fee98d42a296136d73ddc8ab2857226a001f0eddc90cd441b329c7512d8115dfa344996c9f1ef237a65ff959dc2b9303a896774a63765fa845f04054ad6cea0095c61268869a77abd73f3ab9a33bd3b3d7aba3eb27ca9c7381a3e37daa984b892429023f5e5898f04898024470717f39df76e0ae435b69bba0d9ae72b99b9dd53a7bfe0fc3fabb88774a0b5d1a3d41410a8116c1f6cd5839075cc10ed1ecf3707738b0a184353ca4f4e8f40f41cbcb25d0bbcb659bf4ff029505d8027fba123c85d60d862140d406a24fe62bf09ef59af79cbadbe344f772e4f7d0674d55644843995bda238376172d32e7e303fbb634611b50c5d7d5283dd7fbb3c4f91896f99828b99d676a75c260c24bb43079f5bbca54d552e349d5e43126685d7eef8af95cda840412f4ff9eba5943991db8c85f5d3b7d2fd66a0ddcf6e6c907211b31e168a33cededd586f44a982cda04a2df50ae266bb2f9c8c230aad17527d31d8297a83c719baab8b97fd35476321b890254c898183546a751731877207c8db6d3bd5413ac5256cd4abdab32ac67c84f2c6ca3710753ceed54131a95f54e8649a40b99d68b1592a2cc0aec081789289567fdda8f0e1075743d787f5db81a334d4c6b9d6d4a77feaef5f7f2eeec5ee80e86ef92f24a8fa05d4eaaeb363f2a34d8a860c95c12e15d309c14ac77fd2d4c1bf0c36c35ce4e585a34ad50ce2d8bd10b5963e9cf799341f4556b4430937c0ad5837ad651cdc12df28b84f77a7242ef77a2c3b3de9e3bad2970ff49968c03768c7555d318a38e2d84347cbc0c9c332a0a17cd0258b3a90ee631d6641f6263761d633df23e9d5ea459233351f277e4802522cb66ac69970a98465b76c6fab00cd0bd95b6646c8668cdc800489b52337caeb592e226508b4e8b18d0fbbcd1b1d60d22d037192cd42df1ff9c8cbd904a0c95737da2cb85a944a5d3fa3847beaaaebecbb5f04549b490f54f00f1eab070841a77a8e628b41556748bbe8e3f245c39a76a86e5dbab4812adcab150989387ac7befcfbbfe8cd1168c8e4ff39740d6bfa89401bdd5c55a41d63712d414239a4c6a3fc45900b1f36de3adbcdecacb73c71613d12e87b25627ce24027c9d02c8fa4873308e67761408562a7dd599662d54ec8f9af4522515f5c695afeaae132c42d61484d54d37bfa152c5dcc68f15d332db1982ac7719f84d1defb69676938223c8fa96b1610cc7a74a5b0a2a21ebcb1a005adbfb9adf063a9c40f0f28e31d7694514e44eedea361021eb060f65a2367447fcc1abc072aaa141597a9f0ddf1eedf244e105643a001657af3a597e80a7f5bc5341d69d40da2400b53f6a522926684cd7d681f7d5447ed4d7759af6d5b76701fe16c6b8c97cc5f707f7d57495961ecfb68ebbde8a09c429a08e5fcd8f36d122001a571f184ec2fc5e4d60e1d6339190a07c7518e48b2f2ecb772d169c367fbe710518aec6506f19e9a0a479e8b1ccbcd082f8a35a2b7582b5e282f78bc936e52128d08adacef3435f6a96cd92d1cb71799f7b8dff7d888aa4aef672a9a1af6b4b56d4779d8d6bcc38df05d0e8378682de6c96ca427dafb92dde08e1f605b98727cce76e010bb57983852fe8f5a1edf91f6f32bd242815ba7303a9236a641f27a3ae5305e4fb8bf67f507d8b470ac8bc38457805ac343acba8fadbe7941350fafc53c99ee76f4928682fe7577d2afaba82384cb0bf352c512f0ac74266ff1c6b5516b0954f16a73b9fffd9153bb6a48adb7ae166da85f4be21efff9958094ad87556a06884ec55c35e8b472701c0c96ed9e2eb71a3e4c4a01727af4bcc0a40b8ec685f1ef1461d4cbb34bb859541dfcfd86851e69ec7b1ba7a0baa185dc1c225bafc71b5236c1044183f9cbc8feb11352b6688900a09c944266012d4b7f25670ee57a48e07d4baa151e3ea1103b5d0843feba73518275a16faf2c2d544fd8ef59a20770cf8d14acc1d3950ef8478df0d994cc4ea741018bc0bfd785365335f390ac68c50ea7481b5246bf9dea808a83c8b6941784f7ce24ab6c6f35c0cd9b28eff486958ea1a61f0e0197bf1862d655d7b0d52a2613928f6cc368085fdaea35f959de7409f058f18d880990e2ebe22099954e3f903c78cfff194725128844b67e7689e1ff605e8f7cf0a11d23dffb43c460e4fd987a082420abc7b3fc0ea0e29b4376ffa3c7177b739aff1fbd7891631eabc73d2191f7ee9e358e3366802b59e07f228038c2e76bb7a2256205ecb9f6fbd5712c443da77733878ebe8abe403af6949f3ca7085821320aafbbec37bb6d160ed80e037cbcd2911d5aa20a1ee35bd9b00da925c9446ca18c5172ba04ff74f3ffa06fccff838297975daf016b6d04d0d65f0d2641b29dae6fcc0c35a3cc756ec5d35aac3a4ebb2a034c4ce2eddb0d0fcd9198b0acf9126be48ff43c69b56934556fd9cdb405dedaaa472b47b75223297f5dcc53298ac4e20696b9532ce39962409e44e142925034e6126e53a1865e5a75d1b02c2f7f2a8d2beb1ea50ec917b78b9217ad4a4c7f6608cea1397a7ea30c0462952f1836b7c1055c4a69ea038f759ee87d1bffbbae644244151023b2af31cf402b70064604ec7569e786f35906872032be5d264b185cc3f095263ddffd7c0ed17fcb96359f926ed9f5866702d6635ffb1e668f1cdd2517e45fba98522ae83ebb8dfb4351a29e8c0316b357db39e5d32029491d960a7054985fb4cb7c14331f969f684d3928a25fa728d6782b009ce43b118140a487b79291fcb2d8bb7922c98dcaa28141d5d1285f172c6536aa2e126c42dada0da740202215ec72f3bfb600c3da99ea6e08e3e4d6ca4bcbc0a698d786c8d825e49219281946d9818c46c88b2066835909acebfb161c3c4b03dbedecff942d44e94599560591d4e62f8e4cf799f6bded8859fd7008891273c0d91696ec4730d891dabbb7659afce3891f8fb53a1273cb1e87be22673173a0a6e175060806d6e120b797fe3093ebdb29f639159879c40394a6ae6532e32143d9d8fe9112884409ca0e127f900f74d06c5b174e19337c285b1059d2799baa9a7a7efd85bdcb7b1a0d6b1cac2b746058a005e5a4605a6a4c480606fc1612a4874fa3425f6cc88c2b6b7b3aee9addceb7a33775adfc89dd6b553b7b56dda6d4d93747bd3a47ddfb649dff546d6b7bd9d754d6fe55ed79bb9d3fa46eeb4ae9dbaad6dd36e6b9aa4db9b26edfb36dafc2a1b032f5812e354242a789745d21644370fee52df690e7e844f58804a728127779c32fb61c4f25f5ed3ccdc005677bb348f4d3acd1272a789c2d9aaab06b6862af904f6df07c6eed0c02059ef557e3319e4d7f0539470a191f911519c7a97c708644ef255f0c259001497dc2f8b48dfde55146f85c695441d0e86999f346fe1d63ac03f83c25dfea35bc6b98aba438cd045b133593b05fa66be7b0c42246302799d5d5c8f469ee900c83849c6a20296bd03609276f436dd499d4a3b4c4b743f752f610dcaf06072733c43c87064a0a7335891264641665de573996f9018e3b64614d230e733175b95ba2a4c1bd3a4ec8838617db573c4a7bc81f4b6c0261503399e73b8cca40c5ae4b41fcaae4ccc9d7f14845d5f380de1bdc1ccd75a7006efca559efd7354bd1352ba7e9dcda8ce0d108cf248a455bd601a65c848490f72e07aae56461857f7ea11041ef0c0dd123109589d54d25d8ca94faf527383996ceead5996716d2c8bef22206366cf82551f8f2595e4fe588f6a3906fb2b1d92101746cbf8e4ce0139a180e0f06f413c818f7b5caab47975983cacf3c5d9a73636e271e2ed018c42c04a3a34066bdc56c2cbf8819fee823450b406f3efc8ec34ab822f7d1175a5750a78739ed291865b7cfa5c4e0963164d998e31abe94b8148177b542cc4685cd3cd0610ce2af5bc5fac64fb43188d638ae30c5041af4b7df5d529a006e330400d053fb4b056243eeeea1ff014f7149a2fd8a2df64b8d4583c769ff9eb35d6f3d7af0430bf3905fb8812b505f5305cc4dec51d26463618b16dde0691839d27030fd5ccb303e76d2a4a3715ac461daca60ea57e270054c7de2381108a78dc443dea6843d985f891fe3f250aa90144b3d2b17da57d3078aa284667aa223c213dc38324e9696c955120894d99944553d3eb74cb183fbdae595154671c6f9979f8705dbbc7d9b41b4de3a461797a474e68051238f2d694d872e959983ae605db471160b4857ba8358c3458b4d6b07f10c34628153c42b59d5acde6b344f08e8a5b296ceb688f735db4afd239bc5598af72fd3daf1b55d598801a54895870d894aecb6ffe383e3b8cf9f7add5b310d8ab44d540477a01e6f70c1d94e2546e967ad2d5a3dfaf4d810ef9b15e425f103fc1e4397437780f0ce69ecd1ec11af36a3864f7a8821a5060e3668403bfb780e00d6d0581f693700e89eb07848c5ea678c40ab98d921b563fe23f016031b234ee9868cf93498c1922f19b770b13184cec574b80525ac07d2492a55adaeecbbe9cede08a6ecd6dfaf5d579140f5206769831394b76d4b19902a76d3b6628d0c0e70c520e9c73ab3655fb5387aa37684af6182052dbf92abe16b534c12f0f62e46a957e19b7e0f13e7a56edb3957019e678cb826869fa19d3212accf39b81697a1779a1e7ed695861675efa6555175f5e540dac5a26498033f3438d34a2f6a4b18ab9fa22031e68fd66b2ad8c87a4bef60ec0060ecebeccc754db7994626362c3309b3a1b122061d33680a77a25c9883426624ddbf09f57f4f8cd45760ea2f991a7d2f11685d13795ead7e89648df0c48333bed5e771a4a673dd183e5c0c15e2fbd19eb1ca868caee1ff7fe3b9bab4fe9d225e3bc8fd5ac4593ae2f5b4e222d2f93ac2b0bc69748c3c964e34aa275a5c27012d13a92687da934bc4c1a9e2c5a5f260c2f9396278bd69164c34b84e54ba27165d174122107ddefc884a673cceee35bc196b2bf4170c7266d4fa91017f1ad8b9907f5efac3ce5942e9cdb0682e5dd84404c6fd1ea5277817aeb05fa6120eaa72de5b240f1b679be61d98425025a920217667d9955ef57fd1500020f7ff137ae0d5527c85bfc52499700978f7734d16245458caca24889640c8c48eb9f6979976f2acd6ce94bacb103e74de544295fae3603b40f323531e7660fa8fe564a96325383faa5eade9fc1daedcc18b9507917a06f06a6d837450117080755d8cee85d412af5c5111d29148a4f05d358489b9b015ac862fbbcab02efb867951c5c1ec31b61c4651e07123dd3d9a283dadf55ba7c936769c32e4411c3ea0aecde6094f28ea8d190225e2a91ef5139b2af5e128a84a2ffde2d3e0359e16b771a515d866b96628c58d92c0e43a092fefa6f5dd89bfae001ecb859a4d7ea0529b8c2675451d33db0049bebc35842961a31ffa20596e30ed7c2c16db1fd6a6c4f7bab780838e0ca9dc5dfcbd386b41ec1774929ab29dd7db85fefb4fd3833650501a4cad26513ab5b66493a61cd41ba4b62f675b83bd6053d44b6863d910ac4297106a4c18cab667a6aa50b46bba164c088fe1af16b6607e5a814e18e2685596c0a01e1805ce33692a5d7ba3f4e144dbac74ac23a35a8b92cf17f81c24efb16c356aef7edad7f33457082aeeaa14cf9637b69db0da42adbb35fcb1c85454358e4c0c0e4791408afdee3698efaa73a9457446b17104249592f8cc19ed7b80813c4ab1a1a6283ae6580ebd692e93b97e227443d267e5346107a79722b600c1c7b3ce63b0e057ed337c0a201149e712f5a3e8eaee28672aac7108d70141202e83291c5fd04b4b487c0d15148718762293c522bbb6bcbd55887bca50a171ccfb12a94b57523340cdfbe006dcd3243d79e988788e26ed4b0e9e3e39f8ec1bf7a2cf098ef002b5a95a95888369d1d39877603a55c71fb0f07358ef6eef597fcb080e07f9bf47842e1a53a50cf172ac52d2fb3a2fc29656867afc473f92236998dcbdadd8e0fc784a88825eb9a5fd282bd643312af91e218b674d1302fc8d48775599f30529b983592045efcbe7f5b80355a425d57ee2bd5c46fabae448d71aff0fe3e9762e9c4e6887120903ee8d5c8c379074c26d205c990b46dd41a999a0d8823c6fe128160a14b6a68a5c7bd8cfa1159e60d4cc73920933dc7326054a04ed8be64aa10c09b6380e47036652b37b01504fa7df9cb32ced92b152ebb0a5922dcc400c61346d2e511c330b44c74e378173bfd029c99c4ce1a0b9a3a851a08b28841508a4c0ea4e8978a5eb6902fcdcd33c181ead5d12db91e586d350cc5df3c00816cfcdaddd95d68ebd1b5875af8176330e798c2e3c786c3d7a0da87f8a010a530edba80029d07a7bf84e192ab63b40c973a64a0cb6530c4add0cf9620ba9d887b9b00567d5045d5c86982beb28ec9a491951d495637274f66b460fb53c38f3e9d024ff52103b4893e5f4be03281a57706ac557ec0684f9c55c00576c2c31323373860078cd4393da65702af060a498a5b894db978796e1217d42809c7ef97a492b235efa0de5749ed7f6cd19d8a1ba7a4bcc600c5d9808051e3b9300a742881130787511077f36850d8f054a1d0f9479133677be7f261972be22205a8231de0faf4c499924e0c58759a8472f0dcec54b92cf020b4a6f730a1db3ca364e1029f6d060c74a1e2b8eecb91a0e8805be0bdc94a35e5196ffd3fc25297a0004ad0d0c8ad6e6683085a444630531ea16c231cca68d28d991f08e2572d4a8a57d9803bc49bd7984556c26626692f7afe8ec3b5d6ccfec4e6095ca5394c8b1b04b274208000f4850e10b28b3873742d645dc5a1eb348a16c0383640e901c62d8d16c678637f083f6e8cbe6254ae46b60967cd2977efe1ea782355c7ab149e33ac4979ca195b757c7389e382e46208b2520635c6f72da925d9577b219b83c106cca8bbdc090f1504586adfc56f16fc35c3eb6186741e1d5a743ac1571179d82bf7ecab7149067261282108603a8041516d44460a9790e2e32d4e364e0e90fc4f16b225ee86c564d1dd43e5587ed5a09c8f7660e2502774d2b97c7ff80909b2557983b79cb9e734aeb9905b1e2cb9fd9043e21d1795b6b2b7f31113ba6c9f3c4a367b69e738c49303ce710733e747279ca3708cfa6a543d18f5ffeff17b7a5c2551ca82a0412762412c9fff891e7639e71918dc9450a99bf6690461cf6568a6671dc3fe41819000f8107381785fa743a30f68401f80583bb60011a33d5bc7f963a4553b1fcaa99f8aa296bcfcfa35d1f6125523b308218d2ed1f364714ab2910b4408add1703c3999950d42f99bb4dd7bc24af4e4dbf3c6bfaaf7cb6a4eb3db38ddaaef2523f180833b2e10f4f213344e1d9c5b2691144d959af0fa8bd1c284fb209de71120ae215c00a6c05b642097bbbe6b5ee426cc3b4c7778bdf7a959b7077ee0f1cc564d09a9a94e1c6c6c065e4b02739f7d5f4fbf95af340cafc29f13a4dcbacc03b350df11fedc28f7090473e720dfe5880124d34d8a59e634de0ab833a2047fa2041b1563ae587f1d59bff7082d587547c8168e1ba0e5766696f2f24bb778d03b55ab89826959b68dfe957cef569b5df13ac58e4603f2395c02c287e7db28dd74376675540b79f7601602806d026c65e9ddcb099c70f74d54abeacd0d28197806fc5805c5b4ef6b8134aad2f758c0d79a0291b4badd59ab5c26cc55591670a238474fd197773d45727a18650243091d5812dffe21a6d1497c93b5deeb3f831f0263e8c75dbc581433102352c2b3af7a6f93172c4a058ea4077f1a45bc1c494dc7889beb070dd41399b0a8b486082c57d45797a10ac8e7166335e734cd271f77245305dd722395e2d4cba07b7f531c2d32f0baebacfda77f78e9d0729878fe38f3502888eae0a3cbc3610c135aed26ca494f0e3ae01ccaea9e8ccc1fdd89335ec8e409086196d4d62781c983740d907818451001a69e8b17c8f4028a2520511b81988627818459132566b40820fa1dc8bfce52d08f87c1258eef2a0402956c64a122026cf22aaba2bfe36d4e2da11857de8c316532cc047d93ef9c065d62f81f4f5b8c3312f07c67fbd4e986a3cfe02f58ab9191585c445faf7b2eed01f42c7dd9491f83a6a12b1acf0614551a810312dd0c0bcf1c6c34b289237e2ff15774f44bb1df8a683f9f7e971ea6949892d6ff696aca5134684272ec679ab80f4dafba969e4458a6364b88c006c767df188b9d444abc3784dc161c5ec869b9f5a244533e684783fc2bd16c9bb02cbd4c6d1638c281f212689009900ae32a9bc63c1eafcd06aacdae3d68d25f32b686d879e718a07459a261df2cef274073fd5f5810c9f03552c8aa67840e0390e0e2a124948234c6d038a0ab09e0ad8f64067852c18906ade7ea32bd672233c06f6d43e13c23ef7afc91b283986170e2942b51d796196e2f490c3bfa2749c44e02d61446f73ff24a0c5f40c635af9071bab3756fd2a3a1346c48367da4c0525c5745ef091f0ab41fbca80620f0d31c0034461d170e0d5ab61112c5fe4282c2c87d089bd0ce37959b8662b76ba46a82d6858e6b45bed2cff1adc0a839360eb5858498a9c304d77152e3e900eb340ff63fefa3dad335e423948aaeed87160a0a392d66e227fa06455c467008e0c490fe29add44aaf5d13d98091eb026f917c91e89781958c1bf1727732f2d5a1edad58e5a45e98720a4af669d1c7098fc92d76223fc6f00ebe5d536cb476f3dd643b206ac8b46b2e03182e32cac4938659a39b1d92fbfd1ae3d88617f039950d5a83c5427666c9e7f1894bcd5bd43c282ebb330486921920af89ad170de50db109f30d026b65bb2a1b3c98a907317bdb80384be08eebd9ea4f27314867184ce67352f00845ffe52e919701ba2af43599fd882886230f442504bee70f105d167ea147cc470520cd253b14ddfc9bb129c72ae6a3a7c9752a2e85f5c3689893ea74e33b271c86e3b8ee1fa46d89ae972d64c641d081a53054981a7ce804e247f9465d98f9fb80e6be2d8ce7960a5e6de14a8c7858a61bfc6483447494938dc78125d29070a04b9c1dc01ff67b00279bcda2a9c15405d0c9bdffa0ac570944287cc298a11b43ab78f48b8f802a29a21ebda1d49bdcaa840e5888ad2e582707f79d0d874b05b0542c78365fbb8183b7b0e5605868adbd9157480a2dfa24a501b57f782a69c2e9e4f15b1a82d1902024c0a2355e5bfc5c4d015748b8b9d4cd3a48f6c33c8c83ccd5218d22f1cbdc5bbf723aee3ef3d31c3d637e19855279f6ad682ac7c3b521c911decb0ee93e4584029741225365c87303f411ac3ccdd02f37f991d8a9741761d4c144a4a06a8d171a65911620e9af68cab0a1471079167950f352595467a779efb1acaa6e61e0a39d54abb1201392861ad329bff8534589786750dafc194ce90465597f620cdabd6e9f7f81de0eaf68288ddc662c47ca401ddce5d960129741610e59f0891c6b31dbac80baa9f863ae847a924b624e08ab195dd3ce38e79eaa428795c87ac198060d435cdc8117d77fa364914573bda2ddf075101dfa65cef5768ddc75db67ccd88448ec6c94236fb7299f44186d87003510a50e0e18d29b27d228192f0a4c02aa9661a9e7d41182c5921568fc33a46f32707d326065bdfd573c788b73064f8c031382475a681d98c9f4464df3309ed7a76b6ad98c76134aee3c27ee898a40b09cd82ffd1c3eac5349b20e8a815146d1f1a4b3c05cb5d0c9ed370b1add2011a6944ebaa38cfd572adea298d608a14318da1591aae2402906cacef34897c729c2390e9d4dfc02f03f2e4873997015c825c19cfcdfbc8b9a56f8de14e27e04cfeca4c86e7ff3a47de99742da0b8a22bbc26909a950fd4c9fff947294156559df10e71282dbde0debf6a530c8984d0e55869a5f0d8377f54207e040a58b298a9a1e721aa90635cb4305e321e77f26b4d8b0b70696427f95b57f8ef712fb39c00f5a96574c7f63efaae117538f0163309b5ba6fb56ee5a557d3543f8044a569f99da23f6ea8df0b475d2c0da73d73fe88b98cb6e6d003b6b86cbeabc5eb98a80eb05a0a88c39c364364ea48e2591b6b319e4ac88aeeda78f8819b2913b8a4d329c99f4c37bb3a493e46ef594f60cd30df7335906bf48e6a23dbc0f6be50ad037539080d14291013a38e85a1575be6eaec9d894e6fe74acf3fb84e9c74d6987326e63eed90c8ef274620349ecac726bc0c4c99953ea64fe4ee0fe861f6487c43028245678c5eda0371757c8957c6490e956515c557132318a18618e98581688c0be0b1ae592c99b1d2f6cb219461da4069f8123258061fea984a4af6c8e91f73849fcdf91ba66dce3682f2d4d3a33c2a0d4854571695c86baf52a51382710a5a863ca68098e10a9810870b3d5a0815a6964a3226a1055b033cff7b064504e20dfa422b9c3125caa04223bd5d86011ba1396ee4479f26fdfadef0a2b6d542d2c9d8c86e2d77f61ffa60d1e2d0a452516d20cad08089d87c3b23b950fd463c46111dc76757ad197c3326f286e8d1c18da0ae4c69296087078b84fb50278fdd6258d43dbbd800604d70546b496ed78e561618f1eedfa4a9daa586149e7717aa11541a750bbf4eb8e96376227de7cb89a136f0af85cf5b3088db9e13291dffd33b04b50f416e846ac737b7ba3bce31dedec04b733ce3267aca685e2cc666b6331b3c02995542983752d6d36a640d12e376fc1a1d36c89c475ae42034ff3057891cd487dcb07dafb6737d204e04633ebf3e4f9c72b503eaff602fa0014829a8d017f3f209d74662c82e1eecea2396e19e03fea2f805817a501f032212c86658093346455a69eeda7c8ec109ad12c89e6c72dc9c4b3163fe23866ac7057d7a380a00bffd00f914c66d8a7e42d038751097fdef29562ef63908db35b40d07dcc31b2b57588360a153a214be0d2cc0d1883933931222e95c4c2d8f096a68533970c86401eea05dd711e9ddc2b3836aed9d4696215b37e7ba38c6e090ccdf7fc5e093a0071e1b8b96143f4aa15dcefaa4deda0641a86d73528c44eb4b6051c87e920e2c77a0437ddac7a3975589e65174c7fb4896e180d22e76845fc052c97f90cc8160b1d4b0e1302f955268193bfc0df7d346efe79c47134b14a360ae4aa548d01bf68f1ec3dac3d5c8200a7e39f03366abe74265e4b6fef6a1950fc9683fe30a38d020a4f96198404ed88292c6ed3ecd876d6ece2e05b8432cf0e433717bdb7d14a1d3cbfeccb0bc0107da3594a0478c098dc42b2c0b34d17c9c5454920e4313fe44bb9927665842231ca7e7890e74327277211437206d6ce33f50440d11f044d6c39c07ff6625b99649bd33c7edb5c0d15e3734f8d64e978f2c5e1212c056c1bb86735ca8d44c82b2f2a608babf614a9cac833166f30520bfdd416e2958372c3eec4141a182a2459b7f833f6eb6eac4ed3ed007bb6bc9ebd156effd23bd68835f03dc7e27fce1f82c61b09251f7e51792adf374dbc435cb180067238bae7cee835ffeefa03959250f77c96bc4a817da02ff28acd482c96b51d620535285035861447ab6cd7c02c221d598d15b15ff9f34edbbb2079266104612e84f176cd1d66b2504e2b885e96d3865f530c5528c183f362d0cc2524f8fcfb0e9d63441ac855e8f5b4ee79417159e6569fff6b75d1d381ca8f1de49d6b334c5b5b9a3951af3f9d435652094453ab3f5e830a2a487f7e1cc14fc5c4d3da756a055c00a5fb98afa45111db7caede6b9e49d90f150b0de9acf8d37db751f280c9b15dfa62d2f71608726a1546ac32ff1b5ce4993a6361ca184b36280b43f73dd5040e85a6288002266c159e249ac347e35a53ea08878bb8892dee97aade3748ec55b8bce6bb5af6bee7385f769ac8d529a2084a28d0459430c8fee0324cff9062b938e95d4c7a70bbdf17bd9f21a08ff4adc616881f2f644b4af58101efac47467d759e1b649de2fd4e57c9993695fe2a8a0d9326d83b06469feb5a4dfc822e5f0f5e8092f7e433e026020c1bfc87a9824b5e29295e387e7ea088edac34f4ff3c949592504d3d2444bee3f44a9f1c58d1a05067f180eb1e13c52bceb14031707d2c8bbee1314c3be2b9d9e120ba6f56d36a1603f6ff7f480ce121a1d0efc9dfa9d84ff30a00c358cf4d64266b6949e3692b1e9195859a1bf772a359a9862703221c1d20220da7f58f76b504feee633635e0413d9d701fcfe93f4915feb590dec508d23afedc8ac264c76254f17d2edf08c1df363cadcffe96029bd5b0b3ae82851df5b49717f039663f658d0aa555971565ec2abbfb4a69f96fb19ce23b596b025da81aa69af27c0949245a92d0851738c2ae28cdc2319c516ae283b065c80e478d78895593cedd879c0eadaca034c89aa06ce28ce9a119ac521478c68f8715af9e814f3daa0dc988d8c6d2f12d9343085bfd11366e3a754b884d70f9d0f58b4ff5cee488dc5f38d7130a65cd93dcc8f26077cc4c2eb11f36c3af5846a8e2bdd8c219daa738b662fb89855be99f8bdc0b86f254b5eada76d109c889a65dcbb4507dc56b90c4ce917a5644dc7779987f8ab47a4eff035aba5bee8704f9d3b69e7a887fde344e4784b1d09a719d5bcc04d51c1d5cd584cbef63e3d0ee5065b74d35fdce4546d40380e4390bedcfc48ca037c244b7d80033f6c8d427965977c2306a69dbfb11d70dcf1c78f4462bbc7198e81532a01bd8f4b2f5422da2099507ba4b6ebf7272b7c8ed5a5cbeb52b14156210721bcfa1431218ccf1cbc6ce99718d3634b5f32090abc9ca3201fd60f73e27845bdade950d508598bd280870615534cc06d420b34a5fe2a4746eed983074e392d7e5e26be3df0f1d567ae05905a12e2bde0cc7b5e08466fd1cfec5279cddfa19ade7b2e7c39ca3a64f3612563bb1d177a0a57654095a56ee7466edef89d134363838b74f851193c89b42cbcac318c29ec968821096b69bc2a44457db4a7bc74c4a4b00b90d038688494efa7283f72df052d92c35d45589047ab0e08cc9b9a11793e57d8055a36bcb5235e7e0ecc0b1ac58dc7398c8c13ba59261df94b6d5be18f0c0947014f5a2fccb5e0cb2d45eb8160deb93820b8ba3d8685c5cd4f4dc74f473912f41f92bfc7f1bd1368bc9ee902190a6644b45992daabbdd438c43285239963676729202e226b74fa168e4c5eb154aa43bf6c01727e1631ec8b464a6c2ed6a0d38112e29e1d044b1715de2fa10ece4681311e83ea62686eb370b78923f0658c04ac00a4c0a53b1b588eb73a6ac9c29a23555293ea122e55cb002115f81276aac70657e3a5bd9b8b0f6ace1ffbc41b6bfdf7b70ae01d575ce707aff5fc2d1a6db09def278530a0e9083cf73b461876503b86f1890dab64ef16c2c06ebb54c772c8fb5ae0d2b076842c622af716dcf7e64ceecbbb9579992c646d19685fa4118696c968ad90d93e1007310289c7d04ea12cd98d2f60ae8b74a0babdba781c90f53ca87e25c8eba4a916107d0d65ea8fe8dd79a34487dd0948ff51a003871d48217f83096d958857b16d77f71888110449fe039c49aae175b7d890ee3e3e6c3e23b9fef1083370ed2a93581988e06ccbd164ba2eb2ae71135e382a1c2b14aa8a71d684ddfc1919629ddcb7cc5cc3dff3689f54996b6fd0c442703ea797241527c542de7275ee0dfa5c835c2d5b3c17b99770bb3231a7eb3c5ed8128a7be9a1dc1b49a3fa7a7061cf3284b8d38c0b51c10a3714049af4bb719892721e695672828ab6d5c07899b0470de5fab5140508541c4227cc9936dd2f1141c55afcf8a5b40e2ba9457b92464c84b10503899b4b56418938f0146615155e96d7a9dd8f66829202789b474c35dcbd0acf0f92400512e4ff3ed565007aa03d4570d834e609d9b570dadd92abc3214da5c79d5682cc595cdb88dd2d8d1fb4365ddd1aa75bf0f138e2cdcdaf8f6670467660622e7bcf20e1431506d59eefc72a129d1d280205c157d7fdbbb48f615565173438340d994be416737527a0d18034832cac893b2e1936c0bc7a005952ae09e735925490b7fb903e7d6264e2ebb08291755aee1de917bad8c01d5378dfbc817961624278c467a60e73147bd3b2b67252ded5d3bbd01f8f02f18166a0463b9559192816e54880393bc6e423118ebc4b36dacae9f6c0a6c7718cdde9db40f7bfd7024895dc89790dd669f366ce0effe8e28b195286e30437dc7e5b60ad0690d66144e92af122c56a0c8f36700fe8264c37def88572683581d2aaedeadb450555713590a6c042ff3e9377bbc7d7395750c2f51556c1899498cbb17b210e06c796f34c78ba9df4864b679f7d7957a3937c807c9d56a144320e9c261269d213ea3cb1183bdc83b3481335380dc9a508c6b73c125fb16657a0248d9b1271a9f477a7d6c798422e907a09ae740b6fe88b0480dc90a16dac9a3b54afffaf6a2923d0ed5e52aae58debff536556623efe8a2740f127f1391a186c8bd79b1f4d2526ab056453ca01c928a343c102949f27505b699a58902258562eae65be382e687f83dc3758d7bd5f56b49df1561c652d20bba4dc88854561cf5552a737c43aa95d80b6735ddfd08f036b91e32f79576eca337c158cd6e9188d744156661412aa733e6de7193bafb99b7b335af028674b4b3129e5cae15d0ea662a601d12fe209efd739dfc882e8e3cf95b1c94155cce5770f19d17a3d36c04c330a33ae467107534a08e0e54805d013ffc887ae8463efc13243f9810a4edd6fe5c17f2c2cc8bc54c45bc6dd934ec8280659e4f49f491d94c1d43c81858c2e80b0c2286327975f1128e0325a22095181c20d7f69101c0c58d47d466dd657ed0f9eac7f0f9b8d38d10bfe399d08d721afa423782c1bd87e8fcb017165bca835268b3bbaed33de3a1bc9ee83f2cb4b1caf5626e9ff67add1baad68c2f3be55aca683fcd5708ff369ecc292c12780821ec0ee9a9cda7cde908dd1c8cad1c9062553786055179f67080b1cad44bd5aad3c82254ec84826c4d64bb3258c7cde911759b996e042fca5aa4bbc7600dbdc7d77c7ab5a312a77654504f67481cd037a66abfc3519e6ad4983b3fb85f169b2ac4e1e0174db36c5635dd470afa1de6f8d4485a6fd5793d1641e60f9fcf11aac785b4f0819f545a8b8c0934e3b31e3e8808bba6e5c703d26711e4bc0f47854983e7abf06012a80abd8359d410b5f38abf5f4fee9cb45c888a4e87adf44ae8535cbedc6917c1056d4718f8ac7ea9d229b2ec6184d8315ca26aa9cd0e9321975e88d805bf20d47730bd1524709d04b3084efd0e460e9d34c5d70d1d3e69d120f50fb9ee9aaa7ebd10e1d54d1eda3db03b37d95da64afd92de7346f5354f54dcc997643f38d665af0fba012a3859e7aeecf911cb7276bb896476ebe51e3ac14317123850009adbd50bd915b69a7674d930a3c0ac2fede4da2bfb80684327571fd23af4a99d2dea99e06f61d26a8b894a55c7c34ec66e918b555399ce5e3eaeebf763534fafae1f360882067d0b644b7d6f27dcfb614c9ae01120c14c67f01ddd4979a432fbf24aad9a5d5d5258dabca3553db05b0e242566a90116351b792b1f165364c5b0c4816805358eaa1bd817213d139cde0fae551661e45a7005412879c552737d8b30ce591586df67960784a427ef2d373d6ccf464c9c0c51609338b2495c9fe640938656cea059ec8616d1873d074e2b9108323944a3c9cf440e3d6115e4815894cb60872b89066478a4a942ae78afb0ae76fdaef0f8629ce67cfc2fd66509392a560cac7e5c0e2dc4689e326b6fba0b284b38202a7e139658814eb82ac96d4a80cac378cb729d8e98cfcad41a798df4f6669b163e02c1dac8004220e706a997ca1bfe184ac01e7485c9e42bd94ff29eeaefdd11d37b28c5374938478a8a9853a68cc371e57b94d14cfc48fd18d1cd77d47d448cae41b42529379852e7470b09212d2a88cee00c8daf14b16de88c5c0befdb92321f5b654955d9d97bcd901a5a456f490ba77c7ded76f052b88c6ca50a386c6a4addbc5a6b7f936debd634bb9afb219490c2f75bbaaad23a25d3bc71542138f69b41eb40e68374e603886b65107c4661739c29dc39d2dc24b1980d4f523d850b19c96f428d1900d73741b7195ce5aa17968f2984e8c46c5b3f6c15f5ecd045fb56b2b5785f3f30e5bc69b0da1bed28d637ff760a411f2839a2065c41194721b6100fab9123dad9c74aa7739d11c464527e4c38e6389e6a5f1d5062e8369307fce40c9b3471a9fe6a5beb7039c484042ad0474a32d1cbadefb01ac5e8ba23a6188bbb4c1d51cd8905950db3b50188c76a3841e9a673e0bcb6d60ddf8b8cb2a60bdd1b60f2981b2a439da57aa93f55f0660ff3bd134b7e854d95c8f17360bfd4c1e92a73c309505101e73269e5e8deda37c826fd48a2b4e1378e4cd3874b729b22495aaf47539e62a1552ac87e91a2f0907108898b21255f5e140ffb099a8f2ba5747f45927c05f0c49da052eec0192c364bc68b2ecd23fbb78665d6c8cd626c6a40fd9a9c734e30fc357be888edaf613573ddfe1a32ba86bac48df1454722f96c240fe908b1d562831516ff3063ab49f60d2e9b25cf3c9860a518cc82a1230c15b1722ad76e4ab37fc61012d94a124bba2e05e52ed4b542d04d79d792598e0e367de25cd4cfce79db3b0939f116dd6ba46c3d68ca3973c98da239604143e6e90d17a0e6db0e47249168894ae3a4fc2c99e4c8c7f1a7bb122b2af9afca0a8110d4f066d74f63959ba9257b4091514b1a61a7ab585a7142afd51758c1e4e5856b87c5080038c7af2236594bcffb3804137d52a2a92e1684a57997c2ce3e1040da74ffc08e8e3477d90d4872751d233524e1cceed8db14506f64f59a495d9b726248f404e0742fd0e3e2e4a4d689769d303f76bcac35c86cb08d1af9e11df0659456155041be6610c61a9e7008ce4e08fcb9376fcfd1b653fa3cf8289801f1bc5a791546a8acc7db8d36c247bf4767c11564e7a84f9a85a332fd55a3926310c28eb13522327cfb030ea18b9a8238fc2ea3e75ca9540a73e4698edeaacaa87166493c6b712209a3f8557c3c0f5566d23e24b9b42e30a7be76ba133021dba9ea89ef15a713f3c852ee383ded7176e036876d012715537fba71e89ca2f55ad13568f4e56e3dcbb87001596f7d5d2bf364d280c27aaaa1b29a9ae7902b101c9b58ccaf82fef99d2dc9be32b562522a81b355da2d69bb341a2797aaa8ee0b4a96e52f3635cabe0a9f695b2d6345d5f47db5bf9dea7622daa890f0176c5e92374d905ce089a2a6735a4f4009d0532db1a6d53fa5e7ae51bdeabe1e0361d0274ecb421f5184102612a7f7b23241f207a1bdb17f30fd1fb23b443ae2861ebe6337453717f896801cc3fec60e69806c9e75d8be535c3267c7595d1c4ea15f97998463a5f8fe838273482877961f6b900a5a018eed9803ea43674231ebbb56c66500fab7acf8d44dd109611aee94c7f46051e51ba487c529193e548b70414307e4084b15197cb71fafdc66e718573b4abec3c8692564bbf2c076244509ee1e6461cd5abdbdb3d8f9c6629d60b2dcf9951e9b3c9d118e896f689c303bf194cb586e99b15097c4190b48341629d3e98f4b32297cc6b2f66fd96c5611c340322b6e2412f754cf96a315eb4cc28a557786c23949f93e281a20dcce647ea6aa1a9302dfb18a69aa7880de8f6f8002be60e508650d074f1096b920f4024d84870b4591eab1742e6d413fdeebe2525889f6c22acbc4156b71f0fa0ff5b60153482d0d115185082655549a831955ca8788fa48a323a503b04d48f7abf3478118f1c5e0ea352e15d24e41918693f768403d1a357f4b007aedfdf4acc7572f7df52a90ec8bb8426a7623f3a4993a847323fe38a60a521116315c1a6ee4fbd45e0ff05e80a797d55948dba86d6a882013ed749178a4be21c2e1022adca56eed56883521a88d10984c3518bd1523f529d4491d9afbac9df81907f520ef59e542f33818cb3cd676948a7da787eb69b1cb6a8c5ff511caca3d8160f5fb27977bb01f452ec5e3c665a5eee9d93827812d53add4c4d077e55aab4904d7829ac929ed2fb40bc67297078f4762aaa3c3c964e78c9547a61369bfd2343d7e0b03ae2a716319acf6dfd9b91b3e8e3d2726238af2700e86d038b55a94a63195c171a660c365489bc1f0f8ad55e1f8445ef8acf6b77bd15c554e43adb35d6fe614a8d3edc972999e634761d1dbea5007510bee6e798a14b5a056a144decf31dfbf45e9a8ad8a0cb08a95b6f80e198d197de345803d4aff70dcceba66a807ec7b23c2b55f426e7d62a4c49f786309d4d7de4d1aea86b3eabb20ee971c6c8465ab20f4fcb9695bba6d0b35015c1f140ab054a76594dcea9462c4128fb0a4410dd183f604599ed66cb4f4a44e383a405efcca9cfb2f3cfc014b8085d0106a6d884dc2d2f161c154bbb7eb76a49981ba500f041550b93905f051c6831257329b65660dc6f4ebe9641c15224e7c0a8e5298f12525ca406e3c3a811636113827f8aa55d0c2d513d4e75d47418c5f42b6aee416865850c4121570ef99eb70934c43cd08cb08c78a86a0c2587ed13f3f86c85ad1c3d80db8a0174377761a03c7753bf722b6e55f962041694de87af919ffe49d23763e61cafadf981d2779e89eeabe0271b0732991491800f3cb26ddcb020c438df9c2a757b3528debdb97e5037577a97542ea7091b8b1656650551f126a79b55bd23b8d209f8c153773773cb69c82d5ba277672e7ca25ecb9d269fc02ecb6ca60b092aaf7a73cd29ccdc19862f8e8cbb9e2d39eb6e6999eae4c5a9df07b284c336ab03eb82de1efbe46e4a1a807cdea206259f31127c1ef9d88723c79f338bdf59de62238acce8caec97b49917a24e0aca8bc3a62b9149b8cc046cbe8e62b13967c17dee32e913aa9e82b4ca4565160f85bdd11ecc93b18576f51d8a2830dc4a11db4381a23132a06ef4dbc2231114013061b9376f04342c0ec9d852474dc3ad9006234671b426f752788ac090edfd1c020af6afc418ebdad7d006dcfe9d93d2b4738cb143ca69cd443933e5ae6a6d63bf9a88e552d7bbea9cae815126a08e2348d63c7a8a3a33aa9305b2387212f3e2869f378d897e302f5a0ae7316323dcb70ee6db6c1d0e9865ec8b5c1d79318c2117134a49e7f288b10f233f3c3ca70585fd3ed792b49be7d531f7fdfd1cd3f338f2469bc1d8aac3666e3d84ad1493a10bc6d96dcf24723ff29e46c353a24c615b965f62e90a35e9da3fb15197756e2505d07181d3c827d9fb9355e7791f4b3dc6ab141243267100bf729955516c2f03997a8fc41d5a3d37659dd93d60ccd60d7d2167711125a6ecc820f01e65649df331cafc526ca26b49453b0bfc0444b6c4d6a211a85254d1d5a96d43bb61792f242ad2698d98ee1c2281042661542f239df1e3e8527c07b1223d63a5538920e7e2a2dcec3725cc6122d61f98c3bdf50665937c524e2e9f516c287e3b9fc00171c704f976e0ea43e8bd5d4be74db45b0d19221b084debb282e20f0da4d62768ad9ded1d00d377af8cd2ae6530c3c7cbafed8998455e980ba98fe098d0d6f3d7662d08cdf4b65d2294bb38afa0af032642daf9f01e0b3b8b50e866bf3d2ef295ef7396a19419ef5033a941bc54da7cdde506ea9d67f953ea840d85a5f659d7cf12d702d3a195c5b41982085dd3cf37faed9fad7b2e0a0502aee8eef31c51444b58169d628e19ae7b20186f15f843a15df94ef1f49d409aa487cf013fc570e55b8932e0e1a03d726ada8efd539b6852448386e1ea5e4b02d36e8ec0cc3bab76aa39c090ae14cdc64e9ddca04ba660019373707214b9a24cc6d42be110f816a70b5e108d13f88c14879247bd54cbb01d1da65f9be2512732569685974aa0857d235f45fbb22e80051b17eff083614c117c13a62d606fd9499abe1d3a682bd364c7b9dafa3657c88d4480658f955d0364127654e8d8e8339fb52361cccf81900eb45358bc726381c97889c952e294de89a1f23f12cf3fbbaaf161c5ab5f08496522e3eeb0bbb4cdde54a5055270b33629e0e3d0e75307fa0291457243663f8991c2b93de0852b4239b58a73fcc38a46234a477e8b1317fb47251aa318c49413fe8a0eb797a2a940d60490f83d00308f6011a9609723ab2039220d5f2dc62d5cd9ab2f0d04c16b5adb8352be3d8dbea27b8bffdb2d215e886157c7a77105026eee8d7a0c649bd10565ba23c5bc32210aa5fe0599119e7960e24e8c94a00a1413d5067a16438a8128d2682addcdca248e64948b689b1481af8ce771f774ced136f7822fcce761d1cda1f19d3b7c3230c9203b8917a3ea7107ffde4810d547a17a32449628aa08a687e3ea59dc199a3ed9ae5cf0b3cdf793ade6112fc90c8ce80b8d0c159d8ac5d18ceef1d423e9f2215cdeb2afad216e5729e883d7146a77aff77fd3fafc01f8a0a5b1b5ba25e1082fd2f55831b5a24d28c4098ded7693b71fbc1603f45b476174f95a21e2691e9a8550c00f803829176b7ba21bb51467946544efcae3f1b19080dee271b74c5adafc145090ee32b7b336c26b4b8047d7ac9cac0bbede30f39370a2120efe090bc7df9d97afbb8eb92c3bd9edabc4f354f4692525fe96c4459b18724c7c1292fd64f06ab0818cbb0d916fab464e0a9a1966cf3d175dae858a27c8f43153c387a968292a22df7a7ed923460b345806e8619863584b808ea083c55628c86ed9834e6107496446810c7d9496087e1d8fdc5598870e44622eaace42487092bb56947dcc7066957ba6e30d752f99ee969f6fd3b012446b5e1f8625768739f3459ce5d86451b597e290e1fb43642e3157455b9fa2aa4053bae71d8c3dfbca09d7f8c0bac6f0c166c220621ba1ac412501fe4f342ad40d16660215a581c4995463ef5be98d8045d196eba5e95f71a2a3ac7c2192891e7f4187baa4170220c1b979e6dd12863d30c37f58689938a131d52c1367c8e5c7e25331f3750490915818c43f3fa14a708d1f81d61fd8c96ab9af09a6552f953300c8ed65e9799ca8e4a49fb56e6b3110e7d3e0d9baa93d8f0e65b1c4a089ad0140a1469563b09abb6775c0d820875d61a40d3d75e535d864080b5f5d659afcaf1fc90e98a5eb43eab1d143ca2633bbf65ec6090b86a2f8fdc2c3b4af3ebe68ec43c232450580d911225e652179f3e3ba46bf655066b1f7a382b30477cad33ca961885235a2d221327881171ed5b2f2e98df02476dc17da59372cdf9413f1222eb303d8724d3a42e5171d6e851acccd42f331108e206596cce039a9b0b092130ff168894befd4418ca9db93226189811ae3252fe6b23b9828f4232034c31c7b665e01493ac94e996e58495db96231024edf61c422abfa14d33621b348c208e312418b19fd22872ebf813b12bfc7d818f0b3d3ee17cdcfa7ef719ee8af6f508a65d2e2b6ae8ad17904ec56c61a21a2318206532a476232acae4953287ebd5e276f8fb32ac68e0ffbecb6b05bda4ba53af1c27c950ca3a4efbd8154d1e0b8b43d08922a1884d6e7f0af8fd0351438124be286f3e988c1e9c83983f739547b9d28c3e455b96e6fa67ffc2f9babeb2f86d439b7c7498539a93b6fa9e9cdf814f8555ea792ec559440ad81adb016e551b601531ef2cdbfdf300cb0464c0a3c580fe529f3cb1628bbf9558ba56f65f7afd6bbc26daf8e5343f4335bb20f4dc17b616adf74bd573686c5fb82bc6e189c6dece76540026b163e08a672972f577b9f41ebf315795aa545cefb8c09d43453b2441653740484ff4db7a6921e805aaba49a83d9398d01e64f916805f10a2e837907e716eb0db8af36a81dbb9293b79f4f962df62360cc75b78cfa86df4e27091ecb2bb9f7aca7decb1ec68334da68f1eca3fb650215b72bbec08fef6e79b3e9e2f92f3643a9403457397116161b52c2e8a89dadac26afb2580b5de18b00aed47cd904c042dc41416a2ad417b31e6274e1fd848f21d386a1ec3879ed43fb1f88a515ae1dc06834c15591620fc1021941c803d28adaa9bbd3c54faef292857eb8504657140fc01654acbd171bee0cb019c61d84f567eddd4de7533b66eac7971fb0fa8177ca3e30e46ce025388c1c123c3d83920d32544cb1230fe8fb197ee1f14f0447d1ee974ad45ffbb13c105ad8c6927669258879eda5e5744a727b298e66a5d00978d0fb9c7d5dbd1c48ef504165f732be432355da8198310f9ba48b53bfec0f81c64bd954f92b9018c3ab040ee46659255c81e98bc583fe8b2e9c5de05d59cb9916edca8d4063b999f59d8a577d3339ae7d1d8428ee4f29cc1e1659e3724463ceefe35c3c47a703fbbd2abd5cf9ddf1ac64845d73d27e3d754fb4d97cff9fd83fe511c9f484ad232b82c9d98b3ce1cef24b0060d2b59cce777b19444af9f1f108d7332981381149d158dbab6a892e5cd442ac81d7aca324afd3d625943ee79371089d48c221d7dbecc764e67a737762189ee1c8c6665f763a0bd368695307200e29b7198d5fdd96cbea3a0cf2f3d854c6ff95b10f8fc79153bf0dbeb130b3d631b1ffe557e85922ecfb63bfa7fdf8bb9743b89efd53d64b50c72ad68124e6b36a49ee1167a43da7a15dc30486e384d09cd2f689510392f256b39c6c07dcde2920bdce2655a418b4cec40e509b80c7122d86c1000be8eb723f1bbb1157d178086afc9da3417ff8cc941d870aea29c3784d6ea76d6c4f7908b279e636c30c15d36b47bc86785f08af5f08bcf6b94be833a40ef401d67268726a03ab41f6128ee2d0a8357fc22d341fe39428b443816ecfede3be86b2cb3d61eec79dcfe9471843e3c45076a2cb17be281d7c8693ee001c40530127e46f3af7f5e07488437066cbbb552a5a5c4d05b0d7103879806cee2f57b15fb2edad641f6bae44782af67bcf6ec4f68ef36610a39da2a96000af09c62daaabbd0b0d36c5887033bda051c7f4760870485e0d81af460b584f18b942879ca4bd63829b358416d5a0b21547b90886a4526ddfe4047d469f909fefd547a0c9935fbb1940c0d0fdf1245d985dac420a0fc8a43faa2dfaf327629acef523cd8837f63995282a588d62c0432b1f0377c386f1c6262ed02f45d48f798ce5240612757b886b16e3c2d2c46aa8073be362c70c26d479431a79e0b06f2dd42c0d13f090c13eefa2c7880cccae9ce32eadd54998d7388a636edac04ec6ee209f210c35f6152e32b1745d52d5ed428b8ff6307b95b0ad4897eb31c8d1c9ae44f07234c8f98faac9896923b363d2ec62ae32e33588934bea1c39cb5e5a648e284177b8184dc09dce3f28aa130f2e4b8dd45441f161dec7383aecda54754a4c9c7db8ab958d445a35c1e380c837d3631cd3fd629a411d550fc6d4e892e02ed16ae98d28060e90080cdf3c0c6f73ea24bb6c0a4195b5b8ef5ce15ccbaed8381309f97063c0e24005c11fcc0c89d64a6924a0b8f59663d59784de0f13f2f446760581a91d1874a8cd2bd3a95c97341243902411d0a2c6e2f4431eac2dbfd8af8f71f90a2dca3b112e9b5dc48bfcd2c28ccea1605e897795e3617c9ba816d501101f46415a758a57fefbc032ce94d3248155a38b876dd800ff9ade9602fa745683b1b8a110663d23429fb337e256159c16d77833cd89decfa907d2aaca72e1c708544de2382d5dc8ccf8381ff8b0eb412f4d1bf60fd3c24c624d6fe97773f6985aa135ee50af78409e73ee70b7a7dc2291b310e937104addd300eced19781fca2a50a4e286a62b3c7e81f2ae05d08c4dd0791d1e92fae3ef516d88a24f9d9239452acb5728a675959002b900d2878e348945af87bdc78f31a79c22c9080825a2564a605c5861c050eaa5ec811fd22e8f349136f7ef4055c91b4c69720404760d06d0288eb21da3ba58170264373bd5d0975100c820a9652f708904bdb00e46407b45caeca3d73afe2b807761e57cd4cb82eba1b7dc6bc3fc0192629d22fde11d83e1f0478fa23bd6ff2111a723f23402d6d31558f855a5cb139d0d453af6a87747884f0620dafaae3d539bdfb56044596266b850d361ae9ec2e9606846f4ece6fba851e8b262c5fd691d1551140d6bbd6efa6d6ce9743e5a1f85e026ec0d83645e31037bf2ee78a5dae8cdae9b9c44611dd59d89486dc47ee9a945f49c8591d287930714119b1c600d50eea127d551f09a41b481756626398b9cd930fb215efa6b55b3fb6bde89cd78f833af15f24317f5d97e3300c420bfb17623ab5df871e4483b7178c8264ec672847c4bf9e0926c2bbd4fed31904e6d56e3d5b20febee8bdfefd1b8063584fdcd33a810ef4999120d58ba52e7e076f2ae60edaa3d12c98a7b752a90a4eca394746efa0913013ea0043f0318d70009a98e6397338b5ffe21c9971c276a1d7c18245ba75396c7705eaf9f92c9dbeb3c2074f26f940d09b9509fa4637140065c12b84dd6ad2079fb253568fe250dff0b375d69e25e86bae82090ec5af6559abf7f6d42bf78b061eb1b79be983276f7fb68ffafee6f8467898e5a65a5eacc33c68da758671421e2b1e6912ca535753ffa0158885cc7fcc814543bdd2699a4679942f44f2c8471811b0754086457c823c005b1205a9168153057b685bf3f58081f8ac361f93bb7760fabc6b577816d70bac7a38c60d9b843cbd408b51fbe56405317ca5c2976fdd6e11e62fa297a40439b28d4da394bf0af1c30485aee04372451fa0aa33d4980444cb490afdb0473d05b04863b1d9f8a3745dab1f5692d61867dcf7b8a4939f81bead6a69039e0296a1c7e74ff079bcb32bb4fd3e35a5bbe3ad3f1bbe878133065b11c19fe61eeff96a7d21c8853f35db86ff87a20612e4c80b5fa3d0fe0850a8e6d225322a7a4d5a32ba228e1e5bfedfdd9ba25bc23a4cc967fde57f1d3fa5a8f3ff5aa8de02f17d149c3408353f31ae62e7c29e5c8549f93a5f6f7b6a49018c9e034ac8fe8d5a405cd5a803d95ba4c83e37eaab37cdbdc464cbf4ea763031b5e0472629ac92a945c2c107aecec81b1673c77d3f5a35fc33c0ceb079805570315d054ec2dcc53fe9053241da6194bd081e2a248681166bb9bbed96524a29539201d108b208650854526ba9a5d332b149ea5a67b3d4b5ced6d19cda6aa765e284fb7850f6e5c6c3121bf7f160ea5ac723c2715cb6fd0c0882e046654eb39e28ca470e04570e1562269922d26e93bad6c9ded6979ee43e9e6d52d73a9e0f77d2d19ccead670545510445d0061cb98f47d6495d5b09115b14d52207044770044770e43e1e3ba96ba2a4e180140441b7e99f311f35b961c2d93a9ad31999710447700447d0763257dad9cc11459b4913be72ff1514358a202882a2288aa0c8843ce13e9eed75c27d3cdb2b2532c146f4d2a675fac591e9d409f7f1b8608c31ae794dd147369c8e66b7003ae13e1ed73a5b8d8ace804eb88fc7b5ce266974a8c9df547db813d0cc4c7134b75e43b116688e842f51b572ad56ab2078b8a5aad56a45b3c25c6854ad40d7eac84a5cad56abd56ac569e084fb7836ad336732e7fb67ca4b92c562b1587852d73a1e4e1d5c5a30c618bff237675e2994a6715eafd7eb25a4be5eaf5ec2f5f0e5251b37714027dca77a264dd130c32c9125b24496989a71523fa8eb203e5a096175cb8327f5cee6e194349463712c8ee5e1b80406eaa69269e3a4d7d6713a3d2e8a2c9125b24496ccb593d9d3e93accbe24cfce662dec507456f7a966586485b5d304773d510fb8c389a124b5188aac309b9c2eb044d534f5ebb522e2a68629812d19bde4b91b4a2635d3f2927c6c843b124a326b5236f3a65d8512552cd54aa50245500445507cd184af195590156bc7901611d088eb480496e47eefb7545ed132a9964972c1aa5045833188410cbe54abd724e2a4fe999aa47e23f80897245493fba74d56a956aa71094c490b452b95b922cf26b945111441111441fb6a986aa66030984a058220c864dec0c40c822a213049b183b06972150853c140154b079a84f15130f76b9d22709f8f94357b64e2a593ef9f37b389973edf3f635ef27cffbcc2a98ccf78c9bd1484aea8109f46bc241fd37061e825366baaa649fb761a906bb1301e47a975f83ae93a48afba5b11e8fa336f235ffb48d3e44e02c498fbdd36aa535ae7c2eae7c4106b86c4395793d44f83434e1c738b3541d68ccd26f3c6279369c4a76a92fa3b4256fdd367fac749eaff0f85381aaeebfce93a7bb6ceb4f33c3bb9a4c51e5962ab3ec4c2dcbc82a2525654a7b13d84eb34c1e1fbd7c6a6c9697aec97b49d4541cefc84419330be133063306faf8ff4d1c7fb70ce7eeb7ac857be52ca2b445d8bfe83215dde6fbc6f396e7c7739384b85b4f22faea9740e98f12aafe2c93cc3bbc0cc36fe3a81b3f1345e6b97ee51417164529c194e101f59978f4478068db75000730c6f2bccc25304d00283cb33bc47ff712ef9e18fcb325e7a28cbb0f185329759585e3acb4be738b1971ec387647f003c8e4d93cb38c9bf974892ff4c767fce8bb99018938c9b70294324c95b46923c0849f21780f7b9d8b4d48c92fc91ec463822d97f86272408e7b90ce07db849f6c7a1003b48923f0c2739e89584065043a343f60f000ed9391e9d9d97c2b5d8d8deb7cdfb7a84f2e75b6697d93696d73e20445c96ee4322bf1089de5f883e0e84b6d1ff79effab7ee856fee6a1bfe2f3c20b40dffcfe69f4cc63feffedded59cc472b2fc9f03219cb73db7aeb7ac0c86ec400089080dfda8f6467925f7cf3cffb111ff5f671f7edb32b5a868c8eb3721b22bcf8bcd84474039c7f8def1789be8618ff899ee5bd13a93ce965d644a2fffc258a2112894422ef8bf12cafd23140e5499e10daab889dbf7c64d32c1f83c573e1dc4beddebff2335a6419e6c007b3052c362efaeb3b4870bdfd8bf7ee7b51a3c6939a4462e96a0c77720d968fc1f29cafd1091183c4f231585e88181f2306ce35a4f46ad4f0be184f7a2d06a9594831384838d1736838d16bdefd9d6679d9781ad44ba2ef565abc1922b884c37c74cf9728f1978b36288708ee9e119d73f8b7c8276726cf9a2454c3cf10b88f0c19621438bac36b72074ed230c1955f7c4b81ca2d832c9d504285fce2db13f5f0e259deb706f4bff8215efcd7ff551a79a30e6971c069e2e127ce31622c71c3a6f2361e09eecb62349e831289441d0715a3998f3c83f4f3338e8894651c1b34cff02c4af4a49fa257f98f44123dc901a21782a4d25990e47d9f6d4c514545f43e1b3fe3351b9d45c5ea153526fa199fb32dc70ccf85db62db26f26c8d652e1dac7cf4c9064fa4f2f264838884392cce10c99041fa0881060d933c89fe868e3a4934a500fd97e52c4b528d1a356afcc75141e6b4320fff71c01f723c0f9ec726696edf5b0e92e8b7173da9a33e123de953bcf4491f89489ff2dcf6a44efa00bd0dcf39e2e224bd26e9059c0d9e0806f43f40efe215f03d3a59f40ec03eda5ee4713eda3c8e10383fc2e27d46f8b603f42e409d3cb5745d9615d0a1e492131272c9c98527f2b7e1e52907cbbb7819ddf6dd09c1838c17fdd6c910fd8bbf10752e7c347778b98570bcff0e1d48ac214b24371e982da037c0b1f9fd56ac207fd9aad3666ce8b2d8248d33bbc9d9108ec69b5c7c0d1c6cf817f71baec6f6d3e59663a33d70c8221cb2102f5ef45f0f1cb210fd2fbe460f80005e869adc79967e61a3ebf7ae071b6fe35bba0f486ef9462b21d7de599ec6833a193f716008b939a0f32c0160c9fe59ccbfeb3a8a250d7f05c85802d49d8dd75e8814d0dddd2fbebb2540a21738e0901de3f6e681c5037532453696d73edd47f3e7b3c9f8cfe62d01faafe55f7c0d1cf28bafe12f3a996d803a3f7dba01c45a3a99650ce03b2edeb71c221b3cd156a3136d8f43d48fe3fb5d74a09f716b54667803e8dc4649f627709f05639ae378652de0becce58519971b9fc3770b4cb58ae4f209e88ae4f000e83e1f12e3e308f938473e8e92ccb94213f2694ab42b7a78939cc36b2e1d8ebfd1c9dcc39be4e864ee9e4684e8d1c39be41c5c3afb37bafa72fbe1860779a218d0bb78179e0f170ff244ed3da04fa097271b72e884c86236741cd424cd77d181ba2c16e4633c0b9324b6a72f84fff6d66574fe2fba1e64c8f819dd0724cff86984f397f1dad68918e04fdf3f9f6ddbbcafbb7bf19f7ef726d9fff31aed7cbaedc58bae5f6efecdf8eded7bf7f5f026797bfbe25f7ceb6496d13358dc9362d46071568ce30481134202fd1fdbb619ffe2deeaeeadb7de7a63a1327552980fdcfd65151ca535131fb975f7ae4777eb56babbbb7bdff8c8272abbc7bc9ba8418d1ff1e6b2cbf9edeeeed667bb5394a39ad29e32f37d622c5fdc5b85044dc280b1048e008c6a6b953824a9b47209f7f91bf1987852cebf389eb272589cd474a635020377048f266640051e60d068f6fd2c5d6ffddb0346764f545f9e7a38a9ffc5eb7b3c62dc0e4e869d2a79481a3d0132e4eeafde15b87799a61da369d2d15b40810c6197665700337d2d8503f97b6f7695364fadb76d6359f91767616921f24613a4294b4912fd9e22d3cf40204d309909326541a6f423e072c90e98d70e981dacecbbd659ef9d73ce39e7bc993711376759b37a254515e2a5ea5d80d534cfb9f190653fe77c510ff5fdabd763e66c85010c98f63bdb131e3db608f8880241e9e823dad24c5a49c3fad536ad848306eecb529e77ef6b994fb5fff095b7d697529375ce2e5365a92c9565aa5aff7a592a9ba99997cd78baaf47cb129dfaf4678f963c61e4ebf5923e5ae95a8893e87d7f4f6ffd69ae7bb0681a4d7ddd3cb75f5ad7b9f66bae84645ae6c9b62c95d5cfb22c354d6de324fa9dcdfb32558ac7fbb255a6fdca522b9d3c6d7356af5f46d4cf881a81ed73e03cfea320940011c4105ea21c4e9ab2d0e7506ec99387f69f1c7b68dabb47abf7bfce9e4894bde887cee38740c7cb3cd10f9de73c043a5e8f960792e7d75a3b4df386e87888b3abdd0744ae36bcaf48499abfd275ba9eb33bf97eddeaa5be77e381fbeb61d9ce310357f110b866e2256a2349329f88d44892cc3ebf8afdb269efa6d8af7e89bda22bbfbac19392e42b1ce779e8ca4730d374c4e4e1a594c74ee58d8cd5c8d7d6c99cd292cdc478c99f6e592a9b41f9cf672a2f65ff8d8e04c0c57f3172574376149a1bb227691bde383a4482a44157deb74f79adfb86c8fedad665aa942e4bfd80db7e66d3be8fb83892e98bba96821cd1afa16b297a7405c9a46f90106af1f43b89cad3ef30549b46e56727a15f8dc91ec64b73a5c39234045781ac790f386b5ad6be08aad27d1d45a6dfa2fb402cba6f256f28d98c97529e7ea6a2334587ecfcec300085022d5943f13a3ea2b457315e6a560dea88980f1fb9e735ea8858a67f44a33c1ecfb7f4bc07d4e9f012f7f435e7fec47bf1910eaca4e6fa94abb97646d47c3d05348dee7caf27badf00cf67ef39e57bcbc1f9881ae13a5aa7e3bca773e1a39011ce07901327c7f5603854091228607677cf8d87ce9ea71b0f354f2d076e7a266cbabbc7f359100f575fa688a7afc874bee7c88c99777efe4d56be2fbec34beeed88f111f576c4f888be7f01eff076f8883e4c86f1d2e6f530d38ae974fd9a24fad90cfd2ce5259909c9943aa5afd14d017ec44723fae2d73325240dfa810c06d90ab21264292470f4bf2c95e9c3b48d0543124bb2302ab959f235934e7635734e0e49743a1d18a6d04b49db051c0c92264a8ee0d1a39b880f3031fd3c7af4f7ca4b43fa8de86e2c5fa11454f8d0efbe44ea4fa10f75314eead776f0921057f3fc8e902ca13c7e17b2047afc2c240e205432fe13594a79fc1c5962f1f8a72cb578fc1e892388932b7134916c019246ffe73874b40d23aaed84b8ff792deb76c0f8a833205a0556017981fe21651610447f13e97cbf8eedfba43bcf5daf1db3c37dee5f78bcd0fcb793d9c3751f90fcf1ecbf4c4f27f3367e120c9f2c43d640ee1d1936a25ea066ebede0a36e9a971d70f0517f2d2c5e7a1e3d22b9f942cb51c539365587cffda5bf75e1fc4e9f3e7d4a2be595b552ef0526c9d4f18289f1920ca5923c9194a008f90b3961c54dfe7006834b6bed477eacfd5869ada5d33221b98f071cc1111cc17152d73a9bdd3a9ad369e9b44cd88da375f0951bbe9c6ccb381b279bf8dacb61620811e78cf8114fa25aad5630316ee96a0582e09015112347522ad60ab682c1600d7bcc851cc5a3c70cb58e38176ab940100441188842a15028141ac2927ccc855ea552a9708f197a954b15aa5e5ce8552a958a26894a54a9542a954aa562a9542ab14eea9af4b1477004477004c74ebd928c1404416f31c9a8a445ef711cc73136d6983c9c91de301a95cb8787539582b158ac59030b592c168b05637d08c6b281281f73a8170d0ae58343c5c016ca45148c43a150a856f842d9a05a28140a8542a1504e33d2386a7414cd089a21899b1af61d6bc562b1d81046701d8351eb491c73b1582c06b25a3420088260c7c0162b168bc53a06821d73b06360c73a06b266f0922fa65c20cdbb4260e658461c3143297923fa2b25c25260986b52e2e84af5984af9aac7d498ead14eea1abe361c94176359122819e884fbe01b8e3edc09e8260682a730ccf005410b8237a10886acceb8a072d724358b141450a53eb58e2b051b5f7ed382fb4ec2e37d3e09a9b1484101617a7d6a9dcd456db84fe72e548ac663a24d4a375f2cba59e3375ce7307f75b43999cc2563e794aeb3cc559eb84e9e348e6b9ae4c946096c0c5b2e57cbd56abd5c2d9503c1168b019ca61eafcf4a5d34e16bd56ab5c6981dd32d8db5e48b035b2ecc857e358e2d222d56abd56ad18cad91a60596e184fb78eee6b35221a18b8dea8f848c7044f090ccc97c56ea03cb8509f57eebfd8e592c969070082692dbc5c5158bc562b14256c862b158218b15862c58086385ac8f0deca4ae75367c6d523ebf5bb156a8f500f919f7f1e079a96b9dcd06b73e446d5cdc3a9ad3d99a26f758abd5a236de72d1e0db6ad9d6abf57ab5f0ccc46004f4927ccc85602931954aa5800862ca2629295637923a92a4c626954aa5c05408a752a9d4e564a954c384d886a5520d13c209f7f16c93bad6493264aec0111cc1111c4fb88f67d33aa27cf90086df6ce57e161ec2d19c4e10044190238a49b08604d009f7f174b63048e6388b25b24496c8126b74bc4c5210556a92ac902d9b17ab45040a14d009f7992b219c16112f794027dc87fa4c625f9e8eb6b6ce743a3bcf4e6d0c5040275cfd74360f6b08e73514d009f7f1cee6a1618d166b7283d24d2643723ff56c9de99ffe74284df8f2180cf113eee3d9a62472c27d3cb86b6c8610f17cb893ce088ee0088e609ef642a149cd5acd6a2edd5ab79d670fef17e44e2051c98d8795a4319b8a865d55f7f7cb75e4de976d91de719ca4af62a52d502cb52e90d2d0235ec21e4d627b9c0f3a4ace3aed543be9044d8cfec075e2ba81c9523ad75bdc24dcf08e23936b853459d774d950d29e419e90349020692441d2a87112ce9d2e70df1df14ade50812cb9e8a3d834d1f9f766ccf7c34266684308661084853a7dd6e59a268bb93a9f90382807f2fc59e325e904120ee4f9cd175e452104ab4076b8e03a32577da7ca355553355573a50aa25279a9065985dc9f05a509f235cd8d97be195e265e6a32431a499aa60625693e8d4a158225c85fd33c610bf96b709ae80f24693e12fc848b5a171d29ed64fdb0b20400121a908ac40562290642a071b6fd74b25dbbcb409330be7bc3849befdc68bec8621fd111ce92e609f3dd45def0dcdd5050efc3b25d727b7e6f1c48cfd944c685f286ccb39b90e79c55e4f94ea9e03e3483e0e125fb13f55a73bee528c2fe7d4d043457c85a3bac35ec9a98979a04b0b659e248bf7aec9bbea297e4f9b56d47360e6d7abba766def739081fcdf9b8a356e0e8103e9a937af3deef217c349fb33294a10c43c9d54abd237c3469c88597de4bf4e707234ffa94524a3b0c33ce0e3449002b7fd62632a5e0767c720a7717f5208164b9e52882be0c3311f71d93e458e5231d3ee0d5ac9d8e9574e9d2bd950a07f191abb0ca4b41f04a5229615c953b5825a5942e62969d0190fe986fcf4791cc8be9979e0f1f4092a071a2ece54f9328f3440fb8b75f7a3fe4b7fcf644d98ffeeb89b29f93a35e6899261849f277c94e2369bc4693303e8f2adbd7e47fb408942fa293a12faf0ae425c155e26a40a4ff5db0d694d7507a855998c3299ebdc916c51b6292ec8bea672f4f96c3c9bc1f5986c2f14428f254b30e772823ea05ee6d08aaa3cb24712e434c53f617a784dec5255b946d95156399bb7bd671f7293899c7ec9f741e763e768e47a35128643d0f7a94566d5d56b63775557795add6f1aae6859eaee86ad5ba2db056d0a37874b42090074447104a6dd11bedc6e94899f8c8d29132a1378e82f21205e45510545b2010080402e50061cc714c38394993b5c178ecc6be56dddddfb6acb55f6f458852b4ef8d08508e22b40779a2940f1dc6bd7d7fb99d2c15fbde0aad38d53727cadd3b9d47e9603aa1e788d3346f6219456ea2140f06e38b71f562383e42de84d93fe98ad49f20e638cf5a8c27772dd059b3a2bce1b68a6cad173e4b866ced14301c507dd05bfb281dcad7719a50bc711cc7711cc569aaaddab2a215ad6845719ae40936ded8182adfd455a5fc8bb7a6499e402b4e92ad0ff272e08ed857ade13f8fa7d617c2f320ebf2917dfbdade5a94d7b6cebe7c641fa5b3a18fec833a5be3231bd67f711b7a09e52de8eddb178ae7c2814020cfd2f8c87e0e9c7565cbc44b61bdf1527ddb24dbfab5d62d47b5e334d5515a719a6c2849f64336ccf66b6b9a28c61c170afd8f462d2db595ed6b58e55b3cde40df9d55e223fbd3c2b2b550481ad68a9286ada3b5a2e8a57e5b7ffbde8848f9ede54644f52cd039e53d5f5333c4e256d95655b6d9c7a6a9f33674bb221090a7fba00ee67a32329fcf5ea6733b79c2f8e372fd42b9d6d7eebdf7af15395d11cf6bb543bb567133596e39523c118c8a27aacfa99ee8015956dfc7e7b3af5e0c7ece733c1f9dc70fe474593eba427c649ff6cc381e2adbff01bf8d4d92b562b6cfea9c004694f25794e2891ec0f9fb319cbf9c67e1c570dc24a53cf7404e9c4f39a17437833a47e5ee24e763ee733c1f4558bc0ffa37e55978319ce73c1ff3533c1ac447f65f1cecb944965b0ed103389f793f8ac4cccffe077dceff981895b593b716dbcce360dce1b84f2874f2cf8d46b8a5c51bb33d8dd3244f37d9c6b2a5e124d9efd807b37d19ea22d9b74f579364ffc5ad386fa6c95bf3354df72de76dea95ad081bada529cd5bd3d431fb725a6b5f7399ed7b6a922c27078c8c8cfdcc93e9d824d9e7783d4e92fdacbb8191c11eacc549b26e5fceb7138823d18d4d41e81899bfcef2fb7590df2edd13427e8ccf497ffe7c39f1c4134f3c7774301e03b3a35f5a5ebe0e29a59452ba4ff7d7410230542bccac6528066eddca1cec8073ecc9c75fe0fc3f9a9de20e63ccc1e4c04dcfb10b9efe8dbd54af8771e5382b92e4c0595854d230b1639ef2525fe133b95bcc415a6c25ed838f1a076e9b8f3b1f1a06460601f2bd91ef7bfdf76d90a5d0dfefe40d167fbf852cf9f0510391a3fe6f25dfff481c2d7392ef836449a5d4e2ef535942f9fb58e2e8d4e5e4fb2d71f44cdbf866be7fbdaf874c92b39f303ab2c0853eec00224bcd03e9c34b0dfaa81b47bbda46378e3ed2361a47d3b48d7e5c83b7e259993c0449a3ffc4fb3ce706bdd4497cd43c90a576428e5c8da36bda46af0c21e548e3e8174de3689bb6a18a82a4d13f43b9bf504cd2e8b73960e14949e3eb7cbffb4864216e6d2764a9a3e89ac6216527f1d24a8dab741e0239ea6fd179073a0d2fcff77714dae6f3cdc27312c8517f7b3ec5fb5c6a9f67cdbe0580e4fbffd58cf2daeda4fc8b9758b0f0becedf7d104ac74e52402d47a07f0165c06e3ddc9620efe5c4fb80646bff65729dcc9f9873e0f30ff809c422da072f514026d10193f5954be0971b1232c9a9080564927e19ea98a320d140eef458d1deddddddfd211752ba7b64b763eaa5979973cee9dee2f21cb595d63a2ba53bf8887ad893b3a6a04f92468656dab44852bf48d2fb89e783c994d371125f5bb94c3d2286c8b4e9084e623e6be56bc79c734ad9ed8089f1d17c010113b343564a43f9fafce9eba84f5b07ebe9e023175add71d4ff5c9a7a2e3e9a3ab8576fca397578a9947a08e78b05077da572224ec44b9fab3e3cc44bb209fefd1c02f779ca53330e128152da747ef56028bdf756fa3bbc74bd1d3015c64bb6beadb5c547f48ee8efd0e13af8885e6fbad0f94269893a0e5b446769abe7e2a3171d6ec97a94ba641f2e3a7849a3012e1cbe6648c2041ad424d1849809b4509ba3855cb1c7e170a146134d10f2c4757500b040a4880db6600625a2aca28a3164e1892a04e9401160e3edfaf29361e6bae005af915a3f9f1666713c3c84c3f13e5c394de3c06de2e582d73dc2f6e9506bc5de7579986b82095410c035e279ec796ecc9e4ff1d2cd1ecf8f3c9e77a13a795e0833b29427cec3c3092be0c19227aa5821613c7d9f85fc8db0054b7041678177c16b64db9e8b226fdbc3f052fded47db875c6cbf832724218510044aa410cef060a4e23ab9702d19a689eca60adc2c3ce446871f488246be9733998c1c0fb73ccc0a9598020696986b42ee7c8a97b6dcf99097ec77de45e7479d6fe9e44e1522c89ddfc14b27b9d3f91d9dd7e125ce77de87ce63410a24597841922c5081641cd2c4888591a9c6cd89c3b9420a47be572842be170b4ae41be65096d2544474ff76ef307cc44958769926fb610286251c48c29225dc38406b0a695855a108b12658d088e45a6bad5503a0bc31733f1531a0a20c1987996c610a264a48a6b0c20856d841122b8881c50720b879cd1821891324e10a9c7bb79024df7befc557d2f44b41855ca560a456e1074e8081200ab029728dc2e8de7b51eefdc24cbef7de7bef5582865c9f52a108b91e410a25727d171b136ca0022ddc200a2bf8c0124d0baa28c640a384897c9de04e80b8901085325841252ea185d3f7b9561c649af3e10daca0596bad67633e92376ae670a2d881114e3a2a140aa58417b45092998a56bc8062e600503c413305250220a780031c53a8a289286e90c38f163400857c6df05096905cdfc57eadb5d67aefbd571c824a14508c4b40030fae30aaac10921be83e75960216f215af0d57877c592814ea03f75ac1837c6ffd7befbd1773271b560d9b25642dd70fb9781b28727d18a315e4fa2c5e4240aedf020531d7c7c1a505b9be0e5e9246c8350a56c81549ae48a420835cdf872a5f1a17543620c0b12555d41851420f6c5653685638e109354040be8fb390ef77bc04839335493cc18a33840036240612963f0e87fc2e5b60e24d38e7028787b8899e9a3e4104a2988d7d3857aec4c91f0ea9d3a743ae2f658b9724122f3061efd787f1be1e52ccf5ed8d8f6cac0c5cfdcfded8269e8d39810c2cec8d97b0679b685848422a072790a2084ca4e054853c25921190204f4e9eefa9190fb24ae234bfc569c40504ab073a806203349002144e534a91a77ce2092af2b43737313b8038c9f38770953c3ee6b74c0ac806c20082320ca107426e3086d3a4422a4f9ce7ea755713f7c318b54c930580708312c02045440c2938bd8879660b9b4d1049421976c0042e0461c1694691e77331c8f353bcd4c933043ac8b53eee4491eba7d40fd520d79a5c9188200c2e729512870c17ce3366b142a0eab2a6d131701f66812f626a92645d812c578b060c5d93245f449a4992f9c3e2cd34619677337384cc69227338d864430a4da04e5f7d0e0b9bb430dcd09c38988a8c9f622c650904cbd94b9a2f66dd1508702003b7bce42d1fb17c888f1a7b7848eb0685ca5ff570cb47fdd7c32cdcf2126c9a2e0822f90017b27dea251cb27d89f32ba4716560d6eacf56992a4b65a8d8cd98fb61e22ba4e9e6a1c1be467cd4b8e5eaaf7ad7e5a3ee8b59e034f5a9ffba664d3b2b533170dfbd01963ba809a406241ac88644039997dae0099fda9cf4a99ba0d64e4a12761fc1879527bddf034c28099526be441fcd6f7c334d9c9f3d6a7f936a2ab69727cea6fd0fce6fff83a6fde6fdf8b13da7bb471afa508876cbba3eaff23fb4788ff7c3f32d5ec5fb5124c6d33f54fee3c99353588b4b4b06bd755dd5a0b7a82b54030e062ac024b85807d94543064e032125b2bbdef323eab9fc5d5f8be89a2da3d17f28a4f2aabb5ceef2c0bc5eaf95170c86c5e25f5c5be9e86b92e6b3e85a74549c241a17ea724dd554a942d4753f2f16776c69714749732b0b4f651c3bdd0d611886355495169ddbbae06d5df0a6aeeabbf7a67067af0adfabf2516a2695ba335785f19683d2dadd8d31c7c18427342fd179eaa93f752a6b92e80de7de47635905f42fdea1638b86e55a81b3a6664559d78b0851eda72efa9aa695ffb8288ce51f5a71aa0a561465426f682cafacac78323235bce7656ef8cf4a27eb0b9f70d553f1bccac7785ea5060f15f379cf7b3c1f3778f5063549f3819c965079165d11ffabf2159c268fc70b3d985b58d5c7aa3caaae87b0e16381cefd73ae30abc8ad4ee4e4fd6b8be68741acba81955b1cf5bcf0ee78c3ca18b67851c7e26be856bed56ab53cf7e6c6306aebd4a002f37c579edfaae95f3d6ff9e886b78603fdc771dee2bede9003711ce77da03f790dd439e82d1f11f1d6c957d0c909be2fbfe30d1bbb3f98311ec29fb3e57096eab6a6e9a652ad542bd5922982bb2ba20822261a50f97e1144dc2b50a85c97c89e76b723020914113e5028228e40a150b937e081ed3bdf5bfdee2e131fcd5bc51d43ca85ba15e1cf3df77223c23d11dd3a7f53d374c731f5e98a4040c27c3c1919cfb77899956771bae334dd300cb970ebb4f8ed635afce6f928e2efc3e3fd2812a3f29fff117a2f86c577bee3f958f17ea8fce7596c9ddf3ea6f35bc813f97b9ef39daf5eccf62b9e0f154fe49ee8019cf7fc0fdaff763bdf709a6af889b9ac12e6f937354d357876058643de98e77b21142adf0ea332ee64134bd042a69d565f75cc15e669d137b4e3e9236345cf869d75dd7c3af5669ab60f8538ee4557d334c7d94281b8e3d33b5b18dd61e325d205d047b3b3556dd6041f4e71366f86a16aaa28134edbfef33f78bee3fde8bce73fde8f22319df778a21f9fdfbcede56956aceae46c1a10e68e37dc8de743bff2171529a7a3379334ad6b9a6e6a92e6a7529aa7ebd34dcd7953a93c3d1eed7a21cf4b863cb106f2c44ae48957f515ba3c629ebfc1fc26cfd7e8f8d1589e8fc5c07d77142b78c3fa7a79e973796377bcaf1b4e93863f9ca6a9ea19ced0cef0626b02abb2533555d7bb2d6b2fe8a5be2d7bc10bded625725bb775895c10851b5d14e909c8a3709106bf754d894d2047f3b9d752405f534cc07953455d28a07ae2fd0ac3d72bac09c39a57cac91d29c766afa14c134c55df9b5983b312ce3b8124655d34db933b4e139d20eeed73b2eef689875733531787a90bcff0e5a5fa0ac3d72bac09c39a57ca89679f4ea713f57b5e9eb68ef39dff417b8ff7637bed3bde8f22319b77633f5027aa84a33179f2cc9b396ede14b76e8a1f6f86af0ee73579aa59874f9ea2b90b39ebb293dc7210d19906a32da8a48cd94a72d4a1a111000000e3150000280c0a0704a2f170202699b2f40114800c708e667258a348b3248c5110c40c42c40002000100008cc0cc000d750060c0ffb4c45bbebdf79ea92503e5deeaf9c94a24ef39b0ffa0a30241d9d16b943ebaebc2dd238601ba62bc6e28f1ff9a3e7c1822be6056b02b471d9fa3e317a0e849ac58ef8e5004a6cc5df337eed1cafb781b3534920f33847c6bc0b4e3f33dd415c1693225ade8fae9d83e3da16ad6de45a79a43a21199e9c51731d68623a969074ef22acc7e923c8d85966207ec5029d4dafd20b6d077b3eb45afacd258bafe0c24553a733f4751d204d2f505b116bcd51997385731b7409b3d9706e071af2a863265f0365cb5dd93609d3aca584aaa2f6b2c46ded9aeb9e84b8e0dc06928e8f217b250e67512107df5982a62a0510c6066c2609122700684ed2e72668b809ea78ea9f7a97a2e42f9fbf7f608f4579e3d187fe236bfe99a19c243788d05085752042a20e4ae3843b5ba0030f02b2ed52b2613060e3a875f8be0bc5e3c7b3f8436c05e7fd8c8a8d1ab5aae8c12482fd15827026ad2291b9b3155d8832b708152c75d2a09efe5c2eeb0a3afdff580bc9d44b74a3f73bb4f3a23b9b8de2786d945305d55cb02aa9f4b53ee906d54e9063e33a5aebc4c8d1282eb78bd446ce65d3783194e6e26dc30c53c8192db1ffc73bc4bcd515c933e03682d78c466080b1a4c22ef072600dfbbe8bc38f6076857a46d733234e10eb9aad132d2d45494ad305de79cdebca09dacf515e86b30f5eccc2be3a7b7bb73d311103c9e03a0a734b116fb122cb7ff8317b9e62be1c0a2ec4809d03ad935672289097e09f869fec8366e5b4000bf649184e31a52922a24afa9a7c925fe380cb376704e2e792b2ad437d7a40da394556c991c81095c49b181c3e0f2a48f023d675abffd427b96e64d30c12c8c8f3cc0be24071702f465c861bb17ff297598b4698c1a1421b1ec880e53245295514dba77eb833e022ba351e12f174491bec8fd4de20fc3ae68b36f09f175c12c697f15e017cfcc79182db7376e7a703c07ed0b837a8c48159e24bc712f0cbb6c5d1c20fc6dd8283963d489c64f181d65642e430b3a704c22eed2858dce7917ba1001c0de69f51c7534e2b8d13054935c320a1dbba07fda8347c397bc761d9e9c2cc92ab882218e457d3125822a375041ba409940dd2e989b5df9bfee91ec37963a582fb6e4867f2aedc1f5805e7c68a7bfd047f092628b22225246ec79c20e52bbd8583f5e835b089352b8e7967996a4c0700c2f9997b382eff5ec23df1ae183acd50603b860b090fad307c2a8a84615358c0620c74377cea6dd118749a65fd9d529590f80605c23358f4bd0f7a288c2e6615f7ce1bad2cc433fdc6d56bef35dfd38fd5d1094a932b38743568e4a3ddf338e0e368da5397749501e2653fb9b376116a0fb06c52863648864cf2bfcf5a82ed67221d7a872d228cf5eb2919ced4f6b24a29ab93264a93fb0856fc21f4e984573e03588837ceb81039d3caf5b1a484f774c1cb1784f0c18708cb0cf387b905f8f2319e02487b54947125fb288fd9845db921953358e08d09fe78cf473895f32299f8bb7c090cf36e9416a6165c9e188c74984a22c98277ae1aec3c1fd4f6709fc7ff69ee5de519f54d70e38d5ad574ed792837a320edc1242bddb3374a911681d13397e55d52debc2aed9247eeef6d2b7702f9d7e6d300349cfe064362c2c90b66b5fe13b7a9463d81f2bbb5354643df284b1f5297769746197885685b9bb89b780311aad6577f5bf4c7a77d8922fa20e08a5192c429b26b3e5649ab8ce4fc40b63d7b15ad24e91983c9835795927a84aea1608f87609b417cd3f01143a23909ae97bf413ab8b98c5d4e1837dda4b40b37409055046aa740d7ebfc5a84f45875846d6bd209fef23a12e298be27ab29a51408af431ae65541348ae430122456aa680901073f7988c8f13096811fb1b80e519f4d9ead98344f402d7f7a384aae406858e6c3039ee3dec6f51cecb955bd9ca7ef0e6862ca1a149a960c2eb44821f453883ebc11fb0cbba4afa13a30f43cb9b86af9db1aaf839684a2de5b7adff63d0a9d8744ff942bf574b69ae849432468ec38f3cfa8ad0accf60dbe2fe517c1bb23e477e4fc9c31070f47d10ba2d563abee86f12bf2f3414c6fa42c6d8278008d35ef1cffcf3797547202c07e4a434532a00282701099263460358e847f019234205ea648cbc5308c1d6f88d810757816e8a4bb09b133703db4d992b501103a51eca9a0a2e03dbaf7a606185c01b8d4ba0bcfd396a75472e62eb7b2034ad05dd50dc82d1b9468c5ce7af1c68e25f1cb9d5e10b0cd84a37f9ba43a460021f4f3bbca309bb53328897b2b02f7740406bc522732425a6ba2cb4008d6e2a902f49c7eee96113e82052ae6b17e2728353123dc0f54a1ec64b72ae5f64fa9e49fa088ad2651e46819b4b8afd5c3fc758560d205b7d18a63a0fd57600b45e143b3164263e3578c67ab5f391b16d49974d81608493a91cac2c1e4f40c71a7bb47fcb69675a3ba4b27cdb593746f63e2d1f06974f9694bf4f52999cabf3296e0f4db99755ff1d59272fb079cd6839272bf7094088ecf3122c17ecb0946c1a3adecd6fc02b8b41ba010e89c5056a44b7681481cdb237d401d5b0f4f503e4b963f01028b74dac8d1272c5831df5b3acfe857d2c956e5a5853dde5b17a3b9835280f4303cc7f6540cf9740b5ced3e77100fed34ff788046d456bee4a02ea1f4cb253d0c79c6f552a6cb3e4ae39df09bfbb5b06230bc47830bdca14441d2d8d481efd55768dd838ff5e663fe15539df7ce6bb2cb3f70000431e60969522073e556e821cb194c115a9bf3f128266837dab424661e88281e82f25486d96d9fd8e35f81912f4b2efdf36fc9d98208bb4b7b26c5bc1ec0144aef059a1cdd60bdf9df29c00d778ef55321e9ff6d7e9c8824c6542b406e4a6fd1fd385152ba11e5d1f8322b1441d38199a56f02769d64afa215427c548609a68e68743a219f173782eaa3101a1df3f67022a6d3bd005f8e6476016a419bce9d6e077d891b0cf528ba8ca1d1cdb6f957c39f735cbcb38e470a6977dec50a6bb0f3bbecccb93e2a6bd9c9440ba87db5cd75d6c3d0f09018e7db034bb616db0c6cb30d058c4374e7b0790397666be4eae2ea2202dc6778a92ed8b6c1fba8ea51651e50d73b613e5ff58e240520e87d7219a9c2d91f80e8677702e09d0b943083e047ebcbac1eeedb16011e1a4d51d5d93baacabf7023250660dd710895a0442122f4d9b471f64a2cd9c3977c13ffaf352fd68dcf6dc1011c1a7fdf5aed98c8d84ce3a2d44dca49884a6778a8a380971e5aec5700d27af756b30904164b5967a0e5e43b4d411bb35c5fb2356c24bbcf8189b4c4c413709ed874c8b163f6aec554de510be02d27c3a08cf85903526bd3f0160975afb58666bdd8932b2ac54b4ce57b044b450a260c2937be346ee1c73ec94d2886eed3005b6b99b42fcf4f3c850811fe7f62a240f4c9b69a1f82eb342686e09b3c80a88c80c3b100bdd722293e982b904f71dd8aa2b2bdc08566bb108b9967f00eb7411fe49f64e13830f6ddbc69483f0103b3352e2d13d88f38cf976f2fcde6e4e1371c8780a8f1a4ec5cf0b17485ec34f1c203cd88adee362e5214586ded332e6d25ec4818a98d0cd3eba52834ab596cf864bb7088738428f0950c7a85cb95bc79cb8562acca80fec01bc1714f6079dfde726accb8bb29b5293d9a768c2096c88644045687c1e1312b18a20ed21cec73a8224269cb92a742ce8cd8def24b9526dd898f8898453b38f04f6c5a645ebcdad3af18374d41cc9426001adc1c45d327d53153a1553fe299eff59c11cf13489d4f7d0c02366e57d482e787900be6a994f096771cc2c56a10947186246c8776b9bff16117e2460f4232de2ee4b40d85f96aba0b74e35cac3d12bdbc398933a16ed1cf5d963d373c3dfb1031cd9a4d6cd798b3f5b5c9170de8c841a689713c7bf199c692fea2f31c13500bf776ac21a3a569161af06fdbe63285eba2188106b6b432676a7cdea09f7ae1c8caf6bd90e533b7c24078edc8eac99010c8c0225fb05f4c4b421cecf6ad60894ec4a9ec854348b338b62205772c5954e91f4d037ae2b4a886ed5292590c96feb473fed27af048c4091e96e750ce78874af12287d5738b0a6a0d776d04aa0b4c601730994c0193943538b21becdd1acc22a1b2e6aca8571632e80295ccba77483da2940c32e3ec66d31c4cdb99ea8d8888661bfad947e4db447be453055514fb078ccf600860bc936f7e3e1fd11a3224baee0ce8652a18ff0b2eb5a8a8d84d924cd0c583e80cfa25f0de1b86f642bfcba7a86c4421ff8949997e864da4806122bbf008b819a08e39de67bedbb3c3724ed827b11f5987b1b68f970dd79757d8a0d842e8b6fa4fbf4568867d0886e5e66501bf2f0119153ae027657827656aea0bc8d7d0081c21cf240603db86ebd013a518cc454836ee7d2c1433ef983905bb7bbe39a7392cf16cc4a0e14c945272d71262ea0298705f2341528d9760e7639e3592eeb1c5d3c37e8ec328f5663c74b749c84afa36ad8a8472618a4fd7e21615255db9f08936b153c6d4f1cdf37026522c17d98680e371db4cffd054bd017bd7675f4c71a659a03e413eb21312b6df127b987f352e9aa7b82069cc1d7010ea4f4d1b87b93b2782e452156ea4dedda458c5e896c3521b89d388e4234e45dd05aab78b5229f9567965a72ad086da3bd4e1eb33af2016a27c38cc6acf5a0e04a3c3801531a5d03c95aa8606fbb78044854fca386bccecfdc7a61237c564fc4700dde8243df12474d2d7242f6eec78a88d3dabbb86dee9d8ac5d82448fc31d25eeb9fcb216f695cfe4af72f416621897e3a4fe9131e853606ada67ad5a85371018899a8c122cb47789a45a6714a6f89753292a1d966150054416723d070501f7052dd14ff5859126ed63cf991d07ff3595aab6a0dd49da0d0992dd9579dc921544712e629d7b2440671a1951458e0846ec9e7f99f1bc522108b3ca1001626ea9522103210d13fcc70ef222c45d097953b2ebc704da2db0ee119110ac39c93df33d3355be354479369f976f2d62d194ccec974f5953a79a0fb2b819c818eea323b008c12e7744e4eef45fffd0a03b0ac3117f8f7064a8656a9668d9bea7560dd23c63c7350aa132255f5d5fd23f2dd1932d128acb7a7221c813995b285a56af1c725a8497fe8d6a8f5f4e3e40980f11fbf7c9235ac486ea3db3d4579847451f1aca459aebad605c45906d26dacf8a42b33a35334a1899a82086386881eac21626413a58b025219c45ad577858ed9f91090d2356841011e2644dc9ade588d3bb992036ea27b3d5b443f64e65f15c253b65052164ef17c1974622be920ebc63854870a1a1c1fdc6ba069988bc05634b5ffd68e2e83decf25eb87a98f62cba5722b2e7d23a585c4f91e9994b80ed1f059254ac8561cfe38d8f191d65250e4b6d74b4264ac1e3d2c0c5ef3b288ed781f5360ed7fe977149bb6e0206a176ea0127aff657d99661b30a3331d54d40c7cdb593b78d9a0f75db43feac9b8522cb7fed91c7bf2d5fd113f289b88a35dd4a91a7da661cbddbddde701c541ee0c667ba515923375f38b7a01c9cf131689b5c3b8b3d15592f632bc28c2dc8e4a60a379376f26cf4802b1b311c6e566b77229839b460e206a65392cfa1e6e9ff576dcf2d6c4305090346eaf2d1d7f2c58f7b2393d4b4031d427008f337ed97591379adc077cad7ba700656c9d8cd30d47891f902b08346e2ef7075520445efec1a7e0f00e20138b0acaf512c25995754f0cb38a0c88c8a7738e447bebeedc82b2f519900b8a35c4a48438a64b45f4622f95a205a81ff58ef7396a8a3f5aa8eee524bd2b1e9f94d72ce0554e659dcc76fbff56c6fa14b6190dca458e4c05134349ef31ceb16db18e3fd54aea0948161b0a59d17629dad7f85f127c3627ec2b64007756e89fdc6bdbcb1572a759356d595246c0e24d4b538efd2cda55a5bace0df4393a36ace12e6e66dd3b155cd503ac490be46d671f235276a67b1d7f3807ddc34c98b579d588c54dd915efe04053bea8032caa29277c9a0fe695f05ce51fa3bcdaba138c52c371285ec6baaf4d49a1b0b244f7fbedbf8ac8e4cb2216658c99ffc20da9246f145d91e15c9b2813cbdbebd1cc8c28375a64c416b5e4e6f350fe7c5cdcee6689c9f642806326ed233f3eed976285fec1bdce7ede91e234194f6a05ba380b9930a6d4b64b47b5a42d719ec40c8a53b06e35141e0e4f6934dfc5952cfe132953f47f2218be596f502768a3c7df9822cb2825a397c59bc4d1c9de1ec43c261143715d12e66860f093698407031040ee293dd2319255f51b130c2d0ee2b2768e71f38d01804ee38b719944978192f514132e6fdfd98b90eb89663efd75a356a3d234d6d79e03cfbae05c45239e19713080600d7b7b741a6cede83302a8246835d49d43d1772bdc914b5f193f0f562ed8c0683077790faa8380dc3dd5f88942d12b43b1006ebf35e7f5c1a370e5505dc5c36b462f602ce6b5c98dbdc82234d5652bfafd63c3ce35e4134fc7494913cc805a43220f40e55b7aa9e25f8c838e4505ee12c6826681a705e6aaa11842f57a431318d5b194f5623d92da4be74a44cd926fc0bbbaaa3cedb455afb64f16219e8c1a66bd261b533f8cee8ff905e9ba89da48e814dd577dd24fbba3ecf6e13d763c1a7d5da6e297dae17b77a28c5431b7bfb775c5afbb2333ec7014283f294ed1d590a6a119b1be6f9b742587a0d76614f27bde90ae88a715eab3c2b4469b3875ea8a51e012c3fa91691cf43c7c5431eaa712bf550b2e21980d3aedad38b89f2f896dbe077fd08f7aeab3f418599dbac32a21490e5423b8b6f7f0f291f250d96486041965ab526ed5ab8e0a9d46bbe59090bed32c547e45c514301b89d13a8ab19954f2fadfc8a04abde3e3ada57691591a6eb459b221531adff1c5920161962930894cae4d925b985c391d8c4ad7e2eb026f9dbb2c36b0b939e9658909cf0b12d87cefa734d2b5aed378238399f4a8ad6f2a2c17a88a2f46851f21398dbd541cd71587071a9630e7e380fef694ff782c4f63c1167dbddf9d4660e978effbef35e0321c4381ba1cea63789bca89de7b4f2314f89d9f07f6f2436eae2fcc5c7d73fb9b674c5a35c4f6caed3db83b487a4a5374aa610ebd996841bfa30ef8cee0e491344c4670f7aa7f21d9514db3d66e42b94ab930453975d62ac2f10e5cfc475d0bc45d336b1c788708e3562afc83fef80dd3cc7b3a405da64f78e2fda5eb9ca5fb83b15799362263f57964156b12498891d91ec680d12eb396ce709a0b5c550cfa3df0707b3096d317054a604ea3e2df4c12b0f0166f83b9a1833bfc428bef3f8930ef83edcf7dfe8fcbd1d678cd36e198f9285efccd5adea240e42296d9d28d1bfaad97d4d388361d78720d626c89dc3f183fa0aae9450e50e5092938c97ad56c32066a7471952e94e330ad98cd44b30806a7feffe7e631831cfed302546e00f829f195d50e5bb71fa00072734768246d3738987bfcfbf962f651dfa4b0b866062b7b8c5ba74b964f2ce7d092e6bc9866d0889f936c54d85295c67518c9153016e7469d9329c9474e521b7567828e652828a6ac1250d1c2765ea57b0f2761b4ff38e92b89c73c438435627c40320280712d4aeb478208322ca18ac341ac26521c143d29067c2d1d62ede08ae11aace4413b9296b08ed1fb3d70f29edead416e44fdb464f9d3a9767ca2649436183338d23a5986fe953d9aebe713a57725caf56917599b76c7ec8e1bd1914a6d7c43e7a0e8c2105c9667723ad6701ff6ad10ebf7007bb85419ab951173ebea0ddb0182ef3d2cbd29cc78d0e5a3ba2c6a021b08a3f9ab9bfff3ffb9827a44888276f9dc655957a07d4b8ed758238660750d19a32da9461aa644018014afb7e0dd96baa5a219b9ac5cf6b7f09f9626fc74cef73c54b5f560d8a3828474656b63b185c790f0135f85431970334a3ae813cb7e77edfd13d887c4b2e749daa55c3cb6459cb6d134cb1fa9d5daa5c680babd9dd257b1fd4de143f32f3f9be667306edcec7aa2032112e683256da9941ded8050ad3f561e551ee29fdd512620fe771d55f3f0c7da58566c794d17275270339ec7eeb004a9af08803c7c4ce8e43227839d3d304c2c21ac0ffb2b2bf5698ca468aa178be64bdb8ce3e55b125df3b8f7f788d053572d68c87fa8013016fbe52b35797bf1001aa5a08a9ea9f991db1ff4dfc88d34041850ca013af5394bea1c08ef2656ffd9063e1744183b75c1bb2d58fbdfbb4a4785702e00fc084a10285a16c234c3ff71454c073c4c4e14c18beb8021da695a59de867c040fa8f0dbec6544e52ec83aca725e4a6b71320d5db11b537ff443e524ee7502bfa77fd1a93d9e699c88832e1c27129db7f5a37d270ab0e2ba1985706c374514b71a5130c4f68baf9b3c54dd9477d577de6db1abe612937c453852349217026c717fdc59780d0550c18c749fa6bbc37d2dc12ebf82ecea8706b9f122ea9003632d1baa3be40512392aae316be82918618cab46c7a8560e95e59c0e2dd59f9009676c46c75688535439a4d6595d9b9defae30e39e320b6ac43e15ecb3343ed50027d17cd971596c51ad14e18423359b7bf29588b07f2d70525c8ae85b14691d48df939fe3f0818e219fb224749608921beade644c555a43e3c1ea24cbfdb5a15d4d2ba16f0face07411b2ad90440dd3021787409b8d79a3d86034d1c5200cd84d5471f1c2e5c80978079ba26b9ecac4b848962534cc7d27344853a12707bfa157ab6146009a79113cda9fe278567b8d09a33d7f86c16325c16e16508d07d4bad284844dcc53fe8e1f2bd785b79b53081ab203fbf908bff1eebc1a35de1c2279608a634f024438ded663c039df38831e5921a068387acf7098681372e8a8a2f3687d93acc27c8bccf0dcb03fe9c9969bf7468337ce4df77113bb315e12832ce1ac3f08badd07bff7087efdce92465ad0feb21f6d3337fb4feda677f297a4dc1b96e33a43257e2e461b7b72f611c7ea31e1086234cee440dd0b4454717fa69078da5cb056ea5d78749bb43e04a4dda556a46a508e9ad8b886a6857c58d1a641c3738e30d58f3b7149f9590a4b812cb84fa1d1d6a59e4c6ecc20907d55634c39b684659086e2907700d1873352175d01759198237926e3f80ad896204cb2f4d464089a2052d7160c1038f5f6683ade80f51599f3fa535d88d068086d1630f23248eb531728b45b94bcb0b112732f2dad37b9676f552ce56dd6ed236ea88ff2992857e1ae07a6525c1cc76d80ac29768dbdd478d05b7bbee69f003252ea2b1d7bec56b83710c8a4565d822032c46c5cb8786dee5f6b120558f6006dd2980d525eb7db1b0bc664faf2f513b2a5fa3c41c6b130eb435dd732ecef0884374d23f40a47325ec49fb289097dde445fa514bc996442503624dc13f54338aa675d548f91b6578d54272c9975e5d84233061d41899662866325aca63598c2a554786ef4d942c72ef15c30fa687e4f6dff8bb86b1d1563aba87b97c17af365a9114d44dcb461f4ff8282c6d1ea61373ec724a56fdea7da18d7177ddf1a7b31edb5823ed80e34dfd33c8acc5dab2da15b80bf2497985166b03ab04621aeb02cfb66fec8415d33a182c72aea394f83f3dc8636b74f047a32d668408bb07c159058f9a5aea6866b192b15c16f40618437867cb7317da56837f195c01cc0897c8616444273d234e82d0405627cfdc8a0920ab6315a0e747cabf6f12cac1d909bc26c1b33a9b7e8db2c3b4863ee016e57c126a3eab6e2400e607f86712b60307e0aa1826135d71efddd2bb7646ff8fd3290d6e461cc6559ca1e51ca18b9e8a0787d9fd0ee5576dd1be58ac60ab895641f72b1e384a71dd4cda330383326a21ee2562a2a090de80781d4712b117d048d897db262d09fb16f84d39c3a21e34694e95fa113e6023621c1dd98edb152f59e2a5920e407258f723ffbb3b121fd825a708b92101b3a772a9699accec510459187117552d99800cc7c1dca4d9152814fa10689f1fdedf6b495c18bdd6e0adb2620c76c3f819b7dd1cb02255cecb55bc78e58cd8b6d33e7744052919a17e8684e80dcbe922212fa538e759c96528a6f9cae9e7e183787e00fe822bae02e1a12e3ca8c88db1c6817e2d7a6465f1270c82f200d43cbad88ae55200970403b07c1c2fdefc098f070fb7e3cfe317b85950f6c705174afe0bb0f64d9105f9185a18e8429b938b84a6d377320c12ca06f4d5023d57a382ee8e2b96ba8c0dd1ed6f053c1d08637c3178212fb6e11de8dd5104d5990b9dd627110ec985a2aaea0ee67995178fe0f5c28e4ff0bfdaf6abaa42a6b0eb64a5c4837be160f1fac37e2b29b9170c3777a232cca8a1b809265e3fb80b8312d51af2eb4d92bde7a5072f713cad78e045dd7c4eb341fbb6e3bf0c62d4b12f09396f77dffa549009a20a72ebf434488ee4fb588fabe0000e919501bd5be2534184808bf5a5c4489aee83a0f6d828e7d668a121f119c53c5ab446c9e3d4538f70d81506ad979f308adb65edd62890934f3843abaee1b4b8f38fa99ef6c839ba2d2d6871b3330fefed99b06df14817c834730e0016b79b7092803bb76ff526b5889c4418a3097beb0ddd022ac3345018f6b4c8b69f2f749520bd71902fd4605687c80b7c6964190d4b972dbf7bac0d640725a007c85e90c7f1197442133d95901a24813b9d91ed3c984ad09fce2c55f21955794f90413622667e2e89188e23b314f5c90e5a8d6a7b4e4be71eee746f8fcc8090c462ceffe150f1daa4ffbef9163b6c6a86cd55a6c5942272c401cb14e2b3af52ca06b07c96b169bdd68b39488e3d48671b7dd38a4c7488a9015fe525d41c2f38c683faa4cdd57fed809e8be9c8ef5dba2788fa1db2c4fe750b1d22a047f609bdc1935b322aa86e3df642f048a6df5beed2eef94751710695a5276bc125a199bed9a70e8556ba33a18069ae7a40f7083c892513bff3e44adcbb365c2c5d276b22bdb81618d7345a82030b6cb34085d04d8d2c72d33cc42567e3d5d1968caa1737e1a436975509062a5f49a73d371a386bc887e21df22723e64761d0abea686aeb003f3f0dc008d2ca92211ee9c3fc06b04fe7421b2565292c8521d612a52a77ec0bd37fe498b2ccc422cb05a6001510992efa31a637914a1cd993dae9ce26bdcc63576f83691b7c37c008eed10a66101bc6b5e2b512f3e677958ddab193d95ed563e7b48f8396a0153a883eb9a7a8d87a9c14ae20af5ab05ae6deca97b854ebb7154972cdb724f04804afa8566477cd63193e573edc04d2e79e778389bd5861ae915b7be309f1a5aadfc16a524433795fa0d474326fc18b0da475db2714ef32dd836740336945517289f541bf7585854611738b5ccbb0fba20f8e59eb798d8e8684222e0dc7a2b127afa8cca056eaad7211ecad69ea58d5b711223fea819fdd764d087b8f7c53b845aad0bee5b0541d66fcb10f99d97688c39ec9a5f0124452d6d294c7b80869c0837d2ae2817e8ba684f80365c760f2e1763417ba080cffe3b0351f8ade2670fcf660f3e4b0f9d9d95b3b7a65c99991d594a6bda60f348fe10889062a80abd217c518c072a8020ca827e3f00a2417f0c84aec692df650ab98c7bf6edd76ec75de02cd5fdb8e920408386221ef02ba3d3ae2f00d9f8445b88733b8f0507ad33c29598bc49eefb4cdf3b79c8c6daad7112b7fd95df73f6db3dff739b24da84003baae96c0d2c229b9225df191341c041c9fe95f4acb3fb0f5f2111dbb00e228a363decd4df7825e055168454dee094de41a72c8348d9e7df7ee2684fad74df12da0e30044d833d8c6720e55b16932740779b10150decd92ce5cfde862eae998fb61405811028359118d7d82e38af2de7049a9df7bb135b93c5096094d6e3e9813facf038e343c6b0664b349cb354ce0110e0e8f1d3bac949c741ca337ed2cc385498516c194ea6b6b66cf299b79bc364a5df6c4eb32865b5acaeeeee7d5046c099d6086a133d0c11c34798b765837d9fae67f52cdfb2dd33c877b845e51974000fbdf523194376fbef40a8fc657f737a270927c82d844a647269ed3b01a5831994b78b7cf6f27b08e311e93d00d16a66a7f4290e85aa42946c28c54c4837c9bb37c21fbaf1e4f17ad51e38d98f175fb7cc00cfe5e722fe6c2fa0d3aea5507e8d7bc98c5b1e2bc8ad8da1437a5b21824e1c73b6082b4c4686bc6d720d89f7c10c2e50c0bd1ddcfc0fdff59056ec48cf151fd11f209dd706587d32ab4feca289028d505ad0088d292c719362aaf87bbe165816ff68fce1e2cb5d81db9c422de069293c3305269d06e9d23f8c36f966960316ae4793d8f07873073ee6ee99a085290d37b59dc41f8cc1d79f06b6bfc8a0ab0d04251a22ee6e2d093a4a34a82970f4f08c7c253143f94342360e7c7dd91eba77dd6d4bed4732529fe4341ab796ab5f6fa2cce07196b34dea1fac5ac5861ea1aaff98eba8cfd07f9d3399308c945ca2840e19331c977642ed74915ba293aded44de9021bd4ba4310bef0c2d79bce94fab8333ffb2f917bca349ca9db1a53246607e608c73b7b37a98071886df9caacc294ea718e17fb80172a5e531655028a2957fae301158a94d36af80a5f8ff15594af4fc5a1feb12db9e8667fbff05e8f648b1a2f75479899fe9db8324f0dce4794e5c9ccadc234f020b5950b4a7d07276674ba086c85f53a88e4cdd11823debdc7bfa1f9eb96f832f0b32167a336ca17a9139ab6c32af317b3f661fd63dac9d6107c124e4aa6b46ca44e723f9c767ecc0763b859f431e340cdab97312541119ed2b1000d52a43bd2af29b77ca0fb00a8b5f8c5c3cc5d86e27e0e94bce880ec1c7e3a1f156f472f710b3d2f861634e0c4313ac83cdbcb19d94d1696495951e64a498812854ff2bb5dc7d90fb78cce123e0577fc65f6977cf9a188450e1b9a1c20a871866b5c8a0dab6c1a52c87f066df4c05f47b7d3441d0e8d9ed0a1c757247b6fc9558571a750d92613cac5ec3bf2e0db9c035610329a7feb3dea09d7f5060b16f7f6cfd6b14400ea32d111cf8124f5b85040277eef69ea376a59f9913050e3c024686cafa08e41687202d397442e3942c52da4d453e5d6592767def3a044dfe71d104de1512fd88862eb9469909753381fa9245f6fb6cfdda0d5e56e075f29052c98538a49ff3202c87e81c41dab504ed3cd5165015a3f3a4e704a96be447fc32804774dbcfbb77555890da6404d38f809d377204461507a1d04c1749836cafe3227ac4490cd3698d44db5784742d9546c0472b9952265f72bac98e22c2d1942905616aa16b7d817fa0866aa6b025bbb7885581244850b1ea38b5b610f0e3d2a2ffa218fe8e983892e719fa065d9a175c64a85a7c04de55a4a7e2c81702ecc0828d2995290799659f00bdafbb7b8ab9beb55295948bed7b026a2507a06a8a8cff66281bdc3efe4b68053dd93c4d9ee83bc8f2e7978472344473502a4ee71b01b279f7342be3ea564bf084b5e6ea33e7dbafe52270adbde575f6193190ec52df324684f94444b45500f3f4fcfe0fd9ba53486c52efe80fb2a49859be96d489252e32af06c10742169fe05f8ed82183b8b82e47a19d8eedba31a25697d1b7197a76b0c160d76eabfda294da48bdf60fc5bf84fc4ddbcf5ac982ac0841f22d358ee84b79ec4663b4f09a488962bcbb3df4305198269add52de5de9243d3bed4938219f940868bc8a14845092f5da302893240301493f5944ebcd09d53993f1acd58bff9d5122978d2c48cb117e43c953a36260dcee5965881ca0b7e2fbff1a20620cdfcb9b5003a0ace8209edb3f61e34de476cfbb3ae295cb0a20ceee79ecf67e937d8902ea6b30aa4a459b33da7b5069e452f6940b2873a3d6071b490073ab62f2e85ab1dcefca9f8cdadfc435220c1c11f68bd89009ba9b49cf5da8c4504db3c2fb278c795fed3619830e536c9af2358e9781c49427511a70f731d4b7afd473002274336f065b70ef26e67f0772a65f4c279eeaeb62b1600b2bc705488d918381768c91faecb4d6e06607c428612508759e1df8fbfecb1ea7036aaec07a57068572ecb385e307be23178a47cc87f52295d344fa4a3de7b71ab09ee515fbcdb5af55ec2473ecb6fd406a0206ff97f769322040e27ba84cad02c9d1582d8a9539762904686692c4f24581e08b410bcf808c1809c1830d555b2b6aa392f84756631565a60e55c05dcb43be0ecbedb301017e1cc3d55e84d9871c0d04e0a041ab4175eb62e38f65edb4ad53adfd011d92d0e40c0de35262d274a3cf4173e14f90aeda2adb9246c5739a7b72e2e5ebe76e8efe75b95ffeb673e04f8c8911c9d8ce31f486b151ab7da061925644f7c3335372855745c4c91df32fab8eea577d5146da6f7360e5545ae694db44a43b667ec88e9125128a35782035e2135a833402595d9444934ebe5c0573f3a04d64295fde821a4166a438a446b7622269b7f00fb34d1ab4461aa82f42b92afc9ffb801ef7abcb3f7bccbc92a4ca8572cea9028654b96e827c2ce627c1e90d48a094051be3ab3ff21a2d8273fac130f56a03ad4d0fac5883c1647192e70cac91474dc2cdf993dced974fff01f2d322f3c910b0470a03337ec2427f21d96851ff24536f5c69b4a358795fca8f9357da58d0848ff4c741ae349c421eea63ae510a51bc2cbf1269eba13b424c22deefdaebf07da83acf09c0ff217911e126fc396b68d53d6f80bd46e8bbe7d20f1072f10a9ef1c621ffa7eb8a84868e12b73d25d0c06aa12242018da533eaa8f1d0a162adb34f0ebbaa8225ae2381ae7f85cde4dbba5cb5a0b86f041141b31ae40305e4d6f437e8867cb6ca1669bf2679f6053633814db537e45fb93f2c9621bd3608a31913f9873144643ea400681626c7dafed25ede215f9375fc943411e8a6f62128f2f90e4ef013bd8e0222fd3fbef38786683f9c0e8d67436b3e1e9a440bee9c6ac3c85f03ef33a1ce1b87bac5124d2e6f995fd58c308fbddc6ddebdeb1b42bcfebfe1b90422685e3167163b32d0bd7961a938a9fc9ececdb43d1c3b274e459d9db31ad5b33e69713dea657a32708f222595f990eb763418159787e1330b10ef5a5cbbfcb0f8cd4aae8f7540565d7eb569529d32137b48996af2375864bfbca8bbfc0c5fd7b3e0420564b3082388d2425e9e706fe9e6fcf99a421090ec12f76dc4d7866a89fe9954048504e3b61c7f33a7115f37a20e25df439bd2889ff05e7f430b0d7eac74122206a1fe6be8b3b2a900db6cd0774dcc2e3cc5547a78ac540c574f842dda7918db76820919ec29a5a1b38019f1b91eceea854e467c9c0713cb47555e0c1b5a0a338c117f792382a1ab02d876418bb924a154a01f99d08a9e771d17f1d9b546eb17179427d8ce2a89b222f5fc771402d681b34b09dac26a431471ee8f28613b1bbd2fc4faf9b01757b1d2edc7a81ce6d337e207f4a78e770ac0c1042bf877da69f2c862dde23e406006e2c7e6f422fe255dfc5369127239fbd22e2838a3f598bd483d946f9236a5d8a63fa48d7d6436e19048f62b467c3c5c1c7fb93f188cd74532607130839f74f7a6ba52fb12c7bffa2d35f488edeab6b8cdbdfaea91bfb299a6da5cfc0e5f1e2bfce3e12fa91154581baa76741c97a4e0ae620e335bdec64cce0cbc684329593f0d4001b2136e6627db8c03c4a5c19e43ccb1e12b01bd408c04b438b6af22712c37314b3186def8ed766a62774e91bd87a5523070334d3556e83687dbb1f009ed6184c2514599b9b753b420e5c8b7836ff274efd178af73d8468594bf2ee521d0f268d05c0548432a9fa1dc6081457374b4f4413e2e9a0931ed07e9b5b6397383d2d1cea520d60fe0cbc6ee41ae882eb4332e09bebc81d291444c46f4de1b26f822c118d1ef8a96570901984e823a496ec591e19899a2d20ef25701c0254b09f7d7e1481d1110fce28befb029af70eab941d9805bf0572aa85868757ec650189ddab1c13457469d8cab65831f417266b33978e1386c4781c7273586fd4a1dfccaf7f280528a37d890677b12437263f6c65ad95198a302345477adc157a5093909f8b182e533e554395c0130ef9ebda0af8980dbfeed094e1406ffa061f81cc9e1dfa60566d5f9d03e58bb4475c440e0e2c7c9a9e37987eac4efb9a6de4b5a4c09833f5823e146f7c03c59c148a8fafd534b0cd231f802e0c464ec908c907c0cc6571a05a989fc77c7aaad2ef893dfc8aafa374a39d7a115cd9ad33cc7112358801b0b2d12a084664ab67f313c834b7f1f647dfddba7a5b71c6ae27b81a34024a145c6e93ff3e97f661adf704eb8a5f48f790c281867dc916ac7d72190efc12f0128f896198de1639449f023d007fe626448399c35056bfdc560ca7621b684b8334002563cbc9d887419d9d1bb808e7860353cfe105c745c7cccd674f7ccdf6f5ff1e80a3780652628649a5436359b323e5e9a54a482a3407289734021026eb9a02db9b429e73402e6719dcb5ee6e04bdff84e8e1489df261d0cb3e54b1d0c3e296a1d2ff2e29a32dc178c1f2558c9843542d5bc81e827465f4a7caa8b54df92830436de39d1d541508005332c7bd496f197bc3b4a2ad7e490207fc3140046d0fcadb9d1ee6f11bd52fb64f59cad44f898d6ba15a84bd2bd2b9f45dacd3fd30946c359679d87367b5d7ec1d2868f501c950c4d2cc39eac5aab49b635a2766e5f089941a06001be58a22492d14326364b2648d49795c3816e4d35b8496611157794ca10065ac07582a263837f716785a4fb7ad0d2854c2b01207e9a698349cbfab1d965f9eadc6f22a3ca36c0d0a4d9f750432e62ff8f4f46d8bd7526ca2adeea61adbeec56e6179981db654b57c5ed14067875314cffbaa8d72b0d913715f76aa186f4436ef8c2386f18ec76c3b2258128fbd67bb8d72e28a1de48fd41728523bd244e12b36619c6d2b598cdd1fdff747f2ecb072183a26226fee60001cc86785e7578fef0b3091e6aa365146a8378defbcdd62f5c855555e24eba209359d908153caf5fc0d62c094fceb6ff553e76becb2690eab47e79062214fe750e0b5c6d949092a3a03c6aaa30ca174cd3361bfa0e0b000d43cf9a4c34eab8fdfe68279a6e141119cac1bb9c036321c42d3256068df16c20a513ac95b230f99752e6cd5e50c579d71e473bbcd4cd3e2a9e3a0fb662238fa1678ad98200ae6ff62e771d840978cf08e2b0287218ac73cbf9874c0665e66d19867327a86a160f8e7f8138c813254e7cf1aa72e59d5115addc118f411102aa50c047958f42ae131015f66a6984acb9e3d2a56210018b095d650348e413df11523636619781d98893fbabd660ac5bbebf94d1cef008198a39f390a7505550ba900bef33ac253d068467436db3c680f907d69a6ef8c4f2f03b8f7d028b16d80545b299919d7a6ea64349c7fd50425b95788305b0ca23ad8a1af34a8dee5ebfe848ea5e0a59fd2f063c144a875595df3daa3ab35e85d20dd039088245a9c94cedefce5f493b6367222659f70a772e2b4d5ce352063dd12024f6e45b1c372634227683f83b05a7668a6629f4f4a1831a047c4c5f4a20a617766b14af6140da0a42846d9c81f1d8ebf18dabad634bc79f884fd04acc0cffab270cd53640a3eacab54d51f4dc6d0f617daf44024c71932c99899f7039ac9b19fec80a10704a5e58b97e2f34b5d0f7c3faf2d1a4267df8a929f5236a9f2c3ce39e2553f84437caae6a87dcd32b269de76f24193bbce1c8f607329eeb3bf979520a1eda34c53e3137bf4610ae5c9d4ff94d0fe193161b6405ba9b588f40b1029f5013fa01b0ba8414411d72948bf3e12be2c226645590ddfa68ef97e3a4ccae5eb4510deb86e81f7448d8703d137e0f74c8fe58054f52bdab9e1c48fa64419550aa75b717eccafae67d001a02a6e07a89e25aea2de137100c6df4361cf0118d1bf9c6a092c7bde02c5f2f9cfa6938845e0a7dd77094f9cc5fc2fb0dc7d17f418dec28b39b80d93dc8746ad8edb9d2fea8aef6c462c663ba114421d167f7e0f13d57a3f606d663c6fcc8daf88043f53cefdea7d3c1eea7d0b8b1dfbfb702ed4cc40effde4d3a27bfe4fa6a1d04283275aaea8b8309d2649d5d4f063121f5582f432b2893cc8dc10d79ba6b481a0f54fcc8c01accdd0059b0623f34b926a495c6d72eee04c7e690c0bdc605bf15bcf3a0b1bdd0e8d0dae5007f350d51a3c08d7f02eb7ec203b457a1883be1b2aa491f2fb070b763d5f8501d6287eb821d7ae45cbe1f3a3ac55f0e0c4b71b063340ea20cd72c0d92120e153a6b22ab7eb2e9abe4f7a9111c045d69b339c17b6d6aa2dec46fc958519a59e3ed886edc58098df2a12fff5a9fa8ca998d1ce721ceb435ed1ba1099e1b4501d4c6e2a7f7ca137c8e82df51fe5281d94523eb26ce5df8d8bbc944dce17e707c836f7e4b8a528b1bd777a7bacb66f17c1a44efb377994f5d9d3c6daef9e3e33ee51bffe1c69de5318100d2c3bbf9f59c0830c4693746b5f94658ae995d6b97681a20540fcb62283683065ca16aac222c02db2818a29b4b85f3cbee1635a3be620ba8a5404d5561423eca6d0ca95a02d0343ac128e5d8bc4d35fb59a994f7ff4a1896800b0db43d4b6326c445573763dca566a8a3c06f545168291f8edbb86f62ecb4a0fdbb75af4f18d6b678b8d055afcf869ab216142013ce684c1097eeca5cafdda61d855df46cfe5a115d300376497dfd799014f6a9b3b21d85b7cee8d2035d8ba3b85354a7c03d94782de3fc185268b739755ae1dc2d002c7dbe518eeca970344c94070cc5f345c140190a5997c1ffaaa83cca83df22e0b3a0659029c2cb60bd53a3128a02427b4040ba1b65c7092d940e0bfd736baf56614c56ec3e888f2b8668d281522981a83b3fad835eadfd1728d3650d0b0daeef45fbadd04a85920d4d9c66f0ffd0e5e758866114ed4ccd27f80f51311df5ec775ee765cca6486550d26bc5b19c1dc5477adf5e5cb51ebc08f0ff528c36a0230d55852a7577592ae29299521cec196c167686e0b79e5affc7c3e933ef56f84c347a3ac8dbc70ab3acfb5856c028442533105a4ecfb701aced2aaa5bf9895ca1e336889e29219e1b1aa157b13eac589607784a196eb5d457b44c98646a88bba3a2155bd749de809545f17854e956fddcd0224a24001baef0545df726d069282f82f414eec20c755e3594bcf6c32381d6dba3aa8412060a55ee7db53492811b9019b1d403ae2b54ce03d3bdc636c8279004a7af45e313d33389c15e9feb87f1ddfcb899fb5da1bd43610913dc1e9b79b83635feb410660b693b68927e73ca79a600856bf5ae6837ebeb7f8e2ba4b715df41e49ba2cc9d904f1f9212669ab1c81058de2bc73de77bd9f5dcf39c5e31d987a369c6bf5ba2de7e58b9f219838f6b14fb5137080771931e207dc31f65a167e258178fdf039a998cfbc3db6abd105432b9103ffaf0753f48bd490521cff18e16b0da388892e2b3dfa24ae86b45ef84e653807bed79d69ff56a33ee789406dbf3a51060930e5aaad073e9e2e2cea0202f5cea8e93fc8f86edd6804cf5e3ed98da04ba920395358ff8f3a5413b40fdaefd21e3f8edecd0bc1acca70ee708a74a6bc2648da50b6e0a2a186f0307f1ce85c0f786c0bcb69081e1f3f8a9e0c49cb29be5e603536c2f01b59b699bbe7cfe9c4dfc3e3195b64041fdb3ce45f3be2804346847e775c8f96775f5f907c0c183bf1ba8efa7b7286d155eb7c9e9e4cbb9196ea68f9156dfeb7b43303295428f9d4321520f3ba9c200d41960b281eae8ffe67d831b1e79f8d4f044080b2ce707a482db7634affc9f69228b85cbc7711f044e0b1f78f09080f72d6b70e4b8ba99097ea61dc3bd3a0d25e25a5bd19d5c8bc5d165e6e452a22b9e051c73c425b75216ceb114ab1864470dc1acaab0e6f8d218e2f8e7b919748cdd6b0c7670be40b069e6e1272deec4d4b72930e71ee3daa0d2d6299825d4908e0c68f61215a643ed4972146d0e304362fa59802647d1bde6532074ff829d1169635a64673a5aa0d0c219577538a452132ee4e65245fa82ea80a3dae692eee39a0b85e55924e141d043967289661caeb68edd2e57ab3e437be133e33f088918228c9bcdeff7390544bb5e023d247b10e3a48031c3c3da4aa3325b8049a39c6ff63b5a8aba428ae67230978e407c0d05de0a1ff55cf15ebb38ce4920b28c29a00144141165f01c726bd2184c9884ebcfbe1032ebf2cd724db7053af6556042486b84d44f39980723e8ba6c8fecc610d298300535631c77cd22a55a835e529395e38ade7cb1085e45ef2037d4887a8069d008399a15ac4745c059a68ff5272765770d6e16a409da6cc0c3bc3ec4088ab3842c674d8fde6b86012978da6778a15d3f786c8cdbf6479385a0c67798e27fa81543c3d08458d4a0a6e2d1abfa3189d8745dd949314f410d308cd671d17d1cdb86f71c0500a24a755022dbd166cac8c044c80a2de6109d2ac4cda2079c8508c75e3a10b49af441c0b348a72539663e837c84d223b31f376d7bafc950bd7e76e6274dba4d2184ee9b4bb70563b104bb6bfbca3b0df7691273a65448e0c2c955035e0b3cd0225da098f34d43c4c2c14ac6b1e8c000faef285d2418c4752a406089702c18c12325607468b10fc03916c0181368ce8a9ebf30ae7643e0031240f55de2502ce432fe621e821acbfaeedff72fd24793ee88ec17212b1675fec274b38c1dd67e11387a5803d04c08830486a64652275a41a1c862e41ddf74a24401fd224d4f06c7c9fda2c669f59cac7841cc784942cff83e01d50bccd8f1dc7b13ed2f26e4460ad1a4ac6da0a5019987677cc91fbacbc8fb89f3d795f72f7e6c709935e451180b2aedad5107bc51cce603fc88df4561d15014fb84398bc01cd2687c9967c5e3bcf03b0a89e24be927c0efff2950c23f77edc848745762fea18d961e0e4aaaefac38f3f62eef208abd94549f7bb2594c457bd824717050e8882553d57986e744f4bb45ef1648cb151b4832d038b781775f03d45e60fc6286e229f2318ddaf0c56ac5e96b2fdf182a6247841c27a0d00cada3e771b043b6480f8e1ad474bb2fcb4d5c4d3026ed67e12d964abfcc3b45842e28f108ab903ce9d45ae06dbfd1de26e237e9c28c17ef1de81ccf2ebe74efd0efd70c74e2e3d6b8f8e9812cc0dc6ec8a7456d37df81594aac7c60590559494feee75e760bce138c687ba65312b093d29398c87a0c13265d966b24998c053eaf76e08082152760e2a35d49063b9f7595e135dbc858d429e3c7e81aef71269a58cdb63820a0c8c9b593aa969b9e2ef2cd7444adf5d730e3fe1f36865421c6a2420ce12b9ec28caa2624601e7b77e8d9d7088c92fa14defdcd20fffefadd703e62e818ecbe8a744b8d13fa3d0e0fc8f9156b7e99d2d49ddc5646a3a73787a7115ee2e346c671df8f1abff7ba51bba57fdfe88ff60719ef1bacfcb4433cf03f7dedab389fdcd7ece6b1bb21713bf7db9e3799a4fb46bc82ffc852326387e85d6bdf63b6387ee375d3e052c0694e1be8b0b5745bc80703d65bf64559ef3be2c23c58a95580dbeeaffc04f2fafe01ebc0d1d6f720d3d159ec3f0bc78a2a13f8a86c52437db4a3f7c90e6d14a3af321463b511abb75a3291e453681713c7ed49e4f4bf79bfbebe5c734b6b4008c6915159a7fa23989ee3fbefba080f753515fcf70fea2d56826dfbf62bde14eb2d7c005db9041b305d78f85c7a6d1b7d0da09019563848338f9342c0fc6671764d56b4b29155175aa7b063aeac5c912ddf18006aec9f803eae4d8ee35c2db6aaf61cc790a118b9ce7e2084c45577a165e0d2c667b1b1c8235fb3f46e87da3209cd4320deae6f0809da67545cfd285ac652733e4fe09ab6e74cf7494ae82b373a0de5479867ae284dbd67b35a12166e906debd755942415cc61fd88de61dd206a79fe6f5146905df91c748b81a65121f0bb6cc54aa6bf16839336d46ac40f64e9692fd211d25b649265602ea89306e29d45f704b4933ca4d2d813fdc60cf760506c98f0d17127f1e16804ad13bf8cf587245bfe2d458ad71043b94ee149742db1a1ee2095cb27e81c8f88e651a999b1f731393a25720f0d36a47e69a581f82172a22c4e9d9196e26978f35080533193f8b48814fb684a9d4d914677204a7122bc2b23ea9392891509d5613d28a3914de92a30afa10b25a570c1131a565cf275213a6ec616ced9864a3b18a3fea369cab298a94743e910752d8dc7e3f5cdc3ddacbfee848aa024f7cb29b5db4eef04a30df12e3e9e2de356b1288974cd81dd4bc2a74ee762ac8031f68006d696bebe920471766e41604f1319071e5d298f6d0338921eeb1a7fd9046f47dd3cab5d307c902a21f949925a3254f093230356816b7ec24e600ced4316ba0f5f5d9284a0085c51eb30cbddc14eed4685d5401274870ad5e150c2d36ebc7fac9140bd1f62ff0e2feb642a6ee213cb5315767a0c12bab73118f1b7f2d09589b21a05eef8c102fa04aeaa62cc87b4724632d3422ccd630466d676e8a6ddaf32ad3ec031e5692e3b605da57e6c817ee2e3a129ff0b6894ae8116962dcebc26ac9a8622316ea6770c951354e1117e3ba74379ab4663941be9a3e046551116551d843de26ca4aba8cb44f0bec4d5cab2823aa9ea25f27e416644efa0a022532af4513dca0857435bac01a263b97b6fc2cd07e9b18787fbaa735a09f5d913be272a97752cfb6d8bcf06eb8702bae5e9b60912f7fd378954d098034f1a9292b4ac3ab384b83fe5b3b29c2b28b9658049861681bbc0fe4feaa6495221258ba61e41401395b691b41483ccd789698ad0e54ebbb87eb7614b83a6f09308fdb2057c2779d11b8414e2e2a3adcf00e25d8b52698a9689c2754138c1c64d9c3c88cf5e06486e017a732d46c8695c426181a2f2a8114b94a00b6e9a2e32ad90d1e322b54760007151d71e76bbc0f5fa545f9a4a7767f634afc55ec27e5f4ad096e58fc77b0266af50bca0ad268b08716f36009b60851360102c3dd8027d1a189f09ae5ca32d864ebb62218b9b45b73de0a7ea9fe0403c1d2a76b0c1a35df90591054ec32c481db91f281b8f3639966a679197f0260dd4bad4dc48ca574e2844e353c91b0c36252cc35910f286130adf5aaf134201c7002db81500b62357a8b6194cdde8a479b167ea61b5f285acb0b47a7bb3be6f2dde6d8d6ac4ca6dd05274e1f4bc4a22961f034bb1f83725faf0eff76d55fcd244c0d2690b30524feb4ca6868f51e9cfc41c19a4b1b59f452c75f08d9be54e9dc5a30d0952a83d1975c4b3962a7c4cd47f4d6c985991ba44a7d4e9c50fb7814e87658410961275ca2928a7eda386eac44f3f853911c5a7dff51abd917be5cf6701eee274a755869c023eed49ac07fe5db17a02aaa6fe858e424a874c43296a54bbc74df5b2a782a60f5f01d48c0662acf4d5c63a248fd39b35672bb39637697cd3761b772939f56b15b89fb9e8d60b1b56559fe4ab9adff1d2802d4145941556ea6b266a31dc3c7e370dbf03ca9a995939b62b0963f0839fe09533cc57521bab0bca12d756f6795b3d8135a0e2babaaa921eef8e1cd3d705ddbfbadd0c39105db383d4c9209786fb5cda30438f28ac23a6140035879c04f70511c790baaaf32e5a9bb36e0b37a57ab92e05b1d17129a70029d007b75d652e535cd4178698da79a1672789885c4eb1fbb0d8773fb3aa9291d6a50b1894c6013f3ea0773e0ce5ed526c464304350993758a184cb7d899475f951fac3b872f2d2567645385c4fe8016fa4ef675adf4e476aae7a5e795a3e88055e84fce1657253b2b43cf974709b73d5596202b59f0fe0d3fe429533388ad0ea5941f205859a252f5b88bd6fa4bed06ab850101d4491f47ca442110041c2059c84058dc00fdee611176a837e5ddbd5d3e0ce35f7843e4d2a8971488f232e539380f4600d0ff0fd420c38129691bd6a0b66d4f65790fcfd5a6bf901fa579b66f7d96862b8d15af03dafdfe27f1330781d823cf64cb12cdb2c2d05dc8ebc91a054706ba9e782e7f3365b3084ac13fe7657d438492b9c231e54046e3e0227f1da675ccfa0d00644f0904f0010f48c5ab059d29f70b42d25e721649a2591cb3de8fc5fe00ad87ff82f75ac86b45689f9486855915f76f817b01074dc34f78c808c62dc47543641672501f35438f263c97dad371b3c25b16e47521b462ff2506aa120ece93b0f80e489c27ce41aaa41f72554bfaf3eda0e08f810df62f6ea10f2a939bd7cea9d613c10de3269e063b16120fe7174dded8423d1d4fe4b16a493c524e7458915982e72a024e763fbd58226e62ffe5c8b411dcdbfb47c7d92d0a6c9541af287bd2db92ce7509a97fba8feeb02780852010035e196709d8796974df3ff6c6a841cb88fa67231db691b0238b889b70da38d72ffbd47f963eac9cbe852fc76536494eb3cf2018ba054b0afbdca560d1cc985622e83a9ecd536a2699ecbb54e8f10d57a8c071347249b1afc883e4846f2065c1d8817a1aafdb9535eefa94d466a97de32c1e20763ec06944ddf0274ed4c15eb84c7a737c6db552418506a27aa1528929b638075ae8cf2c8d9b00640033cc5128bb86a331f93784145acc7799382e341b97577b8d7a48eaf062f1d2042c93adc3f8aa0598bf92354007535dc64e2118b721a646f0787608c0329baf160f7843fa8242f145c357aa2dab881b0513f97939b6f0c21d728e27bf5d9ec753e54d8335ef650bfdb4380c2c4f2fb553991667dc4f38e0d311b631920e9d892ff74472f031e8c3946e73f1e2c42c62fec0fcf498ac8a15686bff7b86d15408bc62aa3b13950c6d44e45ab9cb3571a093ed5379bd65b68c519d3794cbb6cc6edcd9a0d3eea2f17f48c45650cee9a2d8ef0ee2b4266d7070da68771cd74ab9e37b65031216facdd2d196def821769bc96d5d6f349538457c11a98f7467d1707f3f7404ef6b7370f6496e8148122758331d0b46e70328a324a04e7c0ec5c1328a726d48e362c30c0053532b07a8ba1bf00fbaa8e93682e26559da5e2ce23d21845d31608cda2939e59f43aa9b7fa8ee2f0730ff0c91833e5c26f7eff0fa16fdc4fa071a1c1473c0bcbc42f2b1e013352eeaa434cf0ca81b427497ef68aef1837af3de41e083a09d4b673c7a80c4e173b1108f054eaf4c0d8f51a9a5b85d82ee4e9cc289904a37ce3b7dcbfcff26ec10130b20446bb6cb57a5ea2114e4b7eb8d48b1c6d659bb8f69acd1168e71b39c21993c1fcf04843531332c0393a4cabcc9ab57ff4eb449476d75e757ca2523787ca8711d61065cc8c7678ad3edab8852007198ef909e03ad400c07e39afd520d6c399c43778a8ef02f18a3bad4c1a8b05b3625c533cc968321cc30c14313ac99af21cf0ac5f565580564162bfccc0ef13a9a652e058c87a6458ef99a98fbfaa3f9c76361680670b7b83e2248c1b73db73d96c92fdb464300b313f83dddfc16c2b4e7923580f63cf55c4c93358c7e4c9967f96e89b66a1b82e49c0c4cc316c8e51606c5f2818566a48974014c6e495f0571cf95602b175c0b948d85994d5cb9751e3ccc443a3cdbabcda4d50e4e33e893f37a99552de582db3ded76c5e17964385a12d5306390e201e9e600bd607674b99f8de4a20a8e4aa8ad4a91ee10dbcc48862e687c052a80bda8673ad998321cd6035f1375a7320d65a55e68fbfd841913a99421ae7caae04f686982ef2b1aee9bf6f4638d44bbd3801974d3ada816042ef19433e1563420edb0b119b1da29486596e2c5421f1603a4b79781324a98bd9c6646a2f095132bd28f251c4b2f55e0bd4d144433caad5b81fda5dcae47c13283457ff4d2df94db242a6446090eed20c43be7d23bb64fee4ebfa5bbae31c867ea052fbd88197562638535233b61157ee79e2b10dc7328a02e26b713053a4305f476ab94e7dc421a66817f5eb26b47214deda0d392d83e6c480adb279496eabc8d298c46807bf020aea8fd082165d1b4bb2fcbe2eb109d35c4d9f960608c4c17270e67722d6060ce10160d84f66008410604220bff629fee87e8c1d3ce62cbd3582da4511461572e819aba606c44cd50635a7f28de4acd5953e0d5fc6289ae30462a7f0628b8f717eb19902213db26b77a6518adb48dce81e53566847a18052c4e9e09a6b62890dc089ff52ed19e2ea9fae7d7ea1c03296c4ec2514da8bed72ecd51199729f401b146912ada462fdb702df81024ac60278e1176828c55da65a878eaa350100f1e6693421afdeae579d78d4833c009e7b27738b2e2564985bcd162ed197e9ff9c160aee2855ad4be173cff6209657f1e191356e9193d0247f25d4163cb44d7530f23bf98ee5d85c69355b0f9efd11b86eba9e1ca1c07bff1e166b92b946c8accf51406b032497756ada09ce1322c9e7947824122ea05645fe403f91850b8148f23942902da761ca13f3100dc049842809032a6352ea98ced572608122bcf933025a04208126492c222f382bae92d05fd7ed233a1ab47191756b279d39d40f870bd140def478b2dd9a937538ed5b7fee8ff1171b7e031ade09cd83ba2b98f60b34c328eaca24460ffcb31691d53ebd7b417568f3c51caaaf42379eee253d5876957e2281e1c2f75ffee73557deefa955477666ba0e021c96c5b1bd13e194003b378943a38628c9263d50711f4dd44c2bdd14208cb704fc2264748f6646e4dbdaa5e8e71a97efeaacef3e1dd0c2a1db7be392c24217e6789499c62a738425313b3388d227d358941424aa30166aa1e3869d649c78eb10e87922e380fbef4a76229c8b05f70b25955241d6a496bc208558c534001abc20e8e21ae6398886430847d451ce1d58697598efbda000899f06a83fe53e1cb83b681bf2807ebcfd4e128541b268c63fa3791ad20a7f0b62f1d918fc3c9f67b8048e49650b23e63a95e5cbf9c8bd57000aa3aa69de053113ef19fc514b7410212ab79b1019a0a9d7a57abeb13484ed96dffc2648b5a651f8803fe33308bf6a07b28436b0c2f5de05a48dbcc5037a6c3860cfaf707c27b5111eb4c26a946297e6860e85a16693111c2b18b90eae58d6edc385d8209e77071ccd1002794c104c85c4bd4d73be0e278bf7a25e6c5794ea8b593a84d231b9ec4765a0ecddaf2fa89e5b5c3cd3a2cda432fa92fc016cbd2ee1250d6545127e2786761cb06e2175978d8b687681498a2e8b89bdb588a71dc33fbc531647d2fe2ccb331edc8f2067f36788873a13713b9e3b475d5c48eabfa8412620d3e789f02241233f9bdd53233112180100c9bb2d8ba6f933102170e76c632fbf799b3518669a76cdba3710c0140ab99d018653d7a7b8cd192c1d360442e756829c49897f2afc2f633b3a9cb8f94fcb883f5cc735cfbe790a87ec4501eeb32d7d31022bdc420a84d590bb17bc14ae8d61360a03c438a95c30d716e6c3be6231216e6b0d4227b072cfbc7f14f1afc36e96c32233bff30830baa2faed8494386d1f89b312367c76c8f39d99cfcb14350b25cffe7bd08bc184eeeaf7d4555b7f9a6a8b3a26a70bee54584bb9a9aa1497a3e268d16b3914037f585b8632848cb37e84eedcd02fbac5effea5e1053391c0ff6bbebcb9f31342a13831ae3c6f63b41ce105181374ccc425045909c291d84567cb6c9043eaaa54d35acc07d7134961ef69368610c2212ba24c83383f919ec2d404151e259a62166f257bf39bf5e2c7dc1d1b5cf4f68633c1f89058bd52defa00f3900c69698558b3803078ada6747e17ffdf55bb2844058052a89509533ca9d528e35fc883e444917fe9c4b0e01a9058233454d6395b3e3e7b32e595bf09420a368cf5c5d566c9f6faa3ee9ad6cfdf58ff58605893867e1dc4a1e2ab07c041c42629178a6ba4e02217290ffac44d6b9b2e425b87375c89921f373a361c62e739da3ef596da6a98451c781784ea8f0b2270f1bd49b6f54f8351bb6ab32fe834cbd18631e81ad105d48f00ea86cfedae400620b0abdcbfe9dfe80f88835bff7ec63f7404f6960b4292fa83fb567ff5072facc7c65c50af389c8b0abc7543a8549d59cdf0163627cc3415f39b7a30ebe976fef6a43a5418ffdc65b1b3cb5d9cf578a7e119aa9252417a55a95f73d3e6a0808667d7d9c1ed6a08552dcf14b45adc6f3a2ae0902497e75a02822a63931ff1109277e26743a0dd99fe474ab703350564454d23544fee1e523c74fcf351d6d6e50df45a8dceb9c82303802274ef711981c6d7142014592ca03f7ffe6ba1e8cde5d7e4a1a77a81f0b2c0e02c935a30e1db4e192078a10e0e63360fa80a6acdbbc7379366ed67d72875dd44bc2b7dbe57bdcfd5c18e02c19e4c7355739495f9f507c215dbcfd0e7047198bb814bb4d967bcab7823484aa3b1349243fd552876e39a54649218ba6685465917ccaf26ace03182b9f9798f9c320853dd8b4ed3449c73eb0bf1b93b9434b204e91298c651e4f692b394eff8eb9ade5169a4300b51e4bc24812a8df0041efe8e57f20a392c80d4376377a26b97d52edaef586385ed345a232c6ba60676537f82aa660bea58404d13b3edd9dd222be18afaa5a040f013a2422f8a1bd02a43e89174afa0be18b1b67730ea98e5c0b0b009828979344123d1bce889fc2df2ce96c189b87ec3bb78a7f30c21d3e62c3e22c4fceec39e618b919e23e4df7ce58520b43c9bb00dc0c417ffb70cc77d3ba2f008155869ea631288c230055aaa3ac17df46aa161ea7cf83de18fa638291e6924a20d7c83fac5fccd1183a8eca260c843e69a6d884f688ae5babefcd6f215ddcfa02f1af4997931f982b7b941dfacce487116fa3dcc39df476a5f1bd74f0893f82ac055887162be67a6071240c4aaf935b1c38224aa02911d3f5d9f875fecb79c14663abccedf9bb4fe53326ba371387185e4c7acbf0c40898cfb1629463410900957822a2c589c3a071a6fd7d8f6d246c85032a22afae5620ce34a30ef27e7d0c748a86e4c622d7228be073fcfe2c1b928d114a44ffeb23d9281aeb24ba0b8074a63ff50c8091be7d0b40810019c1ee358215d5bd463cec5022115f82434b97d8da5dedf4475d42a4dc7bcb24651b0bac0a770a1983cff9cc36187fbbddfce8e6be9b7bb8f9879b7f70e56fbe804e2bfccd47e814e7370f71f3103aa5f9cd45b879159b1b8fc3e16834af9589c3e3aa35558fdd07e3dfad34da0d406d98dcce9eb6a1043a68e040d204aa091530e876c7077dc3c76a585855a9b9f2d9857295d891cf18e30d280e9706cee78c8739dfca54ccb852854e525856b63a7295182d3ee79cd3ec78ec25de4a63e6b19ae1959a388ffd08d3a1618cb13543e675e62a0c9a1d9f37f89c331ae367c7e0735fbe95d9fabc65a6c98bed76e325adbe3c0d61b164254f0e05543161529a712769c753c6b79b014a145d26c5ad7e3dbedd6e189341f2798b0c9cdc99b41e68798183cc8e28af24387255f398c9f965066ce93316b0af6ccb85a1e5fce5e3695ed268c17ce3833621365fb82f651a8e393e1fcd02502a61da04ae480cdbcc08a2258953054bc4f839bf7943e2317e23e5b1159fa4d2866412a4abe418f20a0e97cd1c7bd2c489040d21409a7096f8186337790270451665db4084621a03d06aba4f2785c3058d465b83e585cd8dc7950d90221b378f1d436d33e573d5a6ca8c8fa0abb1246598821e7b081f8fabd27ae5c6cc6327a1d322318c69fc52930eb31539e8e40106ddc6077d3ef8f6e531167bd2414c4d18a05b965763e4b39739a39fafd4847d3e7af3c47dba7acb345a1a168fcfa4217b5c3da05a2e28b2c78c9eb033f90acd92cf46b73a345a99175f5765d48cb932a3f521841e544b72500d9128d53042a5f44e336c22e9f075b66587123249124b63c40fe21e2870da2cd14ac144546f46c6d068345acef97643221f9381e101bd2233454b32280a0e870383072cac4bbedd7038b47e3ddde812e2f47487c58c0ffa704d8f71383028acb6c0681560435152c5ed96bfb68c014372abe816d815959cf38f9b1bb71b1074855645b78e5ab06c7d3da5be217b63823b93345afe916f372e61babc8c78e0c5e643971e62bc246d7911a3e54b11f40bb1ebf7a546c9148a2c7a9c64e06c90c7651aad2b2c6c6b0b514c0d0b758b8b920dc7dcd13ffb7699e84ce6fcd6ebc096bdd6a0ee16cc7f33f25c2f68d4abedcbf5bca817ccbb5ed0a6eb017138284aaa5c4139c30075410ad2159559b1aa001f6e1b3aa042c597215627682463e494dc888a5c3dd973ab6ed5279392925498c007724e1d3c37e2ac100eb549fa7cbbb9296d607969baf1b809ce4fb149cfe3a2d3d1c3875ce7739e71f6d84b8c99b01e57a1014643cd98620d2d31367ef879a36cb6aa1de9721e7b60281eb53e7315bf6454701bfe3abf1c67b8514ae14ad3d90f3716869091295f86b714491863eca54db6c1a1d3058c172f489030c018db30c6381e63ec75e6b3571722063e3048d8b96222b4e1e4852ee79c8f8cf99c73ce39e72d25c0c22ed882c70b972e305e521f72ce395b6979726347ac441560d05d7cd0279473ce432f9f73ce39e78c054d162c8fc3681932c6b8e2cb5866a8168d665fc5aeae0d8a4048c4b048c9b0a1c28b2b5dac70edf8ec3eb9c865f6596b048a39613150e8a8e222b1149473a693f3d6632f71f1c863240c0314ab583953b462644bf14a52175a972e396810b7903c5af81c198289180ba1f3b9a855dcb275a3836e0414316eee1461b18788d1b2f031c225cbc5b19885e6f6d96d42ba232f401737596c8a1021eb5a1124b58415e473ae452caf0e741baa4c2466f6f84ee4b97acaba326a69629580683a308d8ad10c635cc318b309f2f84c9e66345a918a89cf58cee42de70c3546c42bcc96a4996c55e4a524548f0f5650605caa158f227b7a48e96eb73660707ebbe1704f61d6e4d07aec423a1d381efb910e398f7754f9f2a081302e1370c4cc88534c2194c7bc3edf6eb71b10bf81c70b8eae0e38f48cf11b082484575a9c5991630d8a9bd4cd69bd33c93bcd6e3739a80d276a9aa006d0b4c5e8d463e70425b57282d3c1e31b431e7755dd7c8e14bb8a5bc4b0ba4e04e59c935c9f6f8ed26eb4f2b35b0f66ef993eb89865a94eebd3f8d2aab1a3c699c77e44eb9908b2190e8dcfe82d67195d1e83b19a3104c3d4e231d0e3ea8464b283c4c39ccd4021c3900053e3842d91734673b5da3263001d605645330dacaa04d9e2010f2b1b2d2d61a4bcca109590b81046a355c5113e9a370061c9a1860c189aa92c9b84436952779e888739fb074da399e99005e05382a4cc9a275e35d4ecc9e59aa15028988831ae82c3e2f397173b60e306a3289a638c13728c1d0fd00e436bd2603144aec4b8e1709ae1c6a24eb3337926cfb2d3ecb62546f839e7937673df0f3a3c7b7cbb65a84ca35930753ee74cc37888faf85ae306e9e50b9913ac07fb608c693713872d17efcf693429da141556ff7caaacd3b8fab74bb24ef3a21dd11e321b2bb00a4cd6672ff339e4b953f487dc56f5434343ee1b1a1af22ae3b1078f31deca92e5b196198ffd088f00e63cd44a68156b03054f18176cd084c98363c841799888d26858706461410ee073467bb5986d238c64f9e215e7848c2dc37a5681caed06a5658beb0d079b9ddab31423ca4d8d2640f094c93828edcad8e79c3fe7ecc167affd6b91339c2b9f73cee7edb6b51565eb844d48e7e2b11f6d15bd3c760c3e1f8f9dc35695358f9d834e373cf60f1e7c30e3b12f006f5921f3d84500d169ddba22f5d847e8b456d5e3639ba42531aa73dfe35b11298cb15d3ae16509ace8b3db3a155a2afbec479d0ae073c6448c7d3026f3ba398bb32f2db86c60c363558ed2501a8dc51143ad9211794c7394c6c3441a8d85100d407850c1848a870d3643f4e03b786c0b9b6d50b19654ec291322048a123be60230c6678f511aea417c4ef5309186cdbaf5ab155e9fcfae1a9adec73bac48560959912a575399545675a34cbf4ffdb3b5b134bd2c766ae46636bd249643b31f61c448e4e9860f2e709800cd2237bd149e997e939deedcf43bd6697ed3f48becb4d679d3eff1fe4640e12155a4326a71720568dea2e997aa539d9b3f6e53a7446efa65eab4c29b7e8533def44e765ae9bc3922851e1d554d3f5a2471004d6f6473759add5c4008214494609550bce9f3a65b615b269306154534dd56996e914a6ffe88753a3466cbac99e99d5491942c50a3cd19a41e13617680e69c37bd894f6f7a53755a7bd3f3fd81608f0d33395c8445a68065616a42bc1ee7250e676454542404c8df32fcedb6dbe9745129f85594161622a2e1fd65a820343e6bf91ce4cc67f7e9f4c3639c428c3fbd3c5318f3a7fb74aae1878680a8f90b39973b935740a45c600ad12af6b6787f673268f30fea1e079df7415f053cc4383ba6f31846fe618d28bd8965844b832b2378b65c1dc102769a9d5903579ce4a851c3064a4e4e461228265ab0a83489c3c1cb70aa06a8a1e82252feb492e177a3cb06182550c24cc1a9488ce7799a5752638fb70879eef4f6426ec3f342b61712729f90901f09391236044892a383ab245e32785c0ad9e1fd9dc92b9f3643a03cd6e031367b76cd79d638cdce246ed1e3cfdd9f274651de9197999d2c481e4f5bc93f3fc8c1c74971f64eb33379c2b95d21c181cfb2a020b7817d5050f6a0a0a0a00da6e0f182260a1dac3260d09b0fdaea3af241413e42a7217450d0d89ba6d9810de71fedcb59a453a876b0d8695038dcb3385c2f889d96a3f20fdccb51f78319ea08688f5ea82235a09a9e917294283343d17a41ddd90b1e6520ee05f3f0ed96d1c6a3d9669bee0f0fed08162e8cfc6053a585d40c6030937dd006743bb3c53ee504538b3753c24c71736b617d73e64c16f1f2048a3069d8a9ade6b9e6b64e6b2ed46985afd5fca8e6187c1e3e7ca0e76bbe804ef3d7bce6228c10a256abf90955bee628748a7eade656a956f315d4aebc5250a1d1b8b038c01597addfd774005dfe2cc09fa715be4df20c4527050c362978344931b6e69833d49617176c29e2d3e1113580342529620345538c36f9acb940310f13f110e32e341a026e93b20d6dc48a94bbc7a32d0a797f0a10e3a20ac712d59958a7b6cbb70799755a953aad42265b53a7edb6a7a0af9a5e27d74950d8b707710519838e1549e86f55f1db8392eecfd644ec5aa2d245c309b03d48a9d3a0a64e6b54a77538154484f1ed41549da2766a7a79f0381b4b9a5524dcdfa828b16f0782babfea35a7c8238b4d12293380ed40519d5a2edf0e34bc3f0e3bda749995d9881303d80e44ecd46ef976a0aafb6b009c2d3aa08089a2c20ab01da8d8a9ed327a1ddb81c23a35bf1dc8a9a677c55d01f4f4ed404b4042a0a68a54e1db8192eeef0a83404adffe533c765ac53aadc932b34edb7fce7e9cd4b4e1c0f9a1faf61fa99fe10fb122ddbefd07eafedaec27ea1f30b6448cd493326f6c00db7dc43ab5c66ff7314bbabf6ac50885cd892566e29001db7f943ab55a844c3f4d9dfa7cbbcf574dfbebcb27ecdb7db87c8c3ec78a64fb769faafb6b64d0a7f8ed3e49f757c1a0209db0691167c909d8eea3d4a9cdf2ed3ec2fbe380eb28634a53978f1fc0769fa64e2d966ff781babf11508e5728ccace4214304d8ee13d5a9e51a4ef9103b6df7a1eaf4c74e4ddbcaea6c2c6956918250a8fbab585c449579397a395d01b6a3519dda2bdf8e123badc54eabd1ebd8693b1ad629faeda8534d5b8890a76f47975021da549180be1d4dbabf1e0651a56faf55dddf0862911a5774c894dcd802b6d78a9d5a2bdf5e3b22efef83225be66cb92992f002b6d7c43ab5559265669db6d7ce3a7552d3eed183eadb6b529d0e6bc48af4f3edb5a7fe9dc964ed8798594da926b4faf61a53ff6cc076da574d1b070e2e1aed58917cbe9d46d53fdc84a5d414353cf2edb4a9fe5500b6673b356d124de2ecdbf358a743d9ac22a1f7d74a4d82284dded0e952e44619b0bdf89dc588434d9922635b3980ed99d8a9ddaac81872a6e430911c3a01db73b153ab65f4eaf4d8697b0e5bb366290bfb576b3699541a91420b102db1274a929880edb8d8a9cda28095b2a82534329abc80edf8d8a9c5fa768cbcbf11515ca8c01207059e2e32c0b65492656651674e6a6acb94a1face1da774e9021366080c60fb29d6a9bdfac6c0e90a718c972d226380eda759a7d6eadb71d2fd553c778e6de8404993030b68ab844c4d9db6e327dc8e7fb463a94e4f6fc7434cac48b46f3fbf6a6ac18039c3befde43a8d54fd3b91adc17a6329359d431ddf7e4ef5af066c37edd4d45a599d7dbbd96e26fb57cd2a1246de9f2db2c0c60d25214d72985c01db4d62a7764ab1d36af43a7ad5f87633cc74aaa91522e4e9dbcda54e85bcdd149a4d15e9b4c3be4006122966926598a400db4a41dedf88205352e899522645460cd8364ab2ccacd3f6f2ac532735b5316c0caa6f2fa5ca925891cc6fdbd42456953aad42a6b2e9ce77856fbf5f354d41f5052f57a7356fbfc6f67bac48e5b7dfaafbb3493b1f595a5f8c71ccf400db527d8fe0ab87893234c25ccc01b685f2ed17eafe8ade3ce9a2b18718a50cd8f6c9307f77b653530e90391beb1428d92588351d1472ce60b17212db026cefa84ead936f10a672e820736407902fc0f626766a892374d421f3e48e8f343f5600db3631e236dff8dbdba9a60ea855965ad8209a00452d2716598a68e600db32f9767bacc9b2767bd6a9939a6e507dd63778eb3ede6e87dd1fae0611f757b55c71a170e2e4040d13d02ef98a2574614cc2a4a6071e604f0999bafcdef0d62b50d30dd567bd6dc72b020806109d0071d3256c889455f2d50b111d4db8b0d9b2e209b05dd7a94df2237834617d3183658e1422b091fcf9ed5998eb65a10474bc590296660a9e33435b8f2ce90ed8ef72463c0f28918343059409154880c17c24f70647160b6ea7c4ef769eed80f99dfb6cdd69f23b9d05d894d1d25a0363cc146b44e8c8e7cc48849985c9c086ca2051f5bb0f31a4ace46c0969a0b0456e3633b95caeb7ea28fd2ee77240b99c9e5c6e0e99df79b9dba2e3e4775a6cb95c2e97abe57246961c15151d1d9d3e7e5716e5772eb4db9a73e3775b9ecbe5d05c85a3b4456448990dad2c39a95cce6b9757ac64a8da2197cb55a4db5b652f7e97cbf9e472b99c9b209fcbe57259ced8ef763b0b39e9f8f8c8b11f61f0e112762a5870ec228c80f156ed82635fc1054a42ecb6a9d35b8fc7b5c7eed8ad14cf7155d11ab73c267aecf6d869cfb1db307bc68ad924766b76a5c2c6e3dd630c1c7b2f616fa66ec28e62cd1b1919b98f4dc71b195da5287b2323230c30c0e084d4171515159d30fb22172a4261e58bfca8d3fc4545bd5ecf44d7f3783cf72b132dfe820b2ef0bf70a1f7c15626897d2e672361e3732e94731d89339ff3a35c09aacf39864e0fe0b360c1c29e16bfdbed767bb4fcce8576ae4b82f13b3fdaed6ac0a3a3239c775ec3dc089b8a79c4de84b144724544e418edf099dcf9d1512fb8dbed76c5ddce8b8af4203f97cb610b361d082b60c4007b41a4851860d0ed900ffa70ceee8458e89d6646bd3359d4f3ac6503daa3dd2ecfd6e7bccc59e969fa5cd1a6d35589597a1dee753a5dce75baaa3065363452ea73391df1fecea45d6356df399adbe5725651886830c3badc8ecaceeb06f03addb93ba116a01b83a27374a7dbed62987d91974545bb5e19262ed115150df95d96db4f9c1d46be2be29d6667b2a8a88cd154a12843096b9063c0a038134b0a397746378a5cd72b2a2a6ad3615754c4cbb0418bccc68db1175f905146503a1d151b032e7c86c23643757ae1ad1b190989bfdbed74bda0fd9ddb7e3a12a9b6a6a8b91184a6235bb2f322477745bba2dd95900903cdad30aa2241e93c8410224ac051e369414fdbd168349a7be894e61c745ae1699ea18c7a735ea7d39dc9ddd58d1a8f4d616ef86792066ea424c9f1d1648a550a421893e179acd3e97471a4de7a99ea78782af730110ff1704b065565ea78d1252df62cafd3e9686ee214b96eb72b2a1a83e4755e766ae1756ef1991b2bca34e1b982ecc21608c618eb7ce7a86ea7739cae779a4dc9f51cb014551c43e308671a6d066cd2864f1ee730c6e713194fa3d1dcc76d4f923ccd85685b4ff23c4d83a7d172543acfed763a5d1a0eba0c99667f60e2ae878778972bca19e58e5cd70b1ee98c7011de618cb79c1887702671cda5d2e58a96836a5faf5822cfe772391c1191d6d2952722222272223f227227c6c7bfc73859f5341a9199a3d1683404185943a608a50b0e1760d09ff6e383bea7d1b0d368341aadf8b41c0f1373b91e26d6c1d168444429645d296993e66aaacb83bac4c571091a0e4c621caf98ace9509bd4f06ac2e6b1937045bc7aec269c80c29513a7c7be824e7f498f870988a2e54a16251e334a00511f8fbaade95117ea343feaba4e891cf52314759f07d43fa0fe818d477d0121748a73d445407d04d443a028ea278c79d451e834e851b7a85b25d451d0a9ce515f01ea59297ccecb4e3bf85cee96bd4e870505c60a0bcf910d67a30acba899747f67d24cfa1f36486854643cede6c306470e87cb5d15ada0384546a5d068408c3cea256a7565e2d12c5b6ec307b85ae4d9212cc3a3caf63051da1d9cc356564c8fa268a6eaf2c1e0cbeee1c307597c3e7b082dc20821b28b28e104b0cfd951d02991675fc109252bcc6e9b2c94d867dc679d67b752d9ed9425f6af027389e18988c2605c8ce2f41863fbb95c918ac5d3ca63d5976236c81c2e5e60aa8c9958010cbae5f1411f0e0a0f73b9274e47385b8a50a86c398595c0228448912063a0b482702b8870452753b88a4f5a00653499c7671c2e3741d1844a1791e9b1579128f605136940493039c7e170b90fbac8a4cc07ee2b4b3d5990fee6f790c127e96d9a165d56dc002b075feb902fd58081078fbe66ccbb6ef24cf38e00013b5a6fed0be4e31f345a7f685e3bfe1946e3a11dd8acfd01c1040cd94d6f9e50fb5ae793db67ab7936bd566befd345b8d5a1609e95abefb5d5042afee9413dcf5ed0040efeec6e34f941d3d1920cf34cbfbc2e936f427d396635c0de264a6635c05e1fc5bcc6d86b1fdc12e0aed56e0def6e887bfbde019ca679817c1cad3fa8df9cb39fc17b9d85d58077bd79d9a8dd0adf56bd92d5c00c7159580dccfa262f5b61fbcc33dbbf3ea89f3f20988e0ef13293cf873f85babbbbbb77e3656110b3200f662153fbaca5aa1d72d087cf3ca1f6d980d882f878ccd9661bea8de0c3f7cddabff56ebda04ee7b7dead77f3da3fb73f20dcfa478411dffd0158c4c8016d517bfb6940fe5a3b9c29d88ea074edb340745538adb911f61a8431165ec245ac243c9367d959d2896cc25115a9fc0c3e68fc23c49f6e6db787ad96abae8652089b8e1ebd9933709417d43dce504114ca6f137c9fc1eb0f0800e0e127fc23c996c19b32f853a72514fef1b62c3f83db9f0664f012d40c4ec3475c5691cab78ee75403e4a48a8ff757bbc8f0aca1830249941260af789b81e71275dee2b1b7192c8aee1cedc02642fbb0691ab18bd03e8c4ddcdbf9076dc28e27828a7cb317829d6b7074c7d3e018f0343c5a7f1aa0c1776ef2768ec33906bca07d0c70fed500785835b08e0b72f038e7d03f7c749c078ff30f2a1207c7f951a73cc761e854c8715e3bc505857e38c739ce73a73f8e737cacd0c3c37c3bf4cc9e0dc45f5fc1093e133c7cf690f3dce421e720bee6262fe8014369a305f1111ffdd6a3396ebad683821cede16cbb466ef272979785b9a984cdc883596894993034755a83b59e091edee807845b0629fd2c8704206481c7b30f94a134707b815bf7e078b8c1ed060feb94003e80e36fe0f507840dfc83466ffdf0419b9767de7afcdb0b81e93ac73a9d9bbde0e5053df8eb9917b47dbd7686ca549d1279cd816c438e91728ef6821f4e1f45390915e2d9271a6aaa30d4849f3a2572eb188a68e8ec612b5dc8bb857840a6ffe478b576085623d60bef8737ddde7a2803fa07e0971734c183cf5e7393a7c3483113b6ebf54ca7666f041e3cb2d39adb1a3461008ee21f106a25013c787303d36d90d2f14f0b3c0016b9bddabede87f699de3c5e7d0d7817088067bb1a4cefc0f3abc1741b4f84f699ce8117a27630dd02cfe4997ec433dd88e77561c70b56e49b26af1d035e7d1ccfe701e00dbd8817cc5c6f7d03cf04e507f151e7f3417cc4f01a78c10b48107cbd0fb6dc99cfc01381ef01d00b41066e9e751ae44b6f474c654de9526669ec0ed0b6c9437dbca2d9447b35b317bc9e817f70af09bebf51bc0c7a18785b50a4746fc2c901e5f8c5a24ac5e76cb3e974ee509de24dd731f6a663100223079b2c241222405b42ace601286296acfc206382224315181b0d27ec0861c24394229ec850228b8f085b787624c18a91078a8912604023a8cef0bc6043440a901b257cee77cc666dba4e6fc530346c6fca59cac2513643680507b04964a84e832e7cd5f4fcfaba10f6ed17b83ab5e0ed178c178e15a99af9f60b55f797851dbc504cbabf1129e64051caf2854b8b52a71784f757c5c45022e383c51e357480ed179a3abd00757f236248adc93adb03a6041560fb85a84ead9ee1d40562a7ed17a83aa5d9a9e9b965cb9885a405b3760bc8fbcb494962df6e01eafe3a60234d18185ce6ccc8036cb710d5a9cdf3ed1686f757c9b87849a27842b19404b65b20766aa1eafeda45521996ab2d3cca00db2d143bb5788c5ec74edb2d845970aae979e5ca5b0f5a78fa760b4b1684169a2a5205fbf6a3b3fe65a8a08513df7e54757f950a19ad1373a6da4c4901db8f8a9dda3bdf7e64bcbfe09b3737d050a1e3e609d87e74ecd4daf9f623e4fd8518b3460acb8c23759880ed47629d5ab3640a65fdc3c0f62327353d912039a2faf623a9a3e111b122d5ae6f3f82babf93183c8afa7623e4fd8d68a1d564091d2a394e8cc07623b14e6d9d6f374adedf08e2992a643e7c684d6d01db8dcc3ab574befd28e9fe7eea1cf1caca3285461460fb9152a7768e90e9a8e9e9db8f9ebe6a7a3a9d4e4661df6ec46564343a56a4aafb3b4fa3e2b71b25dddf08296651685c2d55113b036c3752ead4967dbb91f0fe3c881dcdf60811c34307b0dda8a9532be7db8da0ee6f047b9a0c61e154038d17b0dd28aa531b6738654494f1ed46549dd6ecd4f49471ca38fbf622a8fbbbc093aa276248a65c0d81ed45519d5a38df5e34bc3f14da24b18ac1e30d1e2e607b11b1d322253642ba70308162036c2f2a766adf7c7b91b1d35ae5a5c4b71779756afbf6a263a7ed45619ddebebd08d929cddb8bce148d25cd2a1206df5ee45453d38e9da2a76f2f5a2a12163555a4deb71725dddf791629158f9d56b14e6bb2cc0ccfb7efce764e6a6a922123b51bee881589f7ed3ba8fb33c5c4765162669d56a54eab9069d744e7db774fbaaf9a9a55aae8c2be5dc7a533ea8e15c9df347545a5a64e6b54a77538a523caf9761d55a7d74e4d4d2448cec6926615e9826f2742de9f49248a7d3b11d4fd6138318a2439ea99c3056c278aead4927d3bd1f0fe545022693586e287972e603b11b153ebe6db89aaee6f048f252c5154e8a0ea6203d84e54ecd48e1989de7c3b1191534dcd21439ebe9d68894848d454912e7cfbd059fff090e8844d78040c953a5a427000db878a9dda36df3e74ecb4d63352c8bc21a1664bc914b07d48ac53cbe6db87925dc67cfb50d990939a9a31cc184354df3e24d52991b70f0d878815c9c2b70f41dd9fd9141c8a1ac18407970e26632dbaf000db73629dda35df9e4bde1f3a74d2c3468e17142fc0f69c59a736e9feea96a428366e743449a10ab07d48a953ab46c834d404f6ed434fb9af9a9676ec847d7b8ecb73b963453afaf65cd5fd9966aef8edb9a4fb1b41e498b467e92cec1805d89e53ead4a67909d02033c423862b0b0cb03dd7d4a945f3ed39a8fbabc7235f80505d11a9d102d89e8bead49e194ee5889db6e7a83aa5d9a9694986ccd9b70bb50b25cd2a9211f2fe4a3131a8fb4381486389110c4b1c26c076a1a84ead996f171ade1f0496a4d982a4cc112c2c60bb10b1535be6db85aaeeafb6a952448597a72bc51cc076a162a7968cd1ebd869bb9090534dcb2a6515a1a76f175aeaf4e6ed4242a1a68a54f4ed4249f7571a8594106066c99528268e905d01db223f1827ce160d3b71c07e00db71c74eed986fc721efaf8601f35182ce8b143e9a80ed38b14ead98649959a7edb8339c939a964890e0a8be1d27851be2881569f7ed38a8fb2b89445c9458f2fe4ed0430a4e5994122a16c0b661be1d97747f208cbcd1b1c545d29738c0769c52a7364cc8846b52f2edb8a70a5f352d9d9cb82a182b1c2b92eedb2b54dd5f095556282a35755aa33aadc3a90ac41fdf5e81aad3203b352d499424cec688befd86bcbf524949ecdb6f50f767bd849991f16ad2e404d87e8bead482f9f6dbf0fe4414d991e28a0a16a53060fb8dd8a905fbf65bd5fd51c0cc8c2f4f6cc4b15106b45f46af6317a86fbf85ddd6acb9dd6eb7a68a34f4edb764f056757f756c090b0a070d266656c0765bb1537bfc769bf1fe46e0c0a251a2ca5186121860bbedd8a9fdf2ed36e4fd81e08d1c2625322536b14ead97648e32b31c67362735bd5d5d36aaef5f3168811d91fbc293504836db0411c2384208b0a28a72ea4bf39ef7bc5defd34f29c25802928412c0923619b5f39e8044411205148441e1a5b22cadc498a79550059a2cd6fb1361330bc2a7155196249400c6ec6aa87f7a63b357a227dc1fdaab65d983b183569e90cb2a66336bbd13c044655ed9bea5b2442246f6c409c889343f806593288cc2894c9e8042ad6f46aa870595f558e62f515743cd79dae06e08e3082114e005c4fdd53c7a2c74cd65fe326b0d35a935d4570098526ba85d71145d9b999e40dc316506aa06d64b5f12e43d2bd61aea4f01c7646ba81facf66110af86fa656904314215fa5a75e6e4cdaf55aa80c8480155044f8a143488658ccda4cbe9cce909b9e28d19e05d52eb7994612b8db6346bb5d52c2ff2abb7187af3d0d449f29e22e6edde71730c2a15318ef0b0f2062acc54b1cd521e1d41a62d4b5a5996e5f04b339f3cf269db63039b20708ba62f5dd70b9a1e38e4b39745f808914d43849411e991a524ca97aeabf2e599cff3045a0d2e2076a83c41a3252b0db04c12a44c7284e40928a07b48d824fbc304453b89cd56a0e5d9ba85ec8f4ff5f20784d2963f0db05f3b542fd91ce5c9a1e5c20b161c302418a318c7b175adb5ac582d4290081224c985860e951e86f8ebd5f75d96d883d5ec12638c7bc1ea67ad26f8be36d65559bef01184a6d564bab875f932b184e6e1eac58c37bf5ac510434ba2e6f5928476deeb20da77ef35791cda47763ddf3ba5e76f791631c18830968024814d9e29a61430d8d81d25514f5d228c252049a893c4898c5a35be294362c54b091b06228c252049980367d8e54d79c11ab22363636c17e6b4315207ccb4000219c238029b35465c74d18e44184b40924096a6c88e2ad9c88d19a92455b42211c6129024902189604195442090218c23ac0133044c8e2111c61290241c85c8b971732090218c23887511d202154a7a45e130716cb8044142c7e706c79842d59a1f1b086408e30871b200c922060d12612c014942f2ca0f315d3f4071acf818cba89b628f3d513510c810c611b27acc18a203d3c6ae7804f15aaa9d2090218c23bc9102458c934b11c6129024b8a1da71a50dbe2068634e748c29436b11bd129024d0c898e4807372115396277a9e6b96e45012718aa0f5781cda67db9ce7b9f594a3e76b9f0812cea848009549e547ea87488d73962c32f448e166f5d949ddddc2a651258b4b9c619c146a513ef7b5aa4cd45956b50c6003cf7b6b2befefe5b57f08ba4de099c0eb1b55cc8f1958eebc910383c491aead9892822e5595655926f9b4701175e59663cc08579725c3211311234b5e96d45c1637cb8496f33c216ce19967d42f556bb68a7a884a538ab870e18246495bb146cbc51695227b681e420011e23a06eed58c1c5733b8dc6e70a04b528519333079aea4744e1bfa9ef7de5be2efc5595794baeca4ee6e21569165054f912dbaaa85d3a840b307fbb8dd10e09de4e3c4dce272f6293ccff34caa70ecb393babb85403bb6b2fefa7cbdea82e7de6b6279f0a1bbaf99a9d8aa0731b8ce34fdde7bef45dbcf3358f66acd60017862c24891889c316486446e69aad0985a4362c5d510183460d87c6bf5d2daf266db421e8f4597d38c2e6472824cb510a1edb5c056bdbdec7b5ab32cb7c810c2494a014e95ac17512c50a59f26215da6c89059ca5878058933432b0e54ef6bf16bcccd5357773d1dd75ad65a4b146eb6f6b86104103855a6b8f898025222850df5be2d6f97656951e8d3dab037c4234fa4e0a8920c03c2e1db6b3d7d847ac1d2ade39ab15976c93381c357efecd85e191d720aa01aa7d10fdabd5a627f4b5c8d3a686ec0e892550279f5436b8ad696b34fe1799e6712eec9013c744069f1a4858a45fbc8529395752748868c2c2d3b595b4ad926a4cbda02529bf3734589048df2b445c169d1a9c224765468ba978324b0b1b256c3042169c044c142f4c2a2c7300bebc9d9a7f03ccf330901244e28dd7b2f96ae0c7774eee3e0e1e86bd18c989f373e48babb8599c94bd390283dd0882d358f241a49392c00be16cd34f9a2af453339b0eca6704c9d152de9615322e4674896c1b0cad092250d4cca80965efc051a0e895a30d99222a4244b51d50e891e5d121b15a6a66c4c88e4725850b2846149170ca6be8c8634764ba8869888c16965b0c40e062460ba1468132b4a84ec9284f1610245d724c9518b24477a4aca6040f254124d9dc82971520ed1a990e4cacfbdf75e2d263afeee59faabb3d2a2f3b7af565a683eb0406ba7beab01ab8a8a3835948afae165afadb550f7c996ddd4be6aad656a5f152e29d9a415a00085134c2881045b59f682a6d9d5b4057515d13e0ce48c438c0042841016f08107f643fb6ad933edadb77549d69080aa5ecae098c205650a2c09a51312e57fbe16850c6300975210f5a0d983acb1a3ec9aa50c72aeb02f84356cf75e1d72b05e9838fb149ee77926dd7befbdf75edcd7adaa301e4bb6a0efedd5f2635e0fe6bd55cedba7d15746f1a181a89954c2b2d072c6d8a7245196582ed47ce9baad2a2765d94396a599305fba5009f475ab8ac8a35fb7aaa0ce5bb342afedf6a9b52cadad6719b4b82c6b2d4b7bb1ec387ed149064166a500ec1c3cef12b700b068d1a30e942d5a5cfd94bf8af8d2add5e576b43d02958782f9dd337b65694d503e0ae61db4761a2c6defde6b6b366f5f9f7bef1d51daa6e3bc0c3417b5cc081c2a46ee642515f75e59a5f93b42889792175b50c92830c08b83ca111819f7f5ca8acb037dbdb2caa2e3f556fbb5ab5d0266a66482ce902253c61b7196887859294391a48cd389aea2c4c4b79183b1cdca9ef6b56807aa042ca68c39dd0932546aaa6e8a5cdda891828962940d0cbe6e4dc9f3b5af5b53e494517db69f370594202df684c11162d6a20695ab61d937b07068f9d2e4e907170ddf94bf1e7c0ff4b5885c510a216321cf9447bf567962e59eb706658d279aa493325671487797a50a26497f5d77fb9696496beb8a0aa35f8b40b03294b5b5ebdabd3d3865dcdddd6d767777dfbe16ef74f921668c7befad1dac9f5e6bee9efd6aab1d7afd41dfdb4c68c510f4b7446f6d5583fdd55adfbad51d75daf7bc2264db4958b060010688b2223190570d20a26a60bd28a6b3c5f0206cf567a9da3192e1a132acf1e406539e3b55fef682d9c4263645dcdf692f8b7b89e0c9b245b6a28b590fe09d11a768478ec96104a408127c453bc717fa5ab483f5415fb25c63024d42a7c2d7221eb02fbf16f178a95940beb2dec8e0c2046c191fb459e1b11eef3173f86a3b010e4fa902888c3dc72c245470003b46324899cf199f63e921d8ec3720df4cdcb6aa246923c5c5501492a8a707fa5a25ea0512adddf89eb7bc19e37a96f7961e34cdb6486569c400fb1c3effbdbda087f7d5aeb576add5db47567bc0ea234e8b51542f735760182942a02c453de92204aa5ae779b298927563c2155ebeb02852c1769e6ea2dcbbc204971145d43019b9ba96b8c860547833c74ac948170d5c5d3366c468813c020c7abff8a00f3d61de375f966de2eccfd373d69fe709367ffad18942ca9f8ee1745f0a187f3a874e3bf8d33d70f02145f14ff7e0031538fef4059c1e820ab23f5d846aac0d4d64118059af5c81194901ab4e1daa7661da4c936cce9b198ccc66ba7521c750a2c99fbe3fcfd3aac4983f4f134bfecc52a48e8f262a6c94583a2d19d24ba03df17890a166e15875603bdd47737bcb4cebf9da97cb3be6e83c4fffd0e9f57bad48e478d3f27edefce98ea17f1598e54d7cdece9366de235c18637c664cc3358c7a897aa5f5eeb54a8a02802d8ed4f14da3921461b22948171430985ba0760c8563c7904fbfbd1367263d3f4f20b3fae90563ec186cd51e25339fe7793a690385eb8594539bb3599ce779fa87fbb39de79973ee9da7ad17c4d81664f6dc87c17b98773a06df79f67c1e9f7ea8e46b99ca7a1222c3d08c0800000000e3160000180c080805c3711ec7594ba11d14001353965450584613c722d228096118c530061140882100184380414aa9aa6a00fa02e15cba740bdb9de27b689cb616d16e0da9b8cf0e696d3c9fde8a1aa36d8dcf880b1865b918f24f7a6c7a36f06deb9cd8db602f7fc471bdcadf10fee52d4fa005139864e6154cb5ebb7a77c589a0d7dfbf3849cd2ea5d2c590522176e51482d7a012b2441ee17d47761597b5a807a334b53af2b83a106e2a4ed0e9986f557ee271d6e010cd2f1e41978f8d5020cceed0325ce36a67f9bccc36dcd90593770384cec3766db5f5e1bed8d174a0e501e566a5e1a81f7dea2836d0278238791dfeabb151414ebcb80c4175cbafd1c99d8d826089dda287d3d0e8836383f99798ae82c6d8ddb562d6c084f4fa793fb7c1aba16f7622481d5cb8adfddaf3f09e1f8d8c5e6a5a264ef3d1cfad1084b99a274554139db02a15e441a24bbaafeb1b04b0cde9bc58ff2d4b91987b10ff8dd911a9894f109cfa9269a93884aaa8d4c7897d52c2e2619ee8783df41abcf3784383cd190b8e309c365826b482121134171bc3f352baeb6707acfe20de8f380596a82a9f0de11af4a46f1042d06602a85cab1636f5e490c8f936ddaa2c45bab735d93631aa70b22bd34c2449d8b9829ab229a7bc9ef6250af168ef6bca86321286305d365c83fd83730a69b69725df5bae0f0749e983de8a818bb61a1f12a018654b9ed034ff004fd6c7de1a6cbc51c5fe709987b222464611187b35b2ee2bcde923724472c7a002a645c825386572aa762d12c90a07609be0e40cf04562809dc88054d5230b08a6c313fcc0c9ab911ae13c42616751d762e4309bfdb70bc72e8f87dcd7410c381a11e42489d1c611d4d81cdaf5561d12bcd938ff77692c73b8004b5746376ad4e0263eb50f7acdeb0e47f85c381d243e77e07812a45e445806af695dbd711f1aa69e1b85d927c92ed490a2fc617ad3de1830a1f3887974fffc008dc65c6935a1c77e3ad8cf12621de22d7a8d4551a29c5d1afbce4f6c048f867eec90c6eb834ad46a6f5dd503c6f7982847927743ac49a3176ae038e3674996890c7c85e42c4182b84583e053b4e772eaee0f2a143fce55de0b7a2ba8437ffa6a92c6c89a5b8b545a45471fbc6aa5bcbee8f23a408221380d374bd57a8e419b736ec422337fc40ef5bcb0c267c22848ace350835b2c40d6f97577e97946cfc0ce894554368624237380655856970e4d408134f1b852b302c1c337924480c34a187ceb351c2328c519bf70cf780d99ec22106b95de9671623a22fdc77213320973291cb0342ff873b1e86039982759eb356bad6ad8050073d6ac6c5a562eb8cad0c83a696fac399ab274620e8b96806633a52acfbb5adf7147a2615f7ca0c9a271194d297d609d2d7868f14e09494793405317cb7b7ae8ae3370f4888ad8e8d2a36af84b965b3d60331c759e83c16c3c9890858de44f6d628cfb6613556d2ccf131bdd2515251a988cd2bd004b242ccc2732ce1908e73ee77e63a0752c02f61b3dabeab8b4a0b359ba0b98aed0a453eb6ba321fac98a7d38ad8d9a1ec64ffff864e4d64b17a1339ef926f0216ce0eb474fce0a9889805de421c047dc36cc096154b27feea56e3d37023ad432c678a4eebf8d148d5db44055f66b5ae22e35692b97c699b8a3b01bc6db28133b9ef8c5e94409a6eb9ea5a4ba01f010356a74988e83a33283bbd13df183705787c68795b228795fc1227864a51200791ff74d13ac213e3fc5920554f47e78860e5a3f19c4c509dfe64f2ba3db5ec17e56489a54014a7d270d730829a0edab0ed8c308895dc189dc067b38ad3c4cac91aacd83f203b4ec719f9e84d0e7c4a84233b50fc707b55f901fae0a4caaf05b8174e042c71c26dc8449ced05a18f28d027d764f87e7a1f4fb377d97320d9f9d1e2965c1bb33b26b74c1a35916a726cd0746f803fe8ed3143a6af21577335c9c15c51f173fdeecc77be7f7162a2015708b1af7526c595418143ac81035ba5c7889986d70fa9c4fabdbdc32641758882e606609b72794ced8d44f697b141266b6abf41dd77f9b71b3f08a5d243dae934d82f0ed52df82eac547f20159588989f01fb4e3bcc827712ab94ec4054d7234bd9700542866893e5f24f9988b87ba6e3e02748ea541c8c6191fdf91b9aa5dac55b2863a82aa11ba39c1e40aa43177836649fb78e3178174695dc11a0bc1e018a43149135601eefcceafc4ce86bb39506a2b749fd05ef0c551274039ad703a46ae8423c437473933b06752aa0fc9c8907a70ea03444a1c001b6b9e4dcc23aebd27f2df0a047450eb31937b85d422ab3f07da02a422792723c22280d51446c006d2a97c6e41be43148a352114e1a429b9423beb40d72acd2580945c60c58cf768eefe214a2520a950af1a301be75e43ea4756bd05e9cf88b51c3521dae089a21f76a772ce477e12a851d00e5f4c0521cae509221f3ea8e2ce764469f9d8f61f08a078cb0783770f81320cecebe33f844cdd4c4a0d4cff5e89100b51ce24e96c17235150cd1e96274c73812c977872143e65e7e411901aa12e8c214c7034bd57045ae86c8862d7f0ceb5420ff39f107428d47691891b541600339dcd9c949cc2d4c85243b8779237b89fee793f8d6807b5d3a7fe09da04ac1f60de7902b211c104e24b047ca3fd3c04c622f31004ba585902fb07961f781713e1827dbe28cd948cc67151846a0e41f74fc8549b5d34d7227442bbdc5a8520200d5662871bcc7020050e50484e157d88b9ec1c9437a77b56bdd8478fa8be9c8a79c7252606f169cfeba5f94d1c683d02cfaea15415f4e19e8c3efc4a0b856f95d82cbe4aefb9565e6da97831262e50b7054431ad80ce87f92b956db19ae6e4e2454fda9298b8caa0abf3968d2f8f30b7b9d85f4f196bef8e9823421d261da8da904b33e3eba6eef2638355ca7d262238adbd36e753e29b0789cfee7c68a1f31d17af180f27650a7f87b4afb52ea59d3af7e9ef39808cffdc234f85f9388c1feed39412564ae83af7d2eead98e7d3de781bd2250526486de479de4fbe65ba71ad6f72d205050c5866b17af9b04b5a06e2fa72d2fa603b1b1096c27a0329e8755bc3e8067cce89ddc73abb884e76ea42fd2a10c6eec1b46404c28657d458b0c7846080c510f867502c5422371ab8ac2d2d6a2d5e58d71621c182b586e1769d275b2e70f2bc48f543fb5b166941606537c6069f5698849a5cb13e9c73d890366578a6f9c3d168e6576ae5d1f6a3ee681494d501dc9a7406e8b87433a33f5e33951469220cf6cdb54b615c0fcda11d885031a4ef4860cb2b86aa81e4ab9e3b298693551d1b9c28db12e4eb7afe38c2a0e18863031b9dd8c2e1e3dc3d428d915659a69d49847a27b4eddb6581e9eac2cc41b06d1ae402051e4f0bb9dd99b0c82da7fdabb32af4d089653e7fc5e718d8308cec78dcbf12c8bd8729f1ee2d6092270bf8c221869cfc09070cad79f025d2d0d92550742ce38e11c26805496ab6ab10ce9c3536058d0a79531f6ea39cbf2b915a89fdea1027b04615845d0e2796d74df9637f317f7fef0eb582e7503311de7cac0ea39b926a14792ff36d22364406ae279ea5d910c8f09767fa628f3c48b2c64c749df3667313bc1268e5908bd54a0cf2bc2a209464b2cb0b00b002e562af1dd6b8284e5da237c8f20ae33aff629e5baae39386f27914ab7829105de6d28b33f428251293898abeb23a80d5b4171514879f350e9b2c9e176af2192eb97bb70b890686cf481ec338fa7fb89805ac0d0f03b6d452c250ec32ba3a27a2dec5ea1b5c229ed89e92f4714bb8f91152e63cc6c2fb202f18fc128c9319a528a94b829bcdd830f18427ae1c686259f60e1f4d08486b18c8a17798b5f8d42ce5e335b2637a83778fea8d73193525bc2ebaf9f7f3e56d69dc2848f8b5e52bc296e3b1f47623d5da2bd8b5fd405bbdd3a0f981f58651276929061a2941fe3d8c9c5d7076a6b9219d313029f94a42bb014e20ec78ce81fc5b826212ca7666d39be8c2b6983d8b392451348d58136abc15a4d4d7610d0f9d9880e625839c62e30c36d54ceb5b4d6faa911aeeb4d4881936956350c9d105d31851ce72fa3fad6daae0c8101b8929e1f5f3cbd13afc68248c2f0d46e2e96107b14fc24f6a9277845b52ac890f10f4c0d8064dae903e3994e4e036f2763d477e9370a3ff67a5c3ae6babd8e1ddea26eb36041808aba7ac334a99454d1785339547aa0b879424eb58c997e98d402e67ab48e26dda06516a01eb42f5716cfca3e794927e914250a98aa872265ee5a0a1ec6916c728a3b4e1fd3c4b009347f7b4b14342e04227f4bfdd762ddbd8d7e71f5d4cdf52fb3fb538b081821c1302f315a8439d6f94606efe0f8e6810d39858a870eb996f5b1e2dc3f3e0d4b02f57becf6f00f14659c44de54b411f813c354914b6e958ee9d2c2596f57481e62650590323463e59a586521950f95b98f0f7bd666dafea8c00c5d84e473b654de2d4ec92eed0bcd9b0a2dfe0e829fae591594b5902d3b9aa8815c1e302f241321b0c609bba6dca19c21df135c7ba405056f71b5914431518011c7ee3b90cb390a5ac322c188c6d87434bf256f31dbb3a30098198ac183050a10e6d27c3cabc46ac3890606bac273ab25b146c52d51afb9d7a891bfcb199311c52da6d7a2e3f8ca4304e096c202231eae6f511a8aa5114ee10e27d6d9c5efc1847fe03d071b2444d49cd249b46d42f404076d08a8aaca054bea94a1c2d2cc86f00679054b633c60ef9046a76e535a3650c6360e2985539f46d041e94539c45fa1a75da505bd2017cec92835fa14186639bde91ced2b55bc0071ffd8298efbfc5f7c376899d74298e0f494ab657bc5e2c21aa55784773f5f29ac20decc65c5c88ec286885545d4f1534391145da98cc1df244faeab2890f7401d0a1d5ea9d5a9d58ee07cbfd3416189650bfd02cad391bef30d0180261816fdb81b181bfa82453678bdd1ce3d31a52db1dadfceede85e656039b7a38264558245a5531c3480b19d4869c62433e16a29fe4e52783f29547f77f8588650a9cf8c148a4001e643290af9f36abc6f8d824d5f8152a5cae0d72913a80eb6d0e327d2dcf761a943f45ab103e5c343126a53c0f5e8061e2eb90b2fd0805e908e0aa6d857660a0b505b0fe5c2ca8d22923835c87ba140a1762bb37f677499bb5658be175990174351641c7af9e22e36fcb230412de56ab30a0dfd62002de2364093fe155729b041bb0a12b92598d82615ae0777c041d17d70f87f0b023da9801b8c47a8511ac60e4a0f0769a83dd695f25940d8532336d729b55ca13054811443ec40b91c4d42d90191be36432bc530c2ea52afba9570a83f2be02a6e173a9da262156197c4bb4b1986d52151b93a58625fe5ff0615af21740ae5265b30241d7b8ae0e9886ea8f3869652cb141642a51ca5e69c3315f3b37ab95e3a20da19720c9a9a58987beb220d46fda730d1451989c9c00d4cc269a0c5cccd16523765e7e8f387d47ab4266b151d67811f08d847b0226e15bed8ad24b43a0d1bd2a70a29844c7d1cff675825fd1e548306151159a46831b7b109fd5d6cf27a5c4aae41bac1c861a11655d9e04def82aed70f435b1bdf0332349a5c497851e3cebbd15e9ca49af99022cc5902a423dc099039a0c0d0131a4099500010cdfefd09b0c83a9254775171cf8801b513fa4c0703da95d200d44d04d6a7c51ffafa4ace439749a77b9f8423909f6cc30829808c6d989340e68406a00d2878d0e340a18e997bd2d3688a9597550059a5a29f0cd34300cbc9f7430f96cde1146900c0988dc78d1db50e84c1e4424a2f70eb9e1269e7ea594b1c3a006c9909d008b9e0a84e1646fba24e48b1a949b4763990c8435744019a357378a2252920d9d7b0d5688a54a8265a7822e96cacdb51d658f0946a99abf3a0e7b058f2a57ea0efc865d8cf5b292c1870693a54000e8bd3ef4e0444b6330c7ded8d78e0a0bb8f18073b659cbd30b4ef0d8ac9ab1ab8015bf944f8242e6114e1541cfba8c6276d2af43988978f6265744b856e1a5e53a80e068e4375709055cad8a88561beb42d504b84fe1152013a03cf79dd3a1adacfaf8545d5a02a1da36ad862f0878c9d795f0d812807be20a68da55840b0de3960b08b12775a8b6f012fccabb5260866e9acaa229a9c7384decbc49b6b4c026220ec6e42fffe11d776691ec7bc077e6c551611463d079aa115564f9cec200cebf2c7fe30738409d9b0c8287313d299a730afc21dfe38c4084be59a70000f5b9c0d03dd8ec8417fd95a1227abd17afaca58d9646a5dade936199cc94384b3835d9071ebd97d36c108b926e4807c86872a5d7a0a4907d5da70b14373729b9e7ac68c8ec78a97ae4b17388bbf14f2c8c977157cf18f49d34db0741377af5428062fb67d84c04e9a69da49e178a67388e66b24dfee17a2050aee3203a0263551ecd542d027af604807bad49fee4e58d48d3316bded578e40af5b4bba13dd6e00614f0934d6ad42922f801e8db4218a956dfa6b160b132db0b080f61d4fec188f6fe3e6f6fe8b72d96604f8eeb7ef0935374511af341cda226a4d4a08074c8235eff6156302ea434470098519cd1464a4cb5cb62b45d34bb13084b972ce2227ed343737e4cc29111565029c6bd7347e634e0c524cf7d35a30e6e9f06a5bf3c5b8bc5c722ec8fdcce4bf0a29ca295d8e967f010a64dcbe7b829d38e67da70348b99d784aa64bc78a1dad59ff5651e0b66cfe83cdfe998d13fb5133fc901b0f7d00f32313dcf9790fe9372f88df98d8b2c152331a61ae6d6ab44a6a9f6abaf0944a5e4d0ebe6c346b43a2e168592098e47eb31b5d41758271cf75a4384b22833f50a90eee228b0956da24209d7506b1bc807f0a5c6acb8059295d5b238cfaeafa2ad4f32c31c8834cfa25a092500b249aba11b7c05f87e64ca97d3a9a9cd12eecbbc659a4ba0d87e3a480f7b2dcd9e68057b5c7566eafc8653f85bcf36b10053c358a3f63010a0515204a541973abc43112447f359713f7aaaacadd34609d241b336547626d468ee51f047905fd0d483bcb19f9211bcb9cbbd5faa5796f707e346cfd61b3b470b303836e0beb2d2a4e6f7e4938bbd007157c7a150448325609befa561e816a149cbfc03cc2644c36e33f1abcccf980113007a16d30380514a21514738c1eaa343253537bf64ab1436c5a5f4e87d1601c8ef6498cd757efca7f20bd3905fdc60eb75acc045e62e2ad952ab967ab7939387cd741f795beab145af3b4b3f08571d1a4974d3c1173e9f6648262342253b3c14256bed250e04da5b81716b0fdff759f6a0979185fa336ab7ecbce6841671f84f2a02f7d24980a92d32f294b2130aa313c36a65e025b755d7a04d6106918d01b8cde574bb3723bd85888719cced1ee86b91d75e26e121bed46c7585d905a6323ccc179739da6b6dea11be9e7367e253472a75fa941e915c4afd4c7d058c645a13043972e1d690d2d0f5d0e8dcf7c58f79b16033bd44bbb123d397a4f2527475e7b7a4c7b7d051afa94ffaec3286caf742e4c18ebe8d700ee2db10f643fc7401bab495e3c7c6067b2943e0af70531a916a0d9f71c3cd1b60847b1ab831d77ad4b6e5aca36f4bc4345619a51f8812497936a2ebf615ed5aa610ea1d5ef71cb90eeb00be690fd0177843f93a8e3f60e2e728535d543b2ccdf6803fc3ba7386a32d47d7159f51edca39fd6e3b0220141261e277fc1a10817482429d39fa5cd7744cbe76fe29756037c968adca5d8e5ebb34cac9921b21f0916b5d3a01062f2df30bc3ef6c268a3db4704434294575609d07b47a06c26e2e92dfe22dc590b27b42a7f29edff168c45ef0ee12fe78d24780d35510488135af7a0c0c7e66e8883e7615c333dfbb08ae981adb19fc9f25108907eb1a707c47c20f6f245db109793b6e6832bbb847de8a6b8777149ef10392fe1e4a62ce4beee56817daa6dd9b2e03ade441d2fbc03d46b0c5658359eb512e822aa325f74fe1e277cc9ce3b810ecb91a4b37664f4266e406d19be8630e43876bc08edaad9b0082d173b57d37d491546d4ff1e90591894ff7a466e2c92f4e3e92bd11e295734abd4e097619c366114d451536aa21c0c439fac9411e85e3d219e7f85564a2ca494e7b987ab8b85148bc75a9dc5dc403869288f85a86708e8c39508d15d55069bd362ff49ed057de9423a1109302b3d0df54c64a489ab71b49f71ef0aa64dbe97b4c3836168960ebcfbce8a66e7f15c94d54f97d068ade03129a7c2479f53a158fcf8ead715a43db1285862b4de98105d01312c24e72d0c4b9b86e6b5199783bc365944049f235b4a73a0f653743c4acfe742d04e4a838b8530abd1e401a523d8af55599d4ae1caf8a5746eb31003733d8797d2bd9a3e6f2669e5519324690e38c21cc32f1c6df658e15ed5b0336af37047cb8a6c3c85b0b757819fee37652a4793abe7831bdaeb55a9452caedccbabf10c2a6dcd78fe47b15996b79483385656821680006eac8ca26393df04e594199391efe3d5c0ad52364f4b8f0d7a4fca01fdf5a13b53fc3240fecdeb5c101e5ec36170e5eb2309118df291f79170b4f45e6a39076de56a0249ed147f48eeddf4d70cc68cc68774cf2bb23f45cd39e9be766cb325ae5d5726cb8937cd09e92cc2f9158bfb3d57daaaf49544357b98176135dd179867c486e6bd0f91018f3f3ca4985c0afc967e491517d5763bac7a9aa807a2fad5bf6017bda1a7983a7720a0a657b631b03325cf7a2a11d2e25d297707d5c57b0ed642b6916e08b275832d4f0f8047082ce28d27d2f34b2650ad300ebc10580be20784e3524d4ab646305eb6d4aaaa40bc3ab5782859a4a9d7a9d127cecc3d1023caaf30102b882a411630b75031addb22ea82b863508501651c0f1c390d78fdf067e6736fc565a48b3b4db4bb6028340120b050a9e06e4bbebc95dbef6a41cea23099f36df6ce7db187d003a0fed6c1408f4bd7ef031ec4bb56a5454ced988bae03076220a655e96de759e7d759d0b3eca06e36b6b8618559b32a2cc29fc0d001004777cf398eba910cb8512a70e5711076663d9ed9dd57e8253314803957b0a778c763e164506313955b2766a35d8e6b1ec644a4930891fbce6670c2593fa7edb1a956806b7fa031ffc74215e43232d9cc1c80de8224dac88701b29dcae72ac518630ecb00a64048ddbf5dfb90fbff0c78126fe867d05fa6f2d705d4b1e53e7472cb5020c3d24327f37f45eab3d16e10eac0942f67986385cf91005e9bf8e9b626f7f9bb325f11752041db9e7a8a83565b536dbdb2dbd21dddb83567c107655cc131433d8b70db1f002e9ea5fd81a3f77fe89731879325230311e81f869f27794ae06afe0edef8b515de61b7030415f54cf794b2de8f1f807a4f1f28d4a76122916141444b0e383ccc02dfd3cb7e31c3ecc13814d5f94cd832c04452811546a6b20083bd294fc0634b65cea7c8c10f94bcc4b3b27b7adcc39f39e128af01b07f5ecfd0d78bbd912ba248c4a77f74975dc5a4e507e5487c2a42b35af33dcf42e69d4f3b05bb55789bc1e274ec71f7616ccac865ee6b7289c2f6859853925c47d42e1dbd8a3b1947851a6934c9e73671080907b4f32a10553c76e831cde8df40fbe44d9e8139e71071e653e616898681c830dd73523e619a3b41997ef4bbc66e4127e5a9306b514e9dd5d5586a0b45427dc5c3ca364f4e8240872f47986e40e8dd82fb77a422561aec70e1fa015e4ca203f499d8a3619686836e20ec41b47985308ce0fde911c64b855b7e29ddca1dde8df3978055dbf06d54b4a235829b46eea1c223d85d1a512fff3ebbae4a7f998ac806f33a90d5242115b46727c3939d18b4224dec107b7adf1a50c2960e218023e0ee081041656662a79ab50f4109ffa9d15820a3c839b5f0643b99012990a0d362d2c013a5a966ba2c5104be1a707c792f53a7e8e37ab8b6a425c0a40e92727da89881993d6db526271d565fbc79c084b1e4bf9c9315762c61f41694576767ced860b4e4f65c494b2ae84868f1b2bb184f53d314c1d6931c9056ca99ebc11b780b78bd6954bd756d59d865083102c48b9ee1c07aca4497a4693c558cf8a91e29882dfb31c7f5f62ec957ebdcee14a01b4f4f98b91e02da6de657a531ffbb51eee99daa845cc7ffdf1f49138be7a3a08ebe4c1ba2c25fa0c38373905953fcc9bca226b51ba1c8b88b0038770e6ebbbd3805fdea5aae601ce9e5846481c2f5b810e1d0a2ff340f20e71dc699f931230ddaebf793b304433c06ac3198355f61e045df24b2e19666949be1df7155d93fe34a2dab1e63d0f31a4f9a935c2f944d02d81b477ac2bc88f2906e864e9920b96ea9384c7c384e94920947be42dd14dcda6466cb8b1b80fff747140adb326db27910848bbcccb32183bc3792eac5999c205a006100c34e2772bbb5f053281292214189d501f1e588de1fbcd96b431bc055adff3e823717c1c507f6af10f2d511ecff12ea6b505affa408aba336c721cd0c07aedda63e8d444c9bfccfa6bfd7aaddb0534b654878a459db399f36c24e586a13f5f7f1f2f685fd9600c1ab67d1b4660eb90313e433028ed085465e39c8cab56bb70d0128ef476fcfb478b2d0e63e7ae05ccc22548289a3b5a3ee7605a146afde153e667f46d69a110bd3889050bff510640e8552443c32f6f0753a9bd21307d14038b8f1990669946bf5a834b6891592c89094565be080eb44a6a8659d243b700eca27882d2d3b1229cdf77bb9f87c907cea01325050c2c33bac2465e7617eace74b7e0fb1bc09730444ecb1420c4c180c3bc8de3ee03b09def3dd5194e748f501033b6fd4686d4cb895bd33aad633e92f2635582c8596f64760fc1f8167fd2b138451f12961a75cb6377b1e3e2ad7a5cf6b520d8afb65b098717c4a2d83ecd32004ec17d3f03cab96194310f47e862e8392ff0b5714aaeea71735c97399025ac968d3c662c866bd32a3578e4bf256ee3ce31e98e2a4736805819cf26bde042eb203a33d651fa88923aeea51ac17e48e3e26fe13ed91feb2d46d14f623ee29c502eaab987954a3a470c0340ca28b5477a4684ab05243fad03e76d95ae949d2ee2790fb22c32063f07ae44425cc40d141aa5dd0458b2a90800bc22c72e15dc7c2fb831beb9d6f4718d297ac40211d77a100def01f51821e44b22e4caa2095bb51fadd994830f53fbc7228214f5519694bbf68d46e107620588cbed493ae1bf62dc2b2b4fe92a35b8d3bd05a22a9169beb0c6dd9268d623ca34d000b42b1b75ea34c84369dc5d2a6095828a9ae01dac1012c96736ac6f57fd55c0886fda174d775093d3a698e29a6c45287c92d77dde5118e2b0bbcc1577acf4b693cfdc20ab64c0f7249b1520f96f3cbee05fb28a0c2f3cb547440de8d218a196abdc9a7108baf78379846bfd4a28b27c1d4afc4f4b04f8312d2d843d4a9b416b746b06a201b0e7ef0871558e8bb26ab3a069c4f6c2121cd4c74fa010743a292cbb9040fea43bc3f6c80c0c91db0637ce925b35aab5d563fd4581f010a298d2753c48d6e6b6b5c4dda73663584c79d25011ba1a16badc1b649dd02570bdf192a2c868bbb8e300b225ccd73c2dfa34f4e2ff752ae77ef1c1ea2f72b2f52206aa03f35ed41dc8e22a338c6ce7efa799456e1695ee4f640a5a2fb6a4760c5f34f001cdb901528a9771da908c3d07c6d6b6155a4fec0d7252f6e5817817095285a4211bb80faa86d331669502102c1b8bd208c6c7c131a81cc2840e51a83eeb68e1192039d28db26d09d49215720ab80f2f63ad47ef226bfda744578227b0f9c0d231464868ab3993951877828ec4304372bdaf1a8a39bdac4ae947c194efe871120359329365bda81b344269de834d4ba6be73e3174958385adb876d17feac5872ae32fdae35339dee1bb3308eecf1d01e3012dd51597898599ee27420072337e8f8a1c7c1bbf964299efd8c3bae952e5e314c8a0c95f585c64413039d3157bfb0a4c41e5c0ced152385461cca218892a17ce43bd830d3e2038533976109dffba40d737230f490eaffefedcf6182d72f522c619be18307b69f06882268a65368fa65746395d11df7d2381cb47c3660c008be125e58a1bb59bb11d715a1926fa33bebd852603c1e10162739612312e63986bc4536c1765a009b39213950ab7cd7bc4544c2ac3612be28a128b8eacd92e346737cfe93bdcba242f62e829b1e37961abbbe970a99322ba4a217de84f272ad92c1abb5731c86192f24b3b1977d01e6992e537849c54230c8b510c4bf12aba4d5a5921e23182f6ea8d143ed9c3aaa46636c3aa140f3777e150eb0ddbca2e589f538150e9362c1dac9bb659020e55810e5a27054f66658071eb91d917704ba265fd58310d6e70a00b851ea6e4094bc82bb290c45775bc67632c20258d56d0f5c557645dfc879994c52d2c3178d54bc3c095dbfe6e43b05df5d11f7e4e67ff12906821781e8a7f594424d30ea643e01180b6852de607da27a3a7ff5fdedd9461c7c4dceecc484cab386221fa74a6b80b4c2c9288e3f2dd56df591c93c70c762ef971ee5f15c97f0c5cac7728d600ffa7f24fa0399d1843a4b78d49b13f0dfe1d78cb43378a1d214eb3250f35555d28587c9d2347abd546c13fc8c04c43f8a69b14837c3f8965631fb9a9b71ccb620a6b1da6768e61c1fb88d117304b6c16caa4072bf8ea39378bd7a6e450156b159c1f153667dbafa0b9460508532828e54c895e31ba50fb383f0edb95e938ec47e71823cec0658a7ca0320e74b385d0c9cf4f3da0695c729f75a7b0f93fba06dfb9448cb99ee6cf3488090565a392699c9df3d1b4eda9c02e1beaf5ff42de4cdeab1ca502567e53b39bf2534878641acd7bb3455901b61bec9c07c97d743594c086b03545a72ef9e0338c61f991746f2087d61379326189d15828a632fa776273c1385f715df1f678c1aac1880f507bad24aeb369ef55c7fad1f82aa7bf3fb0f896539ff5bf9bd6f37fa462779cb4d17535d27dba54c35dbdcb1439554af4bd0ca9ae1440b668b95aea6a2b319207cefc4cc1ea3cd9add829223bf23be2885af41de4997141af8bde142efc75eaa4850b0002123c8fd1bb986ad5773f3ced0c66f4ebf3bfd6609968aeae0242cdb6a86ad11fbe9a739a0955557b14143b5c718d17b32d0436bdb9a0448cae45b7da13ecf5ebea270e9a2b7209914e24dd7095b754ef8cef52c5d66cc9066458c193e65177e64346e66a81dd84c89d3257c642aa3f47902f15dd0a7530cf94a8b8160c58cffcae5b399094fab47a7acd1c118ad41ddf978f583bdc320c0efbd085e4e1664773f75381d3a0ac82d4bfab310c811c9c1b96d7f17993636ab06b85a66b51edb0de7ef64d14337b8cf625a278d7c1c6332d453a58267bcf4ba0612aecacfe503e1d10443f05189c2fc891d401e5461c741bcb6512645384efa1a09d5fd0234ae96e90ab421b96219a6ecd7fe364cac809eb29c2fbf16051992f489ffbca943bc5a455188cc37e4968e8d96a8b9d38e7b475cc151dc23ec0b5f3910d95530db93b6a0672c5748800dbd641b3c78ea24c69820aead6128fd79e2a15875bdf79da541ded6813097986e84383e0b0ec29ed499079a05a2494f2f1673d1ef19369d74a78d009dea8082e9ebc3588bf1934b9bf16dd4c86e4281229864007874cd37dceb3762b8ecd79db4e45f0f3a7e2ddc1fc14c5ea2a76a109ef300c17c082f79656908f3d759c06d7813802064ba14996f8eaf325a05ae0ca84786ed1bfb07046f92453cc8cdd77c5c4146b15932ad926a0dcc39b46c80a35ae8e0bc7901bd35440a825bab1c9fc9745ff5a03270a69f2f0f7c04d293e0c3f1d8879fcd83651cb9960b6fef8b3952a00696ea3fa297e3b3c99ce58865863f0e7f632b602e70dee6bdc248ed8b0f3f329b84ebc8c3998789258a9ecaf0a87d6f1b4b2387f1dffda360d0816378b2b74aaf95b01d8c23b08387142a964f287a04af9f5f251a56cae484d861d15a2ee0dccd777c166297ead0c2ae6e35788b24009cfa0da32cf1ce8719660dc9721099393fb07786ea6d2dbe994e9c6ecf3d6c245b3e93a80157345e5c296e3b690c0cb9e7fa063c63dd46599524910df9bcdf7924c39a202ef7b5f3301b9493cc6a1476d9422360bc67e7029910945bbf8033ac8aaa7d1b6f07ccb5d8529ce6ef42f6e6877560c93a7c5d1a6d167404f2b3be85ac7a2043b591eba4a093b910a76adad825f702a44ae4de5928a924e79a7b1d0913f37c6877e9fb033641025fc304df3c6a5f72274e1c9c51d0c630ae45ddcff5bc640854af29f6113300349d16c98ad9c42616b47159c0530087e46bbe59942553fa03a093e69765ceac1cc7d28c61fa858cda450ccbd3123654bb54bce19910c5c80b9fe6027a52c35d359a1ed11d17765b004bffb24721e5d60325457bca1925d8b31210ac42cd7bc5f0c8b0db95a72224a8f99cec4f31f238c46550c6a66bf02dd2a15b2cfb2d979f55e4697bfc352b141ae4959253a1f9544845c25f47cff8e16368a8ebad711aac2b95ce85d5324df8b897bbd214014694e20d81856c180b8f8403c41636abb5bc40669db02788ed45b4410bb06aa2faddb038735efd4b8671a83d036aa7a554eb975e2b74003981e71dcd6ede51fe4261659e37f21b8f2db7d4522568d1d5e77daa1ecfdf46e4062442739916de607a78452f24e88e8f62079e3f7a6db7aca95b125220f22e8b9b79cfa398f09bd7431480a615b00f818c91e94383772859c923d790e7a1c817492095c1e59e00ed37f940d091910223c7d21c800621df3b3983d6f27599f42d16d2e4a1dae8ae46da2b3159876e256ba507d51b265ad8bc2bf81994218d0ed5333894e4c70ccf7867beec51a7274b898ce7de1ae053a2eb65448d02204669cf02c903a98c547863b839c43afff09ed84e4163de8d34cb1aa992afe0889dc9525e09fa2a0d27e5c920cf8a71c00293ab59322e20bb878dc0575923c0e001984584b55010e4d093e9a914aa09afc02c985e663acbbac629b9c5fdb3f97e0d1953ed77beb9557806c68f54a1508554670e2036c3cd37904aa46747f736d51fd4b5e41e98d16e5bb6ad88c5e3a941b3504f48b8350c37e2f415d1ca29bd5f0d505fcde0e3cb4a5abf5563c7eca672ceb91e328b2b248c5fa04d81ab40785876c50d3fa79b47152668b4ab977ad1f2276963111037159b278d04d1b0ce3fb013ddf2cd9f75c9745298859aa476ecec802ebebff76d9c09744e428a5c2c0c18487eb07b1402996667f2e733a6b95d52b46eabdcaea54c626538e46e5d2a846be9f78900dc27cc63faf72b0786ecc98bc0be9df0d73b0e2e4fd745698892b4746e1d3a67db50058a95b9f392a2c14318bbb87d765dbe47cb4f523fa616c8f911fb8c35f8f568fcaaffa2eae418fb37cd0495d74248070392711f16d9a98830d89b6ed883f008e6a5953f91c690f99b9fd255b3d7544fa04b3fd4d42097065348b2e38c642b5b1ecbe1cdf637c4d6a4e7e97d52f210acc4f2cf3b7d4f6809101a5cadaa4aae8507df1b460d3b28d9ad04bc264f63acd759821912a82cf8a817401558608cfff61aa236dc30eba07d9d44e825ee78bf4108ebd16c4f1900a01b4f6fcf7727a61610e2243c127f66c2d4aa8f6b4dc658da540cd36b9e7faf5d3879ac17d25267e48ccc18b5b7bb08475f2e8e23787442b4ae88cc1ee8c9f44fe361baee08044e55f3d280770efc79583e2659c81dffd19edb89ff7982a2fff12d978acf2dbb94ebc81bd4cec7b4fccb0f24fbe4fe4b2a27a47cf9623b07f68c2e68d3075461eae79e2c3e6af0644748a7f704e28bdfe412ac66b953b04b000b91e3157425ce0b2fc5d0723e8e5a77599045d9d1b8c36bc666dba22725d984dd4d8ee16f09ad95cf4956ee2c576acfec5e2705163f9c419f0075ea26a86c54a6be21e22d5d5f6bf386c0303482c7cbb436d8356203470311270f89bb5bfe38f92144bb218bcc0c6bc9e9a534aa786cbf2c564cb0407b1e8887f4d3934c6728693c64322e493c6616f1e1905a5b3805cae33f0d9dbdc702e020edab203e836dd459e4bba1729e89c3f5222bd24e134aee78b793d3452dd71384fed06365e14184f7ee0cf7b0e11e58ec549af95cdf094af1b1042b85987551df4bee5164d154d7d97f82e5a1f1162e36f76f609ac00fbe8c774e3b8d337bb236efe6ad2fbffa2d7b4d2e2b3e49e5805fcd21ec7cc715b9eab46968b6d0a27271d50afd372beeb545289e25f41b2ea17499a54e06e6cece15962f78c5f1369fdafadde850bed06f94f9afdc020349b02d2336c59dbab3bd7dab0a08acdc0206885b580885d7a3776ac024b561e818986471c7714e5530bffc44c55b9b39c583fda64c90a55d00adbe606dcad4e5f25cd8776ff49baec662ad06876c9038d9aa6495bde85f035b267a1d5b6dc491f17d1f6c7dc6a0efaa3e5fa0ea709821a4f84848104d26a7c47538c7faa8b6edaccf9505fd26e27906502e72d8817931b58695023cddd0cd89fdfa208cf070faccb00463183a0d752dcb6967ab2c1abaa51cc6ea5de5543c0ecbe02511f1226e6c7ea478cfc4e2933c4624eff01b8837f03f1d702e7f14a6e379b6f9634bda7ce5a4be3f6d5f138c1287949bdc8c6d24980ac0a92ed40783af3f73d314eb1279cfc2f96ea298f0f808dd2bcbf259f83181a4d0f7fb96aac8001127805b855447f91440e8d8f7e80e7ef011d5400c42665e805b9f0ed9d843e76fc4fe3efcfb7deab888418b43b8cd34f4f229a1c53847bb6e29bd2c3f3f6177f4a525c31a038979e6e384110da231245f593f744cbd92451b5547675284220473b2d98a7080587d462ddd6d76cc359de3c1253be44b72777d8113c9c1c3cb747084f03e1928c83b1da1aa5b97d445bf36023599295004f3d47554610e0490e3f885a3d52a66ab6086a3c5a7e1be80d1e1e896c825a0198059b58fac7e1edb95acc9f07db708582f75e0a3c150a793b1beeaa64f2887ec5691eae4fef15e3c6eb49ca8c32414935998c161eea484ac15bb0f1d3d1c59cc778a5dfd953277183c6b08f55602bd29c673ff87ef2b9416b75fa481da34e9db8102bc9ae08052d2cc9caf74a12f7421991220905dd79a7a0416a37c2ba91f3eaecdb742abe821635ac926d6da76152b7bf065b970074c5ac1449b64c86f3518cf7410624c7c7a13b93867ebedf9a482600d36e7faba150e227946b0992797a9c388ec940df46e831dc2907371884090cd39d7c0f50dcc16efef72ad3c22ac5b3d301c40f27236bd411cd7d3cf103130926ece6e5e39adfafeb07104ce5dbd10673cefe0523aa2d74a8608d88615da105bcc8ca9d94c6aaa3bc4e182b64260266f5966f5ba6edd4d722d30f9b2fda106af4fe54de762facc3f1f8ac0fc291b29cc282745e71c1c6086400f7a5cbf3a54b331271f4a9965a4775b8cea086f4fbd722b2c8976cb7d455bf858d12b9ed89b7e66034b0b8116defd940125784c61fab762ab48346477aa593c978335e8b9d2033275c9f7c9b0dfb427303c91210b416854216e89337ab0a3f9fb9827224b20d11e43091bb874a770838fcb2822cc09f0b6f3a45fbf847ed399acecaec78b748425b2b10e68fadbaeef5a8e0dc32d7d2a498fdecd29b0e55b3d416b4e2a5f96a3c10e14c1d7d20a7bae62c38773a6e347926a55081f7076009672d50e6d8525391a4e5d3f013cc19ebe811fe8114a5af8364d2000b647099deba76e483f9033268f06ad25690cb38620ca3cd4a83902d313662d891fc29bc8656c6dbe12b4880ac5b8426abbc54702451aec028ecbf223158f8e51c7dcd4e2bcbabdf7089e6a5398afdc197739072bada5276ed3135a61c5824a02fb3e9e0203ae43abd03691b1516718f13ae18665581b408531df546585879129bc5bf68950c34c96d649afb054f7112205f41fa8d745661f57e10d829d7cc70fdbec11422ec97a32c71f51f7a467d0e05b31a66a1418bce811749d2357d3f458bcdd72dd8446d23e979e5608c683c671616f47a127323d8c9e61b61e1d454192d519324e7c5eb610c2770e5a94e65e4b9ad690b92b93f37f4bde566e3f5af79b9dbf1050994113364c292f524a033138ada48e862dd79e480d87ba0b81b4c8b412c2141e9331be14ba015bbb6503eef41c30c9fe6b1428911acdab48ad491b5f2348fffe9a5432d502dfecb7f8d4250e378fc724604d81742d864e69dae40c07a4114c60ad3b1ace146b45a9588568f2665aa13cdd98b298c332ce3a3b1465faf1fd9e300d68947f46a092a2e4f7d7f830f0e8e23ec02d4c9631d22cabd246621d50209b9518d479bcb6de02e2c88541676fec59c6ba7b94ccce4882a782627a118a8f6a682bb89d39fc7670562d8aba560c664906e80cabcfb71ad544a61f164a12de14f32417609bf6d9257ebc7f69dec831607da3d6158d5eb743053e23718acd36010118bfd0797fcf973e9ec346b72299fdf378269b708adcc0e6456eb3f9f4978c93657f79a6380c2ddcd9b514791962ace89a25189d3f70566ef8f413ee6b6657a03c03553702e09c6faf5edfaa1dd9d23ddddde621646e68ef305b6b97e7f9b962a8c4c93dc7d821d5d93fef5a225ee44e09e56f1f7cb5fc2b6c6322cc94ee2a07cc0223e013763f7511d655a4523475894f2c7e60b33228be1ca0097f7e8d5cd0ef61f03281ee998f811ed370a7211e64a5fe16266519b241abc0b3dd07ba6251d4531ccd93a3cacd3758f0f077080250ca1f5cdd2449cedfdf2d27c7f7fd2c4ed36bc90165f1f2d9b2868b909c333c74409438c5ee9efb170e0c23fa027a6976a504c7786f7901b2fa58768345d3786427f10036999e9ffb953d17f52f92fbe72c34df257ff8813a6a35ebaf3f89f8c0669b81796766e0f6b274b36ecdf06688ae6405e8eb6060d1c2bdacd8c5675c84817429fdbbcda80281f41dc11f6ed6fcdb3a48da640489e6dba370fd2134cc147eb73d17a0fa28ef644c24cfd9ad4f425532a0e6da579714c2aa145dc55df7a7493216487db8f8890a143b6109c589dce0abae533fc0c9a641fdd5563c673ba39849acb49775f06dabb9c8ef15936366616f1cdc0d8f4e7a9cb3e9fb7e3254439da9881176257405b84dceb1300395fd17ce39652c6ff1e65c8e4f448dca1eda33d206e9a96b0bb202246b8a9a91e6e57b4a3383d637ff1c1c0dea3aad489b2cac0bf9a31ca8e3346cba45e279f2dc42e0a1fee73a4ca571564840fc559625bac5a1cd686d3fee47b473f20f4813e3f0c9dfdc40f52be6ddc627faddb859e1c41b2ef671a951a067412e90d9aa456c4a2cbba7186d889e1275a39b8d82140be3eb36110980b78e3cfb14de0b59fedaaf92e4cd60947abfe7f6c9504e3fdd1e4fd6aefc6f1279e4666726ac278ecc31384577764b0856d4b6c76a4ca10f320e2abb08d90c170bc33416e0ca191024354034165a46f54ed7cca1aebfca4d356b124ad34019b005ac6c92e89568aa82451f2007bc9976932c40176e540ec027ba9dd7b48d48ddb4d70c3d42fa412f46c89fb91a9868a77cc2db32f2a10c8f87b7a00cb3821c580d3c0a1e5c7b3829b24b553d0dc1d484f44fd9f1a6c885237859482819cd6ed2298ff4f0e66a5077baed9d19a355fcf36a86a914095f61ce581ec5e1707733a2629b9f25888cab0931324d1ff0d7bab65c02cc1632c47672fb764df7ae44926be266e7fef7dc4abbffa067b03e42d1cb7677ae0a9097c3042c72a229dc39afb1078e516a7977e5deccb05e4a0bc61e6529b58dbcb7113aa2a28d2606c632d08b9bd44bdcfac5a5c09b082ea6f0e075c3a9832c61c472ae6eff433fdb5231859fd856b3718d41b84df78291c9ca71827558fffa5f1c881433e6715ca03398f646a81a877b5292dfef45152aabe309645a8d514875142be494144b1e0e965b396ce72d7f5649da32f210e0ba8e899bc18e2fa751b5c38452b267f40be87d5ca0538e2bc41c53fe9f609b34bfadd39e1ed51f34f438870950285201a002c1c9cf269b3105f297b3125dddfea44c890b9464dde5bdde9ef9bacce75c7676766887c752a886af7135dc8ba28b8dd45109c8d51a4b24617205ef1451e82d4e9c426273800f8512c3f66776fe00a3593818fcaa2cd5a50b3c5bbf912b1bb903e85cb6ee74085daaaf981b8f3fee72955a05387c7cfe9001b95f2bc817faff514001eb2afe623b895851d88dd69c2165f2cdb02463d17d9c283d6890d4f96ab124d802e48b709ed5c015b3bab05090c30f0fd8fd5f3f6830117303927805d8ed7887def8358e9eb38677784c8bc4074bad3ee444965192c7faac0b3907aeec770946ae38ec4504932678a46f1633e1c46d693f5b99bd69f222fd9650d477900d4df7a0b77590f5da30fb35ab634583795d536d88ca3737351f3f36c1f21595e937d95241fc94dbf407eb770e43216ff952d4ab80fdebff9e09d4610150030024d7d63ad5e92e3674d49983358730bc12e209ccfcce4db1b0fd9dcdfbdd186b3d21058cc1223c7483493ae2f098b497b9f8f1f0f53dcc61ae839825825cce1446f2191906f4d7ed67f4f071ca039e71fa4b3c2c4da8b6e7ca8836d19ab7dc982483f2d860103e26a6179ec0a58a3cfbdc9dcdb95ca088189b12ccb036757adcf31411ebd780e0e30b60d25170250d2950bc8a7bae9b3a3e8556ea173ccd2bcfbd70a4b14625d0d8b72cfc459f09066a2ed9a6fb10ad078b7be6eb1f5608c0b2fb6e4cf8d90a21ec5c0cb6990f32fe46b3fb3ebb73ec7737bd10ff92c10303fa46ed6a1daa54be980217d75cc6db64cf7d765f9d1594b2ae27f921f5601e819d0186c79ae0677c7e99e7a8c0651ebfef3dce9b04792be46f5907fccabe3f6544a6931c99176aa9f2896b4b3ae6306d9149b5d040e0232dda275c222dd6ec13f357bbccfdf51a82e16613611ed0eb06ce8e239428eda40f369623aae1b9ce2b8a7218cb0f7454a79cd7e648a73029ee4f99f226583e64f18d0967b4ca3bbf231edea5d7d454fea834f460b5f713277730df839035f31b428b81dd97b04bb1399990c0964d20a80e6027dfec596c877b67dc6ee7966d411f7b98d0b1084168214d70c51a19a027d768df383f7314ff909c4519690ef3388d727686c1a93d1a29f238303ad91a1ebeae2960653b57c20f18248d705e805b612997053e962356d05301e070c909d0a1a0fafc97f8994d1271109b925acac5cac6361b980c347dde0506b4e856a5f11656ff75baa026c133803928278bdd41eb672f63593b2b98fd391750fa52cb9a0402a88bb1a15714e062a15bcfdb4a0b65453ca9989e4175614baf162a696ca7ea5a498201f1a60fb74a8e44531976ed1a8610dadd7545cac36f16e47ee1eb81a8e29bac4470069222a6752b34d020a7436424bf0064dff734615adf02990654236051a5f973a64e54bd877067887b0f8eec1bc9dbb069c4196744568e5814e5f2ca98d60e3a2c7e59fa3aa78b9aa3659e816c83fa761943b64c231b7adda3d2aaa8afe1e361506a08e062e4c7e8f855709dc761be05ae72317c04aa6ade6fc17eccf5955467cff16bd4736e8c24b17e352b781972738e8269ebdacab38ad9b1c54257ba59759186b118fffc158a1df2b986c210109234477a6bc3a1016eb65e3ecdd6d6022914be2e062511d0d3b0cc800d82108101f4483394e857c5d6bc023da9d21a8c68371ba842070db014703db713e8bde00b883b795b3cba96d50b785f47f183397fdd7af163449764fc5d5472262721ad23f79a3bfcf09f8fbae514b5c141ca0e18389e81a48d4388035ac95c670aa00c3d0e071fc0d08bce558896e2710dd0003313911b6197704201c6785b40e2ad6fc25fc6814e6959120b8e859322ff7ae482aa29dc0e47662682ec5c8098d402043548484db3bbd1faff5fe9d50881c0af7168b5e76a6d8c27f586339b2c297f488f1317b0371d0960bfe8a45951751561b813e23af66f2903e194226a768f82dc21f90cb4cb7a3b7b63b0e23331e04fd044aa7c27ef991dfd3da199db342f9d7f6192a64555739803645ddcbb29cc1604eee7e29543596312a8edfcfd07db32e76070e865940814a89ee997f9957092f6a0b0d1d204fa04aeb400d34ff58e710691a0140f4d681ce4be51fa198e21e3064fb268521de3d8dc0de613ed627d56e0c80ffdd0bddc2aa424074007847903fc04842d83a7fd5f4b5ee0756a49da9bd6ec3947278e759045499d713b81c01b61719aeaea023a4476e3274114ec701de7fbe005ffc3bf5e0313f9f6b1e4ff12d3d07078d78bae1eb644c0f6d12329ff7def6a1cf30417cf748c18ad667bb839d2f4b870f936f314d24c843491470c156610034c1e240907d637b7783e18079e6e8781534518018c2bae5b0c491ac80616fff10e8df68cd7878aea216d776b4024f65f2b4312b3fb2772d481f957f7624f81559b7c86cc59125f167f805bd15611060b384b6e02e45b0b322811e6c65dc2888b39a56817adf79b966f07095a731869229cd48378e8a525eb116769464f461d3c3de9b8ef22a16f55b4a42841104866e5ff51519cf3882004affda8955790f8b69106f9d9dd3f10d1273fcfdfb2e06c29c391ce15bc1f3c4ea1768c2015fc16ff97a085c3431f862fc37e899e4c7d745dce2be6ea4cf7137c05e40851ffc864173e2ab6074655cc58d560cef41eeaf22e62d91fa1ab4a5ee4c8478ca67e13d67321c0be41d38016fb3bfaf14383bd2aded96c35d6a93db8df931c5b9ba7bae53e2e1c4809391fb99a26857ad3b8925dc78285229e171ffb18a6b211bcc1ed3b127814c8e1f125a6225bb2ac70d03a84ce914dc762df490060d7da956a4c31cc400f07fe09cc3d5e4cf60ac128a5038001280038426a139422d149d677b20de3789badf72a6bfb5e5d41d2e970348af4a4de22da74e81587a929364e1d1fb439ae0fc9aa8956f01fab3fde2fb073220076627dac4fbcbc0b1091371afef4cce29ae0a3e57a204a3de53a9fa3ed8b3cfc9afc9688fb3a31505a75f42d285f672de0c3a198ae227014b227490007184f55a238dbf9aa5601c2b671004c2773b6cb753920a93958a7b34d700d23e4376f08286c1d10080e09aed8decec86c361f338acc3a5b6c1a18a97c808f7f8eb7270ff6973357ac5b2231aad01a28c56c3a9b74c2182ad746b21e1ce53acbe1c9fe910dfe6be7a6618852246e71c22c15bd030a5e3c535b3f5f4eefe6963e4950c10b66fee5e6a895f92bbb234c5542abe13713be2d5abc84d3129035f4283e7829caf8bdd9f0e7e486f6c7fd3af6942efd920ee1f58374ff2a75e0aa6f69700c0408c1f4cc46b1404fbc27f42ce14f450eda1cfa22db8bfd0c3d260519642f342acb540f67db618ff2833b6ddcda74f60f4d4e34eff73ba245e224c36a360fea27627c5051c2a2526fa9668b1fdb65be6de10b2a1a1d805411dbcd7ef201c925aa7f4b744105b67598d4c03e43261642bb9b45e2f9032e1d78c2df0cb3130222a88a009bafbae62ff6eca9571e1bc638c14683ebd4ec1ca185eab531e3f7324953e129dd705449ca12e339abcdbc2ff07c53eb8e2cd133c23b6867352aaa14f13e1e04f64acd44ea16f4bb176f57ad996efa0d714fe790b0b1c04baec00687236f75dfeb8f14722b7ca4f28452b2d23e83cee6826fd6ea71518aa3757b082f407c1c98476651317c562f9e8d2feb7599d35a2a0887dbb08db2ac23d22308d5d4d9d8c3acb798c688dc7786689ab76691ca14266c7939057df08ebb3a31133a6cb57fa11346ef0bfd471151ef74dc9a8e35659d275851f18538ed90511d115a5f1fbeb724ffa19cb9d38e3d3c9eebed29301c2aa431e1d6832ae374152a5c39851873120c51679fa502c947caea4a5f59a7cfb8600052403eb5fa4e078c78d02f4796b4e020988c3c4f9d5ef07d31f8794b751c926747503a295a327b485a898de8c06e1f1ba4feabf9d81eb2934c7f2216399c99fa918901eb66a13c8201a939db81ffd6fcddbb722b3ff3631d3742cebcdcd2bb700bd7bbe0afc5ec9244c741f3149b2c46f608a702530244ce645b78bd8ec32a291357281b65db770588cfeb9f41ca0219803c01495d7b870714e8e1ad95c546b1cceb291248aede7f5025119661a75f0804c19b1ffe7d03accddce14b8604cc0e596974d23c0a09cdb27c3ff008b1343f3de097b585438a64eba01590ebe2a2d891eefd63c387cd8a2d0bea47fab8d34cf3ceeaba02ba5a8c399325b03c730321b859a154586f84d96f034a170247b93baef6d7137e23e817e36083d91468c4f9d0c6744b652250af2b03f8ab833207030f473e764fb911141cdd28dd06ebeab226dd514a65d822c7e0d86c962e6cabfaec2889d8a5b5631f5f51d003dd7c1488271f385eecf68c6caa1180216d400466960fc9e182409202b971eeb0a2f85869d64fd0ccc4880ed0b9de4f5a9292c45f9ef819a172e25dd632bdc63a7ddee3f63a691a665b5c43ea971ec1de4b2c800ee006870f3008840dfa090793079b75e8aeb8b9615b55fd7be6a4907da8be03a604b90da81ee29c142b8a70e4695e069a64ab20502c8c3bd783f9294c336f5aad605f0c202050c61708132e1193a0a516d9bc9097b9f98317edf7fd7802b2a1bfe62b044a2fc7486003db026fdafafc0880c79ec61d262319a9569448b17702ca99ad23e030c7ff3293070cc55b9b95f6024bef59bb3c3a5a00082080fbd292975d46b962b46b6c23ff0ab2a8cdc3b11a388e8da60625e08ab8138afc49a4b160fa0984a9307ad243175272b5306ba8b596d1ce1adbe6435faa23734da7e4e05bed6ac35870070bc39dcc6ef2ee475a29bf06801a58501bb8759c23cccb6014a380d445c708a205607ca4cd5478f85d9cb395ace801afba7491974cef6bd0cd2613801eaf52f84da9da8b5dfc33c88b573b0e3c260b6384c30b16dbe85e568103b160a865d14869ad0d0fb52d7251b5d5218f541b418d4a2f989dc494a25bb0315045b041004ae6ea75e398f43a887e1bc60064348f5e0e854fa303939422fb4782a5518b5b287046e6fac1bbbe1713158c2c107053642496896c6acf1b88d466483db8cd018750235ba27add16a76cb003572d184157458b96940d620aca9b28496cca6e7c9600ad6bd26a2dbd222866932be0862ec42966541f09c64ddcb7377bc650e23704ddd42cc7f058bdeb8e7fe5edf6f2f9d86fa51b60fa1725b6aa50533a48b26f8ffe9b3d079f248a6f74bc77377bc0da593ba85131dedae94c2345e428e78c7345b2fa986d6ec214de250902302a717c22324f448ffa73985b0d904c7d8b3040a4989c8901292092f84ba57b2a25dd5f1dc1defed715bea03f3fed474701a2d0db76a7282b88cac1e8cf1ce39e78cd51463fc1b88fe9efb7b7d3fab76677777779d3f7fceeeeeee9edd89dcb1b5eee5b93bde15d1a1eae79efb7b7d3fd77fffbf55ccf18b25c4b6746b9d73ce3967cf9a6aef77dc55bbb55673ceeeeeee9e1da7a3a6f6fe978ee7ee785941982c1ddaf7a22c50df23ac07e6124a645f2f39004e3b52d4d64695ec89106d2479a08b0c83b05c3514b14204ba82057b0a53e4e9a805a6eaf9f48402037d5d5ea2d6ec82800524b14e8e3dabc73a6b9ee33bf69665591144591ae3a2b95626b754215cb3cb7f714dddc23789acde739a7b9acdaef65a0cadf975ef345bbf743c77c75b127b88abfe577a7b3127b22c1ba25914d4beb7704d972bac841927e79c75cff7f67c2b3fef2b6b641a7b5014638d1dbbbb2bf68209226e9766e48d469ce5cf52e6914757b793013102434665ec8cc69e023d811bc605db4c0a653040c6a651d4967a6c81665611bbba5fec9a2e9b14d79c35eea083010a20130cb78819241599d816d87132b5356d66b5d01b3011132befbddfebfb110d8988444522a3dbd255ebe41f6b2e62b1e68c7f2795bc135eb837d7cae48490424ea156e829e40a41855ea1e8d6ff0f6b754e935bc1d7f9cbd16d29723bdd9612b56e4b3f4558a185102b0fd0618719484fa2215b7d75e504038639410c943439d1742106d1d6525107ddeef532c302e2c0f32e8a82a8617fe18c5a6c4bb712c8553b16b12ddd135042269bb8dee7a8e218d6cb3943f960a81f0c3584a19030d4124339618c31c6583b4e7b93ec372ed7cae49e6bbad4e4cf9c73ce4b521ed6fc7a0649e93aea44d5b53c77c7bb4175c3ea86d68d2e1c343882387470f46460666a727757e6eefe633ab92d8dda5334aa9a958bd60bb3cb6d6993c66de9aa3af243059e7c3449d024c162703465810fd74c8a3cd03c77c75b5a0ef3b3101d0021d9197a471c89b800636b838f8607394a6b67bb8a79ee8e972e3d153f63f9779d4071d57b5014215aea5cd3251aee9ab39e9165add97bf801bafcfaa5dbf15a1fb7a53f7b8886546b972e2f9f739612a27abdd5477605c5988c9a4388e070c5922306405c470ba09c59d1d7be09c87006baf7f67c2c0bcd94130295aae2d4900834ac62860a29435a1410a00093126645784c4d38b1823e208316475488419f46136058ecae8a42a012696f26fc95900501b490b77d20633d034044084202764f8bb410607f5d215d1a2d4686b635552e3d6b24906cac30a58039e73c5cb38c29050d823a4ab9c009d5c4127341b489e42a89499c341966416e1034e8559941d105aca9b306a8847e670aac159c5f2c9006a8f5e3b67428460b49f75816dcfbbdbe1f92e17f2f4782bf314a8a39e79cb3ce9e35ce07c8c1ab4d02dc48a3d367e92026c9bec92e3b1f7dd464d7868bb4e6ecb9e76b21a194c2da70ee4089ba4466315b43a752c92c26ea5431a3660b248f86dadba8e7132f513b7828d5a44092bc909bc92c2614ab716ef2c063a0902cf885bb5134d220c4dc781db0a6c923937f81b354b4eb3e3cdfdfdd73ce39e7ec19e3b4abb25d267733f4ecb0ac7316548adfb4345ebffe6f42e6bce37e01183a1e9c4c1e34202eb83357f7e6cd7375cfaedbad24b972a2d5364c39860d54b4ab29080f6cdcab242c0e3cb4c05acb0722b1a5810d118bc8850548c4b260b6027cb17e4450e960c4ea52a169683fa0a4045b1e16141a174865c6c1557a7032f3949220e32034a6c466a24a0d6041600f1cb49da135728445c5c9e43c086966183a4041b860d050aca0018d91a9868183b1e95241e03101430d12f972a96098012a604d915346971cd9d9e2640eb0a64d1924f2cb6b3cc61928e4171dc6bc9826d21f638c31c63a2f2520400192dae5d24680a67779f53280262193880a02d0b53c77c7a331642a7a098053cbd4a300009061646e80a0025294e943c10569c84c468000e7e65a999cb3e834d2983b1e3c70e4746616040a34dea6cdcb84e5b3f942820465b16963428425d69b55142030019d1c20d494864e62840730a047131ce85a9ebbe3d9283aa51ab41c5d675503a66313b001cb92b1a947654538a4b9b0a9d470364945a031a14d6f025292c3122b283390d8dd3d6865867373ad4c2ec6704652c2c99188dddd674cd5644be00cad0762c9360405980d3768c2463e69a84c511a3e1a3cd3482389031dc36943cb4f2e8f0aae21fc81e0ba96e7ee784f449dcae4ee1ea3e4c4b674b7aebad2c9878bef1818c28c6fdc5fb7cb18638cf18b011d3b8a52625a6203d65459e32ac9bb755730acf596cf9a833af018defc487e886a60dab25a6e25c1e94e04363a9a1a5c0091627261b96617dad532eaf315b89f2573ec5c2dc6cff3aa71c595646a45b2c9975ced4f45d4bc9708614f3a54bc8559f2bcc9cb254cd47d82c8128d369b2f6230d1e75188f6809dca774e94dbd2292a2b2d989c2e181d1a08aca95b90b0143183b1dfe4bcdcd07cc74d78e172ad4c6e2f75826b7671e70b8313656184c0200ab0782a89aa216134a35cea44a1f0f89a0651cb14a83011083b1867d83dcdfb896de94e3a19118419a1d3241bd2f830484b46b126785d5d0b63ec05cddb9745ee9a7fb82ccbdee85a14b7deb07639f4b3e6774ddd82ce396723e49af53f87746b69c424831f0bdd960e89b5bddfebfb314750b96bd76f54416cfb4b4825b41a6122488888a712edd30a276609a2d6b04f1ac5788dd3e3b6d467ffb82dc519725b9a73cef983fbfbbb6b2db401618c6bac18bbec0618638c5920b3c618638cdf9fa9dc14b4ff327f77cf5a87f4aafb43c4b674f75ca47ceff7fa7e14086f30204dd0e82c3d93409d462bf3f7816917c21dd967dfcfa9aa4095c76f8bd66d698be756f533d9edb85c2b9373e1aa32994c9644a6fe4bc773773c16426c4b55ad6532d9cb88b8677fb149262c55fb8f6b00555821878c1e2d2984325e95062732b0a078ae10db0f2b2a2b8a2652682658a09314e7110d450571866ce6e33c399100b935939d885ae02046342a1591c18c492525b37d8238d3408d31112db1f1a7298c11a8a03016538a40a3da04c8270929a24964150409d8e48c0aa8517242066cfaf66ee0f77489d16de9f16f4b90ff295cacf70b976b6572cc0c42f6831ac6e2fdddffefbd78dd2c98f4bb2600504d789a191825e5b830e375ab1d886cbfd36d69fb74ffc605fd770b2bc2e176dff926e7160d4236a5474f273dccdefff7fa7e1bacdc966ed0dab4d71a7b1399c6bdb9562657e3d640dddddddd3dab39bbbbbb7b76dcd54a6e813a6e4b7b62803e5a6badb576edeeee31dcfbbdbe9f87d6ddf5efad7b79ee8e6703b579352d68dcff41fdafb3317bb9c123b6a58f44a26cb7835507ad0e5d5aeb9e10c90ffd41a68619159a684fe33ca101eac4668e2a3344151a285265c6751641a9ccb04e1f1dc0174bc4a96aa627ab1b2af982a1db5262f1768151ef0092f7eff5fd36138f216de4f79098f6e7d36da97b7b42b7c6e91d4750b6bbbbacdb52a07048bcb945adf77f3067d7f8ad6be48e26ef3245bd2937b4d63ae79cb3d6ed3c828717eff7c718e376d590137f40bef0d26dcf5ec523b6f3eaae5dddee15cb20482603823c8a618fa5d019cc479bb27f3c9734958a65327b61082327daa565206cd4c9edc770df8220557c4467371f42248f112a34aceec063c73c77c7cb80ca6da995564c065d378fb76e53de7fafefd7642aa60995d634fd1a49dbffc2e55a995c17f1bb8a1c38d16307548d0f9305b1c9aa0935d2dc98ae28ce069698f0b03d8e1805ddc96cc2f52102ba1d0a0da2191356b9428ca2092170413178b0c4870e0526c704ac6953c612acdf5073fcba1dcf6ddd963e5d688cfbe2d75ea28675cff7cb41cc51cc61cc71ec113dc879fba0725b6aa515e3a32bc50fe86da5134d7beff7fa7e40a0405e20512ab646057479995a71ddcb7377bc20418238d18244d55c62423c6c25564dfbabf77b7d3f1d486e4b971ea3c3a9f63baf5f5faa71f07b337974ad39750b108ebc76ed5ab7cc0499ca3539e7cc3ab1d8b346cc1eebfd18bf2bb36658b4cbe48c3cb12dfd232fcbd62fdd916816fb218b600ad1d938587a64aac1d6b077a95fa7ff1915edfad55abf8b2e6932aa83f858074c6be6fb18c82cd7cae4d265121554cf746059132207f97cf5704d97cba8350f57b5421ea6513d1964cdfc58a0e3d936dd6533886c8687d4098c73887c26197a65f8d3242b4fd2f2a42ef7de101398febdbedf11d06de991701f0d6934b1ac7b79ee8e97d493e493f4434b1aaa2521b9bca87f33d3b8e7fe5edf0f8610c610069106a3587351959c7a4fc42353dddf18481e63e9319c3c4694c798728c43f557925ab37695688299f617cfddf16444b92d9dda371954b424d10ba5212524a565b0e77bbd3d5f8b548dd6c9632ce7bdc42e39c1cad60ac5916d07664a36294a968cd5c06e4a2f92d5ec861416c940a16958f0eb6f615cf33b233ad61e81fe9d75ceae29d304ef9a5ddc9d6da9e19a115f2fcbb2383df931cecdb532b934baa64c393e6b76d13a8daa2c3efce35c6323cbb23c44f5bd7dae29d34dd1b5bb4fa9af0deec9ccd53661836903f6bac642966577d224d70ad9bb4c3c4e6b76aea95b80d954a013032703164e50160d207ffa71f1232403e1e286c9c5ce0320740e877f1dcfddf1867c867ef06bfd62e742d13df7f7fa7e4650a3f7fdc8de3abf2f7c6e2f7edcb36721328d87ba88687a6ced6e4473330afebfc6e5d02f5c1192dbd2e5adc8c9dddd959eaa5af5ecb85619026a6ba1a2db52e34de858b3f9207419e203bb5500bc3162d96dde2ede9b1934f646c7be199d373f56d81bad991027436c886393720b3ae2905001c26901bb01191790e47a42a9e2296ac19eb3cc71ca897acc43832584d36d69eb18423c6b390744db04a143b7ab6d16a724c13a70fc7262fcdaf78e55838d01c450a8f57ae7abd732cdd5ed943b47b21d102a507a41032952b9b38302cb505f639c96e15cf3638c1dbb3f63a4baea3c77c73ba259b3cb3ffe47d1a2559c8ae4d4be5450ffcb3cd6aa1264dfee921251ad908736942077743b941d5b31771dc6afd599ab98c6e55a999c0492c3d7c1d477ce40f5068004924eddced5ed5e580b19b29d719b47903cd348d043d821c021c221c6b4e2c9f1758e5d9b78b03feb72ce44964fc4e989443d91292c4106a25d1e4418e1e080e2420d67b40afa45157095f00217d7bd3c77c7830ef53b376c45f0fd8640b12d7d6b4050706f55ae8a8353a4a6c887addb3dd0524a51af5c1bb32f723cd158c77c2bf204a2e063930c152dd83db55aba95132d67c4ed4a98b322e586457472189e041155a4bc51b7a52c503824de8e14f110ed85e4880489c4f9b057a7c4a56cc3b2966e4b9da26e5953525aeb136196ab3e1392d6c5c9b0b40f225ee39cb3122daca40b6fd1e0ada0fe77ecf895f9bbb887db230e28b7ada3daf3bd3d1f3b03b2896911952f44a8dcb45a25f1e96db2637527e8b6542766a7e7b5e3fceff5fd48fc9018228154a2c8dd75f6ac7b1f41d67a48d4c3a21e1a6b46bd9f477b2e31c4b67467bd8d52bcc63d43ef217a4fd17b8cde737c79ad29d8ef019593a8048c1e2c8e0d0800231a0410410582240ad358ca8d011400091bbc5c78ac8c543c1a1046616148480a848181208ca3108081188ea21810834953590be969e5e004b47e714917a511e8f1523eb788e988b43d395cb3b4afb09bef5006610e2b935f8ef59b0b22f783d4c3177569a71ffe22a803524e22a01b8f60f4cdd5b93d7b0cbdf8e64968ee084706972e9258bcd2fce1b8836c7411840404a0b91481202e02bdffb9555fa64992c3ee54d8086dbc7cf1fde05762662e96071357893a130d4812170c5c49ef1b41d8e9e153f803372323cabe58d33eaa605ab1c607bb027a5be0d36c4e43d2b690231617a5a3902234590f2b8df034211b0ff772bb80baeb562246c0526230a045baf4da9a92ba5667c479158ccbc9c1c183e7f682072eaf63048a93420874c7e8e7cd1efde6111be712f9794205ea4acb6059f0bfda661874ede1f4c6c8efd0c1d3807d3e0af904972f88e84e457be96a87edb8f405feef54ca2677402179b27f6f614d2e27d50c6835aac2a7c7fab83b56f23ab41257f38673fd6ee47581a247b7a2e040c646028445388a59b587d48fad701564766e370e95a6831e43f734d8412be5679e1605cb89ac952676b7a7d4ff2220f8404447a894313ebe568c76a27643f19fdab688df4b7edf5f73a4ce0ed491a34c5f1134decad97a8d93a878725e3f05f189fd1c1efc8115f34b35a045e6f08adf231d4e4fa619f4d944503ec447f8d494352254e4097bf0a4044a5b214fcda48780e1b16de921ef3d6b9f4f136e11cc84e88cafcd206acb72d8592d867e75e580c798ad8f209bc51e96d12884668bbd984096ae65e1cb52b756da18a9d544e57590ec19240b88f773b4650a78fb9503ab4bd69b43ce023895f7704b0b8271232bc8465a080030ec1c92035e8002fa35a689bef3b4968db074f2781b158aa3ede24fc4dad18b9c67b338afea48d4fca900f02455022f2b8b3b72bcce4353e313f7868738ac45f43feceae2422b64c232f48f8d438c3b1e401bf27f9daa4d6faab58ce408a99f2829841f6a00a25e12ea3f67b4cf8b50fc06085fe7cdf7e14402458133740951589904f428b23750b79cb45c82c23a77b9f629a6af52205acc895b329015623772f0422107919fca5b7f4b1edc5feb44f826033a19882bbce8451c0a0addf0109261ac511c428d9f58cd3eaa1ba22e53acdbbfc950149a07bb040a74af63fb126a897e48fb43289da03b291fde8b426083cd0a239db005546c780407cf317a24656f34f6e9d60737478e78f4dee44c3b4b90f5638b16aef7b0ffabd431beb482e23d97c58b46f3ba648fe892010badbf0fbb3fb39bd9e963129b5dde24fea5b06554172134e9b178e241616b46f98db01eff18018dfdcb63a60528121794ee9820b6c61b939fdea0ea2bf8f059c1d704a06039617967024ecc162ce621e6634889c1cb1ca9f6def9511d354fe8596188a8b13cd001043a5b9ca47235168d3cc89f4f77afdb53d0fd3cb6ee68d49596693475d647b11e3e754a4eedeb808daedacc655186d46754cf0b1fc6053d3df3c3ae9198a88ed2492e014be228d0e15118c3ba4b222b2f556eebcd1ee2127af9b861bc1297cf7bb6ae76eb4af2a0f55c48792dca8b0f3e8f02ad0f53648c70f6ff1f218ef1d3d9cdee95ce59b8d1c552776aeb8fa28544e2194b736323aeae53dff7dc27169d0ba9cca32826e49a49d333eb5f04ebd0f50560289679b4795930fef0921057a0394a8c8e4002ef1c632d6a22dbb977929cd7f6ee57349c730bc9a35d26f0957a122a01321d26bdfbf72354e3c8a269762ada46110acbc660724e9c02e4b56087407aafaaf6529d1ac96694d609d36e356964b879a7504608384d8335b3a995fd9736837cf1c83ed8c37164264b342d446d929a2c96cc88c1890c9ff6d9584ee7344c06c187a6b42b2d632330652f5bc74c1642453ab6b8446850819bf909f5a6cafc543649b9666d1288a02694100c39f3c8b42c0aa238b82526845b5f5770a4263c1a8af0e8f5ab8964c69379d98b0e885977bda2bf1ac7cd4d1bb78edf609a128d9370e3220ff1b72e4ec64ab021d4349d100dbb61f3b37103c21f46c8af1bcda5d730ff6a63bd1175c34540e52c627adb9853e8385031f6c578cf608780c0da3502cb490fd9bc104926dfde4afafdf53a9bf381a839e424130796aee0c5e82259d87359b1b7a394d4fa4f5a2e6d1a4ebd1af2a7eefec46a13628330e60cd9545cae6e2d8255ef8545f68c5bc67e44ee527ccc96fb601ca3e0b735f113781b9b13dfbd664c2c1b10229ca5bf87cc4bef525638770ebd5051916a1afd79724d98bc1063c3615a0556cf78137cf73cb6ebc7798eb7a14b4b01c40e4ebfef81dd306aa4caadc428bb27204d591fa2c23670a7807beca3902bde6f3cc52a4b9c22d4d1a9b65d681aa127868be90d4a9cf1d8f95365543c747f28315525af384b4d59e728cd70eef92ca6393950961db5cf2f84562ba750268b9469103526da012e7fc16b3b296829a7562670716bfec35c0d23303c7a83ef42501a05e4465c30d3eedcc39f7c31dd656b8667fa2633aed865af4c23418cbae068515103ef7480c844b78c2b28ce5158a0c08caea926588c0cfdba2a98f4c37b8e064b7769339653526ca443840a55b6c7ac9b3bd8617c0c51bbc9478281c84431ac8a6fb940561948f302f27bd46e26b929fc494b28f366f00c4a214077afd8926c3d55c9d2e10f2d02738aa789bae6df6a97f9e69c8dae71e6969e1800994c56b5503f4b8f18aab257211dde924f2cea4a7422f112d28737b218747ea9bdc046266e4ec9e2feb44a32b53deeb6b92ed31fc372b066c57c0375997f2f3c76db90be0eb4d86dab2a2c630dec373b2ec042e8f456c65473bcccf12d5c9c493e6cb4cd303309fdb8aab4ce89664ebf00fd2b92a0d4404f9abb99a91f6baf1e38222b18b28055e8dade4500de6cdd0c285bf5e504da25811b6f5fbfc283ffdd53517d06912a8260d0090c1ce9fe00fb1053dd3147442797ac64d18204b3bfafc9771c49c23709ab896852cf1ad1b537f6dfd71e8d6457b6ea90355a1b82846a0b508f2c9588528fc49ad68e46f27860621dec53fffbe93dba9d25f2b4d08b9818124f82522f0710c637321765a3a662a15d55cc114b70048050a55e385ea0e9211cd714499239e5a166145722b861ebf013607aede3d760d7d5fc022dd3e9baddd88e069800c60c89db1e8f7dce47c4d40148ec739e3c97a5e20ecfd9b5429d4509e509d13eb33b0c7af4f86267b6fb427b7b97a2d6ee417cef3694ba205f440d06076203f50baa9ed05b55345038c8c17b78ad34771ff7230541c8be21f4e82032bc1ba1fd23429bc12253ba82d4e707974e9d5cf57d5647658eb232bc6d8bc9aa93796437bca404a7f86291b0b688489a0f99dc1620dc2bfe87d30c07f73b5042259f309e1ae4f5ef4b9ded3004ae02393f68a2b61d582027e3cc28699a4e2f9e42831d34791a8885a0a70b341c30225918be06f29e3da4245b6c6dda5239d4800deaa1e91cdb8112f8fdcc055a47f3d3b2efe1ca0d288cb0d60e2f1f220f976a2a4c516f3c1e1a817793e4d8e053bd30b7d3e18fdccdb0c89775cd4abeee224a54252d42b704b1275178a5a160e4750529a48b20d73c0e7175b84b11f2d94e119ccee50e41b76304795c6247e30c7b55ec2e31713f5ef74a61ef6d8c374aec7688051ce48b9679aeeb91df1ae0301d471a5d6922e5af770344b8e3f7ddcbc17e41710f75c42d3050a69d8c3b63b0170b08b7ceda0c2f21e83e710efcf685062dad2f47482b491aaa375813d2d780c28a1887fa85768b56a6f1747bd2f8c10d882b57a4d36dae000dfefbba8970b5c92c90275cdfec639b723a073d065b1f0b63e9f8a25a761ba200b6fbeb631d2240fd887fd04346443dd9475f37b7c789ef511bcb431dce851222f250499b9c351437008d52da80b98c6c44d115715a8b80b0191bd4b453b47836caf08909d85de53d6126119d26c3513bf8bf5773b45b3692d9e66e8f4a87c74129e7f70b32cadae7786b07e8f469d314a4a76bf90cc44ea6d305ac8a560d240a32e1625ed6e9855a0a31d240c0a40d2ad353e487872d8d484b1a3cf0a246fa9cccaa61d0080e9094182a44cc8388e343a9b37626a043770638f86b0348b0874dbe6e72f43b82300e05fc1197b2a5d24b6fa1c17ff71ec5c3ed7704b3f5597d65a59a7c3bef1e06bfd0d137f7017230c31c6c33104a2b57faf79abbd080bc0a041a31d713c682b92758ac15cb92a0a69f30fcbcb503f901d358dabb81a273819e9e960daeaf0e79de547167cee35a0b354917511267c8cc96f82edbc6b9e5d02dd0536e6ee6332569f3bac53c4ab556b408b49a90d6ffb42e02f6d911ab0ffc015a889126e2faba872b2a362a7b49aab1e2e461f0aa6afbc22b22afdfc64f445b9191661d1a3596528265b9519521099c047a7c2077fdc709f71b8718a8798fb35b4489fe6ecf55bf2952231153f8eee2cab469cade10c00a7a281fd19418d7f3b027b7667cb7e900a3745ba1238a87e33584b915c7441615e4630b516edd0feeea21f8e2153aff6c42361b504b8e98b3ec1b5ae56782342f4bed9e26aea729fb2c0837afb0b515a7ec38d00567cb7c0ab5946113ad2fb19e755c18f666b9360e8920e77c75963457df47a18798e52c963a27c7c6b750f0873620166cc0124bdc076563ff034af1c6cf318648e1988d7f8505e3320ec28b35b59ba38c79680683e519363800458c23af3ba72d64658dd79eb5ce0719c3d100d9ad85cf509af03a0efa9b35d699c0f1af4f9b6472c40ad8dd9ea9b45fc19eac0cfef732a12c4d92a1fa72bcce82206572fc6125187d39bfb3422c3239ffb012488b6969bccfce23c0f043f6a8f4ba1a98202023008ea3618eef6c4f995c082ca7178dae487973c5abc3730f8474221cb50227b538abdda9c445e3cab6f0ef70cb116d320c1c4c34051bf29b04d48c1c169499aa7ecf09f19b733bba9ce9f6236df1bc2483faa462ebecbed66f2569bab4c2454d61258ea03d3dc4b5cd6aa6b8d2695dedfbf44413f782b09473872e9c44dc6e3ba53f73c15403812b4682f4d9048f432ccd1f5d0f2c46794179657a44e654f8a216e788a82b3db055ac60cd9561c0ed480670832087ff8f32d42a4ecd92e0ba9ef8218fb1d5a55daa463b556fa7e878bf5d012ace016fbe2097c9c1a94ea36de004be84ee89e6c30b853a04b8718b973b9ca12817a0befed18002110e20ef2637e145806f704dd247c52a371cda90234df47b7a4b2461a49bef6ab5b351547d0f0b861469953d343e0a4a07e9e0ae11fba1b0e14df8e86770d2ff3806783e6835e9dc0ce08ed59e95e68cd37a53fd21464ce9bc6b7098db351e5347d3852b6ac24214011f94c8e6cf2e1aec3cf9723f357da5210e445e16dca390ba502ece58817b1375d033c3a6bce66fd417f03f5510043e418dadc2f95da2eeb679ff112b134aac020088cd98f07f182dc71c94627851b0a02240dc779f699e1911c6e857ee6378cb9844838d0e3873f7335a0dc3a8cfa1a133bfe4231f096071d751366fd3f89bbc1635aa4bcfdaa851fe6b124bf9deccb09922a4d6320093cf5c63ee748f5314f29c9f20e8c28b16a513d2b01771ecc0143438a2554988b522a298093e253f194193e194eef4eb54215797aae5a6681a17ca6352df0d3c09cb14553622437e06bec82711a2268aa306b193e139cd2a3ab7a618968a1266e94c034b8370239ec3b0bc2885c9871c2e95ca01cc44f25ba5912ed2614c9e89f0617a0c334f6a8ba435ddfc8fbd2fdd5e94c08297ae8dd80c811285b11f807afad4050a33d34de75e739789b33ddd291fc927bef9bf9d3628c23b212245463273527bb0c0997c72a12fee9364d27021a0c0c4fefd88b4c80376134dad2dc044a1d45b8e65927bc5f80cceee8ddbf8c9080afd2937a534691bffc0774c9a30b9cd06abb86680bf6ccc489dce2c0b179093a4d01300b7deab07c88675069ed985e1822183dd310e56fdafa2703550924522c12bd10c72cd22c5cc3285aa013db32b1fd057582aa683496580344d38e4575852f362b07348770dbd7b227acd128bb7f4a0e221d23b07aac56cd790f2dbf693c89ebe82b7d019a0680ecade64babab7dee99415c5ed8b5a2c05a51137b78f83a41b88c6dcb094c8387e0b71369b7520e5e34bff2ecacf3a12683ffe4d9c5bdedda65dbf9b3c548ef6ff01efd54e00afe83308e2f1355ca4640c86afdf215209d43080754f52ab123ef117ffe19869b97486e09d5edf4b728a94b803a9a0f25eaaeab388d43212a4cf3f5c740d6c9ac1d7e2c93a5c1f283d3acabf72d57e5b6a33e8f04479a48ef4dff90752fadb8beb9116cbc1cf98725c29c2df0cbb1aea4397787d980a3b5b9088a223eae466f0b5a871b45de4850d2cf4ae1023030ac8e6d188c229b642730624dcfa5493880dc4da198b2bc324439337e24477783be3a9e58857c0878e6ec8f65091635810acc3e0d5cae69817b9e20cd59e1d6217e748a5c2630b1c875db0062c9e1e7e2048fc773921ae3c7de02beb401b467f1341782ad0cd0ee09c0e0e5b36f4a64d52181a41c53cae973b30d4c37e9503119c5daeac47a7942173f261c9b6f11304a6332d234396ab7ce859c2454354b81766139135c53940c7dc3fdb670b0b09e03a0cbf5fdaca6b4f22038b8f1490e881be55192fbd4f0c9345ea53d03ee8003443dd3e0b03a9d8600ad44b614b14bbf1bae990cc08e4b91a7ac0d4d0ae280dd5c6a3f8ea054ff2fd5fd436d11d46a909071e53e87d5aa1059ac9467e294ea29ed56ec73dc546c11ce58626c9c1d13a554ea50497d34cb43048d68c23a7474d40343d3387cab4d44365965371680eb02b1923429e0c0c0667d141f72028fd380cfe172def92691e61c9bb637e79e3b8f03980fdeb18a2e5259a47ae49a445467de01f432f3a1895cd1ba4704738cf332b8a220429ddbc4edb5764df040ea5043db2c1c6d1eed46a8bc23b83a06c6c06c3ff88bb97a1cc31125428855270e0f69b510296081c2cd6439e863f739b6e5f5f14adc1389fa298540de83bbe945a6501b059887261c4b43dac2223d4a31ddace7a0b216285a00a610a4401f536f28ef183692355941a088ccf4ad28be77aee215ae721b3c1b3f724a096b6c5c8bc525fc974db41a4e25cb86d27716c12f52983d08db52959a17c830efed8ed9cedf1cf5e46af8600d7efed37a00bee37443a15b619a6bba8d43de2258e9b983a00d1c501d4679904a91479cb70d3ea3edfe2663d1bcbca76b7a09ea29b22312e8bd9d3b7cf4935fe94d197c302b2c5035b88a5de33077786b13c96bcba7ac7f260989e21366c085aacefda5b440a6592cf4c00c80f22e5b2409e15b377c6a0ab68c4fb97506706be2da33f532fd8d520b863b6e8e9726310973a5735ac633f82fd12bb5237144ba1af6531ee243d915b6f98cfe6b036366d2a6c67e70220427e2bc0406de063fcaba16b227f8fb3a86b773a4679a40cacc021fb51cd2604601042992f14ac3393b980020efae9040575948c6ac6fb849298fa0dd9188b3399ca435105af0b456c03bd168581251f47eb149b856e2932b078e81a8f11b63cb64e457363402d35705f50b481b5e65450c0613d94619a912ec33213ff4339c13510bc1506d6890c2264303994391047777306636106a993cd32025318f38d9370b1819a9f120eba24a36a90c2587378709f359de76b827458e5a85ce05014a78033b96e188b3623ade2a4495026c9c733db209039712b213a9dcbf3f92fd88df6a4b5a705223c602d1ae97deb84bd9b10fc36bad8703563a63aa1adbe1d0c39026176e70d523a5e4d30385c80ffd22579221a52c95e577c1e8ef48e49d98a0ed75f3bc996dea3a43cd2b80debba5495f20190dc292569bd11a6a40936f1d21140f43a83e22de381a5fb8095d39cbbd9fe79e2beec5764fdb05e114367feaa2dce6fe5fe9ea3eb9a329e51f16d8ff36a57146240e0864728edad68a156e8bdb66b74b725a4fb1c6f84a42c5c827d6718c3c1c36e6d7fcfa40bf226d97896fe45e4ec236146ae69c715c2e8d01d8adbe8c571f7c68747b3cc784fbb5ac98b57442922b145c2f8add8b1f1ff7433b88f805a103a42db825af93b47d32b10529bf70142ec9ed702559a2dea67f38ae9fea080858c2bee9b9d0af5351833f1e3bb56bf30e256c3b199953242a459ab6c6db7705871f5799c6ed2882e55baa001498ddb9e1a993666759e680ffa49d63e9fd7e63b535ce6eedcc1080451106adb9a46860ae262e9aea98a8e2fe887f428dcdb015626d6469b23354f09448d82199793cc3a399cbe2419392b4bcef434fefafb102d36102d6163b6c64e1184d22a3b081a023369f0da8903acdc08ea21caa869026aa94145d6847a412608f48322a729bd56e0e42b49b351c51ad5c6568df71478b955ff269dbc7140230bad7c44672a089fc974a1fe6634a47bdd78f0aa896159096b1f233941b6ce366e35a277ad7cd3c72ec91cb53e983c92ad1f4b56144f22d5856809d3517d94bf9843b8a8483eeb425830e69e873a559b7e4b3516b3004cf5c4d81b14117c20ea21769cc329a14b7581f82481c68f1e293958f9ba02292352728c50279abc03eaf18ec6db526ca6650ba1568689dc15a2a5f27359242318f9bb4ac8170f32d79e87ed53c5384091675095187a76403017c141643f4a3443db292be4114c15a2b2ea08a16dbecc2d357ebcc4f722d247f062eb9f72c02efc27340a2722677ef3a86145e01fc3c0a78ea7867b2e1546eb0f31a8564a8811ccdc6ceb92dc455c29650817b5f0f094ae6142ac49b40d2bf7d4f0814b3d28408a495a04974de3ff41d1e0550cde58e9a7a0ac83633360694367a0d0e372943d09cab35a8ee50ac34b93cdf14f371834cff83b24e052cc6a90deb2e6a0f10714bd2367d65c57065eaa8625e2f055e5fb36d458f7ed29d89c650e555858727208b4b1bc7242c5c0b00ad6c49642e7888e95018e3c4913b956a20af1a39c19e71ee9dec9b7d7c4be227ce83329de155d8ddecc95dfa96f612994f5150d0d435c68fb7b58ade65789d3a5309450291459781bc1aa5055751650ab2aeaeb169592aa8002d625afdd16751b598fa7dc232df304823398d3a8c964d0a2eec953286c509eb3513c2ef9a3be1a5856fcb982f7545a933bfaa24283052a69aac36225aff1ab63920b7e38294610912ea3875f6adb7f413f1d21b89c20f1354b328251e79e47fcea006cd2611079170c8b73348aa56059e658840981e09ca252934d7989cae93734079e2403117a150caf67b48860c18b482f52e08e76c0c496c75ef9ca8a38796a259a6a90de4fa5167471f195f3002accac58266755e5f20db82de52ce1a5cdb663fa3784102d4377204659b2fc9b62045566a22cdc6599e712268da01c9cab0de424385e8bd4abadbc249a943146f77f013ff288955b1e7b653459f3527c1e5531ad1416671a6162bc27279403b1fd62c2bc8a52cc0a5181014729407e3a16624349c6997871e1ea04b9e8b880932c3bd53013990c3ad435a1189c3f7f3a12325b49564f5c5c70550139c95885a8ddc3b7eb8b2c4627d4c989c18f3459c12ed69b2a4ac93348d5d5e73a4bcaa9809fb4a7353dab7ce8805e330e66c1a5b86637fbeb85461457598714578f3ca22826fbdf5296ed8275d7161f47a834994340c3daf77d60282b5fc3f70bcea314d992c9c5ae3aab26e35d95577ca3aa17a8b493de0d6456a6722996c561658e2ef7a43fa3668bba733d9ea3087d8b728a3e556d8b580752ed430f987901d80b80539efa34e168d3130b0655f946730265dd7bec2e5ee39cdd368e703d744ffbe81c7c47fdbf0efcbb4946189cf46c7b89ace78aa7f6b0cac92c007e37fdeabf07ec0ea1325a7f65185f3274fa802f34542819d453f22bc3f021933e7df426987fb610553b0c63e44e454fe304061358ff0e0d8fbd26bda7b7bf35a9f691f704f65be10d62cb0576265df654d3286d97fabd166a85978caf5641459e8dfc7d5c22f754edf14e2b67ec70d5a0cf94aa5bf1c87c9c6a92042b80a20f283399a7ba46cdd3184d24a7771875c2a153093d91a3d7211eb315d1ead251cba50e018580c20583b871f58ac55b6b06367533b95e1ffdee66a50124fa20a1da02d4234b25620d1d6a468856cdda8eef69d9114b5a42f2bea2dee32a60c2ae0eb6fcbbef17851d174affd62e795d6c12c631077c7da2f569e78f14dc4d911873d00a0ca987917a93e0acefdcabc7d9ffc9d7cd788dd8819f341f24330baff2ecce5104009ca18952525a63f16887d871fa961355a012282e8f5ca52d53bb6c0b76b098be3a6b8234637316c2e9d59c7ccde71630c4940bb6cfa357d6e800ccd2d64cddc3c4ec13184680523d5920d3639935f44d5369abfb7623643d24dc4d4dd1a683ef7b6bf0d367fb265c02cfd918dcf3983c7b399f937cf53880656cd7dde9fbb442b5b931d9a2a35d0e47a3d38ca841eb843f16282552b1798049a31ada95d38b446f2c4ae5092ee144e650b7eba59d1fdb05323a023476220cbda78f82165b8c53a118b49b9704a5d1d1f802f94f7d91cf22b2191cb9d979e744951ab8ece7c480da986520d75a55bc1f65a0b20cfd9f8f9a5cd027e8068e95acd17b13167683ce42d4f35aff42a06e1bfabbb6cf9923055c0ac89ceb37a879a323508fa55ff3ba03751662199bb47d675f6d3b3bb5481718736c0d2c9d1cae0c020b4610ff0ee90738595a55047150cc152adb6d0e64b4e99c7cc7c7123e1c3f26cd39e3a9153a022c52adfe9c5c043b8534928c810dce3fc9057ca01b8d023a1f8a3cb8bd8320b275632e311ad815a56f82ac3556923e02087236431410a8c666beafcd0db8e2112ca914b166f2fae4f39c0fc8de87caf24039aea8c413c95c638dfcc51d01720ad86c1087d42a1d057e8bb125c12404a847a6f3b594d4040b2541be350a48ce0b3cc63ceca120a3d3216657a487c699c3a0065dffd8b8eb8261bb73c669b21b22efef39e4ef9133ff3ab2a72630f9348a81721784953c7f5bf4552c7b13c89d8fd37a985a8e8cfca119ee3e370308c2c0bafa66fc77f5879408032b511178b5585194e60f426429c9e91dbbbd2a0e0f084ebcbfeea4c24a3146b39fe9bfbe237c36a0d2fcc94b1dae9d88b05415eea47ced04114607e93760d832a77fe86fc23d88cc1628c3ec26390604843ece2b41abcb989b9a8368c4fc0953bb02f1291f248e55711dff888db73138cf2b236c57656a7206309c111b65b604dde0339f2ad5e4f61e67e778c15262d48012a38f2d8ba08994ed0258c48b740c91b78fbc421ad6be540a6b62b1adc2a209951b085406203a124640191fab0ae2d82ccdcf3812dadc263d2f5db34d95485d867de3d5cfc30a1a857175dcef1b89236c9c7cdfd33e0584e446e03b69ce9f823c00f12bd3552abced9428159e1099af310555d3fe1995519c41eccee0d6f6048b0b89a89c19cb894dea16fd11ac4ca80b3181f601235821661c859d95e319c66f02feedeed6668d8599abe8560abd5aff12c588ea787427f3308a14697480e214bd0b45a560b0e6632f0a8d549235eb92138d0050d44e2ccff3a1e494af9c3e6a8577ce8c2f13dbd19e64e2c0e318b57168c785d7cebbccecce2335bfb10fcc4ad45ae9ecf3518d7e4989c43809af8ce85d6c66982883169475e55366033f66a73e2ea8d5be1f9e0575b7dcd169a51b544d8bff1de47c7657b83a0754f90350533516ec50315f050f9c26cd6a90664a71899ac5e1740239c2a88692e1602c39b17c82f0b10bc2271997494ebc1cd5b6cf190168418b512fb9907f7c01b0e0cd78d1188f58a46ab0a35d031ddd47b7d91e3b298fba9982d8a1e78902104388d4975653509f9091275a63e64fee44fbc31a6fc4d17c9c790951e4085c510f9143375f76c66bf985b69ac23c8bac93b9f67467a1557a7357daee5be5daad5ebceee9cc6c38df7df1af7d8c1e45c756707f8a21f7cbbe8a7965625788c0dc586030c303983592b09a9135262eb793ac2b9a11092eb1c3e85314f499a4cef4fcaa2c5148af01a5bd1e9200fa5b14aaa84dccbf86dcc453191fb7b78ce2f3873611a4ec040c194498b5218b2e4d3421eba78fd701d32673c78aa847d0169d444e24215fdbc744bbce020218a2960132bbe12f93d676045240ba24462f76ee9e0bd78ebd6b9887b8c994cb571d584580b43b097ad92664fc14bcea8808b5061212435edc4c872da74838916bc9db9b3614b3dd4c964f7ae67ac64e81d8889aef176f484bf31ed847acd89107058a5482b075486c7a13e0bf92041967ed08c4b6c28e9b15caf320b1f49010cd5fde9b733fdc0e9fc3551e8d41578ba7451ece16cccdbbe21066dc9e737c81f22ed2a22f62541443baf45cb533e641c438934097a6f6f3168e39af6e8ce2774ef0f325af4f1014a8e4c8b09a48bc156d9ab7442e090f5bcd1c45a533059429088f18254109240a2532c92f0e4e09272a97c9d5f67a632dc467763839f89c88fc6648615ebc7ccad9dd9f820203b225b90f56dfe89b6cfea8719ea30b3f6f11ac4964216e2ae5aa64c816856bcfe672456c0c17fc9be4fb09ebd8d68443aac93dec4607095c68f12aec3182cd7050b788b26c1359c5d47c33ac91e5b69191405ede365af93fea2a7b9307e69345630912a50d8ba91e5f9803996a03e82ce9235e6f739ecebc7bfa235af60bb2e560e5ad7f7c7d1bf0098380ec098d196d9b8b4e34bf789bd9ca205b309620a628882ac8de56d2c5416c306b124f07641b51d614bfbb669d7d436318959295e31815ec6cbb5439ec09635f4387e21f467dd51cb2c4c16869e224d967f00a0b176bc38b74a78c7b2d2c627ca6a47a6b0414be5bca9dfb12558ed3776a2e0db89ff30d404450e0a42a1df20c2b1663b758faf19bbe357da58c094cc8590e67d59516181cc25fd6a253f7dd182dc8ef9af11c0bd671f4904223311647670b00d1f77b47d0799c81634899a7cad829bbf8c37c0d7a93021e4e653cbd0b9c60870815e2618462d210a1e89859c472e8710037fb1c0c34eda38e446a1d9aa74876f659c65c5eb5fe0eb25865847e6aade83ba7c4a4198ff290799be809aed48312532496d934f7ee4749077b1a12fb6320d4e1423949ca86c06686de3ed29c744decb4940835fd2651c33f8a285346d6ec372801b749274c3220f969e8259f1f0d69e46a702a75035ac6335ef4826e905c1dc4071fe783d2ac8a1230dc9aa3f2bd88bc22b3716699e8608cc98329c558b290ca676ff4f10a30b0a10003e803dd268d6644bb210d30649b2799622af7cf3fc21ca86744a3648309e143420c7f04465d403eeffd0e4272816bf92f36cc0f377f7f713e6230854a35ccb7bc2b5d538a72dea7fcecc86123ae6ffd9e3a86747e110089bbc2db7a07a843f6d727e917e05b993717241a6bb61381922203127e43ebaaef1ef239bac3d940b26881a4add6f2bbab03735ef342bf9086d5977c8180eef5d848a95a0a5a5ca76594480bb67e811a85236289a83a381e15109a720457ab98455fa414ecc0a6c85a86014441034a608a785930561aa5036ef5243099450ffffebc84c73ebbc9956eaf56bdcc378430ff0e00e13e0df0e838cb6ce7094e59775ca7f7c34101677ae51a4f015b17f529b487bad5bb0846d7bd704cd4a4d9924fc8267b6fb9a594522699640aef07f6064807dddbe0bad5a3b8eea66f70cf0ba4e16e6e542b70dd6ac5bd0eae7b120a5c8742611bd7695a0e0ec7254d1c0ca771b3e3d79f7575eb4de5542b12eab25fadaf5cbfb68f66b061c3860dbbbbb91702e2757136e4d3b79e614ecc349d9b9bd5ea511a0e3c6efc0e071eb7bef6ddcdb5aef5129b21fe91cacd8f980dd78daf539f524d43a1febb55bd5ee3ba9b97c5eba7655d5bbcf2baf2d139e70b5a8d8fb1f1f605cd440198060e3a6ee91bfb517a6bab96a5a3d65aadb7b55ad666fa2bf5a6c64ad67eadd56e4adafd71cceccfa06462de47c76040e8b5cf9d73e3af4e27077bd2c3645afd1b9b0ea4e9576da78d346d8d6dab5fdab857597d537dd44c95d96e6ee5baebe9eb3caea32854af56b7d3b989978d19ead387dfe45a78d9ed49eb7d40257d1fe7613c1bfa194ac51ec6dbe14bdfd145719cc492d783e21e769bdaed5aca959de21e2f700dbc30182871bbf975d5d7ad7f7a65bbd3ddfaaa1aa7e515031d13c3f22384c3cdad5f006f211daee987a157964e77bab293917a6bb59ba51209f66ffa6da9cdbe5e1b0ea86b3b69d5477339f8b56c451c7ad5275bff84cd502b2793d03a225da23af5da8468f6bbeb9e86344efdc9ac607fbd637f3dd17eb8565bad8d2de7d6e7447f9a6ce0e7e751a1db9109e3d64bb93130304fdecef5f508fd69030c67e2babef5daacb5f1aab5c90698dcfa437eeaa3229f6f755ab7ce6fb47f41ca1db10ff38ed920df7efc4e7ead5cf7eac555aea39c92ee24172bcc578e8b305fb7ee45b931764a600df461de475fd6d29f6f6b98166737cec6fcf856e5ba20f6ab0df6eb0f691cebaffa1767d58d6f8df9ee45b9160c36c3f5953b521fe64f980dd7bbd6b2319c654fd6932c6b596b49a1b9bd4b29a574c2705c356dd99736f93ea0a6556e48af2286fdf5d5f69ddf2969ab7e8dec09ed88fdebadaf4fde4ee462fb32977ad5ef94c057dffa8721e0aa4f39cb7ee56cd08f3febc7b7be632e93cb9cd094c06b5da48d7b00f3b1cd7b0093eb94c06c8b1f83cd60fd918b9b2f83d9705debdf93b763d59fdc9027758b975e5a190b62e5052d7e9d75ef5e9c0d06f863af007f8c6b72ebd6d15bfd75f5e37cfa5b6eddf8d2cd07f4214f3a884937994c5e136f2b0391ed999785b880220b1421d4651b40b1c41151aebd3c0509c0f88991e28b8e1245ca900f10d7ba3cb483511a3c3c5145d1101ec801104129e0728410971e6e7659a88b2f7a5678e25e38f0e962872ec688527435cd7b276a873b2e0ffd000957bb3ce4c5105da2f7a4e01bce1da8ec506587257660c10e51ec9025420821845076fc0187943c1cc5c083979e187c7e628c7246ee4097543cea00113a004607ba74e08b139f184b0e250824a22432d3184229ba13e9c1a869b88723da8317eda707f5f3f33f5156f6c90f3f42f8200c2892cb84488a961c2959328517212755a8a427b8a209695cf15141119c28411750b29055ccb490a32144370c99220d2c47514a4a9d0551b60b4891089191a222469e74c6830f45514a2a8de881111554406101b55d1c49f4349cf021a26431824aa908b650e183193d4894a0a00312d92d483909c99223254b8888c289c8e24460e1446881104208bbdb218410429725387526e46808d10d4380849a86818628109106b405f53f5cc50bbabbbbddddddbd3deef064664a8c089191a222465200d4347c252886146071f7eeb6de2e671931f14252b4e448c9929f2853a63fe91f4070dbddbbbbbbdb5bea6084d9238c8e383ac28b94299c3cd18314294838c982c7796005102dbbbb6d5b1f776f9fd107986c6b4ad330d095889232cb4c9c150995a0eeee76771d5840851c0d21ba6108125a90e0820411900003892e435081810da0184288248cf001173a90ddad0312a69e44888c1415317285057d258a2b59b42b58a0ae68f9959452870fc0c824ba24f1a58a4f152852b69452ca96ddddedeeeeeeed696891089191a22246948842892c4a60a1841625b83869d9ddddeeeeeede2ea4cfa0d2854c216a1ade5214c314a369dd494fe8e0ed2de717588444888c14153142021f12402181141250f941f5e04410bcd8e28c21cce0e91d5871032cb7dddd76777777cbb8c5d4488a961c2959c2c40f13519898c204108a892bbf0a7a3db2b5f8ec7702304ed0e5045f7a4022020f60e1c10d8a7a86682d46d322913f7cf1d2450c1e10a1082e4ee0f1d6c175b7820aa0ebde3ed4734595d2344ca56328a20a4a0a1334a0410854942ea751b068c92c087ac81082e534882b4104696428c1aa400451a7434cf1c1b004911d1d116308624b15540c407889c214c30f4538a04de4f403465c58d84f88142852a46836584210ac10421d8310439ae98a86651891a2ac1042b943941f082184107a7bbb43082184d0a180104208217458c6191449d19223254ba8f802448df004661239325254c4484f143db14740259548961c295942a918c3e7fa77d3404687220ae968824cd2286408d10d43a830c2d1f58fb13a19420e4da13eeae9e929e209274264a4a888112abc2c81e59a1145068b9c76169fa3eb37b8246d2345458c5081c6968e5c48fa28154088510742a046b8eede2edb0c204449a9f8c2e8ba174d0a008c30c2155ec8c04b1421b6e8401868c4e950dcf40072614948c4485111233f00011121b416c29845ed16523484e886213e5c8134fcc30e668c36b60cb4298d14153102254bd330165206285aa49c160a0f657c51c21967e0a00c26b416926bd9ddddeeeeeedede4310362485972e625cf0a509f3e7a703567a604a942bf65044a5bad3273d4f3081853238310a6aa71ed802699862a132f4f004a129c3cf96a91f58fa72fbdbe403e576eae766f34b4759e9487b190c487c12e9a309861483ba98715e8d5eb90ca846e968e37b749404eda2b421c34cbe5be3925cc3c6c59c532d28ed3b791ecb31113ff503732c2e03aa1950fc79243e4c613fa49cc168e0fb1897c660c2edefb22bb79f1b0df93650efe384f2f83bd178546f4a78d1b0d0c28ecf99b151e33bdee2f39e4acf35a7d3c37e9cb87724b7f44aef754708dfe68e05d1ae3b06e435f13678539bc634d9fb66e587f2a05eb5fd683ca88c48f6325bc48268979491b818b7be366a98b4ad44c612ba6c325b6a43bd3471242ee3e4f6e67c329b3b9229612c1d515ae5b7bd21a7bc4eaa5bbfd3f124af9a94ad48305ed66217328801794dc89f8c93fae19515a99fdbfd8f7132205ef5b3f65dbdfc9d75f93b5bdf7aecbb558c007a4851c50b976700ac2f05109233856e7662869ecd0db8a6bf6be1f2c5ac5c6f7df1c1fa523a8357fd25131453098ddb2fc4b483d00d86fabb4b4726e926ff61fad2518c2f4d50e2c080c42f71ec42f7f7c6e6384a6394c8e09afe6c2b2d816bba4bc9cbedb77a6ebf356d516e7f0e0cc86b627bd76e3e170763e59ac718d03cb65e80b20bf01ffb2123d7add4a569fa1f0b421f03426fe9886bfaa50ab4d73ed6db1e1e8b02bfce24cfa5c472cd8631a0792c6b810b2d7621fe86fd90df4c137fc38250871d29a7c27eccb77456cb5e14a3946694a4954c30f41443a90ca53394522aa35348693f4adf8caa6836a94cbcc98ccf084ab076fb1c386ec7dccc7d4365a3460a35231373823195ba1bbae6a40cbbac55e994d1617333373333733337b77d0e1c3754366a701993d70436cc90ede7ddb01b42f8b8eeee7ec85ded7a77c3ee6ed8b01b367733a361ad5cc2d9995d2ed1eeeed11ffa60eddb1a7ad6209bdda35f2b67e00721c70b239c93d28acdc01cbd303a01d94808a72efbbda7419a0e455a829939c39c2f18a5f8930cbdf80e8642b8ffdc6a555640e56148e392324ff910429494912daee16faf9e02c874c22248d3744b1f69ef57fe72065d7e28440fe69a7e28662d1b82e338a4a1574edda55328218490e9d6711597a5cb76f8e03f9bd72305ea2e9db66cf7c1f3e6682348df777bc965aee9223a6cae8f6bf8b5d8e1d05b4a8fcdc26ac535dcd21b1ea057fc4e43cb1f5cc34fbb217497fe0e00a177295cb644324a14fa735894720d77d71c1a89061ede0edb9fe41bd5f99b5ed374f9f935aee16f8d6ba494d11936e9553a2d156cc9c3b5c969249d1dbd8a1aa9dd25d4487dc17e2e2fd6a68d55333fc66ac01734f898593a63ddd9e39a02d77c8e1a49ce5c93820cbbfda2efa439ec190967a4937ed715ee688ff2a449d8ae0369e00da47129614b14f4cd7bef3da6327c49e9b09939660ed3cccc50ebd26b2ebdf2ee2dbd6a2c7ad54b402a979f7695cb2f395393a13dd6d181dfde2ddf120f0a182dbb1d973936b5d65dba187387b0e55be6ad9bb6e4d7b01fdc0d63fb75d1fe9dacaed279c2205cc34fdda5d32925840ea5f4e8ddee6348ebe6a00bf16e49a594dcd15077e9b4a594afe7bfa79c133578232537f5ff1c0c1b36a4bd7a10420857d4a58c971f6c32b4f7f2218430d2383784dcdbf709b4975d7efe8b6b1e6f40de75e61a0aff69af9219e51afe0767607c4560e8e8b4ce12a8473d84e191139393fa4e152f8d83309fbd6d99c95f31bf9bf9b8c78d1af770d585d9c33cec2bdf4a18956333ccc99d3a47d534f0d438aa5e755f55e39c1ebe66e2ba26d7f4d9d6e9b8993ce5002f8cca4aaecb7ee6b12d734283796b6130989af9723b6134f085e12a3643a9341f8342836fb11fa67f1890ec65de07346da8cf745c99f7d12796f98e569919191546035f19ce4acccf9813a7a3571af780424be2b73ff30b43711e86ebe45f3fb74edbde356d8fd1d2c677665bd7e4666f2dd95df79a7c9a135effcb28307926af31d0c11692bdb950cee93ea74f9fde9bdb7e8f514a6c8ff108c20821379faf0042b8c57c578688d0834751c214685c0182255ef0a47f70211a495cd8040a2fb4d8c28328aee839014f7b2145103d88520481826bba2c451053d2e096f01f05985cff1a4de28380651efd96fd2b3eccf55fafb76cedac4e51d1962d44449687ac55bf6233b0f0d7a31a879f1d0c157b187e746da85ef153ec87e554bde2d78139efa706cc332c3d4353cc5bfb7ebac6339c91493d43d45b2b638c4a98700b314ad9e57600f82bb6b0c3c3783bf2af16668d0d3bb81aaeeb4b93b15167e52477244a7630fccbed68a4f495f4b5717a18b485997d77f9d1a52f23d511021a227a1fb9eee6d6ef98083b324e49dfc71d89cf29e91b8f8a82b65c21021a9a22446b883fadba635aae6e1d003889e375a8f02b76306a9e5acfc27659342ba480c296a3dad47000b0b019ae3f626bbeeac04c7b86b15fb26fb29c0d170300aef34b6b64048a31c628b94a7fc7f6be051658b8f15d83ebe80cd769a497e13ad4e9535cf09e9ef9f4d766f2691aecad8d9b2626f5938282f97cd7f43ea069e38b63eb72dc2e0322dd2e03ea322c9d094a57fad2997ee832185ced7d74968a52cab2c829893772366ad03e7ee472881a7792965edd44bba06570394b0f35164dd45b9a0b7596e2cea6428696220a1a6270807ea20597638626161591432122bdedabaf530977ac56eeb065783b2a2e34bc9d197480b733b13c9bfe2c41439763828491debe3a5dc7bf8ae8d9a8b65071793b0e85cbed9f41138b9506afe0f7abb65011bd9d5217dbf30389839ddd01c618dd42ac06784f27d3f3fb68263d7784f4dabf779245a2110b42e2545ac450282b59de8ef5e5d9604143abc1c572fb3309a38586f545e550e4cc66263327fa31a457e65b06aead9b757dcbe1cecd2f89e19b5bf7dc1e942edfa7a49d96f2c1b31d373a2c34641fd74aa3ccf5eecef62477caeb9c8c1584de2e03777247e44b29e79472729dbc9d942653294b62f996c12927693a0946e9d69d395cbf53a65ace1d998f42c56845f5a46cb3927a18a5b5d7d63ca899f97866646810da16a86f2d0edcc959554da5a49cd3519f6d56aeb756b59259b93e5e2faf7a5d5946b38c52afd6e554cb1efedbb29b6d49ae356db0a575b32d876b625eb984eeeea69b6d12d03e3e671e3d0729dbb23285eba4d27199dff6ae85dc9dbd9b556b5d2e49a48c944592c7cee2bf2dbea665d55a974b929cf3b5b367534e7b019139948b245363c37135b8637d611b20b847cc0d1ccadb89195a2186538079369d7ac2356db32acf26dbfa4e9929d12d4ddeed5be90c189328d1ee0f37f524f533a77097379a3827f57363cae958e8cd2932d74e3157c40c61959ab88e6a1cca9237deac4ae39c4cdf32dfaf9d3614afb42ce8f6b766e466275e692fa33d4af3130e3d1d467955ab3dcbb22c8313deec0aec393ddbfa665760cea5314d86ca4a30caf9ae9457b6f1cd929436cb925446c7b20b756549f88451a25436b3be554835d4e6c384f64e9e07f5d7f6f33c28cee77a27cf73714cb8bfc9b5cda4f9f3d55ec37e689c8ee69a3bc7e3a6bbd1b209a394b1bc6e3ef5adb7a492172794c7c7c9f3f838d1784a67b00bfda532580003e89f5802284fe54a47ec42bf5401bfcea6c47ecc9732fae617ceb62ccb99c6f4d76632e170ddcaf5daf5160ba299dc04a3ac96c582b86579613523f9dc71c34343bdf5dd4a87857888df3b6a43314d89c6b4695b37e46a3fb351a6297d6a2ba18c5ced9fa9b4e46aff4aa42f69abd284d15ed5d2f846d3d6c92e03177e9366b429e1d3718a49e294f045d14c30098c50c28db6164b2fbed251ea89c7cbdfc94953506185d50e1e5cc510633183fa8eb3a47ed8a69ff9addc1a66ae327f79a7bc9e81556426177247e6bf171bbe6e276d5664643e6e49a215949581d0a7bcaa8573660fce6cc2eb99731d0664bee94d5bc70466b3827aebaaf65442bd0985b228eb2e3120ae4d9f1fb11f24d7e624f9cc3e4af9f192dbbbc0a516b6495e496db31235702977243e49c6c88f90f4156872a37c5c2323eafbca8332f32949a4247edf6dc24aea499b15d5c7d467a9f7942ac267d54cd604aadb00f619104a66263523839a7ee77b2b8de353c97459ab624dc86982b9f8df95cfcf4035b3a2d56bc53915ccec76c69d622ee61ef0bb28e7657a9d52b8dca970f9bb154e5c03ce8273c03ad8c9f11d6b612e38e606b7bf8331431c0383fd4ec78e140c32cf5da47c602fee062ff4c67e74dc4a5db8a67f6ea532dee684fb6cb21d78b8fd386ef8c0385912bceacf3c50e5034ab89c3ea74fcf3208a10d9437be571303734aa1369977ec47132593462a7931f540ce85c891b624a5258cc136fd1203426fe426bf492fdcf8463965ae20268245d0a883e1ba9cf057373cee133348064baf008ac982cb53c8a174121ae95e5b8c90a927cacf8d36c6085d534fc90bcc893cbe01f8b22b3003f2c7fddab72c0392c9806837c46085d88fe9db2565748f573ba1a5369fd4ab3e66e8ea4a473153806eff14ba72fbb110dd98a0a10b14838515fbd37e661fdab7aa4d9bd9545afac7e354442aa21494cec9aa344d0b66b6ac4ad3f43750154fce2b5e47e4a3b6ec059915a6e94f6534680288fc0c069c5d8139f52d182eabba5de9a896be948e3abec47e685f3a22994a4759a691b2127c3bafcdbade38f2f2adc238e9d54e6834f563b3209967ade6d73cd26ba45c72494821b52edf66ad150b42e5b52c0b0b422f5511d4763add88c365adc58250bf76beb5c0b5b826fe85fd90171684c26ba152a69f3b000c03e25706168605a1262a5e4c526eff4ba12e2c064bcd2a970165407762995048ae8b81c16d2cb7d3a650c9682b798134556e9765b9fd9db56557204dd37459141996db9fda8052509aa69dd0ba0cc8090d835cea67061a0cfd440c16ee114b4730c7b2e5523fa99fc82523ee21533f42978425a0f2585ca92109fb31db4269a6ab6e8fc74b47250c08774b47a5ab6ecce31b5f0b9926be090b02d30f72a0b5927c6bbaa415eba1f571b3f2a3f1589f6d567e503cd64f21981333340473ec37d56e9701d5ad014cd39fa1e0fd70fb4d5198b8964b7d60881098f376986d3ad2ed523f242b55f0aa9fb4592b6c16568b47042dd534ec06cd62b116e79b8da269fa49d80fc9592c43dafbce62b9fd76075609554ae3d028754acb2959321331d1f55516741985262526afc907400c9cb9b5054d0460295e0bb771aedb6c6cd3afe3c265a1070aef9f7642a970686f47068bab32e0501d8000b7bffb29075f80109e2c5455411980704dff6927003c6a58a1fff5ab80700f1564783b3a6a80e185dbdf352aff8fd7d67fffeefd81f8cff97ac22ba3ad1263749a18bd728f0710a3bb9431f230bbd035b931ba9431468f2e2593e9510acb3a3a8e2fb6bbe964d3c5dc0ed5a162aeff3b72e21affcee6360c004e38c0986a6022602aed3049a0a4b5509a804662414342ca684814c8b0559604bb56c02a7059152e25d64ac15ac0aa3aac1c2a45a15e804e8e2e99729b1890b1fb2b331073708fe8376ac07178dffe1b14f52aee11bf29f42a0373f08a478d0a17252300d40e142905148adab7116563a4717acc814d698c29142ac6f73721a907def0a590246931989be6a1be944c6df43028eb94d023dd31312b372f90c147af5a8846979052cba18ed40d239465c484839d49b806c975410b5ace4f187950870b7930128357fdd48cdb4f803eb75f136e2f2109f7e83090bc9dfe72cbb86dc4e4db685a6d54a77cd8f482274d83d248d5aba65d9e97db4651726d746124286b542b8706eb9606988384b90ee51b12c660c2eb813a5c23ea5b83f103726dd44656fc5964fbe4037f0d69f42ad9abc5526850b3b01f0ca1cf663969b5ec85d959d2d142005eb87936dd2300285c7edf3a07bc6ad85edcfed75cdcfe00708fc601d7f43716cf660867083a5c5ce82e6e7f67737907ad83db3df4de107cef514c2b49b855c88147e7943de2db6176b6f1d7a4bf8621005ef95a470dfb21df9a2e9813a4749e623aa68a6a94b3ad682d8a8c62accc76ab50ea7ad8835c0f7d6103bc32c2205cd9439a09267e930885721061992fe6193c012317304aa1f177b3e8bed762f9594717836efb742f0d37e365d7337a3bdab379cfef8b47c67b49601cfff70373acb712f6cff5d1fe761e18f4edbca3ebedbc2ecfe6ed3c2f26eef19ac035efb1bffc7a12d7f5cdb823541f81f17620d1d1db815ababc1db8e5bd26700ff803ae793b90cbb3798f81a1a56197fbf8bea0c97fd0bde5fbe659b80816b9d050afb0b8cfb30869cc34f2f9480fae0f88dc068e83fb7eeec0b9dca2fb1e6af12deef32beefbf7f007dcc36bc035efed789667f35e4b16f77dd72f3293297fccce85ee7be6c831908eb18ea05eefbdbbd77f75d37ad5ae6933becb934f8c16fdf7d5aad1ab3be79c9ffcfb35147ccf4afc1725705dcfe43581d075e0d5d38073bf17108137468a8a84003e85900a0f17ba6422fa80ca97232831bb1882095b50d14248d110a21bcc10c10a4ab0041144d15028c1911862780e1128414b17f1c6104634d04265441142a08415d4c61421840008a15a83089191a2224700c108319ec05249786104163e7344174630016584140d21ba61081e183125c214b185113a2001d384140d21baa14a1653bca096089191a22240369822034b48d110a21bb24cb9322b11222345458690620a08a690a2214437104183229e4006f523a028e20749989004588a10a2e24411556e92d039c4eeee77954420f029600025f142aefb35f42827bd56e0f6b9fcef09bcf3a43c9bfeee318171743cff338377de9467d33fc5cbe57f64b018bcf3a83c9b7e2a63a8f0dd4bc265a0f7c5652cccacf38a80aa5cfe3702def12174c42322cb1382713ef082f0e13de951f17380776e6ed2b8fc18e01c7887c7b3e9e7918427c03b3a3a635c4ec20e0ccfa6bfe007f0ce3f102ebf031867e6f919c03b3a7428806de09dd54a8b2b76ec102200ef689d012eff0b8c737a7e1c0e00e3c03cbf0defa09e4d3f0ac7c4c2ebb85d8e7eecbbd23531cef5d7652f777dc4e5ef11f0ceabf26cfa1b680a11bcf3ae18c138f43fc03b6f89672304e3d4e7f6e1f2bf2a6fe779a1f955952b6fe77d595d794e9e5c7e342b6b6d5de97c410fce39219c935a9502996f2d7704be95f2769e9727a5ff51793bdd43e5edb48f9307e4855a5e6afba0420a3a50e871e2e3039d3d16ad56a5766e5608cc792b609a7e1848e1a5fb5f90171f6fe77da9ed3361a5dcf63970c0c901f83d67d7e4567af376de170b61806101727b2fa851a7652bb5f6bdb538fa73abbf63c74c396aa634e9d631b9b6d2176435b11ef6c372d6cf8dbe0fe8a3aded08fda9bd9df7c5a25432a698130ca4ff823a5eaff2057de7dfbda078abedfc56aea340a8893b025f7e69eb82f8edbc2ff6bbc7a77ffa7d79af678a2cdab6007e2fe07eec5571fbaf3783dbdf3e0f8afb847b3c17f4cfdb792c785808a95cf7acb82d83db3e2fa87120ac96d2b7f062ccfa1764b92e5e6ad5f806bca35c46a1c9eaad008496ef978e6c427b491ed53cb6c727e013961b67e33e070e7e958d1a29d48c4ccc09c654e2b4cbfdfc9e6197b52a9d323a6cfe8de3384f824dddb0be43b14cfdae449216a510b6d0b7df75f0cec491820ee4bad4edb41bb7ff51f89aa6fd606753f99eefe3a293b807fce61a7f6f273d0a47605947a72abafd9687843173286cb3828a48c714aa5b0a0af6237babbde953519a94737dcc7163fcc73db887fcf890673807f5317bd2664b5b2a4aa77e9ed04a33a4a058a98fc291a3beacb55a177d86f92ea0dfa8744cdb286ae9d0cc000000008316000018100887c482d13ccf621065bd0314000d628e56606a3c154723518ea3200ca2186388318600400032c6284376340f6a0c9159e26f958c8946352a6e85ad78282bd7892d08c3b94dc0eb68bbcfa18f7ab0ac6b54116163494bc300cd1960aef1122963a0f595e73f328844a58bcb84bf27f25e658b76607bb3231827bf0660eb844b6d74d48b946712c6398c0c87452c67fdb7b428f9e441c9a662c7a4d915d097fe7902ddcad22439f8952351ff83cb09ddf4f690be4aef885d0143ce2e712f28131ceaf10d0ac88d1045e58e270cf814ded1d5ffa713a431aac9a3efba2bc2e6bbe4425e2e0798acf0ae2f505311fa680cb9de5c1ff5ba7328327116f8c9a77f30124ead38b315ad56fa19f4246ea8da2d532e822c2ce7bb434dd62d91e86a11305e42464e244bbfe5b6141797aaedb7e19c33f3e52f7cc27721875d93208585b0ccf076fb5b02ef7d470a4d7b0cae2d2cea64e2d9044402242226d60c56c005c4f6a2f32c26a93f7fafe180bb206e9090b46bff491a319395b400f02c697d8c0d08104913ef01d18b940ca7981c6049248bdbdc3278a94336afafaca3d2aba9f306a441e8b5d3e0c689e36db4249370db974ca294815cc393a581f41285429d15c6e8302a6de14f70850e0df20cfe6557481276aba7a64ba848012893fb4643c6c36510916013c9ecd27463309cbc0c8eca1dbe1845109452913de6b97f57bbdfa2d12b1f8f738226f2eb2a1ef645bdf04d2f9940b6f1b8ec0b3e111ffb5a7680f622492d22f59f7d168302da1374946992a901682ff5a0c8b4f93ae280f68bac69afefa26aefbc085327693a0f4832b7a873442440642f1516687f00de4658885e2a4b5cd45c528913ffa175863cd0dee4f8dfad5b229959f34aa37610f1f535bab19079f4fba39a13642b25b81a488003df64380cfe9a87318ae164205e9cbf254b68fba59fc825b8a53a659c7ce8a2665371a59589863d3007a1247ac635092c08cd9769598714b023951ec6613913f10253f85823f348211654ebc9199623115c318d07e319de09b440a89ebcc338a41cb0b688fe3c9330870605cd18efeb04f046256d0f87c6fc956210802bde3f677a7bd891da947d489430cec00f6a6becc954cfa1ed2790e36b056571cbcd4fc1d6fab4271b82f3087cb2ac7c2aabb7cc57e0a8867f0cb36fb365952ef55751b63265d1f44a2b78bbc2e606ee60c2c2f28a46f979fe389454a36bbee630995ff90cee3286592a153d53858a58320449405e36a3f89c787a2d80e99c33ada0d01d47166d76c63a1ac78d412d7b876da89486becba68ec5cade0309bbc382fd0f6963a4dcce756a6ceaad8cb18fe699d45ce69526fdf89ac84b363668ea546a5c3d80097e0641ed3300bf1a2b39b67d133960d285414bef3b786cb60afa4fd050d637100d689761f3df8379fa9591185fc06f360855983d3e75643c245169336fac3560025346d1298c6a567143e31cc9005c8549e4f50ce3860fe4b3fdb81cc18e5b12c90431ae0e6d115152ab99788040e381a9ef9b0deb4cd04c287dbf20abae17a2a0651ebedba186df9b56886f7da5ade0e5ab1801e6b70524db28b6c5e00b5515de748fff1314f3fc4c5b6d19b4077eae8850876e471f69b3b0cdd339524050749aac9b2bf3aeb42b9f88e68015c87bf98d82c5289e27af1c288f93089e2bb9f2a41877c64d6f19e7dac398ea3102a325422a3797da266fb5625a7a493628a85781621e14be1d05ae5d9976f3c474bc763a1b3fba794e5076ff909a671451764a3e842c0db42afa02d1d67185c1fea1d24ad381470b07ae531eeda9bc854a4cfb06d6a8489ba089399ec66bf27f4d3595961bd2608c21a2fb415223148a3f3e734f1a649d8914ce360c9553de7122c365fe605484b9f09c15342d44962bbdafde2a74f91a46d8d0f47b968fd2bb813a14ba2f3101a2442e6489bb2fa3851ffa8d186820d6af0a489a56ca776231d93f0f2a1821e005112b27ea541e6050a3b05d2cd61eb2fcf508a99bb5cc8a7865f5783f575c64b82af0ed03fdbd762e7628e4ce419369e4c141d20b80a2577ce5895f304d9b5becd42f5ca0ae4b05f4a4011889aef61a4c572145645f6d09ac5ab55c2af2e7cf08599d13148231c235dffca91faafb0cfbcb5ba96eeef5eea02777669eeaf40a808c8cdcca97561dbc5a91250cded331a11152938876d36bc28f7c8d6191c31a389fd62657f59c9a797c6e6e5ec014f4025b23117793c1e8f1b9a7922299da5e6463efdecc384ee4a408c265de0e8ca1d2a8b7d44d20d0ffecc9c8d51b3d3b9529c71a3bb81d9797215fcd16ca5d33ce280c74ef0e6ef0ac5a8b503a9306ac656cec0208524db51d7c80783f44dc0882db67c1650d81eeff4f610f3d11dd5b1a52efa5d1a86615620d5144f7118d301d8501c27cb8377181f89390a6f1adcf1eb8fdeae7240d49f045ebdbd516eb2c5c11e859aa294bb370ad506302e0d719cd28a1476869e53ab5b365bee3473c30e82d7905e027801fca88cc0755c08d05e0e38643ae9230c0906be7cbaf0ff9a53cb4a6d36f5a037701afa0d033d6ec006602f63bdef08c5d3bc2f0b7f965bc20b9917c1ba38b1fd573fa435d4492be216bfaa5e2b011c229b5201c2f31b347dd93d89b133f7aa25eaca2112bb8c5f06f2ac3ea3e30498b64cc783a4130133d36e2ac61890429acdcb045051cefb947d468d40672bef06de09269cfc83727c17afde0983258a04e0758bb51e7e0a4c5d74958008d90d5b3c263d09011f207fa8781f6f493edb7063dc44c0e9408f0e25987e22e5af748abfcf90bc2fd0f6ab6c26c2e65ba25c2a5883c73844115d3d76f0e2616132561f7671229e794fe38b0266b8f426060d57dd970ffe8935194a86a3f657227f878de0e631018fb05a72438879c6d4de05ccace81d67724651c68bdfa344a67bf2da95c3165e1af4359974ed8755cf71a51a63a233eb2d74492b5609568e37bc50276bb4ea59e7d8146f6231923376e8ddfdd67e16131c955d9d8af5b673de7a9c2c14618e4e766d8a86e332a01e564eae23219fd0316662a86a12fae616edae43649560861906f11a3fad591f5150176870f16fbc4c135ba1e7b28e4db891f91864e65611230a47972d62f5175a1ded185bcbee1fc0bc403680431bac383657b02780a1e0084866fc07949fb6ffb5af4148159187e62414e872bf68cf2b50c3d324a14763164e02c6766960435f9c4eb3f4c0f86f439680ba7abab94652906461c1741a9069fa87016fe31097c970807422028e13c2f3e73e5663a8e631251d98f8e6dc23901a26e89bb9933f360633bd924d5a9b33d775726ab077ca246f13d5e680c3f4a8441ea6b2f903384b09f79a9278016fad73883f61c060333fe13686f96c767783addac514c05d894b92f870ab65389a2a24376a38953e62bb2201ca5461f4e96e2ed34959a118ae73d24f43279161b828fe3294fc3fba6ba72285215f58e0f417ed2e9f3eec47bd597077eb7c95798d339efb85d3f5ee7b76ab80a9bdefbfa82e3e6031501dd9997488cc5515189c8f5da00966d04ae50d3c1f3300ae757ad391d14b916e756434d12d5354c091f6a6a9476a1bdb843bc40dd541a162d0544b1ecc3c283a0823adba91ab80858b5252f9673e54896c2b30e918def6f7d1ec8426f83612333af84f2b2355f1179b97b470326de75c53107d60305ecb840979158adbf2712b5757c6b7f62fa64e0157e0cd96298185b73d9c0f220b5d4d941fce0cd56160bc1f736e5d1d8a07f947b192411ab2b2845a6d3c8a5a65b4e2af5c49416086419100b96a38e09e367be374a85da2bd86527f7ce2d7bf17cfd7375791517c8623863833bb5237a450fcd455ab080f0efe54c44d0a6d5f2bf1fbe6b24e00cbd9efbc70abf723d3fe20d7bc8947a44bfcc5305878fa81bc63ab18585287ed9cc38fceb642abcca17fefd3107f8c759723ebd8600cb8c8a8f33f667408a428230c784c5852df427eb917ed65086809aef491ba4faf5e07834fe0c7c31fc03a96a6a1cfe0978497ffb7eded2acb595851cfef4081d84a6b35f3f150fcda5da661c2bc147f3cf5752d0146202824ae91bfde72d717046cf1e568a4fed9f8f546aa7759b7154a65fcc3f4f89b2d617ca083c55049332d27e365a83d8bd3fb04fd9695867c391c42046a713d59f9af7c83dacc31c7e730f145ac617f0cf87b45eeb20ab2ce6f00ba38960320bd187473b8c33eccf48ea66ce32d1973f1ea18bd0ebbcfea7e60d974b164a9c29b08926eba7a33620630728fbdcdc550efb449c35183c8bf791d11c8a0f192822f198a51bf6296566995b58f7ab01b1e4026d239fa3ca619fc6a1068333e87e468f691368e6493b433af5bc8e344f0ee4cb7dd6dc62f583d10de2a005827fde6ed238e9c0e832bc07ea72195f06180dc862f0f7343760dfea40df12d75a9e0cfe81357d6c17dc4e9093e7e42aaaf3a71cba2a063f62229ecc8121c1829c0ce1da5564d105e59ab406522f075e1682ac7368c43c1f9eb4c1f5b0ed6276008f0e8661e1ae4b789be23aa263427e83cfffb8ac80cce975235aa16d8a8548636dd1049cde93b7ef1fd36d8d4c00b36b1e379af720d350cccc8b6060d92ee0012dfb830789d5cb7123b009c310775683cfb86b481137deed9edb1c199cdecd5593f43693824955688b84af32453d83a717b9bfbdb2eb92722098ea03c79a466fdb44f4e65274be255e6f8edff30e23d9cf9413dde530dbe83f2c98423015815a5eda24f09752e429baf2f56428ef944053612dced849a43634b02f4fb2ec34f1596b2362570e19eb68f343e4269f5e1e818b90a4d1972e65e49df7975ba6f70813798bb1ae807fc2fc22f931422b5aea59f8a9f4597a6021c4f53e597a1b1e08fa8b0f20af7c2e09ec0146d858088e97f440071c6af6b511b3833daef023a4e5c431da8882a9b57356a4b241dd06d98870e3f41c038d13ce94b3f5cb4374a91a22d6ea512b781fba34c6c270f6d3db9b378e04653b82f9247e73987005b2b2e1030343a6df3f7222151e2d780e06f971ad8164203c6b55222ae8346656607147f962ea8470bc602742cf6f3d15ae00e81c0e03e125fc2303b9ce8b26529223dc189c8aad2061aa39bc0b642420f2e12166daad6e7564043e7d9d846bab84aed967db87438fcceff995457a069f84d4a737138a2ec2897e468b08596d8a80de20778b094d9478f883c4ae1f19fd69882f46f15da81c2335771af48411afb2230fcef8fa7e93aa77b891e85dbe0b3976eaaaeb56c855e9a744008f6ddd9308762010e55f18643438a2be81bb2067592ba32e2d7ae1c09eaa42a1ad2dc2d6a88bad5ca8de140e1d1ec7e3adc4d72928c6c43acdf4da50b06785c7bbdcad7b7be30e2d3b489525a5ac87d4096896a34583ab378f749f44aeee0b3d0d309e26ab7fb4222477083e6b33898dadadf386da9dbf36be1d6f0a6fb5e30d4e6a081c45f850b5ddae0e53cfd4a53d428b9ec88639376294f203be3d14b79e3eeaa8ddb82f3333015e19161fdd7893fd2137de399c6b41975560afba3630db96cd14e0af7d1120d18a313a5ed91b4b9bceeea6b430a7820aafc379590ff99e3bd53b2b88ff70bf061bfab93a8b81e50863aeaf494b1ff025daaf2ff7449818e3ddbe363cba45028362bc85d81b319049d90ebd980fd05ff83925ada0372534709047d00b650e4b8d107478ea9c6af932a8dff811cc80df7ce8b0a1ea150b807155945f4fdb4621f4ae3bdd82a550ff3214fec5dbbb47ea758ba4cc1744d996d0e6151c818045ec5948aecba68fb731414250dced3a8ee0ce3236677bda05983a98c53b5493246479ac13e688dd0b1828e694f3311b2fc9a6ccaa3b13885245ce2953f76f50c7164ee8dfaa0afbc26f425db2f04676b5a5a6c59bf422e42927ab4f4c9f03ee67bf2211d6bc5ea4fa10e1176014e255750b1eaa3e1dd39d8a241c130e18fcaf8d009017fe3ab97d9abe553fdf1444347dbce8ecc6bbcf7f7324868a2f2047e628a069723b5ccd98c3d2e4d8defe4935f9ddbd5f3243dbcbe3974c30e1d76692c5d968bae5f45f059340ea36c8c8036f16900a4684f7e454589cb0b2b9964e07272e49799f8d2b84f5dd1d822ba5c9bbb6be3c09debdb411c09350d0164d1b25d85a44a00f21b69103cb02a46ea483427ffcc77b68a4d9b884207d73a69d98b4b485138f53ea11ccf32e48aaa5fd34148d2d0e0b2095fe78981aa6275ba0a21f860dc4cb8b1923809554e10106e3195ededfdcda73e935c2db4aec09a8461d36df223bbd1b79d7ef56a01ad8e930eda4dbe75a8a5647f3b381637c39a658388c2bff0e8029bbcd901f1a26331e4a58aa57e160bc2c970324a7401bcbc0c8c140e8dbe19bcc34d1b6e1e796377f01577ea7c361a22d428a831039bb4170f3e6205046fda23af38c817ed325a59b7fbac16d2311ee7758a09e3afe65bb886d6b2939a8c43ca6c85e75cc2e6d85f02b3f831588fcd60f47103d313e092566fbbaf807709952bdecdbefb074d20d108fa83f18559b45be5caa8beb26db2124a9bff204a1d7fcd6fbd7363e5877f8026b3175200da914456def87c5c54a5deaf3515f59634f5a999acc7c2590a70645dcb8abacf671736e29bca7f78f80f56366b66d1b0b5f45f420508e666443db004b1f22f7855c1690900622f9a79a6173121734784b6d1b79789d1d3f9f14e86d772d9c13b62e96613ff09d0a41a9c6c02f309c409c418710bb18c8b8edd89b03f62c2e5752d9eacf1f37dc8a3af33ecf06b2b818a568fb8050fb5d70b2be6e0c5037abac11b5f69f6cd54b964934d09baec1d028f0bdeb683662b6c109268c0730b01e34810bc9ade5f5d2cbb0a285d2762155daa470fb3d8926d4c87c7d2e8931b1e08d2651dfa7dcd8cd7c50c988ce744b4786eb253c5de3087cbf3d5d9514441e34de254f84c5f132cfa424839a1d7cb40b918658f35fbf9b17454297f827a8ceb825eb9644d4abcbc92eb7979c569410019d78b8371e8d192b83b5250e6e7b45b9c507a63fd94184ab49e1eb40743c4d0d5a655d1b2ff42af0249b4353bdbad9801751b036c88b8c6a7197251e0d261f164c0f7902953bcb6f4b285c60fb781daee29d2d0bdec05c850c945d30f7352b4f9225ba7e147c9cab7257c5c4921d502f64a2bdbe0a57b21b74ab621f2544868c3f571c5c4c4a98fa4305cc5c3e11bdb61898a5723ec51c503f29f6ba40c1c8935e8924dd8c677f29bb6a49933e4715b9dd209b9211cefa0c6d10064c42ae531b269c9c6359296ea5568be1dc5724750d4a94c36f90ae1df60131e1461db42fbd20611709d734dff61f9a79cad64016d4d4289980588176fe6f22e20cd0d8ab4d0f80fa6ba8a2f8e9757d4e2e793c770eaec2e8229a4c57a3ae65d6c2906f7cd01358893c140815cb1cc8e736ca8b200fbc1650d93096267417523aba0cd546ad7b1f463c32a4526d31a9530d05c3c85c21523a7994c116c6fe5d98b6dc95c27e81ad5dea2228f595812141b0a111873b3bbb8347fd94117e928d8f58d4ae99a7d28d5d18450582362e9e89ce25244753490b337e60e5eb21ca8aebe0c478240f6c58da3ae24ab26b20b6167d4765e916760c1a13f64170d1dd22887ee7b1a7c4649ef561da17d19da7b2dd369c11a1fe223065f7e597a364010a71a3906a88b4bcd0da6ab33553dc0177591e4ba142fae6d3c2a5da2608e9f495abda9717b72831074d20b656624fd87a22470d0c8a9c79c529188478b01c5f75c19742c35db390c69c7893256a6c8b735238816df9078594c614ac11d7899a5946a2b463cf64ee3485c116a66a7c263d01015305161416fe39b358b8cb0f56a45018caa699d4e40a085fd89bec9b79175d7ded421b846a8f24f9c27e3ecba3300b60f626124ad6ae1ba4a7a7297788b723d59936127f7bae0f06237207f4d5cc11b1d869ac3406e1cb0c8d2b1e87b639fe780c3e935d06135e3a1ed600da104123bed6feb1ee5e866e474f9fbc23a25f9ac82616ee876436a24afedbdf653aac8e3146514195103db154324a8ca8b12182a06ca15931bc61d0fc779666a567fa15f0c7fb48b7d964ce8e9833381d1feec35538641e34b4477c6333488e49554494c91cc561d21e98f0be4bdeefc34fdfa757625fd9493431bbb38014e815cdb6438998df5aa3d81bc50f720717a71a247ef2af5fbc1e7e8809207fcf4ee5076761e029c0d2a242d7bb0ff6e077618c94203d4c2870be94509ac6cff59ce86031441c5980b452206903617772fbea5f67e55e4a6e180f4fe18e2f095c243b225e1aeffaeeaef23c0aa521d3ec1379fba9843539b5015ae94cc7a5d98c931ba2fe3559fa5b6350e604daeb6521184375321c0752254588427382564d2cde6e3187e732634f9c8726ffdc15a929762b51782c0ac10d8924a07d97b7ad81661b78426d3317bdad5475be810802a15eb814820c095c4e40c19fc447bb068df8c79ffeab539f0e3390b94b783284c7de8e218d9a37169c5033b3b92801f056334cd24dad0eb4e121fec7400d0a67141887abc5ef18e2fb55abb63410a214a0d230689d609d5774f89b2e89b0cb0953dc55061bf6a3ef81bffeedd802b28d90718c2c8098b620ba89dd2d1d703f4e643735518fc6768c47c6b94effdb540cb957463f21b542e970916ad6626092fd246f79c59ac3703dfb559228642d5913185b528e869b13334156dba51c592dafccd65e93c0ac481aef20c04930d55db926567b927a39a268d02ce867f21b1c59ffcf4eae899ec453285497274b9c2d20ae9c1442cd53990dbbb53136ef417e8ead9f1f6dccbf03e69e2dc744395c219d49a8924982110a23ff9840ab57c8d2d17e1d13db961ecda0367ae3c1906337373475d2579241ee975947cd9f1422bfe3f53cc8bd5622773d44d9b13a46225499dd0b0c05d915accf39706e23a05ff75a9f6396a8b81b5296b93845106bf87f0db5c7cbf8dffa8e96fa6a2bf8969709c7baeaadcdea7f7e40b65b15415c46140121c16f3068754081833c40f44c8593d701fe476346b9a97a67acbf2cbc04abb5364ed37dd071ee97c6f33f7db330e1600c03c8035f1c882f34227286fc8bd7b280c4a98302d6966b04fcc345e8c2f3968893a2288bafbabd54a3863fda36a4c62ae151c0666bfe7bde192fe36f19c94b549de3cf7426946b62c1fc59f1de059f1d9f7a5028c84e4f560acdde8a73187dd8ab78d9d5528c19c771ac771983a03f95a3d0765d220c2e499f8fef95f94c2b5fefd397876fa6f0a29535885ebe7cbf09c5cfda15fd0547617fcde676807c3a9ed54574b99aed00088503af49f9f16fd5c142e03118686f93cc5d2bd6391516dd21a149470e06c72157f3de85088dc0af2bb2c76356ca9c4a363804921e826c04b4a7642cee35232cc63a66d8c9fc94f18f4106d065eaf99f5a5435232ce01d814aca0ca9eb2c9bad42435cfc7aba39371f566174eb60b381d779e370bed44848bf7f31bb516c071080b6a90e930c4734ca80dded7358e87e1025b4f4e7dce21025b55ac045afd48735179569f340186ddb7e86321acf08efc1edfe37bda33f39c20aa40a763e7f458aabd3094e901ff1c9146d845a4f21f9b9eb4d3efdf0ccd2e76c5a2744261d1e532264f6c7086ec4f44c85cc493b68b4985ac717692d114b1d4418b5671705e896daf3d8a3058691717446157b1565d961acad2292d782e043321784c19806b6867de03d9093aa169f07e3777ea96021464076c51385c50496154dc84b3bb3028cbe0e4cd8398a69d208ac8ee5f32c73c6157055c9c86268419fc622369af6789ca35c983d3a6ab6689199a01932e220e86b2d8a55118353e5fff0895312ad24a25bc9fd9388b2c1856e6f2de8963720060aed568371f5288e81bac81274521f8dc6d7fab63d0b531b627f3520b2107a5434e48d399005804215e6d1b1b4b3f2a687c630910c33095486ab947c53831692a0228a3223048eab70a8a663e8524bb4cdfa36d93657cc05a925d1109b748c96cca9a676dc20f6a3d87c99a7e1f711596d47f478e9fd4cc14d3d608b04b7e7a56a07accd408927c2761bae6e9b582f552ff630a286aed9509b483d666113b5eef12d7cb78af9dc43d2fa158deb76705ab25317547aa585b185b3d1601748b92b73f1975fb7cd365b7a4709723013e34f4ad9c86b7e198daef71637cb7edd6a137d7a97d6d04d42432f084413aae111eb9bcbe39694fe8ab9ae46104e96e137987f1d6eaf9c43cd751c474930a1c80db98b076acd94f11b4b2d3fdeebc50885b9a0b8d96ae070346b98effbfbe4f8f194fc5e85be60b9f5a1447f17bfb99e33071872340be41cea32cf8b84cdda3d04bc744c9733ae7769d441f50fe26a8c4da3e5ae0c38d8116bbb54723e0350cdf3a11a50727a604ac64f516788d6f1e731f2c49cb401edc5cb1fa44ba0974470a48f375d9638021c75ca0bccf499cc0fd499b2c35732e87a3868b40268eb2dc86f750944226c34aba7369c022473cdd64d0169341ea572e55dc294e6a5fa0f9007966675c375fb1cbd4b1c2ce3d74c6b831210d590477904d28c09c1569c33146be648c5e05d0ddcdfbfbc02922d1b8b33b31792e9fe7bb808ec2f5d7168ea1b0d159ba21b372a7f1a0ffcf10e355a0a867887310fb32aa6225cfc239fc5949315271a301f1e6df5909500fc66ef7c08a77926e100b335129012b13a4be52bef7ded2032242e6ff608e4c4fb758bd953db00b6a2a788283474cf3f8ad3c784961e083239160ab34eb51be3675e3026a1e68ef31ea2fc75d23522d8a9b3296087aaf70ef7328cd9cae7d50492d30775a9ee44f014a70def4df3f70fe176b3f46a815208524fc105502d529fb85bce8a8bc0f5d78c1a54e18de0cca57a4fa4d8c1c62e89795064213cfcb088fa75133d50bc17ddbefec09dfcca89fd0b5a459e807c3f0746c711262ea6daa465489af495243831e20185a800772daf9a81aeed91d4b8f336feeed0c98c80c0cb9ab9ec811ea7c47c57ea7a9a8b633f74352b5c695b082ab29b51608875afa20ac9170f3b04e4885bc702fa6f9d5a58089f627ebc791868353901bc62dcabbe6c7bff15b2dbd76041fb40e114f24cd4e9e21129efaf4acf3decd82f451ecd24b26fa4e64ab2ae29a649140c1795230a35587bbe3b6a66f95ef70f2ae6296e3b6d2083a5d9428102011eb82985fb1e0bed463182d0976c765e1f6781c5e12257f0bbb030cae0bcbea7228bca05da1cec94d66168185f7b81514c3cbe38be09fe1df26ae99b5f739d74abebaf928c31164a4eb0dd7a5402a800caa445b829b92cdac384957e70de4ae5ce7bac9e4244e4bb79469548b2e2c237cfb1af6a323a9dddb8b3dbe844b66e7b3c12d6890c1d2f64309bc266fea4e1ad2afd9aab439c43943937d56de9c535b796c392bbf583797f3c1250d4647539166ffea76d8008c9264bad3503d0353fe4cf059bbfe645d0ef96c7b88f95d542ccc5cfff027f4eb6ba4d62ca12477227e09833ce0de8379efd087bab0cbabe8de7b7827de29a9bb8688d11a964c11b9b448e1b0c5d56b10ca8f76714c707ce8a9e08bba7225e4a01d68ba5e36c896f475744a69061985b1b4087e0f4f2c829c5d8122bfc276d7966e3d8ce9ae1de6a811d1ceeeebcdb55fae4f7a7592b9b827606928d48abe9d7bae0ab03296b203d1bc7848b69c6359d34b3fed3b755248123ebfd615e52e0be8c0b18d776845c31d9f333f1493cdd7305fd6945a70e36441f9fd8efe2d9bae4bb8824c01adfc1b51b856f239ebb9c20f50da8141fe17052b8c89563d43cd8ec4644c151a2cc0170665ae37d174f289529f605eaa83e06ef7d4b76291ff206df7506e9eae9c20205b31249c4651a9cb85f2cbab593a405c27113d74df38a9fdc2d7c3783067cd03ba105a841785bd3dbd6ccafdc34d039e1e29a340b3a4a2672add99b0b796ccee040bc51d6053393da3f7d032c24029b39bc30e2d55365049105e6a39cbcecefdf6ac70f627bd51965d0158d344a99d4432fcc841f0f96307ca52e0eca4b8f464a9e318563cf07e6043d46e8462e19f0655626d41788fbde77b82c94e6ae704bb5c5f2495056635aa9592c77455df0b10bc1d12d587fe96ca9b15fb5c650fb15080baeab6607ab640dfe568ad74c414366dedb379a16fb3e8a38c3153a67eac1ea718a92017a1de099ce8b7aea270055a9066864e205fdcdba608938626005095f88796f85ca94738cf8820f2dae45a1606b7f318538c14147ba31c2c8c3176e614f7e226e96652fe4ac67f7ef0e9981014d0cbc8b04c41b7cd0ba0e218a54efd7c7405d8902f71efa1087580d2707bc3d6bb4cf52c62124574ffbde27138b15dd141073c100ed9e49e465cd6dd17d0e34c1fa5d7aab4309cd9c132ab4792f6ca448051e9e30b3054beb6db080da61c488c289d70357c08fc6ba0e8d9a940d432c9a1304b357d2da68067bc354e141c3ebfc314f0738992f49c902ea3fd85b54eee8a6b429ab7c3211042611da8d089224fbc1d9d8c71b49409dfa5e8aa1a8b87afa132f3a615b15e0ecb4faa99ee615453a70793c5b8870c9a4ea6026116f39f32fce0f3bd630e9844f99cb3044934b816f9b975c098ec3b638dc809bf3b1063c7919ecafbb7783b162c8ac4781e21844a6288c2a782e05197f90ad8e5924a4aded804da98e76ec8d8523660ed44a79d84792b9e321d66551fb907f74932c8f5c7c97f4190aa90b9c4091a898d6f05f6a99ca10cd021ae92b3c9fb997e037670cddc8f1c08357f0533c6fd041a11ef8da39a2d593dad87c713e081fbc12f57f567bf02b166ff42b423e96f9b25c63eb1446c122013755faa06a404a2a0dfbaf8385da0ddb0503630231702bdf1601dbe3b9e335997f98f22143b9c2a42634ae730c82b82f03339e65f68fa4f6fca08b3634c69885f5cacc5cbe4260b15e069fe666be6072d0581ca27ce46566ad3a9465e515ea30d56b4709305a1415386a51ea5edbe0c2237804eff2cac92f1efc6b155eef1128bc2b733d2c9754c510c4a88eccb9cea18e4b915f1a8ea28a6199e8e9e0ad36c10ebcd2bbd6c345a73035442e82e0ff704905eb763be4f80790fc4235056bedea6b78e9a5dd766d57fb1f1073409a893be60dd57c0fb75ab61ed986f69e12c51ac0de0e5e36bdd4952f874b3ed852dd1cd86952135faed8dd4cd4e49d86929331b3d844a4b8cee5b3980337551c1b448a7bebc072d04e702abf2d14d4e66c91517b4352e84ced0180fff4e5628bf1b65be7cb56cee3c412ae0eb8a7c1c381a3d1b830141e8959d1967dc1979f4e93f3ee9d8b73a059fd3c2a7142dfedafaf4f99e2223ff674d6294d9c992e56852492e0c707540333f8c88214a24cfbbe17582f7963a07b1ea670b4a71e78c3a43a8aec832d921cd7f3f6d467bd07f7143e0ab40fad40d36082f58dcab134bdeb90b4a2a5c61d5e10d51fe4566c0db0ddab9b437171c90535395e407189a9b80d4b16014c47f86658d0b26a1348bb38453f55c0900e5408fb2f246d83598aa618341a577599b8eaedfba0dd160f040eeabd9bcd9d8ea804532d6f046019a29c5e7bcfe502ffad9de63c5e1886a3eb01c736107e36d9db088341385ced2a65bbc8ca0088da63c393570eda313eeace4dbf870d089e8240e431b184fb1da05b2691330a8f1708ab7c7c3585b2054f6bdf1d7983847e3b8792eb03fc90ff1f2cff1a83f3ee6c83dd8df849c3f6c5153126d977629cc38c2829ae9e1f3990ac9dcf0e15b1f5b347f40786175496d984bde71c5e8f7657aa84c646bf8f06813f8e14b1c259a7880f0bf5c08734a4c58a6c0e6a235ae462df2db8de52fe815547a566976d789cb65375c30bf16de0ac56f2c724ea5005e2200c5c47b807e29eb85d3f8c8aca8d77a7b25731b8ea002fcdf11ebb2d850c904573da5fe730e5d66dffd6f100d630af92ebfbba7b95a603bd4171a35791af7595f3c542915482d7aea2cc603f766536f81b890a947421c8af27422129c52308c508916c01e2b9e2ca77c9aa476e517c2f0f72ef25f6f0c589b13c0e2f5f7c127dcdb1aeddab398125536eb805adf1c9602954f30571b9009fcffe15862d4a0d2e333a37a6216613545de5ca3603d925cecde54980bb73034721b60cc122ccca761bc1357091b77422bff5fb6811572178a1e718ec8da51f85c3ff3e4c7d07ac70d6180f2d107c426d82078865f1dc744f68fb83de26152d9cfd8ef7e2926121bf74781950ff1607a244e62e30df300c9449471eba314c4e950616eb763840f48f418543f7b6e74009bf28d5824bd41a4f2d86c627ab2e12c3f9bd8f1622f002e9f907bfdbf030976511faf2084cc000638a4278135c710fab7d1595e453573565de6007a76c0dfc6895bcd10e568937d80e62be8da9467a86befd5b173d6d23499de180df349635d8912999463bb852dbe00753b64673644e698ace21e40813019492844c284365d78c8fe4cb26c2e58babb866e9ce0e6898ae10407ddd30329e00d00ca94e6292d4caf5cfe28046d1f65b5b08c7d1745f4408ccb36a20e45d235939d507cc5da7e73ab6ed9621757f0609828686f7c9a6dd89fba2c0baf2d4d6fac17dbf73f99c33a96f68d35a7afeb408bf104074509918281378387f034ee2c3a6888908731a4a1bbecdb57f19b659607b5411bc753395bdc0c3aa4a4f2a8495be8673194cb02284434f6a12a895c44c2d36a4080a8f9ef6c7f94185127876379303779e566770364c804b49e2e4ee144b82f1db3f0cafb9b596dce77b9f7f898bc2900675b64ac431dd0a9efcc1773e945715f1b8b620a5e742c5171e4fc8779524561e8056bfcb3bf40a60e602c252f1280c446b4beb05197dabb36cd59f346b89590148ac55185479c826c16d43cdb2e9a758e46bb6c9e28735519c65b971ec4ee5d07e0629be38cccc1c0d0f969d0c98e193f56f7b335c3773c2793e64374b1dde812b51a6b58c3333c5d2db59bf7d33f973f92bb786832f805eb05f883b58158dfadbf124a0e34af5c508936782a2eee3e9bcd62bd95434571a10fe000550624bdf15500c2281b3655d9879e0d1b7c7ca9eb77c52fc96d8e9eef908ec78f8778206dd0a65831293c805f85de1db00d1dbcc0fd2b12422f3c7f6ac2adaede47f3373d769bbe5ac4b23369e5ca169cfc20ec9802ef9af72a481c053c2da79f006cfbe219570ef15b8cbe81726c5cf8da4722e41a4254267ee9ed337f4648b8b06ade132c0aed445a885b68a73585f4e9c0fd0772d5e6d26e4bcc79271ce208fb5c1b5a0cc0611ad4db6fdc026467fb77aa8573e16874ea124ec93246c3a6880e90399348bcaa2b037ed7910f56798ac31d4ce5218a01e2156a622ab457155df4627a8aacea08cd33d8e31b7e48d1b3f2f545555ec15964e7521d9efc5f10779544e9f4536043382e6d025fc6deaf8842543cc8bc334321a1b61b3d62fcbe2dae7c7b035898d85c48a473e4d23b445a7dd0aa7bf12c8db7a507e2c912005c5b5c3effa36ba8b2501d4f387dc65cdd632f444464899f385c468121190da05bebe9c6df2391bb5b76174dbeaf3d7dc6bc4776a4b31794ee069dec68d924eb3a2c1a373949665fc721e00d684db2599b14528ae3c54ec008fab6fd2941679c271063597697922f98590ce63848e8db7e40e67971f974bca5a31949bc845d3b884323d834fc40f075ffe0c9f710b088f4a345e745187ad084bf6ca06c83e7485f72f133b551ffb408a4239ac8f94423ba3e4de600e00de9b830283255c8eb58ae4677758c7d79052d395d327a0e2d764b008b74f35f5481cb7609cdb1c48dfd465e428b489a5e157e3c72835cd652f49ffa75c52dcdf6b655d1d1ab89589def0047ecfa494fe19054b4ca110b5968645ec09582c9c76460480f281a94b6388ba00485128e5cc65a3484180648b07c084089331b0015f34c620a87dbb73ad220aa434cca9396613d57625a80d7228aa1205ea17b4decc4bfb7f0cf680faf5937888e615ab2f1e95f8363e6c9a2903b1ceca382c097bea95aaa601acb9dfb88d0810c65aef926bec92515e03acee9475ef65a96acc6430f72d53d39a70d2faaaac7a91ff3c27a58513d88275ec24f87a28a66420cb76a9ff2df80b4eca2c6922bbe6d99ef0cc469225057b522e37c88808b86f24c0ecfdc3d3b411dff799da325e4f1589f297d06ab13bd275c7858a08740dfe5d887cb8d93f773c4acb8dedf21d285f7bb93b7bd5348ea93507d3b3c345cf268814040c2aefe0102022955616fdbd7d4c058ffd1d041f15e66c9d381b88ed03f3804c9baedf4cc977a37a00243ab25c21d9ae5cbeb1e55206ce85ee7b816ed18f8132d6fd1b2d0bbb90280bf79542490c74eca0c2bf1b455f88f25b1665aaa16f2070286996f4a0fe26798f1805a53fecd55b4013959bacce2177c0f97d185afa6d19736751da290ec801af30a829397c0b77d26470a0a54ca18462fe4951ca81c8c4daae877ef23f2702deafeab9ac7f7373b87b9d8fc3012406d37a8913165ce0720af768315042fb1da120639ddce956fd277ab756210aa054f9aeee22bf58647660bda1049f1620e600591786dbf78a42b0129efa5dc904f99384065eb4adbeab3700bc15914a442a531e4887b84bb653b56c02907ab3b1fd4a1437f26b6c40d66d707ae466f1d6ad004d8f7b9ed099fa4d8591613ba508e4fbfb341daed8f417e7c4ca8e8e4c013c311a0571a2f73dc244ee4c72cefa42729d3917d3283f0175033e14d9b48a5f52d168d3a338c0116d94bb42a9bde50e7333cc178e9b23ebf6cdf45cb4105a922e185f8e0196149781a9a3cae29d5f9106b7df7e7a6d9facfdb3d60bd8f0dfeb3143a7df0f4fdde2a282d2f8e05ed65ff1e539318b32c45093e2bf45ec016ad05b9438d6a662409456cf70a1cd0d9732208c3411759c435c743d78ec7e9a6ecf46b7d9d5652f7a7063f6bb6778f7d4acd6895e1b5c93a8ebf54efd9b9ef022786b307a05f722618af15d2ae0de2d432909fe8f9c95f960841f7be1f25e2fb641c413452456e8427a442fe8aa6692e57671df338bd71cd5524996f2a57fbb50d7caef4390d9058c25542b58132eff215af47c635926909d9ea1737ddd60eb863881e10e6784780378e56d2978c500b6b18d9623a02aeb910469f7e01b9cf4dce285ccfb4d98edef93f8e4b7da4036a6316c2ad0f9f346936cf04a8c199bec1ec1fe78d48f9e40f07c5a212f1e184e30d48b7c72a95ca9d9d5e3f8e6b9d5823ac7bab7b7e04382a1667ea3ae2dbeb1a463cb078fc155901da1bb3a813d8982f925c76de710cf4a9e7c862283f666ea890c1245b96f7d3a259fc3513c62a6f048535058193e5c58e382470cc2e5a6a6c623751906342307a100d081095c4a2096b32f2147eb528ac91c85b603619657d0e69046c02b86d7de56dc82ca34ebef21b9d98768ace66bd678075817c1ed5776750584b255a45d973d7158779c23aee129a91c6064865bc36a2d7e9d6489445a82a1e222563f95b53e348e8301682574e3ddec2179d353d95e29f7aaec7b9d9629132ccf77a897ee11d4e4289099c101b94ad5e35d6f5b1f752b22cbef02e61a235fcae23124f3068e25b8cd56ae94ce0a618618da1573a0dbd43b5af03ae4ef4321f9bb59281833c9aaa02757ac85159ad44ba6419987127c7b66be26d649bad939315985bc192b06b067953c1f833c8f1bf96696bee242fe26e3774ca15351085cfb2001d72d1695032e93196ec1b071c4949991cae16776ec531c2140ac121cc20c9b0d73d0ef9238241ad2e131decb7679644646318ba874cae5d5edae1b92d167e75872176aeb5acc18e7ad0aa9d8d89d02b5e0b55ff30e66b3f58cf6bcaa22b36377f10b046d1396ea1e9f321352e8944bbbafc27122caf4367384aa2804bc73fd98777ba3ea498511764e8ca7898378571ff845cd7ab87b4adcf3a06ea5fa92a07a6b4e972d70ffb4b532ed54c37dee77a306b2fcab70292edf021a7d5f6650784d6652ba2f1b7181f508cbd600d7c18646bcdf015e08f6b6c6e925e05af20a8acf73ee308ba149bdb5ae673bca9ee49c435890686021e62da912ac418828e972473abdb1b0241c4018f98fba0a878f610323821ce4f60150d45ec8a834ea987f67cab9c61b1113926138771759c343e78b02128024495afe16b1c54af043b26611433d2557d25d8f15b90842c60ec82ca56778bac698366c924a4989663f3c2528036a477f30dcf9ba0330a33e46c92de5606f198770fd0cdb20ad818a3f62399b05885b4d5845dc114af9c5c37f3570ef66ac498bc2d3350dddc024c21d6934c05f58a165c199964c2494f06915330e8a085c38fb58e3ccfe04b433ecac53fff2a2bc2595b5d2fb06d9638919d4baf94e4c953a284d6819e03213a8e95f007e4c078c5d1a42dd5306ea5c1d8a8719c3b5d5d5e39c074d396ff6e3ca20dbea5636efdfa1aa022b61ced06a56fb1d9f4b8bc944dd0624728c5ece7d24e184c73f65a693a4411f9bc639e4ccf2e1e1572338e7741a5a07e68dd4206e025d06ffcc6f42621282e9e9b36bbdeef91e6eb1db13f4369ed2437fb98c532024fa183aadc1737aa13e27904cbd4e328cb7022b3af08cde708d637ef15f4cb5752942060de24c3ed7a12dd6351f5eab795848688c56f072d9e44fcb5294893d866011d9a906437d0144cc90a38473d23b6a111091f680cdea29ade6fa4ef3dacee8d1c1d75f4e68e52de4a7910bb8dff04fbe8d133bd6bb16c807b38e42939d98c2db488e10c36cd33c78a08769279c8e05158ac7076e4c011d6c4b0904f4451bf2c308d88b946674f43aae4f92f04618ecacf4a552757facf96a0c5d33699251369527109d6c729beeccfbe6c68e0685cf9a81e1c835feb84f71751805039070a5f4c15ab42578b7b6742b324795dc71a4723543dbba863989d028744289a8d99f4ae23a44e6021322aebd9340f06714ba14f0635be706607a8342377b8fc630cb2370a8caaa41a3a9c992891ed946010d2d8ab14adb06158b4c06011732d1200b7580af1c984e67a296c90192c1a48e1000581341293dc0d9c89dfb24368b2130b10a786d0dba8a2ffe51214888e5443965b0ea488221ad9da111a0e9d937a4433b46d68f963c4176d43a6985cdb9b3a411a2d2a8c9f62dcb11021c78118165ca962ba670287d12715bdb25eb8941c52497b3c78ba87b87dfea9ad7177c4c3982e4e316c6dc6f15989eb8e6a7a92d16ace122434d6ce529b417bf9fbbbe55b63a2b575357e10e7ae2a66a7a44314f5dd4fbe48b67e40c725a53ae78e144996e4df8e40eafa2ec1fa51f07f8614537b2b5cc55dee6de8a610b8ca7ec175dd7945b5a536ce9657abbcd2ea51706ad422adbfbb99b9101156fe6c0969784acb74c912b70e4f3f679915b98b71c9dbfb94a1e151284abb813b95bd11efa7cf4bea15da3bf7a60c5d1fa922a340c02b5af552afa163671b0eb75b49ff05eabe21cbf1a5b73b063ee2d9f1022480d1c4878089845b51bf82a45cfb7ade864a9e7db43e8b839c6e787bffa92a5d1d0c6e7039699de9c2cd2c280ea27b6b5f55719f9f832f8d516fb4b08826ff4a837c46d8eb27c7b9ead367f1ba67610b1f976028fe1ec5a65eb67bb7ad42f82febdc3da2790ceea03251d3e980e2ce19b6f26bbd4b03399d906dc8b28e7a984900ec803ea8fd7e3df83a9856421831e89bced197ef8605c1476fc6bd0335bb66fea150c9c0200b60eb64c2fe704ee04cfdbf8378677e797be7199f5a87a6be51cae8d6686d5fd43777be81b288bebf240c8992292c5767475b6b1f73d7ae6d1c6cc9550304e8ae15b8fd2f6abe1dbd3e832ba88723e10e844d9e60c49ae9ef44504915e0201a49f0578f4ae38e8e8b7cc802dcad9e8231c39f6ba105fc0b621e9e4fd1c73cb419978e8230e61ac8f96dd888c3e30ad50a8b21dd6107c022b029829338646f3b2fd3ae835f2154fece43f815bfab6b6ff1f902c6bb173b952f931dc92ec1cfd94be297d5ccfbb5da7a7316d0c8f59c8c3077bdd695b6de546ebdda5dddc0be6ea1216a96cc6bc9b7abcd5572d58052db50139930902437df04dbb29e2670bb4cd71c7b276bd7bf916379cd1db732ab7272606dd7f94da368e4e3c75fa921866e4b2933014961bf43c72cb50bc9afcfa5b00ef0cc47853dbfc370ce01591d2c2c65c8d5fb651a2d2b70d1a422e090202e4b13672e1dc050108a6a58eb24eeccc2c3f3013afa9a5f819ac5e658ee7de77873cd0739c8d122be328d2233be8cd5b1670a98a796160c7dc4f2232c491fadbca02b3a28faba69b1114c840c894c9e1060ade0b705173e90ca51c2f80d7307a2ac221471b8c96e6ac33c98bcdb59445cd05dee70361f0b55c889433556fd5694b163d4695d9992801ca75a5aec30da0cb9a9ec4d3579bf8d126f075434e8b1f2bfb5346f3bc3a4f4379e366065da7ac5df7cbab1a8e830a2c01b2e7e1b6da42abe962d0c79abadc2c1f2a7ad2152e1097ca8013a21ee590191017a385ab25f33c45aa32c26ae6a7009de1e91338223a1406fe5398ad9830263495f89471d530c629ebe97609311d843c4ac0023b8c64514f757e299959a80296f3693140813dfe98c1789ad47407ec0ab7d5de6fd5bc1171a7211b9a6e5a209ca4dd2d821f5cd02de15ce7a1a65fa49ba4b9a73c472af668c8e9d3db38adb2345e121ac077f9be5ff0742ef12d74e9fc995d4ad9ccb0839b0cbe0f2bcd3d5b2aee9b172f5ff7492e4e4f330be5626422cd583b121197af51e7a4f09584398e699a5fb610143a680e1876904a6cdbc00534683973ebc2100ed0b6ee7b9fc39c52f8ca3a38c8ebb0ce39973113efc5e7966fb066fdb4a58d244bf5c9e95b675f6b36b3dd8136fc320ee33464365c84784a2882c14e5a803f1a37110e9af7221c8588bf71b20c17b34414ace69098aa656b7a3c97422fd7fb72a8f12b3bd59ea5bfc47c190f339313e9fda756f43c420600c4aaac6339e9bdc9585e025bba2e358a046665e9d84afdb30dc225e649b4f27db74493e3d5203d861eb9c843abb9d806bafea827807cf123c1d91084f6b24101574ac61e4fb2dfb909984b6a184f8dddfc0eec2d2d1b5020c03cd1137c5c752b87962cb970eb57a1dd109ca77388f34dda2446e06abd98dd3550f1547d6cea541d6eb99bc606f4be7a11ba0df40749ffa8478ed642e7af5aca22bf2d0dfa63a9d25c0020cb74e7f34f2cae0ef4d5b07733b034548125e3774120f1414df63aa5009ee7036d691940633e580ecc68f233fe0eeb533e18b809341d3413efa056e583e7266c118d457d14cd2fe9353cd52378ea4a18f6ce070176064aea1482492ced343068d87023f8c53837aee24bcb7fd83baba94e89b06bd602cf06472cce0c9e490407bae1da91fbd373c7db2010e4e86f09f95c59580b49d8459fc978b6cee11349270a631a74c9b823a3d50d099309938fae3e1535dd2416affee72201cdbc66a98ce82e6117a8b99b07bb8708adf5fc0f8f8c0d474ff7961146d1601f46f8ffe9c4bde96421f9e50c87273bc75e7c25d3e69baf230b3280fe47c5ae8cb9576fb1f56440a5d164a961227c6dcb8b28db61852bab813ea9afa279b5589d5611fb9022672c1c8f984364f946ede6c5b7abd6490d96d7312ef15670ed65b4ba2b5b84ba9563da2b7de1b9adaf2809cb5751d17a231b6372c440b356b540d04bbe22f05caa69359c19108fe5ccab0c9439c87f349bf399a700a08e9f207e038902133be1954ef22dd67c8e38c22010dd742bf40464addf4adc32067e0f181d675b4f894c62414dedda7c9a821a920e22201de5c1ff8288c89a28ef59fdde8621d7b057165629c816af3020e8fe802e99e17e879145008bb34e2b9ca862075ff58a1ffe34a02656031b76283e747be54e87b9efdc939879afc8b11f514b2c047d2d8cd00363166451b0741104219ff95ac52256913d36520606503a403967907bdabb77d136cbf6023226f449bcec805992a845c7c03b54cab3d1d4182c25b93bf1b6d071cd69dc6f1abc2b848841656f2b051ca3d5f6952128b89950f45a568e3e91d86e66fd556154e6b32d23a8c139b7f0ce61c0c57969e3797413ce58d3971be0ef1e6b008f717a8114512018bf1d983eed6a4d6ac9e0ffacd0fa32b854dccc6a6ba8cce41e1bfede71ee808e4cfa67339f9b65937f308d2d27eab15698d2676408a5a6dfb1e5d39ca951938257664ce9ac2dba03954ebcb788d8f02c78809a664d30df0b02169342d9fb0da05e0fb256356ed090f71b7110f890f77e54fd2b752423d3aaa1cd69ca984eff37309b77c46999ead051b866375ffeeefada79cc3bd14ebc738d453832ef37efe476ffaa947997b571c1f08a6aea79339e65de4b3b13540e7a1fb905d87813157849f35edb68ccc7d2bce71a31f9b032ff826c0f032d721403504325e50e6c257b3b75fe816e1099896301e716d05069f4b727f4ab580dbfc2d6d068e9bf222152b45aa67048378ef8b7539b9f49bcee491175a8a6a8f00bd3cbbffd954627910c0a52287819e42a449e87f7f2217f381cc83e64d9f16ac426e9bb843168b6c0033925edea0c0df41e2461d37ea7fe2e105ac959d92b95979b69d351dc36f4208e5b7ea373cd935431fe549e5430ca38625077b12a8821ad7c35504417f986ca96d136971f82e5805d6adafd419f9594fa352f32043120aca2486086f92026583ca5506084a051ab93e8073c9215e39a68be300e037daaa3aba7d9464c53e2f347051d02d7fb9d2a4e957984806ee0b5a1b2c5d90e0d81bc01a67b913e613824e9000580362b2e496ea2def7abb03b8350b57bb2d69f68d51fae4d08996488b7d85736e5c637e5a9a51d67a3e47d99c6566c57c537b4ecd9453becd8270ef0c20fc4898524b864cadbd3d8c5fcaf8e730eb0887d87eb357458d1b8f7c5379037b238bc663acf3b45255c451c4fbff46d07ef25ca41f342bdd3084e26b1f572ff7860b40d21f947bf0f4603bd877a273965e88751d0ee2758c4537b1e0868928f523f86411b39dbf99a2fb036f0d9eace4f2ec3ec80349e0be9bfe4f49f4f8e2494aefd5c7842a9e842888c8aa0c069e89c34c3f56ea07b56a6e924e78eff4b56ab0a3dbe5637c5cac4eb1d94c97ebfae6927f293b78485a4b7138c5d1c98afd823f895226f3478976f595a61105f9a85aeee975313b1a89489a8a5bedbc31a2c86ca95d5615a7a181dc85e535413d15de2f2ef0c4d67fda849e595f758648fabaf984565b7579838e11555e29f00cab97c32c79a9c990d47bb2b78830053c92c4c5086a24f17aa5684dd69aedb74d761ebebf87b6ce20ff74eb8f1881d9d00fd1fd3a64c9a3341300cd92dbd7f35e9334231216b1eaa385abada8541839c3605b8513daff818be4171f75c3410fcb2b718205b568a1b969e87b5f0538360206594f613ea5e1c93063f335234a3af6be61d3d3567d85e392510a70732f7ea54a81e9df115590d8010e322782ac2086d2b26ad239b8055252338c9081f6ed8d9f383d9e0eef5f176416afdd079cfbe0a9ca47333592ca342795ad57d2f8cd1c2480415a9ac9ef6e4141cd6272e86c4ac8c1a6c45d60986dbda311250ccf2cba31f4a01f951b9126258aee193003919b79c3a25af713c6a97f23ef8e0dbd5fb6d05ea6b58bf6f0181020191ff8f16b699d52293e68fe58ff41ca412e72e0c5d12ce4728e5a612a295924a6d488992fa2c76551d9127853a791b4f6024d0f62e48ad3d03d7f50c9690625bf34f4b0f3c2bc362887b64daa600d21109d49d17e278a0460e5ed5a85b92e990e48391d569c422000fe70c988c5f464211ab53f0502c09cba387d5b671e7adb3b0ecf818ce80f77053830247c13458072f208cb64e9407875427f9f31240ea4abe5210a9a3ce479bc46c309d0a9546af776a607aa72138733645b1c2576f17c13279664d0d583505cf435a6c17ee464f86a3de2e16b3f04cd56e172f13fcf89830e2e3097391a7907d63e1fefc77a500ef8d63b3c84030e153c9e00437a4aeb3772e4cc5b370e3ab954105a7404e04500c5d1dcc93f61694b4107afb1f50be8d4eff52d64f70b3b25832d6d4c9a3da5bb03a42df7936dd7e81f0110714e492a382efb3966cf90c2b171bbfa1db84523e1851879146fef87fdd49860ca158163b572f11329c65a0116a94ada9b5699b141bd1924962a9322f66acd70d74ba018a457032476e2be9a36777f11f01a1ff6d43b20cf33bc26d6633c884eb5da0d3bc5c981dc28d30a1cc19ca50f32cae854b9273efc65fe7914e450a3a208839e6f9eaed9375d8dad636f3e292689d3ad6cc8c8f71e5d2046942dab8b18b50e43d89c6ec490c5bc8f4b586eee9a6533d07b5c7940023fb1e79bb539185bde2b243d063c11860819438c47a3ee454816e2101e0d6b30f65ba73f6b30b0f234045234324a315e9ba43325a0b4621c6aeb44d9a4b9f4e6b0b1d878da23f5b787eb1f5389be395a8baebdd4b7f03bb647d8308d81d3495b9655001b62b170f10d599c8c361ead422c9317f2195a9ad8a998a843223fa5ff27d513b604936ec2234c962f3ca841bc8a3b580e1318a27f43b67ef4f5c829cdc0975e37b398b5d04e414cd0c5ccea1b78da4dfda22f92888369e26e3feaee4c6cc011801e1bd6bb20829888804f89adfcf60b044bf23ba09c35f960e8da4a0d027939d965520725aec77d3581a58f6d5f2f26f8ad7109d77d8944fae33a506010d21d1038d71675c17f0125684e3724b5026c4518508ee3e6222c75e086b22a25dbbf55d6b76857f318ff098bc5e0e5ffe946c7dc9cb449eeafbc31cc113353f90d34036676e880145e156780e553c6bf35310abdb240f34a0b88b2bc7fbeae53a2006c82f32af4d85469d19d48a910462556d55925bcffca38c42bc4dff0482812353f38d54501233cc17eb58e3ac753ccf3391f62c9ab927e43132428ff2979208bb1c66dd66dfecc21f96001244574110a3ed218fb2c65b22be9bf128f59f4a60e79a71ff66f5c676609501868c650afd2b7f5c873f1eb14b257b3184b937e604e521634797ab0312b962d1b29ef77801c57cb5c7df36e587fab3b536028b45866b9bdb21110cd5ece9020c03eb2af70a7328ef1bc40f354ad247218681330b4277fc494eb462f73dc3c5e4388d8f5da636fc6810235302a0bc189e867378bc68c91a687e3fc379c90a69f734cfc9e1865caeffe93a1931ffe2bc93d3243483ac2f02a959c94aad4fa8d55f19f0c38879bdf15c45f2b83d5983be804d2542efa7e5cc0ee02dcd1f93b174f642ee392eddfc38f50ea9ecca8f31721c78321153649c4d8fd56ad6d2b7bdd6dea4860733a5013b2dbd8fa890df7abe3b97eedb55dfee0ded430d1ddfb135a33681cb3cc827ffb2fb3fc7c0b09101cccdbb96c3046d588029eb69720c8c48d1bbb4394f46a5e8259a396646a6406795507574dd0de1b4c318ccb31a61d6f2a8f5cd326580983e06680dcc37a1be5e1598ae653344e24e5cb4fa674720730092d8e350a2a96139c68486fefa229c5f971d44ed9a85588ca285195e92cc3a4ed2656be4aaf3d462d50cb0ebf59b9113f49b3047963c0faea64c5f59abc3bbb689f2641166aab52599529ddca292346d790d6c46595c10aa7d1248d2770f678b0b7cea696a80d2cf6614cb7958ead72266ad0bcebe9dc967d29e25801a810f775ede5229cc47e096fdad70a89a23338b0a444769b4be3e048159790dddd1ab534b65776845af99c3381e0fc9c055c4f704d52e3530451fb429d32de818d9ab5ed660847f50953dfd628288c61a0d2cda66b0219dfeb8cf12ab64aa9d1a65e072a97089fd972196039004eceecbdfb7f65d51e6923f5aad64b0b24cc456b8d848c9d4dd6337117b9f50a77c9e5a9b350887b766479438c47ac4a2c3ec048fff4f8fe8ad5e8269e0cbda8afd8409950fe003d1e3c51fd9a1a11cde9fbc542a9158d7cec91737ebe1452f47f65e9a7478301a00e739607c267b68ca981a58db92eff59e97cff1380494bd0556c6412bcd85f25fae8c39647eeb24bed6430035b2f0c97251a9d73f928610ace662b210eb18a081e49036d181619452103d64ff35cb8b6d139ef9960e3d834bd4f06da529ca8a275da7204b2f896c95d3f5dc5d67c4ba17c45cdc1761d325caa4c61926c8cba9cf92268e12c64292c035b3b242b8dcb9414aaeef713a06e1cae8157aa708e9e1f3fa1597809af269d1432522c52f9930c09cca5cac0b56a50edcf1b030a9dd943469403545841d66cf15ceb21eb4d708c44a2badc2d992d821f8ee365c2fd409db65410060a9c3a5956b4c0682c7c88ad9b2892882e83ead50951c0b05345887483263658586eede6e638293f902f629b9fc2e9de47e7a0218832abe4ce845f0ac3a26b1025721a6851577abb07fa0b4a6db19f21539839e47e61ef4e5ee0fefe694cde35f71f3be091b49cb38eced530bd128b4786b1c36d4141e465706b5cfbd3a01c32958d976fd4a2adcc47c5c871f6e32a89ac05d9fff6c55978b0e6ce0b067ad796ff091161e03c24cd442b907f82483e70faa26bef4855fce7a8b81b887e30b3dd0812a2c7c89064e317d0a21a96d40c55495ca0cb1c15d1de7dc36c434b8a162268c33025acbfd5e5c308eba9a0e0a2f8b0c104c1efa87044f0d877760d07675a1a1a2b29b2b6ad3cf0db5ef1b5c1513275d64c08d0110f40df363463a7b1108441d6f226b7627eaa29682f5b4837fc7939ec67bedc2b112da8e5cd49b36d9724b29654a32a305c605580633675e407dbc9f0f73598c5a959cd35312f346ff4e00c8d2a14ae89927354fcfdcd63ced4bcdd333bf953387e7306ff4631db2c4628c2c45980db284bd0664f919c06ac03080915c46f25380d233df358f4f354ffb182fd33c53660e0763dee8a741e27673e773079b3b1b28534cd9c780178cddedde2adb2a9a19d15573d61d4c98f08b18f7761cf5a1355c8a25eccb580f6ed733da74a77a46abf8989ed1d273999e51a7e60163e6a058e60d5ac3620e598a301cb284fdc762b05a6e9b1a6dcafdb44acfea12cdf5acde9aa7bfde68ae67b549f3502c3347e561dea8d233faf494eb1975a25c92f0a49e551c2ec9977c29f77b0e7e6b282828a81b1930d0e66f64c0a84dcd4b65abad671587b32df5ac4281b274eb596562aa3ccc1c558879a367354af35424a64e7f135252ecc06091bb7631e442eeb731f8d318717ec555283dabb9e66921668e8a254acfaa537b43c99529fb4f1b63ec19bb4fd6a69e5923b54a7fcd51b2e672bf6bb448467a86a53ad9247b648de47e5be4326a91e47e1adaea176754aa3941f0a967b6a84b8eda92fb9fa05e8a7ae64b68699eae22f777177bc514b99f355626c0e47efc25f7afa078527d7d029f5494861ef863dccaf4a77ff4e7a4b34e6bcb13832096900eaa11d2d4fbd1c2c2613ce757ebe8fd0e8ff298fff0a9d679cc2f20c914c40c9e8e406acea134e7e9f86335f4340d34d0fdf029fa148a58f67f4f673e486e9cc1cae431c779ec4a79ec8af15807227d1a02fde8c9e1d310285c815264d94fff474fbeab558ff7a9666808320181513cd67469385628ad777dbd6199bef1e58e00be8cf17c39e6fbb50b7abebcc9f70ad90ce04b57be32d0e4fbb3672ccbc1df4b9694ac388f5526f0a19095a94ccf58456a3d6311350f4ba8672c23cdd3335651f3c83073b08ee60dff0d9e159601c087b5ec2ba12bc675fc6f0884f320ce78a5721ef677e732d62ee98bcf97938a4c8932c874c6973732254001466a0438cabeccb1dd60f0654d5e7211e0cb1899ce647a5be1f892c56a62ff4b2faf588fb31b6f0f224b8cc79c95d4b3b64d9f245bcf1a27234b5f72022c657fd6ad67fdd43c8e832c3db39af4ac75cde3df24fb0cb2c4347f4396220db2848d64f9342f9265ac27d33c48963db9fc8868fe7e445ee84183ef853cc25f8d358738045ae17a56899ac77b566dcdd3b30bd53cdeb350d73cfe44b8b08b6ea419ec95167fc5f0bc5aad6825ea59b823f20b75a1fa8a2ee1ae67ab772bc29d981a5f7abea0c65ff0ab114462c6a08c00ad3438c48cd92ce3a7cb847c1802d91065d41743f0c355e83d6965ad1eec7983fea7eae92cf077385d916510482fec8a71190a8ef3fe778783637372c86b39187bc6c0bfa40ffae2b38ad8bc6f5024fb0f600487e819412b1df3e711c00dd6518d3fcb883faba8e603f07a001065b2f41ce3632c23d9295db1c015183ec84457f4de003da02f8aae1dd455caa801a9640799ca19b90499ca4a33aed0b942715948a2d083ab4c94ce564fae77e67bb057aab1a3608f3333c3ba38aa63e3ba2e5f8fca37e7af0637835be3de7b2ff991ad1b5b0a27861fd5521ef34a546d332ca819ff91578a88fa804c54c76f25ca9d716c7c1802fd9852f2eac31068f5330499806c3c68630c751ed2d0a69bec47e37ad5d0ef296b3d7d3b673865aca7df8a31654cd9f7942c7f4c29201d43a9907e54b8a33afe11511d7f9b1a567eb9685ae20c2b5c7de18e82e12e83441ef474561994c35f85ab3004fa285094cb569fcb6cbc7f6883fc113f1b1ffde89472a7945c57e595cafe1a643082553ce65f6304311841278ff99323f8e4a01607698c2017077550d45fc6cf20817288b80941269c71e61b90a904a3b23fa88245b94c45dfa5e847a94fd176c0f900f6f42989824fe55a83f519f118fd8a8a9c6c55ec973b385e5feac81547756c56e22b5758fd7a7f7845fe117d44d98db44d45da902018f0cb8cf9bf46508a19f3778d200ac02066ccbf35825266cc5f1cc148140d792273841658c218e1c5694b1159565004115472405c7962450715285541a252c39419a48c60089e4d640ea08501c214c08b8e2db32c398ae880ca0f103e4f643a104009071207356c70c30c03b861480f191e2d0410e686979d2d01c802802274a8c480b0f144031d3250aa8184410da40d338c360c793234b4b820cc0c2f395b70b2dc1421830a0c089b27353ac4507a21b96aa0313243cbc81091cc8c16ac30a197d516300b56397d2ac042783f5c9cc5a12ea13024873d2c27046c8d78f492f0d4e35a6b3d8a6b2892ed579287134d6c8ccc3266a70c1110a4a0cf89e79c78b4f6ddddddbdde5b6bfd3166ea23a54e8574d0f5aa049c38c432c7dd7d5eaed35fbe72adeeee3ddd638d2c27e283743e6db560395fc3f36ac07c622c7e2d23b653f6f4fc68f7c8b097836a7b38800110670535606a7ada04f33eda247ee90e7a7764a2d2d19d78cb889dbf195fdc7a9ff78d2ce0ec51a8265c319448a1a03c1ca617091480386b2d3b105c28136d22cfa73a0a855b0108ceaa9e7d5e0dc9b233d581e01d275de132be4dd4e78ea13afe38273ec1a05e172b29d31d93dd3d1cee12e16e11eeda70f786bb381c13f5f1a4dcadce4aedc6f85b9bb5d9eccd667136cbd494c350f586a5c41dac8ef95a6c08ca12619cc8046bfa5c85cafee5a88ef7d862454f04fb72358f1461b07fcc348588c7f28ec1d4d6384fca3da9eb38a7363ba6092a7bc550b56928f75b22da43e597cb343c96730ab184ddb1c44dc323f87d1f6b7acc82aadc3f274f69733f0d6246ee77f730d94ed6956a640167fc5f2e973d83bdaa1e65a2ef4f593d6ff4eff0a9aa51ebc2414a8a888a29a618fa1215b5a5e68536eb7b97ec52e42e0900717a9041a66d39312603f10ce48f0381fefa95ec006d3efd201a1da76de138a98214d9bf015ef9dddf7bbe8343470dec32ffde3ffcdd8fc41ef3ae75eaf453fa95e6140a2c6d93b35e12745cf1bddd8dbbad4889f81215f1d36817ea28afb5d6d974805e6aa1a8b2d64a62c74e6224e06c1288e5d4cd5ccb24fb57f71ef7ebeed527099c3ebe75c64c3801fbbf6064f68f2d65ff9d9e4a577929b6e3261cc9fd27b8ecde2b75e655f4d34a4f910bee2f7a87e12ffc0b930b29e8a53e8f1043850a2f7880e2b6a379144f4cf0e599fb020bcd02629771a0661fd43e200c21189220620a2949340fe836902aa483acb751d332b9ac40be7c9fda5a3fcfabb5da9da11d22cd43abc57fc71da1e6a1ef594ceed43c5629114baf90bd94524adfda6b2db563ed9da1bcc39477781d776abd3364c79d218fd97aaba5352ac059e9577cef1784e35efc1b344f7dfaeeddb1a7797cfafdba01bd54e8d21672758ae3527086f7eb7871e4199577f89d61fd1d8ec36395d611c7a5f9ca7073d7cabd72addcdcbd32c4102f184c5c89ab177672adf8008233601deaeeea8e9df2b879ce1b340c41b712c51a02f5ed495934ca5a299db5f55e5c57d5f370cdf98775f7d3acb51ab1d8e77c4e0d18dd4dd8aa5b9c4e9c38a1710495c583ca11f1c312fdf2a4c2e589af94f14375bafb87622c8ad4bbbbbb9bb6cc5faa872d4d7e901244163b5a4973f9b9bfc67b0901145564f7a64aa078bdd6bc619f06859606eeb434f7945e55daa2d4cb0273b6e3ceafc0a4c09c2160023302b3892c49e480e66703e4983e73f6f3d301073bf96de4f919ccd98f53a6aad13cfe7dcc66ce62cde3bf239a40755c670216620897a4240936a4759aba9a18af8aedd4516b2da5ded45dec5d4bfaa0dfd3b310700f8f04abe362cf45d3bad6fb9e85e0f5b82494408179c33f044b26fb7b330b0ccc98abb6c8fe9f15d99f040acc1c1728a167270c59d2abc8fe74429980afe7b289df044a71ed9a1679b0f5982ed35b94cd459edf58ccb6a277797eb3a09b8ab2c1e4f9ed65ca58ba2e797edba80fecd6381b502f1be6ac04f2cb1e419edf219832d5cf6f10cc9909e3fc960186393ba163c8f37bc894d5d47a9681f2853c3f88cbc0a93c2797a965860e9f3f80396b28b3e420cfc7e13f7e63cac49f3bde53e60d00cc593369d0b2995947a11144b9252770b9256188c0316cd626e507294d4c20f1793bdd14db11b7e6c3cd09babbb8a2a71c0c452811050e8b2820d1114a5c51bf1d0b42db951fca5caf89cdd6fa68b5cb71e1a105366ca2b526a80871612841c6ab55a22946465ed31424285e105fb85bb7bd5ebdfdf4eba84f524e204492ca7ad6decfe692caad6b82daa2a9a989195cbbeb95c05b11e5b694e9f2352404da6e5472f932a2abb72cc49addf1a04b38f946979413d8de483f1c5befd2ed5c363a1d72986221be5e4bafdbcbe6fb5d52d4a7e6fb5d39dfff22a23e387f23e3679ef520fdd2a5034157199775d5e572989ad220d4e5708082e572100362eaf5865f467f063883f4c0f38ca7f9d790ac73bb724f9a11715766060d48712e43c8f7f158f6644f851432887f3ca66387c7fa7f5cba95cd653337b4e49a7259fffce80073a60efd9c7167ead0c719754c1dfa373532d581d1b7195753877ecd88eb8cd1778d73c628027a9c90c112480669320da942900c82646de2b1db7def9d98b47e8733091fec90c7e74b92aea8fbad317c3a7abf8396ae31afa15751adf9e8d279ac3f7b8fbdeb799e85912e1dadb75ce7f227ffcc1c9d2dfed0034cd62f62883c97477ae099be4be78a7a11bd92dcc765738971d9bcb2e392fbc755c6a3b4f255cbede56b28f7cb08b5f7c76525cee599fb75e05ccfee3b982bc4d2a5cbc5c8f3ca105064b1e632d9cdfd740971859acb9f992705914b8f9c375a67bde9709f1d504d8383ab71d2c00ec40ff4c60d740662f920defcfd6c5a624a9e61026eae5768c8365fd72ef77757dc4d012e2bf10d0fb9ac57b6dc4d6ec45abe63e74ae608c1be46298a3551a83a39ce79ac573697952e5d5e72d9e77ed78efad41bce8dc9576c91eb08f6f4bfdcc7a5739d7e0f7f49bdef39c3ef79effd4a74d97dafc763b11d9613f1f1b80290ef6fc463aef4ce5c7fd4c83836215e5005bd962106d05611e74fefe64dd91f539ffe89e3f588e3913822508fc4f19ee68368f883e078e40a3dfac519d6ab30c2a405118368942483ec506226354c0ac14f3f28bbc8201aeb0771ea38cd18c2d824ce8cb1f187ea349e4d6443511d7f92650271d268dfe32fe753100d8f41b4d5ab46d57b230b9dbd5f8d1fd0ecd5f07f64902029501d7f13c85a6e81eaf8af30c2a4a930c2a4a97e8449fb6a73e7d99a282c52d9ca260a47cf5ef87854fd6af448163aaf3e1c55f0bcfa1ebb89aed0a35f450609a27a15d93872844913ea176ab2713feb0771d23ae3d9f992962c5b0ca6b58ee637880aa1d723a212b9185326c42fe7c010e8e370597d229696649a976eb8617c3de8fdf0d2073c30e88729f59684be50225346290b324a60bc50d275a1c4c418252c5c28a9a0054a51b6507a32a59483164a4ab2502ac24289869d12912b967c61c592a92a968411b3a44b98254db060c913982557a4960841c5121fa658d2e4cb12a5a825475e9684a0cb9221299484a153d282289454018592a827946ce1a224892d4a8870424953134a7e8052c203134a48b0849224257a28a9c16ac9d65a6b2df63c6badb5d6a34a64c8a2c485246c6390b05df1649be208db13586c5a8cb015e1649b52840d052bb0e188b031c9d9905cb1d960c5564405b6215592784125091653924849491245539225864862841049aa0491048828499c009104871424b1a120c908989280e0871e493c906b3d41aeb5d65a3d4a6badb5566a9194f10189165090b0e00912299c2081ea01c9113824564c8024081e9040d901890e4d902cd10189510e4888704002c3ed08184c8e6c518223624870c4cbd21127948e20b1e4484ec991216c474e90e4c80e488e2c1d398294744404484762383a526ba3242eba28c98a1e41d297be21894bdb9094a58d24ada06b4892d2224862ea102499a089924ad034241d69102419e90f24cdd045925ee81990ba681990761d0312153d840445c380a4441341726a0f20516921a414f410a41efa05a45bbb8094a46b48378481f401309084be2f8ec87c658eb2f8c81c81f9bc38d27d5d1c31f18d39c2f27171a482af0547513ebb45b6d65a6bb1e7596badb51e3d7af24d1de5f06971a4e4cbe2a8e8c3e288866f7744e4bbc2e88bcf0aa3a9af0aa3309f18a32e5f18a3263e16183d7d608cae7c5246427c5418f9f04d61d4e4fb62a4f44519217931aaa18bd10c52180dd1159189a2480b288ac23c51e4858b8fd6ddddddd2a22db8d65a6bad1ea5b5d65a2bb5599c28a2092a504030f164091d9450d28294a586248a660853941c397ae96a5174b620869c6c319e2c15a89b9b52c4566bee12b9e0e1a618e12427e5242586e250ea435e64be33e1d4e6bb91e94479fa2dcf2721bc98f7ca104c72e951f2a4de2de5b26f31b373f3dbc9653526e983de08a133423ac87a2508814b7c9e0f5221a23feec6d4ed25abc76aadde65e726b190ce9c3cfee40258e7d3bfd307056f2ee95772ce9f73ce39e79c77de3bbdefdef938b6dcbf53abe755afdef1478d9ed89038f3cc1e0c6248f6b809ffe68382681e11f182d7db9149145d42744979acdf62115d36c37f3d089265b7c62029b41ef4561857cff3bc9750eb87ccd47cc93ebc9f79878337e177980032d79b07c4d2a573e96cb04dfdd7b746224fdba1fa10bff30c81c49b31b4aaaff32bfe2849ff7e0bb95cbf0422956b1ded5310549966af55553d2c0281ef915e5006c70f3a8b6fc7d263cae5eb7f505d16df1bcba02c8a336a1d53a0bafcaf039cab6fa4a91fe3de9ff5c1fa316415fc99f7fe860d88f1f5a73feb2f59ba2cd5e56b555fc9b25e1204fc1fc9033fadf7556349fff50bf0c70eb824cbc98cbfa3ea55ef7508422571eed71f719e8e3897e4313d16c416c4b6838eae22594e448ffc4175332ee9c31f933ee6df3a969e93f5f535fc40fcfb34e4314302a139c64fb282efbd870d003f46b5f6d68beb05eb7b0db0242533aed77beab97efd5ac91208cdf77f3cd6f5cb1f1ddfd33c382580ff8e34af52d13c48a1587fc918ef7a30c6781dfc18e3553d08132ccaaeceae9172f1d8bd0fc2242fcdbf2c3969fea321cba04c55a38ffb81889f66bc3fc3abfb1bd6135a6e2028ab1eff7cfb37962c7f501dfebebf2afb37372c274f47d61391eaacee5525f8e4bbb5240b9df11c31e9e37e20defffe5e900442f30f1df97b0cbe07fd371094efdb113fa5af1a7960725e0c1e1c4b21f92bcae5eb29f983eaf2f7f75f5fefa0df283e0663d902537e3d39962d34e5d78f6319c4965f64d63163860c08ca3f87465a0d58c3c38926e1abde5c4f5987836007a2a53a6bbdd77b08f4c343a04a32a9f920b6ec7d1d4baaeb41bcde10f1d6d77b23ada48740afaf197193d7882bce6393a6fe9c321ca319eb2f2912b9d2a75c5fb817c4fa25bee1266590ecc5ac2b89ded310c8be37ce4cd9e0660eeaada6d51beec7b399df22dd8a58ceecbe9d8a2c83be999dc77a66ca6333f7efa015276936e5262e4381ea727d815e08f4b2adb72d5208d55daacb33532b3cb39bd9cd4c1521f1d0934b8bcb5eca1548f56621ea00f1381b5757940b0d1a4c6e1e3fa8426790c9cd7b37ef50983c46ddbd3969bc1f4f141287c4da8f58fbf13cef7bc209cce47e9b1cf5697d4701d5c39d883a76fcb8f0d3dab9a6c49a58136b3f3997aed5447572364e1e6b3c848786f0d01d237adfd93b40c6a30bccf4f00d37b9613911bdafff3df879503cd61e39019b0fc93e2a738226976ee6a87189b1699ad9e10773c6d6d79195bddacc2ef7d71b2e8289f0d0d06a657369f15818a20bcaf5048658ba74aea721ead3f29cebed0bb1c4434556b6faf545eaf3f57ba84fcdd7ff421170eabb13d12a8916e7a80ee84ec41a24aca4081fadde6e62ed7e29d65c3afa249638576bc65a44756c142a973fb9706cfd1db14daef54375c88825be795d582fc49a1c2f8789cac8a9919153e375d16404af74edbc4becc9c8e9ec918da130519f9b6f28778ce8b9c4b755ebfb1d2e824fc0e65b244e8fd6cc08274db4d607d1c0cb856883139b167ee7c49acd8deaf4d717e12b7f9010cb7afb11a169e1eff0fae58f0d534b04a785a44b47bb2d10cb95cda5c3ad5fdda84f0ee9d2d5e0962886e4dd429cb974e96e535aaba6a285e3a4d1184b315b3ce49a126b3a46a11d6e0dbf8e2091a785e40eb5ac4f735f08f47dde0b3b893867673bab739eb113f69e35d726b5de56b615ce46ef8a6965bb53625f40ced588d323fcd6b7c820383d5a4178989852a3b5c8ab8518440b3f88a6c2b7d6f4c40d9ead694b11c64ddff714935ea8142b98b0921832453309010800f315000020100a064542b140122599162b1f14800b7a9a446450194723811c46310c833108c200280f00000020001043885184e00020e13b90561d1f544ae1206b39ee5117c0e347c43645a3f0bc4937104dd45d8376677d1818998f7adc178f1494a6e58841ecf78b706b055ef94b5edbc1c4c3aaf83fc9687fd5a461b6c39c5a903300787e432d75df858b17bd9c244c7fc893af165e5959ed245254404ae6ef88dc7aac930fe6cb43755c1f56029849806aa423ef8ea7a70cb6a87415f0d81035c8838584a44f22d1e75adf53918b27a2101fbe3bd599d10a9825542a6a6f01d46b5bdee960b146b83c9065ae3110bec7445aa275160a27e4ae71cceda128c5bd1666320385f4544ed9224fb26d8a876977c999ae582c52815ec805dd36754454da02d100ab25dd4e5061855354d9ac66a2101609897a39d035611dcb3a542e8066026ad085bdf7e4684d6488db435ad43513b253c818e587ece1881e7ceece65e8d8fab4e382bfd9f4b781facdb0fc2c19dc420de59e08586277c3d869fe1688fb23852c24c147849636841327a59767e32506e83ff325cbdc8ac2b968aef3acd341547fa969604db23c21989872c824e2a89d9d6bc124259825eae19118a3304adc591ab5b9df30e1fe2c82796faab8de41109fe066b34f45f1371e20489bd66b528b94fe1601db0e05cfb031529b8c7d3c14a54328470eacf7f653fbb387a893b733c90e0a368ece423185054ecd8740a6b8662c2e593c9ba801f879a79e2b48475b36f446d1ee29da40dc1d3a6aa27b662eaa708c21d78d55778ebe44d46bbf3fafbc490f24e907551dfe1d4bdf278a60beab253b74adb6cee9fabdd1a9360ec187b3ea21a8e88c6f363f46982949aa6b56085417ecc47fa7a6b44105c64fb1d6b8f3c84008e25d8d6b1f563242a1e771ea20c96c37ed762b12d19534609980762c803e95f844ec223c07f5acfc2f634ca6608fe852ad9ed3ff4f2cffcb2bd35e2d4bc2addd83fe9c3e8044fe029c75da1be51a5977f8da777fafe73a5e7391ad20c4178beb13e82f979b046b443b503e85422a0146097fabf4b2fa3b72c290f54280d34982c24e0f3e03e352088a525115c866a1bc6245fbabab13e721c117d86b8d847799046709d9723b74cc626f2cfc8812d1ce8b03f656c659ff92b4cb3ada28435d2464f98d18c12a0f5aa3ca1586caac8507aaa5e7afe9246a35a6a3899a61b84bd14265b4a55f10fc7aa3988c22ac9368832a766cbdf143ec1e0c65156277317086f341541e12be407f7a6a13a289c5fbd5ea33acb0e4aef6ae01211094514903b444e4c3f38c245906ee1dac343ca51d4d3711819f42e7cd8bcea266d59c55937255db57fc3b7d23091c1be575cb50edd87da16dc0dd5c379bc23640c8d65b0892f83a337eb410e642c9df80fea19ac81d9b2fb015937ca525d5b44cc9ee25ecd70b0834d21cb0c5d2e106828ae48bd899233975f2525f5e13469076af0c556a5e4d877697e82c3616df58a0d0a715860f3f449a251e52cee36f06733a27174344114acf1d72e7e55a076bddac8d1e256bc65aa2fcad0c853b2260eef71658d88492ea927058eec9f3184ada0844448ae203239ff118ea41baa208b5562dabae940b8983407fe0f81fab92462151e11153c1b4d72a0e220d1efd61ca1c5ceb6abcc35e917aead56692365f4e0c68214b829d5a6c6dd3994e4c9c89ab2b580eb82fb4004263b7628a91289c408d0ca514dca925093abcaa7292d6a07aa08a0c254af9fb38bed10ebfad8da5dc5ba3d7a44853ebd58759fb0f5ac650491ecd0ecc0e721e9bc34cfba31c925d0398b9ed25fca928911be7d91f18aa83336ada5d231392b4d081736bf0f51394ccea894e4407ceacc56071b3829807d2602811a1a4e249c0aec2c7266502644a7f10d70704192a204e8e67c4af38ee933ece90d308d28f35c1bd5f5e0ac5a3d8ec020555113d93b23e09d40c2a36a195681f9c454b3c8fa6ef6b5f0ebf8ab09f7e8486b4577d16c8794da591f839d386fd870e19e3e9b81e4ae289aea77142b0641a4a1da2e715496deae4c4c8ecbbe88e95985bb30196898329562190b2349e05aa6741f8ae50f3785b4ca70d18f1cdba597ce9e7987e9fefa489c80f6bd5886f5e5a77c807c95874195c1c3dc187462bda5e83a8685f42531b4271f642358faff20aa3ad7140acf348754b67954e2e3121a43f724bdecdfe37b4005f1171cd2f81efad0b3d7cf81312aa823b5e60f1b872d17190e27cef28b4662468b4730214b6e6d410272f4b796c6af37cb45fb91a2de539de1efa4bf7bc7ac1f5719b7b1e9f31d0a6b08952c74ec2c505b5e9143276eebee1d8263a6cd9f882f46dc1f2179df3489b18be97bc4f9b395963bbe9cd09c2894125bfbc3c4e1630d74ee8ee8df0f4bcba2903e166513cac27539c07f0908d1ad24e346e351f40482d71a09d527e8a08b6a665e613355c5129d8c65c61a7da8df0ae8dd11576c752ebe0f8375b9a185cc2fa7e715f5b3de44304e31e2900e9209217d9538a16b6d4acb171285f50eba0d54b3a8d7de6e18d261c5842481e30cd3194f17a8c8e0992a83ddd50f8e855c4fc25193778415e84e1aef4c1436e08b2b4dd9cd233dcf3d412c3cfe2d6458d52c3ce96e854359f5b0e0c5fe9d4e22a940b4a8bd6567f43e766922c23e8a6c8c9b37630e3143b61690f60db4a2953a89f556102482fc46ac2e2357e86b32ac4181f4fa45fade1ad73d14d33efca6f78e564fc8aa8f293681a2fde25cdbf5f343d49562fd2bf09753b1c2e20239d933e8bf78665cfd551ac2068b6b3aa78862240b72249729463e46b60adf36c1601c46e7a16cfbef5a1ddcd6b66c54a726c46169d5c3b38d21a4ab5f61c1625d42c0961ede49284ff25eea11702569e1c1c2eebdb0a2fd7b8fa135707e85b8c00114d9d405a4ab6780fc5240212b829216c0b8821623c2323002d9ce76b000d3892a6fc91a62c61a30ab74fa249c2a5a089d307efbe4d5b60b60656bada9bf0b29727ca505f04e941d7863af76c187cee36fde90c50586154854adecb530300c6d58a2590275b3fe87b392c97c9363242c80bca1b2f8b4a1b057767202f266720f772ba9852edb22aa4b4a1852e97940bd43c6cee86bee6517b2bd7e013f9347c67d01be6617b152d194154caa951f2429faf5e784558b051080b2c4997f8825a337d2445349e08894d215e7c893ca6bfd68540f87bf6fc6dcea1131e1e093c84394cf2e19efc51436675385815318888dead34c246f4ca45a234847ffa97a93f525fe31ce2e95371ac542aa025007c1de656d4eb3d36fccb03eb3a413d1b02c0f2d9a3048c5ed799c98b6d8d0d0af9c62ea8288926c42ada895df7ca5a976c385d24a037c3ba13dd0a8798bd08884397d995daf50071b9e38b88e55066b5dd51fc013b74e608efe7a3aa5a52057ee1f685c19cc28e0635df5c52ebe39ecd79ebb9c1a9974aec2f27afbdf1ef3bd7d80d1168c0a9c0febd9ad47b8fefd373d2d3a570c7ec28ad83f4c1df5cbd36936679cb60edae4c932761273878327348417d5bc9ea6241eef00fffcebbd66f40e5288b7c1048a239d676cc4e0f3ee011248cfca3e1a5b3801c1ebf4d05ff9ad4ed79d3cc3b5158199e1a46562616ccdd6014e18af24652a2093e042ec210a045c237e6bb11a006861c57fb50b7ef794a8ad44d7bbebe873c1d3e10e37979e036359cd67998dc04a8221a0e0be9af44a03f56e697136a0aa2f74ad8184879e2ca2016c17572eb0b191df6014c44ef1d8dd0a626fe35635125cd459341f6cac788a476d6bc0c3fd1b3fc2fe239b76e7f4f0ac1b1840a45bbd7714388701be31e59bae040c1125f4e7f183e1a4958fba6c8fb459e6a515700e76c00fadcce25d728b8493b1ffd3da240a9067009fb910144ae4ca8c6a8eb27a622576b69df4129a74403578ee507794912e9f451fafa9e027e516894194181ef554c3b0d1d1e1297dc9947c8f1fca8a240fbb3755aaff622fd6c3a79b59dd86c4d6494c0f375572169fed01ea570e9eef594a00ca24f3a272e27c47dfe73ba1ce453821018adf1130590e36fd94b86c9fe06e96c1f8ff5e97ca932bf208069cc554ce72a8e524b474dad6d5b46495a3061e8458137c56b405edca3887acf0bd12b20279164e61c195c43624ffd74b67ed0f8202a7f92ff1690f23fe8e95c56cd97dc10bddf5130d6afbdf5dfb86bc7d4bb8a4a6471b67d7def2f4ee3ffeca4a1a73061d7bb1a431c82e6be896447a4ac00aa44a005d8be614c13063da07c2788e9bed6713a34103ce05523a1d8e1914c35ea431d0776fd885431c8f2f8a899066aad614228404a7595e066469e7d6e221ab747e23566112114d1c06ac9cd093535d8ac62135898eb54008f11e806826d725ab2d8f0dace81437ebbf77734ffcabbd448a26b3cc15265006cc13541a0556e7043cc7140ee63310e47f740083df899056b2b6512851c2b6a13f89dd8082a109683f15602b98004f2c7a390829b16f0d02e37d215d657dcc98aed5714740529dfc9f08ce6aaa73e745c8d5e1b5d210b5e62b71e0262924792371944027b0750e37005acf7721bbeb1d0e5d60d948daa5d02d1805bebf86c15c8419d025aeb37902451d10912134c28663ea133075087b354909edab042e41da3cd3a3fc6c93797ca119f9d1137de4a4225f872daa3a3be328ea31c75d25cc568f61e4e17e3ae040b83306fd64ae127b9e342c79c93837ee926fc0c7624c2df22dae0c9ba271f40e84608e9f97fe71a2b20160591904ad073c9147e383bae8e718bc6ccbf96dcd33889a7e38bb7304255a8f99d007cb95c6a72034fb254c2290858731afd4d3b09b3dbfbeef464def9a28f4375fcd6d696c89e77027b81dd7af71aa01c5433ef5e882171904a7414cfba73066db69c744f71a8127b7bea85525802f85e45aa7b3930cc1b04f794e1da5732ff79aa3c1bc79b3a73540e9d3379f76b1eb0a13d95cad144ad24e0876bc5430babf6f895dbf5be933f85b71391b9a5aaa193dacd85dd14aa74b7b8dc2e730702d8b49d706749caa71a0a91bede555f5f41df5e3e5853b99ff0fa59abe302244391dc5e35640709834f02382e65b6a6467d44128219d1cca4c0110e0871def2ba4e2623d540dae97d3c88cbed88a900609d6d85da6dc741284020d11bb0cfd74204bc1f269f2fc57f33545e0f0e68ad55832e9a7119e0bbc214bac8e32dfc80428fb337e6cd2283a9d406316282e954c4c85f5dbe863927322167f644ea9112fe4c897b01f4894a4d25cf79d6e7da714dcc4877a9ecd72b844a20062a3f0b095cfe920aca348fc47aafc8c6d6d89683a4e501ddba5f0fb00407fca0e5c0b514b9a73ff5064642d1b43e444efa99b3754809864552e442ae215232a4151c17b243343923030f8d74b8e3990a18cf234d3e5e7e2dd2156d3782b9938b3af0e142c9ab25704cdb8d9033b898aaeb6c50d63511580fe6cf7697b0cc25ca10b4b0292d888de47cd7923e13122159da5399fb12cb7d56cd035d7a11353eed107102330208eb4ba434cc3600c69fcd101070085086d27c28f4c1e05ad63d65d276e7acdf61645fb134a21b059648f0649bccb059ab19aa5c90b6f8e8bae0c803d6dc4e4e42156085851b86e02aa7c75c35645155eb9aa2c80cfa5e14915d87c5dd1379342bdc13075de531dd463b73da04b662475e006782844462c000d46e1b44b0b6cf8ae4bfa1248725c7a2a7201c2bcf91bdc3f314a05ab1d5c66fa5196d39076ebd0b0409717cbd212f9e42c99f47945e389eb45e97130c6741567d42263cf275b523df508fad7f0c2e66a54d1db64b97dc856fc1116bc78c9bfc1044d75e186a6da4e30ae5ea23df11d492726c95c48dc27bb97790e8eeed779c0b2d0cab34d95dc090d540506c3091547a3f62bc3f0cdb27e787ae7a3c3446ea8fb60a4b11edfd427ea0e53d47a3e8d76a412413377578e08ee12bd6b9cefcb48d95d3c6ad369092947c32a86b65caeefa948ec50748b9c348040c7618a0d54df2f495f58e37c4855e20caf99184a228ce9dec20478170b4e00279b6dd0116e8b82c553c9dd6ca30996b290d7a3642fdbdf2ff3d4967b0846244d01f4b1fc53a48b1bcd35ba34d31e8ffc46629cd2e6dd48cf08aa0774e5d86855b3edd2b7908eef8586f56cee2338d0df27c2fbe0343d1f1b5388f1f62df8b58d0101785fb71053787e54492e002283d97f22f9714ce99704a56be017939a528ee81a8310987c67111a0c2e84084e1f8a62302f1c73a31b8a1308d781dc10d11904cd77207fa18468992b8a6fc48844ab64ab8647aeae2f28f69307e1f21579222ab37612a04e24d0edd26782649bf95a89b70bb3ed4b2e25bec62ac9e81321c0e72a9295967e2578cf092b79421cf583a58cd665f2f44a545133c996ae82d03eb98b07a136276c664004eadf66b9e09beb34699066326804797720216fccc74e5b456e92488e0beeaa7a413e459b818d5a11c7013d0d8357ffb679c5fb3112ad53c1275c6349b185f4da3afd9cc37d205bb3092b32d60fd68824a7ae9c000f8442b776a8db56b1b076a568b6ed0a404458d97f8bf3ff0619f19ed728794a895f807782d9d076d1ae0004cbc0f904bc08d01c0aad1dd1f10cf8640086ff40f5438a7bffa6fbcf05a48380b076f33c507d9882cf0f0a94aaea0198838bde5c70db719361ca372cec99b03d4d51aaa7381f336201d85adc20e45d4e475d09aaad8fd35d919516aee05d75259fbf3739473d33d97193cd731839b2e9aeb85ce9d37cf1d92c88597e58298c6cd9be4824472e7cc7087a673e1497041a772f3e6b9a0d1b9f3d3dca113b970b25cd069dc5c135c5054eefc0477e8542e9c3417f4546ece3c17048d3b77863b349d0b27c1053d999b33cf0585ce9d9be40e4de5c291e3824ee4e69a724100323bee22635f96615545acf27e5b0666db4caf9025ad7f12e76b1dd89a4c2beeb3f05c4f7c2e6a04f7fb646e8e3c17143a776e922b14958b738e1b3a919b4bca0581c29d9fe70a85c0c59fe5864ee7e693e7822273e74f7285a072f1e7b8212770f364b9a008dcf9b35c21c85cfcb3dc0ab9ee4966783409637ff6604d00ffe9d29ece6ca1c43a376b59b32d9e536b395b9274665cb2cfb96fb75c5330dc8f4cee742c9717342efe2437a4241747863b349d3b6f820b14958b3fcf0d2d9d8b97e60e9dc89d9be50245e3e29ee0864ae5e225b843a772e7a6b940a37271e7b921d2b8b832dca104714717c205151817ca41dce804b8d081714717c61d753017d4a05ce80773a315ce851a803bea00ee68c2b9a001e742339c1b8d202e1420dc5105704713c4051d0817aa61dc680471a103e48e2a8c3b4a181774642eee3c379296886b3f95cfbd42f0e03a458bb997a7985c75e83ff75b1c31d7ba13cf2993ab3cb6cb84cbde51127f3e7934f04292387df6bbe4c15c11970633cf5551e3722f213fb81fc5445cfba97cae05c283fb2d5accbd38c5e4aa43ffb99ee2c4dcf78999dc05d497eb5c5cca759dc6e05ea17e711fc5845ceb8fb92ff75c33f0dc8f4cee742c9717342efe24f7417ee7248321990134c54a80fdebcd8f8532a143f8ac3256684c21754f0d58fb499e06d29e73dbd612f9145ecdd6f25a9dd0ba5f5574a8b20aafb1c0a9c6217f0a0379ca5507a8eb6dd2cd3d754343bb78797748aa2b2775414fba79a7b821d0b938797748b22b2777414cbab9a76e2844172fef0e49baf2a42e88493777d20d81e8e265dda18fcefe71a34006c07e3656355a2004d83653eaba91475ed7b9c0db62766b74113fba77995d7b43f7dda1ebded4b57f76ef3fba77195d7b43f7ddb1ebceecda7976ef3fba774cb8f64db9ef8e5df746d7eea37bf7d1bd63eada19bbefce5df766d7fea37befd1bd63eeda99baefceaebb66d7ee73eedd43ee3d53d7ced07d7f76dd33ba761eddbba7ee3d43d7deecbe7374dd31baf69eddfbe7ee1d63d7ceecbe73c07567c0b5f7ecde3d77ef18bb7666f79d73e6bec3dcdceebe07b5bbfc3d5ddf9feedf47d7e7d9fdfb76ff7cbbfce191f5f3c14824ed008cab16f91cdd1f8c8a49008c2418c6c62ace2a941341c7aaa033ec7d69526d0928970fb69ede49e76d1d5b5c36735fade4c7820101e2cc576fd94eb96f29718aa37fbbe9442847aa5e622bfd0df53eeb960a85053bb26100af7fd52ae1a6b25746ec7780e72b59c45c1b88dfb74b403d83e365bb55ca2e7f0b67dd3acb64d756ebf65a49d66620ba832e6d3edff7680699e50bab06065f690fc4f22e272aaa57a70d4f12fb933019d3669601adc14e9abc59e898d9a329190cb21653040b9a4c06483c48b7408144224462599ce9b586b043a17337d613dee78d139cb101bf94ecd7a8ec73bcbc001ac58e2c77f05c99a3368175e4ac537f1d09a339dd3ae47f07b8eaca5a46260ac00d06eedea3a96b893d9f7efd79c63a1927a7523dede2e30e4b3f30a624002021e5d0af291e6f477b80180c8779f62d3705a5f9aee6be860959b60e5606839a896fab1954364b076e1da52c770e8b85e0356b0bdf45452d49a1a3065fc576f9ba928d12fae410c3fd3ebc0969c41a1c914cc96a630b9e27d16991072e12c72a13f4fb15a9818960c70d56400c6ce2bbd4ed7e4d8a400a4cdbe512411342b7aca04e974bb637dd61c2a1d72baa481147f50b8321560337be39c5fd9a66e0aabc0a482de4d89aab02a99946eb22db8d71ec942a23addea289f501074ebea79bb813bee99ff44adcc34bdefdc51e46c94c463db6fdb56499b77a731cd033a631e2b9e3dc39e79a0db8dadad0509bc43fdcc12bdaba3c47c3e543035ef331b33a31148d93c68965698097d3709e240fa184f890f0a8f71ff68903336db1d47c0dda5f20750738257afaea463f4896a353b77d69234c12643fb0dcab414ea3dcdbcebde884c7bdb7d006c477aca59512b2dc90587c32abeb2e37a8cb005d2bdba9ad87335ec4d0228fcb1a5eb3b7c34fb22c7d6a0d7eb8bbf6f6d684e0279baa7ff7e3eaaacb6d95d5889eefb323702f67bbb6b12c4b6939173992e02f40f7a2f1bec9713e45584e5556c4119670bba86caa1e4755b12185f108edc9a2eaa04ca0d991223c16c7732e5ae5d297939f0c21fe702230ad2c7a218604378ad29791986c7b97b70143ffada0fab9055ce653dac03b70c1855e6fc96e9031533dfd1ed5c0a1fde5b4389b89ec4b4bc468da641690f169afda18e17f54fb267c84cb6e21b164b3fef035e31bf88a337e29c132a2592e70e31c5af76d9c72c21654d453b83dc1d41ab7d794d2384d4a06023e2947275cc9c0533027453d23b1d6f0c20840d85eea48ccc005af65b04448d6879a222ba9f8c4c948b18f447899ed56b3549573c53c0b61009f58a2ec1b8100956930bf806d7647613c9acb3559d54e3bd354b777009bd98c7840b60a4864f2ecad70706284c7af6eab004d78eb5ae00e86b96a1260e597baab7976585ec77d86d07163497167b93937b24a3923398a8d92b4612ec95d54894dbe37914d9cd172155662b3cfe9d56041f0b1c48375b9103b1bb8bf34c3e61ae77c5459c4afc1a3e10eec3a9add67b5f675daaf357c87a9d4ec7652c6222962fe4a516e69a47c09ce4d170c6fd7d251972479689a40b617f47e11ad721bcf91ceb36082e8207f0ea59773578f88e862b32178e1f915edbd93a8a1cc8568eade3f2efb18f7890fb588f5811ab8f60afff3533718f650d21e246f3dfe9b9619cf767c1c2518b70cf26ab25f490135a9b0babc3509e32864c5683909bedc155a610a9f08c688cbcfcb731a31f0172c33d00de688a15fc1e53de1bb3ce1d145f0c038faaa805f1d26e46542fd197b224f2a47e11b1d2a2dd8c025ab9565a5ad0e04bc6bac483bcc4756f57a630e19b7818d6d820c41fb49a468ece6c4e720b861c120ff61ed74fc6c37ae719d1fc8047b56fb8544ee217b6a997b2bf0e93936b58c19d92881682e48cfdb1a441f37c3ba06df250fcb0a31e30cab6d1a24ff88b9a0bcbc9606dec65c0e05b16ef12ec1035d40b2a419e48b90197e4d116c9501b790f1b6ca27c846a86d4ce3e96cf0ebbd07a280ef21773fef1e0107397ac8902533e13787ef91646c9f70e4026e59291afa1fa20dc04fd2014fde001bdfc3dce9efcd28c83bb894323f223d88b3a9e853c441de51f8df43de5af80387b9483c3c04417df9811dd376819abf0483402c507fdb75cf771bfdc9dc463beaf0a2e276ebd9eca3a71a50eb666bc70d360ebd383c19a416ece7823fafae22d6cd56d583ef10c9575d26686a35242fa8138721f37a434460c9d99fe6551a09f9dc8918bdbc322927b73208ae022c58ba32b9cb879d88f851f5fcd87b1a29d301ccd7b3ae913acb7da0a570b91857611c7607c08ba00bf505108ef2128d0fe9ba9ecf3ad2bf679668e6694eb49deed2a4dfb4a157ae466fcce81f30ee31222d9504012da7330ace09c255687aa6c0b63485dad5d702e6e027124aa5e7b2308b7911e8a3bd5844f033b1bd854ebcabc36e8d0d1ceea94330493a1a78dd28571b72338ece27aa2bf89a8d1f4922da4b12b027030af7f340dcdb1dbb8d608a512f8f4262227e0d632c5c3a61c65d758485f79b9eb6f743428ef0ce9d051f9183f4608d0e86e0a051db7319d459d6cef1c05d2fbaf3ee88c939cff10437c39e4b2bf91c4f4787c9a5d16293a2bce1532e24dc379db26ba35343d022d05a96647cb1841cc7248432bef320964025966853d204b3547bfab79130630087a09a5c1b30714d674ccd329a6efcf45bd2e823895e92684795d7beb85df30dccc4b38b965dd57144808b9d8187c33ad58cb5a52da6348c6add226d587a0d84cce078f5c7214a8e110dca648ba7b9a051a1eb03dcf40169ccd400ca4e21af336ab4731275f5f8440a204923ef2d5d6101aaaa369043dbbdb3330819218bad84438b5f0f8b84ff3fb8ddfe8d87b3822d7c1f143009dad13792ade24abc8cc5270b62fe75a60f9771c412b34dc894999d43d4acda917ad6ba1261f1aac2ac09a8053b731b1965ebcb34db03db93463a5b072af3d286d8bd95abe5f5f94a0f4834e94d226c3f6321f2136b764228cbf6deca2f0de080c94d5ff0ac93d54c61ac664b3f67c4cd20fdf9ab9a1d28872d97da7c704df265f689612788c7bda49e1b7622ae6a1425eff9c48ad8dfcd69976e9a501751b01a1a5e82a3d0583ff1541a4b97419363b67412cf2d38ddb4097d6d055ad736998ee960303dd17d9708057a76dbddc799a56bfb02c84bc8db77bd640fa3ec4ab32c322a536d8ed9ccb2a387e4b4abbeb18140133ef4fb03cecdd7c8e99ffc2724f1237487b259801c3649fcab91b4ce34cd1367e22543336dad87b87296737d424a5c283fc9b611e67abd92e317ceb563dbc8299253375bca2cc69f0cde7fa16d83c5e7f7745d52a30f5342ee9cfeb2abbecc9ddf75d9cce89be160aa8e8ff063a79377d4c1d21c8e8cabc67df6d053f859e9755e88d396f4036cbfa3b453d77dd4377e9091aae0c838d3e14ab5fd8acc0f37419a78dfc83a2f579f6f1acd69a43ce05f76493d30a1c8a0c5bd1bc81b6f1e2d3da3b29cde4618918731caca7380f17d4fccae5056f476d6e9a6e92d253eb809929e553b7ed78638ee2b58d268d4cc6e8c99a5e12027a78d1e34a4291c6f05bbdc7ee3ba1079e0a3fc3b90414e08b96ff6b66ce2019b2cea21994597417097f3ecb1273b606ed7f96804b03d412cb908a257a7e5d54f2bb08c0394405ea27cc5c5ebdda2fb8cd011515b409d84722046100174fe991c236653d6eae4e5886e5ac83d45c7c9b8275dc06447e6250d14143ffdc17dc621eb1e39dede2b000b5291f4fe6620839d3ba19853417d653038c230c2da852d3d308411d956abc4b855350fe47d55a6d333ea019b28e10105a01e203afafa1ed829cfaf1150f065151e3f776a41751787c17bb0d12c60e3ffb3826b3853371dafe659ba78b5478ee5a9623f220616cd7f793c6223e81c8efe19dfcc75ab73ac360cc4a2256427d5467e2bc01e041823b84b28907218ec70617baa781cde6759e41eb860269a3718ba8bee37153bac68ae89ef64d31fa4ddf24367f0779fb7e182379dee90f924c162df9aa8d82460526df590f49644c8ffa28f291fa2d24f029c7ae73e7928d19e3bb190443607cb78e63a614a2786681be54c69fe845acd0ed4dce8ed73793370392bbb84dc5a1c30149058dd439b5e5cc3838c2e610c6c44133ce369cb1c9f56eff2770e9d44c8386a3b6ba304123f839141970cd2528409af34978708d1badf314b4edb3726fb1dc4c5370ca7101c151522e2a20739cd2bcc2c1bafa6c3cd205771418b26e1281717bdb3485867d0d4356f9841709bff98d7cc45d7af3f48b909842cde9b65a82481383422a397b1c1c45920938bb61867d54e41b02e621726429b9a1bb340712d93b676060dc268c44737c88849434423cd74ed680f8db471a2678f8c6380460e1175912f604e8ebe38750409f90b3b03a2e5fc0b7dfb2902c20aaff0feac2a1bfe6127228c699c5b04d3d07a6862d9f7594d8ac99756914446e2ac423292629ec9080d72afc0a95286900497f4dcbf1ad9b17e2df8dff029fc7f5a14eb48c414a038e3459ab2509b3a95381e579a3d4d8c38cbb662a485598c3456317b2300dfebbb2f8f2732635adfeb6283ddf820c1c4b67b58dfb3388679fa812ed22c213b4794c93cd1a223ab7fa101340c6c6261cc451aa68fb1cc43d4173855e490808e55abc90afc0de6a29e99d6f9d5fa06a677890fbe119cc412d1e115980f8feb7c4967468fcfff896f94f8adc42e3096128ed68a89328a6685cceffd2c9e85cc8865671b20740a7e8518121dce7133e8ccb80a6b122c054508ab0785b2c97e2c3873bb517b03ac30fa9304adbb795a821278381cc5d8da1af7879700d8d9ccd72dcf61caf13d8d83ed2776e026a6473434c6b8c15c12c40ff398941cd63840512281c692ff233566ae76e2d377bc9da5b727102f03f7117cea4b577b07a2bb67b68ac440af5d4dffc390c114368cc5f01b3c3801118343e6f605ec4406f5c30aa5a6a75c2a9875bdbc6185933847b4c3b3abfc7409f0578997b232e09af2ab06d64cff10b0b6898976fa3f88d5b47925fc3db55d5df8fba6bd1883451052ad753c45b8c970826cd31d45e97cb968ad5407724b9dab4e71f75c903ebfda1f8e05bc98104140a6d5e411c673b1611b6c4677c61409120dc843bd5676e1af752d7bd02bc8cdee49de2c6ab5574085d370fb1fe204edd26142312d47f09bb45438a154051f9167687932a148301e91b3695958c6874ad30efbc3ab766ab142a88533c32a9cad73a6bfa31616ea7636fb39dcd5a58251b71317b380e03373e7734ad7cff16bce5636b51f8336c27e246d7cf6d4c7f2b0bb2c01ac4dcc9ce116546cad85514868ebccca22f4d24d6099a81a3a8912c78374c1be388f6c5e65fdecbceb7ab904791578e91cce7bd61293ab469230ec1a54adeb5b65195f4da0e33b35efb925f71cd7c38d756f0bb2a02c3dfb1a4739c37feead8727387eb0611e39b149d774e34890cff3f84f3b3005b7db28ef99730e4f8aeadd9ab68e3b51d107b515f6b7f1bd389f25e7809d6a56cc402ae6f1001771dfbfaa116cc96ad991a3bd1084d542838f750f46b1986f8f7c6a341d7d46a72bcff0227a08b054ac4450ecd77d36c890d568973cd5fdbf7042e567c6c3beac1bf671c304bd83291c91be45b57f52b81dbcaa0567023b178b404f4ed2cf2c422e07089adb6f86aafcde2dbdbc3eaee5aaadd87c37bff551fb3a14d8461ef91e686db07c4535ad1c5a32069a1d1a1e47c158121a9e57154e874f39f68f2f42fc81719834f222951c03e008ec06030d0120f1c970687170a1f719848d6d3ea47c12110ecfe2ca617e0711ea290be25d24918010114194ca061e76e9932286fe637287c8f85647c8c31f0983474c079d76b79d67a3f1024c2c07eb278563e5aec7d5e14dbe39aa74fb53dd39dfbeb2951f030d04fcb804ec315c758aadf001d130573d70578ce1a1aa960310500466e1ecf34da551670b26d0275aa1cd6c6b0c9de3ae130e6bfda4d2b7ab12fea0bcf9faf01129dd4c140e1da47d15da691fc40daac1a919067984d4f366a7fca0aac2c9ecd18a79a152692221acd48d346a862e0a88510ea7580ac1bf02c593c1b54f1fbd8e2e6ab87e66863db796315a0afedc9424169ba589b206a65c1a0b5a7606b5e8b73479a7890224b16534c594aaa4f79491630bb0a6a4b9d3531ba55f51de8b2e6d77f03e4529018de2cefe534132ca93d32fe75e88f73501529536d295a46d795c6301621156962550cf0cc833af2c6b5d7ce291520132ff5f14228163f97656085bd5a4528a86025dc09eaac413f9aa4f2ee9ffb3fffe4cacfd08c669590b57f1726ea2cdb63f2b0f1854e576894f502f07df2efc16a6891e699080ea6ddf9bf727492409773e0da0e6f58d7cbc05c52a082ca18435a930bf29dd7e336de164aa1ea7be078fa956b09b00c601f377212c325bf8b6be9160f5130638e9fbd075a40ed2b5fc51edca4cbf8602a9370bad1e4d22fa975e1af4d1e69b3a6a516f20f9800824195f3bf87e700c16f06cb14b320132d2ef20db8740d1938860966f8b140fa4f841f5005d3aa793ac1b2c10a519878d10a366520d10e0df34ac560306be31b8d6b071e8b10465caac7f1d92dc7c783e9e4d7966e6094a81a799b746e9e07097e85234bc961a405e6a4285caaef935b11573466f796f2ad917fcd42649f9511dd8952bc69e649e453bcdb987c92705b3e0c0f8bb475eac0ba12b44f628b5689afd2561fb0f61c1fa9ba344b1c8b7b94f0c9a87191cbb2839242b173c2c692ac7634562b994cf417d3714515d74f16a802f13cbbf4105dcc77ffcd2143afc2396e91f0a93de3a35125cf6be77d2c5301b19e1961573011ffdbcd6d1415927836819efb8c5df3ede09b5e8e0bc17dc6445b9f922ce7bd03980fa7bcf8dabad9c48c11c5e7fc84c295721e51bb8f71e24ea141251060ec0e4aaf33ad22cfd34bf9d6a5eb3153854cbd553ceddf721f0ce97f110d1fe6084b61b7bbd11921e0cf220ee3060a6b87479a129b7f5235072ab584cc6ecb86eb1ce63d736f469507a96fa648bd68f6978e0b6ae7125846ef507dff9c46bade269360ecc190773151c303cfe6130e7a62d94274483053c358c853c9a5d85571d75a2a0f9605c32cb48666d453cb813e4936a291a53a02fa8c7e7656cd79f2ff1c2be033b20bf4df1380b28c787f46280e4f959c9174799ce277ac51f6e238d6f17b5129746cb02daded0703bb43aad392fa9875364ea756be0fa382cb4901e713aecb1a39e092e0011e0b306ae3d683023ff8d0c967b8c5b64e1440f4bdcca81d0dfd396a50a8ebe6e038ad703410a156708e9d554deab6dd9a57a58f3839801d1a62976533fab7fc90e060d93205b6942c15516ce3f21ed084a6c6ec0ce73a324fba294c4d2e98f198a5441f5fd73e20a65c9e3cd3ee63ec795f6c9020f21ac17afa9233a2fa2aab442fa3c1f788b004de03f0613bb239421f24326950af2117f8ea67058e585ce0b3e43a61a07ae64ea7c5f3407204b39550ee54aef635903533b8e9e4a6684d3ec90bc03b24018c9a74463aa4b891d48132b1e764f6c4bd46e7eaafa5e8b507481140f7aba20723dee6a3f78683e93698f3ee3536ee6fb60eaecb8464ef9aa2f6a8b45902d9f1cb1cd02f83f748ff53bec3b178e055573e0ff726a4c0c507055e04e10659afadd4edddff88ea9db5a0ecace314a15577ceef7bbede0bc98634f875c4264ff3efbf0a2ea41a2168b29ab7b6fe142c068b04919a9507da0070594b3e513335c9514d8de4df4da1aeeacce24abb91c66a71774a9f121ad26e62c45b9387dd524092b4678b317853a584d7da0d85a2a4f876a39929a2e35848ab4479a3af1d816b6553eda430ef41b4c54b4941e1e2cf3cd4ce165b88cc4aa2d6c849c5f669a94bb6f4c92c661a0763880d4c8af249a246d98b0adc2f75f0860149ef5c7b7cdd75ba1c426c5d665fb23964dab6dba7b922919a4a2ca82fa856c6baef89c769881cb01df888d52d6b4fc27f70f792a5b28edff51fd83dc5f82661f6ca2f4db10152b7469c53f664713c433646ec177e65aa498a7525efea5c0a2dd1978714a4782d981b63ad859c452f89a02d6fb86da1401481a732717b686a8e80b14a044fcb0b0bc38456f8387bb11d1a08e16d9bbb67b44e43857aa5b472973f1780531231b530e6a11d6471d3170262eb266c664c1befe013e081dbe8428b0fa117d2a88028402582817752114f0e710c7a42ac3f287475a0b568d3ccbea0fdcb326d651c29831be9136ed5db7e61cb64153a80286294254ee1a8d0a0e50fba19a8d295a62455c669c4d2bf8cb652b74e632bd69025dce65bb6b12f615e3339d4da1dae80ba78215a787f7f43c6c9422ce55d56d180fa0fceaf5e961e874dd89e54ab8d45395a7d1c16f2d58f2bcc5da5bd333f257e61d68a2aa5746bb187e13e7e837e89502ae616ad0bb8fc52da073fdcd859185ed784f6c81f319b34be2e30b06be11f63fb8db46df62f59db1603f60d6ceaec4fa9fde1da2aba0f085b07ec592bde2dbb066d9294dc62fe694d655cb8d61d1af0ba14b5fca30ab4ee35c923e98b0157a251ffa99b6a58f61e957a3777eb5017356989346453fa5c8048bf63b295b4b156cc26a9c7afa6f4ad07db62d92f27ae3be4c65b8cb330b41e6bdfa27f29a81fb0f844e05aeef04870f5310686644e948282bf260dcaa464249d14070dba1449790831815140d84b28640a0d300926de5f03be86a13c5f04ea6bf651dd7be1376028cae6c87b89d26bf51f7a6badab7ffadeaf21b29bfdd8490bde5de017b0f600fd20f277db6eec50f46ed6d8a61f6b4c16017245152873018bea7b6a57aead60e61f7c6cc930e7b7f3f6037cbf8bd9711b33e2426fd649de09695f12ae34c1a93482b973f8095566d607635cf9a6f917e3a3dc67ccbf33ad267ebf3f5721f12accfeaba7dbdf9dbad374a6470cce9f4a7c73eef7ffaa13aeca7d77b7ba80ebbeac26e3c3d6633ec327e005712a75bbff2934da5b20c3e5d7e3fe67dc13eaf7a3db52fd8efe963cb5eb0db03f6d86332981e764f19769693eb304d6da64fdd520f407aeffae9c6b8aeba31317e8259268d4f9f36d3cba4b1ebd6189771faf920fdf4f9f588716377994ccc3afde9667b6987f3e6d3f78744ebac3b5bf374aab3aa26eca7d7d63c9da77a98ea663a2b9d3d6f569ff352da8e7aabcd847df5453cbddad5fc72aceedd7bd7baeaaf6dfd5e7e3f528f71558f59d6168b5d9044491dc662a75febfa7debd60e63a7d68fd45d5dc65b3776786f5c1db6bab0c34c97cd31ce7295fdceb259c607a93e7eb565f7b1d8cd4c3af6d35757fdded5897418ec357673e3d85dbf3657dc04ab9e7a8be2db6add4cb1eaf71e665ebb7accbb4ba5bab1d38da987910eab87d56a33acfe54633fd97b95cd3258f598ed716fec50f5934749270b7bea30adb239c65f4fd92c458fd3cd321ee332690c7bec50469ec1308957304b3ab5a6cfcc0437c1322ee32c36cb6019a6958b0304c1cba4e74997cab0553a944d238524953a842a70c4119fe623a5499a0e29ad86d2be20f3f2e810c81bc03ef79712a2f78788de3daf93d1654d972480a76716ebe6108f80e3aa647ad87d86c10e835dcb0dc16e3ebe978fc1601b6c83dd7cafba776dbda9b40e55bfaad9d13c61c9d371290624f3c049e210bd0c63dc7c572b7579cc791ef3a54f43ed525f29ce5cd0125a6d3c0e8059d2cbcb2a8d062cdf36118878aa77dbb2f01267a619b6c5565a0ec049cb000573013445a19e274e44a11e1c2b2d0d56344c7551a757588cc3f4c40298b9a1f94287e4fc014f970b2a492e489220be48a1e8222fa33d488108b670c3132c2fd710e5a5ebe61a072ccf8d01cc955643105fb84bc9022c03cc5d141bba71ba8c381c2c45575d18076a083a2ab8374417f9993b1acc511cbba2742e995108302e418a0f8e4bf8c2a685e312a460812b2d02b1a5c1063781e9e724e17a6a93b0f0a430bad1a10ead04da84362a5c0e77c55685b3d986b81b0e87b382a301a2407568b5fab4ab4f2b80a2cb6f2fdd3454e9b0873a148a35e42b7da5551b2aaac0f295a74ae99700542a6cb0e482acc0f23aed43850ece75c7878a22e05cb3a83858bed2c905b54cd66060d967e0828422108dbb4abf7455249655b07c2699bec72fc7774ff77e00ab298c30c2a837090b574a6fccea1dcb14461861ccb8c374ebf46649232333ba88fba243e90139abb4c8831cea5056e9300ce04633c405a92e2f852695348042f3721bfa7cbdd500b6546b5538f5d6da4da87687e991ad37d305f61833886130d8cdf5f66e422abb5139aeaabb51917116195fb919c453c64937b3647c7eb40db5acaa9eb7a14da84358ede9705ea9badbd0dd84ec46c50ba1a196453ab4d190b800f6a9156088e77f00eb5f4f53d6fa2a4fb0bb33043a34e92634e92634345fba5690050618e3990e4d95eda14a8b40f4908e66bd6533932e7e419c4421fa07421bd345be53f737c6d26d17fae560ad6c66e119c3e69a411936572958bec5e65a45ae61582257d694294d12169ea64b69a71ec2590a0d71a31b30531a4a43c1d38c5e6f66d57ea9b49b9374387f2526098111cfcb059deee931f344e0d168f493cd129f5c4c3a6cab1c950074fd359ffaf7d6654b0442c6a5fca445207e9f3d0ec4206eac431083885d9e06cbb0f42eebbd4569ae5dc2048cd9254c408f44ed12fa974d2a06b54c2a46019687551760f92511374ed996c7b0320eb3f7fd72d9c75a5c8b75d1775044229999d90744ef9950cba61c8a40c4b8bcacd232d6e59b2602b1823d7bf20d3108d8a5ea990567c9811884eaf27d2f86a574286f427468091350a5ba2b1e53c1a4e74da8b220ee20dfb2958ab8c34dac21cf5ad98a136bc8abecb431d658c1a426545acabebb5050af8fdf903eea3ae1de5766f40f886e142544e0d3a598c1344cb3d8cc8273a579a0cd289cbb648572ad225722f0bc959133ee9e373f2d94283c3033eb530b457435d05746ce643ee04474226633b3d60145f479a144e184bb9359fc80f435d057a667dc39a196c530b264d2e17939a1cb05d97041dc17ae0e67ae67be70d7c976a3e87f40cefabe26ed74c01c6b387ae368e60b17145d84e68b04e2389a04524316387341587e5e019c384b20530f8e32442d470d30dde096ef1e80f3dbce9a2e7d9acec7dbc9de8e254d018ab8b0a471f67664101237cb0ab8b74b91b7d31ecf86393980b9eb11eaa4b844725a017c0911c999e8be4633333ab2d5826b00dff94ca1e8d2afe19e42b9f311da3c2c3a6c12801e8fb7c301f0a61b69853975cc2b9161cc285e9c3a9307a7e9c67531725d953256d18887241a79a4af24254927c6974a3a2b229e5a508de78767e82706c59a94dd7352ba71b2e7a474db38ba715cd7d52af248dfc82391be4f9ac0af643281e0698585c2522aca12cd9074252a551a38984013c8882ca594d3c2cc4b4e4a29a59472db3a00667ae3064b1e079e674ad2f9946860bcd38a2c786a52a6ceb4a28326a5dbc6715da5b5ce969592368eebba5a451ca9ab55241a8d3cd168e47924d2e79148df572a99a8fd6ab07c89a664026db0b4a72f1a0b2e6a3f5df03416bd53a59fdc744e57d1345586a44cf909f2a226a547da482b648edc9157c81b6923691dd49352f9f191dd7352bac99e93d26de3e8c6715d57ab684447a3d972d455916834f23cd2c82391beaf5432811404674bf02b994c20785a596141a15229d5ca66189636dfc0f22c3658502852eadb21b1b4aa6f87c4a95aea12ed19e756ea5b4308de0f200a4f30cac01a5f268a8819db8dd1c671a39beb26a235d25751ada28f6ad751ca5d1c1d761ff141d2b2265a46df5f6c97c70978d01bb14d1f7a65ece171794498697944209f1e9f1e203d18e4bae0c519992507cf7b1d3bfa4412ee0d770fc03c83863089000e01a45d4f874400e9bd49fa01ecb2e872741f66ca2c3a9c9d143cbbd4ef783a4c03984d7fe9688c271820bd29675e534e87f3269c0ea70907bcc224d4e1fc3c0378af67be9870a2cbce7c61b9892ef3269cf938596e586ef07c37e718bc1d2daeb7136b4c2e405315fd12db344d3893ca148a356650b7136b4c79961cae055e9c718393a3b3c3d3f3031424d44334b41c9d1d9e9e9a4f90100ded066787a7a7e6d33e9166233c0bac1d8198a7373f3d95fee4f4549a13d45369d04e4fa53b71a8a7d238d453694f95336973959f3d3dbf2f7c284d15423a349496b3834516d4e666a82644a58a909010155a436994c6a7ce972f4ec081179801c7c32210513ed213ec0067560e9552e7a47942b74b7b6af4915e8ad3614be9b06fb677efadebbac7d3d4bad63881a24b9fd63aa43d540aeda1525a164f391c5acecd4e4f7cbc54e7d29c0e4f90d321d579a639d48a2b333dd5b954274787f6486919e502f7e94e37069a403f3edd15bc8eafd1a90dc5a122553734875af112d17033ab501a5117d4b24c79e6173d81421aeb6f08d12ff10c395a3c8126ea26d0f4625299431df614a2b1cf31c1932f3065c0f1b3bf1c925a983ae505c1405f30b7f028689802361bba2f900e29ad757b7d8e3edb632a91635105a70b7dbd5924a4430a440891aedb2e8e2720905a8e5270aef494527a7a2362c7512f4019b91ee1a8451ab41051d18f3398c10e07e544d7c66671641bdc25d2e18d0e29900efb386c921998c3616d34c7ddc60d1c5d921998d3020ca003f9e70b90e8426d8498d6790590c3d30a20c5208e3d559e803b1a48df38cea01e17bced71469e3edf4e6d470b26bce1468b2650810b5f8f1a72000446942f8882d0450f156660e56801c6163d3b5043cb8e942510410ca69e1b2ade163020818deb304d9bd2b90424d06c394bd842e884042a483b48c841d3d935797b5061a8e382be8041181ba765b18a18a5f04527816149a5cdb0b64968cce72473e248d9bd23b9acf46cdcf001c5ea41c6034cd23a8c37de1240fa2c6936f2466606b561b3c436dec33b1ede7d3978104203cbc7f8e5b8e1c3a3cce1c33d6967dc07dbb40e6de267fbe666fa7063b9004adc363f804d6b9b1a9b65f0ece40c1bc3c487fb707180edc3bc2f1ff489c6f2ca9a4be2be1c3ddce3c1ca2a3aa43e9c871b374b9c67a0e233a95f5c37dec3bd1bf13d58890303f0c68dc3b4cbb64dbbc44b9df92283a64b3cfdbc19c4b9e28ee30198254d387588320976fd386f0f52361fad6897787a33cbb60a64bf2086268861fc0000f0f810008f31f2f491c60e03786e4c80003c37ae41e33b0ce00408c06bc89b7b933592a66557d274189f250f364bccc33b1e7c380fd70234b07c0f39377ae8414a1a3ed0c0f4fa70516087f130d3868d180076090d80cd8d021c3f009bbb05389e86cd2d031c5fc32ee930016c966503882e6d5a660118a6f54d27a1b81e5d570a98bcbc16806111abc348236baa65d261bc4e7418df4492961dc713e101a406395415044d211acf678b17ac80d2d9171ad2a1520547187bb2acbd8e6866ce0f8af0832bc060147b7ae41635d8d9a20a2b443b4060f4b821063a1d00848296c023060f6809406843a53e34478b38007d345a54e9c00e56b69d9d220cc1270c5a80765a016c4a654e8b660b15e0441f2054a02d5460063a7be2594587b1d621171d469f5a87f19b0bc02c6bb5a6cd97d4e37b27be79bcc7774fcb48ef5a47f031ae34507bd132d5e33ba8fb8b96bd1e618f6f2a2d8bf1f81eea2a3d69664dcbece3276ddab44cc64dcb66b40c008f9f382d0bc0e3a7152da3f1f87945cb08f0b8c3a38d471e1e3fb368590f8f9f3d2df3e1f1c6e3676d72d17a7ce7cc17d767ced4c1b171b6a6cdd339057c152e372c2b863a5c646131d4e1d53e863adceb4f495351717773133e58540c75780f168ca10ee7c19262a8c36dd81a431dbe83a531d4e104b031863a745dd77557890cee6858896b5819c3f03ad8bc458105106548c346ac83cd128702902e56e2015849450cfb293003ee04708fdec41aed62230e6d96546429d080bb07c04a9b184a5a943551d2c450a6496412c37ecc3a1193c4b01fc33681241e8961df65815898e8d2351c31ecabec0d1ad1a58fb2e18cc3582890546318c30efb067736b41a495365888ad017415e00c94f47ecc1a2abc409dc0981e306ae97427017ce388c850249b85ed6cb2abf1e1477f7a66d64d33a8c5732c30803cf9a6c49e7cda9c99973861e245441e96c1d9f9f96491ccf4306d18fb20b1ce5140e0da01c9a2f4dab4597f8982b96351d29e0f851a0a09d1624810b5ee96687a6670a17c8f071393b3c71f03103692507488b1b1e74345aac41091df82c504ead0653f4d000069b2888460739b50f70c1045eed61430c967bea43b8a7ae93fad153777427a9738f33afa6eae8af7e7d9cbdfabe9448bd7e48eaf5d59db03cf521ab57ae42aad7bffaa2a3ced957bf3bebde8b85c5cecc5eaeb7fe3acb73157af5676ac5322412c27af7b64ab0eeab1fa31582baaf3eeaa2d34f079016aea0d2861c1a9ad9eb2cd66b66c64a7df4d447cf55a835336badce7df55c85eccc6cb5127a0d9133ee4ea208617df53873c2baaff87ad557f715ef10d5eb55574626ca0b88ea41e26c0837a40233bce005351a1a5acf549782a69e355de4cc62043f800214bc50dd0e708fd36566361ac2bd9490b311778e04397396ab50159a2e4355a84e97179078b3049a9989eccc2cf218a0a66716677216da903168927070e3c8a663945b0ac098258f17e79424f9e59034223f9b943ec5f2170af7b650689f71f7669c7296f2ccb4342727fecc489ad1c5cbb1499b93a14a58ab481e896596b59e0ee551386e418b026e2a608301ce2ba2e9b00ef5b44ce239976c3849886387b90a51d1c20859601b386a618411604fda48597b92487436cf8be4992eb4c6913c92466a22f38507953c5716410a21ca681684608512a060f9963c34882f92877473c539c0f25d0cc02c6992d6c100dcbe23e63a84e5ab8c0e89aa60110d96221a96efaf0a51a943429247d678b2e81739935808c99c2a54a9f44b9c9542af49443c19e74a5f07742865161dca2b79cc001ad1a13c4cfcc13486db89b4cc0132a4b2b79c96e5f82f9690458e966f2296dc0083c221c930ecddfb018c9e9704863daf7b0198ab10ae42f3455acf3b676b3ef05994bee4f1bc1af63a576fca2cda4506499eae0a15ceb10602d07bafa17b7dbd4e38ce5b03eeee6bc8c809f7d18970f725847b79dc7d79570939e31e67757465cf7491e7e1913d20cf749131a8893c8ff813834437b84ab1cd6cd4005d2000948f5d003c69b630e158cbd9999125bd4eeae5b9eb248a1027917527e6cb2b9efbcc6cbec97c79c5fb52a2e31522cf5d997a795f5146beef2bceccb806325f9c988f3f1808cf57ec2e8493f815ef24ca76277dee4ea2889c708ff7d55d1bf2f44ee8b5315d70c0be0d1ad9711fa0f2c7f1f482753badcfb74e1739a5bc717e314e137c31c2910926f8829452b62b891a1354a1de93ed8423136e62c049301ac71e10a001b33ae4be8dc61af176d13d81ded4f03ca9659109373c55c002ee93a49598c39109373b5e27c2910946184225e1c8841b2f6aad552462c28d5064420db6c0f1b6ac52f0e4cc93a42dbac8e812a5a8949b60254df06c23742820b581c4061295388a20aac3282ffa1ef013126f977123f350332bbf05706ba3e54d7225cd746912963749877d24cd62e139a3949735344993631a70d344586298965684254dcbe48bbc9197f1258621082d88a2043514210b4c98c94b222d93f23a118190b8df6466d63956c13333f92322d8bd26ca36ba33b691cd21963ceae461996c16c811408e802521e1ed7393a2653c708e351f1b1a0edc534cbf1d33583f600671ff5561730e4478cc171bdd5f0706f01d8adab3c203d2b239ef451e47bce38d17080fdc1db7d1da711ba547acc1035e8cc18b294193d21d9896c4cbd3e0c8d1e0685fa3388038e21fc0f86a0410899023da8b29f4913a2183e0de5f225fb6d3e708073cfbf259d26cdca1af8c486f8c2e598779e50f5825d4b2be13b50b70c911fd2283da25becfa369bc90425df44ccfd923f269599c38bac7197798f952ba4eba7fefee4bdea3dd2339ae69f2e7528ee338d139da83b7cb9a2f238efb28c749ce13e188388ee338aef40189420203983afd36e3de1cc7711cc79d38d64dddd3f5aeb762bf8f6ce9a01d5d47474747c4711c773255903bd7b4be691c8e4b9dbb0bf59c4aa5bec9a10e535cada9c794c7ddb3b2c671d43b77eed207b579db46b92ab8770ec751ca9de368341d5a67daaae8300773355398a670a2df1cc771cd71df12fa3a5d09bdaf533de91c87c36d1648776b6a44ff5e337a69c6bd5610fc395d20a6fba237d5fba2f7a5c477d3857c37fd74b07de8f7ee434ab72f7afba2f52cefbef29557cbf2a27f29c18d236e1edb2b3d3d05e42e6f40da14dd83c459776564ea4557a6fbe8f105c4f4207166ba32514e32a27fe09519d544895b44010aa64d81ebbf0fa9fdee4e66e93ae977cfb5f40c7297b4f9025e13502d058131721cd7c46cc45d746b884c17eea3cb83070e6e8a7c709421c5acac9f2ef6c4e3982fb3ce97ef318efed90ad67fafffea267d708783378e6459d3a5bb67bdb633b3919d9975d33aec2aee6400c6597dffb53dce5edd6d4c97ee5d0e9843dcbd69dd3b9faa051abcc03d548043d7bd5aae0ce04b48bff6cd74e9ba4f2ec0dc34dc3db2b638a3bb31934a4a57e02d993b2d3f69adac7131a5bcd2a7d6e19c55246b2d1bc5ae974a21f14124176096b5882987e547c4c647e425c4f45dd9735f42bc7fffae0ce9ce9ce932efdd49335da627bf21a5385dbe7b33b3fe847cf7ae8cf7efc6e93273646c390ba70b255d564d92e2cf4b48fcf98c1219067ed1f999432acdd79295dff46cf704ccb286bb1ab831e18b0cb03013d6ab8728f7453318a6e7005ed626cd7c9939d1653e67d2e0a9862b26b51c9e3bb53d1dd449fb4634388a4e00ce4a137feec3aad1e0a820c89a3ad365eed84d8766fae01aab878786c56a1d9dcad3a177990670bb7cfe6e442800f3bca1c1dbad3d1d723438dc0d4793af3d952b71b2f2f4f4d42c3aec21dc9b5006b1dc826a4fcba674d83df2b7f664b1fd5001e6ca33a70073e5a93c358b7ea9b3feac78092698f5e6837babe1ce992e9d379ebb840988b72f486e9445ce7c21ed98b81c8e935b1802d740aa9901776d0303fe3880530505911b41e6a6f8be44caaf8b0e7bbb9fcfb7f361612a3d9b4c9f8fe9dbf7fd74ad20f8dd986ea64b97ecf7f3f97c5d7c3e9f4fcbb8ad44b78fe7f36959fe6adf4fcbf227e5ebe2ab7d5370ffab7d52b094967d178a173f9fe802da21a630c208630eb3d175d281f9d165ba8f6ef7d18df28a74e65913fd9488b3d99c03f8cfe7bb992fdf4e74e9fbb03e9f6f8764064b2243dca14faacd17d217edd29914b48520900a25031849414dda91a41ddc1ff1e0fe3c810be20b29badc4c14c4b98228dbde37b869d0c521d109c02c7164943d4b31d6885be0dc50c0d2f62ccee81bf3014dd9a98e90e5abfc372927dda88c4ebc3dcb53b96d32e6f9570f4a43b3618ae3d743d2d0f4e0c6730a900a1680fd0982d9b326e6cdace70deead0a3db85b2620713bb8df3201c7030e2748479b5600698bd6b2795fb5c38ef761f1e01ea000d7cf7027eee0d148db85854bdce438ba4929373d55869aa3f3056254876ac09d069c475370fffc7c3e68a5de45b672374ac859fd6b48ad97a3b9992f9c9476e993ba6716f71b4ca5f44be9f5a49b4928d8e8dccd33e8cd345e4ad714d2187d868805f36ee6a8d44ba5e216cd67ba50c1022019e01b54efdd0a40afcecca816c03cf2c1d2a36700c14f2b802ff9da38cfbeb2ba8deb1a2751e415327abd13efe0bd2b7a8d93d1eb475774f04346af07e34b9e89c42fee42bce397bc93fad241fb92f7c55d25bc9b3ea4be74275184945eefc474ef4ea2d02ba4c6d9075e27e04f5f017f3addc94aa7d3b576a64b4b6ba3717c367eba9f16cdf57e8b76d9dae1eee966beb8ee0a95f70614024b5f8001fc5a3e31fedcea796ed5f0c6b574708cdba2c1b69b41975dbd45fb01576c9cb5684d3ab15c2d1fdcefd60feeeea6b714d461a954a543a1de6469a8c36ddbb6ed96844a41a52f4a41a5a09671a7d14463d37a2224040ad55af773da992efd5a4130ce3c7a06d07b3d9df5f80171b9281ac05c1a1202855cb6a666e5e06b56ff6a3dedcc1716ebe6d169e745ba404ef7255917fce942c09f560e5eded5bfcfcc4e27efa7cb2b04fc7765ea057fda992f231e1adca6d70f29fd2bbdbe7427de4d406a6871365433baa3151b04a4e634fac17df08e40a1f8e57829e1dd7422de3d91ef7a072fc43be89d5a3d9f9995fe01f9ee9d3ceb79f5d67b1752ef5ddef3bc253ae44b0939abf7fe1ae21d3c080a5521dca900ec74ced2b56ee6cbc827f5a81ab25af9eac619ad3fb93444a25f80a6972efa807c9716a4c1b4960d8f947e89edc42d6240c3ad1bdcdf16310002cead2c70b7a61cf974d1b216c2a5a196e5124ffd51dd177d9cb5707ce6cb8b5e25e4ac456bdd743aa8bbb2f295eb04bcf738a31f11f0dee91744ce66a508da58e2992f35dc43944a3c11881aa46760ddb1b9f6542b67530860ae3f98524a6f69a7c31e01e1ae3bdd83bbea5001cc2d9acec88796baaeebba5adae93af2894048210221df1f4d41bed42c805fc05d86166dbe7441a4d9a2d9c643b8d6daf5e7fed0ae3af325ceba7be2cceb481d0a4e5005b77064c20980b007927e006710f2910a762485b843ffe5439e9ed2608e062f51222ba6f7a86d8940eed0df6ecbe3b80ec5c29222a54e6d1212962d9d9415b88fba622776985b58e07e8c354e00665a738f0a30539b9a272a56d28531071a2c6f7703ee68dca2294522914814e9a4c15e47aa3ff3057cbfeacc17f0968632eb67e576cf4ab675d3a299008cf805a446f4d14f58e2972c954e37fde095015ffacc2c97864eb786fba6d780b7d563b23bb8c1cfcc7870df54ba7ca974f0de964c0b07778b66b27156ea4a0072df1131178258a32ffae8deb7db9100bc1ccd74e9d3cbd15668b0f703484f58706900738b46ef69e774737ad2dd55ea41eebad30eeed34d871d496792cedd23d913cf69e784c569e7b4d3328e92408e76f484d3619f766e70ffb4d3322c5a76e2e95316dd6dfa72c8eea714540a2a058d7cbc9b3ebdde0d9d02e6d290473f25e2cc7b2928baf42c05cd9fe93283e650ad2058eff471c520c943b3d361cf968d0d98e7cec867d405c7cd709f239f0efbad1b9d3ed7ba69d17a1cc192ceaeb48d7e9eb4682d6bd9948670b79ee07e698867be743fd14567be74b54e07f70e1a7a7216881057a90760d7709e3b239f58a3df8d60e473433b42c40122f8e9c151063723a5a0331cc7c3c78b33b20d6c85e319f77aa30f3fa3c3a637c647977e83a1041bfd05af5301d8e04bc87c7cbc3239c4f238caee09986d60290f147dba6708a4588153382e414a09308deda10ee3a41304587e7ae0256424f312d2175d746544efcfcc4657464e7113869b9914af21a3ed33b338239b7a486b0063ac6d9c795e24519c8396b07cbd894070b85ece30c0bee8aadfe74a9b7310d24265c29cb08fa48055feda2a45246137b3f09783be668104b0ded84f16336928b47336ce62d5664aa53900c3082229d05e30150a66c14b201ff40a3ee2e78d396dca013cce9b048a0275ef0750f5f80199627a3f8097d6742863f75cf30bb036a5f5ba5eadcba57aab75552bc66374d67a736dccacb09f4e7dc0aeeaa7b75e6debb3c3542b6633c5a91bbb8fe1fabd2749ad7efc5c97d2aea534af969bdef2b6af96c7d98c7b5eb5590657d5692ed7e797c46166cb462ce4f520f6f524ec8ed761afbb2c93c6af03b149584fe2f1cb51e4c624712349dcb5ba59e2d57bf596dbd556b6f3f901b8fa8e8e8bc3741d7259af6573ebac542aa5ba289b2b4649da759228b8a1388cfa977418f567d4ff589017ea29aba4c3acdf2661ddc5aa435588f5887fb05e844acb8a086d30140cf6f90139cc7405b14a9a60d681d81dac17b94a26cc32e924ae1346bec461bac51e39eb5ac0c89778578bb8e362330178242e718dfcd5d26b00ff7a8301a662b1984c4203a75e5e047929d6a350abf20ccea9ab50b106a2117f6a76e4145a6e2c30ea7fc4526055877f33066630ec4654876954ea15a8067d290055875d75636037f218d85b60465e836ee4308dba990646ddab37ac229e594d70ec4d6c11165b181b3bc6baebc6561a0c4056b5b9f5e6139a81515fc130ea2ad453a83f76887a7d6533cb6610e79a93d0c0b0bf8cd8d78f7aec5e8b8502739885f9765c815af66ab111572f5e3e508f095d81b216f8399a0eb7add6e1b649e97043fd0a54cc4688446b99ebdab86e1512ad00e40273afb9b8a0464680b9d58b0a74552a140a854281e102174c7f4fc05c85bada5bfecac0c431aeaff037d74931ab3aca723d9f8ed655f7563657bc5a7df5d4ff983dc70305e62c1bdb257695cd1566aeaceb31eb7acbe6d85d4ce62bf63883e99575dd57ec28008bc0eeeba6a10d5ccf91c72254452ebf1c2b944fea2e4a039089e74a830273ef07b0abad3a5acb2b2d7573057f33182bf2d8d783c6d8a58c7538f305e62f382702114b3d374ee23106c1d5e40edb93b0e9b02683a8427187ed5bc3580dbc886d1ddb265fc2b2eecd299e8cddd3808579cb1679138bcfb24b3c661b4f91896aea145a8de362bb9020f728edd61f7beb7fa6f897758f652b50eb5ec0f47702506254cf33c7c3f50481b12d0baec7456b60e4468e7a5da5ba4a5bddd9baadd6ed3a197c5480db5b36168ebdbedd96d5cd207ebdde4a3d5685628d1980a9d80dcd0420ea2bc1470210151b12b20188aa412ddb5287bd75cfeb19272975fae9581d057bcac2facb01bb35281601b61e3bfd7ec4deba173f1fb1ff291b13fbefc5ac575747fd36b54add1cfb1312a7ceba6d3d655ba75f8ed68d98357bf7e540e2c9e875297663ac113b4c579fd8cd484e449ed180add1c08d82e44d6c4d931b25480c92199213d142f2885b0791b4902079f7f540726f749f0d1bad982043d8520fc0206fddea73cf55c2020cf288590783b0820479fd7a04b942dcdac587a3c3adfa549f2e5ad6f9c06cc70529b6baa9ffb9abd5b86859ea769f0d88ba1767ec4ab1c71e43c14c953df2975d22b190246cee6480b7336173f7e4c88dd86d3b4c733c5c163de7107b805c1797965b815a86fa0654bde80f852ac2c6d991226ca5d22edbe7143076d4e397e3c88ddd7a732bad438a03309ebbe19eb42cfccf26f4b30571385c155c0e6705a7c35db16d58c89e379e023c6f59dcd8362978d3e179abe16de3026f9bcf0ecf5b1736b66d0adeb6cd0b20bc3dd39fee993c36d9e91b28fab892e9f761d5c01ebcf1d4f2ace96d7b07cd17b9b30a0a0ada09ca9c4ddeaae0ad5bb123b1bba1ae7aa582b2adc76c1d62b26157cce58a4994ab0c67c833387594cd7f29e230cf15ff31bee06710ff37a3de7a11165b181bbb19f5d5594f6c98f566b12e936d87ebaeb72e615497c147dd0d75d5ad421e0af514cc8cd9d651b60e31691c1b8ac52e34d4b288ea46c52e19c40063ab17edb21df5d71feb2aa22bfac5db91c51e3350c1db6f4cb0713d5fece02cb2026f221abc896cf0f6c75012eb60ddc505fee1422ca10c53f00f8f1dafbc497ad96af3a36c455dfe8542c94f87ca75b3c4aec350a8170ae5aab429a0c4a8dfe5b212a3ac44c150a8d76decf736d2cb4aec9aab1853aed5f6d5b72fc74ae875734ddd0cc652973fe66fa638163bca661954ccb6aeb21975993466bd75abc7b20318c00770d66b1ca659b60675b809f120accccc2c0820fe0b7120de1f12b10be587cfefc70f17020acc9502e641dc00a74159c230698cba47513662aa33c4b7d32be80ec5c2084fcb3211476511ebf937214f7d9b5d75592ee2d3b2dc72d6332ce7b811535a96839c09a096652047e2451242e4b095c7082bca99d96e8808dbf10c613920408678101b3b0c62c461b6a5e5458a5c488f2f51811f71e24690f8eb88bb7c7c1ee0dba7ebdbe7ebdbe76c08f5ac23efa0352dcb3c9efa9695b8eadb125fe523673d1ba13808f8765a45cb3292e7f8769ad3b2ccc489f8766a85101a09b0554774d305753a1d6e3f80e598b0b143264e848d1d127124367688e4396cec30c78d18f991235f6209254bae030307f8cbba623e7518f0edf38ab933e4db27160dc8afecca0b7000172dcb08f8caa76539016775d1b2ac80b77e1ef02dff388f6f79c767df3ebdd0f18a23a2f9c1e176d8d8e18ecf6cec70f61f3676f8e33c6cec90c7156063870a78026cec300147808d1d22e00bb0b1432677d9d8a1ebaf13b1b1c3241f62638716b8123676780125bee52144bebda9b42c2fe05b66c051df72031efbf649d3b2ec80ff5b7ec053df3204aefa9623f0d5b7cf9b9665099cf52d4fe0ad0ca5c99bf8f65945cb72064e816f9f392dcb508af813df727d52e5095b6f3260ab0d056ca5d284ad13b09d046c1701db41c076b5ce01b6bb6980ed6c18603bda022c47c472432cc705577bd243d07ed343c05c193a83f986bf35b971bae0e071338a46e6b879c64d0fd16408236ebe21cae9219a7cbb389eebec6616113787f843086d361b6dabd9689a56a143284bc4b721be51e05b13df727c33e2b2d979fcc7cda8097cc7cd2c095cc7cdb01d4772f38c089c09085c48a5e978904a43722095c6c493b85988248004f926e4db8f6f43bebd1b6a19039438023a043c015d02ae804e015fa223f223dd026ea46bc08b740e784b577bc061370bd1d15ab6c4b777362d3bf2eddd4dcb8c7c7bf7a46545bebdc36959cbb7773a2d6b7d4b1df6d7cda8d75d37b398dc0cc3c0cd3396dc1c2ab999861337df88bd0237e3e871b31018f8c6e45b06be9deba2654bbe9dfb6999926f15f8766ea8653deec42f7033ea02b7c0cd2c0b3cc9cdb0248fb97946ccf3cde1016ea67180fbb8f9868f1fc1d58e3812370b812d8cdd6ee287c4cd3318891bb14b38f9cbb644f1956d69e0319bb25074f8888dad8ebc8996136104033126abd6919b83dc88900d10f1da80cc8b383952a4e54338014201274964e066233fe2644991249c385919b939890ec885a21271a1a8430049e246648cdcbcc48bc81829f29a28416e0ef2216484dc2ce4406428d0c46ba2247173066e64899b97bcc88fb4fcb581d7121b3872a120d54469b93989bf36006403440c81812fc1e4470e6bd204f61c4d5a5eaf89a2a489134d5a2d4d603727e0af2612c8d16ab281bba280b99c388f28949840143f2e70f3ebb0282c1085cb899b79fc47146014abd7cd3f3a252e145502178a2a01257efcb581d7cd2d776de0e57a4d1404dc8c804b600309b83901576203d7033551262081d744f971f305fe6ab9d902771dc6a3b6becab16a81b5c05e1385c7cd3f9e4389af9ae4e0a1e42d4e1c76968dad70c5add744a94012cc5a19815b170a10024958ab26576980b543030a888006626e5e9da5816b40a5811d1a88c06ba2ac6e564057ab02be6ab2bab975559395ea355188dc4ce41168b2809b17700834b91ea889120108bc268a026e8ef9aa7573beeaac24178abaa32ac088d45bb1b35aacd7441972f3902b60c7cd0ab81146ec784d94d4cd15782b767392b37e7b07dc0cc59978c0cd0e788289d9ffc7a0b8f9017fc201678289275e136576a1e8f0cda9c7f051168a0e4329a236e0e659d5e1a388235045a0741431bb59c7911481e435516237fbe8a2c45e13e5013737e0482e14d5013723a947e0180ac750af89d2809b1df02330929b1f70263012265e13c5c7cd3e1e3be2a8ff42d161280778e2425175d406cc0e70a120612830a90b0529f5d74461c0cd0c7803606e6ec067170a107ba026ca4cc76ba2f4b8b9c75307b8f900ff6166069860608912272e60810a2489c914b048de8465e213b0482e01cbc42360915c2830878065e2de0d67ba6c5fc2a67ec4fe466cec452cea2d367598fd5f36769745bd6553db59f697ae6cec5295455dfa002be40eb041de000be40cb0497c0156c889d820578005f221368927c00ab91b026c90bb296181dced874de26e48d8113ec27258e04013a8601fb673022d0b3dc007b093051ca881817b586e045a088501f380f98e22ae033f8785027365e40ce6465828455c999ec17c66a1e02b336730b7260a1177bbe9701be26e4f3adc8e3280cd3398c904628f5d080b25881e1c848df2c381b015a8c3c63fbc06b5ec879be755df7ef30cfe513666333deae61ab3f992769da40ce2580c857a86e1184a49931e1d8ed9c77eaba4c333a86571d6a00ac405b002e10de545cb50f789c6a86faf403528767180a8180a45855a167ec311c033a51280673a84375a056fdb5683b7bcd1ecf36683e3e6ed066f7795b0009b06471c63785c903f3f370a207b21800f3df06063871addd33dddf362259659890b6025be6123a66123f6c14adc030fb6b18d1d2c8709f05363ebf1c1db4ff7d0d06100db76d3e1f6bab900ac375d2d62179719942387e84d10a5a9423a5c6cc745d0769ad0f6b83dc15340d4ffd89d55ce00a2fedbf9a09efa86baea3995423df5fd403d26a5b2b5537ddb52b4e9a2faefa91e431da6bb5acbfeed1d172d8b7d7be7b35df58b037c2c76f331aabfd8be51c1db6550cbe29f4255394cd35437c6638c81ba2329a1ed6a1d6e1780edb8e8707b006ce7d3e17600d8ae8b0eb7cfb0dd4f87db65d86e4a87dbafed803adc6e6de74587f938f61f751a65afa35ea3cc75d44951d63aea6094b18e3a2aca56479d1565aaa30e8bb2d45137c7fe5b8562d6562a1dc61ebbb5e5562a316cae3878bbf7b27d86186e87d926430cb7a7a607f076d5e400debedace7a03dede6203deee4a03de8260b1652366452c7a03982bade254da56c5f64a65439d470b6c628d8833e5d1025a0c23463d65e38661dae3b17ddbbe7ddbbe62a75087db59ecfcc24ed3f6d2766efbb79db47db45d6eff5941b1863f1bbdc024cb61cff2d8e4ce7c89b30ab236d19d553adc68b67906f0b983f0d6d1a2cbf6ed5d6d3b6bdb3a1adeb89a0774430a3923a568921472e64a21673892d4c21770080183c3068f23da08b08f63db2e6537aa17a25dbe1c386452e4915058ca9b93dc931606c7128488e1f7b0657d1adffb25efdbbf233af48e00f2e5e82e0f2d8039c42d4427fb1cb7d1e830a471d8bc2c963c9d1c15a850893d8035da0fd601c71aed0aecc5ae0637585e8b2fcc10bdce0a9074794329a537369c0fc0c943df590166c98349dddd4273fb7a340dee2cacb469e9426b59bc36b2091a807d7a254f0c92b496358d9246afc4b289e9224f6f963d92c74639e3e54d87342235d27d91622d075f88730e4d674c43192817288d74965ac98c53f208418809585e3e8b6857f2c41a330079ca7043718eb51c730ad89786018c229c234ffd6bbb2f25ba731f92fa4cbd106ef4944c3df79999a7aa334252af2c4fbdaf9095ccebabcfcc72159a99bdfa01919bd22107d4b27bb3fc013cdda3271cf325ce229650a8384a88a8a2c31a8b83460621391077909732678a5843ca8fb667269b84f2ba7cddd8a34877e8001c9aa7679288e6da9ad33873db9eb8b76b15a0a9bbbb3b0334a64fbf1cde4f96fb696e4a8731537ce968b38b32948c44aab5fb957bd772402b96fbb9cfdc0f96533a94bf87e95af36ab1076749533b308504811c4194912e391d166bc83ec621dbd2f2185fec636cf9bc5f4b7a17b40dc920381d3028dfefcad2a57d7568be541c9ca18a3334d4dd7428716c6e47bb0294f7997276a541ac3188a1fcc95617c450bee399f29c8e0ca2e2c81de42598ab6c41ac21391d2cdf4501abcfd75780b90ed5a15a4544d31e859977d925dd6d36e15c714c9246d2481a7bb3ccd1d9e17e9a9bd2b227360e085c59b1121391018ae75db199e295579f969dee289e9e5efa7a7ca7377739007bdac627d4e7978365e8fbf6fe72b0fe59563f464f5277f7e7fb4322c69bdec74e6f6ef9bc75e88a689438f159ef6dbd4ffbbdbf1ff4df379bc17b16c4d3fbe7c50ebd4b3b9c3fbe7b378a5eb2f93bf803dc7b9f15dd79d145517adb8a718f236db6ffd9151f2ba7f7ac13dbf779eff3deb6744f7e0798c12ed1492ed149327daf07e9a27f96929cc0ed44fe9ea2f72bb7d40370de1ff7f4c6dc7b37c632a1f85e7aad8f530f1be397b6b4de8f1f12316edf6629706f9444bf73ed7d3b9de7fabb7936edd7211a110d15d17438d4afc23af5d8ee57ba67b3133fb697ba1c80f466b97d3db67f87995e8a756a23f54adb61db5fa54cdfda4a6fd1d3bfefacd25df7bc8d243a8c25fa0bc4deeb24d1ca6136b68b77bdbf4437b3f0d67ac946176db10e7ec6b0fe5d7e3e4eff4e62d98d542a515a8a3886febb573ab5596627f0e65d9444c424efa27b3776b87ddf33138abfafee895e12954e5f2a9d76482f132944146f079f67e8e99d8160f02a9b8f60f0299b9dc0e0eb101586aaf44b9ca128edf8f54881265b6b38004fcfb5d24937ef2d83bfca45e9a5d77e19bd7411684bf1cb219329ee0eabb48b7c770350d2a80dc04f749285322f931ec99a769117dd57ff4a9a3a142439105de44350a900a5aca004e90c240d8802bba08a537186ba2029e64c4a8a9ee1a4e819500a39231249a01e789e890df10d510d38e64825822177e833e0d6731483286e01f508b6441995d5d56533dee5be5042a26ce5f14aa0e20f804494998a8841b0744459e9b165081c2f840c024644949ddeb1dc1bdcadad2bc410b106094bd68d1d2292dcf037231a9138d1773337ba24f9e520fd844936667451c7ec98f409b8cf4981bfc3f4862727852cf6ac608e92b89b4767b9fc745c00e74f6563e6b9c39c2e90b29885c482013cfa86596e8e028f2e2883f88c90d412812040ac61e3bb37461707e90a217720400462082de0be3105dc05be111377c410a80a110ab88fc30943442074c41a42c8208c8889b229316201f7fbc339f6e0101d460a3cbaec2fc77718d2cd1c267d1b26ddccddbb997b7f3ab8d77a2e5f004fcacd9828b4324f5bb8218b37dce0188eb5a12ae078f2e4b402381f6db4e06bc5747b8cde0329d821ce1593b6d974b30228e5b78f1edce8361f658e31c62863bc3622d70621bad9b881c3c61761121a73ce1b5d4bc731cf8ab0988a41c0acb0fc29ca562e3f8a33ca50972f4df05d0c22c9b3080f20d6980fe50ef352142371d8f00128bad1e18499a9fb63880ce757ec0362387fb2486c131dce0f60de8824f3a177f092de13bcb7917e00b71b3be44de0cd7276a648853cb2397a01b7ac7efe068e596bdcb0bc2f1fdc131beeee0cee74a32416d93961dab881a3c3be8d0e9b880d236cdce89738937531707c3ce138c213a65ab9dcc10b22b4f3309944eed0c73d8456621a5ec07d30d0f8f11ab70013a9d04304228923e29458859e9be1b15819622d2d646889112328060c3606d8eb258697cb150657abe5458bc502036bb5fac24aa5f2822a95024aa1505d40b1b070816565650b2ba7d39413086a013499b2602a95b050fabe9f8f44ba02eeed3ca687b71ec51a7384b716c51a73abb1c6ec4b1e5dac311b6fe7116bccc6db79b46cc3b1c67c8e3e3fe4939833d698db91e83e220221257763ac316547207a24bf11a8fedd8b37528f51680a8e5f0fa87acc8bc532f8d16854ea98efaacfafc777157815fd0e7eb472af492ad08e783aec1eb3320b2b7b3aec8ed0bd24fb807e00471b938e299d6298062dc5425ce0584343153be0581372c19476e95e925f0edc8d5efb051c9de3e1a9bd94a0ef13a1972667a2f70589d47c808899e83439ab8fd345fe7c3de0ebfff72c7f78b26859ec9deaad7fb6f41fc0ef3fa8acc4b712bf5adf37658cc72f07ec65e5e8a598d1555322912f30f80fcc33b804be3efa5e2afd1bb1c09b6e22956c8cd3638731ce7d488c6ecce8afbfbe8dfefd1bd9cbb2e489d3c1335939783dd45f1f7d4898c019fcc5388b8df91ef18a5512c3312d8ff81b2989e19697be1c2df7e267bbd985307d13ade8b0733aecbaef47e9dfcddfb9ef07f8d1cdf9bb1898c12ba3959b58febd8e7efac9643a68b22b076debe4649998d24f2b3d56aec4e2c911c0dc37b87bf360b1c362b17aa7bbc7c23257541fa93e1abdf499feddab24169b592ac7d23b2cb6797a8785d458f44ef3b00000000088a3bba93efa724099cfaed3ef87eaa39b55f7c2d3d23c7d7473e9626006b3fcbb273f2e4e075fba796626fc57bf9b4ddd870478f3e8f907cbbf6f5f8fd2596efe4a0208808d2b56622fca57025d86787d77c910f9fe107af9be4efaf23a919137ca8df22151fae99e89c6e3f743860f1696c78fb572013c7e3fee577c0ce02b3766741db089866d9a990ed6c7fd3dcbfa9071969b67b08c8336cbe00c80873fdd25b4252c40003ce24f0000b80002602595236630006ef8ed387dc6259e715f3e64fc5ec66ddabbbf771a8beeb15f44f0d9fce802a8b8755a362abdade81c2ffcbe30fc768c86bc7b4b5d327d7465ceb7526b43151c6b54aa7467e158a3e2056e430d6ee1586b430e2e7dafb5210b8e746dbe5f29dd3c834b9738179d30308384e9a57ff613ba560e818f1d152993746dc4fdf5003f7a04617af4f530bd34badfd0b5117b3e7c231f463eacf45879e966d3955874d87de5ca271dceee9e27bfcf08e01093f4992edd617afb7e7435d7670430cb1f9e2935201d2f5a96e513dcbdebb0c05dad93ef62ec0250f0a3bbb2313b22b6b79f9f1271d6377601f28d29c99d46e2bb31df471f1dfc6eb62f5df9e4ae4cefa44e69e78a52e9df572a954aa5d277f0fdf5f80efe034ba57fdf47a3d1c89aaed461d258ee74d8fdf689c6b0c7ec138d59ee499cd9bdebaae8b06b592e7df4eefbe9a58f3ebae9307dea2e813eeb8d6cfeb000993406bfeea0953f262ba774d8bde302f83d62d3949699ee138d4d074d5f0ed0744ddf8eefbb32a7c3eea39be5930e3b9d0e25b9187d148f2e93fe011cfda786337a01bbd13f8a65ad65a677279f924d02fe5b79c93e91e4fbf715eb63e2d2419b04fc4b89c4a54fb0e59f6ddcf2c6a06db91328598963c01ef1f75d1c200c7699347edd970f8951ff7248ecb2252c4096124b09af6e0ceaa3cb272d43a16e8a5f8e0ef469a6b8f491cd337874d2630f41d3a7b72676014affc067f4dfb9afc7e82ad36994970f89592e31cb3f9b6356feddfb728cfed91216e0ca23065fbae93b6206af5cd3b743a542fd644b3637369f7da2f1f752e351e926b047a31b53fae8f2eb51fae831cf8037cb60f09fcd147f975fecf0fbace9ca1293c6a3d1a83bf81501ccb286bbae334d016a59e91dc8c5f7eea9142a75429d44a22a63b950eacaf3e8e0c501ae5c26a7d3e8307d02ede81fd84de941ecfd008e46371dbc31df29f63efbaa1d8e3e71638f2375a51d10c797835a893d4a32d951e9bba3d31e82f4d16b0f313aa987f03e5a22447e5e199970ba749777499038fb74e9ae24489cf583c419e91987f7386b92d79d6449f74e44ce4436ceba7b69e74764b957bb5d7e4ac45913d3a57b69071d04a4a6c974e94eed6bf4f9d1e9fba51d80dc7d7ddb7d7df7058493b3ed72b69d745fa3f7e9bdfb1add97124d3f44ceee2239eb9e4bd19b0f60f4041b8ae7797293534a5af1e4628cdc9c2d25456d1b187bd2a6b3a980f194dea6b3696f5ce0ced5d8519b8984972391bd9d72763d420b84983ed34a2b86321fe795229c45e95b69af80460b2a5c50b9c19e17492320dcb3c2d3f1a6403df180f056d3e1c6d1f036d4e1b655e1b280a138e00a40d476e48845a16e57a329008b7813d4cd3218459f80abc34c140cb7dc9b6f008b78132dc0d43d2f5830c75580a93ff57aea30adc2b60ac5585774f3e180a8c784a8dcd0684237acca7a8a6643a3d9dcb068363743270073056add9a0eba50815487fde5b230af0460a519613dc62c2c161bdad17294459db64c3531eaf5a6d2b0004a8cba91df0e55fc74a4fedbaba3ac4b6559977598c9b246feb2478abcc51a3172158034a7899d4514b1468efacaa2ee7d3a6297d4e1f6c3ee9a2ff88bfc573da56afd673d755be4f7856ab9b097eb05a39e911620cc3462f3ea75b30c7e7dc5a2bdc5fa552eac168e351ecc20868afdb1b79effd4bda7627fec313fea30ddb295f616eb6f3d75af9542c55228140a5551b15b6f542e958b0bebce16a8a865d2b808ea723d2bcbf1541f2cf1d13aeaaad49fba5528a78ebacafe681df5b39effd553b647eba87b5ffdacb3582cd66ab55a81b118576d01dc1e71eaaaacfa4a75d7f36aa5faeaaac7ac9e3a4cbb6c571b3a764d23b7c85dad6eae435548153129954a1da63f1e11dfce678b55e9685c0df5588c18997e3e5a47dd970e897f673c0d58e0b2c4a9fbd2d17854337a8261fa52b01cc90960eea02a221a212aa85b6dbc29c05c85684254aa88682deb36e0ed221ba16dabf18008b1eb55310242cc020b1c705817f68a613801c62c138a5329d663b1a3502814eb319b8454e5b60e89684435229ae86545372dc2b1a22a3adc58d7a30163df5e9f542b22103383b93e16abaa9b2bc8626154edf3b805c7da155332577ba92e318d307411d100cc55082675171718af3e699913a8ab5042b07422f5d851a75f8ed445d91c62d86f6392d0c02dd58d41bdf58d068e49bdf51814aac7eba8db62f30c6eb90703a37a91678a5d77a96c8c4a75d745b1fe2257d92230ed3509655ff73c94edd825eed83ba68aa93a755b8fd94c2306c650218ea11efbfc7228190066a2bac4f3f3b1e9e8b04ab5fa7315f2b1ed74f8586e79eab0c35e36652396b8c546dcba950603730465b35dd1e176967da17ee4a8c3d817ea7ed1856782226f7535d6b7b7acc7b299f597900779fd36037992d75b8f9f8f256ec4d6a1d7ebb0c384b02bab82a8f40b74e6c11ce798a29101040000006314003028140e09c682e178300ac448891f14800d91b056744e1ca7498e52c620648c0100000000000000804401008121e085e5eee7bd918f5f7ad19e4cc4dfa350f5b184b05da681c49f407000c05e13a71d6d71294e316defb203d3aa2b78fb9c922c7093994a8143e8961c927e7b90c3727a1c464561f0b69e4738505d3d5b8657fc088a6595ed2e7cf12faeaa462e9e8838e0101d0de506a1f4edf08141c5d45b0176564eca012b50b2eabfed28e0ab5ef141a844f13e6b8130fc81d9382e552361502072c43b9112d0fe0e616f92fa625a75bf3b9ee74a577594485892057eccb298725049cb7c08935273c62b21b9e33edee9ec487b24e4237160197d1be1c14d3ac5f01523f2b03aa0e6b926ab254d60214a68f5954c5231fe55fafb215f37a5963fc77c81e9f503bb2baf7632d761e663bcbb69488e3d935f7e3767923d8b1e62a87485211a8990574f686df61be9c9f07c6939662c57381e65df7450d228a9a66df27667a28634a1be6ef517e8b2c364e9fdd577c7dfcde9414fa70e54f16553e7d75f2aecb12151bb510c9024289ab6e8db15c2463b35fc7a0ef87419cd8358f18ee74bb4ae4dbe3ddb0af2e328684270e75155f5fba653860c7d34d6ecf376aa8bca0be87c2c0bb1883a3178ea7b40e4fb48d88a76f7c3e0ae25c8b9f9f5825bd9674017fdabbaee211e57a58efda8f15efd503b850df41d6362aa80c4278b55bc3cd531c04f993e4c773d14cf3c604b0725fc588aa8904c3b81f760ecf0e7595fe09e6ad21ba8ac64235045b35b55b0e61458128523bcfed59ab07c2c5c1f1095ffeaee221b3313cf04207d75cf813b31af08329a3d3544ec15d41ec7594219e0fcf52cea65fe30f75423b657c44b0806c3b92de7185cb50a5c0309d9accde049484128e2abc2085295a996165b6f16565493246050b6215841af1f54b9918002f2079a6a2faa57bad81e933366cde03e4b49a2fc7e227767ece4661cb3aeb180b0280a6b97fe0692886579e9b405084b7f915f85e20b7c523966d0c41234c9e99d60029c4f6d387a7e61336271ec95c1f84b1cdaa0256367e85181aad71f75a4b4ee3159a93519d127a11a61150fbb35b0a116208e53f374d01ddcd304fd48357e5517f45041a7c48020dfa5dd3bd99fbde5766f06d99af292354970abb41a03605ab6a6eece6fdcad8d57d86045925f354e4ee5d4a9df45d6914f75ea02a86cd0da3659b0e12b8f22b22a4a769a0a181fab307cd9588f1673dad0afc49a02a9921847d8ef6206e55f4c0e379499c9f288f80129c6bb4f5a957fce14f04e31f7bee5a538f65d2aeea385e83d2868614ff3bf38ab474c7a2a7d8d311c02f6b34e278aec58c3711f776c26b20e4eac0476699e82253d434fae1900fe953c13db4ab6b1bc744d157a25c372d25fd2c2633e65bec16302ba751294698719ac56233ba7cc472a3b8176f15d67bbb017930f1959a1e9c0b7dce6cd6511131c28651a885498acfdb6ff5ecac4f6807c11bf16601d394c1a324bba2af3697afa1c2620c56b2135ae724027734c2749b911729886e707815d54206dcc01e92a71273d94ca99c8c1460aaa881410506c7697030d278c353b18f3353289951a877460fc94d1aa316ad2c209f413d0edd30fe3ec531cc0713e6ba1e1c243bd214c5a684902a032f35e569eea72b97939f49c26b11c2c3499a0310549d9e482b44a8c34d995c63b94b8dcad96a5ac35a60bcb742994710a891b73596ba30e216794899cb85a17455c03f82e20128efa85a2fc6ee10e99e47a5b2022d1ae5004c29b4d70ae3ff07560dac9c50007968f828f9f0e027b784252157835323b940af61747b25a110ea1a67b5163078f95a81d308f0366e2a0c210a2a193a08ce2c7b7697bad80372e8df5164e9bca57ea3173be01028852c259e50010c95ceda50d35836404f52bdec754c4b018abfee524dd6e45d3c208eef2b08f407b060cc501be1ad0e9b3df78cef634ac2e4b4401e937b5946a5f4325f7f290672f635df52aee519a9bb4e87c26a05361665426626c0efa867cf72c50af8d84adb5a31e2dfff9790fe12d40243e26c7ac04ee0eb5a8981b5250a924a0925666d24b49245662795a7c9a132f4e1b6e54b77e46a89866d6259b4ad3ff8e9362e7e6dfe9e9a777c0c047f1c3adcb421678ac9956ec8f2d22aa178ade776b8277f628ef9241b7f0d54929b773ef39781263c2479d8e83c146d5c61c134b935097d7c006d77ae87ed0f686876eab61b3cfdc6097d71ab3ce08d011b975a125a4bc21d68c1ef3ce7c36a152acc08ac5f59c350b82121f2c94c7924d61658b8aa95c0dda33a346a1a2ce61b8ec907d238fc0936e8aa80edf3d363bac1f630e8b6091cac918c024104c9b31b6cda7df1fb711d8e607cec5ec01fcbea991daaa06d46007c252b38af9b1c627ede0eb8b2bc19ed5fa4b58dc6f4e9b4d9894f1fd9284636dfadc0f8d4b55e2015fa150e66de474c4fb1b168b503c43b0ed531d69bf359b643ebf453a1cd052d2e25af3bd6b6c484f94531bb2e26c61fc87f0e0b87b9af1cb1d883104077594aa5f8dc70047d7e89a9876b6dfb9ae51df1bb64c6b87982d849162d97ab453b8c632412094a803629570ca6fa0495904841e818b06289bd846f88766390b881c9963befe13a274401acf19189c83433ed47c46e7e819f0f92aeecf241aeec3f0c639c48e0c26f1b1c039dcfb3b34ea572eb89591ee08817f1b8a21aff8cbfeab1e38723827c49a7a6b84ecf3eeb257d5c6d83367e404af1865558eb817112529e68f78699f40ae282292727867c97bc585aaf4b821ddf7c061c4e56371bf0f4e505598c698344476b87e86bdd79743615005b7ac470e3a330f3f42a32c0075c8a2e294c4a6921a3be89a3a54ada6a43291f6dc44f93d0edf18059669545cadcf842990fed582bbc0c0bcf008f937f5fb3d386213ed60f9c7e98cdba12f4d013cb294afb19f00c4f2c74adffeb14f615cf6a1372fdac428748b4adf39b9f22ad811ce147154e7a3751854f027b223767df308b612166c6860b436195e89f802e8dd9ce7b1415cfd9c67e59920881b2bbd3185dbce169787ed69b49e182bd6e50aa3b55c3308044565d11a756709a89a7a0172c2bb456aa0cec5a5ef120af89e9e58f792c0236b97086267ebc5e4ceea09fcc4214e097d8649d54aabe3fb7424b36a70250f5d623ed608ac26f7861b378272a0a6b1ff22758199e4f00a86e62850f24f270fe021d275a8dd2a6f147f9af370e7309a6cc586462634b6f64c3aa671d205dfe36b6243233a0b5dbb5d182776c42dfffd119bef664923b9c445a3424b90f3a8eefac65bbca2cd78721579bdc94ee18a1037feae6e8e82581a763badbd2fcb3c8457d2665936c6eda9a09307b5472c950915dcdc119b6e50f4da037aa91739528c307f69fb142a4766b638baf453f5da888e7b5a52bf5e7a369a93b0fbbbe58378152f241d996604788780a7290f3dbe133cc321886012f2516be2052939c728aab3059a70cd934c04711bea4dabb016441b0973930950ccdb1a44d1885a0c450e4a813bc12d5d3449fb6df270fb8efe4a52789ef434e93bae4f121ef6542f9d3e04068acbb495df675602fd7f32a12f8d70022d9bfccf349835480f2a436927592e97abe62a436f13654286a93a6269d590965f4c1a4b888f3cff0ddf237881d897a41758b2b38cae0f503a2f064c309b5cbe0743d4bd5ce17ebcaa1ffe709971d4a87530c0fe5c0deb10204cdac5964955f9aeae3fbd596118fb4027c844dc84a9fe6d350a33b069810f127e7fc363824beb49a6cf83ba0856e05683c3d9a990cad9c627af8297bc88c07a5e6a54041eeba13ab833d582a42b838dcfc4bb40d4a92bc25a427839c68b9d8b4132da219f497416569fa6101db0ed500f38f8537330f8b4f5e056621d4e1798e10359bcd393a33f57eeec27fa9667902c5d21d82f6a55c4586dfd1c5d06f53e0e4bf0a6fd63e6c12d62695dc587248830424083779062936c477158794dee378d637b755e28631178df622f6c60c9e08405be3c87a4054399f85ca958c12d1f4ca9ad4825ba4afe5f705238d44446d3334eacdadeeb04f6ebcae6948236b2b7631f5cc2c8a580758b6ad907a816c157af08227d8a78001a899d25257429271c34e801ce72ad35082ae413dd32763bb17345afa13fcc769c2ee7cdc2e7d091865963efd639d45a0dca67e15ea0a32c7c62b33281a1133be4a30d272f8cd80b133d9171b987b57fac10fff0ad72b4d8f258a1430ba0b394f4db2865fa227d18fda12e65d2b197b99f7960469c42eca7dd6455f776b735dc9f6d5da193f00cef0184e31efc5511031f84390760ac61a68d82b38570463808bbd8136714fc22a702c08089d977084337d62e110126434f9e43b8853c52169e732654f9aaaa9982db52b6f1dd772d1253ea23009161a22b137ea74b59a8bb47b88519963ad7cc3943420dddc2bc6b6c14aa0925e997b3ee593b0904983bbdd78cb12f058b393915975388a389980e29219aab24ac36897f4ea9911fbf0cc50949ea8663718478441cca88a762abb3bbbb8ad69100ae96823ad7cdeb12c2d98b93b70ae9bca8602570dd8d9685db412abe6c26a91d85c4762a558edea3539b7361c218ebcb7800d58d4a24f04d42b623b34b95a6ca643d32a5cd0eedbadf4f2be56d052c794f2d594fc6193404511af52c9f121cf597398d39f73074955111e853d01c99b4772f82fc71cf0083cf2b737aa95d707384024d9454463dae66b8937437621149df9a7d6fce3fcd8d4716410b3a7229c79d7f00699d440dbf514e7eb5be16ab313f512d14c30199eeb9f0b780027899494d0f8653d65e624e6e30e03199c0603021bbd8eaf7e4b3240e24999e1e74bab5753164ac875f96d88e6e5bd29d287b19e0970ab1ababb230a6db9759ef992fb45e97446fbc393f8ae0b3cbaf26013fbc534049f71fd4a156ef656eb6fa4137c619c72aeed36209801fda3113bf31c412b72d48cfbddb51ebc0770bd23d0b4aed9bce2c925d2c1bb80014ab0dd0d99248b710e3938bb7deda35b34d637b79bd9e7798b4be3323efdb9418c8ef9ded5ee5797c41767a22ca06becb7c93d4acdd5a57143b23f8cac0badcd03089933647f740f6176512983592b1e73816400ad9fa15bc9c082dfc8ca37dec25183bf47edc1a76204c53c0804648acdfcbdb6d5bb89c0a72955902fa865afe8a332f39b2497e783c192ea3bd7e709ab8cf52ec0bf01838cb8c5dac1effcc9921ee7e805988ee5381ea7416d10ec03d6bdbcac3e8cb169d61fa296dd7807dba7d7cbcfae3230ae7ec7504db57612ae0c8dcbb0142283a6c647360b03f09ffbdfadeea0112eacefcbe047fc94c4192358c37a27e0a3bf51e870034858a99087196e11e603b10b798a188e1cb55c1c9631b40428d34a8907a6fb0aec39b6119e1caad82d152ea261797b07ea1a0120a2909cec77aa7b6d17f98e52eae395bdb097ea6a7de6c5a2707174e843256fa03e5184d8af353d10573dff11b6c70efa2906a53440695a18809aec8050c2ae63b12525dc480d7728a69356596bf1b993828a15549ea479e82a22ee0a08e690e0542272b4e05ef1401d4a5e598319758c0a8f2989e1d4a60d01f6395a360a478bd6a60e254fedb368311da526be1f4f082cd157b276650833e0e4e5892b6bba69bf5421c3d7219e155e790a44682039c8d2875503e9bf206fa36d20bb3b19d7ce7f63cc0ae80133318768c01a964d8fa45c503ab99a8cb7d03ca2eef5ecf55045ac7c9036ef01766892e960e9dbc83d52410089e3b360747c803e1dc301e6f90373f006b615d9979b4ccd206450484f10bf4cbaaf4acc5884b51c893410a8417ac1acc70b9efe2aadfb6a4db0c821fabc12aae1a476def441bded346f1ef61e394d17f267737ad7156de453931440c58f91ee3c9f0414c5d55e65a156005224901b4110d52804856ac292ec586075c96f92e12c60f25e142136dae72bd43b594132f5e6d5c40417bbf9478a03fc2144c3e81ed137c903d96d4c2bb938676e87d8a887d7797aab591fed3ac79d55dc5647b3d5c653ce2d82b2cff9ee17af60ca447732e1ed6c28146c32727596e3d6d315f08d10b25fa50585129447f6c6c176632c1fa98afd1cfea50dc9611bf142767260d466e25e0c6f350a4d6f651bcf690b2fb41318da9ae0820575ce2f7052fedf40e48cd60d81b588fa011bb84c1a36b7460d6b379600303815c52d7f5cccde461c91d574959e20f3aea15fe120ffcd1859f6b408c3fd2b25c85cf29ba801efbb83484f1d84267d6bca781263639463bfe1b7cba5041aea6caed4cb7e10858a90e5689fb723b06fde68888eb475dc281bf108e0cc30e139ffc378025adc7b04fcdf423f48129ab1aba50b2c072819193eb8606b083d8d2e97213fa617078a796d8906337b84330722648680e4708fd5ffdf16f90d36d952d3624d89bfdcb83c9c5df13cd7dce7a7e89aff6269ef2f65233747096b012d2869ee4f15aa923398a46663ab0d6e25cff029ec1ce0fee0d7805225dd2c8fdd39166cf3a410bb002aa7b606ea60afd3781b699c0d2afe95cae0e247cfe666affa47acb9678aa159df1cc9d3d730400379d08dd39b9b13d2846045bbd0ca94d8d292c8e1d7472e969f9c199748ad16496b841f607f8ce07b6796878abaedc755d60c6ca42a00722660fe30d1df01c95d043a2558d7cd73f2546a22c1d46732298b0ed59b650adf591ca176ef2d4a5144d09e8da00293bde1ce9cdbc0d4831069e40f4150a1aa05d7f20521a41b449b920fa2567f20580552584bc9994c681d55ecf9571588aef5342755daaaa20047e91429b40d5d8302a42308a76c3ff4e13286a5442773c4989a5c017de7533a11eff15a4ce3a05dc898310ed86424d5ff1d6b7ed421594333d1060dee2981da545a8d3d28391ac9a0c8fee42bd9b765bd274499590d9a9d24e3a594b52014cc39908beb2e8e3683cb75e0622ea27b421e96dc49ef130b53671a2e6667bc91f3fb0d6c2dc1eb46a05218c3294db47a3a5c601d147e3047c9b002bee407ab8156cf5a1af5fb7223e2b49efb5cea494d1d13f59745b0b052dec1b3e9f2eec9de5c5553b29dfbe1286119b0341a3a871223c46b0430417efd9333bb2df89ee10c9fa0b864d0bef996b01dbc46099d2fbb91baff560f7b3def03e1b88e71af880dc371285100106678df3849a81c333b703501a9a511c532682209af2780e4faae12050bf71e7ae04521c5925b7bfc7fec9e0f0d5886d7058ebbd2b68ff9c780f9eb5c17d667570a720cadab91ba9e36ccf98565939ebc0e322aab60fe2df5eef92371a17b835570e5f6846a7ec1c2f5470bfd11f48f656190a54c078230b86146a696ee71f982442b8a199d822e58d45515219c7522ff0c73eb0c155cd8fc8d38fda9ae605ab002481549c0b62c911079f75005eeca2054eaa1a3508e31ed4fb16a28a72faa1ef0188c736b419cf29ccbb022909d4be94df5b78faf247b4cffc15fba4d4969e9067fab7419191376ec80121ba1851c8fb8e55e8b3e78747b7e5570fc3c26fb052d2ca683280e362a9e7388f83f3e30ca352219a0179df103daebd457fe91fc6f4952ef71429d0e6e0b5c8d40d7f5cf5125d363c0ee3e3c0ce79a1596602b84d9af753350a8d7d20f3e89372e77b09ecf941f3a50a54fcf9107c0d0f08613e57f0eabf2c90d9cfd2fb5c214a01df205c4ae053f9218cb3ac543b0431dcbc90510af5c01cb24a1cd099156903c7eb47b8d1f213ba02b51e546860d14d44cca9601d159ed110116fe5b8708e655a32692e5be59d7a471921eb799a8f05eaf428866b3bd2bc75927cea7ac982546ad5307133714aead062747110e1c1f7c2e75016a9582537d881c70b72027dd418bf5899a9b3c9f1946ab5ff590fce6cf01a68fedb65a18b4a4814e7debbefeaf76508406715c76543a7565d451822cc5246047e79a049bb8c114640881cf41944e362f239a09a1bfcef86cff4891dd75c736019a4d3aefa13f1e14c5e49efef5e6bf29b209f1bb0ce989aae66060dae14b84e890a0e725cb93d9de772eea03b8f35a2bf8a9936f645177b493637617d8491195902db176916a2b6dae12c3eb95cce735230fb728febdf418a3fa453ac72798ae1bf3955d337aea179ad8c2458de70b5615ec5e4e8e82c1644600f25dc27897133876f8888c70ebf347ef7e97d2e50638bbc62eaaeb314af4bf0a095771bb7bf3d3848627583fad720f2e91682750d0c77dd42daa9e9ed752de21b9ee37f168600e1d6644029ba46132cb75774fd96df3bfa16f9dfd1531e74dd73bdc25041f0452e3141e193613bc4d7082b14cc00f799334dcb0fbb8d157b2b7fac831a4c14c18900756ba9d26a06a1d8bbce08cbe2b9e3835c8379694a57e74190215d746c9dda585c9080f1f23a83bf484ba4467789d12c8d17d89f2e181c9cd30daa7dbc22876c43befb9b5133da764c6173b356efeef9fc7d9abf17f1899d72ecc3cc5bbafc099c50cdfc03658eee76449afe74c1ae5857e5eedd8994bc0a07df9d3c28ad87a59d63427860f2dd37b27280a7e74de8649fc67772c2da2029b9dbd6807a6df8904ad6bc9600ac876584ebf6e38bee41e8ff862cf644811b125893054b02cd7ccc7bc5d82e7d666ec1c28ee1364d2ac6335b8314cefde14c392c32ef9dfebd02a3b8846274c656de33c176e28043c1ab3df799b69bf849d509fbe0eec7cacae0c514f528a792530ea477a34d728af822f81405c771ae5ee745805b28651782c9911d1ea6bae84cdfbb1e8daeef4be62e5eab55805b5ee23f92cb69a087b5f06bfd64293cb340923a175e5a2c260513392f00cc6de63ea14fd089d265a302ef719ff1c7c3c00f8c8eec26c6ee02bf347f39fe299efa3ed2d50528d94164f75a49a7d3db7432be5abc3a519f719972c98eaa4180d1913b295dd32adcafe3169d2d9b5b0920315f125044774750e4601145db176d2bf466eee0d22f5db0a8f4ca8c78b57774bfd6cefe4b6b013c27a453ae96dbf78ea76ddd362d4da1dad876ba0e7e2f7d5419551ee753c14d1447d3fec516a8947cac624c4eef41418aa10bac94cdebe0bac3c793f7afca2cfc57f6886c6c8c76e0cb84e0ddc33e3a63499a013a8ad30607b7cc74f22771654ecc1f33004ef3021a3a9e100b7c2dfc1a5e92255d8614fedaabb424cb50857ea11d4b4815e9de5449719ec166814c71fae4d4def81f9e8a8f0566ed6930a97c770364cb93383deb7447688ad5262301a8627a067b73f430f306bfe30543f9e6cb4f00e089eb6ab66bd297dcaf0892756349d13d2abc9569ae1415a980e869221cdfe238a0d2416c0e06fe8e8ca074026d3831c2d8022d2ed3412234e384dcb8636e01497fa7496a2e73c22958153adde6c197093e45482a7219f625dc5465697a5ad0c27a9ed7c26bc68984f83edf991539d51315ae6162a991bbc3f58d1c29ebcfef17864b20350ee1dafd790f4d72b98353490c4abb57b8f8e0cb031191276abe744bf7c54474d260c9be2acced0c690d04bab38577ceec53f03a07ca4ee4a0e1389f92ff299ee20c9cc588c632246cfb4346a80ad1bee82495dc5a46fec97b2fa1dc4cfc537c5ef7d8ff075760ffd64a1cc465b85d239059fda1392747c8b90aab52fa993c4c843b9e0ff3291e3c364486d8e606446a9019600a6d84dc0866c0e202b839e08ecd5f1bcd02866077ff9c8421000444120055680acb158eae249a1010d08d437bbdb7511a66346915d7cb50a7a37b04e5ae046568e84231451bb1910c9231d8b6dbf054a116f36d45f711e40f3e6a1f56b904877976fdc3e05cb24dd2e1199bc7ccedd420061c751fe0d45427de45ac0678ec02f3534fc6b614e04e77c10fceca184dd96e021eb98ee6e223e58b84aaf4645ea4a42638a2e922783db1028add7e4108374e360ff3bf74b8b955282878368dc0dafc423f584490c0297d372646d120dc6c15a9b5ad4f6df70e681d485e9b2de10b8963c17477f1c69a1e04cb520ea8c0ed648dd50539e077edd7f1bb8e4a625256d87890973a148144f48bf49f333b84f0b3911c8ba79f42fbac68b6d95a7c2ae7eed9d9acccca4adeabcd4c167a0daf74e2797e69f9faf3507ed241ffe2e45721261a3b0ef1e01ff58e3df08ab796c3931d4f5fdb44d6d7787d367b071f279ec593ca3d8f7d48ce1135e3fed7d232f5ba1f46ee86f1c88e763684ea5994eda4b15c4f7c028e2f567950ea51bd09a4a5a84abb49cce646ef4576810698b2cb33d661ea66191cea04b8804e0703045083ad3a014147aff28e20996a9709cba85d56cc3ae0de2aa637eec489bd0dac8fad4c02675437aa764661cad529e1f90163ba9811aeafd9d75b8d5c66cc8d0e1cf4c683fb2d820f87f32e4feeee78dfb6a118a1957fea73722b7902ebde949f3cdd6dacdfec54302c2d236041cd11127029f59883a0138b496a21b451c9674e68709897c64a51002faebe235c2850b0df715042d13045a6b2a9ddde78357611e018ad86254de2036d4eb9b90911d9f50edd6b2cc399d483634439c1f406b7126b1fdb50709e074b05aa7d8e85f18173faad9a2d204348ee9d16d66fa8f5c176783483f577a64543ef53fe70150849bbe7ae1ca81f26435742d480ced8a790b81c4d46771e9ebfb8526ea992e156cc66649c6487550aca2aeed34b230c5a29b64a0c85e3beb99dacac667f5911f466b7431dc72361d5d7b1adc7a7f2c07b11940746dfc0c1615f1a37b714f5bd158d8fc1df4c667ef7e85063184ebcf0a48a617d9787fadc4b5d862e97c7faaa3105e9a05e2364af216c3155ebc75c77d7e6a58a52b167f6e1753ca179a141c456b8fba02012d35bcf892f9d70a547486f90176982c6c2cfd3a4efec31ee7fc206b5e3a1b2aa8d1d308145d1ed0ae4ba755285945272f14cc9143aab883a875335bf5f9e6d2a26e7a0c564e86b0a181cd799ceacafdbd1ceaa2a3975f369d565e8eaef1be4304643da04777f8339c93a05a83d35974a1ae3d13c27442e1d23a6b3948f96b9f673653c41c0bef904cabe35c1a77f2eba88606de6f35c0ee6e31cd0dba5770704736040a500d30294cb051b273ca8f138f90bac541a31b06f1c05acf894d7008a4f361f0b0959bc2320cad803cd1344e71a09c3f2648fd4dbbd61dfb85e1a2c9e83014e41cf1354452f491be7bb70ef510cb1f52609c9360458a776a8ce6fc6c7d6360a55668f6605ae5c8f81020b93351765161562721628b4e34b88c2691e989784dff4844a99a04e739f0dd754f33eeb7f162b6f7120dc6aac331244962743f626f91d041d6c259d0bbcb3005bbb629dbbb2ca9e196ef8ca7eaef3368e73a90d54276d2076b6882f436a2571ad42951f77cabc43fbeccd5e158a734065b7f485e608b566363e3b93dfbaae50bbfcba6c7069bbf533371f86b8c791dc510dd8ca6d35f6cd65094a2c7b05b7dd5a2d2ad6cebd131013032827167683079805d013075cb83127ea3d85b32060bce464cb783fe875b01e63e822e469bd9c09e87bf8bcb514951fac8c0f867cb4c31d069f77237c7d5bf60efbdedac3e77f4ad7dd1ac8109e1d64bf1803ee81280c63eeaad8c6c1e758cecba3042a5ed8503c4fada1669fc7051ba61c22bcc4f58c6bef2b83addd8f4e9e6ba0c4d1fff9d69f553afae2227e8cd2d4f2662dc59cdf3fe1b661c769d3be3715e592bc360ae3fda928e0968ae60cc21dc8198a766b38b51c1045b5ae6316ee137b885ae0338c1d6fde79b3e88c8060fc164981142b13f663470aaf0fbe6084208b61e6a7ad679e6dcff4c4bc12ed01d770f058fab57303582d5b0e02c8fda67154338f08ee7174ddc2c869a3c88da039c8a4d389d9d31e1bc6d36c113e7228db6885b1a6ead9010bddffac051404094c9a91c3f3025cf8cc60b09e75280ccbf0ab5df73b6d10ca554f0e2883f06515d4074d686ba8fb129630c8be923ad9cd1e06d913dfb804a8f68ad9f39f97ac3d391bdb57186a7d38e9e2ad637b1be6b7bc076e1deca64a14d6e837d857407f7069cf1cfc60d4b0b0d486d7c593ef2d9be35841cf67d1b15bd70b763084085d85dd05883c2c4b52d45feec842aedf4ce1a2a3ff2d2853715d10331c85d0ca1e40d780b472b70d6db2e983c5b06a828bd5c0a296fea77572d35c1b348545d36c1067c979aa0f3bf9a45d86785789764307b57709218441f9c8dd36da91c21463e575744273fd18e97984296c2b8a380b1047cab8e5a18091f82511951d2a2d8a714d2893633327da4885745c2c10466608cdfb20fa304cf6455c4edc67cdbfd075067fb4151770748cf9ec00ef638bee71d0824b593faf0b244a721a049fce40b1d3013de3591e7f5f8e29fcc06107673a1a91d0650414caa3f35fbd930572a6d0a974f64c664608c6ae7d14265323a251d4b4670d94594f8b378bcfa29c758d71de88ac6b40f5135a1e47421e408cde4474e2c7b6c8e57d206e7044f7a723c2cf91835af2e6628d5be286a2cef0c1f5a656c0050854ffe8a7b4a2cdab13731194372edd288673d288748dbfc435ee547cecf2271de8c922c281f6c19f7250005791c144603b39f9fbb6c10f876826c1acc9aae1e37980ae757609b8d7faddfedb385863343b047ee3c3d6f94de0354097e9259bc5ad11ba429f2487f88cf9242606924b027ea519d0eab3650b66bd450092439f3e33f72fd4b2cad38404860e50ba7eacddd5cfbd059af00164116890aba23616be52a3e1f1d51f9212de116edddf41ed81e4cd8a04d104c6093c647e6b0e3968a71af0693d0e16a3bc1c0bcf8f1544d95880e8a04782ca9d8d22acdc08617544c533c17f8558d188286c1e416eb000622e2c4e1e0760f6d9310920486c2af75a2f8abed04177397533cc0e4a73f2461510c8d4d15caa2ce90fb2c593c80e075155d6a9b5e00a9949e82d558b515a63d3e7a3f86c2da7ef05f3cfa5a900117fdc9f36ba8f5a1e6eab115bad979ed304e1a9b2a66b71f22c687e2e3d153c7fa752d7542d003dd4aae153ef01503010e2560252b8f5596956f2f0e586ad3706724651db9c68c10cf36c442be79aaa248277954a4ee2468b54611a2d3a56315a998756e266ce53cb5ee32ed49dfcac37df5ca76cda79f1d50c76066f129c3b133b43109b798092a1fac79851855d194f0a4597582132c1435bd5fb46e49e28dc7d36cd599da7019d7c8b23e759c84c9cc30aba0dab34ae6454d0f909ebb57009a0ff0eb23dc6e943b051fc065640002c3684855e69e6f8d78c6bd2a7fd50bfd9ef8805a08adac67402f12b14765db4131a3777281afe8c3fd1cf688c0d99127a400da7f771257570beb1cce63f48f67e056c08c8ef58f9e3617eceb59a44053d3a8dd6a25f411eae081bc7128b93ff88fb7ece845ab1f8d6795fd8813f7cb5715912b1b321bbe0b0b15c648f0c81212e515d245060b3dfaeed404d59e559a1143285108c20db84686dd3d59062864842fed8e4e55d07a2de7dfccbb458e0497a10cdcb78592cbac33fa41a9e4396d49b4a6e20adb22cda780b70290ea704347030ae2880dd7afd32439522f20d853d91d1890695af92a141108769c9a89cdfe6afbf0fc1158e3053fff286e5dd8d5bb744778a0816f966526d4c3ac747cfe70d44cf9fa9e1552b6e071a5431f88aeb24345170f7404a3a5094aa2ddcde84851281df325caa21c5aa38b318314b0446c0265f2dc28bac0ef5e41c5ffedafe4551499fb9db600775ade0f130704571337ecc43207d047972ab413692d9005223e7e2591758ac43fba1c3d520feac1ce7e0a647cd3767cfbd420f92ad11004aac6af01d3bd86ec5e0490700d9cda8423bc375bd22d915c28518e160e047075143079ffa0d7544338c8f38ba20cfb6010a56ed2c4a8a92850936b3f8e81f3fb231c801517703ca138b47600c89b0cf13501c93d39c61cf3909b48f86b407df338715e93eb28b360dbf3a117d82efa586984b08369035ab769ae2d4d93a54883ca5a392e1b0cb6475aae809a825cc9e4c736c72191932bd60d87d860b68a66a8726d80117a0f2536270ce0c4345492da18c614d05b0084af12cf9ec1b66e12c1044a956663259a903c377dfe56ed46670950eb75a6071b8d1e700e6713593384b15496fe689ed7aaa3fc8739f99f8a05e6a381feea67992913990429666a1005be73feaeb2950ce5e016b791ccd08e0347a97317819d92bb46e1dd27142ef9ce0a3fe21d3c8b4c7c3e47dc13e2e21958b5b5aac9ec9d6614aa6a3874261d938cb8ebc19a956d45f1b51fa5504773137d39e79feecc6c859e4a671c9d6f2d75b0abd7cc32d638f07f1a41d611fdfbdf3910f946fec089bff04e5389e97fe06cbb93d949a2bbe241b54f54d436abec94661c37167ed65198c4a2ac81635dee0e6446b55d25205fb90f21aee5103dbf53f565e735c6d5e4b44cd60fc44b5c0563d6073bff1e539fc6c1784ecff5af0865a8c42410cfe353ea9ae6b926824c1d3c75e942f1234b8016ca79477813d919ec80ac16070c5137ee0e9854fc73e5a0efd3de9451d2876343a7522f00a347d85b1a3443357fbb924ea79b16bc04db5c3fd4f2ce4d388d99039b09c87eec284fcf634d4c3249b49f30ecd3cd2aa846f1d3844802b1859782b9d4a43831b20b40a48df0b69eec84efdc9ddb40653f4697e0ef5ff32e1ab338976fa85add5a654664268ac80142c3ae8844b3cd292f85e171c3ce8b0676783e20119fc5b2273e9c8afc5a78c0a0ca56607810a483f2e8198fa921c1bd0f58aec81c41dd34f7862ba2d7f1c12301692d366cd5ba8325f321efbc0f711303001241ec6a10a81b5d2e60d95fc77a479545b7261ab09ce7055d4550aa04a8e2ca9a94215105c9c86a64c97b2cfc4daa1dc79270c599391c3a6c36c93729d57fe16c47467dc6c419110f150e3ec2789374ad8509d25a4f1458aa993f61ac2366bb30a436b62ffc0c8f36043e1963301d0f4f9b4ee6cfcde39fcd2118b459856d2d606e7368c30cfc6b7717709619977ef3309d7e03002b6f1da9e88dc21b7a703ab716d2c607a83ad0d32c2b55c0cc5ab06697085ffbc47585b8b460a61ec8d82511e9a7bf03b804eaeb40c9908d5613e0671c637e1d706879a3df52d1e081601e0f870b76379eeccb917500b34a7262d1b28a5981f00139178e2b1e75d23134b57aa59526bb0ea14e82c732dd893c8fde83ce741e1e4b06d633173a2a6af64e75493f234a8f0632ca98d439d9910d12d413f977a1b8f4f64655bc0f1c83888baed204dcbae3327cefe29274f58d0977da92a9ce9e4ffe83a78d11ea8f8fa4a7f13f02c949a2b4a66ccd61814219f42acb77a6f23ac9f1fb26961f87bbcb9cd7935004098084f0acd3894f6db575a97ff88da318bf2488e039c110f4d15514c801249928e5d20345e2f586f8b8d442d53c2af619383bfa7016d7cec1b1c3c4aef0397b772a55df9a8d9d0b0623474c4406b8a71e163fb8986ced24a630ae91356e999eb880e85e1c8653ea983d24619fa2124fb7bde53cbb1ceae39d4b7a510c4e8a89d3e231f29b0dc32dbf71c23c995a5844ee8cea17e2e42d98c87ab0e93c80f08fb27768c3882ccc3c9e5d9f00d14244af3d804434261092c2c436a0ebd8d304afc1754e021338492b1b1140678101a17ba72237b858f590386d639840b4b3259916b12a221757d14d40e5888d5a84d0795ffe34812da06987f19a7ab14a6d62c6f1d4f7852670cee939ac078b88ec1920888192d7b1537a6e1cc4be2e8894a503fa0c8129f1ae9921078540878a44fc72d0c29d88226fb0a909b960a8157ea3a18d42e3c1604a66099bd621c3bbd43258f05bb144be52a1858ba3129d5b6b513da0503d71cb05f294d0d9d47b02547a8c1be1f40d9d4322e31375ddcb25776f241c5e2d16aff72a1c83c29f12860ebdc26c15c2223e10af190cd3173de580026fda7faa6a0e1d7890599c8868696d4c5ab0f6620c851094607085203b62d0f168e0b1c7997a68598af51288fb85765dc5e3d87a96502b718b8e33e6f1718085f9f1139bfe5f49b665e0af1199ef339eb62f9de2bc681b1809d9d4ff73e44bb70bb65dca34fbb4e143e7ec19937898b259b5206f29b83db911a0e57395379d4a80bf23d07203edda4094127e34f265b6793d5bf5465c8e3297467967c200a5f166d047e6940135797e2199b05fc613145013fa6834cc690a3c9b98e35c8cd49c82377afec210341d01b649be278746cc62660aff4120d15545f205608a265b52bcba1637fd4a3111c324950811988c18fa0819f35efa1cc1fdf8071fd5ef92d8fa93aedbb1c3647b19570a6503913f6383e6a3bbd6e13473f4317036be6f5a823464f4909c147b7e0086aefdac1c0e5cb45d61fa7d8fde1d4d6cc32af7aaaec6429cdeda0fb30d293251ab6a2d4509b9fe2a8e5c973f0230aed4227969435317d272e7d99abcf8988cc1212cdb62e060e4d38cc43ea757ed55afd8c5578fbdb26f40d45d61e43caf6f2a62238f36903a2b95f790e6fc0af4c32dbd2db1f6f87cd4436b0bfbf05d93f35748cdcdc34d21067c141220cb5bfc106ccd6fa5cd95bc61dc694674f479ced7623f2b4561aa4adf49b8bf66e16c857f2dbbe869d424dc642f3ccbe6c26d665c8dee13a3ca6573024f2d46d4eb9ccb8c76f3a2da15104a4e8f4c6ee013fa5d5580a6e8d1ce4316ffe272a8dfea405bd7fb4e11de3a641d1e3e2126e0bb9ec482bff0b850326b62b540b982bcd35aa7964d07d955dbbc5a3d27b4702a8646d2b8ad5ae786328e04f8d8aec21e13f97bd504a8d705110c5e76512fa184d2dac64f11296449fb310f6aa6ccaeb51613c4b4cfbbe9d424e1a9e7ad0e8df05dc72e1474626870813b4bc750bb9c0f8f0e6932c2bb2f7b1115040bfba501d2661650019584c6dbddbeb2002579b4829fdbb26b1f11ea4ecd07821acbda3511cf6a27aed2d91e6926a10a9d4c1d32c4e146ae7f30a19d25cb1a17c911351f4b9db282956e0f65724fc6b7cd232c6573cb3038ba4dcead46b5e8dc77332c90677aba2358c0acf6e54233f812bb3aecc3d5ab90855f91ec1b594efa953298f96d47103b8498217c4905675ea96fb10b25c4a0461d08bf877a32f67a07a7b41664db80a0e71168a9ec1ad881f19c6ef004c3fe7ad54a6983fabdade128938916f9fb686d2e8fbf829211b285b35e757bc5073e6b61432a864244525a0a62b88a9f7b8dc085d4a6e1c1c99922539b7387484ca80ab4508fca102eef7cb42353ab32be19b6a281f625a791d091702ba6ab2545e94801d6ca06ed6ed7c3603aa9c648c3599e1ea8b6b80b33f34626d0165c315a504aad910bf511e82fac86cc44c3432823dcc7b103553066ce522aa187075db791ec8b05162edeffff68a26e11e4082e36bd3923488b0c1e6e1c7d1fdc85df580373e338fec7f4cf06fc486868e1275e72e94d7a312eb611f48883cf62726163ac43ff54a89ee1b7ffcbda8633bbfbbb7e161f8dfc52f176903cde08992a3a75701f664ebaa7281150fcb082ec96510f5f8c89aac19ea0871557849397130a063cc43e88e2c1688687b24c15b0d7cd2311c323b9b30c2709047d4a6d0ce340c0ee4ce9666fae41144f425b845f93f3cd2b6357d21e7c52d0253c6a32d521732a9993a022145eec78f1f5149a79cea13c9eb6e88f7974d89700ac9dc75d54454b4ca2848b48b029150a6e5c20c2e350ab35fcae8a3b4328da31839b786342eff118fdef7f5fd23fa7b8d5c14c7a41ea8e1219c73e87add475640184f340e6cfe1b7a57cb9255f14e2cf75c2082134fce98916b6439e3261d4f06f71367905fad53b840b552acb0583c9e6409aaffc6e88fd892a5cdd619924fcf1edc3bfde6cb17ab0346e82eb51268fabf7b6e65139676d1695c5618bc7b8bf51b7ff60bb58f8b61c86829a637456fe29f2a4aa93ba14f1b13e6da845e649f3e4c015e352f726f78b4d208b76dca77686e1dc4c86e1c0041250743a3dd4e5905fee6f435ef38f70865036e6fdd89a26bc26585fd5d5d3cfc8cc1f55311986737057227fd4eea188434bfa47d825329e17e254c219c4940bfa78bbd4a3c690efe0f02649f18a77bb5f9730c098fd0d63e1e01000b5571a3e3cbe89d1d174828fb45b037389ec14d49c8477b1b9097c9bf90667ae60c4dd9c477bf10b2668378816327e775105cd7e6a73da1f0509cb09ed2fa723b8026ff08df591e69625994205a834d605903352908405c47970109e1286a716a56e820eb91caebc4908f8421a78f14d11d8288e01991c2da7c505ac2d8185ffbeb496ee1ebd4e88e27ce4c3c38675a87f3fb1aff5a3dfe652925ab2baf475b484e64fa5729de8edfed65a549ee59a54c4a2b4bd88a946dc9ba3b6423f3544b2706f120f3b767edeed7997f01ed59c971f69855e0dcd4a810915fcfda7cd8bd108150d55105f4f45e4b799e0cf4bc35ceba525bce3f13fb3c1cf0949fa2831f32d728b3a343f9461638e77917e1b89aa7f7c957c86296272846a6a1a9d8e592a7e6ccff9f61b2a7f32060ee21d3f4f341b6d84b1194424ff4d4e9abcec925d9c2c884d56fa0ef21d0a69668a1859e2653f2563527b026c6b39f1e7623761b871ff295b664a1653ce96873868406db4c1f5da001d99e978b22997f244607514c6db31e1deb4a6e45fc0506bed9c38961bb08b73c557108be7d121647b29994dbffeb269ad11308ee8d108f12128fa2199e2d923341cf9a0b3d502b47ad8700610802632a0a274cbaff576e389fdf73d4d771a3821e7dc1fae5419fd5b5d6c8e57a16afff21cf992ab987ea7ad51e7e18254d9dffa81e85029950e516661c27f6ed128b9f591d4dd5bb0365440775bd1b4d80d61a0bb323cef98508d8e92556d41b540322b1af279491938462b34611d573a708755bb919686fe7e3c28843db1793724619b7fb1cb83f748b7d12d41ab8a73ac024ae7ba71ed18afb89c7e35601f9300118a8524ef3a8745929b7cc2f5015e5888f3f8fd17d69635131159ca8ed738d4f2466fce35fe93239a66411bcaa69c162755d13a2cf88b021425e79417b425cb606f79abf2fb52f3643946cf56f004220108fc4f2e78f5b74ebd5f7c96fba8e739c5143b34ef673243ac755b4a6a5774e0cae1d384bb4b82d13008de4dd57cb5c23f311394801733a879478eb4bd59fd3c46aebf6cc267bd5ec33786e1999e3350e18ef93eda90a37690f59196a5d5f705af5a03c4a15d8d669b9f464a7f50966abd376ef1b2556e5e63bbabf10eb034d91f196b26eaa9bafca1ace0fb175403499cd9c7f25fd33ad59cb0a649173eea4463a461423d72c8f179aeb7c5b3e0d77d625a08bdee38eebb823ad5db23d60f7c36da195f1d2ea5fe03e17766bc06417003a7187ba807c5376b420b2f3498235378163200d827670f541061238aea4101815e8bc6148d117306259ba950b20c39fbb3501fe3dc213add5ff4ffe119cd1b370f42534603242e82cdbf1cbae20797a6cd4837de8fd1a543cd34beaca21ed0bdcb54d426fd635f8d011e5db9b88014446b432191297cd6a9195c7d1cd8d7fa9ba71bb05678364d7f0d33e26e0854fc3ec976159be4cdea09fc076fd87ad5f7ac2f4c8ef083ada885b01788fed4f3c7f313683b30176bca3af82ebad10d131a1fef1eaf23cfe914254bcb260b06a90b8a54024394f857ea836979df2dc2d935651b4fec00f349c6cc5265f445a47863c4753e0f20fc59c43f90558ddf42f8e664081f92aa0bde7568bb76f159b75d76f9393268bd410b89bc62894bb49d70ea1015dfd6a813e939ce5b0c495309e46cf7a9d07c10f580a9dd37545a59ad8b6e18425b4931b30b4da3c9a3c43c41821b9d2b5d682a26ac60de80b735250c6247d97bad82b40a258cbc9630ab6656e15957239e83583524ede521be59208c6967f35714edbebf42ffe102b041bae5161044dc2221e45f5d09a60347cfccec6b21ce0f805f28122f3671a03db79f8ae3492230b85aad8a18c9dc00a1ec822b140a3a0c3dd8d7b55b9ef1beee911509629482429924c70dbc4a0fe8493a1b9283f8f9fd5719e2bb222b6f5840ef1b6087dc72f6b42ed5fe5eab7ce634e4de97a4a80a77fa539aa9e55965e7fbba5edd6da874cd6c7c03809e717d7c8f39c3b0bb362798d599fc214eeef709ac1fe6b376d46afb74dad45998e11d35bd83ef0a6ba8019b65cc7bb073cc4f270d2b045208760beac210f35d76c97a393333ef9a84b7bd15693fbe99b363c3a1b846aff61c56eb9c20bf826a00284aa534cb7c8a43b91e304635aa62c9cabe1bba702631451a7efbb798ae62d1509a4b52bc034a13099c02a3901819c3b2f6883190c732b6fb0044760f190b46fd2ddc96be409b3a6f2d70b29c2fd125d18f5d65c6d164b6ec9a1f8fab316beaa7c1f4419d401ad7c94349a93bbec7a9f39c5da25128261125db06f037597bc1edaaeba409463df088b8fbff9862d3e4f1ec60590f96c3cc238aae6ee7a588b2c8e35744bc984c2f4bcc57150279be0cf8e3d7bf77474f8da5ffabe48fa4449646ee752dc4138283931005fa62d37009309030ae2219368563f7d8664307a10bd01b3907840674bd7a973ed4b5cd82527dc4dd8096284f29a834a89224e470a7a49c66b1e414dd380dceb90a0730bbb016d1afb781671a58eef5d5261433e2a189be8836084263069e9de86d5fb3c28b142c6720a4b4f67a2636b82417bc36e9f5dd1d836eed9993933631ecc36dcf2321d5008526e613731669a1f13ee20f088e04c2b81094a808a200ee0bc13197ed69ca1a85ea82e9b8dafb47ede60c5495e3103ca89935a430c4fdc9c0465a90afc02e48b88b352252e81b3992865bc855d332aeb6e88f0692213f6cbe63a442b402802761d06c455384426ec6ef92cbe53e507f9271731633d4971d62acd832c258ecff2f9d66bd6df88a9e2199fa5be37a91f4edba52532e1290b90f4f4b88bccfa1dde381df35e3515600a4a6f1a71a5376a85b86a429e7c2f2e245a1517453360b1ca66397c9ae508a9fd9d1206415b02894ec5010b5dab02ad74137688d2541f2ae283430c6089338cdc5f045fa1567d6068e70f76b3aba888f5112f050f746a151eae0e0e1387ecc84ea6437f094398ba0c772a8edd6639e7a6b8f55660b89cffdec08c8377b0831eedf2eab8ae3cf7d0ce084565844afc87306af3d509ef2d7bc21243fb48a0a16e2c6e9e1522bd3f8c8fa538df36205802ec4254a5e42a631052fc1a3842988a5a6e2d67f101618608e3c8081400b0b1f285e5d1c0d8f0a2847ad1ce2e2930c6d852dcba50e7c4b95da7351b92e2ee8141e918b5866748702060b4d4a3da72ffebc52f32cd8a5da47fab8c2215892a07236cbb23ac0a7d18107c808132c5243172d0e92058d796c60348a2a8a8117fb50490a413626f384d542488f9c8d2275431a9fce16ec67e5d9f642d4a936b6ab15fe72fb3040c1f8c0e38690b6ef1c114bfca0af1bf8ae0f860c2bfd7ed336482833c6fb80f86e893b22cfd3a883ea61cc18fa38a91265acb6f8d0a5f227064b4f98227c622915b1b45620214dc27d59e14ac0c7e15299416120d0b2820dc36b42c90c297401084ea6df9b9cb27433f1b8c5e1a16009dafc60288983377a50d9a915aa60389ec77974140ef6d731d5c1625cb4d5d705e6551d4242c1a480b1d082df66e92d955011be4e7b8cc72a4534f17ea503f67cc1e37875bce41d2a550d860a4149d4a34ad8b37d6aef146f3e44eac18a34e8e58d0064e69503eb08caf075e05af2d3b78a85dfae6651eb24696e617654e7fd628d5b5cfcd189fe7e0434d44cb2110c6b50f44da8a49d3c95f9349429fad1ac02416ad73a14c64aa3ef317908189f3cb5f8130419c92a227441bc73887bf0c6f0f79e4594292f3e084b8216aea2d1e9d84027c1258c9ef27b053e70d83d6486f18838af338678be3e8ca827a811e5dfefea46169a0fffb0f29031002173668f6a97b14a413e3f84eade3a5ab07d94d118904abb15f8fecce15f545090edce5e4199b5231c22e6a39d5e47974c444eca945a13626cea98865f560c62cf040c9a0471ee1cb3134bee3019eaa8233a072e4010f38121c637476d7a2640cf23b261477ae754fe215dd13b19849bc1e12e70a0ca7474004d739c2614b5cc5a5dc827c42b6ab9b20bacd0b2b337183068e3738362a296a25632d6c891d334b20b6f6abdd4a88cdcd71762beafbb44d4ee6b386333308e9a208ad4ba76e57a3ca93acc38e3e285b45b6c8db1183cb004a54a66d1c797236f39763daa437357df26851c3fbc4bc89ca174c73888ff56d34b572651e9eae543ddd791e6efbc3fd54d516cdb2c95682286e54aef52dd929dededec6784e44cd863c7970a246ff4957c7821e4ace3e3053315b09e76d1c73fbe2978ed658111ca94004a7e821762e8e4f9108f94a611b0bc67336ef83aef98595268bfed950b95fbc42b610a9b12e04c99e10c2b9745cd23cf6b6fd52d7b6ec08e07a795b5dfc388ba05632e2a02caccfa716194714ba983402adb3b208110698b018692a412469f1954f7e4a41aad8b4039cf36969a64095f90de880d2d1deb785a9cdc43c07105f2afb50e1c3fa0e77446b6db7c087804d30c5fa425fd89490005c3c054834a7ef641b74806626aea08acf5f534e538b4080cefe617623614ec23bc96557e3b96f557bd8e71f1f7b896f2e30ed7adce177993a922ff5075da6d7c83ed8c94efa5068a6575bae3ae36751821224d8a134c91534154a0db845abce6d50ca31e09202cdbc50f67a2df5e0025798c1882935c33a6e0b1b4646a1134d52d2eea5d2b58b47c45978b0e5923791c25d7ef994e8fc05ef3b4aadb3c1861528cee53fdd643301343550644470d57b379f933979c8e215e7855adc3d5253f87df59c882209770012382ecf203a3a11e8a00a9019bf9521ae90ad47b5a587befee35d969b70a36daa136ef4d858aed036caf4fcb835db1161ad5151337faf2d6f308a337b1ba57748695558dcb0a15f92a3aaaf91d2a1cb638e735c09c297e2fe8184069d86f869f45caa475c856aade2e680dff62d6bf9c21680d31ef3af134601150481bb3da6409e2310e5687e993a434391513b1ae26aa054996f7552ac944ea508587337b336f5ac49d70765f85240087caefee8d14fbff3a2479c337d6e09d5c8c08cae8653390283aa2ce5f3976fed9c82bc2c68fd79d2a7a4bf5da6a5c25589e8e213f7614f09042633dc9d0ea2680b10fa5896e0ce142e5647c0744f62ab8f003b84112a42604879d8241eb94a896ac255ff3a6201f9b9c2b8b333b3f456a17665c310dbe63b77ff655f62be42897c73867b4d563c562181bec0469eb38c132a8382a5490abd1823afe5d5d0297c1859859dd4253033bd07980bf78071ad5dc84a5227dadc28358cd6808b02b9c4ab49d8bd9e5785b9ccdec63f86aa794e36d9b7a88426f3e6b3605b274b4bb86fd9455df392604ceecdb585907b827cc3953df0f025b7ad94e1218a30597baa6b5f1c2ce75d60dff3d92698d3e40d4d0e658fc3285a7d7014ddc58d5d56284ea88d7267b7213395a084f1b2e1f2c198a98b0f2b8347e51afabf544d8ab9635f797bd78cc32976abefcfc2deb210343336d8149b17766a0cbe5fd08013f908b4e621b9711498e0957883ebba6312a217211353093e4a54fe2576a7ed5c88c32d2a6865cb93a41a70278e062a9467a9cacecd41451b21310efec5d684c8f6b45b08ef695b561f87e1deb6c4d0b272b93222e61a5bdf6c0aee68faccb08eef4713eacdedf89226b43fad9090e89b8410d5b692ca85c0cef29f32e4f5bc58ba260e71c4bc103983e8418cac8f8a072d4574c4e9f4e4e59453e5bfab5d42c268229b7147d2656ae3d3f0b722eceafa8ce05581a5f7d4527d3e714dba7c773a03914c2d170123a1bab489fd0a01afc3ba33f6bb36710615f3b6fa01b7cdae841bf5d07b3005148a6519fd716fd9f2006703988c0696f2f621b90b21932018b425d7b3d90208f0006f66178a4eb5fad806783e258a4f400d3a1e38e9e748795c36660308693080cf6b09fb280c10393caaa138361fafc6ae188343f78ca138acbcf3c4762163b9f39b3bd2864a56bc7cc1da2747e87d12129a01a5ca5f57d997304e01729f40337f362745895838c479c5f80395e6d30e5e7a300f0b37fc6cd75c8703189bb584e3806f3cac0742c7b46559b5622f07c71f01ade522980f3cc91dec1a50eae5b1ce1a22cbca4f939cdc2690fd09ed3d85c4b23cc93b1dc4aa1c53e7347cf838aaf5262000958eedac4b3ad3e9d5ce2a5e4a739898c0db8f41c826650251a21e3e0a05ce928e428cfc1e609e2e2b43e8f14c10525dd6bfdcbc529fbdb61919eac249e293692f55e054c60319c6fd23be5a64cde0c3e9b3c01dcd0c40e6a0de21a037aa7305e2b02b89cc6ae87c40364c47d9a1adff1ca1dbd4c07b0e3830f48e9c69824903647baf04816b09f28a274e14d4f7f862cad97a7ba54c6390e0cd3e8a94dc83580d5ce4a8caf5cd08bef776846009872809ca035fe56d03da1d2f1502f1e1be2909437c3bab1498117cd21d26c048d21ade440e5b5c8087a089135e72191775bcca95fe59fa40673f7c5165d1eaf43004dc29367af750902e9af4f6be0e1149b9444c3072aa090ea1d0d1dfd04c992043907e40b6e50e209b90cec0a6087cb31203c34206a1004a68f79657b3ac75ffb1278abae28d6ceda80885ec144135122c4d0f806612e5dc3df22efc37c4d736b816683c885582f041e3aba68ad81c26faabb46060b5562a60aec2ada53dc04cc1449e439b8438751ed73b620577c823cc7ab9759443fe32d28094fc8b0a79e3c4ca203cc56917ab04889b27c8be42f31606d50bc61a758595127fa647ac07d050ddb6349295fe6808d885550b486cd5201fa8558d9a480281218595e7ac0284c962432f57d5e8dc95fd024bdd52520d55fe019820a519f064f303463ca589ea26de03ac0833f62299bbe74b0e4406376c996ac427539d0175ac36f92d282d768da053e17981888a4c49c4602521e913334829e8baadfdb8276c198990aca4eff51691be0f51a660b1f5719155da8d4037eb966204a9dace4e6ba428e9882c623af098a694bc42e8f76d529b64436f363e725b194fb5fcb68dd13480630621c51907ca2299bf2b81d87058066a838eff0d3e0648c4ba29c129185bde6fadd2520c5e90c3e9c1f827500bb9575081128960b5ed3759cbab0301799f42253d157d1dcdc864d6da06e9df8e7abe1f08650ff81298a4eebe8ad48577beb0d083004e8ee2ec174e687cf4715aa935994cd46019ff98390973cdd34ae05965d02ea8baf29e0514b4e15dac39d8a9a858efc2677d3e711ce0486fd899dad0e0b86e31a832e46cb4a72c00b98de6e96937a27e5d3d8e3a588fad77e2971b5dca359e62f7429e481c028a2ff48ad21db98328216c77af0f8c7391550ba73833a6146d879b29a4852d12148ce9ea0ead639816c3810e542e74757f7450ec412d7128f968226f240bfc4ffa28b506f57f94cebba689fa1af8de1a9018a51824565ff84f45897338a189293c79ac081c375149ca314d777ab281d57b790569f6e792e9a2060b4ab39b65fd9b3e9f68a7ce16915d15e413cac33b25a2f737f50b42ff1081f9f0ea2d51081b84786b20878a23ec9624993b7c2cc5882fe04021470bb96d3687eec9f77a5d22e0bb3576d42201160a984b2699317ea6512245a81c1e07c6114a14dd295cf9075042ad6c304d152c27b33bb32e295b0e60e1e252cb43cc2f1d3cbf08f0d1b87eaa0694c50e5f83c1f965dab56ae2c46a47629331a2aba0b412de364ef20bb8bed1d177ae2c4099fb3a5996f21242a134fb7199afb22cf1254df6d10a6c094a5003a16f3a4408f6a121ccd45cfdfc40ebf13474ff3cfad09c25a029317f928331c3ae222d377b42fb771eb67645438bc3ba96f11a667a0533f75255ce71ecb420289f5970531873c90642a265e7041317b632db49ae57ce1bc07522250858d6bcc3188ef0624999a14674ac2642fa8465dc121f5126e2b15c1cf1cfe50854ef2b8d1a59dfbbc6668cde59733f4f04f92b510355e34ca5eb6d0d41cfa9fc3939381d48445b4a9215734df4c1e94292ff83f3523832d943552e0bcc90bd5aa710b40e2bf6864749b79d744cb51749085d4992a92a8644e649e5b7f6caecaf9647dae2a04538dbfef1b2bc517ce8dc458093d681f8247064954e3500814a8cbbe9b3b36f59a354dd05f15b4248f18d0541b24fd5fb8a7a3054cd0b779bf2385c6ab642428aa01344a30ba0c1481da7373d39cfefe4c6d0e85ea801a04befd5dae8acd37d4365973edd79c54d71f1d72578e25c89d9226216f1f8205b716cbcb50ed0ad86cfef9d90b60b048a16aff74446210b62993f78b9438428d26c5f0dd44e958d7519e623c43755a11d8ed6d0c13e4a3346ad52b5e98855c6e683b02d89f10b9a7d486eae9450f40844e8cb17a9b811602061e0240425e86967400c9d5bb802ac706b2d070b8facf319acbc0736bb982ce6d138add0a023ef6beb8b750db3643512cf24f02eb64147e8251d42433a5cc77afb2c32deb10f27417dba80f18ee35a2db22cde05ae8e1681d16c16c8a44235582e03a808e58f4a8fb59d959b600e9cb2f5d3b02141a51bc90f92d8bfd1d5e48fabf55d419e77492a0946258c5365fb526e791bf965f1b79f3d65a9cbfda1ba57cdd32871ad4fcc3933a3f0735ee06121545f156cb59eb8f1d6682165b7139b383e8a35c34ba556016fab8089707e244cbe8a580a73b090571dbac20603d4f48860eb132f5215c98ce6c0ed5a51a134f934914a7b005c99fbc2599d90413e9942e621d20fd74c2d880eb29731233cc02fb493a20dbfb3bc1196fd2f53c60e289dd1a608851a3550a17187a8b29211020ccf68cf1bce1c74eda31a4c6700015c8df5c3c4c00e1dd1f84021e8809fcb1d7dbe23a922e9c0d0193022bdddd05136449a3a25b823f12db608f4f87db80b03888e55c1b7988dccd64a2811d1da3d803b6f96011b87a2f632600b00205f385ee1a909b43cb12cc361457d52ee09f74822ddb290cca80b7ac24c7d11b823b2d5203867a638252380b571861e42a328721f712e4046548b0c78960b5e9557b7bd4d7ad44de48ecca80945adbf93beda8372d562033ead21b8ba05ae0d99016c08dafafc2ddf255d9d86b203f8466ead384c47d9ef5a3d8061461128ca178ca40617a6b4d295a301635ae48181991e5a7cf60e21a5c12d868642d7f640c3e391c2724cfb9db5f3255efb5197ae065f9666abe4426e0263eb50f99acead883a71ee7fe6451ac65eb34d37a1d52dabb04a485b848b7ccb1e152f348fc8e5944b4ce4df975d07000e948218b4ad56ad5aef8c70552a20d9d7d6022d1ac2df8d06762a403a0f7ad061ed0c2699578b2b88916981d2c505ba3a714ff9f505b21a3d92bd3e64b41222b685164d0ef13f4121b9c9c74a286c8ae1de97d0a5a4bdeac1b1840057353962a2832c9b180bc8c8cc2ea10a55e689b6015c5cebae6f198f3953dbdeba1201fd82cf7a9c2cae3af369342c961962bc646e8b46df80747046ebd1c82fedcfdd811478fc45ca5d9a855c8e2a2dee83165e232d5085d2ebd71391836303fe380ed0f471e026a9711b6e832f16e3f166a38c63315b1e4a2e3b13b9031760623faf8132660c5726ece4fd70097243b71f4bffa824e651b6fd929d92ea79efee2fb4ff73fef11f462cdae148b063e634e7852b7a6d5540c70042a5a65c05e4a29b914260971e539c6458dd01232e04647d21b1c1a53f54fc54d58c7b17a5c86d1d536d2f0739935f8c153467390d303602d6a09e8228ff7d8fcae109b459ffceae16ebd0c588fafe25e44041b2483e163e466ca12e2b0d4a6fd1c0c6094b2a28718c66babcafd1b6539e0f2e2b63263334b6b4b23948e314fb1056199c1b7a4f65f45a8d0b7f56ff6c5c3cdea05b2fc62d640b9d2d6b3e414e8b2da9e2ab7ab1f47d84610ae50e966b6e530a9a7880d3248b98b0986abf915146db6f229b5f2081c7d1fac0cb8ca3aebdebcc48213f2bf62b01c073046bdf0b9067eba24e99155ceca478bd2f74555a38f1b6e076aeb51e8588f4813d14ab8d9ab5b18d1363d65580ba1adaf78f0f4ed86f4c469b7c310ae720f4972a7aeb9d25c5a024b443b7592cfcdbe8132ab471ad088bcd9141d778392506b9dcf398cb95477ed66cb9200b811164137d88395aae567bb079505e25fa9c07c6f487461678c324471aa261ebbc8e00b7890d14a32950bcf85aa7aa9aed3d908c0c1654f1d85a07fde264410afb4e3a89ac7520de2007a49413b50ea4ac71e8119fe67608f4c1ff52d0236e50dfc67eb9b87f11848327e1ba73a2acd36020e0f5c7a30c5a905c3e4005fbbb1f9caf624094c0763d77f2c0eb50345ea6a653c38dcdb06dc08b9711d0562fc6e987d0702f4123e01cdf721103723199f4ba766b2ec7ac05d8043b9256c6b3e4842950c6801c229ee9752a7869329cc81c325a98540527236d89e01343a5ac890a423f9e154abbab202e15bf342a0db6c6ed50600c5f764164b3e013683b133ebb0e6b3a6a7c44c2c0ae3b3b503b3afc7a085904432878b6314943f4f0ab97890feb3de114d0ad455bd2b82a73e8bb092e21e09a6e85298a58a441801e3e13e775225835a30b9f98dc354730ccf225688f531558d45b0114cce14274f1c4bfd7cde93bbd797e85912e37d38a0076e4bfd334f98ca3da117ef242f1bb20108aa874c884e2ca3b0f50044c2b8564d786db25b44e1cb1b34d6c6d8c925d73dda2ff016db29b2b90855b389bdb1fb00feba16637a1175bfeea7db91fc5e0173792d6d98ed74582d7dce340e09a85020d70c221e5d6b1d989a949a9c6b6751fdd1a01bbb89b02efe21433bb966bcfc05d1fac8adcc5f2b203128ca51cf57a6d402cbf24531844d0994495925f68e3f9a936480a950b4379c08f9927c5c9850a272dd6a50370d5042997d1c6f898a6fd1b6d13803a704f74b2219b90b668127d716ae2df48e2d3c75eacc860cea7641474dc5dc97c9cd61fc84c7a89d63f0cf5093e3de22b4ea5e7c742a11c50be56fa4eec86f6196b94266f143478428184f9104346613f3eeaa8cff26335302a7411d005e10b59f9666400c6351448adb5196d43c8ab63d3076c96ac5ada240682999d4fc4873b55716aba144b2732d6485faa548dc1d152ef137001931a1b1c8436e523e3d2f4f6948760844b5a647c8392ec9ee40fc4aac42fbe443c0034fa202d90ef8ce0261e32d3e9c5ef93b35efc2a1875b54898578f9369de3e04b85a426837429799a8e6049f68d204cab108c2156f95368c3df14343b82035b22f3b70f64d0366d740d65e577a5d59aa4c0a103a80e520996aee50c29d2b6ad66d35504eca719e90eec26a2411e9514524bcc745aa24e207a4fe4b964b6f38ce178d6bb3c84939eb7552fdf9ebdc63891c0253c548b44a27928d394f572cb80c3004f75e1da021a850c8a31f99d6b08f95617c61e62899a4f9751c577a44e486fdf52881fa06f104b300bb7d464d67c01114dff8562ad85347e6990188750c35cce27b01206e11486378ea5904b5d504d99728ff1e14453eb54679ea047fd97f8138254ca45c9a973a0f16ba6429531a6a48755031ecdd4efa60c42dded2700d0662658fc74cb9fc025b76b91454ab2dc1d5db03e0f15d409c40ae36150eae4e010619260597c94a9c94a9af6bc18c40c3baed00e66b2fe4350a2c41ff5bce770d8828021e932c8ed0387636e1194552e5334a058feb35311f464620efb2a63f591130aed86b5cce73443f30fd1435b6853e229cdbe539d131f1130e722eefacc8815cc277183bd628c807a54c872b8af844cc263b1cc400c491ee0f50352ba32545b5135dc2a39d5b03c094f22b4025fc0c62e8f45c547c87318525666810a1bd15cd888115710b7c56b1e94bfa781ee6b70742713892cc552e90202774a44971aa255f68107420f700d3eb8836593ec20cb401f67c67f212fca595458b8cd59a0fcc1c30717537378fd95746a7baba4a54c47a325fe8b53e7dba99a60cee543f42284e1a5450b0f91b9a8640bcabddb318d3019b3c551a4092c3990733f2f2acfa8a2c6c87fbd5f22c5f99ce2cf426d945f3c12241d0d65f1b23e6b69fe88e56a74cff3331d7c10909e6e74ac5595506d400c7398752434106751bd36000d258d332ace8b1c3d507625c421607f89e93927aae7df1f203e98ce8c931ab2612d5f38679ca48e26d66ee2daeb91cf4d5bfaa57de0ccbf4e1d3407a166ffaf7c5981bf09d49f735c93ef5f79271c0a85c9a0808700274aa2dd771043b40f8be6c79f93eb4b77f92fd71a1b05091aa0d8c2f2c2fc7e9396235a09be5b89232a10fbaa2a84f61fd014f4702b2efbece30041b14abe6bc9057d18b47bc2a45cd9835769200873816c52fc5207236f171a5fa6814661ef1c3623d727a69f4d9eea6095e59cd86bd7e9a93b191d5a1d715117616ca9107b9bedf893d1f533267fba03d51fad8717b92beb77280ae21fc208605129cf2aafcb8c088e918d402720806b4039d86c0ee2f076bcbd9270a27cc72893f0570899d8945f0fcc11c268bc3b28ade007da4208f2f7cc62e71800e7c2a2a29141231d2458939258c6d009b49fb0776c3c57c9fbad8f32ade372ce9fbe9facd43134a51617c3d050e3d9ddf873309a79923f35148f813ed29803390b99bc1ea9fd2b41dc08404e0da1b11d20b7d334c74c85222ccae07db7d1fd46715fbabacd711130bd47f8f167272639f9c4ab9ec332090cf1b6e39da8daccf919d267290b0f2e1cc16fe582c641d9597855adf084ac0684df9801d4e77bb30ffd44bfacc84fb84313852b24a277c03ecec31eb9641780213ee25304924ec7a0665efbc0b6a382721326ebe0bd23cddba5744b747ede995a6fc288f3eb61d57882e1baa40b871950ab8120d029474148f3e020e96f6045d7547b1b26adb6394f7ca95f803ac3ef2f670d412a0b0999e1ee7a25445ba6739a83fe281511c3a06c26365590a4927ca1f4643256f9f5b4dbd7c1b2bc60d0fd318d8d275e671df01863fc182bad4e479a6c511a494ac0234728b20e4fa90a4884eb5287ecaf54ed11daad8ffaf093dd4db28f6663bd7733324dc46c98f8aa6362ec5a768c34eedfa04e4f9631d2170116f06b6e365296baa90c1598b3fa24de64aec892035c97c76362681dde4ed515f4096474c7d30d64b8555132aac85e0d25186fa46c75c1be78a52a6a29817e6714d3dfd0222a7443f4cde01d9ce283998fc23b69e09d17f2f60535237bf66397c924646a4407277d82aeaf7cf8a0065b1f88716eafaa4989efe7ef463f1eb608b0c7f6d135327328535a09a49731efa024e1c50adcb4098aa0f650a2e45d91d5906670c2bb3f228e2e7560ba379537ccef874af77601fdbf91c65b0b3750e8d5a065c7ed1ec99b5b3c542e85006ce541f577743d7fb4d0c4149a5f1910b74947de024d37ba9c048b4d3a817ea5440fb48a74a078f68aae7b7872bcd6c60ba8a82ce9abc3bac8b110a471a0ec1e751ca15585c82ab217986bed23f286aa71b8343e684d2046a1b3cf4ed7a3d58887f5fd52cfa021f77c557bb1b93c1acf32b46936fff3c018aec1c288949ae4b8295099d8647ba93e6e4b1578a6420d726b44e99b26d501850eb0039a2035b5d1aef65619daf5f5203091e4ada4946c19a470e131835503202e551fcba7e3da335d2814c88ce49a466ae5342005c8e68873a18be357a5b524261108da06f588d303f03f8e0cf0e7326136efcbfc104d44fe3881af3b3e068b7ab207ecb3ca66afcbb5bf502790b8c15c3851d75b4dfa318dd49b6261da8b2a71d5609aef8163d078b53754ab3ccc0568aecb5313afd582a513d6cfd1b709fca29002a17423938339b486cb0b6116becf0451acb188f2b169f473c64881af144facd64ec59e5dd66c51f69f56cdf8a0c7ab3f6ba0561e908357f36fdb5acfa8145576da7078ff1d47092edefa00a471fca1727af9a248e7f738b843fa8b95dd3343ccc8b6cfd8aee5cc87de2834dfe93eba6628b26594b64ee1e1d4f6d184a0df2bbdb91daa3c410fa009abc54da88eadc4acbe1855dc515ef083dfb8695c11e5207fd4313c1a87af9ff105d41eae66c1ca9e2f5b0ef6cdf64a57ee8fc8c9c4b971d87e262e5a43a7ae16bc7e16c6eaa1f977f1886846de76a50061fa67d1009612c7d55e7cb751ac294cbac6a2657f34cbfc3957c8b3cc9201812e35bda05b8e10f55274119a34800a454203f89f8507bbfa1e57cae43f458ed4d2c717da52122f99d055ed2fa6f3266d42e1e7f52323c12fa012df81887a1e9a762b4074f8f28484e623a5a10c62927a18fae5d855f50b3d817c2d91a856ba52b29658f69b5eba8321cdda075da427ca9b278cd75456cab1b3bb2f8abec7c3d507eae87134a8c7b8743b6f95f0e5124c469eaaf0b558624eec82509d0a07354e538ac3f24ef0f71e06cb4058fde66390940a8da159a51996110fab11cabe220c116a16a3ab5639fb12dfd5adcc8561abd7c2bdeb59d1e88fd925bcdd83ffa9144ee336dea5349b6544ca9c55b77e170941cc76b5064bd100e4be7f188f9746d1a1b613c267896a141e99e1f323e50bf1e81e0ae93a10520f5e369cf5f4675636616f908fecd5621733d582b1988a502c5ef698fa7e4792623048acd9889d1142430fd762d78fa6f0758a801d7cae2a3821779ceb5fd70e3b3bb90219f1e7b6fcc40a6e9ad921451facd5667af163f6855055d3ea9bc66f1b65adfad0297944d39ad930756bff666f29bd0117121811bb3fc443d6c77c77e846f3aa04004754c8b4e0652223a701c81bd2e3ba9b15b131129121499777ba68fc38fec17da3a41d7ffcde712e95c6994c1f79919e074d266f88267e23b80cf28bbab56b3b7884851ef7b7aaaba91437b847b4927755dff125406fbf358863bc9874f3008569839e9ca3e98a687c2ee52d911b8cd64056243efc1810179128c61f3a9c12d28d2c99bc1e0a5e696bd883f2343e4dd486674141594327f02c60387e2c15a953b0210942627d0d99fd06fab1eb379cd47d7734f1757b718cb3a98830c5010bb981a4ba1e123f33df7831a56888d1ea428b786dbb649489f3a3d4d38810cd5c44d8a3132ad06dcbd61240d5d8dc4bd0171c65d48830584e186704efcd25a17fcd2780080e90b0aa87bcc52158c418628083875882c3dd778354d6fbb75beaf5bce0154a5355c8d358c9401c18df81ec30c5fbb67e763c5ff222a8194d67a45ee79bea3eb9627a60ab1c42cab2401b8a151a3704e54ad1c8a0b2c3e68235a4e66113131e8b8250c798a69f83fd113c201833e6aaed1b37fc716b52a94de8446c775fa5f03c70bab405792c7924a41dec2de4517b836364b8ce863ec7624e929a84160edd8b815d34bf4a99ed7f041e2f5eef4aef180a4635175f26ed5ba9c6015114515d81a968a407070b216d22cfa97a8d8f7909f53268181322e41f9df03062e69a65cd07d8ee59f09c5df0f79b80412b4947893943c3c6119308f3209a5b476511eb6428f271c3c6053790295d66e4120c47e7f6f1e5181f4b4f4f48c2f92f015bf65239b8b2d0283be45d4a4266b2c69da4ea367d78f3d34675ba3887efa48514d31d5fe68104b5ff94626c24acb5a7ce3563f032e8e3bab2522c0a7f6155b8f36cbd368020129e3733abe9683c997271da196b86bf530d9a27015f858f3a7759263c8d0fdb860dc806ddb9ede89174a33a29bfbf6d3cad73f56a9ad91cc7e1d32437da4d73f09b75675dba9a29750928326f583049e95febfa518e2c8183b72954b1adcc2222b22bbdf504e2f5996de550cc81d5d03a6dd764d823ce374f893e3c82c92d391bf2ffdc82b72748c177e436678b272efad98be5d052cc173079fd2b696838371963aa30d2c0e23f2488ef9a9db4b4479ec883ea6cf28cec5e225d7eb69b7008566a0203ba943f86b04076a96bf830cee9c69759259a6e80f7a9271026a838c1e63c55e31050ec45eb2dc57243569175424da976c6b7ed013d462961b804d700f6cbb4bd39a7fab7672b29ef1c9f03feb9a64681db1762f1ca1ed51eb9594beaf9eeb57dec372093acdb28921cbd82df9de36df262bc8eccb40083b9b8d2195245d92da4aa4e6ff47d0e4947aec4c5f00cfb78ceb69af6984a4ebafbe843901583f69913a2a1c1fe33024044e88711b4dc4f8cf9a38b712ac3c9d399429fe75b150a45817b6ead6d2a0c212d496532e37e0dad40124c0251fecff9377c0d80028d66ca12262ae3489c45c087651ffccb14023781d2ff0a5109d62c53a29ac930b39bc2c0a47c3578b77636f213ce363363d086d7a73cc4891cb1b86716286256be11de5096517e329425d481045d3f885b9ca78671f29efcf4400fed8b7bed454e3faad85a88729f4e374e363cb2a5b99c9909dec026a08f434868395a439ff26c69a09b0722256479535abdea53060ddc4593da1ee4cc40a13b44627a64094e865bc64e6fd6d0e49c1641052c078f290e52db1092e3ec7325aa2b4a50de635cb91468e509ab348081c28dd4a8987d8a182d7833eb886cf6c34348d87f6ec8228d1587081f8d0296a1399ed7a2f80498e64b73032ee46c9a9da214e2891ce8d223fd32567e454950011318c4308d820885d8a376fb93035beec60fa16315cf3cb882871c9b8e32e3967352d89f210ee4b5d358ad94514296185bfab26a36308b2ddc60570f70fba9a4742a099f0a8f743a613a5771479b553312187df3bb88f73533e2110449ef0459a9f57e1f6a0bb4976b046d95895d1d66007b899df73b833da5c7b5d095daf61590ade234a6d5e6e5f5d3a9d83ca419bed35d151cac33ab62f8a343e0a7672d08e1b0aa8313e01d5304abfb7538ffa4dcd272cb240e8940520721d1fe71844930e2cfb124d014a13dd88cae874270a6d461db525356c75e1d30e971d9a36e9ca78ed6729b0f6e42e7803baf0cd2a2c62275fcf27d4c81393cad07042d1356ecd8c43515a38b5aecc1ee062412c7de56f056cba7189bac31a79e0f0e0d0df8354313c175bbbbb52f1a6b15fb48c295593043b6345a68a66f808137e8455b388f7a0d426b8e13ee8bcc69c2d9d22ed872d7a1ee84ba4bb8b2718dcbc145799010e67ff2410a35de3091102a65e827a11b0b1b75c3bee187c4e3a1395d810e4e4df588fdc94941a25866e635b33c6eb66fa5610261043bc1afcb8f3d91e40c1f1c29cf211c66a5426f7d34c9dbeed38f0f8ab92724b22cfc58648478626e4e41caa196722cde035eae84bee3f92c6ce57d6a9781a2b9caa523d9bb62a0f456959af408c3bfe8829de0bc4f2bc1168c59e409d382b797481d8f1a1d3c9edd765decd0f08300bfc9f73002f11678fd8b6d503aec82f29a340ccf304622af335e86299d68711a597241023a18c404cc29c4a2e243a1162df725c47b199f92f5d641a2136fd9f71a9a83f42cc0c21f082d8eb5c28bf00d8e45516103b3d0f96faf3fde0083114bd24fb63eec18458845835aa8243e70d71f8398458fd3c5da4168d7ae41ead93ffc7a156f6d69bcb1cd6af2511260186d11f2262d25aebf5107d3036d0a478de5bace62e287b213efd8641010d152bb127e5d61cc56c2c6f955f1b78c895b592738c85d6bc4d2738be608f962aef05f258a55ce1cf2ad5e0cbe0e1b69c0f28c6382b0f5e0af080064cba51c8307496bfd21338dad7e94a5449027a2e3fed23486aa31d65ec141638d7f246abdb47355554f291a8a216613280cd6ec3d7bc39c7eadfe35a9e6ff29745f87a2c9a9b2dc217b28d6e5d2819686274663594a8e59b8041a72048a76a8ab1bdeeefb9d8fd4feadb8df166d92d09f7664ec3fde697b8c52d81d495b90e2b7c236c9e2d4875a1a1e27cbfdb4d26bc0010864cb28512a108f679f60ad40c1078831bbb53e643f9a423a801f42dad16fbcdc2c2109401d64747cf090b2099b79e10230d028240217a18007fb9c0282881dff583987d65939cad29ddd2ebbe30edb3f2ebe772f21c7a3c06aba0edb3b9c3764c362af00732fee76c6999415dac23e0b3b80247b5909a8da6600fa5d7cbfad5f689c7c0406ce42b647fc7af78b3c6ede0138c12e85570508645e33785f84b353ba6687a8c82de02c7a5a07377c6f6891bca45a079e898566342b2b6c0d5070ae5540103ae9d9982fa1a55839a8c3295be283bb29caddeb8a25aba4002ecde37b383e934537d1244c2d644fd8d650e6d4b9147ec5acaa08f27a4af961b5ef9fe36e3793249a959f39ee8ce6a3e6bbda0785fa5817bd4643b0af55a68721b9de2a39c66f877cf5864939c067bd8a7774e13bcc2893368367d07a3604f7bbd04c5ba4762e590ccc6bde0347b5b41ef9c18a23ae6e74c0486bb27bee013524c0dd4e6b144dd72110ac0a1771b934bcb0f69d1f7ae906071cc84f2f4424d82cc6fa123f7a1d3650c709154461e0ccf04a5198162114ecf14714d8a26ce35a0c40569c88aae1054e20cb8d47fd13698f504429aa0cb8ac6142eb6daac36b2387bbc9892d045338820a20632a4951abc7cf0c6ada32a6507051514b83924fb9638bba9dcdace9b37245b35f87ae34beaa10578f4a86c52e71bc47e179e8b7880342327d0b987a687678cfae5ec532a0dc90b2ed103b4103f25a9dcf03c12f7f46d282ee7cc41fdbcd117d043e38e99a1a39a4fa4202cf9885d10aa15703b4421f344b0193b15b4dc8b800151a94518c922860531a484b6fe6ced81c610996a05c3e1fecddc72e4f7345e1642d542f0037245915e22c1124bd450f7645758d0f5740edd4697360400b8f99adcaa01e50b170783804451e9dae0de28a2fd1b2b6aa89e71c38f12bdcf809b9f391616e6c154de021cbe0d0168d0bfb41ff787363c6a855faf5a01e719053c70f4f20f9f7582974a0159e9593d596ed4f6e0d5a577e58ec5c5c4040baad451d095495059083932c2004cb9de8f8e5a4017a337f2b6d8955af902160061d1add4fb705f18541dc1a43551526909d351b0f546fd4c6f54e3341594bf2a80d2086b3005edf154f8da827af1a8c2ba3dcc3a50d307f5c404f0f58723c3373abdb15cde12fb32b7a5447f7b231b3ef69819a71f704dde24052111a75eda564b7cf886a9a9faa47f209b401fdfcfb16475dd2e215d0f9b1bd586be8744122335745cb11f2503663378fa3575010ae41f75fc63783c63d92cccf5a7fe1a2424aa4497a0c3ecee041e94d4d96bc4be23e1f3e63a5e078c38386a896e769306d9be1f424343f1bb5b9bb3fdb9fc96cc493fc1e6194926057db469a4a04c024c6ac59774cf7aab119898835a91514f7c56f812b1e175694ec7d1487c89a119a57717ab594271010a3357f32d50c7a73fe35959b179e6e3a55fbb7fff14b0124623afa5468e43f9daba375ed1f3465d74c6cff4ce733ab12fa8f554195c9ee7cff05998b5db7c8b9b9e1bb93649da539e80fa56edbab5476c03e7b974f8d6d4e408a4ed3b12c9189f6c1402d88269971e07b0879fe3ae2fd07c4ef263892b839a22b0e65401829d68d571299c79a52d4b24050ca37eb4510796a267c3e723d17294063a7f0dfad2305bc7b21776ac95c6a7a8510a5d5fe88784ff85049960a35e7e03eb0556153d80a0674c90c8e2434f34096d895ac4e989c27d00133a6c718b3605f6567ca3c13bf6c3214a558906c56736b051c0b2a5747c06d9b59ee425c7a8d685a7127099a1c541cbae083ba7bc611cd3642e19d56057c84215bd39fec726a92889436d858bbd60b6f7f8cd8c4dfc6e7ec0d1e463ba830786e2f29b85a12e5bb6236fa5790c1bc8764c6d0bdc14c42a8650570dea31762965bcc3f7a3a0be6d9b4f1208f62d5fceb9075262df211b59822bfb9e45adc4c381f4eb00ab6bed2bcba3eebd236369adef79ab3a2b3e697f6adcec6ad0ceef8ea6b7f2ac14fc7c9a809e2804a183c9cb24a098e1ed28a355bb7737bd9cf759e60fbe73ea2c5e74e9c35e5367d1c7d475d54519690c6859992cc5e01dc3b6e65e3023b1bd4a3aa4980afda9ad455d1f89a8d3d58527a8f15c2566372277e5e88073549d3a39f2cd98230c45d827463fd6ec6b7de66df63a49779967d0298b880935914868b25f1ff611dab8964076929aed3a700c24015c018ba2dc5deafd6eba2ede5c6fd4f061aa5f267dd30422b0dfdc3a267f0f2290bf4204311d2b13b324fd51e65a9da7a3b0093302d991132a52ce902a5fa33fdd1940cc4dabc93340ac67a079cf400d9f81377d06cebb539dcc0fe2517369d4aa0539e74cd38bb70e36cccc345178290cb0b09682296142891bbbb059c3b496cb575e88212d0d9a125092538e8039259181ac4add2bdef749beb625ddf3095a80c4826e141d2452ded4dc339afe50aebd018dde51660e24b7524da346abc3b5cb0e43f9359b9e5da54f647af58296cfb49cc8d75371a17da10a332da000911a99d3a2109911b904b6c3a5bd38719655a3c1c75f6a0468381657f415aac0ff974ea534f50aa9dbec34c1166a29be74aaece8844ac9bbcdf44a0a295481528b9a8914a2b360ad57191fddf45aad85ab1b7365876050c58e1f44d3118a18bb2daca74711b640f1a4a053360a7b16aa4e6f30121f8fc2983e35492e49c78e0b228cc4e206318c39ce7014c3b32d4bd7f4febfc8aed209551939f2862282144252dd68fff7048e2a763ca17e4819ec2e69998a5e6de87971cbec3208d4b1049e2c84270d5110785526e9b01ee6971e96e4a6660a2dd5e4ca00dfd68cdbc75ed0cbe4992f54e1e043489557bf79d9e7c9421386e1aa394b408fa20b60bc8951c35e0df7e25900a10043ad11d21a21bb114208d95bee1d6c0db30cdd0cd7992e30ded998615c97ffd389eb19ca85ba286e6f0708f2705d9ef481d7344dd334da5d151d6657f2c15215fd8a3187c3d974c2793ec1d97cc2599e5070061af93cf016a9d1054d9b1af7a85f190b3cb7bd6eddf4fdbf456a9c7bc53c1ee0b9ff28db83d2cefa2deade0c1e48b2b8a32cc711a946fdda3aa18ec92236ea57253295501a133e20148347d5bb708f7873dd85bb3a24e62e67d374b2d1e1038fbadbb66ddb369f2801a108db0f7ef7a3c3e074d26136a3f836d06e3feadb6c3a1841b013caa89bbd83dcb52ea8c36a64eb5187ddf38f0e83ff2b68bba12e08e95ea0c3a81ef0a822350eda4ea86d6ad4b05d50bf9e75426d137f67d3123ef0a0e63d6b284df3344fd334efa8570f75d4b1a33ebf422a42835aed6f7387ba6693005def413de2e8f1a0721022187c9d93fbf47838d0e6c8048377d9ec321224490e1f4c60f015c020f8e4ca510bdcbdceeeb6bbcbc625288931d061f0d3e301ef8f0e6f2e1b31cbc6d7ecb3a97e3a699b1acf3e9bc08b72dd0cfe3f14d7b03ea488ae9b9dc02e10044197fda1f83a5d4f29d6febbaeb2bf678128065fc30ad578c53c1e17c57346ed35ec11a00c54598a29f57678f789518ad478f434548deb023eee4c271d935dbb75010fded954c5c77abdd5a843a17ad42fd633f0ac67140a3ceab97a4980ef41dd759d66d92ea843140b859a4aa8a984ba99f5bfb26c3dbaad462e5b895423a37efdd92b917eb99ebd1eb15c77b96e37d461f6a6a07ecd2c77d5a8b2628c2b963dfa5c58ff1eb10bebea68cc7aca238e2f3e9b54cf3c8ae4b33409940e3fe7508cc9ee3aeb11ec6c13e9b08fda48ec30b434aaca9b210326c5d436dd346384da66eef0dc42863415d2897c922514256d339be6d1945ac825f20aa944562191646924e55952218748214e703e5ee5632811689baa94a36daa114cdb74413326bbf72c6a11975c81a346e605e74ee9e41abee3ac77b8791bf235152d3c87a68d6c22e563c0b8b9957d36c91b716952d284334a8433f9d6cdb408afdc7924af72f422e5e616569a3611885569dae4c82438bf9b37d5cd9f7caa2ae1ec9e8d46d306a6bba06943a50c964755239cbdb46617d42575109809859212dd1d364d94412f91653771091f4a441f4a2ca1d3612bd1fdd1264ca339447e227933f8e4e7cd5b37940e8bb049f454348b2651379d33a8c39e44b87bf624ca930adc9f53680a4da313d489ca6aa67131c618354a1bc3a2edd850e4b93994114d2ab0fc368da41793f0f5b9672e28e3869cb4d602cb634bdaa683b4186a42e4a4e80906e54808cbcb0e91644bb8e5a7bcdd4f48f8e2731fe18bcf1b6645ed4798fcf1f8c81e9fef186be09f7989bb0786e7a3943e9077ce9629d286fc36bfce6e17b16bdadd6ea41fee0fcfd8d2823339c150c5a0cdd510b00b2118c1133468410b30d86928b8e9e00321732812022ba4c10b465f10c24ecf01371d500045087885a3121423a2cc0678aa4a70e449159d7550f7f58474110730649d1165599605792cc801174c28aa820fb4c0620b7260811214a34ec99329f0e4704c6a4203ee8a2982c44005590802113a34210217e220793085dd81a6ada86002a51608e106444881169e62f00322ad881560d8811674c06206285843c3810e5328e982044d255134032b890c71c0f332fd52c131a9890a524a3a1f8e5188021166c131890c55c0dad0759d342289747214a1d3f444057e08a9d1c931b5bee9771eea3fec0d4d153e89b71d355ba38e793c3f6c4d05e20c1380480c582c3529add5ac50234c9657bda29e7f30ac3aea7e51f6ab5e9dd9a857ab7a8cabd91e4fea113fd3aed5f2a60c8a31f39ee7356d62daa84c6de35a4c525ea8dcec2facea29567596557deb97eaf22a256e49677ad4fbf4be8a49e08d49dff6e8a5ae0e94676b6733c573db5af398d1d75a162ace276394977544c5f9b028b0c74dce4db31167b28a5a23f6bef987d6b61d01dc288aa2dd1ca7d38ddb66193cf187a31780d829227cd8adb2c3ba24e6e78df7eb3072b2a3501aa98ab60d7d14c247ff478a9d4a3a704c70b4b99931f10588378e884c5e29a00c4dbf5c7af4e9e975d1620be67bd9525a577c36dd0e8fdf948839111b91414fadafa1340d1a04254b21bdc3735f2e687bda9e76622cda410a9137b421b931653983ae52ac6beb33c4a6a40d6d4cdb9266022c4fa5eca89166027a0cc326a5b562b67b955d126d48dec09ebe244a389fabc33162cc39e7053adcd83b6e7b9a363e9678a85d694ddff45a3a6ef5c942a3c743e73326a9f6ba9b9ee595b2509af23a6ed5e461c7f9bc7e7ba9631ef621efbea68aa01e3bc6eb5af53a5d04b5e2baa6a626da319d3b899bb67a174b75b1481cc3fe3841e39ab783c669c8b030342e5f69d89c634ee3e18ca76eb6387597cd1d76b94edb0675d7ebb435fe04cb6379b9238fa68d5007191101964850485248bf62920f9c74270505050dd9c1f9e6877978fef0e73b8f074f1b28158ff5adacbc6869b9be1d7aa8b19ae968389b98e33304064ac98939407c5418480500310788cfc440adb6f13ec566ded7620ed06a8b3940282ee600d59803d47531078862d6fb29d5cafbe04af57eca0b9517efb7585aefbb7cefbf7c405f8c9803b4d9dbc3fb30325adea71173805661cc0142c5c49c3e0f32ddfb3dd8f0c103da6a620ed02a889803847ac51ca0c6f5fd9b9803d4e1c41ca01b3107288523e6006598027d43c41ca00dcf7e167366de67c51cd5bbe57d20628ef7be4ecc99ef7bf3c526601b969bb15c11c7b21c1127841b7a6139212ec86e507ab0dc159c12d7592e89ab824b6239241c12674416f95242f862132cf396fbaceed3d5fb60f7e9fb4cdac2b2eadeb30db574dc7b36a115d7b305755e7d8f0685ab3dda9387f57bb427f5403a0a14dca3396107d21908500b6efd27c3df7768405bc27d5b377f174805b3dcdcb309f1912d371741ad6ede90743717c939508b11efe6222f076ac1f5e60da80563371771a1cf3f199eefd17c62dcace179815470dfadc88d1bf7c54aebf2e8db9e240fbe18cf5a53cc912dab8ee398e28c7ce58efad5c322862a8c18a103121212244992545145529212254afdeae194a25cd1af1eee8a2851a060796ea95f8da38e8959f79198e5724745be1833068e10bf19e2363a7f3db64d10af2a56870660040505e19dfbb0dca7e63e40dce787fbf8701f9afbd8b88f06b4253c730dc424dcc3a3c70364e7661f09d48259ee0384a5e679167135403ccf219b10103f3c4fa2ee071f9ea710283ed03ccfa1158d8de729f4a443799603b1d1c3f30c62b93f860032f31e6e066ac13337ffd0b0c033cffdd4e40406ccf2fc93e1990ba482776eeed984cc2851ea80593ea9e89e1f4344a9431d30cbd5e979846f0e756efe1037b784b8f903c0dd8a8a9414ada85eb4bea6a6a6a6a6a6a6a6a626ad494ba22549a225d1926849b4242c2dab8ec3b42189b5216d481bd286b4216d88293b6262628a4c3863626262623a626959751c961d65472c2dab8ecb8e647076c4921db56447abeca8cb8eb8ece8e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94949494949494949494949092bc28ab022ac082bc28a9a9a9a9a9a9a9a9a9a9a9a9a9a9a92d02434c9b4c1f11b6fb979cbf9eae62f89cb9324c17137a51b37e7dec9448790d0213a4487e8101da2432dab8ef32e8f9ec41ca5fa48e7478526d3649a4c9349c3add4a1b4e92b84a44d6bd13143daa6dbc9a7119198c3248f8a949e282929292975bd7f6f4a452b57d5ba453cf8b26c6a25ab9bbf8ebb975b1273e4df342fcecddb6773730bc778dd206e0f8939378738cb26af478c2851a264a0169c352c70b72346942851b00fce7db8fba8dc87be468912a585f4abafcdcd7f32fcba64e99679495bf3a3977545f5d3f805768100f949619a03016aec23a160ec3f19b6f11f15eca3c2b55fde0502e4a7c33f1c0810c53ed209d7ff50ecc37f52b0cf10d8bb7c0bf58bbb407e56388803f941e19a0301cab08f4cc2de7f1a0371d9adba73add2c3cc55309c0b04c8cf87699c491d48b6612ccea4fed3c23e13dfdc19675297b7b132cea4feb21d67520fc26a7126f51abbc599d481b05c9c49ddb3a83893fa0fb6c699d47db05d9c49bd5a2fcea44e63537126751b56156752a9f760c13893fa8c5dc599d4552c2bcea4be6253e24cea2afb22cea4fec2aac499d4a95d8933a9b76c2bcea4fe59963893fab42d71267516eb1267526fb12f7126f5b6ae3893facac28833a97736469c499db38f33a93a60d68d712625e33236378e61337784e579b0b9abe1a271273a948fb13fa6d3124820063ce3a1fd01850a9af064032ce333aed395867d0229899fce8927fa15b1ac97715de631ad08ea9a1745b77384de0b585cef0f0b735da606842f6f45455b844000a8efe0636e5b9c3e9898340d20eebcecb0e3529fa070414f411a5190907cda913b33882fee480c78105f1e0ee42bc511cd000892043194299902e9022cbfed40b2400652de90421ff2a1a0459e00cbb7f090031e62d4c0410d18313788718546e10b0d1bd070995183192d3268208305860a98d60e33d861e5cae0aad818d8172f7a4a0c18c460c178018c95cb052ef065c8cbe7d20217550b0b5a522c2b60f15a44ad6e45052b5525052aa8172878c1a50849d9582760692b13ac322c6509b0ac189672e82341cc5151d514312735532388395e6389eba550cce9e2ccec98b9614cbeccab35b9d0167cc74d55f4eb4c5a93cc1b132cf3f694c51c70d668176a684352166fb891c79ea40df92a2a3458457b9e4c26930dc6f7b5fe30bc9986890cf04e2633835fc13caf56abaf6056371fc37c75573067bdc2d8d9d4930913d6616cc419c761dc449af3e8cb96647cc3c257a1acd0e09595e395d6ca8a0c3ac23a13c6cd1f4cad67dd1cd6af6ea6c171d34738838009044b70cd6c7d9d1e57e58c20589ab99154ec6462339da7c12d852e9b514578fec56654123ccf62338a29a39e724d922b531fad68427852b172956a537f6161b89bba35fdc2000ccd0d47b194303bf42a160313d7af582726aef747e216cbcb0b08821c68b757f0d582733671335b513957ebe5982eb7643a11f22d71b308ee197795e72c7b4fa652844a96654c66113a393a9c1ca6354711b372570e714b2f97cff8bc8eea3097d1b3c96c9a4eaccaab4deac2098e5ac031a98b2138a90b21bcfaca6b6339407e7c34ac728bb41e3d01c4a4a01995b7acd011959b53aef229fe6d20c5a6ac8f868b50fd2b22e2effa68f8dbc16c4c0a8a5e0fd54582b91d12470f8995ecb3d925f5a9589794caf74f25ca0b6c65a708778ef8480ca4f21a71975917eeead0b0ca55deb1ea75c954b6ebb09e655db27337ab5c1f0dd74b8fa7bba08b9d312dcb379b7fb01c4686c762b3a44c49a6a492ad5c6772df84e16e0681907e525bc9ca55be4ed2483ffa49d8e1fc8d922c7bad2a2bdf33fb232e657109bb6e8e4b5964c2d9cdf5db8fb884b90bc4255c6f8fca5f5ebda64ad464146464845f7054a28113ae54c3e2a3985351f96655ce59199952bf606e9618e6b35e98b7bcc2d84ca9c3f9169b251df9609eb3a44cc9759a498ce7c984295bf2e51f4ce80857ff7fd92b67b3a59e7ad4d3481b3e9bdd89747434ebe7ca733d77b3a50e2753f67a201fada7de8c694987f3cbd95db1dc92a5d9e2e1e87d67a5cead1c68e2954717a089b317aa83e79eb2dad207e4c553af4f51a99eb272339872d5ca8f572ed0c4295f59203e4fe09e1777751fedae5c171ec7d98f572997ff38ebbddad640ca5711b366acd8ef9c4dbd66aa4cf51867b2e66ce32a7d2406f2d1665cb4034d9cba75d12e0f0d7ff7d170eaa9eb23a3e0ee3e320a5e79cab2fed9eedc7d54f74762171e1bae3de3d5fa6878f5171668e2d55936bb7007c233de5917eef2d86e5eb9777567131a33ec15b42b4c1c3d1e3b5c4663203db8cbb89993aa431e68e2949b35a1783b8c6753c5e6b8845d5eadc43036e21decb59f05426f63d8dc61181608c53c1eee2ad6e52e4b3bff7861e05952bf5a3e9f29b550ac558dbb3a3547db7058c498792e5c2186251c1af0ccd13671e78aa538338f696a6e58eca63a77abcd1bae2a5f79555951a9d27bf123f18acd2e3c62525e79c62d7d3b3e6e49bfbe7eaddce07aa00cd76707b2f29f897956ae8f86555e7057b140537567933b9974387f265e797b3c567e7bc49d2f2ad9a0086719c4a45f3963829b44a51a44251b0cf5cee49ae08973e604cf261039c22baf59e295c798034485ab2a8f71867b955ee55480f844efb60876cefef868f812476f07ed90e3b468955b6428dcc1ae66858fd3a25f7932e1b288421cc92e2a079a987bc44d9363326de28e1047b2cf734b228e88e3888bcae5b161eefac828f59fe596a87039af9c7bc6f1e8956777c5724c1dce9527c1dd9e9573ef5939b7a4c3c92d49afc7cae598827cdc2377f38e887d345c0f34715de296b44ddcf9fcd14fe627937aef555219fc9de3ce39e1cc2d714b5a15be95778f9eca753a932fb25ba4f59c7a765db2ab9258b92ee0cab39bbfbf5049825bd231f355e217d625bbead9e59632264b98b5bad9a55895b21173dcab672396a17d87930a5f84e92738fbfcfbc57d3e9c289b33a72c7b97d17b44d68149e6346de651cc984c9b6c29c6cc674cf09cf3da14befce14e15850cb21280d12764848333d0904316475664c104da25a94a8c5c219ea1074e54d8a00d5d8c20ca0e1db08e12d9afd9445a12358a1198adcbbb699ff7a7c396c7ee4f87db8ce9f827fa2501f0445fe2b8a9a179c209f99f0e5ba6c3fe13d87da2c3fece900af40b7b670cc3b0db5b7422523a279db31fbf61bd4da1a6f5f2564ba6f5b2851c318b1f53b86295a313b080c210380a9171dc60cf36383e88993d460ef52245a553b15f8ce9fec2c618d3fd90376a64cdeaced78bdddcd3c789fa1a7923c78dbcf10387bc11eacccfd71c440f8c819fca46197a4dc296565883010104c67ef801633ef880311a1a8cd9b081b11e7ac0d8cc0cc6646430c6030f187b1172d69872c64c39c34923cec84963ca3963ca883372ca9872c24c39779872de29a79d8f33727ec69830a66bbe4c97d932e56469cdd6ca4422e6a8c419f9398f984f7981730fc6621843acbbaf0f14d8d7d5c49cde28d82aa6204fa335f85a6e44a7c340e1c44fbf9ae85704b228a59432cbe63d0bd331fd3a6d2871d8838f3e1fc32c91f5125996a12e1371892598e853792a29965d2626135937e77522d0cab2263aec67cf9e3d6bd92fa5c3febe9496a49206f76b6f4e4c6e70e8dc28a1c9f1d56838a49c386e5e5287a3f2d9cde4ec111db3dd10cf18763fec1bca74dfe0d069b9f595e9b650e62fad0ee7bf140c8bd3f8a23388ac081f12fa517cb32736e7bc5b9c99cd189d72a0d89cb3024a72672a71c49c9b135fdb1f8a7ba31913cd93cd37d104d74466976042be7ebe461ef5f9ced64b23e72679c8db75388fba35539e46de0905de3eb72fc1441319d528de6e4d4af67538696a4298be7ceba55f3013d599149548bf220641503b08dee5ca51600d05a2ba249c75f7e7d6e1e4c107ceb80c986707352c332438cbaac892709629c1f94e29217c309f7110bc371f4c4c78d46b4cc594e7a55c957a73b1e2a96c3701a1d8757f68bf52542bcf2a5537a956542b2a956ae529af2bb6536c37b59394bb5c2ed71ceaa6997d3ee957cbb3b7ea316c87a44bd22ff06ed8f3bc241d5287e47a4671955de79d76e87af56c377dde33c52eef761dba76d4c70e73ea1dd2133ed5ad4f3a0433efe067d3dc1ec507c459accf942d52e359ca732ae53df59e542a7553a99b53ae7a4db193680e09e930535df3785473680a9944d453612971ba51a1481bd93f1ffe038d0d897b98b9ccb6c34cf9cab32d7c5da6858f65339a3b6cd80cc4b5f189346d6a3c9b47d30894efd9cd8dbffb50a1e0ec34960eb161691177730b7333377f9893b91e8d1dae8d01e365250575e9ed40fd07ed7f29157166055a76d76dfe700c0d325502ceeec2328f5a3653212e1bee68c41c45e3312af7ba0ebe0bea57ead9c10c1e359da6d36c9a4e66934ba3d4e381bacb823fe83a8db4e1ba56e5adb3d35cae5722463acc3e6d8e8c64a827f5ebae6346ac7097fd41d005dee58a1e08dee50251d7e99a0e5d0775a68f86c11ce49508eb352912f17107cf72fd4b69a74f23aca9858f75d78f424da527140faf71ee66f0ac0b1efc7679b035963acca6ccbe04dece2bb66cdbb66ddb88b26aed54aacf53a9c7bca2c34c4887f566aa3b973acceedda934a434698f0bbecfb8db039e7bc43b3c3ba522e680ef826e61b8b028b1509f77d0522ae24cf61d2c2dea30fbb5744887d1de1c03778f71738cee2f1feeded2bda534576ede52aebaf9de6dd29cf0b9fe3b8f3a9c48fd72d579542752add54ea479348dcca379949a47d3c844aaac1b842d50a35aa3f7d7ef9ecbbaea5936ff5573819ec7e3f28050fcfb4387faf5ddecfa9fb9ce7afe5dbfeb3d3f389b3afcffdfcc62d96ea80bb2aea3aef278505df64ea81bea5774dde9c402ef1e49a2b25678e0ed012b6859456a9cb3996b27d4cb75d4d56c3b75937627b7f9735d978755b64392c17bb743ea30cbdeede4f1545a41d7abb7c3e5ba5d92267cb93a21e1ecd5e94955d26196290d5e3c9e9614be5c8daa927ee5ae0a9c81605793fae5f2ad91e0eca80da3404dbbb3e97fafe16b2e3e90a5751e0f0b08389d748ceb9f4d77c1e001047b58fef29797b3b44ceed505f5ff28dbf38a42b158df50f5b9f1effa0ff206eada766fddee0f3e7b5763fd2ed0e6ba812854feadc1e0e6f5406117e7edf0aeea4e0382afe95777f02c8f07acb1d60cde4c5d367f38081451b858a7913732083078d6755d67bafecdf6d44781419b2776bd606da791375cdf6ebec1b9f55f9f897b58af2a3fc81bdb9fc1dcb8d6e0b7ee4f6396c495f5fa0c3e838f5e8fdf75b3bcebe0cd3c5c07ef3af8d3c81be07f411b730dce2b4775de8e7af07af5fe206de495fbd378e5b55e6f87eb3d2b2a97eb456cc262b1582cd6751afc05cfb234d28676159bf21716759de9fd206f685e3df824ea5de0fd41de001ffbf5eafa7616ebfe206d8038530c5e97edda51ff41de00af65cf3be8ed60bde7c5ad5f79497498f51fe40d16f81f543c1e54055da0cbe502adcb759d06abec34ed5b8df1baf4f851dff107c1a0cd5462d75136839dcbd6476f0778d65d3608067f1ad7fb83b4a1e9f46655d76c77ced6ee3fc81b117757d988418fa7bb375f0d8e5ed7f2cfb64c27f0359e37fc9ff6abe5bfb309b44e9c3acc9048dd756387600dcbd3726987e0592c4b9906a7429c0ac0730b89e70fa752300000c08701d0c200f886f4a2434647a643c763b7704e4e8e4e6c1d9dcb357c3bbc89af9062fe73696ede3460e3e60fc8cc128cfbf070f3e6448e9bbf0c60e0fe70818bc4cddf8f1b809b5b3d97e5e6e79b43dc16b837a8a70a5c9b9b6f9ca60d056ede708c0b71f336811d09e09f9e8584f308d89b5b10b82ea207dc1a0eb805b8324adc171612c65a3242c60970730b1bf11937b78cb877f327809b376cc451d7c7cd2d2c23895b238f8b694bbe232c76d4e112a8b7bc6cfc3a2d0c5f463dad5c9a5330e6c3a3b7c38763d7695b6fee23ccbd887b54f40b75ca614da4c37bcc8297618150236c86c1b1392a894da49024229bc4d8dc424dd8dc3a36e7d80ca304003647997ab1d9dc420db0b989c0e01c95d0b03936c9524885c766d9c4e6165a85367b4a307d0dcb009be90f36870bb0b926617a266cae4c30bd026cee82303d0e9b3b234c9f009b3b265e10a6cf2c026ca645a09e721359023bc238acebc182dfecdd616bee8ddce951df6e964698cddf9e5f30f6b83db75ed8d2870363d8967fa460efa0109c7aadf59d4d02f57a379b53f076cc668ab188c1476fc31848c1a99b7fe01f291b91e630ac876d223f02a35e27c77195b318caf66cf7478d8eec281ea87bb68f36a3eda8c8d0147367067510f4f5095660616464480976b2ae1fce54e5e9c8f1957336c7bb1e475ca7fba85fdea5d566339a31f4db76f38f14cc1dbc6dd421fdc2c751ee085c8415454d1809a90e452b8a826c7aa70a7943126ec131e90d4438eb7db3e03b9b29ee8e799718bc19e732af9e053700e2580ff40ede1c73ef45441c7324bce3f80cea178ed32e0923ce81d10507ac590f5c8d6fdf678fcbd8ad3b0e0b347d340cde8d488714ac2e6057c3e6ad87773d74ed2161c47f24c6f9f476e0bc6e1a078418d2e7d4c7634088af182b0a4375d85d380ef58482425f8f2a92b6c1c1a40a41a94330ad45983ed2c75c8d60ca591e6b1872d4afdc54607a8a298604d328386355609af48621384b799ee73501ebd8706c9618e715e7c38e3c9e4f083bea20e8a7f80e86d441d0678975b064225e533a257b9ee71d33d221dd703ed0bbf99888dcc2cfdf8e773311c78e88b01812112762dbb979fb30cf5d817fe1f1801852bf304cb14729128ef0022bb077eca85fde5f3230fd0b195887015ee371da1ce0323dfc00d600f6b32d24bc4be3d543a2bb11af5b8763731ebd1d3ad7719db62e20787968183cd0c4e0fdaa87aa38061093a4188249ee719d896323febcc738e382f3888166e782737568d8fbcd36e73a8ec3662d66bb2e55876d2d3ae49e6341ee3836e218eb522f8f0d6ff7d1bc9b65f1ad96305d39b514e079c32d4ab4b410e0791bc0f387f3dcc22e33cf37369e6992780e7d3c5f00cf2dfc923ffc9237fcf2d82f3a9e5b3ccf1fd28ca1362c182f726ef33a8a02f1d835317080348ffd960d9a31f4f6720ddf8edfaf9c74aef302dcbce95c899b3f9d1371738b9e4544041127c0cd1b111fc0cd1f11c7b9b985739c0f817321702e809b5b38f771f3719ec4cd21ce6ddc4c83f3999b6f300b69da48ca9dc59de7e68fbb8e9b5bac251e1da73ce7e1e616cf736efe78fe42c7573abea3e3f83136e69c7e06c59ce61cc7cdad9c8337e7de457a775fefb78bf27a18f1d861006eee26983bcadb61c481268e1d2271733be951e4ebea2b4ef55e7bd888b3f7232c50e35adfbdc7eb0b8fa7470f4b71775635e22c6f871146dccd7381d231f4d565fb0edf2eeac90b1f1b5cc0e366287011af9dd7bde27cd8151dd2254c498734a9438a2571e2abf68756d121c59074488dfce0da75aff64787370c093beac2073e6347298fa706adb067a4438aa4437aefc833aa828e7fdd6bd0185f389eebbb6ba7100c9d760e0975f8ed33680ef5cb48634718122c49bf705c171d8dbbd7474c6160600ef39a0ab253a863e8351e7c3508f5d4217d9e3bf8c077b613429fc2fa0acb792e002e42095c84b7c33bd8e51abcbd62de8e0dd7ab61f1793dea31bb7d3b8e578be1b03f6a70f61d363711cc5d87cd3c36c726987b98c36349b5541de6f5983368da34d2d6488dc485af9320311921b2a4abc0dc732361faf65244f888b85936c11ccba9872b836f8d4b367cbd84b9b75287dca5cecd2d84b9af90620e003ec49521c49521e3915e463d8eb8317dd24b22f51b1505629efad36a01605171389a2b2b47d8d1466f5031af47ea375e55bc1ea96f388026deb6a9d3386cb5376c1daa411d42e968dba09e660c7dac4198bec319f5b465e109673b1aabdc2ad421bdb6856f0e695af8c0e71984e9b52c3ef0f4f3cbb9ade3dc2c89608e3b8c73bf81c1dd0606f7d7cd2d0ce3b5a85f4fd3e68b408ce1ce3d889bb79a9b3fee40dcc871f7e1e68fe6e68831dc1f1313136362cc6ba09e9ae088f3b798bbe4a3f1bc3515fd0a4faf333b1b716823b6ef907e8605d2322c1089f30a09d3c3d89c82337684e977b8363791db0c13c3e6a80486cdd145ff62b324d2a4c5e6166a59a12f29a39e7e7037aa3ada1baa8bd8c3f0f62285b542d236e18ca1df3aba218557604aa45f184869faea81ff5ebf1b45cace112c75fa1ed22fd56947349918191d1d212125492293b013f4f20a7ab9a49b4827f4f2090da245d04e4887f4ba788fb8bb1a8efae6d9cfa6d4e1a26e8cda76c369838a438ca10fc15682afae60dac49deda37f8a33f4a338f89e514f983e2568dab096584ed386851463e8975a2c274c290b09d316a6580a8c283a080064904e8ba20735f72d30b32c6b97925a3b3b5b405e6762b6476a8f769316f0897106b3347a3c3a8dcd2016a0f45977768bd7b2cc9e238e387a98052265b62362a0194493134aeded52e0d6152b5aa8a8c10d2fb8184ae1c208b77d812bd651cbe282085947ed8a8b2cb48e5a908b31e0b62db86e1db51f1750b88e5a150a70db144ecda04edbd4764cc06d5770f53a6aab16705b178c42c26d55b8aa3a6a3925303061c3b3ed872bd851abad810db82d0bd755476d2684db7a185b016e7b5c53a66d9b82eb8b8edaf904958edac6d3b665c175a5a36d415c632bb2a4729024a72f04999232a1c6242040d97d629c99ffc930cc47c318e6c2e33f19f64d46c19156793314585e6702897146de1c044b9f89b320397b7cee722843f3a57c35e1b411087bfcc124eda8f58971865e6a35dacce628f0697c36b31b25104d939f11c79bb10ec2f9092c81e610a66ed8ee663b1feea8eba263a3727adf6ecc89dc7303b5b62434148a0b62bb6f40dbccf55b1374e054811cafc0fd1c9bb0920a967013883ce1be126d4377ba0e393679ef2c6d8fc7f1767d64148cfa4f3d771f0d04c1a8a3ec4f0d8265145cad8f56a78d384827ed76cefaa0b8ff4cee679e7bf76981ccfb441184e5535eae3707c1d5d3b1751675cf76c73908ae3fa25ff5ba6c8fd8bb7d1d21b8719feb3eef1da65fddfd99b83b376f775d7ad477ef6ebd321d5a182f9c289bd2e1e7f4e5d64bfb717dbfe63b590603f1d9ce5d5e1f0d04c1db75d1b1e1d4351004ff04c141549bcd324bcc71366ff7e69cdd5962eee6edf5dda7f58102733e13732e3db6cde6fa0a0485ba3e1acef374dbaeda0e34f17673e66e0e82538fda0ebe6845d113ceadb602064cb0dce930cb60ce462c3d2e0564dbeef47c343cb7d3ed024dacf93c81e766b38b77a089519c75f12e0f0d75d4e5401438c699eddb6b7b3a3aee357b677d6414ecb2f576e7443d67eedb76316ae39edde69e5bdbede1bebd87fb4b87ddeab00777ff20dff6380f94e156bfb25b4c2dd0c4f3a6a44a0d55688a70a72f9401895efc911d11c7eb33e7e5332b34b4c38e14d1a9afd014df69218e6417ec4013d3472c6f91ec62d747c3f4f416e91ba30ff2f2aa84629cc13186f1318a0e32a934037d9254e01c3e0145a6d964686a646a60ea6723ceb0ceecf71b896f5460b0cca18eb42163ac3cb360b9c2b2e65091aa0ce223b600c4991f3295db3c177c12734a481b45c81b4b30118098c38038d36725b5aaab0f79a3096943de8880b4216ffc9036301067fa4c969654d046cc926520fcfdf2e637216f38216d4440d6081b77377d1ec0dfed914ea05636889c4286fd152b51f0c2fef42515dddde06dacebd5dfafeff69f9057c966a5b06cf640077076cde341f1f7bac9d829196754390a89affa629c511dbceafea9e21c9ff20ae7f89459708e4f3234379c94524606673208363ba57e325de81199831a61b0237cc426f927a49445c823b05b012fc048da130635c2e42e4e9a19331f2fd04fb2ae370ae970be0b026f17549f584db226dc3326aca2211d4eee76445d2794822f67509e5a5a5a5a5c9e35819f3737343461988f39cff3b821585eee9af1199fc1cd38d76df872c6246bead7e438da84c3f9b8674de067fe64ac6e069f31010faa606efe64dcbc618e3b68b3a6ce9a644d2078b3a68c656753bfb63bb76ddbb60da3306858712eababa3f1eae033285993215a903634af11f52bce6b54b4cd8c51e6a45f31c90d425620276ffa355f3097c29db64dc6e4dccd34a0bd01c17bb362a2fadc21c6e3762d095f97253d5beabe6749f39189ed883a9c47db8755541e3ba126c3694a6518e2a1fa444b4b946ca1041700610e4954a0022b30d58ed2388dbb32a116aaa00861b0e20b22c8a2083188430a8620835073e247c3510a52b0029e384a410a38c0399444322e58c309b4404115552862c40813059288664de8d06d9a8f253a945d0ab048c308863809d20269670a29421484e7463d157461c593235c1a05a21464d99462ce39e7a419a5946e749a60ce08250e454ace20032d9cc0829d79023cd12084a752129e93ce8d0d5d46916c521409e10d3ec4f0613e982cb1a4c41214c91456a8a6e4c49629c19b4e3079c2e9e7892cd34e402913ce805404362055b1031364410a4f80b251345c61dbb21eb07a892c71a6a52036ade1080ccc90852abc20831224010b18454283b76d9bd9d6a4061db6b465410a4e300a95d0d0856ccba2539665da0d8982ac00075548a10516bc01e9680e49010a4f4d6c010579822f48283621018dc216499a9c209b34a47081a254821abc4009505040826805d00954c8b22c0b4a1575c1054990828b201075a1c8143a70c210382a22165650b1032068810b1414cd1138610e4234e4a0c2d18a2c62f0061d74380316a4b0c151189aa69046821d9ed0c4e8095d2832051dec4c2994a88085acb3b894655916448239ad982998737e53524214ac704217f9b30f41cb29eaca85632b82aaedc60a8c4f9372a2a0873aec67193338e6f460871bf2c8e288f482630a8e1e8e4996b03097e40d9945c442cc915b904c1d4a2658d39b557dcde6d8425f66116f48287288e8a807734885b3249244cfb6a76c8e38d32f583299363c128abc81a30dda29a89b5544c499aec30e107c5bee206c83634c5fe38218d080fb181b300dee7c8375e24c3f7ded490d0b34db0886f4146ac2fd4e0a2318c24d1385172a866118d68d358649d98d4d0cc3300c938d3586cdc61ac3300cc330ac9b69beb1896118866158631886611826b33967b661d89c3f1a9b18866118866118a62d614c5bcae48a0db5e27c315ec6b8d1ae2565771f9b73f6079a6891196811c626d67a0ebefc618a6118f6c69a7037f6b6e2ebd984b13756e42bc2f3e61fb408cfcb0bd022dcb747dead434e074343b00cc2af2dbb95aabc927c726aa21907a4382ca1b4432c2c9a22c0dd4a9283121a9ac56d4af3502adf2ddf30c0f968d7e1b4d15effc59d6fb37167ce396713563084e77f44a01533c71d85ba37f294e31e391c3158cccd94a14c8713bb211cbea6f2d22ebea694d2fe3e21da7dad8b4fce192f5f50519726d248637c6cc9868f7e1ee7c37e0cdb380c85267126620c052d624ce470c47d2147dd47a81106e7a3537bf2e5788c7dbbf1d953e4fbfeebb0d5ea2f76d2f6b39440248efd2ca54ce990e2182f2fb75dde968c29f334e2141cbbf8221623a58db9410ae9272aba205b4a2713472924a18894b23b090e5248820e765c3c97549c2f4a3ae794923ebdfcad9456cacbd7dd9352264a279df374ce4dbefcad9456ca0b9d9432513ae98409c3bffc05a6857573ce39b13c9bf00f7abb944c5e2888a6d391e9f404cf47271f4d73b6a6a6a5ec8df9871684ca5515da916febb063161dc76d98d2739b76e9866518761bbb42bb14a394e6c419795a0407385c81fb9bec26dc30a26b8b2db6d8628b2db6d80285863ac54442e7801ee7c3a26cec1699f3da4fe848df29beb37510f1b2a71c418dc21596305584c1f9641038e26c3f6c351d0fddcc07f3cd4871e5183dd060696530a35a2a2bec5955b119d817c2d069e1bb428a522b3601e71c8c9da9c3e29b02c68e390163c7a6b51143ec99c5b880b1572c60ec282a7000c0d8e90b637f060263c7b063d8310ceb8718ed30f7e50c31c6756b3716c9fa7e9fd091199db420f480a31444c044c3f968866a2ca5636445d9cf6bb5389b3a6deb23c237b3cee3c9e4b76dfee8f09c1fb771475dbe3539ee45fab25d7a6c18e87077e9f422b630ef50dec3e2dbfa55a46f8c4fa769b624541d127716b3974fe808c528ce2e3a249677c31d163a22fb3b248ef7b020535035387cae1d12cb56c57c48314494285176b657ccee88982341c4acc415e7c3280abed616bef8be75c83224e27364e721e488eb22c7a46943339368beb9821a61328684b18d5a4d4bc3d731befaa86d1b49db448ce435323ad270cd6c86b52dbe3c931c75884599433306d3d0f0156926f866921d2ccf2a30760c37bd4bf7c4588cc2138630f65e6a2dda267e21098b51808213c65efa280963415120c296e09ddc1965ea17966530762c874edd06ec314b27180b01ce2fed21d1343518f6237c605f42de904b2426a5984317182b8a64c8b10b18cb5bf77934182bba79e6e69075f3598a30f6d68a646a23b944dee81b441bd8312ecc2c09afc0d8536ebe128c9d7573ababc0581b750ee4128ca54e3d9e1f1d8ff7cc4e9c65a79452dada19be4c9b68664d5474f03651875dd443baa887748869214d5db339d5758fe27611518758137551d8614f590f6b23337cdb358f87d3a243ecf2ed75a79662ad0c5fa6a8366232a2d72c4dcdebade910c3ee0d0dcdb4913b11637d690c698c21d534c90463b2c987ba92c38ef351edf686b9e0dc4618cb9a08465f3ba0508418469c5780f015893ba060831813b10bcec8f0658d61fa588ca1c728cd2d18ec856439a1461a9e6d4e6f47e318672855611e4fd742f8fa55d539f89a0685aa691a9e1ff389a76f8462683e19cd279a281393e23b4f00dc4e9c31f1be78debbbb6577cb6ef9d2305eeb53793c3fb4259e8e6f217cdf47e7f77d5fcba84ae5209aa6659a866974b626354d53496d26a8f21126ffc6b7752f2dfb2309910e63f751877f744de41a09d2b2c9307bce39bbffd3b8ef914ee9ee4ec1f22e52b6919ed48b714e249d0ea494942ef194cc3931ec0b4f52382a7da109866159a6040623253008e1161890b6141c95c0c004eec3add6e8206777df7477776f65e8eedeba46820c60688184eb6326637b3a50374bec09a10e2b85a24339d461a5f790a05706ddbe2785c4991a95989a7e4a2b318ab313d8e341bdb31aae52de223a94583cb249d5571dc5f1ab55eba227a5cc3c1ed557f6c8f63a4f6d4ff7f9dad92c3b9ccf7bedbaaeeb549718edbcabdea96e131dd66b4ff87af3746c579d7a3cb6ab5ea797c4f68e52cc7bc6300cf3300fc330ec52ead1186377736c4a592194577428e93b3b7134bee9c19e3ab5997ee60e77c7bc1eaa4f9d89e54d957af4b4adcbc1d7afd8cdd1a1ececc4b16d56efda59895756e808867d622e9de5f93aacf53d84af32d12f171e189ec7ea5b1cd3173186735873ea67111dfae8eebdbe2525048f7a9eca53799ee751aad23c1e4a63f5bc1e341dd294c7e3881edee7e7ed99f71e71cae331ef5d798507aab2f72a53f7fe31d1617d675d52574763d58d4087f54d60cf2ea16de1f3d161fda769e1ebee88c3d4e1ebeedd7c5c6bcd5da7eaae7a8fea6187f53eea1233a65e757dd8223aac9ff6880e6be7bdbedec7531e8fe7bdbb341dd6cb215f11fdc281eb2b6ff535e3c0d1af7eadaf8f53c909d7c8846b0d71fd7c0d4cbd3d126905073d5bfa59ca9ed8b339e7c4deaf8d6554cbb0eea697a69558a29f9dbc144787f3eadc1b8ce345b14eff200b330eb4eb17ea45d4f8c3f797f6f50b157218e63eb959c41159e64343591f4508291d817abfe6351b6388ba97b267cef96e971ed9fb4db1ae5f4d81d003f91c549e361052d0648b3f7c515003d3d66ff54ed3c8bb23e36910497db4083471bf7e26963ce6fd99d8dbf1453c77442c9f4233b1a81126a710e1ce201032917c18f7cdfee8275d037a3f6a30465f681bfd48c13d7e60ee180a7bc5dee11eced91f29580ac66e4f0ff7e1ee78f478765ca741200463dfb66b61f8360ebb3ddb6b967076d4666b6a7eccf64054b4097548b7a11c01f0f1e8f158ccf2e1979d211e3d9e2150a8631826c375aecb3cc65712cfd8b9d7a7a07ef14041a135e822f11caf02b83d5683fa857ac26c0de26c5087503cac06f5ab433dd520d4d3ad4118bfbcb9f85ece3d8a9d7336a3bef3e8f1ccb84ea3ec8f0ecf7873f1cd78463dd520a4a52549fae5ba19559f310c7b0f768eb5d421e672dd7b7559561216121224d45948fdf290247179484892a02e8b490ec92ca4a0ec08402282a105ce87c4c8bbde918b0a715752155e12242329f08818d998e1c165e6ba9c0797049cf5e49de2c08103070e1c38709cbbd9f33c4f014c7c011cc7711ba0dc1314940e29ebc93b9d91e141060819999bbdb39c3ccb7a62397997b94ec73873736be63c0071f3169ebb67593296f584f5d42fefb29e3a0c29cb09c57262b1905848584cfd1242e654886719199967d6528f8c109685d4a18c103232370b71d7ab1096c5d421bdcbb2962c6b4987d475216cc4946371926325e9b05f94b5a45f354ecfd2a25f0c383d8b68e5b472ead711479d868564a45f2b48d3e64bd22f5515fdf2926cdcdcc2e1cccd5f183e02b13aeac9761276e36135246c00acf6a443fa1c02b09a13ab357548e95fe859e8b1d598e887b0da0e2582082288e0e1e1e109800a122a3c549250e1546c546e54362495949494141a3468d060b971e3c68d96969696d56ab56ac0696ee333e7e1393ec437a4db6c48e736a427b1219dc7cde191d8901e800de9427ce7f8f6aecbfce52c9f71efa877afc7504faf1873344c6d94ae789dde5bd2af204ebf01fbc36d6c4a081ff79bdbbc4e8fc7e6de7c9c8d95f8c66a4e1dd24beda9438a3463e886591f66b196f296e3f9c32f6c9e6f02a7b2a8748b968b833deb14a2190100000800a314003030140e088462a1683452443d6c1f14000e94b85668501b47411243c618430800000000000000000032356900dd9a180130e48d893dd7e72553f3c4627049d60fb8a557d4e4b9fa6a3d1536af1e305629e5c0bfc27ef07ed02218dd1fd1023498fde0861f1c56e51c208d3e5051dffc99eeb7ca021c04a003835f9a06c9cd540297cad6726dbcdd4138e6fbafe7a871240f579f8c2bbc6beabe1106aca1bc2bfb6f2d7d644a76c894585eee87b10ebc3b44688138fe09651d1e3ba0d9c95312b44c0f381b35166bf55fe63dc9d53bbc26ac64e2b75845f48d5ad50885edefe01f1fea25a4b00b64e46a15acce98fe7bdc674381df7010f40fee3d23590d170e0d3c82d38bf247a4cb2547a75eaaa2348eb5f4bfef3a2d767ef960e9623639d1c6cdb8d1b6e246895e56ca13f3a70b7913486c52015c37ba79c0afad12b5f1c66bf86a7d45111c1c666cc16d63066ed586e9063dadfbee82d2c32f2291de8d46dcfc94f286610f1db5afb2da8647e2a497a0e7693447838e73f889f640ca44f9cc9ef0fee24a968f903b1f5f4c99473996bb2117120945b14e3500078245b11da858276d3dbebf1c96fbeb8061f86a89e6043d282ab2c05e356fb8fa1449d795e0ea76126d76fb60c79854067de74ee77cb0468ddfecc0f9023f513c317679831d6a8639836ce2937ba5292ed75a6ceba5fd726e8b8f07aa66a600fe526affb64ef53a0245644e285a21f21aed2e311890a66eac1311f8e19f80710e121bae96da7af5dc6d3857672871dbbfa8f094c7e346afc3a19c2185e9c7f8fde05ce56468648519af72f82730bed78cbaf8d1d873b24048061ac15b9cf59cab5a76fb6ba9140b80f86eafb1484401076fcca6e08c883af1d69c25af9ae70582b87a25144990a5ad25033163025c901478e9f57678512115f0df0be0ba4b74997e3106def5998a80d0710aa83a1796b29b13801f7474e740db5d8a9bb5d6b8de3212cf7b70b0844f09c28178887da773299081b34e74faeef4db69e53001e5763e92c583a3634bfe0545610f75eebad91aa7fb3fd1dbfc495dbd56a00de5cba81fb658b1828dc252900f9840885335a27d4f16bd93f78d47795534ac9d51dbbcd0b038af3a7a2d2261a196daacdba6237c94775be21f4565aaa9af24365085e5b835417c88cfaae6ee6b48837a2db524bcca7daf98edf381d1168c43c9b54dd4ef2950f3449e8fece7d17b69c82e30a0af15560df93f23340b00e603580aa95584af21fb1b2fd19b2ec0edba8b7cd3306accfec0c6236092ce1855bfbaa86e41560ffec5eb6324b479d4d56f46b2ddc22305831efcafe6f5396f2938494658b3380b4a0926461cbf8ff8568039390fcc265862a318bdf7704c0ea4af7bbe5a4824da6013f91064f021cddcef14226fa4e0cf2ccc020a82c90ebfdcb12c38029a5f9a390abf733fa2f1f17b0f46969ef2daacd787dbeaa0ba7241a9831a6828182e2402272ad0d8486c6f96a5f5406095a387647d10d43473dbe3398ef02af574a6ab7e2ff38a05f75e45e9948bb9a26c72c6306ed22a679e21c61cc36b144a9631c8baa14f18098d9737c33598f5d57643cab50f7d7bd9d97fca49cddf3f0954bd9ae3d98ef5e4b7ce4cdee06371b5acba7e62c9dc8d8193b1c723967607c095623e61f97c972923a8e6f99dab197772f6b2cd0e58483321a94b492b756e91bc867671629d10413b0aba244934735fc7c1ea3c27ed6024de4275b3b0efad983873bdd325efc0a2d1551a557830130174ec96fb2eaf335b247ba4f81199a8136a30d9397478f4656af3efede2ffead8078f6f15d188c8108716fe6cde50ebbfc32262c48cdc4db77e7ba1b9fa9d43c279ac72813e4b94c65d7b898fa9a18751bd617e5e6617ced25b64c0d8db343f2fc7b527ed947ec590a18afe89dffdb44b2fa6b96d4d024456021d27b6cfa5e646a579678c1915ebc34cead299859fcdbb50eb376bde507b0927b986c30ff45d4dceda3c3afaad735da3d8755bdf58d8e7074dca1c88dcf9779e1e69a85bb9a2e05c630b4aa7035d6feb5d3494d47a8417ab50156fe1449b7eeb49e3266359c9030fb42439d27ec0f963dbba9e24ad23c961be774327a981c3f6defbc334082989e7fef5a8de9d69d597202cbe641a32fbed62fd720894f0ea79c86679a32d48ea2ba7f528ca00e715481ead1fa6a42bc250d5c5dd7b8d008615ad6da4405d618c51141530721e7e1428da3d0d3de63d231acaa44ceafcef30fb9c146d4a995340e8a5f0e3f8130f63bd6cffd29e0df4ee61529e48f4ebd829a4b871d551a8a2d3581cbea5b5851f535be57e207ad56f003d4ea18010c1a252ddd6122dd851a865b65096285599aa529d5986aea44c964ac76077f986d6e0fc4c9633c6ab2ccff2d5dff66afd34289a5f60098231659b334eb048a0d729122bafbc35542db184832300043e0788f58c4f7f9aa2cbc5ffa93bff5f33731bd32f6acd0207a2a2665a813434e547f67ead3b9d6896f068bc5ec3e222418dda534ecc504ed37457997ef39474511555fc45ec95f38ce51097511db8d62db4e9784aaf9f56886b4dfd1fe2cd5234162b249e670cf8b36af183b076caa06d8fa6dceb219e3f5eb05b1f78da7499cba1cd522e06d5d71a693eb9d4b61a8ccdebbeb66afddce39f0de93402717bbd46efd306902c0a767a44c2460281448723abd3804b229f4c2db50e84564778b270c6e06725e2dd6bb8fe15169f1f165e0395e5b6f408ced5680b9f7cd9dc40cc4692e8daea5b28a590b518bbb64d5e1a6495a4ea1e026bf4f8d3ef57b19d0015861800e411b91c65c21eea647cd26c3dbb349f2d76f1385eeea9e6f2e139b2102e8d3eca113f0e4be163b8be23334e42d9051d7987cf00d6de30a6bad1db62390bb890b828605644962fd0cc5c928d6f6cc480c4d9e028b894fb02de84ae3f54893bef861bf7446bdc187a18e2536455b3e89a20ed6ad581121d624b6ad4c1faab838393d79b50a5d58f61148f99d997a449147a707feaf16958c509bc1c5ceac0505f2d20d5720dd9c2263f5e682d0d1770ea0a3ea16f6851012862e613209667a2cac55490221daf7b15902f917de961f15802e1068fe2f947110ff6e277f28002c0f92de21fa31a6e65475ada76f44d1870ecf95d556677cdba2a4869f445dfe2b01d16a060efd690541f8aa090fb5a23a98ab4f2035980f241408c3823a6beed30e177a094b1335b443b0d4e6b64726a6a42ee6f24cac0f40dbf2add314c3454ba58189b636e1bd49f730c4b3dc2e9233b105928b8741ee3367c62648e17a199bf6e9b11cec7b6cc33640fd1b597caf05366afc4a20c04d95dd2c2005d8837b59c0bd5ad5f2aa32117ae46d27cdfb309abbfc16f60c639e7fe465a6563a50a70a107f569baff3cdbfaa5c874e0d157cc03cd4cacc735765ad27c403575b153d95d3dad0faba3f4a7c58b85ebf39a73dda6d407e24c68b4c24f13ea9f384debdecee9cf9c284ea0523f2932eb0980ac85ddacdcd68069f6c54facfa753c8fe841caf4d90779ba999a55d23be53dc6aadb9965075d4662ac47ba3c7d2b227bb6d4c1d4e6bfc7989f4e761d28a14e59d2b27b333af3bc938ae6343834f0de4900f1f81c54193a2ba4d588ee80e085ba4f7f6e86246ce70bfd46787bb3e65b85d644cd1a80f4e4c67d5aad46ec3b5574be401d3303eec9ad9dea56152b35a39b7b930b7aa6f80ce0a28e51e9be2f43013d97dfac90c7603e6cc6e17d0b4f3367b0feec32091c32d19cea5f8fac06938cb10a7767fe3bf2c24ca15e729e58c429f908b89d2bbbaf4c96e86d57e64ba01a4d9530eec0495555f2b55d317034eca872547001eb9d2336a908a7d281cb0afd8eab0cb7e8a4427db4ee8d8e1eab9118d97b06473088d2aff746f7824dca056564862bac4438a7114befd85c8821dbca11b7bfceefa29e2588a60e35028d2a83dcc2886b2264b4c6791c46293e1faaaa91ac084bf311dbbe053a1db3a3519176f811d6fa1c7f3ce55e519e2b6916b3eb701da6b42dfb171a0a8b609ab0cdea3f2962e03b90c6c917cda76bab9c83967c22809d880f645720de3b09d241575590dc285cb133722faa13a669320d2687e255818e4b6c392d208328405a521c24221afe59e745d5903afa02f6e654e0f47a73e226eedee8c49d37baf7fac45055fb058d5f97c5343573531d079943f6b84f9bdbea38c45ee381116edfffe68d182d99aa044272bde79fc07c8048331ea71cb0a78beb512e043a38f0890e14644e62b1cfedb42034de4792431e7cec113db7f77408e7752945946db90778be9771004afeb79797ca5ae5cb8f3071545474e0119cf693886ed096f5088bd67b68133c3fdedd6b2b28ab33926d625b429cf1650b8db65a64cd05bbde0dc4978960d71be104b15b1ab462e210035dbfe2d7acd188d68d4d0d2a1c0fc9bce4875bba801e8cec378a5f72b2cc6b40f27a1174886817e1960136e9d9bca395955d20ec0ca52ab3544d1ba6c220f218579da4754c31270816a25db6aa181fd80adcabc171f26ae1f8862ab48905927d28c71aedba59aacf42de31927ed5346e14374ea3c3c3eb55c06a2f98bb798b1884d14499a0b2529ca9e1db26e05889e654b528e61eeaa21f9020d424a5e7eecdbe8e584bf74507c10c66b5d343e5f869f559b4934c57930bd46cd0376e8c2de847c621bfa8f8f284ec5094827a468e39852d5dbc6eb50b49bfc4fd64442d6c46c5dcf96a7676b85c3c9b76df63888146525e8b9faf34b357450c151661020e9b226652e341a5d8f87dd01620817933ecf4acdadc3ebf46a90343a51907259528554efa28e14427529c42049a2235244a8924517f1afdbb4b94f12f37662201f18d89bc19ae0777407cdcb367dfe0cf3d2f60d07ed2242de06d9a39403c5c2519fecbf251a688f37d98f1fd37ba3e4ad56020ab93810826421feaa5d1001d3a2773658fcaf43b9c9b39bf3f1ccee72fa2c98b31a5f20a6586a9c0ad8f5b39a9d6fc82b0de6b7d0709a3c8fde946075ed01af090cca0b052b7515a172e2a9d7046b816d6845c1f611449dfb046606dd65194fa6cd1e3d7df321839f3416191d9c445ce81e2a720d702c6718f29efc29e5487267941d7368556d50e4420aeb9a724ee5c531239650be1874e6e8f421540dcc1849cdb90ac375e623bb5bcd759bcd837e94d1e2532ea0412e96b86cf0c6a046312b33d36eb28f0b59c0b8dcf8a111adfa090ab4309f59abceab2c348f6d1e669c5537dc76c41fa546b82574e7a616f182e74f1080407d1a89e7f23d11cba80ed8d09e1a5b6a3751f7e852548a6d8844d1df952315a46c3c95ba4c63791e61469290c7d11717c1e9e2be1c68cf3dc4e92e11dc708946401cd08b8e9cac04cca74ee3156b642ab39f14b97a0cf292b3e1489e99430f979642e23a0330317f2f6ae74340a9e232cdf54ab9adcef4b5247efef874e01227020738b5e83c6d6aabd877e3e874650c5def4f4d3bad3d7a4b27778d79f4faad422b7f3083423a0673daaaeee54d9423b5f81b85560f3c67745f519d45267e6f1ee20dd778fcd88cd780a4d02b82a31bf5cab1f862b81c993a12701feda764620ba00a5528fdd2f1a6afbb7b7d0828dea7fa51808dd5f6f24223001ef84525267aead2bb1e6e227af3da2b7158c4ce23f20535d5df6bb160ce31f16db74ac075839da5af7775e26334a0b619e726e880aa96b1900d1d6c3319bd6aff084a4eff12a06c2f25660be813939b29e70566fa52900ec6b4475d5e29756b68eed74156478b448501b775de2c770d03901f4ee3105d5b11229f440dc796db284350041d9e6dd15daed838367b9eb76ddf0a8ea3a6f882044242674c8059fc2f081ab5f04153df905227c9aacd95bfa75ef135edc22bf24a04cd6903918fa530b3292a2fd1c5c2fb23f3c6b0bf712150ae63782091dfad046b37a5a7552fd6edfa37c6c6048f9c98e324f1079027731985c6bbaf5289220b56be90864d6b840cccc99033b0712b1525c184c8670804a1ef696b8a307a41213e9bc220247b3e8a0ce5f20be378427b2a13f675c128f5f7a8e005735a0347b28404f5f0c17c8d74b1d889f53de47e686079196feebc4621acf36d86be2b91c35743472f2eea2923077fabc376005c02820bd9c1f5b230c6b1436957817363ad1bad13c942365fce0052c4f28eb1393d6102ea50f30805e87053866c63b5cba876df5463a154092e93e371db717ace6bdd5c4246a5104efe3a1a6c588bac3ed8ac2211475021fb0116ea47dcec9f87a186f21d039ae913784f1d7e0b8446e661a1c4e11ce94297ab352f3a947ca270845e5da568b5b0fe7f07400a3f0766ed95361526a3cd80720dc2fc4c767180f1ba4e8645a629cc0656e0651b8c652304d9188334779b694788929c613877af3dcfd38d95100d1504eb9502f889e452da75a8ec67237b2d23fb8ad14d58f3a4bdd8a614c3806ca369635c726dde082b9d59c1df79b99736ab527d60325c819bf4ceacd9862f870dd644696e37fea0f9695bfebd273bf76a6bae013afe8df35527083db8557c2d834d6e10e745f1274ab540f9a4c53486fea70cff42f9fe4d4a667de43e4ccde64711cdac85016527dc1ea6bf88dfc9c7fa196b20194bc720c8a8b2bb611601a21116abbc41aa65bb28cd9411b24071290f0c4c13b0fb391bb8ea9bc58f6d9fde3860e6b7e145d64f06c1b3eaa016500151897552ec536701e9296fa9a15a3f4a8a3f5e82c3ae1b7ade0d539e5d338b9342636f61adfeb0d7619fa95a3ff5933a95be676385e6933343ecb64b4877561385a349ada0e1b74fe1f35791acd286d01f5d411dcb89c154fb21d4041b76803b5e22f717bfac8fc42bffc05b8cccbd6c6ef572e4e31312b1361a5ffcf36454f1665fbb569252bb5da9fa7af15a8c5d9763d5ac98a9fd0cdcced4836b4fbed5d39ac644d6f447060f8687b1c073a30dad30b0d9e078b01daa237b08079a9077483fb73a0903d28a42d038c31e00b2fba013bf2a0919ba8be3dfe968afc401cb2979f6c573700e13788a37f655bfa3caa898ea9529e060d3624e9f69249e1d78ff3487c66ee1a2b02bb57b5f8914c6b6a825dfbae8d2deefc4310377ba545ce5326b5e24a41cab77c330ad2dd691633326edd70961d138d330940e3a89f95b285f20a908f451528b1edbd8b41e498a0a4eac48b306ab404d715dc8aa4bb2673f7aa883b821c5c16ea6d668878e46773b9339c72aef00010b4074272286f230072c086d6dafbcd012daa17f96cf007a530e62e8e0b9d6b524f187f212744f482c59106f87800cdefe6d5a53aa327df083d3b68fbbf306bc334a67aab7cf7ab4d50cb5960345aacb8d9f5ee9677be2c8b5ad67144c392e8383a1e4c2160afc1b558f63453864feecc2aa6d7735692d5b13a8f2cdf922c1d5088aae752ebf58bbf2b1f133d7de24a9506dd06df6d966be4e7d26d736bbe3bff05976e9ed34c23f96702f63180ce3ebdbdf6baa7dd142188947a8f2169fd0f201a8d4aea0c303c39ad427bd13a66070980f12d6b8a281e439b91e496984141b1c4b00776eff3ceb26471d08c592810c817389ff1061734fc21fefb3180ef6c59fa00434f03f8c11bc21b8891c6c18c0faf7dc31fe7c9c2fc5973baee2ef26aebab8eb476cf9e9ed11cb3e6f15f25bb7f0dff5cb00d00b22bccc68080304cf92cdb8033dbc8101ea05f40592f188151145e2fe13bb75a275a4954d60975a8bf2e0acbd7ee5140ebca59873b550e69dc0baed27f5a88327fa5e2ba43b000a07bc995b97ce10da0c4326e1479ec3175e0781415594d6a8ccda273108e34dcdaef153755b46050b9eebe235f283cb9c0c019f94def7dcf72a361bcb94ca69dda51759eb32f85640e373869089c30c106556034131e82fbffa3c189b1ee2d769e9de05f8dbe5ec03bb2840e8cd631166d796a13c32aa2fa9dde0b70a9d754d61a9174eba4f9837b8f3cbf6231a178138c7b2b5dff8c70d906292ccd9a3f73a1badc0168d1ba353a153f62223e4f923ef623abd4092bb9ed9bff25f3bef1caca07d8acb9ed01c28a2279745452cb488be4e9b7dab7c442244c999a9887dcb2368c2708cc501260898702a4725d9e405cc9a6d08ae313a068a1a3581f6614192bfe7ee0828756fb6f3960e4ca26e360d37a0bd203e4fe66d9966c4f70c3792a67dfdc54116d4b725ca9334073e5f31fcba04536cf64e7793ba210c7bd4f4ae1994333b50c67ac0b17630605c3744a38ab9c121b235e98514e07dc2e786347e90ce9cf5746dc3ea36d6a6c9f36d06cb809b2a0c658563f70b527c7d730056396e86b796c47773a8207c11ec6e89192072e0eebc1c528cd0534c9770a4cb98df74bf8cbf39643c87a662ce8e6799d1ccf97a00ef8d3e2500edac8b71a99d487c785e591d611134d40ab177dd626f3a420c349359ac263011122f0ef130ac880dc29ef138eef40d809994e0e334b860d3349c9d7e5cfd405abb98b541c7be933a2ab904cb63da3e3fa4ec0ff48894b29846b84c8eeb9ffda9d39e8bb4d2fd9b60e32fe77ea73b0d040690ce4ca63bcb7f3827a6e037a02a0e85bb7d4fcd997f0d28daa03dc8af27987ac2a2ce26b8dc6fd18186276c888d3bad13fb8adc671a2d43c8e6a3ea26bb69437d030aff94a84361dc2e202fd7fe1012cef9f77ed26dd5ae1f28063abb75215ff97869c59f04baf145f1699498daa8607aedaf72b4b631883ada1975e58fc5a2401623e4222cf205ce737692fe4843ab0b71c922d380786944a4c022e7ec14ede0529f8d3f5f0e96354d419641d84570541147bc9d7560226fc2eea9bf73c5f33371b9b2fcd03accc6e313a4743847b9da444031ed1d4e74beaa04729186b0442f1b4e10144eae539423ca5602f37ebf0e771a64156d03ee5f125a7fbdb7e3ff157fb6e05806e711f7399787917dbde56b29f56656e97ea0c0e80072b71aef73f9ece439448eae866b67149f05dc9656767cd3f8496ef9a6b56ff261bdbf922e33d01b15ead94bed480b4e52993042c563d13d3050508bb09ed827b0123e5c7efdda67dd6fa97a50f60335e6da77892a2462e988705bb575e106acec18c092f085585bf34c4be485e3b9e3475c9b787e845323ea977e14225b40cfef31beed67812327f89a4f1c30c18229695bc20ebd200843c24475004a6525e9bea073c4a7cbf0ba1b21ac3804e3f6ba1953b076fab45a669bd3946831e44843284aee4a20b3fee41a34432a0d6840785b555837de88002eb6ad352840a333bc837b3c71f282b92c66fea8420a957dfb7503d7b0b1f00b124c8c80b036a7bac765f683753f5c75758fc03cccf027412c30f2e5d53d5417f7234bfac43bb5344d0d839f6842dec8e4288b24434374e8a9f7af04a61e5b3180e114faed1335d5c4884ad9cadef76d785f911549a1717f6fde955e463456ee2e4bd0618f04083b6b741b00f4801d3b03b63454b851c697c00c7456c8724acad044c759b4d8bc375cb83db775b36fa2cb78a4896c8de4f5d9280a117c433b6bed65321ef8995eadf670f139592d09fa2d481b731edd609579fa23328ef54f704be80a59927601ac6b231c354cf1e79fb5ec0148d064c77890d76ffbcad0375aefae8f9fe98cae9fa1593df9ab96067172561600bbfd39ac820c0fd1f222cf1104ad774795b0eab800c347bc1f0685eb11e04b343c2060f989eca2a44111baf533d9925f036c1664f049e5cc292aa0d85c2e33f07da00095547f7163c3e27b42ad78410c5dc31533a792e1363ff6365b738e48b4c12756784bd66f1ce71e91ef2a8f9fce7495e105a1bc8ed24531a8cad1a88425800f8b93cdb02d21adbddc31f7c0fadcad3767f3a2b6987b3ec6cd720776b0d0115e128eb8a076aafc1bae192a568e32daf03a58981a4c2a540b20ce2a51eb2a0a8f365830fe48b4cdf5656348fc409c40d9c3ac009147c37a719171486315f555698e1468bec28e78c6f405e9ff0986c639b1ce0cb0408bbf695c42efa0d03276d8273b6090a8d8128192e32563d12441703d93f21d4933f308ef80131903e10a15136903d40c0f60a3b765000f3798f9c7433543f19dd08a35aea759c5494f3f595ce33189a0d3dca6b43afd849196b733e014ab89343a1bdff64d513834d63aa4b8423a113c83b04eebcf007ba07d12cc1d1b3f807ce106a992c3f488c61650d68809fa30de13f408e8592bbcc0dfab1cc318ffc040fb43744349470282fcac7c022df17ce86f99691918935dc9426e78fe4913b409c72e8877324974a3c870131ea9074474743766ee26bb98d23df94c24db5b1448032535af50f1b54b79206744dcfc74944cc67222a9b5c25a33d298c4f511408faddc9366408699f70260ab03ac6484651e8d7fd0f419650732d149f03f4149fd41dfdaf548d81dc74d19a3a18e8e2c0b4d4af04cd4407c31f31352529fdfd816dae1394d43e97249db1f863c92d314f5f04a57ee2185db015eb17880075557577538961acaae21ab40471199040569f5e44777ecf72f864a24b996ee3cbf4646eec6e037e160a53d66bbd5d455912e5ba21d3487037c80d7c9018b626687e21a48ff029a7215a654a35332c897beec371e918ae5f864bc71c5d65989a61832d77694129438db41e3f008393c7d1066e1d2bfd40b10a4b4305050a3866e2f5e9480462bcedd9f56e55be30143c37b46f721c6a4e7d362d89902590cb66918b0744b99382c908e71f7109eb54acff7624baddeba365e117e4aa16d9d45dd352dfcd67ea1233295bc27babd0920ff9e49242e4e690282b5c8dc21a8c2af666898ed0d1e8c75899ec6431047165936f2da91f072f4afc7dc953d0d67c4f35aaa57b22a0be8ef8fd95c913aa8ce1414587799f2969c5703383eda178330559224511a761ea0a0de0b2c1fa7ef1006e07ee80a4c84caae0f06be0ebc5f77a1a6b49d0ff0f3c73664afa74c6f537fc4888b4ea442cf588146501a899001865a7098e0c5209c02dedde8bf0eb328c4a4689a07d83b7820003e120023f74265b615a3dee43afeb8df1692320f30654d849e08e5f37f53030ce9f5c9c77e571386d4f6d176edf0371dff869298b5ef7afea7ce0783cbfc401be0b1c035d1c253fb4142c814a96b0ade78777042896bdda84431ac2ae62cd399209ae1f6e15ab3418b3da91b7b259530c534ee6a4149f9dade5b81947539b82396010adfc6f434c00990829872e071bf8fe96a3c3518b80e4d1c14a35d75f8e9ecfc72b1d7e1191deaa78d4f176be187001aaa4d0d1678878bc3866641dee8a0e9acaf824c918ca889d5f962421700407c86b5361338baba77c1b46521448a9e986086927247fed91cdbebb16a93570b6229e85378988200ad83c14b099ac83eb7283244fb81852c1a4de913b5a21531d2ba379d2b203c7d6a4184a2067c7842fdc80662a600f97efc43a38f733d1996d4511552881536d4ecfb02b0067a89fb8800fae3ec75020f68f5db40790072155ea7b01fb222eb0602e2c26582c53ddabd27702c76dcfd40fca1334e6837aa3a2215f0125a518c7cf3e13366ea053757085db5f40d370a0cce983529459d334d93fce22a82db8c570f318d72488296909468f212e1e33edb6d8bae005eca46120664d47c0d9d558f3e921594b4d3da8ff5ac1620eaddbabf12dde28137845c5de65be9ab30267c694c0d72ef3d1369c5cfa26ad717fb67d2c8f93eef69842438ed725c9729d7d9b87e2538589dae9f921628a8b78cfa6bc7000a21242dea0529df4a92a26c7118e244ce91b7caf16a7b8a0e6a1b9e72bc1ee4588c69457ee1580e199fad9f3cb48817e42ed53434d3af65b440a32385bd063962ac12c637347a07c073d338015b3f20b1cc560a0cf2e6251ed7b876ca8dbe790ad8744008900da7bdc423b263ebe3e64c7ecedcbf655fdcbb2998a98ab8026956b593776822378d1675157cf0025afad36879875a678f44ee9432e7abdb33856bdc770c11dd5b02f353662a4a93d7600ffe64bbe68d06a590709eba0381d1afbbdc926f425ec67f83f8bdcf58cc8040f7f64eff7f1e10d0d95259444417df01a1b38f35a5a1236bb4513878c2833a65f47f7a6d5218e5b88ccfb551002631b9130bad26254a33ddc0aed1d08b1ebb99edbfb1b65aa7c7a7ee7432740609e10c0251f29dbd609542719bb50675b24c2752c343a36e4849e8c695fe0ec34bdd81a497867c755fc117299288646cb53d60195c238c381c1f22e0f462d66b2790b00ce05c8bf3f8224630a46418ad53b1f75e1346c5c0009c573e148d273c3bc0b00806c79d64fc5b956bf5017a68023af1ebc6d7195a84c55e89231f43fda858ec06fb12d7a169a62f8be4abb79ff0fac068eabeff37cc66b115d317994711fcf6d9c5c06912f1b752d09909cade9728d38d1556c678259f602cb402d699e917e4350073503843586ba5e760f8b967540009819dc953a99c392efd3bd82462bc1f19b2a5b7d0e44ddfc718cbe5f911cc8ef764ff38dc98ca6797d2ec6965d83bf24e37f6280e72f4923301fc0e0605f553b667ad58e3ee9787bd56083680bef594a2d01404a8bcf79083fad6c2812a06c67aa53994000f2e7382ae5a95bb170fce01c2076bd3c9a0bbb8a9ac5d3c1666493638c062afe29813ac51755e01ddfae47675cfbfebeeb814cc8cdbf00171ddb0943f42ca8b8ca71e82d6b9dfeee56166480904f7671396baa0dab7bfb4b8b3bb775871b9cab67cb6bb854980b12814be2abbeedc9c47578660f279b9ee714e5361b6c3cbe142bd224242a3b0a7743f31f9639e5433417be0aa529afd8095e3f84666893755bfadae2ad92f9b41853c844a9b875e20da5aeca125b27bda9afde2be72b15e438559c0b84143ab7c840c9245dc986ba8d577aeb8f7013608efadef19418d8ae4a45a0c88d45b16c2ea6dc9152300168b67335aab4cc55b5078da1770b995a39ea17c9dd039bfb8414a8b934c30b5417c833c767070b9128ce5e584968546dfd39e973a12b0e7b9fc71fb28bedfa5b436508c711e4335a0c1a8cf9925ab4ed6b091b14bb046fd1c0fd4e72494d490febd9ef43a7698e80a645774e5b84d4a6f2ef1ad71516d220bf994e9fdb98dfe73fef27100cfcbcb0642dafbe2cb7911dd88101ceb834de04e7947a2d392c735c392e6ed98462cd4cbfd79e11c9dfc54c8d28e22e302f44c6701be52102749aa3ee3768c151c794a8deb1f8ca3b2e2292305816a6fabc8c7c608b873f5581f22628e2e7bc6990d4953d03cea7e5e6ecfe40e5bf06907bd4e4dd3763600c375e5999125dbcaa824d7c908acd00b0988693f78563ba701dee9f51e9f5cb3345abd0b1015110d09b1663a415403cf5d9717f63884cf3c2f63ceddd5527d8b661b9057cdb083d4d99d8b8ed663f25d30402d49cc5561b4775e8e2bed1b380f5e1004872df4a7603e31f45c143b3ba2cd4d77ae67bee6ae80418989c07e657740f19e47f30f51235ec95a7cc2d988778ca5f9da251857e348b4f1dc757b6f07f62428e6416245e1e2222618b547ff7dd91c89c236bc6b883df210ee499e00b062c4b6fe51b00be663b57e0d27d08ef186c25fc5bdef44c4c2012d7432fc45017cc50ba6b9c7dced1083236bfeb7dde9ae8a7887615811f6fc6572c3c6569df4ae162421f5f5565cf2fa2c3c4ac21464a731bfae1713ebb140e013895da6067299282273cd7c827065522dade21ac94bd325be51047c5709db706da7284234dcf6e0c31d76544649cd5c590d36956adcab28c9d7bafb889c9990e94da1f899c44f9361163a052e307056bd04d07d2cf8d94bcb92f69ec23ad44f51d1348bbe3cab1206943ee97c61eb74ed44a12c17b76c6e65726f2767a3c130a38a93026030e69e337ae216ddc6de205b8f583eeb7647ec3778c7b1073b2b6ff511a8aea6de0116aa49277a5c461d1ccd2fbb6f0ec60445936bd0ccf7fb3f2165ba493b3a3de4749028840044350aefa7b0e8123233db269fd45e9b02c76388dbd081d7754778ebdc6d837d1703a724027a5e623e7d3f97cb7a4b5576ce7c6a767a624ecfadd054bcfeb6fc349d5548ba2c9519648d53e2310f4e90581203047ff8c5a5035be61b3564d78d139b5f780fc66db2393f8bd729c3abc0c0eb6a7b70faba734abec3e7e1cbb49fe2dc5011e823da3ee59c14afabb356612fe3e901e9642b787b9914f8a30e743158f91cbc717cc1c42a57da1be0191a5b3fd479cb66747d1f9c3783cf55e544380aeffebb979e4ed707ea6525927d8623283eabfab15b34b664c5a38653c91c51e6065db7ad753756a733663ba807f1e2947a6526c2b90856065d92a0c61230385121ff8a9cf5374f5fec6c00b759d6a5b4ab1374038952f9ccc8a0206f3c6d07d4eca8683627cf7d82bb8265ba9c4ad1750a6a894a4166b74bd051dc646f31cf542b949cc0462c3f90eec8b898bde55e41986c973c91f3216d011e72d2c6db5b98f8cd9e4ed7ab18432e6b9eef1013d0b18326e30c722e4430ab791e56091d11cf454f106e0f08bc1afaab443459dc110a0c630f9dbb6021032a59c1236d08e491e260f03e970ff90039159677ed105516368f49409492bcae829c754568e305a8e1a587bf050b7f78db685315b018fc4bfb20614791f53c6c83911b6c94b9381237630f78e75b4fdafc4767bd0eaef2d679603011a375349c0a9347666fa31a4b55ac30b28d5a62f6b60e20d2e57d3c0ba3f3ac703bed0ee6b6e96f775d09e66378e52cf617823368b06f71f1bb89dbdcebafd0043f9a5d0b08690952dd8c8ddb92c3af17f1070fb404cdf9d1529668b8d739473c1fd1c15214371170e934218b6e09a2c66fcf225a4c4b0235b03cc950fadd6b7b0f1b37841c5ef9fce57bff8a50185b9b9450ef9a5ec4f58e443218ba6a2265337cd8e13eff53c0c168d206ef8cd6ac8e23ae14d7d1caafa70b24f39fcc8d5fc919af0e2684e18d3208e64d136b37245ab065c54ab25913519202bc0225e200287d433284a9f4705473d495032380e275fa12f779bb378e52d01abd85637d00eb7b18bcd2f7bc8ce00e46391003c7087d86686bdad1f14a158401d2ea4478aee14620c0490096467f4666b2b3c02958db1b17091e5b904396ddf3524fab506aec9a1dad1bc8307da4d38e99af680bc607dee6a549b43ba9093972461e1ad25e15fff842e573f949c104c6984edbd45c7508dc5a50341cb92c229e1b881121e43a3713f1c753e1f7e413fe7e8d91738ceda5133f0f20765acbea4d36ee2bcc898c8b1b7b5e046616c91b56d9950c64334346a522cf2a37b9dc278750c65033291b505b407fdaca13710d57206c7f2ac18c43bee013ba10a38101fd8a6656eb499f8ed52c45555644fd65208871eb728fd48c60fdb8dbf11e275be8728bc9900ed77995a841919a3a512281114d455c5b81fa2ecfe40ac281df5c4ecbd5a828daf47b2cca04541c7b68d0419cce9931e478a293ea7450d3e4352e99e136ed9af5392c6e53c888ad7055d9308a169b171eb8636bf716550522b8e80ff7eacc4f924738a083983825cda8de193e8856eae61adf1ed1d30d3fa74802c86df5ab48a243c0434a01a3e0b3e24a34756bead8776800073f9558cebde028efe00bbfea11ac6d87656872461bb366f34d5f545432d1390fa9e3c29bb17607fcd6c7a73d11c69e99d37a23331f0d239228b75c78397403fdd0937b58c1d6e3a2d4399e8c1cfc174d01bbbd3cb683b8f79e7f3578c831080645124750d17a9672c564ec43041b1620bc907a22be289e85225d2fd9a3bf6109cc4d506c593dda9b95ec7156ff33c65a787494cb95251751f19c491a6b8d68cee57d3f6e67ab05ba21474ce6f485cbfad4058304e20de7420e607115957de8ebd4bd9461524506231d54a0c592d3acc5411f6d785e97fbe59d10bcdc37937a773da48ce7e216ad1d3d7aa6f6c29f61cc4bf3c18980a2237c6cba382c58a749ba5a64913f6734e5aefb6998f0585e37902f099dbd7fca5e8de9ee61135211d72f44fc4898333f17bd624d21954c1c0d72e82d5626954e83dfcf8a570f34048e035249646fa702bcb34634c36621b9e0d92ffc2dc77afbca65cb547a959406412dbf952ad13cdf89430fb368c52922488fe3be53a091b7ab001463a3e0317cc197ef59ab548865e8bc51bf4ac830b38f45c103926a2c5515e2f2bf537bbdc1230521d6e6e04e6204fe59ac45007e6e06e5635fd989b1d857eb90bd376312a339299eda41395a1290f375ed9524fe9e2c0b8590508c4cc3023a82f277b0146c1d2a3ca6fb128d54f0351d59c0f3663096b721989f8a083bb0df05738c49fe631b53745c5568b96d4f1deadea0de97303fb59628866bcd2c9e60655630b3f585ab9ac65bcae94a44915ab11d5cda8295a1445002c704ba25afb62405c979a6ae97d50723a2f411e8d9cc083dcb5eca03836940dc02225ccd6b15eeb45c780355efd0f9b7e3fda56ad9e8ed04a9c174c818d82f218a1f5fb482acee97a9846a2e8cdcea7b7e55e740e820a25b7a211b7b117358d9568953bb2367e84991bf19d1f04fd7c644f8de3455d88a8d6e9695a6a6e51ac6662ee91a057cae4b5d8b3a8912e5aca3303222c881d0df37b6e1b84ef4bccd39a4b8ca930b7dfaf4870234b795c6252826ac524cf7ab04b0cba07306aa4e5a2258748311e3d47cab1818144e9172d040f43972fef4aa570478762d69f0444677dc45c664525b0af05058d08e36b5ac661e3c045334f98ac024d5e188c00a1618c82522270c3ec3ad5e6a3b90289f18e909cfbdfc9f4487999ed2bab71674cee9aa3e6b1c67958d6a6c861592c45d48dc756d23bfd859496cfbff6a4439bb9b78a211a5d7016c930d27955a74cf7687bc9e1a645c47d65d0e5b25d5b370438277066de8d5c5cc0073f804e0b93208b41e92cb4be87ca31ded4737d7fe71bf082ab32ef92e63d02fee903b6dff893fd0abcf91a5bf704ecf10da0fa3d54dc65e45bb5a7163f5a9a9a4b96778e09cf73f9f61a521d27764bdd82d7b14b944711c01b5c980b6c02bc1c41906b44a3a058f303b0101813e1cec7ccbf559b6f6b353682a343b86041c9c497ac784f673d23e46120b77be9aeff58075bae8c192e39f4a3ad07e0b4ad6234b43e3cfa8c193bf924cc8dd08b881359178273106c078d2f7c07dfe1ac473ca6c232fe29b5460554123246a601111c62c6f4a99bf8b87f38a80f56a5ba91b52656b905b1e160835c63b8e7c1c6d4d3392e832d7a03746983d5e7d0f42aee4837a9f6f17093aeae92a9d5d20c119ba101501e9d9adc4a7ffaea07880e14518c21807ee1617ac0ef46fdf7f183a34d23863fac7ed4e72b1553397cb2570a3d0fb81fa37c3a9dab30167e965426ddd5e286935c771f070c06e85a4da70f7dcf5e00f1d821ffdbb4c35f4b13cc47d39f1a4f7d7d1532acf761dcc1ea2bc24f6b644a3a94ef04305a4e450811c1e79493d9439868f265dc3fde412372701f603917c93d491d9c247e1f4ee446af7e45ca573e31e5c77893802a324d2f6dc66cb11d49d88985234f581bc64365998fa8b180143b2ec7701d55061d4b81dea803faa4dc778df98c7d783ea4f68c3f5ba4f9f6e5f06f34585dfb6094fb302f6bb215d7d58c48b7d96485b1ec9dfd7ad0ca6a49b5137491abefea6a85e115d1d8294009e4841455cc961e147af6580e88fe51bed56f9fb7efd206d21e116da9e7ec5a28a735d4f241ace07bc8adef668f5572b2b51da9876e22d052a6428f4b147476803e3e6452121ec56edfb9495ea1d18ef0dbe49c8e40cded42e64cee9c86bd0909bc23ae1d0c1c66b3f465a5b51636ec07ac73e564c5345af0f1bad68116438357e74bf6f8604d25474595b05307ebc109c3a33857c1f4fbbbeac1be6a522fedc7b5be53e5ff0372cfc771b90cf4c032672c914c26015aa09c1db552a78160fa88a6bd10c66008529774c160df55fbcab0cde5600c61a1509c93b2c8fc89cd5419fd57a4adafc69f15b84fe050118dcb175d2416df39ffa77dc5bc1b2de0704bb396a5916852be4f941a6f4e80bf97f135ba2db332e343c04d611edb946f55bcbc2056016bcd98145520e28024bcfa830b99f9427b4a1c9f0dc6db9d6ef510f8ccb5fbaada49ab65e2d7140c3450038f23647137d9e4f9db471d0a8b7b36828a9ab96f6fb969ba061a492bdfbc61519c6778599f13f84fdd5bc65ac1858aaab7ca335c3a394a76e226dba0063cf9a316d0bfb7a01d7f37290d2b48756d641178d9fb0d8b5751bd76e29030498c27f382b751a382f0d2b9191b41acc475a6023f649fa439fce42404a4dbb9783461f446cfb3c6f3fd16f77a532851b5f0c5311c5fbe11828c26aa5af6d6f48cd526e50fc52f98d32b85c06f7d8c5e8a61be669e96d1b462ccd6548ed3d3fe4d044464c8875e5974672a801dcedbaf0309123be214328040600371b64d1d303b3887089ddd27361a0b87d0c33832edb4a900da3589c2c4f19226df9a8486cea671c35823256a4239885d3799519afac0b77cf7b10768971d7345cb443d78930fa29fa48408d51d4c9e88d05cc82411eba1549fcb4de220829180a3e02ff4cfa5b9c80630cec8548d4fd8e36d0100fbd51334a2c1310c0ee29ee11c103fe3ae462c0e68ab7c089da10fe1c645df0c124d4d84bfd99c33c2b5c89036936f78261262b7316cc852289dd0025d4d06310b79012120f4fb35431531d8d0781ff5ce980148789a4f051f84fc6f574fb9e70a26c3d80f5d893fe7b94b2a233af43cbb25680e7bcfe50a1c4169b3c3c97f1ed8da12d82b218f8494ab8dcdd56b4967d9b94c842c66f6225e5d58d711708039adbbd4ee84310ea3e9901e86c23fcae6ae3a62b9d18235c96e27ab4258ed4bb75c75407c5e05ed6c6730a4cfd7d65507a23d72ac3abf28d01b4e01327c1ba31041c7eb7a80d06cf34a07a33a00d4dec8bd2883fc4c8682c9dc46cdf7ce8f793a19c26995bd3fde15a7d50322e4933c03814e3c0a77ab7e207f5ce00ad8ec62803c4096a606c4f669827213f3168ea1402a4f497702bb06dee8cfe0f50c58119e32b6c9dbfa96e93016bf54b9b3c4114c66c37dc8feeadbebfbad93a15dd004d5a4791e1b57690899194d977fc28a03a1bdc2837f23ee30becdc75204818e441958ff38c08e57e791d81945006c6027d256556303eafd37d9496b1d6c91959cbb5408a649bb13d5ed2088bf0b93d60f9b17ff6eb03530b6e4fa11e98fb34b424b72d6b2db848a41b3319885a23e903e0cff32b199c6bde187c11c409ac9319f64591d961cdf2c5a1ac93347c101f4d1e5f52b81561e55cbfff65cbc194ef46e3991b4e18e6e5381617ee7332994723131f6cb7c0a9daa1253db6503629e30e8ec7bb853eb860efaa9ccb465b887fb601f9535b4fd9bab5a8d0a9f678884714b66de33d929f32974b7a3657fe15585f7692cc13075221e6b0ce1c476e4ad38803bb595fdc038b22c75d32bfa8245275583f7784529ad8d8d81fe52eb7c33ae4553fc350bec24b99bb0a48b2f9939cb9e4fa7490c25cd67a150c89869e8a91729cd04c5266930ade45c631342e1c5b054b897a3d874021b6bcdd896071b2136c198230af6076aaa63e6b3309a90f11a43826509f1ff879230d24f038cc96f50d68bb99dc839a13825ad6fd005cb91f14643d93dbaa822b81021a2c7e0e1b66ae18a3f1e17bfce66a9c4ec86e9f3b964ed1be96165573f1c051b2a4e169866c282304f91034d35157dca135d72b8346bae2c6a0666ded1fec187ed78580fb1b19acf9e067b5f47ffcf8901ff1cbdaed3ce90ab632bb85dc292d73ce7b4f2d9f9649b87d8dfab678cc114965df69406e0982e85f58baa94edc3498026c7b7e7bc3fbbf048ae30c12162079a1c2670a507f356e48a9b06f327865bc520d5a377074b14738425a2ec4b4956cb177b3adf48f8773ff626ec45cd476562110fc2852cb817bac56f1062458f999eca748bb778339e5c6adf5209f73e7fd78e8405f0af1c44b38305525dc03d53938e55a4416c84b16646db94b9549ece92954d9712fa5a0d6d539586f8a9ecda9a71b9c4692966b57dcb2c5912a12665510cf30019a7a3fc39a5d883fc0d562dbb9260221c24630839d2b9031b8f8f33b0b4092ebdf4fd9f4b7c262d828029010e809fce63d22b29a44e2866209dacc5ca8e05440403c1f909ddf8e60b51d84ae53061c2c1217dc54b477385f2f95dc8a7defd38460b477a28dfbe037a3d0bcba8fe1fc4b90685d805f9a0bdf7b6acfad858704e5af68fc8cd4c8047b694ba44499f4096b99e69db944b61db83aab13b4531a190c5ac03cc9e3c0b62d14f47a4415637665d101bca5f4debc73851645e50c211a0fd25cd826867925457b101805c8d3c7a98d88c65e1e8ead29f525959a8d31fa5b727200b5911cc66c64e659a77e084874b421d490f24e8dcc14a60dd2d2d0b598631ba79f0e6b5474754327086d6dfa62845e060ca8022aa41b713699492df3098b450f2027c6795c102c7738fd6f4d986b3e73c724f0e526f864bdd3919ac00ba3cb4f0e27f2d54ba8e451e905038018b9ebee7ebde4c32284ad4e7af53491ad98de8fc1640c50e35ba59ec72f6618293fcb8a4af075f880589201d89f2fa9719c393077a3ea5b8feeebdd593ea57a8a5cf8b226c5baab3a84405628f040059e080f13b8435e0e815a1c11fab216b852d1e2b7bf080ea0985fdcb03bdde003ab912c46dbe72bac6326c9d5fa6813dfd4b26402ee128e56c9ad64e9be99204a8334f4e1e1ca8debdee293dfe14cb6295a8c7524dfd57d447aa59f76755e2169e6078249417e8ef1c9e375b4a0c4001bcf25ffd333ee7ebc8517a5254327238289da40bbd3e5c8d4d5b66b0b422f7525b493636dcc7e04df5c806023468c132c4357f374ff8d9587d758698f7e94dacf7bbd0ff9baf5f17dffda684cb04e03f02d7179ba3fe5ed479b5a9d11ef15d26dd29951afd28503826f0c8341b170258568fdd1ae2023d4f6ebdddd071865de7cf9b425182046ab4df5ccd428f8151971ed093f8c751afd735baa4ee655873e38fb75aa6f6013ee056a2d5618a72f43de10af75a7612ffdfe54a14613f035f68b3b992e8f953d7adcab5347ca5838d8bc2adc8d685ee8c0a907f1c578689452df2ca3c5839fe04d5e5f1ca94c16810e29870443a5634c6a4c6953d72acded0a3d92c276eee84650c158bdbc7a4907c162afe6d84c4fe3fa00c0717634087ad6e00d9ed5437f90dda1511c6ae2b21db50f09b76c9b84eca056783e160d36d28663e0d9376dbd06b6592216346f79e64d0ad8bf3c554565aa93e597f0fe5dff547caa75036e8540ae5613ee249e40596b922ca323dcb6135a584b8c7ac5f0e5e05adc3bf3cd55495565472d7345f7650cfa5063d00a67c8b48446905659a7c351e9c5a777481995cb828859573e36d32b05d3e531d2238b5cebb21c459e50ee0bb57f4753d9e52d91229835c068227bbd230772495c6d59d2e033833c1d592ba650ca2846d120b73a3f8a0abe69a7e2f1ff55eab3c9ab9bac03c9675c5b9ba9bd5dbd10ab28d975261f1d9a2f6f2f36b45ac4bc9d6e238b9fb03dd446d70f8bab6c919a139cec5d7079647e9f59216e6e297ff82c6529a86fec006430649864fd72202494bdc56df6aa7cc9b60021dfe8df96ab48724ac6cbab384ea4de5f4f63ec955413685fba52e314fda2da367afbb8a65ed10caffdd9ebe8c4e483ae4a73677046b6039d69c88491b54d06b6625387b68da5ac88373fb89e248cc79d2121913cf1570ed8f60eb1725e1171b90d6e9ab6b0fd4756a7c36cc6bf4295682c5a7849570abd2a263ff341d97101aee0bbffd89675b98a9dfa695ba7f089b6d7f7de017fc27361e27f62f17bd6f916120ff43ca30dfdd5c658fc819af171c34a0cf0333e91f5e58d50710efc4b3cdbe42cb74e2874756f3fc5778eff1c81045e70a0f461e596e61cba8cadb159e243d9221dcee10b203aef0edf6c89e43ea151efe1e194db15de1f92935bb24885de101e723bfb5ee54f2349bcfd244b5c4af6e79929118e38a5e736d636c6f56a7ebb9c2bb09484676822b3cd8710e5778ab7b4a85078bbed8e358f83033f61045e8901d9e4520a32481746617d64d8b6a58f0cb708d9a3d1ea0472b7672c23a529c9e4d83b4e3a497744521cf09d5c81fe0b455588c616a559028622c0f8ca327cdde243dc49903b53804a92d9e276122b05bdaa07c442d958a7de83c708673084a3ea1cca2c36b6b25a6799cc83f97efe41897f0bb7decc658eb7711d8e08736dc2c963cbf0263da29b9e9eee3bf36220a6fc3239d1c2c7522ce594cc44272c65ac23ac0656044fabd578f712652092e06e75d1b7ddc4654f12841d0c298fc0513663b4681986be4ba28ddae61244bdb0bc930112b09616238081a066605d100737198c4f8cfe86b0311d3322c49c2f15b346dcbc6b734d02f34d3532a55861c3a5378c8281e620a0056518c319ca38057d87e77f0327da76a28f1ceca18cc03cb7b42df347c1b914883b65fe231e1242bb3033aac1b1910891d876a9ca33b04aec6d941265c58b120409536034e074a2868e57aea388d2546d24fabd177b5089c35cda981f7ab8850eda4767bd504b172fdfabfe05cba2ad2327fbd39dfce544bea1965220ebc530e346323586ae95a3b29f82be1dbafeabcf4d91ac1334ba56b92b3d68b525c808974421df54db3f6094901fd81ad7c9aa202f0e99b915964b01a4665f5c58cc5be34d7415ede64d08aae8c8aa05910ffa5b833ed8fa1bdd14f91b57151c7d0ade8d085c4e89a2a7aadfea33a99e915fb327e76c0dad19ad3eb1531da512f99060299df455ace45a8da1ac2cb1dbc688773f30a31be588b10bb043d5cec2d5981b2290eb6d4b10707c59c7ac8f2fa275535d2488bb4eaac3b6e72ef6b82dd7e0b2f89f04ba1ec06a180a5083a7f8490f19a1d8d36e13011b1f1aa14032fee0e2b1db905e97f0883b7c6745dc42b2f139267f86266007b2e87ec634374e4f228615def41b550c88348718a6106f744e279242fc1d2242b871949d31a43e973092e6db5a9401bc3b618aa3d5bf786bf580e1eb5ccc974e1794a7c1ba738dbaa241a141111f446a6b705f27deb03666d9a2f24137c7620632facdb10ad064c7f9845c7fc0f7b90e368eee5279249d860a53850b24eaa88f13ac5c37bd5835ed69e98cf0ac58117597e8172bac8ec73eb553e171a8a4c6b36abd68f3ec638daf22bb8326212294eb4042d9222526e26a266a3b6ab36658bc5aaff0fd9c7055ffdbfc4d1870e94b52ee193a9c6b767acb14fe1fd0e8f92bdc63241ae9a5f8434e43fa42229990fcfe5dea518c1c0b7c6b50fe21afa901e0d720d85151b9a990c2db5511025099e20c6dc6e14b041a64859fdce5ba0f5bb3d22321f80e6c13a72bc685584ef40392d33f407cfe736940d7700bba9d2cd7f48773734196c155d0b0ba0748166c944e8a548c9181b5917e4c1b445154adfd71c2709d3b5341506820bf118be6f58614d1bcdf738c531c218342fb4034934b41988e85d059f534ac4b2e2f47d2569f5fcc53606906a6327f227a6c6f942fecc8e4c164b37e2263eff0e31f4cc2b92ed172cb778d10d532826be4351eac6e29e3894c228aa9476e40442dcfce1ecd02c8ecfe92413991890b98456a8ffe303159c5af16f45ccf43ad4063c6f65478c05717342a83f79b232735231a2f992108b87f608a95585670c14ab1832d624dc9040b1d2300b721a786c7b68bb83fe8c90b7dc45ec4171385bfd54976543ecd6aa2a281a6d41acdd5a33592414125f7a046ad101eb25c075d0092c20b1d0971209bfd4307d0479fd959b053d5d264447028570be9288fc8705260f1e3470d36aa2d930a4b284fb8f794d0d54408cce280e7c7f796b08e8b779a36145b286b4600a959b3ff66ffc6075f722e1943b1da2f107785a0fdecc31636430b29929b98b34b8a10d95a843f8620c274182fa4f6c380ef76791ce6e1b677baf63e9f67ca657d257a1655f72b3a33a06d4adc61e2be86d1e3b35e977ef9953358f02ee6c64350b3ed9ed3bde7859f03f1e264ffe3a4c30c41c996c85e0950820b6c074c92e19abdb65790eaa870880d86e0cd9e1c0f8114e63ca854601208820e4347971cd1b9abfa16d1808336f745916fdd8e599c7e1178964e2ca2032692a0c8b2589268f3e942c127e16444d9947a319a1cb7ca9b79a2c61f301d10b26858463f9019f84901392b30525f4ecc7009e0588acf39b08e304a1108f2aef417781778ada455e5026fc6c216b3d12195ad2544102788433b353fe62e8d607b5ec9452dc2be78ef1732bd4c9d8074a21aa2e0f211607b896045baf2cb8c6441d0fee393b19ae138d54a5ea909a2e9785afe08f7167a9720b8fe806cc7813baab10e00f479649ea01834cefae7ab72127e2bc6c6fba6513db2e5610b5149c836d0623027a17036669dc0b9da9a069bc0a1ec0431ec0d1aea5b4a02fedd0e2d51ab91b2c8ee5014b811abad4a27e85409a0adb23f2ab2f4c121c38a3431c70cf6c8b2ad2bc70be8ccccb523a54a0a635b9e0090237a9a12d992e1890fa3fa7b1b08c02eb6336d93027310fce21c3ca6c0a617d7ade756634800adcf330741f5b312dab1c59c90702362e533afeda3c0ce6dda3cc06e06c39181c5cba8597b9369982221f7184f68de02e43ac9d66fce3788def78fab93d774d5ea7f41d794a3bc9559adc76b9408b64c09a45ae4187a3ca1144e1240ba1ef4ee0e52560d02c037b641b1601af0eaa19bd505913da233dd165eda35756e2ca30f347c6608501cbbb33683cbeb390fc69b82f8df4ceaf16e90d0c72b1b26419f56f4aa0d94dbb0198a90e3db52894ba26a8b0fcddcd8b027f48a15c4ed6d45f1c9af0bce1ceb18a1596c2ed3dcacdd152088bfff3f496b036582ea14bee5c8d376189c80aa727a118d1d3d29053bc33bcd67f0ad85fd32c4e14e185a8316a56b90c5685692beff740deccb210b0603f3980d36d07c5f4b043e4b3b221351deadb604b2a2bda377936684e335eb3e0eb9b7064a10d9ec5bf6c61c0663f5243eb095e1f8f5490a87abdb8e1afc7a8495550eef7c8b83c9820723f6c787fa87d5881347d5e579412b78f9a435612a1ca32b1057979914576e5bf5c409ef0990c049c00b7c1f2263b9d8e975e0e65e59c040aaefae1b0157e1c60f481314045527928d6443aae68147e29b84bbbeda0d61779aa128ba7a19db1b62b00b8fec2bd9044d748b68bcc2470b4010232b77238639210a0734a2ff2334cd7d30444d9a711d7b9a508254dd3480d3c6450297aed9f0ca04c330b3bba1ea73034e0483b117ce12c86ed2cb319881351c40ba562e473383f633f2c68ee4e5e6579fda669d247985b4a5343c6a9727a704ca6b44e161f696881f839860987eeb4f37209b8543758efbbc7bb6403157dd5a9aee10bac36f4d101f44b024f58ec099b482aceb0e416fbb0ef6cf8dd71fb5b5cd9c8dc7a5a583649ae1da76624901dd5f25cc6e5419b762cae29e8beb29be0e7d6e3c96a9e5623f7bc503b80cc2c2d05b2230b956975e111c8dc6008d9cb77a91181bcb744cfc6511e86b399190f31d7582b57573a70cc1c6e37bac520254b75c49baa567f93e8a326de9fb7e4b126413e75816319156ac68804b20d16ad1ed561135072b892e1c75b25c7742d8513413dcb937c2d76c727ebf5ace2799868bd93f14ad7a2e8f9cb35223bf663989dd4645a9b3e0febddc70b7b696203476b83fc47d241ba31d6a9e95eb914e503337d8aa514d545d817a2acf62cb1854a8cca5890ba2bfe9c0515ecf248505aaa0f2700b56aad3aeac248f5e3fa9702db6292831d9d6c584afb12323abab4c69d375d4cf74bc847df44fa87c2ff64129dad1e9aa2ad2d49a779479ad7d4978a6e5122f43af55bc90e3770306a22be9693a631c806e6ed3768d4b929794563340c33f5925e5ec11c1ff23476b6aab404117a93856cd59d5c7344e47ce1d6803adb3dea652be4c6be68f3993753752386debe2d2816b1f05d817f32cf5bf377595440d9aa3343e8e530e965d2ff0f2074749fabe3ab537193bc63a8e0a032eea415b8eaad238baf774757df2908655d403c11b2614c592f89beecb0a868a4ad56c2547d77f1023a0f3487c9a7e5419d883159ef97034cc967085fa02cccb7a80852e9dd103e0e3473ff0a76e3d814630839f6dabf22a880c87ccde9c84d4188da1a5ea70c92dcbf3ea7af3f0fbc7824b35680094547ecb3f39537021e14853625fb1a6c0c723a90d0614205a01511ceca54170cbbaded737d58c3f922cd3a43bec1e517709ac8ed0fe21b49c65c4b6795b73a6f53cfa779e2371a7fb886085b1cda7545dbbab4f4f36af4a17f385268c71a6b852df421ac6c80cbb40f6f018dabdba04db3dd370a67ca5f8d586b30033e5c5d5e15f78d9c34bef15af787857ae507a6ea85c85e42b3b68b86881abcc116047263c4aff05221039340b7f51ea7ed0c30ad0178ddf7abfbd3f7431416177bd0bcac3f0443aff104465def7655d621c69b76e57ed4ea32f6ee1140fe227a5ddce9e98384884685489c571b4408ea0a955c9dc6e39f5a79057275b243ecf9adeb86a9070b159be8e64a6a432d11166db28c954dae82de6f14d4a9e03b5c2b08f19d7a82e3286256f4a8d4b54f22478308ce926bcfa7ece41848b4143e923dc705cf103970e414b3965b41d66a8e418a3b6fa32a99f3f97d7a46e0701de1e49cb29bef33f50d188031d902ce931b733d590139d5e1ad89af6f9799b7e2ae63d31f8725120b080608ec1b0aa9cfadf458601d034664e6129482b000ddf70eb03b101afdaf4ee4ff4c0f18d57189ba476d81ba1f213bdf9dc8cd9c954d20e12db2ae2aad590721c8c160d673f634b37394185aa3fdb914d08a2239ae6366d7459d9d477e675c8dc6cb12b1794e0fff8d8cfec7c3180852ea08c179a98d7e69ff30abcd097f5cd537746d156cbb13ca385757c67b200892010b854800075de8fd886834ee78dda7a4df5d3353037a99569023199b05787a3f118d6683344ea0b84fbcd640c26b757ac208b8b2e8dd59fa8d982bfca4f7610dc04f47fcffcb7a9cf898336cef88e5102483b90bc146a53d490a9107d4d30bf534e501b8a0112cda8651dc06b47a0b015a67342556434fd54cc096ff74e51a2145f765a4e539cac3cc1ddebbc35434e1d6744dbfd4c8b0b71b38c2c42201af2a62e087254a73c60ac6dce04cd78df9ce8677d3df1f7ade24dc97f4bad24813f2db760c4f39253143d7c1ade6aa7fbf8b3843eacb3e1f9f76d31bc611bea4ac0aeed9b015b8262d42c1b192304ddd1283733481d51e0009b91d330f85df19445cdfbfc82c8ab83406751ad959d4aae43ed1acffcfb1190940a3baee0cbb1f96c63cb7ad6183965c0df590e12fe11fdccd732ff9c5996396fc07e761f1b2adf4e241668702b2d7d4dae5859262b970dd73dcad9f684b053872f7af781a1279c14f14e854014c2ef435ee5465b4ddc30b009c6825ea43efca4cdc698134c39d921e6b61166a75a91fde01776a9e1ea9ec2f60f2f24bc99b437ee715b95b7c49d40a91fd2de7a5cbf5dd5580c8269f4d28f80985adcae14ce66471b995d67e018f645b3e2324f15e9e9e243b48e8d96e01fc566bfe8b3bc10588c13f092d475b8944ec0211fc019e5b2c813f22a09f88aafb243d5b79acf73e920ec1dcb716e4c1e64b3fd4632c5825f414e15aa995ce8ec49cef02ebd230c2469121684f671e83ce5170a6628444ba4eeb356bebd209d9c286e2530f8adf2513d336f78ee318e926de3e01a03c6963b7f663580615dc5d7a938f12107bd798e390ee41af7ecf0341e0eb40f7fb99e259426f373ec8e1fef2966f2c2f8e4035e6219768a2009e3f5700df8a6efc7f807635825f083f8b3a2b911a08669dd5902f0dd883e56c6f2661cc3c418d76bb728c7cd451986b1af95e1e1cad3efed072b464d70d27bedb7e7252e83b90e27ab8eeca718c4974e469dca40a45169a170d8219ab303ec7b2d48c960e8c8382909d202cb2de036825e64758f4308aefe5e82f10f50a4f1d0f87899c67fe2a1a0b77e76c8cc195ba5b929a92e534de49064e7c452848de885f39085acc344a3061b5827abeb9969f65bee5a46eb73bac2df4c2614afb025e58120030f9bd39cb686dfffbad8e6f3590590f9bc5604e9cf43601c3c7290279c1f42231360c742ad599585a00dbe7afa920838f86e88b21f219631c2ab164b75759258eb3c74d1e5db7b648e86259064d68c8b51ad60700cadff8055912d7cd3d253f32d7005ff61ecbec5050bc8839962e27ac040597882328f2721041a12f629ef83687bc1cfe4c8266d9eeb1516c0d4a521b6ef853420e69db4855687880923abcaa03318b91e533c4d08d183e9922d020c0e1eb28e562205979815aada5c94c70d214f46ef2111c7793a1ca489a328e75114ee03f5089c8c112870852656b797df0d7020d69a41fad6dde21ac9228b001d8d0186930ba5c0c5e53cf8f99842e17c58b069bf4d0a7e706e18e87396675b9c8d64ca87c0ed4f5e86dc580121cd3ecc67c1480a971cf4156005e481ce5e29e0f78d19886c74548069c6479209a8618b244b8d82671407619e0acb97c39335bfe63061096d1ad2060c0ec52ab90d395e172e6b8b830f0829f71b96863776f55e6a168cf3071fb518a72b4c3ae1a2ba27231b00c6d9731b0f5ce3e24c1dccae52290debdd36c97cb4547c93548f63931fd8f0a567eaf825cf77b460a854a73f931926c3510f293f49dc13766ce80ae0de83b43fc4ac45afe5f7485c28f173b09356aaed54e6cc9f300007ec8cf9b112aa5de8cb2e664925a6ffeb2d7e074ff00a7e3ea90cc0754706d5f89bcce078bea3f232562dc0bc18ba6161e67c400ef632c96f1bd06e6108082bd47026a3c46cae9239d300b908f16039eb69b399d88c12f715a47b06c2ac2a22a014d88b3e0dce9e100ca5e71f440668d0cdb0db61fc81dfa5d4a6e914c600d2041023bdc2490549cc58af9ca09c2fd99ed4dada81c5c1145f0b06a25cf39d209dd1006e430ae26a1290b6ad14a4c94c3e6eae4bac0c92550a25b23133023ae1dc5eb3b96a4e202dabd9a18c4316fd15a2c47fb972d05e8743707a6d86dd349a58057aa9922c7e0aa6d9559bfa8f7c2bf5d4df1ef5216ed1764a57fb35641a7b685637c9f718cefd0879d4faec520f8286a3c2da5e113cbc63ab9d61835dbac49362b7c7d900a4b6b0cdc6b65967ca0fabd08598d9b2c245a8f38fb583efc81fee4aef491a1452fa154f972a98b8cfd84bc11c11f841d3cbd3019b247b07e6c80b20dcbc72b27c97759749157f69985b82cc32d98616f1e7d5dc962690bc59a812e8f6e6beca3bd83bb56d8e234e5e11638511055c58e0e2ca937e4ae5d009404ec1c26ba34c89b69e9741b792bf631cab9957b5cbce093a06b5112a794db577c54ec5325881e6316dfe19ce706db4923f430ff34720ad6c2fd8fb891206cb4a3a3df5688ebd250138fcfab2dfdeb15a518de2de7161e2752c91032b1c32fe1c86787d1d1e380bcdedbaf864d7e079a77fbf80ce36e41c4af7ac5aa804198f2687a9409eba262c2ef7e77ee4752acfc96b0b045545f82b97833cce4cc5c43eef4f9acb8cb9f83f217865efe4b3e26fa202595b3a1e4e6da904905539295aa09a11b50ffed4e1ac1e6a90a3605f589ad97ad62cbe3434d372edfc7feeb2ef84fb285ba5db5eb2f65d40eddb4e646824b157194777760f28a6e83f615d52b0693ff26564689bd2ad1480bc1e79a2b01cc3ef0125e646f8648ac86cfe3584653fd818fb017f8a5f72bfc1519220d62c7fac462d624210ac4ab617c31c243c1dce0f225268f1d16f11bd45d7effcbe83d8927ff6a396436c8df3dcbfd36e2776c866aea3ce877b1e3a738ba8c85435152e9f9edc5ed8186d548b26fc9c040e14bec2abdfdb12e507ab6b0dfd046f45ad0ef29295ff8f8563156606fa01f74df5bf034427dd6e039cc180c30b503bd170d46137b0e3a0cdfcc1d87ce1045e4f61e234531819d8309ddf01a3a6325cd7f620d9f53d9c0cde89476a32b8167cc1bca39bbea4e17d9f33f9a96baa978f0403ba764c8959fb264412464a5dbbbf405ccb8aef1b434fc0bc265fe377b90f7d991884a96cc3a11efed66ba3c27c58b70736e57869b7b384133c2e5ed6f9ee5b0f1c4de7e57eceb163041ac6f8ba8fffd416e9a7d140f3730c5a6bf2df6eac3ad680c6663caad909d1f6429cd84ce7e41f6e687d003ee7330641dc054a88c10330a1ed8b5a445bd80984f3e1fb0dd232eba6514c1f0b353c734b45f14d3411f5ddcd983954127e77a10282e5000b4208feb425234541c750d5799c42dd2c5ac5c2f9407d2e3594117c3af1976db0cd47d509f3274b2707bca022f9868110e97d82920ea51231f8e2d30caaad37a3950f7ea27e3e111bc00c9fa541804734a08b969eb0aa8e046f700613e0b11903b5c63e71dff129d5e6375a33178430638d349c732145c6077843b23b8eb7ecc900769f73d4a67f7444b6f4eb935e7330f9c064830a605d198a0bfa364a6683233125c6cb37ec06b7758adbe745a08f9542a0c2e9a87e7d393030cc165d3f7a08d8230a1d3b120d849597c8bf2fcfbbf9ee35929141f2c519cb5107b98047c40b7b2f9e81c922f4bd5c8d52b2761fbd06f99380c5a76dc679c2c098f6f990ddbcf0af2fd6dd0391155333a539cfbde4733a5f4cf30a6e924e094944035df0b1440691074187a27ba59d49c9bba952bfb9e22e61c2bd357b9181928412d9a8521a697d33ca9343e582d06733e80e45489036603227fb0d696ee7c7e74580be71cc1a19769fc0711560ed10aac7c95fb6e0d72a88fdf79364c67a9cc99105a71ca8ac0cc4333838d4e5d66bb63c21890a3a541f922e3397a762c396e266473c7851a1079a5fba18e8af58bc72119f552f599e9be3d4ddab0763e033fb59330099db1ec78878628c0f46c12030a120adc1e3646cc744e0321e97505e72d4d515a33b33d4d6250b56a1954fcba935e1d5913d61b02d17eb69de7d0d87e6ca4dcdc5fdf114c301cc3bc571f7eeed67abc7c43172c254481d5b150e3bf7493f7cfa782c29bee225ded1dddcb28455a83ba5aad0a07a7adabb198345b77da10052b03611a2ce118ee3f8a67cc8422b3d1ba99ff20ce51044bca134260d83c0e98813569b0eff991140b1cfcf79a49d9a1b90b20b544bbff835ab61e45300c403eaeca1fc9616041bd64641153a40171e64c0395ef2356972fa36adb2c2444cb5fc8dd721b82443b138237951df0519a17213eee13aae811498bd903808814f49a85cabc8215c4545ec84215f6f53fcb16eaf705644dcf1bc5e55f7363f30258f9e96c8ccfa0f87c0e372354b4f29acf603fada9c919c6cd3a41fa37a51b6f605aa58d2649058368097d6201095759198efe7ee29b6ce303b996e31f6949f111f561ff4840afce93607c8d1f16c31d0544546980d4632d1dd79c90004f86eb23fb47e51216e46bdfe82ab29b2029b8ed5d8920b92e92946bfbf52e3b927216a15d369367b2fc3e838a713704d428a7cac8fe4d371565b965f92772a71736023c14b2ad452863cb544fda44c90d493a15a9d4c062b588d4967d3746113e1719ae2a25301a870eb8c5a998b5bd557e9a291279d39da0c596f62b0fbb50d14a1a9e9658c064012ac47976b1ca8f6abb0c257147a27cb667ebbc0ae14650b696ad5972321cb80d4e4ca66344ec924517f8317cb801eaf539f8524a4131dc90d8b37d815d8a224ff9adbe44f2756d3103c8eba20b0aa2d04644bb2ed37228f422f401b71f5c174df6bb1ef93064bb5d40a43738010edc0554840390da81f01b48db2da67cf2db5347301e2e754850540e541bb4a9be49a7bb0135ab13800cc1fb0a0e74ab9bbc9f15d9fa7f8e5a30a4aabb57b14db75d341d08152161ebc4aecccc7237ada3f6b3b9380f7f5dc1de9058869a6ddc8a1e351420197d91d505f3ffb57804d0cc8030abb197c9fcd9532d191182aafbacf348ac9e28a9bf62ec409639f08ae8e757b8aa4ca0c1a15328d61739ceac151d1cbd03551cebbfaf34b2e9f1c6c8a1ccc7bf7e73745297a75a313754016c25cd1b55803b9c95562e7dd89ffa7eacf29452aa3c6b56aa19635be0a44ebac5a9ea6869b2d5310bcba77846f55cb5f918ba183f4791e435cfeb60f9e57075b6ce932e0a94a2f5fe76ffff8143a972e9b140507e57aac05acb1b83cca19ac11a8d6dc289e925c0670832464035945a680db8c23d1f7373d4bb53e06c4059716589d0e463e92cffe1987a0764251591791d3bf124d4ad8782b771a62ee661c0b7e8e13273d7ca26c961224d8e52e3bcc9ff478429ffa01bc87f916edc8a910ab8fbb3db964f421d1fdd4718b4fcd60d764c8876b3a23e9cc43e3f90a71405278fc0de8806a52a32a2a2faa0c902f011530ea17619022e870a473f15c626966f71321257fd85b4ecb27454a0aec3f51a7dad42c8a2aac9c17d0c39ae75c3dbcc67705e8a5d4e3941b144320fef2cd4163bd4baf2ca6fad813bae38fbc7f8033e5dcd6179cfc0fa7d150c422ea46023a0ac78be982e897be135e3fafddb08c2b7bee9010488467f1d29dec6e9fb6998a9d2edecc649c6ea0a71a610639b19c674476d31d356cba053ba5deaf419759700c0d969af42fdc9bd3da3d38edd895492e5d5aac09cba68f0f5354011d1342c90139aa015ab40a14fbb79f2167656c6f57ff4fd44420cfc5b60c3532baf19101e1849b746f28e9168f175f8259e2b6b10f89be19cf26cc63a1948fa2832c5d5e40740d3450186c89d59ce4673c3a2d5a3b1d97e6842c9fe994b780b81b4a35310c912ef38718c6064cdf1d51777ea0449ef053ae1dea9299878ea716eb260c0531389db1f17a1c10b6ad27eb5e33578c1ae55841beada70c7cada99b58620fcbc88e67405a8bae827cad2e734d86b302fc31288fd2339f000504ae2a7d8f604cbc483cfa9dd291aafc786a50654522dcb548162f5305f74e12624aad85ab2e21e24637f87bafef36a602da1de7a312cac4a4e370162da18e0d817e55fd82cfd9fa18f348c6ca1c7b21dee6971ca70ab3d4a175af6485e6cd1bddc2e25e23e5c745dcefee8763993c5a0d175151623ef953d8429323716316d24bdcd6c560f547130977de37f45dbd58dfc865ec8325bc54efa2c2974220f43a84ab9d114b728fcba281933d0b5b739a71b7dab6934dcfe936babf2e585204d0204939e48f0dd3caab6748827f31458363c49c4cc836e37a042d34ccf7a3167945d22b623274c84ddfcc4ae5876ff057adb900d8fb5c4d743923eee8026eab6a598af546c8115fb7e2cc61c3e41854ad37007d0e0f582e6d149748f46d12c3a89fec071bc0df37742def134f02af63e03ee56b46764241f642279711799a53cb62f7856c376a937258f4d5565277dfe73667e52696e6a567c7cc54e31971733f252fa5186ca9405c8331534a63d7ad74f7404684cd39cdef7241015ab6455f276aaa8fba80b39fd4e799f81bc4cf4048a66ad8123aa5bb5280fbfe403bde1ded0cd0c80d8be100239ba026c80bd44f36834ba43af6816bd44f76815dda293e81ebd4277f412cda2d3688e46a25bb41acda1557406707cf34c6fb3a07d12ba2a064b1b0146d7800c64ab681ead44f3e814ba011cd7f4a4b5174af07755ee8aef1316a87c03f5d462bc08edaebde2b70e741a073d9f00e9e855172fc5ac782deec4aa580339bef97479c3e03647281663977aa7cfe0ba81dbb024f035445c5f731f360a27411358e2097e936f9e11985516799779387700a9fd271941b2f9b72941f2f437965b0d434bee567181973079ff4b5cde2cc1c70f82723a6191035d95f0e1d0d840f8ccf376111ded8d65dad3e6528f616420ad70ea138256742dbdadbb941be9a98e7d19415b3ad349767a8068f6d015935019ace9aaddaf88217031ea7a47a43db6a0001d764385c2f30432778c81bc009a5aeb4116cc0a4a47a09f46027d244b4f9b5087cfab6dbd36c3c0228d09f45bc86701561b588ed456a5a9b64f246073e9dc495e7874e701c9acbd5ff3b133a9dbb7ba0621d71adb60e683bddb20908139e60fb7db815aeb7af0b6ec193097fe591b826ae58f5a0bfc6e5f71a2187f713703ea61265486885330145d73e21df7f2397cc45a830cb3bea5e8d9c5a83d7ea61a3f28013cebe608194cd9938e2866e5092c38b9446ed181f2123f70a212f8fa24e4290c335c7c28badf94bbe5d8229af740f9db35cf1bc38aaf50bd577d06a4b78c4d4a3efadeb0e89a61dae3b5aa1f04265c5f42c87418d80bda8d2d573a8c60e13bc7654cbde02f33594a05a186ef7e23f8e1373204819c0c050240011514af169130a993c5b472bdddb575fe17b75b3f56a9a0a843120d65c8339969acc7b624675d04ff80ba60889f8335daf33ed990194e33d70a7b7d6ab59fd67cfc20624e4b1e11b176cdd19956ceab44c40611134f5d18b86bfc158cdd6393fc12149941a705877977c6adc00c6f0008b5e702d4712305a55ae9f4eb9978ef8f906d099dea41584c7abb80423a3e44051123f27dbf300fad398db5cb3c30b0957be6f17afb57468e5aa1b1bc5126401545ad739d11a928d98fa2bf028a2582901a5e9997ce3d8ecdca9864a8f0416533d93b724c978531ea1b48a34bbb58dd0fe822f51457ba8df458824c4186c0b4ab0180aec670191fb107da121b6726f839748f15b47f05d69c87c3c1a04bbf2bf1420301e619fa08d22095078a13979b82e10512e16b62e3cc074f984e517d525f71565f77d75d77957f73d57f7e54de7295deda14befe569ef226bfe6ae1eed5c3aed567ee556bfe9507ceb56bcbb513cea59bdea953ecab5fedabdf4dba92bc0bc38a4f9d5d23c6d81c0838334588aac00c4bfa0fee3a88fec6f76e1f5d17275b451f273dd1e77bd9abc94c0e54c89ed5609b76324340c029e7e1200aa577626942085a2ae34940a0c72190947ea5a53633050893219c2a7911e5099f14a97a8be5b18431ca9e5e753cd263e242240e3ea5a2f4d187c99f0d7ecdc0c4de41b3691cd9ce6de0c0969672aa7cfa313382101d14ee8c79bc486cc21023a8879505f5012dea60345742e1f2eb1bb3bf8e0a653509b205fc1846d7090a167ac07cdbaa8b7087a633ae924326e47182e885f4721c834940188259602004418539c3063155b9b99274737b3a0452a34f7c223606f24b36dddd6f6de5b4a29a54c49ca7e05e204a10462122afb277b99f971c30a50a0880ce9a1c9583f562da594d215504e36b55fbfbe083e04f0b4e2285e9c1055ea92b0a79452aa67d450fd01d50f701bbb69142faf1dda328a9720ee8f9704ca569ed1d5feffffffe65cbfbe8d21cb61946fc070b842c081ab905a5930a494b4e0020a27fc0e2c4c51e2d67b2d0a76ad1ad75a6badd55a1ffe1384871ebb526bb3cedf64d054538508d2d581ed8c3b6a152d967aadb556b101a9eac076c61d950714848c2c1521c708f57a45a1d61a63d75ae92af44c34d7114ff060a8636badb5da3afaa8b3c38a18c4ceb6b422fea03a90a2861ff231e941854908ee922fff1ac98916f5295090628a2e2b2c1143ab0619ed75f018dc064cbc0eba999d71c7ceb502c50895b1994b91ec96b20dc272adb55c52c85ae02d5768247cb3b5a328668f40acc48083d1a977b3239d9d71c7cecd9b0a3498d0e449151713a91598a882c892514a29a53a356fde9873ad593a163760385c21e0a04eec8d5c8368d1b96ab5396736bb62ce395bfb0327d281ed8c3b766eceb5e65168cc993aa9b9d68dbb01c3e10a01874645b684bdb1e5a56d2e2138cde6cfdae4a60ae69cbd9b73ad55df6aabad59cdb26cebb5f95a6b73beb6de8cd423d79cb3b537b6c054d7076559b6d9e64c85cdb9663973f633286cb0396719a6d4599073ce39b3190a2a152c695d4baa9e675c1b5367de1977e019d7566c1d4b13402ef0e5c70b5dac485549e209912529913ec974db01080cd0008624529e18010315259985192a495030440e2c60214bcdfe24220258f901849522eeeea98b820d1c0910620e2e9228533cd100b06594298e4c214406193d48d084094998d8a024872106b041131f7678c26564062498800b54f8c06498c288150e36a8600901134a2c6199c0b2d20b09acb51665420ff4474acaea060a50f902e4c7a502f2d2b35f77af614a02a861d61471a4c72b75420d41182162c4088e4811c5061da4f41cb96148ed000c4c80448812c4e00718e0fcdbb0bfd65aab1217902488e84102c48f1a9efe8d196cd685b10a67e9ea0d180e5708382ab6f846102da8eb8a3f707f71adb58a60eb08fb58eb101b81ceb467e05b31ae76c3d3daaa63250827a3a825f58287900a96248090dc20d5254925c25a6b51995f31028b0b2cc6b2a57465ff7e5dc342dbb68ce2c40f5bb4651427acdc2a291b842051032127e8e004893d41ca7e5ab198fdbffb087181e825c609715d1d36694b2944008191c870c5952ca28fea0911ac64134768b8d60a6c6fc070b842c0612d6dc147151a70516107198c78c10c3324d1f3822a46500494180a3384100313a04081a58519a278198678132fc14e902944f0a58a164e107244c90c47940052c28224528861ded0590981177a438735ee7efdabe94f2214aac341e93a008c2503177040410d8ce0b8082a125ae49fca92a0ff2f22838afdbeff475b4af1018847eb4790218e8c5b461360982826de7651b77299a1d34c396023e4a8a3560dac8ebd5aa6b333eed8b9f71ea1aa4d69c8d6be0b0e80811455502f9800890f1c6a64d3140b9bd24b2d10eae4662e531dd8ceb863e75e2a80b8c73c25d87085104dacc072c30c5ee881e43ab09d71c78e451233451873c046c891ad0592e56c5950c3040f2057786090430a56e0258b0b3a97fe6836d3d91977ecdc23ff45f60fa1c1528a2ffeffff57c1cf0bfbffe9df2d4cbc2cc2980336428e4c834e0c0c50a4b29d51f3961846d731a536671af29d21c2ad5b4e90c957841cb01172d4cda763dddc23c60a6c6fc070b842c0415ba0f41b7b002275020f33e08043bf854d61386312a5943e01d352e0c00a55fcc012450d449460e1892956a6e41bd76e81a92e6b575881b5d75eab63ba392b4175603be38e1dd50dae18f1716408d51301e21ef3f068e20409503218020926403e0545904db3b59807ce75603be38e9d6b75ae942956a33c666b75fb410db521216bc8eda191ca1a1afe32b7e10f6ffa8536fcdd4d3fbce1aaeda7f9f0936bcce55050db8674a1310c8d20ccbd515adfa7bd5866dac6853c58b5323f5c6bd86bd5734e6de36bad6006a6b6d44d4fadde340ddc74a6b5cc35eddae767b56b3aaaf141e168fbfc7fd2556de335f0a3ad60f810d8f6c43abc59c29bc58aedfaee096a22aed285a2962676d95ad49235a69ea09434aad6c409d6d10a6739495923c310595d6a4bca231343753aa42a16f2b56cf9413f7e0c08c61be9b0ab9169a95773ce29a7cf39e9ea8a578b88ae3c07a9e869d1b22b15694a390b649c165a93d3e79c1fdd33acae24bf2f7eb219276b4d4e9f737a74f3be993fccdae1cc6a463593daaf49454a2d646232b1bf9bf47d32df37e5fb5c7ffa5e1fec7bfde87331e62fd3364dd33cbacdb98221fee9553ba461b988fde9358baf53a578bc92cc179399a150b6a6c36d7f20ca6dfeb9abb5ed627c47f7fb62dfe8035133367bfaf58ca789b4c6e58856305e305e1c97a38373ed1f514a29a59452fd413a3c18476c6fb4cdef3749b55fcb9c8eecd730abfdba7462016991f9e2a70765626e2a4226b66f28d336998cbb3d3aaab2e11f08f22ddd7492f6eb7a5d178872d37f5f605491345e7bdf1703fa6230aa8444a1907e0da38aac215be8d7f30bb5f860886e33d2e26284218e40172325b5f6e75c9ed80aeb69e767f7e8eb8921816e4fcb7e1ad1ca05156ea269edd71d6bbf86f94a9f7c1723cf7eed89a9fd7ad5d1a8b46ef3269d8bd14d388acc971994db58fd1a86f83731fa618815c83831a08bf14f57ba5026364e2181ba4dd52fca345bc07160c04f5ca29389c100f2d3eb1097e3694db429a0f3b468a4455cce28e531e8a8a7270c979b1e06909b3e2669c0c04174a18b71bf0e6188fb350dca6dc22fb67fa4c245ccc517b7097560fdfa8bc91a727feb4faf4317aefd2e5efb3f289489859b4cec6fb2fe18d59dc6c9e94fabe57068ead0d793b5d6a214b5a9de5a1e1c917d53d2a054e38be534491a98ca1a78ff864fd3963079d84cc388165faeb55fe70797c7be3e74f3de7b65cf7f11962dc2622a7910ce4da99e2116b25d870dd8fea573bd84126dea22443021794f500444179a4211cc26ec5ab4c60701d69402bf333065f54f8a6e9ba2d66072a6f4bf3deac4db9580ddb7471792dab5dc2fb5f3406a4d5db2556b9a4b829b948ecad7e2279fda7bba3de5cf1d6aaeed9afe95ce432f68fbefb9ed77b1b8a95ed8d329ddeb0d853cf68dedf061af3dff61137c5811dd7dddd7c694d4faca24c8eb9d964e2745198ee8b8aefddf0b4782ea4a3d70d3c426afd55f7fb8ed5927ccc66e9aeed2c9f86651cc58816c794114414d88301c8cef83b5f9cad82bc2dd7c6acdb26c73b5b55ee101a01b8a28d1436cf9f027188292a3cedf988264de5463caf70629d5d21cb011f257edb52cead5c1445e4efcf881092aaeb8410c38d4c78a0a4ee868a11783630ed808395a90e90d180e570838aabd925d7bad2542295d41b539009f5c80491660ea283d5244d575dc340ac08a0a56ec6ccb283d3e28ef8a17964029f1a307289c30810952168a13c921242587fd1aa6a44d336a887871235aceee3dd203bdd4de7bf1c53d7a20b90e6c67dcb1135302297846bed94d3151832c2770614a0f4794a0051e0f4b8c360cf143882c4e8a7810264898f4885e199710c4305941162d0893274ca8b04892c5ca9f262e3ca1431439f8893d0f351d6c19db750b528bd4a269915adc967f19aa18ac2f869218ad19166ba635e3c4b58c1c8305fa78332cbf3dba1f9a9f6da3f1d91ef3ffffff1feaa03450368d1337652390070cb25d97c0d4761a289e169a189a19d876d72dbe99d69ffcb5ddb55d7ba2cf88db7de667bb93c019d69f9ca635f3e00ccb4d4e6a919c907c3c062b46cb6daaf6d1072a7153a66da3111882ac910e41d6766deddc3199b6c5c464c9c5c80db24025a04fad3506e8b31d07e54fe278ef43f7313113ccc06b4f6ba34f7ada8331307aeea789c1da3ec39234c62e94a1628db40c95f63254db75cc178240b5757c244cd7588fbc2f7c708667fb4c6a3ba9e5fed2563ab5bfbfbfbfffffffbfbfd3af73d31300b565004aa03ce8b53629c0292beafc09e54fadf5baf60421346d0fde0a08e0213a89534456db3dc4b82b4dcdb72d35cb2aa5f4e5f97850bc1fa0aeda5aaf76fd0ab9acb512637cef9ddfcc39635a2de672aa9638dc6d2e99fa7e3e96582ddbb2ac3ef17c240dcf5e19960c36a50b4362e8e5362250c8153ac26d421d54e5daf3a1157ffd7a3c9fe7d138577b3e1e14bfb9e0ec3c1f4dcb3adb2c3529e5f7da86532925d614dbf0cb5920e35c30247a583098bd44d7765db32d934147b54675cdb6fd7ab2564047ef672f8c75e6723009337b8544cf27c827ebab7a6dcf87db52fb0e29cf67bb9e3ae46048f40989d94bcc32def8c3b6de8f06677e76db3af3ba2d746148dc1e12ddf4f337ddcf9f5c749e1d76e2ccaabd38675a88b4ba0020f2838354558282363705717969dd8895743388cb4b7b0505e1ad8391a6b05d871d6c0f9ab64a50505050a84b15b70a9a02172444178a5e415c5eda2be887cb9c73ce39bb4dc2e03937fcc264d21e680f5eb8e339e79c524e39ff73a8b5eeeaa4b6f176da39e79c737239566bb5de69ed94736a769bda5a2e675eedded037b7a6fd66a77477b342183bf745558d79bad4f65a5935bbaeb0f6a38940d7c7ebbe41b0974a74b5b46cfc898ef8c937fe7c2cb917f65af9cdfd115bdab5f256cabdd6321e29a5b4524a2ba5bddc7fd39b7412b45a4a29a595525a295fea2fb25d077153ae60f8b04f7d4cb5ba2c9aa22c2c335bd150146ef21b21d89f3c889b5c4b6dd7521a8fc4c9eefecfc726816e9e1b9852faddeb7b5fb4322252fd6f147facabdfef9910c6b57daa69b5faabb3dac6dbebcab81c911149c3f5fd442ad11191d8852296c8c76d429191ed2c25a296db38719b50871159a386d7a7e46d74ee7a6928ecc016fd581f80386e0d5cd7ce00d5584b4dd357db29ddd5365ed3c0bdd3832f941a08565f5dbfab31c6f8bab0952ebcaeade9194d4a1a1a186ad25dd706f5a43acbfa7e95e437d0e48bd0836dd79a57acf157ffcb346d3f7c577f724ae927adb5b5d66fde7bafe572ecd5f2c39febb75ac318576d5a7befbd2a49c3b586b29fe643e3b9aa6b2fbe2a59435efc9526d8a3e93935ab7539733957632e673d338cf5dc92359e92cb097591345cdfecbb47ee8a0811ca6dc25097ed23156e93b9cd17b709b1761dea226bc8abf2269d2633d65aa6352e2793126bf9e9b8ae588e0443104ccd0219e7c1abfa93db4f6f489cfcaab658e6da1aea3f89833fbbe7579f7456db6c2ba0b31ff42f57f53c4a65b5d7d085ef92a890eb6f5e7b3bfcd8760df3b150ef5084aad9a108150b692ae63a8b5dd706ae6b63795dae2d03404b983c66a984c9c3430778652ddd6d38bd03ef900ee99edd9c3adc74f87b4e50eb3e165afbea9e5c0e3759843eb959749ce67feb6b9f6f1166d18936cd769e66b16991d672c7a200e1ec64f74929ea3c8037074a690a29093bba5d80ea595bfdd94db99c4c4f0e848c757ef162d72bdf43d68aab2f8f1d9b5a2db7cdb2a67346406e8cbfbb6d60b3f63d08ceba7f99fcca0038baa2af9aaaa245599f70aae68ad592b1510675104a971d4725928c77599d28a4a90ef18de58021a6f801a003c0b03380340d40e20dda587dd00090016058b35f7fa3d32d000cbb520d302c690580a1fee055c3aae2df4c58970030ec1000b26680a1690020ea6f5c657d6a6480618de90486266d0243ad2ae90f0cb5060100f2fcd7d080618dc905189ab40760a83bb0230c8871d7954a5a977e6abe90f26c0d87a6605a68d734888c1e69d7548592764d81c80594629447d6f0b4b362321ae672393232119051785fbd318af2a401c21fbd51c96994648b0fe6e3400928f0ded0487f2310e6e1509ebf9938fffa93160ae9a9455aab2151687ff0371463493f587db0fa60a5f337f4f527d718775d89be46fa9223eb6f6a2ac54ab152ac142bc54ab1769db02a4e581527ac8a1356c5a9fa1bebaebfb128154a8571d7954a2e1fe7f91b7b6b6a4c26ad4ba5aeb3230fc65d572a696d32edf07f76cd36a29b5ab4c27bd2d77598b352dbbda6ec1ef7fc2ad6d1298afa4c94cff6eaf313357568c7eda22f848de8c24ef485c22e048261a6adb6e9c981906d1fd6da67758680ed3c9467d77babad92f2e02cb935254c1eeff7f403c556344d8a7cce395feeaf7f4a5f52babb4b97524a29a594537b2f68f20516d8cbf5a76c1bbf55b33377a5e8f1dd97e35022150a8b50a208b5bdf5695af465bafe477d67dff83f2d9f39527d231fa9edffca59e65e0c8f5996516ddbb612de3a0d6b8dcbc17ff5e307f20470dc8bff402fbef8f86edbe542a110c7f1c456319cb97f8cefbd57a4923446a82ca6f1b84d285265b1ec8b0f914ad6909c37e944a2f9ba7a7ed286f3c45612732efc9beb9048da0fbdebde23804437b9eeecbe5f0fd557bc3e5a775b5ecc4d5c122f765b14f46259ccc589b81c09f66495944eea29a5c8f6645a0b6df7d3b607f362a207ebc01083b0fbe57d5b7f23bff5d91ea546a83fb90e7deec5fee47a4342fc9b4de3c942413b019ee1adc1422fef8b9f5c87b81c6b455c0ebe5acafd747cd008e57d7193b7240dd7312a5df8a217dbaeffe536e16dbde83657bb5af8529a8542f8e7f2f8183ab5fd76e9aa9e9bab0bf1cf768d7f640d377110780d04b526ba4c9bbb5aea65d5a638841d118a83918d75d811d90ec32aa20b4b3facedbaf4837f240dfc03c3aa3a859368f2454800d476bc2795a1fa938f604aa498da92a1fa1bd007e34d65a86658d4570efafccd7d77eaef5abebb479f8b98bbf8e2343c7ff2148d3bd08cf6ffff259006f5a76d892ea459f27904b24025726eadd64b63be1e997146899b8260a4efe5f226dd1ed1b4fe46e641992924506badadd9bdf7cae9734e128ce41e43899f3cad69a3518cd6c8fb62b05a68d7f36b1183315ee59c695996c53c0af4c1937a92133f39a9351313a3e59cb39c13935e241749fcbef00495dca8040d1a0a6ac90cd5000014f31600001810080884625998a63918d9f414000f5f9e4264623c90c7c2611046512004310882300c630801c018621462caa93a0200f613da405181cd13924b935413acc054e8b2dbb63e92526ea7453c54dcd69d7149314e63404bfa2bd6698e9ccc299c91d37bbe84ae11591f7b428bb42092bda417db9fe11e05cd80e5cd0468497d94c95174af2f13f748a3eaee38283faead4ab71304c4e47e970fbce43239d336a3e2851614862fea05b6d3496f2672b0fc99bbc37c506b5b78669d503138d6c7425b0f3d20c33246b57f5c44d2e8bbb2b0467a5e9d82c2317a81bb3f6f454bdc4b0f5f83244b2fc9dc15fdf21a1c7201333a7c01f35b0d0691cb371dcb76116260ad0671a23db25c15d6d8734e998e93421f1bbead435c641e4a42411ee84714775c2236d4b3860107220e81ca0a6c92bd6ad0f0319dc7ed3dd897692ce385237cc8959403af16c87127b625ce89e4fee03bbfbeed4b495fcf9acf6f6bcb8cec0ec4963a97ef02f54a06150766a4e868ccb15a8364ce9da5b011d61722e926293e4f6f1cb7316898caeb8ec92c471c9590d8ee8c6db4336f6175b26a59c07534b6c5ceb40432cc6463366685c77db0a3aefcd888cd2f4aa25bf604c0968d20bc7b34dca3da4df411395874a668803a5b6aa267436f1762c7503a2237d9ab4d863cc07ab089a3b1a0dfc3bc0dd15b1f6eb5701788e8adf31dc6010df565d50be63a1e6c03a163556f9db79ab386af5619d15b53f7feac4662776a0f93c2cdf9a770bd8572d833b3011f54813c8cb8e68b165c79657498a744d822748ad14402008a2fa1ae6eba307887d38be8edc00428309ef421d64e81f345c0e129a17b53c37ab435fab8616876bd2bc05ae3df104da8d2eb2dfca4b100f279fb966074f8af098b7550043e56929de55fd4c9a555f4d6a5b072b1474b290d1c167c274528805b0d733f0f052c7a8b6f21b1dca03f32bc5a730711f3c183fcc9ccc1f15353a5dd67ee10d8baebf1300b8bde2c580714afed3c41db046ede2e8a7a1f8198c5081cc103b6de21c0740d48dea40df315500e036d427783532c7abb145bef8e20c2eb6ad6e91202ad06f4f00e1be0ae051c76a4562a8abd8d3c6bf4d292380337dcfb4ef82caf17a032cfee9edc54e799b212bf5f1f28a1b08558f4469e97d4ad22ee58c5eff65c0045f737bbda7d023ad66f70b8c332d56f229bcbd4ee0b081e7d0cdb2ff8e39c86373752200540b170aec218f19156f934b09cb635fdc6173ea87c272b642b7e08cfd58c45ed8b506b25bf98f6c998dfd6fe42bd45119edac7001ce0a90e9bf51477bf03174c46e8369c493227ee929e4ab2d29e33ff746a5426b346c8bf9288a36640dd97fcd05b45801106d5be03778d27349d4fd53d7a444d513256dad7737af4920715fb702c01aeab8571151ee1b05d4cdfdbb96130a2fdd2df54ec63fa22db341f01f0bc4d8eda1e6c71f476ae604f9968ecdead034053f3460f2ca23c5ae549c23225bb333dc2099b812453723e4b502f5d16fe53b3e7604f5433e5e3491ee893cb3ad963a42520df52856cc6cbb6b3f31dcc4c08b1f593bf199977666c4bca034b85e47b872b0f3dd9309edc1b3a650f080b5739120899aa53b7331c770ef90afedb7ad66dfeaab4d9a40de8fa1cefa80e8dccf0a99518a819bb4f20ee8a63930f4a442008dc4e2ffc985c740ff2e2b58e0c38a9185be87149d1c4fb99ff1d74200e16195078e7821eb0e37be8bec5b8ea52865a0573daa477a64ee4e35a0d0f725d4e0b3cf0648dd265840ad85ba4f6824b8d4ee40b52643d0e9d5b1626f59ce720b8915b1ad8947c36b9c7b4faaadf66ced17cded0671a609b36a4730d1a542ee683cef49e2adf4287636955d5aaf6323649f9c88e8f677bc2091430d57d37c95fafc0a5a8636b768b34ee3e674b1ec6fbd9a54ab92cdb954b7e369b0393678440286d0143195745917c0306b48e3e07bbe22ae59514d5ac38c23bf31969f41a530c863265ef1896d7a66c44c0a702550e886e330a04f7716a333d425286e09c94ab460f2210f701505aea123e403d5d7f55aabbaee031f91ebe429d61d0cf4ecb68ef64ebdcc5fd0786754fe16f6112769ba2b849b60c9d0bd1b3140c683e17c7ef9aa8acd533c48995597ab640d3a334c6eaa6734abe0eba5f850c9ecb7a259f467b3d736e3ee6ff8e17eeffef3861bc5443ceff6ef84ade6d2395d58c5c5dac1f6a505071959c0d6baf10cf8e8910c2224e7a38cbabe87567bd975c30ef29a7e0ff1bd5589a79daae61f1c1d45025a5b66bc556d43e097cf1d443968a2f65536a30309d164088bf0911806a8dfec0a763f22de72b99bf7ec9cbe005ad411be154063606dd0c52cb5e9bda7213c0259b6a39d6ff95bc246ace5ad13b088ae14a2438b8b433a572e454beed0eb154759db54dc95ad7a8973b0f5afcf660c72a5ebcd560f7994f38a527e08f0d10193d5f183011e19bceb7b9969160c54c51e464a8fa3587009536554934ec1339d92251c1ea22d0e91df10352041418d9e09dcc403ecb5a5659bceac3e45a1b8272d715ecf0646e1bddc5cd7073f1728bd2521e5363a474a4a2176135fc5e1d80c1e4b02d6033ea497ff5957c4ab7f49ec7d4bcdb46859012554e11626e6bea970f56521310fd11e862c760f1c9c5b26def038668b7747ed59316b0644eafa4bc518739f0ab5943819cce2c8074484d278bb5c317bb6aa317b4def9ed04d66ae1a7e4f79af1042a24b3d4f634ad114c37fa44557c97d7e9b86c3aeb453f87427de7cfa30cbdeb24513632b5200bec1e7006f41f02b704c82199286ec832b9951da6cc5bbf0281fbe6cbd096262f31b819a00b2b3726cbcf6b6f81627c031900d109cda80d8cfaa98a5b90db80aa8da5ab1fb7ca6db3dbb98da12158eba88f96e43348ace42cc8c71a21bd4940761d5c51ab9e4d1b4a59184512532deca5f549925f0b3a60339397bc3d7c187fb65d54456fb2c24612bf2c47dd06eceb089618497d94ca5ffe10da72a80cf30b6f06f347ffac9098fb438cc6f45e6bf38ea41846bc646b7230aa9c9d3f498eb4abd9351ae7299cab5565f2ce96c28e414aa9588f90e4c735d03998f0e5a91e2598b54b60867a5d627b1d35c5910516fce78e3cca045349a7b0db9880e7c35d834bcc5d606f81af88d331cfaac86285ee635b826176f61e81d051c21881966731782570577e994bdf7bb4549a5d0e12fc21955a16b15f2e871902055296366194dc3f828ca02c39dd8cf499332b899f2973cc9615688521ecfc86e46fc6bd680c52bc4888fce9b4291c835b32d58aec0bdf7b5582812399ca51279f1efdd687c431c61c3da0c341e88d8172cf9edc680fb20440ba9e50a301c95edae5c4ec4a60a6641091b368084215ec78b6c800fc77a4526439141f8ef00336ffbf85169ba8a32774c6bdaea24bbd387ef8b61a2c65550c4b4040c8c83fe587df06f1c583b330edb1f380272523344495f64abcb85084bf9b4422de4e107ce8f987fff3fe4d3f2e2b37421dd1d9cb8ef3328fc6a66148d628e61c6a9668c7ed05c45ad649dca2048fbd92a3fd1d76a35aaad15f7ee7dac23197ea85a5a2aa1ab81fdf1a4e0b7c1602584d466201f3a692870af71c181708c7c928178b85e5d630a3b898866e966c150aa490ab10124857ea5d1adeecea024d4dc01204ad4223d34600f7f38392f55e61f84f1840483c2ca0abf3dea9f6f0168e50013267f765560650c13173066459e289b6d87b5595d19f5f5d58699fb35c1fe803567a2e09ab229035badb847dc551734a0ba0b98a57fa98a23e3f5616af0da49441067551da8b40f2d6407a1ec2f1de2b209f285332186f772003bbf670cc40b186ec45735099d6fb54c89444c79763794dfcc6750b1c3117f858b7bc0c0354afee150c3b979ed8600b41137cfafe3fd4d03c1bb29b54b7c3a84a348da4586a27179cc7a3f2b1ececc114b514b5b7b645fc15c2bf7946d9359fa46f7f94bcc21b3544d642696afa4662aa690fc9a696ba5ae2f4095b7a0fca84324a362c5c485e61e6a29b0aec63b78a9a17c1843326d467c4a78eb99787bbe3a64bca57916a2e5702c3a0bf1579ca4d3539d4d480fbfc9a4b2bcb1724c0bcfbd702f8f93c4a4e3df3f1d5dd95244091b930caaa8f7f0439e18d9d5d93d42ce72b38007b7136a133533f20ea24e0f3fbeb8d8bc3fc01417603893471b115f000a8b689b1963fdd5074851af213033d0fea4d41abf7a5e52d055173ed12137d129e3e8e9805010599bc8606731039e0c5dcfa26571b213c4d30248f34d4979f4942fb9a57467c496fe38b26ab518145aaeff3306be768ea65503273fc704ec009299a59a87e07ebecafedaf04212f7988af897be3eee7140aa7f69b67f70b2666c8a0a0157aacca9d7082e54b676dc1890f58346231aae4202e5d7a1f596831e914335063acfbadbf7f8cef4e5b359f637723d6b548d9fef20fa7c504ec54e8b45750333c46664a761d129ed87a43effd8448bce3d03c49e48aad7a3df2d10f5cc996f6042c589f50453c73e1d872daf5a88b035cdf5a5660bd16f9648902cdca0889d8bb12eac79dfad08dbb8799709229a6174bb2576a2d385a250253840346dde0574066dcfb8b92b5ce53c8290c007d9d846ad066ff44f1dc9e6071ac896ece52a1dd336c5462799f4558d9c0c26208ab54e2dc46f6d4ae4c7ae47de0a747afe171e949a167b787a229d153118b124cb9164212e4b4383c0803b151b779f99190208c848f16e2aa625df08fd992448627da98d5aea8b4c1be87c5332edde09100ba540384afd4f1ace5d0e54a0bcc86752160c0a6223477b67c6d948012e621ec71d2e6debe762a27e9cb7b85773ebfd90006d5e3ac343adb1b44323562d93f97fce58bb94f1047beaec3688759a5bd0c8b23f14583556e90493a398b5f2c64926cad1e2cc3332c40ce55bf675cc195d7b2240bef1a468672f82bf6381d7c9455d055ca0fecb2935a6d81e09b34f0c531422a5a2a5cca8aecb2489f376dbfd4f6ac007e6322915aaf0bc57b00216894c02182049b9635af4de1102b204a615c031695227824a5034a1a4857b6eca0d2dbe998a327fde35496e6b42b009eaf3336603484cf0f18d68d5a2da7f7d1b418e10db60b957b38522d7f912600a6c397774da25784ff93246f74cf2db8e818cea365d3d38dd04699fe8597efde2d0b193f0a1c66b6d3a46ed8c4e557ac446acc8a2add9e7032f861241dc118f0c7b9b0be65bd928309f009b821a20644ecdd8c283da4d421f90786f8714646cb5d2594c7b37224151c221bf52cfac5df10612e9242394987b992888ae1051afdeae099d6a80210ab0fddf8ca51018033a9413e483824494a8b73730abf3ddfcb491077244e79c79814c1ec1040bb39681eff9758c4178b8e027cd9ed08bbfe613fd3fca690f31929e967a1028a586062a9e04e956a74c98e60a9ae1115855a5b68a970a9dc76a4a9a6258caa2eff6553222e669db9f9df0fb76cc78a8636ee16e025e66cee2af48968f6768620ffe404cb7d36199559ceb77ce990a27902a00273d0aa4796ecc0d0d9e4c3d9f12619f0770d7205e584941cfa833402dad1bca8ba0a4e7282c1e61f25561dc22721f2fb804348dac982088027b8f23070749176e4bc8287ebff4e36483ba1c47d86dc7572cf2e42debae0d2baacb79ec1ad13d04259535148784a859159a4cd36b8336e015f2bf100b858a9af65f0f65691add58c3de392faf032a5c67f79c4d9e4167d6557972942178d70befcf975258585c2e9674f3ee9078fbcc0bb9f179f6726f3bd160463eaadf85400d4976279325ac48da1f03c8af4c6917974e569c26740a4cfa63b10996df3a5b6926274f12912d4bd4c3609ce6fd48933da1e800ede7319879214717c3b2efbf4750979d3e6d6c5c88f20d6921d886c64cd52daf95edc8ab09f50fd6c15ca9a527a4bfaa4c9b8f151b683a286e4e0527dd2321114283589c252488b61d0701a312dd50c0faa78c284aac041dbd89bf7f885ed0d355d1c67b14b697ba93bf43676487cd2201b668360bfe6d1c930410cd3b2847294cef5de9672749256bba1f53163f2338c532f21ba05a01ba8cafe44b37cf62c3c5c5a4eb780ef470b50771b1b2b9753ed16566a99156b857d2d119f0bc78f76e472f21d523cbb0d737a08863c7aff89eae81759c6c9558173cb57cd23195bd9e9c8b39425b2469a362c1cc5061140b72129e4d455589054c585fb95bbe56d032ea9cd45bf8f9c42d653527c5bcf1f1ec467974100361ad94d0865cb53038e589f746e9461fec2e99e00f70e3ec20d558fbc579f09251d491792c0652948b27d11d7ccc87193ddc9281132af9c39d45cb76bbc344bcfef3db2de0ef825554ea749f455c708901a721b8ccec8a3b716460755e7dca0ac6df2a5fe496a2a89cc1b24841ca91b06bbbc4be030483b6840a02d59cf0d7a789fd0d90e2299a54150930bcb8d8c1de800455f1dd3243603db7185e030483b689cfe66e196f4ae41833ed7c6184343421a248c60e0692a9093c7f122817a6691e192691024335f2fb321fb8be075ee464035cd5d09200de2d4b25025ab1c60a942c72ce624fed04c106914b16f48649bc1b9cd77951a2bcf81d80a57facfbc5e90c6e27b3fc7e22239e008673ad2436e6f9af7681d5fafb7e9e359dcb02e14d4d77ee1656ec9f23a3d887dc218f179a9cbf0466f54c11cb851119ce6fa2d32f3280be00e229fa21a04c43b13461ddc75817a23c6168cf7ab6cb4302d7a081c2240ba4d1dcb46cd70a1d5c206cb19fa66306287b0311c017c5765a3573a80b00f57aa4fe16eac2d0ebe4fb5d3b6fd43e7e7b47652c5c8763c105c87a573b82f13b9702605100733b820edc236ce22216846e8253d6ed2a89bf0e73655a9a6cd9ca15307a6e67939382ba84ab5207414060680e291066f202326b2117e32d9d2e33f59b2376bd23f217c53c6016c07b41c2adc5a8fc69e3ae841618c9225f406e0976f01d1a253eacc69beb1d378f41781389ee8e4eb59023a7249fbfb088043fdacbcd46e5c811609f7dac30a2b190ee300846f39e10fa5fdf166891fe0dd5e23d5c9c52b4f583c79d353552e8298b7181a326cd9c94a99720592eb65ab8995b0b4b7dbf19f7300a6a8bb6072f3062e63099ac58b5e656ab0968aa65eb685d524cc2d8bec4963229d52ff7ae8c2bee1582e29d6e063aa63eef732b0ab4d023a6e6cc2336f30593d0f163d080e7080bdabb246ab15eb8ff181bb8f4b09947d97b2b2bd3b0db3460c81873aeacac02731cdb09722e98804258a4f799f289a02dab2d48bbee759665158a0d94f0c1da5413965befcb3fd66a060f097120ae71756ed46e9008907f12a0c5c49a9af84c71413a69bdc333c5aa3d256496cff36a24220223907bdc4447cb4c319a6ab18075610b59921fbddb6af1df430e472df7187300af2402ca3aec26f9f4571cbe461ae17c6f3a288214ec53bc86cd4f6dc5773455e428f0616e36139351dd443322cc9c3618ff667808359aa35d391c4a13994f25d4543d9d09da5acf9ca750b896ae588923e430d4345eed0b05b7fb1edb645ec58adacf3e57d073478eeb8fa3306899f321b1ca32dac822ccdecfdc0123c39c048e1b594385c70c22b73624f658bcfa56c1ac8739d904a2e3390364c7345edbe4a0ca5e57a9e86d5a7726d504e8343dd3e886e8d40a48424259ec4ab3ded024b29b82cfa20a49d727b29197eead35c68d4eeedd58da5fb44ebfcb3294df61629d5576048b51f0d4b90caa75c1a8501c534704582c1415ff6fc57c1065fa514b6410fb6a6de76e50e9eada08755191c2ad47c195d5a1a1bb55841ef1824ba6e7f0bddb2c12c5cc3a63577cce93f9fc7c7f679c66237e30196bfcbf05f4e0eac5619bca5e20a3aaa291b836ca43272093f43073070809722a2025dad218e2511b4c25fb911c5665f75891fa4fe61a412ba0f0c15d2c16c8a371f10b91d58cdc507d3df146b309c9d1ea06b406348872d4e4d0740a15f587f73116afa2264556fa12e0cb6c4450c95a0f4525121932a01e7b769eb31028722e3a2b6122a148940286e1287d953138ed8e1d19e694b6b598a7b787e91f67486dd8ef5bd172512bc4d0ebb51a968b1d12f5a811dfb579fbfcf6c04175dc561e577daff896666db68a80795a58abfcfe7c50e0b6d45e3ca6991799abacb342a49fc8841e487569c181aef16b77b77754bf48d4e38c75e49faf54bae944eca8939755a690d743706e9bdd19e5ae1e0e02fa2549b305656be61a84a32f099a8cdf54815522eab847919856240f7b1094571518cc9111cbf0abdf97cbc2c1362770116750abd631c4073885182e33b21c068150a16814d89d45566335a5d5b65db1005697c9b38dc15d4b130c8091193f0e7db149698a10d3c1944fe6849f2f48ffcd719ae57b99da36f5b621cf0ad03273d9a238ac35a0bcb43c9f71be8ad28cebe73612a0fc0c8eba0d906ddbd8edcf279eefd6fb497c685640ed5d07b2b19e72d023c8aa42aa08c1a1e20a660f6987a5b1625c0a91a77526e9cbe0f74ec705cbc7e69a1823110590b093530ca414f2f1f07889a7f21d891170b3a11b2a6372b58ca0f39a00a851868731731b801c51d49fe8225268d6cab63e3f6273a6ec00a4f7a8ecef617f28667d8a4226ec9b28571b13ff04b7bd43a9ba021e53537e444751f58faa08c124580454de456fa8a3e488088012f0f076712253d6685fe8f4c2a27cf2b55f670ff10003de44b6c678ec64ef147b3c7fbd5452fff48de4d169050a3a00eb301d49a381f7b6e3b29a4a01400be7d9e2ab56560df918bf33861adef555ab1665c601d5b4df4c5258f66a3b4379d883bd6610fec5e7ead16d04ecfb91bb18f88ea5170edada44906e3790339163148e9cb9c6a04d507ac9059b1b265330270eb41aeaf8650baa252671b21ded9ab0c1520914cbe908b677623314a0acabe2045ab9f63be280463fb7115a250671a4c9c906f4758d0ee770fc0ec8d83ce073b41ab755b5909d028fbb3df61b9fab7b9d0e88d5ea3f43eead7e7db2f4f8b3d90c079b54a05418d2b0983053e934b359bfec9463a24523279181cb5a98e60dafd2a6afcccb0d488878ec64bc65dfcc7e3b69a31f707260119102b5d5a7b0a0eefc37832d481cad791b48f143276472031c6651c9c23714aac6d74b353b551c49f0ff58d11145ea9246580a1902441f0a5634a7844652400aa6eeb1f93fa31ed5b2d2bd1dc07b4b612448004cbe46063d8813d5fa53778a98fc1b7068201d4aaf4137ad63619596290a595fa2078fcaa3f1833ed527657a2002136b0daf60ea8d2c63dd638c28d5b688150f6b7c253b4b6d195671ea900e3eb24c4002663838f844b5e54b7e77b91a6380b69c910e07bd06611ff59d467336737ca1af5bafad42c1059c057b94d06f1f3036819b521a85a5d8f7d3407c376a6e089de5cd9b04691f20840f01c612d1a86962ed80943ab270d78fcd8bfd14d3135e30a7b21b34edf69a0e70693990261fd1c6ed8fbbfae9df69c74adfc6c1f1bac0b45b1719e95a1eaa30b2de6adc22a69393c346c629f7d08b766929f4784629c288277dc7faa3e512e945acee03d98894332061db6c8b03887e45fb85b8819ee838ab52ee25dc255cb63e0507ee1ec1d6aa3e8374d622e87d755aadebd5181a13c79a2b0913715924e3015599e92b00c0e7eb00f835d3d68234222c3b3fd35114d84dab85d66171081e561718b1cb491a51dd88f436ca17c42f63e865223e47264275a9d52198492ca86b041989280d82f8a6120a58355fb92f679661f9910b43bce11a5caca6cc8159907fd72c97ff3d5ace90de2230e88584ebd80fa590dd3f3a2c0dd9a249a0dfd374cc9db51e744baf7fa8dfea4f3ebad62f8e16007b1c0988d2e567b0660b186c260f6c6e864185be369020b1bf53156dac2644cd8c3cdb096240b87c2f927e262ebe286b9e350b4d9d027fbf690d0ac659f13cfed6ff96888911bc846238304fa0753139cf20c1ff989c1930e87693554cc5e5c6f70e0ffd518508f1ee96e3822a5c1333b516dda333f51950e172082a8550ceaec4f3c43cf861c7a7ef4ab990ec5dcdb4578d7bd02f51497c96150708a111705930248205506d12d024475c6344f06d22a5d7da030ea76ef5101fe45faea189a6ef0e57b1ea39025323c0160bbf5dbd6374078cb2d7f9d57b2d20866012f245f72487cccfea84980576825f7e90da16dd10ed4b3ba88a1082aecadb3ece237026eab165956a0721906f5223919563c6f4fbf0f4c7b281710add0c2c900cb6e60938f05049a67a007e024ab4756989309ee47997f325ea0ee3cb9782a86de73a35e261211695aedda662fba24e6fb4cda858b253cda2dec1b044293d5a4a7db0887ca494c529c1540c4800fb0069ba6e7513af94b53b8d5a0c7cfb4d154364577651d4d22e4a6ab723a1a60d14f3ebdf7984aae15c5630c413f0da3bf1ecbebeb34e8fb985eff694cb41025bf341db439439f86546aaca28dbf78a98cadcbef8aae3655f95a7bee0d08c005fd504305d4121485104b8f6838bdf132ca258409cb4fed107433ccc30daf4a4a669e98aac9d1ba3589088459e5be8f45275c6905800c22e825107737419c2549fef83286b36ace95f65a0c6771bdb06341c1400a3e299d392f91ec519534921e8c56dec5e09aadc9f58a2fbcf01c4f327991401b09b32be1cf642aae569b4bceed7a0357c4b4e11c9fb436cbeb4bb52beda50d8ccc23fe75d4453f806aac61e1e5ab5507ea2e1e5db56fb968b6602fc5f0451335301d4cb6fb88616cf67eddd659098a971893c5231ba7ff043a5b63d8f21106ea30c09850e2acfbbadd326d075e38093bedb60e2713632cc045432fd9ddbbd0008f57499e9f7d4a88ce7819cb15cbf88234006911ee9aad19cf7a5bab10b2c55e84aa2f650f9c74d5e51187584da268b96f3757e3cf28532e7fb0b1a26a8ac7883436621e967a2d46c26cee4b3ce43247bd4d9d210c5a2659c2672951b1c81e66935b372350233043490be08adb329214efef8394bf6c0ca0b7905796c2192c6a11797f89e19f2943a4b4de23ba5f4956bb01887eecc56a95d391302ee492ce7a85cb54c33ba0d59ffb3139123c4d7b385782be8e50a22d6b9b821cbf010b6376279977ed2b258b50dcbb838f72e9bbe8a0af4f8c70adebf33bb2720a94191718121db2af5c0710d493f1a653cdf3fdc8b3593b2fac8f04581488e80f3b5898fe3f887c13b007492c047a4e7f273bf5b3cb278de1d26d42876ab95aa7bbcfa05ed30acb7d1112304910c104a9ba985195ebc16152e905d2713dce779dfdad4ea8ed868dd6c6d358983867592f59018bb8c10a854cb6ea84e285a92cb762bb7fc33828485c81f69d10eb97eef3047b36a8b05a8a52a09e93c857df8f43eeaf22f3cf22e75c98342d7d2324ece0da9418ba09ed2ee4c3c74bd9da24e8442ac924b6db0353630ef705b1d68bdcc54142556bddae262caadae05dfd579345e6a70eb4c5fe9ae6a80878c7641c139d69110a13f1c121e1c566cb364675740bfb5c029ce680398267443428714b1880278144d80c3a9eb8685f75c954f768ae44d83af76748f8a85c2e863e026e075f26bd1be554f820e1b35b43198ed03e0257dd11fe8281a2ce3ba19d1cc16c37b738a2ab29fa6783a8e86fd6a97cc133e15284fbeab8ca0479a4bd0977ce6490d246c82d9a20255341dcaa18003771b0639367a873a5a198086d9806c0a668265536c200b371747fd6efb2b925bf7763833a2133809ad4f9d1796daabf303dbe10849fb88e27182db8c8278c4cbdb4932112a68b85eb5f8e4b84b60e41de52bd9081f62a99d2b56ffde1b071115c2765c9b98fb907bf5a8531f9d4360d80dd78a1fa30012548bc6a8af34e484b9393214d064a8040e96aba3c08244343b03dd7df086b43c91a07f05b873da637d114e1c171a56128459bfb7f0b2bcae05d81eca030e8aae6977c0777e2cd924a9696c6d22b17601b4b5fb4ea85cdf88dd5344b57b4546e7b3b2fc6e5479c65b94cf514cec36b45b858a9a64c3072484eb9f9a54b11968a034c1525d92babc8927385b2791b6ecd7af301b51e1b4b40d99fd05c1df28e3abad12dd3102cffd701e90f5778d6357717d165227028127dd8542c51b8754f49f998c6f0a5e0cb1d1d222ab8467d3224a9bf5880aea81f47adf966834586214ba721bf051743a0c283769273ce7f31d19758b90b79cdd85cbea0fd4232164db92a938d27a2eebf1807d70fc44f8acd47eafff6e9d58dfcc7e63a52251cd7303fa0470752d70c4f59cf20666748f8ebc092115a489833acc1c2f3f8c350295125ebd3118a2a848ec0152e3537bd86fd4a8cc352780f255d4f9de39f238a3a054ce02b015c77cf34742bf251f071653210ea7b08f7cb77cad514b72a4894c7a760a461b737bbaa84163e50b98c5d7dc972709506715bb560630254cb2d00eaf11fea2977f3cf5960bd72d2823e79ac8403e2e557057b16aabfadba7fb9df2dac6f0c9d4e48956399238bc51dda70259ddf16a0182badd6cbebd3198b419895d72884f275ac44cd6bcb4061aae5730605f350194918642291820ec14c5d1628ed5495ab5707466d502cf64d98ecaf5993f723935074ab9df222ab58f1e50d9cda3db8c11f2e9fb4a0b84575ca04b890936eeeae9d9660e2b5d921e1e8ce01d28da65cc65dfaf182472c54833687124d3021ecc02400149ff1e1df8516dd4cc1bcc4a51ce0a821aeabdce4ce83f38546acd4989dadb8e54d87e52c15917fe6504e10e16c82b080d643c01d68dc4f457add625df3da0990fb42de7e5c440f334f629fc0d90b44ac9ab09e67ba8d1643ee692196c320c6a0cd669a7d6ee4c02e6673ecd4ecb7336eedbf01ef9c5570dead40e8ea7c04a38f65c196b0dfa46231c88ee5ff11a8b721d2d5dbc397141d9533b6837b57ca3439562fa97d0a146dc3b205a6b8d3ca0da01288666374283d7b93a2258e3635bc222f8969fa92cfa75179b0bdedabe70253d13be2217a901c056d847aa2f91913fc6f94a4b6638635d0d2942bdc03c36a5870a06438fe359fb715a546582b6c6bd2f8c53872f7017382a02525be8c106856f1f6d4c58b355dd6713f9b2ade14d7e85e4be11f19e1449efd6183f030dac6c91fd739023ac2359c7d5ed9094e70eff11e214f23f59ce8ca5427349346ad22ce2c1fd35a1a5e4ed188aca334ead30f279394f326d11d01a5be6fa771b81eb6970ae5e8a13946f561deb858439a822c9d04f530f2d9b005dc48d8a80cba9c819fa440d2bbdd8a21603c40f26cd43edc18967d6ae19cd55feb21eb68183284a909770fd38c5ebcfb3f619446a6e1b9157410231055ba1dbd53842e08e829165700f9eb8a2e117cf3c91a6a64dd821e76bca9c98a62321ff573489b109afbef1000c4cc7091e589b2e116bb5f4e4ee80d42416885bfc8f0948f12ab9e3dbbbcc37fbcedfa9895e1b77ad2525691bfb36afd18962e83e4422744f26b0c8dfb98f4cac1ba810c238c70e079a00282a643e55db9a1abe4efb7e590f14baa44c350aefaf46bcba68633e25e2be8ae12b996a1ceecbed0c273c4d141cb2f29c7a7d4ad0206fc078faaf7769d4863e4eddca7dbc0fe3a2bbddf12eb4a943c37c0f825d5db3fa78f8cfd8995df6afa406ab34cf36b1de7c9e99ecd5b2604df64fa58b159a7949d1b365cac0f7b1c96bf1b837bdbce9d7005aae4eab5e9a8a36f66a824e6af885386fc192ccc7fb841244d14303a482f63fe73f04ff160cfa72b2ed6e3ef123f9ab2e8c3ab864fc8a4e5080c5e7e48741183719317b438e62e4cfb4ad7e3fa7cbc3afb701aa4ea837c1ea06e601d55e46f870a64bce0cc72850e4308cb557efabded0aa7d2d30a40f9cb4b1633c41d3044d1beb8294baf4f38233c4d5c6c79e6cc926909116fef701e814aa8eebd48218beeed2d0fe5b9f5eb036e68c88ea1d4133955404d181e0f4ac749aa47a3bd26ca3929bb09c5cab8771042259fa0b998545b590df50a0cbee64d230fb5fedc0f413fd4b8a8fc9dfc76f3f6cb7db1443735be8ac0a617dbf403a24884225dbc9730372b3528fd6b81d40bc355b8d1d6496f5ae92f22796f407794b0aa645459c397d2a9c432c7323887fb82587daf93cf46b04592b3dc1ca8c4cff95a40d95f0fa61e5c6172c308445a527a664e8638988f1caee4bc413a9b9714976f8ca0c2097a62490982ad795308a04aee904781449e04f2d234a142ef1d88b85936c63440c3d51e8c04bbc52c22d057d064c4279a938e21c1fd0d3289c2d370f1e29e89af019a9421c3be3705fc490c58797689b7099484f716cd663705860e4f27c26b6eae184ba28820d67a2aba06fa31eb770ee27018113e079f084cf185b0e3d8f7937f270e78e04abe66e1bd61839da9f949fa565084eecd799d2c94807548a401192aa50638bb3e9304dd900c60a1ed3915837f021ff1c173127f26d3087f82f293a21ae5987d57eb2ac141da2432824960124ec03bbae2bd092102304cbcce3e909b84052b94d1f3392209914ffe1dea70d7a1d14d5230f5289a6d4a03fa4a9a5c1d9a376455baaef3fab45383907e8fe87a1660511a9e0ad08ad3f02036e5b84b82bbda2033c39b0976d11d1d062837396d0035e8052b48b5417252dbec05f368c16319e1c28c05d13c24dd089fdaabfab38f85dc0fcc493330b68e6e0ecc803a88a359f5df508c24e75d403ad60a1e53885ca2680c84dfae2f7eea2009bb9da8a1f000d2830217c3e44c759bd521d9406805659abca7b05cea34740316a5132ed491af6883fd4251f761344b3583bda08830306c6ec7118f4f38c035d360c91679b0ccdac16608ffbce4a8d801927a7d47cf8d868556e1ca77ca8c2506df0f06f9bba2d5033e25aecd0cbb2e16332656e6e5d5fc1e9676009ff93dc5e054333064c75e09eb21a6bc7ba0a4cde6dfe25b31e56bce323c64927537e8b69e5483a8cdd3968a6f0cbf4a579b0289106e6daaacd0b02848f1ea5ccc8f001715f3a247d6a28a417235c309b21e164163cac642c513d127976319e3d15921c49b985cfe9b9b19d125ecd9709569f17c01b3244de3804dbe32e14abca75f001a6cc3ec3c7bb6ca25f1a8c54e2e0f4c0d57f394f1370bdac20d523cbd5e83fcaf56649029d9bb282c7fc5d3f99c2ec10239d9603cfa4e6dfd8af19d099e37d8429ec5be146349b41fa9c7c953ed0ce0e07ecba1dc3ceb63f923265c4be77bd04febedfe8d51850a5bf095b738f4c8a017068f6d3b1b535720ccf1c8dcdc7c2d59b6835b69e2ec0ad51e7fae26a6dcb5e3c358f462c8fa24ff78e95883f29c972eea565919e2c6fcf338ec62e95e7e54894375b74cab3c896d44fa126a73ac344c93c259daed8b478a232910270c16fadee5fbc6a4eb0b2405563aa9629b200bc49e4a03c5dfdd0592713757fc20ca9b43bcb79862e5dd88d934d77683e590e4a08aee9da3501a0422382be15c1ad697af6cba7c2c908275534aa85b1e9deb188a32076d906d70c46f35317c69427317c86596d805df103c66560fc6ffc1b2df119bd82a01168d9c1d13fe204986010d248d509a314ba6713530f2763a3b00fe43236834c1701bd104c72e59dafc5acb4f6531d40426a7e5eb23308ce29961912a5a3a98b95853080740299fc46f5afd01e83eeed750a179ab727359b61e335399f17960403d1641522c8b5b0b9b3fcf0d75a25cca6cd2af85bcae6992404bfa4930b1b48327bdc3b48113c6d8eca7c93bfe558537ab2e7d1dd114c225e7e7c8be365608d1ea84847c05c621f295942ce6ac115410de10fdc305f48a7d35ffd25eccd88f54ab2a5ade4c163ff256cd383b5e9b7b910a235960fe12fa9c6a1658164808fa3e6e202b493b5b40555bf92098b393a28e640aa9b35c2ba2b2b1500c9c685ade3cc2e6cdf1ab90a3bcba4ecbcc48d48622260e67206f42cf33aa953db28609ea5e297f8d5f3cb76ca53a542c1d2a9bdab464aff55a20b03cfc512b409d5ed27d38f8eb6cced0b21613a8c085ddb55e9564a480351e9311a9e026f5c076c0b1325044e3126702c72fc9b28aef451ae5c77c84d4a841360d87bcaf3902e2ee531a23a7d120c61a638a512df6955f6870632910e68c5ba3a0edbefc106826370c102424bff973d884df6ca3595e9976996d92be3512561977f012b27412a4018519d03d9ad4b0d191c70985f85930ea857881b33b9ec426df0acac227658bd53b13c1e1125097cc6a21c6c3e951f6139d2960dcd31e0091ba5297c8a9646a7b1028a63c407797f27b23726452c7adc7835e47f8427c6f71439d286144724e633b00f4ad35a2f8fadf438b32652312886ac8f335319af9107f7f5ab4556e01cc2dc731e6b6cca779e50b01a9d550a2790f0478d35ca853fb1fc15426ce422cb6ca9f54d298c8214b34003517cbcc870d18583b2ee4c47f09adc0113ffc6f791ac3aaae4c4bcdfd6e9cadbcc46155885ec6bebcaeed7e6d2b11e64309dee252b2fbd5c225caa63656141db6d7c24e52e68d06384107da8ef79c920eabca36ce53c33109f30ca5f934d8c5c0a83037c0a6e041781b78658fef0774b16b0aacb5a6540b1402585abcb131ba3c6f99ba9d48acc6424f16fb4ca9f0e8ae05b7972e2312c95a55f1696ebf4097c63af37394a23449a7af5ac9448be39d8b673eba8dc00cf90b11a18a5e5a5fd4850238f7331eda3110ef3c854349e9ac26de162264feaba6a2828f5df9af9a0d270af0e51df76183a4f8140686a3e4693c7e565ce437c218202e3f1eb0abd8b7361d274acbb1c8f7674cc04c0e21ba40a90478028517e142fbb1a7c1af702978d18f086b8eb43447ad586c99c144a6bcf5876457d30fd1e14771c3e73d5159c14a46810ef4ef3f7bf8b017456d831b81a92b955ffb02a7e312ef1030e12ede334bb92b15693fcf2e267fa42d500445416ac313295ba69c20d978441b9732f90c83a74d3d2b18df559166100b14d4d4de215275a96e993a7cb19065d9a6864102c3c23f236ae25b4c1637ae63889f53a1066495c06ba3a4b669bff13472355f6b6b97f3421a9ec6c6ca948f37042e508a350235d965cb356223ebe233322b51052ea04fa547450374aef0c6e1d10fc05835c708219a6b856d20f2eb43145307282fee40d9d0b286854e6b00e930a62774ad32fb509c4516846b9fa02d652df5b64d7ebed59ef1764a0f2a7b5947103261482e6357cf1b9b8e2da20458eaca631751109521c29d47a048af9424909077c312e1173906ab034430040a4893a356305c15a903998c7d5bc9de76a7f5f7f4bdf27d4ab193d3596de13a9348bfaf8eade37e8c8af3cfbcf7188fdb1030d00eb0ecd78df3dc395cbbc5d83add74dd95fc178f54fa4546f94146e336b277932df79632a524031c0a790ae009cc174cf23d88759ac8e995933e94527e8e5e49b6611bd2cfef48958d704e915eb13f9326e71489e15f1d9d9c9d6e71926e899e9f95700ef8232be3be878061d9ea965779a38cfe5e05f82dd370056ee1b6acf303eab04e8e0de82e9e620a6016402f802008823a3ade1cd6504427c7866dd0c004ce09c2349cf70083965d673080a4e7a7a6f755e9fb5196754e363a8b6439dbf6a4ce3755f9a50a3eebb82b899f9ff81363aa31c673deb9ceb3ebadc598ae8db411ef23d759c7594eadc7dee44312899ff421e3ec20919c5292c973df997094b9211ca394fa53ce71face50d00fdb08a534fe78e83fed37c9aef9f15907ec9a969334cb5b6cf909e6295827fef0bbe8e516b6bca2cca34edc89ad51ee297dcea65a87bb58c77578747844d509ee415589aa44371ad99a1aefe7d7802f4735c6b08ebb382787757258278775ba5f7b9a986dbee659259c5022f4da4f095a25bedf5e76d509057cb67bd08baa1221fbbdf60ce8bef79eab19e86aaa1ff4dd7f35d5368580efbd67406753fda2ffef7b067c2fb2401cd0859d23b098ef435609279c50c0f69f05227f7b20319e05d98e73dca58327872767c6182347248db2573adcb5f2f8da9c55b33a39cb5fab35d3f277104ad341240d6b265918c1081e8547d1820e04410d3b469ea043a4c68b6023bb749ac5e4902eaec86843fadbf3b3a53ca0bf8c3c849ddb5f72999325977e561e2bf76be995dc64e861faf51ac1382bf42be573a47122bd7c1a5b272fdffb3e3601f87d354e9448d5f43ee845791877e518a1d4784daabc2795027d84048000f28771567ad1b3e41843f4f393197dc7da2773625fe089d4565e6bdfe6a6dab6529d6f52fb9eb43769f3e7974e4e9e7e322727956f4c5ba21ff8cdf025a2d99603684204f5b39e542236a718ed4d9fc35d6ce30b882e3e011769d609901057fda8ca4d88ac8e71c55174ebe4d2baa75d286fc84540d77bad1e51292083c938524a93d3833e99939740b7e43dd950964e62942ce81342fee8617c9ed4d29bd47951ea0f7a4f4c76944eaa89a9f4f19a1ef4c998ec0b2c3d3fe8bb51eab88b5c087ced46be3144201adc7ee2f68c2b2b57da5eed903e2cbad8ad1ef3b58ffe3ffcf24febc367b6eb369cf687df667641d76a297df8cc4669af5a3dc2ede9cfb8b83ffc825e03dad5409a7ccd0e11ef8c322090edf0884f66db31ff088dce68b4fbae3b407f448f86ddcecef4c718c3076771c32034575659e973dba6f59072fbe117c4b3866dd8c6866d2e077a7f496547af3f7fb7bdac2cdfbfb3b91bdbf0e5eef69adcac649bdb756800e7d66d1b88a35b649b1827a6bd00dbdc1d52bacba1ebd8afb6f9f0b9518e575229376dcea185b9e5ca4fc99658479f5f0b79b4843c5a2ebfdb60cb691af3c338dbb0855b3e211aa61b64c396ab7d483befab9a3f8cf368b9a067901940a9b55ced4197ab55f66a4a7b8196bbc32d0d225dca2d745deca69ad6ddd2fd67bb6cd9eeb29bf50303f6af1da10b3d01f2ac76563ab7e746354da330609bc69a8377b3b296b08cb6ac1fd61ca64f9f13064c4ad91d0cd8856184f51361c0260c18cdedadb59d1bf9d767397ae50330a4373a0f8fbbe4c7ef64e5986debe9e99136d20606bb21bda1371da339010c576ee24a02da6d8c4f9301dc66eeea98a63d207ff378376c0041f739e7c60590ef9c1f571a902b65092cf59fdafd1b0b2c3529c1d24ab33cebae812f06f0b469adb547dd89dcdcb8df4cfe647e7b9721371ee1aeed7bd88da1ced14470fb43f71ab7692a8055f4cca1dfef35d4865388edc1379cb0db3560c79ffcfe6cf47522b4099057de01df836c9014033806f41c03b2365eccf73632a606f422a031de6f9563f853808cf9ac0840208a017dc77418c4ab1c7de09e3dd07c508dd107cec698b30330ce9c59d3ab6973fbba9d3022207f386147740c7f44d05c0d9cae8f93bc33310b9f364e1f0ec253d37cfce64a25f25d4a69fd6f2e53b9c9f024ff0877cd97b679f8cd9515a456803276378f79ccb4d28682c163d1e7861ebbb9b9d15aea502fd2bda4aca107bb35e72c4dd2046769a2ccd33cdda99a9469bc9daf4b7ff3428959fe075269644f269d563906c577aeac5898060ccb1082b4321add69c3f9220c8037949f01d2cb88c8008640a4c01142d4800962646543cc5bfa682233e2920de7db902f69ca90103e6b94311d48077581176bcf17785d699b6674039736eeeed2a6073f3fee3f3d7077f7fe1902ccdb3685a37f7ebbfb0f3b0d8a4aa39f0f8ab165424305d278eece29eb0ebad10ffbc4715fb232e2aa9f545bbcea1f5501c4207678d5af78df21dbbd6657f382a1d0afc09528247ffa2a00e1cb6d29366dd35cda1f80fcf36743b231fb00dc4000f269a31c33fbb3b34459fb0064d5f7bd7477e9ec038f99dd073eb091523274d1bbdb03c230aeb9cc63c5dddddb02c1a9dfb8acc5e7b5f38aa0dfbc78e399f5f8fc382c2727272727270789d78b27c7e7d55ac73aa78d1c91e9ece0e0e0e0e0e0e0e4e4e4e4e4e4e420e1d3b11c9f3d383838383838383ccbc9c9c9c9c9c9e9c1e11c23f408283be9fcce8aa76586838383838383c3b3d90c8767113cb90de7dcb8b383838383838383f3d3382d3eab9e9f9d78a28edb50103c9dfe57bd43dde536bff248433d2ce19e23edd0dc547457cb6f3e1de371563ef4590fffa1f7b07cf7faaf1fb6b8f8505efba27ab621fded3b554ddd8e3d554d91eda92acaaaeae9aa2acaeda6a7aa2757a8a62ba86ae976d4abb5f5b602f12ad5f53dd41aafaa2637467502011c139d0500ea2e1fd8916db65239a6469536feb35af9d4b476fbf52f3f63c6f7eb9399615fe06bc6ebe57b4d095b896ecac71799e26af0242cbebcbedfe3105f667cbfbf21d278f97e5fd22d1adfef346a8c2f4e86cb3fa39ae1f2bffc0db1f57a3919a4f747ffe9951a6374a82c2a55a57a95904af59e55a944e4ab64ab4a1c20b6d93603a9aa9250a41199e33ff246c24aa5d310ab968a421d7159f15057df8d562bd13744bc2bebd21dd98ef4b815ee037aaa3a0a00090c80aa822ccdea93188eb31ae62c4a22799efc915dfec164f483aa8a74764435cd6a1f1f4aa4151fbee75462550db554928eb356352d0d449be0dcc8361e9dd28d3599a884e9fcc83099b0c858f9bcea14f254f50301504531aa28e6acde61a93d5491778e8dfb6c3cf145e5fbb797b06ea9be5fd6748bc5c3eafb3b956a235e957e950e460d3d01f2f02acffa55e5e1bb934f86655f200f1f3f191ef8aa2a5f151e2cabc278558da45f55514d8b603a271515ab7290aa7af72b9195aa025b5455edaec87f3c2661a75088aa2ae7a92abd2e5475bb2ebeaad492f755e55555bbb2d638b1839d0902bb3b489557bd8bef502a2f6a8c315c54be5685a262f25475de95bae9503799b36cad11d9341036c46273ba021882aa7f55cf89f795488befc3ee88a85689e3a28a60bdea4d165f542816c0105411c1e4ed503c557559dd560973d6d7ea2de9567bbb4b7eab60df49118c3f14d9dc56f12d5df6fca75b2d4e9eaa36ca53554ef15435deaf445abc8bea2ad59750010c650aea94e2e8a602a568aa729f527b30aaae4279e4f69fd4707543118c062ffa28dfdf511aca9bf229f1e7a3ea8e889a15957a53ca86f17ff0453dca9b4e8faa2720fd14c526d1ab3eb121fd4000c260306daab2577c439a3bbb8f5f11d112a196e47da965a3da4306b48c45df1612df93d54b6d0fb2cfd5d4f63186f2006956ff569318a25f3b5d9e57ef9482348da6fd159dfccb3fabf46e200216161617ca2d02e0b0877af985cae54fb98c721975d9e44393cb2422b8148d2fa4676a8358b3bd083e069497472855ca26197d8aede13171d7f4ff5d930df94519b81aa937703524483e3471d56f5259047c82b844e3f81862c2623464649b4dda2743fa075dd38f42ee9a6c49730e3770b5efb4c81d22591a6e80bba207ab8c40885e7e324088ec6b2e2e2ef44b41175758090d40bae32ecef68d0b4784cbe5974941e7ceb8512685d9edd86b9c95aa74a7e7a21fc1c6e91bf097689c5e0de91612fe3da457b1e39d900de9674f37e2981b085a4a068f73da10025e8da18ecbd3c618237cc0e51e32fe4234cba5df95874b4a88beaca45991c2b425dac54afaa3776fbab5d91ed24b6c9677381780277a0ae9649b9a5ec5181b768a1da3a02e74fe9d280a3122f647cb3c973f23d8b28d92e6c1b273230d33bba0eb6680acc3c2fca261d765e7c9ca77ab485c60fb1ddaf7cf6f5a22dddf39413f2b0f3520b9a81ba5b8c1cde56fb329219aa5b55eb3fc5352da8d0a9016a1694384d0c83bee4f7d1a365fc022e38bf691935206d12b772983169757cb113c84f4f691b210d9be3f1c3e35dbb355975b23f051295308f5e1464af9b0d45d661a44b08c7e3e00c9c72dcd00f452ec4ce2969e85c088311e00dab05780dcd233905b92806886811f4ad4d850400868858990794dbe0379dd7f84fd113ff8f1926a8cab91fd16d5b00357fb90d6d3d3d363128469a6774e741d6feca6c6decbf8e2da87a61bb59fd145234b8bb5dfbb32c973a32236e4cb72b5ef4f08f9a0f7beda73c3b8009c2d11f4d76cbf85913b00ffb6fcffd5a456846bc113dc0a9e78a2e35600f2476631bcbb94736add84c401a3cd4fec67094a29a899caa08b2fbf8b55a6de30eaf8d4c892cfdaf181e7ca19577ebde17f1f63c88f355ecf0aa0643580fdb10ac15703c3bff29d52661f01b702ae05dc126e03f27b0ac04863fb50f648dd105df9a22b6d0a07110eccf7212f1198b5f162a6a5ce8a1ffd8bee5d02ed092df016cd26056f20430d7c9a68c293f086e94238cf31d3b1a3009b166890e20924f096803d6246014e7bc20a2447660e2a640727b8c2074f500114e220051b9a04524af927f92f7fc5862bbd2be5e946299ca0062784c1638104342a4cd75a344de36e88201b0218a0a0060fe0a00db21ee94fd8727094a606593832831f0881094c8c40e50a53a400c9b6021dc46083209c000a43b862094702921410e1866e9c220545b61794d803b71fec0fdcfe6f10dcfe96aeb9fd301d82db9fa35f47b75a04b75f02fd47b4cf1b64e9d42bff18d700768c1f82a5d3ac92a3a51c099e795c8288ef31fe105a6ca120088232c697c74b8041742ba4b1863c4217574250d5ad66d5043d5068c655f7b77bfe8fbb4332c6e862d701affa2703722b6d6cd93a207f7fdc5860986ef5850962a55d2767cd8f2c3554a91b1f1569d0488a343c53885bdbc78f06c832e66f37be8c344a2c637ed46e7cb0eae8d5fcd37c2ab221d5ac023813804c83616cb9c6bbd38665cc9f9e2d310d1682821863ced40d5f61cfe71a2794d8ce679b595371351f54091057f3b9f9db7c46c1fc5923155b4ada86710a77fe7c1754b870a1a2051595165968d142c5a352a5b0904aa55c212505650514eaa4e47442a9020aca09154e4e4c5330994a3ba59289144c4c485120914650188dc02420287a824814724228f44df17d9e8ee7754de83a101340206e092f9fafbe33099a76e7bc534a02c417f701c4976e01c417ae115fe6c6dba6813ebe69ec3c4ad73f0289d18649dc9794fe2f57e826881a93e78aa8e4ce97de9f4c7b0c3e81855ffee4ed35b50fe553b9c9dfe426e5896a1bdd986dcb8b27cefafb6d28bf6d25e2353b44af72f4ca9d885e396b5acd3104f3104f04f39d2c010a74eb08f00af0ca774a617a052fb821487d3630706b2d85e43ca059aea30b60d8c2e394043e6c48f1c72a7b25bff9dd25b3ab800d530a2b5081bb380a828e2b97306feff6ee6e7777b72bfe1c0ae07fe905103c9d72b4b4b4b4c4d98c419fba15bacfed50c256f8db6940fe66fbfede690a20ff759d23502859125bf2e3536a73d3a8f4e6a6d18da3206feee8c65110d779d4e33a90d77d5e482445226f16d1eef3429f28d413679ef7893e1b7c4111894707498f153a48641dbb3172d3c3a3e4070b1e253b3159ccddbdc7a6877a273ac2ed2ee59c9a9c9ab66d94721be53810a8eb3c50e779df170a89be90480482a311091c91482626a592e9449e9c78f389e9e484823aa5a0e4c967832f0aca0945513424dd4d5c96e489ce8c472709929e2bacd0498244c6e3d3c35385929f2558f054a16447ba8927bd54f25c9a248a8927bde44937993c9727f28492289437a350d24d9ef41397281295225352bc3925c5e4493ff1a4a3a0782e4f1225534e3ce9289ef4d3c97389922932a5922a9537ab54289e7499225352d5e284d249812285a78adb9f52923ae25138145ebfc31cc76f3ce64cf8108779cd921f9d194fcf1556e8244122eb9bcee9581b6928ba48dff4122da46d787c7a7e9660c15385921d8e1d61232e4312858c31c1431827f638c37e28c042b846f65c410119753e1b7ca3cce567832f11bd92356c7161e955af628c4ea121ff0f1f7c3fc5f448d80484e0b3e2d2f27c8a3c99a5e750806cc7ad0eb639649fc3ab0e05e8c8b1f33a98ad8e1c3b39a40edf81893b6074c144569fa28cb52dccefbabb7a0f782b48238b05e4ca9f49e24a09fae93d277771bce5cc6723604841b47fc61890cf9d0fea610218827aeed4ec6c0fec16dfe9027d54e1ebce2f756b2279966977848c18e1082b354450430d7ee00409a070848f20e8ee965e0312ee76a3ce1a7e56c0e50841f340e7831bb4bce9a24003cd0d9a34414f27451b6012055a6b379aa66930cec6051e982118258104488e5cbffea71e1d1c20e99cd04112e1ca9605ec20dcb78b3fcc4d4679b232c0f85a95a147b90f41a0077d83e46ad27ed7b428dd42a1862864724872a3144ce8b0dc2893c3096e278a2ba1e7025d3e58c612b068c2c72589336efc81f280310996c11f0e80061096c12d9106c3584674e578a1624b7bff16b1b5bd3be8ba5fff9348836b4851146970142c83698c2defdd3fb6f4ead57259089757afc0e06d1a259974524a29a594524a29a594524a29a594524a29a504dd3a8d0318fea5fd0e7e78ba4eafe51dcb3a9104debea7dbcc427c300dff0ffb26c134380a2030a6c1392cc3ad172ec32c186a580a71c51faa7ff9b92b5cfed116388a90b570aba083f8c25188319869701296c13fad70f99d652ecce0c2854a1954545a90a1450b558f4a951a432a9522869414541850a89315a7130a1850504ebe707262f282c9549a954a265d3031217181441a6d613402ab004111152251480ba1d09785eff3783cafc342d781ae00027156e038aa84d2ad0adba65141d3e614e6bcfc514a29c417778f427ce96628b4107cbd6fe000861c5dc024bdb23945fac1f73e0441af724eaf401bfef51e0441ef7d8799db6323b22898651c5a8006577e2c82e4852be91b609cc5f66bf71d27aff75ef7871aaf0fb3d96cd622a3450bd5b36cbeb5aceaa072a1526bbc3ad4be2d355e19b5ef168bc562005849d5fffa30bdc15860bec17a83f1f0224507fb3a3c4cf350e37d51fb02a0c6bb52fb6ab3d96c160306ea45ab5760f7c5c3b426731728e6acf92c1b52ca624310b4b23bbf5bf5008a81622050ecce3f7d42f01040f92108860382758b879f0faa69d70e3f7f4e1c1e1ea65735de1e6adf18355e18b56fc783c752fb7ba81a8cca3fee8abe3a3df8e2fd59b583b1aa4c6487e7e17bb0bc1a5ffc9bbbbd3966cdd0ea79a83bd4d8ac1775a5eaf0ac5ae77f8dae52e3ce6f919a2cd4fc53ecc1e2ce2fd53aaaf3c1f9df7c2fe7ceefe68ce2cea775fea633bf63f1fc08e8dfa09d1b75a03905611a77c1367098efdc3bf7bedd74aba9bbbbbbbb7cde9e3766b6218f9622dc6bb04f388d4c231e7b9a6ebc9c10c0701a994f18611adb5c72fbe570fbb92080fea00fe7ce6dea4670efaf75ed5f7ffc8016e1f654c26d930e8324ed950dbe2e27144000e787db84b96b83f170a04fe98d69d0c885d01360fcd9646c1b6fa0e7368e08f8d588b2ad23e2e1dc2e015114b9db779124777bad3b1b54386a1f22def7ebd5ddddddcd410176cf255cae74b93f72b5e89a469ca53df72bb1057a8e230dfa1cf75c0fc0307575b8215f6efb8a68db9aa9d1c30778790d3e2c43fb69c45dcc86255c0d0471b8da532597da905e90368dfc00fcedc3eed1be877d7a34b7a2595ac76fb33eeb95a68d54bd027d388d5ced3beda7916e41318fc417fada10aef61d68fbc6b159d9abcfd25eb1d636db8d094fa73d7f738d5e695a7c1df125d6e895f6afe69e00437a354d7bedd90656d3adf95a6cf56befa35bfedae368117123d2706119da6b3f447cd9c2d8039e9cef69e69285cbffd3e273358d3f6c5d4d07d59c250c7cd6ad767f5915726efb2c328792a6b96fba4e44a5c8e535038cef3340d09ba50c3114ba46c2cd000decb6c7dbd7356d93359434157fc736bf9fe686303146eac6006eff00a6f6d3dddde577c72caed78fbfa3e30fe0f6c76e1b9b5be3798516b0a0028abbba710a1e14dc38ea7a9ae011bdf6fc9d6669669088bd8a36a4f17a2559ba15d96399a6d19e617c47ff34c2da1f7cddeee0ef6fcbe220e8f83bae1de5a8c7d1e91f2d9d736adef727e3bd40ca71a0f91d37bfe3388ee36cc8f7b341e7d3ead11a41208e4ea69fcc0ef93ef86a3e7815fad0d75c951ba770c28adbb117bb157acf91ee9861cee5077d07eae691cb3f752eff9c738a3e99edc14f667b81b3a3f4bbed6dcc07cda7944e3ae7f38328f540fcd472df7cd5f571baa0f7216ff7ddaca2ef2aed9547a9c773bdf7bee79abcc953944fa6fbd327d3bd405abd522c3dd87d36e89be030a9f34b9554c127d5f92624128944a253349f54576ec7795d057fd6f8b4cef909319f5aaf57f1c68b3b678c6943fecdfb145fef4191d7e387a4942917319fe370ce2011ce22a60d692e3f7fc7f187638a40cfabf1f2e77dc89b01764f4b238f92be1ba3cf8817977f06d87dbcf1a2fbef4f9fccf7fee158798114441fa6bd0f077dee3bee3b5eb9fedde09e72943ecd8dd7bf1bf3273fad2b97f9a70d160ed51d2c2c36e42e827cc84b3ffc3ad0144de8dc971ba7c869e2f2008afb374ec18325aef653fbd9833e67439a1b829eeb40dc144e2849e100bdf7de83bc4fe6fb6ef3beff3e99ef0582bea3f13bcef33e1c5ee57eabdcc7951bbf1bdd773675a36ff73f2a4073410fb2017aee41dc77200f54e377957bafaedc0ee4791d28b2d0f99cb7d5f9dacbaf3f388e18450419fdfbf3e2cb74c952befcc1d79fa69961d005e9df7a46a44510f71d4703f2e5ef6abc21cd57398bebd530880760d793f14271ced4f7318b1b4659eab342783f7f876753370670e70fe07a3f3dcf86dafbe0ce8612c4711c63b05f9a8efd8a269ce1c8ede1c6269c41c8750eddeef86e687687fccf0869c307dfee96e60150d2f93377dee8ef966ec176420fc090e54a90943ab099a2899fcb35608b001875a84072fb4baf438592fb1748b742be407ac5cf518e567a457fc6e4cb0cfbf8875c83227cfe56bf1bda936ce85de76c03c038850e702ef7daf36784f6dc7be5c2799db396a512e1718c2354b4611c77c518c936e49c2bd90833e17d3703147dfc6444347af8a057fbb0f46cf3dde8df2cdf7c3894b8a5ef1a72db70a507f7dbd3ea8359fb8ca877b31d858ff6ce4da47b1c777596759c259f52a91363c8e77600a26caf69ac3dca7c4639314e8752f95439a7572feec99ee8c497de7c7c24a3934cbe734ff339c02eb7f1e5bc076b0892d8c7c59d21a7358e945defbb2060c836a4ee2e951ea6bb962ca98abeeb2237b70740d246ea401ec78db8c8921fa5209273b5ef4e0018a72822e4ce27d5783bd6ea4db779216f2b79b79742620cbee995e47800866c83c334986dba65f2127c19aff7c998847e7ff0dd6cea86cb6fd61ddbfbe090f4e06b750789d4fdf1bbd1337cb71f1304a728543927c02e7245406e075c0e4097cf2f9f93c4590fcf8c8795703a6819d704b885ec732592d689710678e3c5e521447240efc3ee21dd92df38f165befc7e417cd15e6e3f23ba4f7fabd388fe22436ebfd6ff83ef96c3c4955c031c2bb72d91ef61daf5d9d82c1c2935c6e19b6ef1651b21a2db99783186a31b51fd3c431e952c6ac3289fd21843ca25b76dc8232eb9bdbd6642a6ad3d928d08c8ed98d951e3dacd6a36eadcde992a2374fc7409395c4ffd2d6f2fc127f2155e45b3b8cbcbb6f0371bc0ef6f7179f19cd2b69ceea808b3a2acdd45d0c515b07d3e4caf8608a2576c87b041f48a6f10d963b7818b8bcbebf5ea9ddb2a55ed9e531f511ea64d4c64549e63a2e36e002601a45b26dfcf30aee938213c5c4a27db3e60086e1f82a8ef2f9d50a838ad8eee46d2ac6e717a98ee62013a1b0e41734dad83f261cbdd425645c5d1ddb6ed697cd17ee3e172c31da99f6ffaed4397bbd9b065bd7ad9e0371ba61e9544bb28e523caa7589a77638b47896ac83621dfa09878bc2e08f4ea1a30dd7ac1c3872d56ab1a9d5543ff31ba92f826ea43cf82dec57720175c0d4010886fa98634b7f42ba1dfc1a66b6f876800304ac104ce8d5cb8518a1b3471f9a32f00f9b71f80a102ee8ef83c586ee943968b7ad4cb8a423d88525dd4bfb0e1a97451bf827a1decf46ac8726378f22d4adf8d16bf6d2fdf56ed63257d676acfd6d1c7cf84fa544dc50f5d6eea4535b421fad4a3de5453d10a21fad4a7fe532a2a567f544df95387fa58493664b9f1511f4f0ffed6a5c45a4fb786ec82dbdf42e5516ac883e5762faa210f973bfa94aa466a3eeae7abd4d4fc18a3b26d1f634cf9adf2f052f1630c9066752abea5c2a402e955bf577f4c4ebc135112944a84fe88d24f3dea5129d47d14901a4da82d7aa18769d16f36a4777b162034005f309d84bba86d99a77ea5bab174938861cb4cafd3b2f94892740b09f0434ec25d60ca86b4850dc1d4c9fed44e223329811ed52dd0770c18df8614c586608c367c94672234fe04dfc50880718a1e2c69407f688a1e5c7143bf7d42b0ec521b7a97cacb39e3e01e5471fb3def658d97fb6e70ef31f75ee55497b321bd1cfa42d1f30ed1838ca36f88fab7ce3b46f619922f72b91eaaae7b37fc17fa4c5cfa21bf9e4eb7e4fbed68118ea4579df55c87d2fb634674b90781ea8c679145e83b3b55f438163021384c1889424789bca25b3fb3a65bcdd775908425d70141d0b098d007a14c6dd83896b8d1547c76869180361459d791a70b9a0118ba7be5900d7ff0fd8ca046f46f33accdc89a0cd5683f5ff3de9c9bdbac1ca3d59a86c574a1f7dc775b0dddbbe8add14eeb7c0e97fbe9eed9d02fdd2ac7f5072ead9e4516b73f1b0dbbf47a36740fb98d702913e0523b438028bb1cc7b24b27b531aeb355d63cc665ddd299374dd36ed2840e250334b71fa43f03fa10880d59ee8ed0af9e7ed7953e4924128948dd83ecf72a3eb52b9c11c0f8dcafee0c5ffbc3ef111f11343764636409db0b3de8434ffbbd87f1fe3c27d5d227448c112a71497f027249bf7dcaa73e857a933ff994ef52a4573de092c289632565c31c975453288b63e5a23cca9b688c5c920d79c49dbb6306f4243f151163f8a39c982a4b28fa1f7e8f207da9ce903ea499f75b6467404fbb86a1177d7f3ef8f6f793ec4c12351ff000ecce841b88831cb2b8a4cf00cd25d90c8c2c0f5af3010f5cd0fe40ddeebff73ee4d999ce122181fc10cc073db531faa0c359ce31d2e670d666638c1185bb74b86bce9f9ab42438c58440be6649406342108210800e0444831a00e1052d40c213623141224f8e1c42a0c40a2bccc189d3fc10449780bba6059d15dfede97412c469dabb215d27add3d75ed35a7bee9371e97df79cf6dda41454fdbb4ab96ddbb6cddaa0bf55ffadae5ceedddd9fde78711dc6b968c37e166ddf793febcad56a38f9d3ec0b9c3f7f5480e6f6d3703c917471257499920f595ea3aff2b8ed93b78b1d84fb9c9be947dfe97b6eeba7d49ff3e69e6e281f72efd16fa30f5571e97f3ba8e2521df827e49fd069b485cde37daa92b7f26cb8b2e1dbeeedcae8b9907f4e21ff84fc13f20f0ccb8a2a2cb9dcb0793697571bf1926681363cd9aee142a11fa7f7463c2b9990fefbbeef1bd9af88d167fa3ed3f7e0e9f4e0bbf86e7c36649553c8f33ccff33ccff33ccff33cefbd4fc6d361eb566811c050f41b2fb15fb75a7954ebb4f7da1e5735aabd96243211f2cf0fc738c631bfda7715d46ac1bf795886f6fdf187bcf46744f7d5ad577737a9723c4de3f6cf88a5ef6e1dbe22b8afbb7f78188ccd73b26ddbb66ddbb66ddbb66d9bca67c4e8bb95f73941dfab5d45f3f4ca8aabbd6bdaddb66da382eb01d8946ebd6d3c1c8786e175fd65802f359d2c0fca5666a281d09eba8871e037904adf38eedd49d783e7468a804c745a58c36faef67e8248234619a2d7906896167a0afa6a1fba101cafe19b25272cc02baed656cc30ed96d307b557f96e50fb832f67c3ef8fe1cd003b340ac5f0b67a7a2ef45efd7294524a29a594524a29a594524a29a59472ff15c151a7d4bdc577c39f7e27c3f3ea3776eb141a51ba3afd77fad3477df03a343ac5f8fdd178a97ffc7da6f6545a7b007c375e5c1fbdea64652600e0d15afa1a274826a614edeeeeee6e9ee69fe69fee6efee9eeeee6babf94ef463f7d7f508d31ed7d1fddb66d6b6dffd27ed5f2abd387ed6a9e6669bf6d7cb76da32dbe22e8c66d1bfff0843edc9e6b9e94900d278a08a0e84d3f7af045a1ff6644d77b0f7ddfb76af9d5e9fb9eb68b63ffaad12d52cbe4bf0fa25ba5ff3ede8feff785bee52b22f4a17cdfca103c6ee24bc7978e2f1d5f3abe747ce9f8d2f1a58dc49756f2135f86c497befe279f8c7b35c61826e7d8f79affe87bc8d277c3ed0fbe9f0da70fdebbabb512494ad93c27cb634dbaaf442a3d4ccf66cdf035bd1673c161b9595149528cdb8f3edc1efc90975cedffbb616242deefbee995b15e69cf3d01cef78f69fc86e8e2c8fa892ffddaa350e188dbbe3d9bfa216fff8ce8b68d3146f7d4d41b7f374ebe457ff2f1b371f2fda290e845275d8da152c7dea846949d88d85c18374a91032aae7f364c9f2874f2fd7d6277982c8cf5c177f43186a88640d4b82d9b626483e895e6a21377e22cf66cf3c3514d5b48e7cf6e23d9203dfd6c9c7cf7f4b3d115e53b94e7cf466a86efe97fc8d0839f9ae1ebfdf733a2fb59eebfcf88d187ec8f7ed37b9f11f43ffb83af6743df61b248f44a7b1f7cbd518dbd0a891eac617cc3d544d647afb40f5d5e359ad5afb5d63095cdca0d4b8bc74b2aa8ca66c99a07b5d849d38200eee8e7be87bca0ef465bda4597cd7186a4cb4211b8425c1297745c02dab9b3c31a37f2d00f5ba817837f9c35dbe5d436ca813aef0b89c011c9a4643a4139a15252aa162a2e6680375edc1ef2de8ac80edf43953da457f36354168b53048a3b714031504c7a306a0fdfad7c323dd817a8f5a07dfc8678e1c5a82c2c1fe3fb3b160b0b4b84e95595eeee2f3fe3ddddfdfbeeddddfdf5ae7777f7d18bdedd5d88e9ddbda75b3d5028efee48bad5a305c4bbbb7b8f7ef71e2e01787777efd122f5eeeeeeee2728bad5e387f71ef5dddddddd7bb47c8f95777777f7956ef580b17a77d6fbf3f0c9b80068f8006a702f33f8646b690090dd6d0002a84183f3af735317ef4b8d77c66cc6ec9bcd5eddbbba5207ea6433649f4c36f217b989e855e375b9466e62f22613922824728d602894d1a82fca84d20202a42814455dd62f442f6adf8e1788582ce61280107d419d366d91fa502754df160178e1a552522f6ae7a2f6ad35c65ec46231900b1517b01730186c85d3a1f65da971367b182baabdd05c6b19ab878d15ef6a7e8c1a7bc552e7773b7830aaf63d6cbfaa7e65ac5d2d038d9c8e5cd6cb21ddead17ad7b3de97b4ab69cd9542664b5c560fd17f3ced72186c06eb61f57079209ef50e45bb3c1645cc91c4925c560f931f3debfda65d2ec391798cf52ea45b3d50de7445bb7c36c36289d7f4b07cea59df3a4d7740d63792003c4bc662456250c4a2b8acef18eb1bd62e2993b58dac6f644b7cf81f9ef55c45bbe46c66c5ec8a19163c2ebec5b32695b19e9768d7a44340262eeb190a19dff2ace71b1dbefec986f548b46bca9c35ff64055805eb8968d79cf15879003ceb8778f13c7c1865e0abe5a4024b97c5fa55bb34d80a8c8ff12c560fbf7ad6afa40c0473d6fc9757cf7a067317379bc166b0192ce62e4e268bc962b2c971ce39e73e7317c739e79c4b98bb289554522a93c56431594ce62e1a8bc962b298cc5d14069333989cc919cc5ddb6c069bc166b098bb36992c268bc96232776db1982c268bcd99bb36186cce6013a6c17c3ea520389bafc5dca5c99c753a8160ec4e0ab6ccc5df620d04a3f16267bc2c08d6b12c08f6897690c9bad5216917a87b98fefaba6abcad596b269acd80f8dee57bf179dfc334276b7132112763c946ac3761ad88427d81a8f1bad4be5c2c16e36226d3a3541d4620cc858399b038588ac59a90603a55e365a97d4d355e94596ac69ab1cc0280aaa692499692b1642c32ef473909405f1aa3b11f7c70813aa11ea6298cc2288cc25ab85049a5a4e275513ba6efa8d4ccf794392b15a21901008000008315000028100a07444291582c0cc4549b1e14000d84ae526a549bc79228c8618c62c62043003000600000000004a50d00a231520520eb98887537c9b4036274f27c49711e99af198e8ca9b05e813ff9b00280625312232bee4ccb664c0f2341861c21063e4c2de92f4a84e7059f16e3aa700898e0a372018a8013851565758c9d3a637cc7dfb56b63319b9f69821c9941eeea3160e2b4e0982bd078a20706b41a35056841fb4c39dd6f721c07ecdfb75757b0246a164694e5c0bba1961a9677d80fbcdb909da73620a26d09d75bfade748b19cd7576a13c11374541c18f931b6a54eb2c07ae01cf864c4e20a65fa9ae2f1d1157f8f25c23ca33e5e1eca272577530754d0b0b2d9ad2239aa4cdb6aa715ee1ccb379e38fe4cdea61f73af7d209b4f9a9a12881fdc8eae1a86e6f4d6ff3f54b4aaaeacd293566cf43ea9210e850812a3ceafa4bef2719e9c91672933ae3ed2a864db9f44f340ee1e86fd2f79b0a0f30284c39e822620b5d80d09b80896a7d18126256cfbf4837554281308d7716c2a4c2c85a1cb91c2c0cf9c0cfc3d7b84a63255384a9ad75e9d2ba70067de5b94c062e0bdefeeb5c5ac37e2bb4cdab1cb477dec6157abe72370f6e91520d8ea6fe4fc46c203cba1aad8da12891e3e7cad99c20a8fb058e0245f5b9fc8515614bdce70fa63b3f7bdfa8c59f8d6911bcfee2b33b83fb881830904d98c836625f7a841ea5ffa3491d976cbcec4ee58ebdb08cae21c5c97a0d1c1bf01fc6f98bb6699a6a9814571ccde219115308fce57454461c1980ca7cfef43c3a35b7680fc8ee27f3f09aca844bdd8d00566b9fe85e68ad1f1e9e755a0a3f258454842438b7f6d5fe80f6dab68f8b3ff7c5b99cd2c1db4fa52b07a38abd5ec1dd2487a8d0771db2d696f622bde84f28a182d93b3143ef505d214a2ddc6334022fc0dd342eb356b168c3f9dac7a43a573434c579693f0211ed9234a3d452ca764b0ef660193b6929bb4305a962f6d7db9ea460c6a0d13d930f548ca0c47a5abf6846fc4b08620aa4233cacb901c183b5e36f34fe8ab8323b17fabd9825c59cf30591076eb4f1472466f2dd454708e45047916ce86af8b2ca82cdbe745cba2aa6b1dd1a0f49e0d98bd30e8e8851f7eda0f05034d52f2c26f4a11e21eda5befc36c4d14aef7851af71666a70b46889726d8f5209099210fe9e481952aa3c0a13699a9438e8efbd442b8f073e7e98a9d53717af31112b724f090bf4fac898746700163914134184c9b376ef067a74a8fb4f1e584848af590127748957356b359ee929a8f1bae4d11cc75a8a4b9c84ab4a0c0e54d4f04cba0862c31cc7db767e55292417cef8c5d321cc67eb1db98b1d2ee97e141f01a3f8f3efc66244d7e44f880e222a52e754563effb4c0d71e224e9921d2a95c218dbbfa1259aa43ac7431e460fbfb016761fe5e150f6a1b324eeee308297ed3555fee3566e68be9013600506120fc3a1d686a2f8559ee7056c11d8dd8ef89157f1e95871c2b21dfd96919a87f44d948868bde259ee6448d97b7204a9d6b10a5e1b00078ac88604158f45f1a9c12f3081bca8a8ac0ed0401c49d137dbcd3c9534e6cb4ea52c888d52432598450ee489dddc3d97a4d77a807bc4dc740c836d91751ccc9c15c7c92839e93250a1843cce4d95dc52848df8619b4dd6f7d4030b9d207abd5023f2cd02bc418b125130073f05dae4de134056a603e7dcfa900841e5fe5f32cf20d332fc8ab955d41dd13b028173416a60ec90c4cbb6f01a1d0c3dd87528d0b4b142b5390305e6c8cc2d568e38dc79b8abf0d500f644a8dbb1815d153541ffc9ea9131b6a90e179ec5f6beb963c907cc5b710a4eff1ca18c63ebc53063412483d55098559a2a2fc78eea11f5defb778283218538223c44bb75a974a783698e9ec2f91ce0fab8aea2ce215101795afea022b208695722bb5d0daebdde0dc09d6bd4b57f5b19a8a6ac312311e54cf6fa96e3320b2d654abba410f7c461a110828d59173d463419feb9a446e8b00d4168749d178bd704b34d04c1e3a65dc881a557cb0d769a614919dd1d6ac3c57c1811de1a255907afc3026ea71777447c7ec5b49dc23b017c433988f9096f04e4bdc1a59383b1ee747daf2234cf04a2d2988b5482d22bcd5d08537c4cf28536fca795c2ed3701c7e3ecd4497036b84dfa230fc4430fbb6fb1080f9a2d012fb366b7b5157a922a1695e5095740707787fa4cc9d53d8ed96a552f16ce60014cd417e12da639664d369d1d9907c82a28bd33819a93d8a7d497a148d977786ad2b0d7aeb547d3d9c1bea968fb6e9f65ff315e440d5715e05a4859dcdc6bd6aa422f5161472e0a21a76d4d649bf4c9238f1691bfabd6d50ddb5cb47133e2490c31551af2290869b860f663c0f3cb098449f9e0cb1d8ac51c8530c72539af048c45565b716c22da04cb0de596939ccfc817f81388910fb535c88c82bfe127ef0d914b623b59c40e1dbb7420cddf5aaa1f65fbb3f00b64a056b26fe49da369b96520bfff5b27673366db36333a9bba85bcc4a313dee0f41e54bc792fbe9cb59a7c9bdb90d564315078901e1428300ba4dbb7021a2ff5e056ddae30a53f3597fd103e198218731cfdb5fa89afd249253a22346f114142e7755afd9f0067b6e39eb67d133d16500f5eda30047dbd0d6fc09e0beaea0bcbe924d0b58e1edb7c2ccae1653f8b75cb7f47d28194bda380fb3cd4e45091e03362d5587d26d966f9ef14a826cfc1712da7be9db45d73d44663e7c64dce9a503ea8afd9b1bf82368a52d137a232cd643b825e0d64b142b014bb6f35e57943674eef6c4c825d9b053e2eb3389aa4f6510126281154c7b956321bc86c28484a1354a53dc61583d8760426768d0a89838b84555c1087cf1a72d0cd226464b0c80305661d171c56f949c32b6c5061587a0dfea248e9b71d3b026d91c94ff9713816c6c444d705d3b261e3d120dac619e3034e91a66905b21dada5e5060141c67bb49a35cc8bf9414fbbea6c2d83dc45d85f423c8ef0bf121afd93467540e2558782c4829481315fbe3cf2bcb6589ba0b2574e7f1afcc6ec3845ea3a4eabbb1f4b59ad626c244a920e6833730c1042343944608d4e3b341007f80bb19bcc11e5fb6b4d65a93381e50619439ddc91e6ac8f9faa550f01af17bdc80fe3571e65fa118a4143b3d9ea2e9ecca1c2d7c56d3ce53414a22665a8346cff569684be4dc0572b0337837fc43020a428d30ad41cf5c7012f1e3849cca5467e87690c32ea3fa74fa288065b04c2405d00893f41ffe2aa4dc2ce644068cd582697899dcb4a8e00443d80121f1613a72666f3dbd3dff671a52a651bcbbbc4c4d014a51429cb98b0cfa31c7f152d095a21ba009a938977257d75338afda82b15e9017e8f795e8e62e656755bac8f21b2b65e5675119eec63f3f5cd7062fe2917677b09f74f9a037a405c01d1acbbfe8af5385b7a0a84a31a921178ff380fd6854ffb79daf187f1aac844c04347433721204bf8fb2ff20810a3a8860493cfea879ab036a86d96dd7dd766dfcefb1ca929acaed67d5ffbc48f4e9cbaf6294542648cbbff0bae16c0cbf49763976dc91a8bcc9c3a71ff4ca6d7adc37c2a7bba0647ea8ab10ba813122969d71b9017feabf07afbc89ed814628b630ee6242e92a5b52e05929f9385d65660ae4ab807dfc5b371448571b851847fc7305a879eccf5391f4fd0e355e49e57e47af519ddb4602544babbe3dec443059d0aaf5af1dc1dae8986bdfe811183bc402a47f9d624b163836fa1c1ae3c30618b4e476ec313cbef505565368bb632384b45216ece97efdd4dcadf311965fe7afd6fcde62181b7f1b10c10d248db25fb5c630abc370bf9deeff6f87afc25b5c05c4218035a60093b403d25d0049531410e3511488ef1888cdfcfda9f2f41e4523737dbf37dd5687a46c8b61d37830366fba7f1debcda535cd9248f1b3e9209d5d6cf8b9a06d07158d796efdd2620d2a0518115b38721af2402d9242b28d7331fd6a0bd45b4004d11cfe08540a0b4c67c3de11b4a51c81d78b1239ad1e65c116026f25b7dfa6d47426c2adcc064853735adc1cbf99f8b9f7a77ad33d88ea42ecc9d4a15eaac6edeb5ca6e6df080463212147262b8e56b172535633eaa8e26cde1bccf5b810117564c9159dd6253f4b7533249e7054206c548b24397136af6c509a67e9a2ee91485d9663a6bf26a8f88e90fef770b519860b40e7215efe77919c60c2edfac345024303c5bd54fe16e719ab0abc545ae9887ca87c941e1c5a43e66486c531beb873468322d2d730e5b64f6718b583b59a3e3655e7095dd2e8629b77f9986dac3c79ea427b07a41a1018645af5b37264905d626dac41c899de15b612b7c7defbd110e18dae12b11779f1690f76ad846973ad57d77d70e8757a755c4fb4f815b75efe2da7eb737b22499eeb56951838299742d7aeee509a79db2541ed394b691a83888b481b4b9ea857cdf43225b31399105443352ced27bc516866c4ea55f9cf2dae08881c9d749aa358d17b6f8022fd386471a8ffcb2481d7a26a2b73ffa15e13f94066cd10f2760e7b31cb3c95ac13e3071ab60166cb1ca8c542f4fc6f201d1357794d8114328c5688f09db1815e0bb3dd145892621d2628e5c53f17d74ce9ff65cb65fcde01d3e61932a52168e8be57e2f6b10f365ab304bac3a150646caba4af1162a87285d4c4e8444ac10a2510ffc586664f77afa9d47fac2d631d10927ec6b6635792b37c5f02a0f093bfff8e29d295aca5c04ff4c3ca904d77196d422493f73be89e590111fa84fd26ea36be1497af42f9495bb3184a1584771fb4ac79dde0f655737e67f4d14d0ecc844fbfc5928b6d794f5f1a8a5419522cf2b0d5209e2d8189c91666369114735c30bdd2b0368e8a83d7f3dcfcff2f633cb711320f3e197bb2801d9ece8a7ad028deb1808e19b34e539853937fec121f34e4d2a7363ab0a82206c0032eda13bd3b90918d8870f8d1985a6252ccf44982b525825de133d7a186067e5165e58e010a6b8d22de0e42a863a47102908ddd1323bb0c7355637e45a81ad07a1e5cedd0e92115bf14ff8fcf30739c2eff275b8add89ea4feb5c1a463e87d9093e5a0c877777a071605ecbfdebb170a52502369d87cb00a1dabe6ff313cc3c5c420ca6bee1bde1114031827cede2e6d1852c8d12b1401093fc5090e3c2a8d81cf54ab092e2d860f70fc93628024a21d429160912b4fbb65871e4301c8281975128e763404b5bf7396bfae798351a2adcf85592c49609f5ae9f640e748a012a5952efba1203f67752caa07bfa1a774d116581780b4224a50f4954490f12a9e4038955e2c1c42a7d50a24a7990a84a1f4ab4120f2552c987121f4a2e3aa01b12418ac0d8c0a6c028e103477dc8f851286563cd9a69742953e2ffe46b28cc086c735f533577357720c4cc26089eaba8b6502aa2d6c1f05486475fa05f885c8f0c1bbb17b448043f6668f5828e56c8bbdbaf7e88a3aaa7ffd8a572a166c7cdd4bdfa4b15e600efc5fe85649c07194ae512c665d1522a9ddf6adee49d9e4b8a7047b06d67bb1d63565493b40a6ab3c6efe65ea179e388ede8cf706db7d8b16e4a529fd4cdc996d136f1326a8d1f10acb9b28bdc2656f66a798dfc23986e8c74c224cf72133df775774e13a5a9be0682ba93ca7cbda7cdeb252f288079fc1cb92a4cf31ab700d91985703411303148e4a5eb024cb396cd6b8820b6bf05a5ecd4e665aa0d76a6bc463e226b386b20a26ef118e6e6c9c630ebc0baf44b7f9a95d525af39580827da98294edb4bfc313bb8ceaebae8beabd63cc4d8a1bceef379b6e8b8eb28da08673e63f1d64c50b0790dfb6d4ac562ebb2f7c91beb6d05d88272dbc6ebd6da616c33eca58ed2d985fd0cf648954d108fca7e2736abd6cd27385f0428f06cd1a16696b49d184843e94cc3dea78e60f4171ce6c318b1d61dfd9c21d6cd7deac9b5267cad4cf5e1e82cdacc4d7878ebb8153d733f112ab12bc08aad351b82c1910143fed63f8d30decb6fdf0af988a1eff2ac6432fa1443ed52edbbe2330f13d8cbced75a0d5d689880e4c5a5ec9f52da8ed2f988b98d20270fb4fc10946e65fe61367d3182d90faf97b8a1eec8eed60b9e5d713863ad419e921de8e8ccc31219998504c8278e457e18eb32c87b53277a9a7bb52ea5651ea661ecd9b5561d1716cf40beb4299bb968769c745b391f717a5caf5586ae697fad0e95be2b0e3cac76b0b7c612d8e5c0b1ce673d04cb3f9bd0327a2ebba46700d969de9a703de4651ca19522959a489b054caa21a774563f0521a358827eb476a509d5e14b87da801fbb665ff25daa542ef1ac91a79d2706898c7d702f73210a5c6356865612bab01c7a590f95e2bd66270c8d3b82e4e3808bdc266be684d2ea30b2dfb730ca924c1b24055c4ae7479d44a26cb96eeeab6135a6214550b0873b4b9670bf4987bca28e7979213a1dbea91b1260072b8a489840ef32ad75f0a1690514262a8a41fbe2cb1cf4053960f983a2ccc3fdc84515daef4cef402bae053497e8808d62a2eae14fb4e25250882509c52f3a719056d5d8cbb8abcdea3cccdd3f852e11c9910cf809b14db0363c39d8582fab248918c452a7efaea3dc5a6b722370f4308a20d87dd2492c165db4958cf4c21db6652dc9b22cb5aa23b22c54205a905ba86b5a2bcd487178d646a1e6ac143a20960d337b964e7875fe65a3a11c0cb6f6187a7f39193ddfced7ab264cb072c1357b88727094182d981a710faf51169f1429050f2bf4f6756fe3ea9577be13604ee9f547732a2f69e6a461e75d47852d78ffb81975d97ed3632594b3ece261768a1ea5d0c5e1aba1be3d252f1227db34cc0adae451f8ea208cc3e7b82949982a3edf201fd78c9caaa47a114562091e25c65070f3ba86e70dd581351aaaa89e75449459071683c9c329609b2639c544cddc003a82cb2c215449adb440eb062e1be503ec04308a217aa0728dcf78e0fb75ccf311fbf9639d3c3f9b998d172e1c86c4855e4b712233a2e7a4840dbd99a1c7bbcb951c76eb3a86c776ec7cb0b9e51d307ec9a028176f63edbdf98f5608cadcbc98350987cf990cec24478b1eff10836e6e39e4408087ee50b1a4889bd6aaee96172c35f31982fe24376bac3fff2088be42f610eb679077379829bbd543db52bf06c756fed747dedb5c6d18e5015883850608f689e8e0e38e7b6f73eb0d0ed8957d9f1a9a951990acab77e376303ed933ef137ec9792838072eec2b348f9587167a7127278801979fa6b7c41ef0c2b652f60ced497c64f398c87d21e214a41795323892187ae9fb94117cac9552dbab8e1b320d1e375352f552fa42e6838fda1abfaac4e2a9cb977633999a4efacacb04f24d59bdb720286baf0cfbc924db316faf057ec5c02fb103724d4df2c2dccff9b29a47eafe796a8893ee3ee93189c6f1c163b6c6bd486db0308a257d5b1ceeb825681b2d5bb1260dcd261e3dcddfce50be7981560e324858084c8eb184533efe98e7c55ba62802cc75572e03684ba9e27c11bd59fc1a189474f192401bc6f4a00d8423d838a8b9b4c8108b44488b2f3f27769c4fd81ad49d5db10a82ccfb97318a88b5096321247d2c968cac4d6467667fb6416179349600c0836a5ec975f40b5292b3677d20403e95f6492b7011cccefbb57ed7dc52b3f52b43a94a986696e18b377bed8f06e7229e4b2dc3aa22038d1b9fc3c5c5392671c38772757a2f81142d75adb5288e9dad0184efdd99bf77ae5649843ab1ae708800d7d88b8bfc7af09e1593dc7915913bcca5705d791572b0f36d7d9f4bba32242c63a030323ec127e878be5f503ee4bccf65082bf93c6570e566c89785908a284879efd4861223596f4384204716a5e9e9a2a5afcac2beefdffa1f92604cb79760ccb047f33b1dcc6cdab0425d34722bc56613b3f9bc612903b1b96ca1f80fd797dc36a62d603920ed0faca156cc235452c4065d3e43ce7fc813755c7823cfb8738ade92ad3986bb8b6687793990f7d486fb90a09a7dea552565c8db4061d8c2ec284e9a4345ca65b0ab7a86010a65a698011bb51806880a909ce8c38b9955de824e8e5be50dfcbff3ed67e981bbb6ca915b26e62c089d7d0ab01908656fa72902675ff07ecec297e4dbd9a4b5b91c65532940a13edc1f3e08007f7ec98251dc2d86f1aa2e33c03b9f83d5a00927183e307583fa5d61fad8285524d0586623a35554d8b2cd9504647376ab7cbd1f99444e33819dbc45f85deabb2af4e208187952615fe8d69025b573f616ef2119c2ebb0be7f9eb10b6e75115394f37ef1a6ec97adc57213442caec24f83a4279ed31c9ea35f093e9fd7cfd3d9c774ffce2e54f517b757805663805eebce22ee52da660bc06b91d35593b027421e66c8617631b50e75ed192952c5d923200d7523e4aeb61cfdea4faacba33b0b47aee9ce00b49b19dd3d13d3b179d00ed4e731af12f0d14d05198b3fc5802d80aa14e44cf84b0b7b07d0410cfaba8b6d9cbd6924a978aaffa3bdb6755df0b2f54c64decbdc042edd864801dfe76f892adf580a7082bbd81fcb025b7247a3a719d161c2dbe43b80720e8fcd4059804c24b941cb0fd7379dac819238fb60cb48c76ba637a1dc843ca29b969112d9c1ef705c8a3e0fbc557069d14cc54897cfc969ccdcd9bf47dc02cd83a0ee869c880632650d80100013285b82b0a803288687751cc3df7d078f36e17db1c9f6d56a8e48d7bf1cc9f1079889277d0d87fe61a00198527a343a0433df887e0df25b6f00c8d8f33a8e0fdedbad2f4fa48a512b365d558727fb021378caa391c9c0756130c4063b24463d7d34d867b106fa623816d95e8cdf7dabe2a2362eaf46c4f48e8fdb20e98dd54c1b1391d4dd910ecb2237e7ddcbaee2379b371e30b4fde9a6704c22c6f490c7903c77481fa0404a7d1752b6907ff986cf2592164d8510d7ca8c01e40e00ae328f41d23fedc9b77cbf3fa1ebc1d833ab34e622541ae9baa1cd5dad7226367aa270464cd3b7c4ec5090da248c2191106d2c989e93fa96339dc83377370e797019bbe59c3e236ff552aa2bf11e2b5442beeb3faec38768444a9da1e2ff78f8e08dd15b383ab24f8d25f2d808cd05a298f2e0315159e75db8bce71603d5d7bbc7f65ad69ee7baaace40e94b372e001cb81fa8010749340366f4741cacfc10c6091bbb50552988469c6f15bacdf038e27d3de158751b0a0f84f814e2b6c846ec4fabc00c4c6554d57cc94495c5a1cb13142b230617a124f2aa233bd9034d4c3c545af368a2bc1e2cc883c89fdf9b3f2f7e793000c5913d729afd22ca09a58bad1c27e672a206a0f4be1a097be22b3d88b4a18238c0ac39f0a6f4636e794ae25681f1e9c0711f63618c0e57d66860b9d74139f508b55829d6155acd6a9ea87d9cc8c8caa61c8f8145f1b62a443eb2d3625a325bc089318b64a819bb346c6a120ad6dcefbce48094836bf400269d5f3a4025fd86242404fcf939d4469fb7983607d86dd94e22904682c591a6e47e386bcae2b0dbeae79aec6b4f63d291f6f6977173335d785260347fe756a1601c8ac1867284e53976ba44fddc3b2b5b60ab251957444947ce8a116c711b5d16916080c798d97a19d96da36e64854c3772879a667aa253a2e5617a11d51d92a339df33880c311fe239aa51c0aa2e368ed23ccb9fb6da2af6802993c177094545ff50020bfb807ace14c4fb4795ae195a49246ec6dbdf4ccea0a70aaac535caa465beb0b0cf1228bf1510f904a3ed4a6f640aa67ffed850741cc731e16890ae3164171f58de8f9e66ecd3617f12c5d49e7132c0976661598c13384dc0c15f76ad6bc64f91218a1a5d39b1c32f18600ee9cd6c8d2acd0ebd5c29ef56d01d269ea1cd1039587447d9b823ae75c216eafa015902a346362a2076cc9aafaf93a12f710800949ef7027da464e7230a94063396494fca7529ab445de5dfc20ed0e5f805b3ea5eed05c231eeaa1566671b946f230579f9c1538404dc44d829920c5bd90e09ed04a7a0b2aa6b2c56429ef4678930b07f2b58e381a450bafd799ff87c513d7f4023a41f5b41bcac5bca7976891e29349e32051e0d02db67a55a219b0394fc7af96e0696c629b84ab4b4523be8523240919f6c6f2aa0f9075720026d2b7385d41ebf3da446d57cd34da4a1e827677f94699b303a8cd868191d51e24c454ef8b8dcc1347aa401e0912a4ff1acd91f0cbd535c4e95d39d98415ac98fbc36d1bbe943a9796e50b1c1ad6926e636a6779d6f3c474a1277aa852cfccc9e8dc47e02cf4134b790a22092221a44dcb3b4ba4522ac77ead6c177aa6aabdf1a69df5c15cdd4782954215dfe8c4e1726e273a5f7ec7931a53893e62bffc307d65b5e137ec08cf27400db22005132374234756d9ab3af72adb36d23ae5d822f4805e3b2444fec5b5582413c0bca586ead8d31d025c5b0fc096ada5f06e90cba484d3430d7f74ec538b435233b6166aca4a92ab8940b55fa67ed07cfbb9c7b45cd021622c1e329b1887e658a7ab91160b39b92ecb2b3f0ca2dce6c185bbce957e9ece79cebd5a68f7afc3ef83c660e0ad1765ab3852b3ca5ce923ee9b4ae72a69fc7fff1752cf35afa5b3e615d967b42aa6e8b4f281f96b4cf2a0d2208a9d8f6201261bd4aec0c64e6984324148ab4b350285f1e84b167895b405f9a38c28c0996757d0a7c8928d6ffd7d12c833ee91c411eb2a387b332a3f81410e7c185dc1b4d2a982700873f639ee6b4be28afb8121b86ab817eefc6074daa1de067e51ff16121b02aff2ac266290e0200860ea2a19ced94cf62860cd8cb5e29a15fac253d773957beb87db56593e73e919996e7b3801448e6e8d2c2ea40b9b13f5cfc942fa9926a1b306236f48cb8f6ec31186108e297f3fae19e3a8d6a726e52f6e93d0836abbf682731e1ef3fa05e730c3a3cdac77e3b835e2b2e2dc0ae72736c20ef4a9fd9f6355bb01434ca962aaef0f85287718d3fddc9d69f879f98dc131fd334ac78d0e084dc3e93fe3a9f6e8314479576e61324f524e3669c0b2ead44b5de37bb6fee347ff24797600a8899b86d37a486535af13d7d9a86a0e38f1879af21996b9cce623a5e4918476057cb836819b2fd0050cafb94f0e064804722edcc6b139e2b86412756c26fb7ca32fa8d1e675816c031ef0703978600abff2c14ba83230993f9d14762f33c480c461d1e7d92770deade9e4e30036517ba618d03dc88cad8fadca88e9a2a32c0da567b470db69656d5053a88f2683a4a05c5a149bf6b57028a3efbc3ec24b1f7369dec24f55d3ff184bd899bb93dd0c45df8f9f1de465021b14d0de68e37d1c18130fba939418cecdcb3ba617315380ca0f7c32abaf8311ce217500ca63871890c872126ef6a00106d5be059371b9f5394d932b8792e9ffd3720fc201ffcde241bb3fdd717b012b360ceb01e4fd3e727d2504fc1a8cc65144d7471e57362972811cc41e906dfb69a3488774bdf2179fd42be869674f3fc36a5ccd7fecff1d62c607443b7c49deb60be60433b07ab2e5c65b43ea43e1e93dacd020a718e1a5c4e2f2d913bfa0e58fefabf074660fd225e3a008ec56d3a6644246cb9e6c28dc7a184f56692988559e6f2e9af8d734d4a176d73b276130997634681b103bca0628bf8b9e21e2c199deb0bcd87eb7f2cadce7d74c9f2b2b1924a374796aba23488051ceaf2310010488de824434f7e32dcb06f7c93d7d79c373fcac66e22c979b4ea64dbd70dfbf920214d856000d49c6fc0ae87b3b640087d08b941b99e8d84ffa96316b6651e33a9c56c76d4873633908f318f4a3279adb8096e7a80e683984923ebb57345963e48131c36851a7d759bbef9b3424d8eae5536c6653a4478541da0093e37d0a7afe618d2a5aed826da0401980268a02ffe017ef06ba03a2d9e606ca055eb45714782547646330c050972c1b867c73cb25a8e7d0ec5311de32d5674a20797ded90ba3092f6c886ac108062e53cf9c853e849007e29142c4632be7a26daaf62019ce6be862ff84947578bb6499c587ed57389131f977208ee36e58015f7d19fad2966b11b98055dd179abbfe33b2740118b558704615d6ca230bb502a8352bc24186e6fbd3a4c97305a8b0420a8f7c400085c9df6eb3120d883a912d2d58800a7492a9280ca7281f61e4a7eae58021108f3307df080860b284bcfc476a69c9e315cdf481fee89bf4bdc562b51ea37922c94f79bbe14836f9288d6d2a2167de2bc6152600e3af84729c508ca1b1b98d61428ebe320872c3e51318df7702bab100b337c7cb15d2c059ad352de351b84cf2dd013f0f6cc108ee4fd86e20f024f443d2f93496dfd193823c9aacdeaad9e50874c9c9b1dfc4e42900beff48ee22c554da0e6192a38c4388bf5df771eec4100681ad04caecabd974140fa83e1393c945fc4830efa52f2dd0dd48a839ec26ae5a8b7d5d9a5daf4790ba3322176fccce45ef63186caaa2a4357bd2b6faff13141ef2d1ee97fae549e2ffa057c5600988f1d9305c6d54b860514103fd2be81a34302f3d206621f85069662702889b116ea83a57fc17a292b9643208e82a40e927c45ab18438b4fc9c8ea6bafc2efdc620678d55068225ed0cce5b9ea22ddfa62982f4017f2f6e1679e76e8ca51ede3c1130063f40828fb3551e63a7e8ea16201e0a36c7ae9b2074f71abb8bf7d641d00057578d3cdc1324b98420c3f752912a54a35ae6a6d22531c748bb9fcb0272104c1a7ac5a245390a19c3820f131d374ce157829b435b7b18a531e0643d9ee5c5dce37f2d90b016d30ee39efdef0703ac2ced28061689d7b22896048a5b69aaee2dce7e04e13f73f8b259c4546744ef6f0386319741260b3732b9f0b1f90b28cc1a14aa0db12afa01c90817e8e6ccc442dd5db2b4e4f5a4948655ba55012ae861286bcace620aefe147ce2c195216fef5f8fe9349630dd045cea20ebae71deff7ad9bbaa6209a547ab4604656c3b08f5dcaea719be0fa0309bd555cbebf886f3f8fd79eb31417157d1a2bdde49fe97ed386bb7de64162f1b7982502761b0099b2dbe1e03a5e27390c96cdfbee6e21143e8b53593eaf5ebc98caf0140e5f36d3855a0b1b9a620d7a427c326c98e7fd003a7c90b89c489acf39d17153fa727700addab475ee4e620231b1233bc955b732335c39a3762849bc53d1af490586290207e148ebe7f535c6fdb9b4aaa3fb889c47b4b9e7bb936de606af39f70b3697735bfcca5f20bd8a2bcaeb973da06b55cfccb67da97c6805c0af29c511f83cbe0b195f4c4f28587f6dfd5659255286545e34b95ba1ee915323156aa6c097a30341d72a45393d45c0bf4e7caf633357c0361c13a2fc2660625c6d7125bf2a8606fdba567389ce9f2e30fb62894198176d502d40e58e2f2bb2acae154edf9767bed166147a50ecf62f55027ad063b1187fb6d3886437f35d07ed2107376a789155490072879076438a15e773a255e0c8ceea332ab362eced93868092e9fa862e8121991f598b5eaeb5a32791d8843ff95120388241d31164f775c9052b8b083b524cb80fabfe013d368a05068de275f03c26e11e7dcb6ad88b6d628d87d182a3166d3671c19bb66b72e2f8980344991a8cf1d5a535e3750e4ca79419ca5e16023bd175fb3e7cf5956c381176f4ed0f0b45665359251c30a85e8d24f3038d7acdb52d84408080cb76c684318d0c4196d5be34858a953b09ad926b05a5d0ad26bed445cd7d98562b8ef7487b0cd473139f521338bb1b216c0aa6e2b796080799d8414b05632db3f891157e659a61996af92ee140a48d17beadf19a854ed62055b959694b409d192ec2fb2a32187cf39b9eb4fc2d48e1b1ac615b29260069e4f3100e4b50029c22b104ba97fadcd2a0ec0a1272299373c49fdad352655db1c689c2d3ccbaa1bf5aa879dddf5385488166f23881f76a6b9ff18357f084a95f8f877fa94e02ebd8598865a93d4b8722546c0542b72c31033b726ace01cd1989092a41d7f935952488591bb63b159149e257279d1977184bf2f21074d95f8290b4b333999da61c5dcde445c350616f65f0d0ac24c36776d5710fb464d8ddab8117b835aad5d3152200f324948e28561e09d14f0836cd45072bdd39f0fe8fa675afaf6a72f6891984772ddda289f0dadedc552a5b2fa80d7cd0668576ebe480bebff72ba54a86d35d7001b77025591a3f3d0759bf78e22e78a4fdf8aba5e8f72402a2b69503b91ba3088a2466d4e9ee61e333ee04c1dcfd0d09116fe55187ca9779b9aee4cf1186ef7d06954d3001ea9902f31dcd4e9ffa0974ef5498a84d8679c129a789adee4c45655bde6944ca4c916e228a4394d6b44a8c97783dc9ca732e90399bcbdd8408ba8882a3cbaf378289190e5ffe4ef75e792aca47490782853ff1c4628426f4c69efe610e37d220ce4769bfee5e118d1c6372c0bc7317a1dcd9d28625e102242617021352f81d69143e06dd04327c0efe18e2f1931dbbf3cab739a02ee83d724ec17a33c5f881537f2a51309b09e2c48cd5bbcd03e9eb8cfa5d2485ecf50e9489dd85ee3d6a391e2e2a2c33d76b1aba3e8072ebc55c11aaac0effa9e56bcfae687fa2f6f25ee6394b6b45b0b4dcba8fd3d1c75c0cd4c97c3603a2e2b3096625d9c74e3161cae9804f67e0f610a1d61a1f619348d9ab8793ed9fbf1cfebdc0efbf04fb7c98fc09ba2abd2c78462ba9d10bcd969eb14cee37c13b0fb4426472bfb46f3a6e3ef762611d3e676f4c3678e5b75ed6d02d375499ca653dfacaff2fde81d4b5cba7a808d3fae5a49809136f5e5ecfd8e7caad2554cf56835c14099dac61e2c2e66308c56f4bec69095179f942aca6c462bf9276d3fbc124345725053113389575da80a6543e276a72df0c900c85b4817086a7cfd2070eb0894c96cb109fac35ce887b32786697958f2e8dc0b9535332a599673192545f98065bcf12899473ed591aa219e5de70bd18a76bb59ab784312f43060739e09182b3851461bed00003d92897977a335aaf645c85e9dd42c3e2688de3969501d014258867dc5acce4649c6d3ca8693c9b3305af49b7cb20a0ba7de8a344015f6ac62f1ae744e73b530dd73986ba40b784db8352692cf1e78331e2efbff01479ea51c0a1e156425627d3f2e8bef85c07cace534ff5c9f692523d44391ab5974e4a4178ef94c7124906cda09c44bc8858865809a3946ed78697475c28c3194b4e3922a3d128f6f84bf6eca09f120a2181de5f76ac51cc98c05403a2b6b138150220eba9dab70349aab6c0c35f977da071440fbf3d439a889ddd98a32e1a5b4a0864734650f04c0866c07b3a74c93afaf749b8e43de72e06f5a1a35e2404338c26a0e1f3f05bc616cdf92bf0b30bd517b54431b0626570da89eacf2d3385951a075f0dde85bd538501f77044842d2430da380a98f9c90097d84136dc550841b851e7086598440882c2e3852142d0bae5d4c760b5d23348e76464198485da23ba989f0fa61ad07b145d69cf9324da41887fe91e84a11dce6618e43bda3f2b65520e08d316ab92aa115411e40c0acf80f4fa6b01b4f95707e121756467d8ad4965866690d9bc48ce87805613db5773fb374ff3ed0897e91bda20b711593f07a1b3ec91bc784a08b1d3dd074c66b904258ec0bead743aadc0155cdb03339a885d9a2b4f5c7bb01c80f6c83e0822ebfe4130bb8fe42a540112574d2b53108a8286ba61d5bbc58080731331c8a85f310e45de6f71fd5e0ea8f986028602ed11900d33e2d17bc2f23c41b680af223b48e5257662df015ab25844e1c72f40cb32a52adddad40858306b82309f5debe0ae80326b4a700e81a4220b13f911638bae5251bf329576d570a3905c48b722ab98b33bce8dcabc2d18bb378bd60efccd984f20b8570173755c848903a96ec167a067666934786633b392249cb2c25b44e8730397bf9abd8bd2ccbcfca5e058386dd72336783144f3a54dc998409812c45700cd6fa018cf15661d6482ae208dfca0e71ac99ec4f7d5ea8b373e02311f2b765a3a5fbb5b01fbd349915084747c5b89337344a4994b73507ed2b684e30862d449c6a23d87846eb3a6141621a0f36f0c739dfc80375168b097191be990e868c9e6db6d7b8a05e0dcd32696f65b07538a015c15ac7f00f9feff303a9a9b0f135c7e94607029d18efb6ef1c017547b900a5a1281e318e332a2f7d90c8ccaf55fde9116c26e4972d52cb277caf174c4e7b0adbb5fc1cedf1b1664962409f0a3189c768857487d598a4211c78e60535f56d3d557d3372acfc0189b1968c0045e8fa30d99e49b745b22a6204c6a9a9faf16850e0a24162a414bae8ef52a9c13e022b680ab60a70f56ea9b51b297e29fe83a19d6874fe026ae90022a2f2bc71c4215526d427e414ad7b6b4687cf0aa143880ca02056246065f86ce4b816948768eb52e13082466ec2aea495c88cd76635260adab4881c751aec6af1c8e7e66a36e857b2716c4304bbc49491fa43bb3caafb7e14fcf7ab0cb90c440baddb98065ceab99909563c52aa86c0bd82d6014deaf319a8b65bbb42bb521453443e8a35156d8da30d3b0ba9ac174cada1ea3bb9c683fde051405e5109a873a42ecaae3ba6f5cd96b70213bbef5cf815420b16c63ec8757f402dec17785e88be81bf6349719ea3afe20be8cf1ba39641186e77baf788fbef3c6d06b10229f885535dc18ece01c0c54dc2e59c3447307c2e3ee29ff82a7e631c697ca8932de60e90d6a29bca504f920703c43d6c51c2cbc760bfa3a9fd80fd0e1c7c8d47f7c2c08da4ee3b1f72d5431d03a6c0898e02e7bb22a9dbd3af05aa1643d201096daa74b15eac36b3cba77f6a25274e15869e068189b2f2b62f9c3d6f4e70323b71c2e5514947791c5faa194be521f884ccba828107d2074abd0a40f1cb74e285668044587959f2308f28134683ee0bce103eb6cea00f21d78d08df07ca08723f3abd207925c63905233a83537ae63db33a47ca0083b1f186e0d7483fe4367781981632582801c02a3e63a67c39aba8c5ec0c79462433a2f5a03b1aa0402030db19e1308f0f4e10d41d515e4b83a81008c0281919c7fd48231ac572a0df4911408300de91576e91694ea78c6e6df0dc0016d05e4a8e4b739de1bc77b99ea583db75e5f2e99a5d20ce553928e11f9848b1ca219fa619eca41c0251fc828defd2ca77a7cb42e8a5996d5d434d30789b2ada89b3531f69a0a6887472d2de74a3a160d38f5a6960592fb535b74f64c3ab7853d58c7f506b3c03049095b41d9da4690be495c16018e10f5c9d528675961c4989b4f86de5a9625c7fa3e5b815ef4bdd5ba5753d9035afa501e63d5cc29bbb9cfde7428a6beecad2eac5e56298fc5649e29d8d32a1358b79d4451c41cae451146d70eab0a8c9e96a7a9fc04e959600fb5edd7ed8a5098b7830b164db471aba043585b67c84a96ac97cf2d369634ca8ad7f0b82186a5874cd580575e8263689aceb28988275b44fcf37291a601cac1fff19334bc322cd26b031f35c9c7115251a7b087f8d5f20e0c83924f324d0a219e81b5262af1c796a6278001be7ef8a097b2efe5e888fb57ef7dad2e10dac0ecccefb152adbff1beb03f39456b2e1e892ac0b7977954462813b3a43ea36ac54e0ae958033ce9022e10289b60c91e4a39a4ab7068327a3a3eddefc51044152ec740daa342a8e7b6dc3ca713dcb12134b939bdd66a99e4bb2479a536eaf58cbd664058e8a1320a75485d6c97358ebdcdedc13c1ff95cf0e8c5cf06f462e02515eee0151b9b9767ff3c6f1a940c61ce111de7f70979f46dfb2554a68a99c85104654c9178bda30aea19256efd486a5634d3eeff8a885036b427ed1fc2fa2f421e426f69b58e48853953aa9dd93cdf9b9d805afb1d4a5ab60571ad9c292972a8d5bd25d095899f83a5610b9988ad87f49308efb1938ea071dea21b7b052f8d71f84d1703af10dda81cb1ca5779fa295181c95e339bb4a72cd0f4b3d5585cf90c4e2e97fc941359b5541b10a8410836e32960e13ad2ac3d6086719e730ba1f4c02a798a50159f063b028630652e505731fb02fdd1bc90cee2a8bd5c2d708ff0405d5b4da3cd4733e0849203810bf0d38a264774a5148d27dedb5c351c67fcaf4167d0d17ebe8d965dc4063d42ce6fab50cfe05ec9aeaf5f0c9d622efda8153abc74d9376e6f62c5f0b7858ccc776b45ca138e07d78b4f44a96a61329e8c275ab1b502ebd66e1c437f0dbe206294b3bc71ad1c2466334ca078b945837bb0c151a611de0b48044a37ef299f3bab2592ea48c20cbeed9a801598ad4ffa027aefca80ad25d1cc73d001bafda2822611e4870296c2e6033425505fee12b68e233b321de69eb6906d8e136871ae20f0027287806853be4bcc08e3f60f3445c5e845431cacffe4ccbb6ae3244211704e27a91752b140ecce71fe62607ba507a6b2d77c084153d4750911bbb985ed1e7558b3f2e910233cdef3e60372106f0450db50b0ff7071fa66e09ef0e13c8ca617707878b5fdef067b5ca6c3c5b3eee1b0d0a72bb004a56864fd8111405f12a2df2417089e90dfbc9a1ae7ed7363fa96203cd1c51d7b2eefc4ffeb4899c0a1ec06b401826b6a636608880af556a242cf37fde70ac9400b9446cd6f089d702d6ca7679ee6a73405918c4abb5c872f99d9851593200cc453036030f7fc89509d9dd815a86e0dadb81062a41822ab88e8dca135faad61d5ca8e8e7ba0a2d71c29a7600cf84297f009f3907a1f4aa302d3251c1a9fb9b22c006eba842649d1aa3f65590f48c1429fa82b99939e5c4b9fe10d82a0c37e30126960e450ea2266d0d041b01351d01b0c27c92028ed71bfec491e2720ad15a4606c3741d0d4f59da301b2b848ad3a979b07ed6092c60850a8f4803d1f59247530ef7d148b1ac21216a5837229404bdebbb03fd36d07b6b0ad4a555afaf02c7932e6e8c0bcc4291ee5f7e9d9c2f334b0f0f15c01521431ea1153abb4b139aa60691ed4eb1f7af82701bcb0af902c0535a3881a854c49f9a5dabda8f49162f8fbd34427d4e6f8e81e5e9cbd80d0fe0972442ea93ed366e21421066d8bf164af6df9f166a8483a2d019903f740595cf583ebad50e651db861c024af0b07f5a61b54030fbc3b2f8cde7fd83786790794f6df3340a919af57f8821d9cfc15d2bb2b712e52019d5ea27b31d7157d20a176927a2581a58749046068fb49e60d6802cbe25a3873b2f768f9724159341ecc886b25ad48a702fbe70f4fd43658e412287c9a73f492c02c5c929a20a6f05a4869a310f46855125193dea04e2b8e8f9d0698a3c65c3d99696202a894adfd36048d329b215e773e816732babea5358aaf947a2f588175c52e1f4a32aa5a29243a9058b26465af9032271fcc9f2ee94a6f1e8dd9f3209d3dfd677829ccd572fe7ca599c5eb1bf1be5307c7dbb572472f6ab7d8e94a7f1abc5df3295c3d3f677a64e0f50ed70c8e11c870ac6440c74a9acce363fa485773aef6343429bdf10c406f91dcd0ffd8439c52ff1f4376efc9cc3fb605ecb8db6c13223a510ab8365dbd1e91a641d5e6795bab78832da973ca5148e6be48077209a37d7d495d9d1ebf469a394773b5301b0a2207276a88177724c70f6406f04571ca75fa97aa4172e09843be4016378482116e892f8bd990ef69684c5de3858e86ddc8a2b49ba4166f3808139810cd0916a757b9252b426e7a0325269010fb582166cea2bf7dec3e94ab7f1f9802ab69e9f22526fe0e28b498a400d98ba749a908ca21374bbd8d37956fc7f2534027a02944dbb7e2651f3bc0eaf7e6eff37766e0a045d41f8d2f7284438dcef6a5417fe5195c825d0fdd4380f6fd7719884b8471fb535aa6ba27437e65125d490fac0b6c38f8a5bf771647388c9926242222bd67bb47e464bce515e5d0d179dc275d3f2e496922941812a2d18325ccd3f43342af95c1505c88fdd51dc393136b3c34bd53c10b43f4a5497f1e18c1c97e5f6a43ea43848488bd8c2438aef3ed27a61bbecaa00709119c7bafa430454e20b2dface88cc03cef8d34e50ec0c0235499944bfe7e266dfa91e4725847f3fa6d93132f7667d84e598a7e99192838f2bc4e081be11d97961726ec40db7cab79ccb4913dcf1d1dfb61a96c99e5b352fb9040929b6dcb1b9af2f1dfcc2abc771dae81a9b7e93d6df04de4157b38e539f03ef4b95fb48fac707d0af0a4184eb74c6d559d6c2a83de8fdec279bae3d4020faa3fc4570f65eb32c42b094f20a844c7e8dbcea6f37f2ca4505022fee9f296e89fa713b4b00b743c494eedb07e8bbe4deb0c9f5d505264e37853bc77505322772bb182401e51ac4c6c853ce337de9d54ba329bcd3981ae49e69a8a32ec5a65f8c77c7c2eff4a55f44628df730521a54be239a2e894209af4e36ee28d4c764335491cdc34ecad1b9d6b72a3bdd0f24d19f49dce58565975d12f85e00cd755f5b588fce16657d93dd3a0e2f6bc6b577f015f5823fc65290530678f1ace085b4871db37fd8414f6e2f644ca6bb2bad6475f0859b6524fdd5804d4eea9513bd593c94d32fb5bea52e24e7a131746b25e8cffcfdd2627938dcfc99ab001ad44369ba5b2af2b508f9fa945a915d4a6f3e0822ba842c551991f00d0f56fb3e612363a8bdc66d328ab3c26722f961d39622299849d8f101dfda7abe7e804be3d641ae1ba0e4ce0ae0dbf9f1823fc790085e9437ae385ff16d570734833b96391aa94b4bd6d216ec7491ccc4db094577eb801e2d5ce11074443f91c7dcd7da5309daab197854ca24b28c01f51c890966589224d95c6412c93af8417bf030829297281a950f8b77836f12d2c88953c833ebf87d2e186f51a193ed55bb04bc0586c4229ee42af44d9a01b14c331884dc59f442c2b016d35cea05b8beb0333002283bec58260a65b1e247bc13d4c947f2b50b86368335238f43308c1565d319038afc266a2fabd459995b6922cdb9d728e36b670aed4c3dea9199659421d4494cdea673d727cf5bb8ccfaf065a88b8dcde0f53f42d1ff81c940a7e10ad822e1083a6a9a4ffb6b200dac229910ef9d525fe505eee68f673d645a6dfc298d90cad8f7a14121165ca0497963ca5da03bc230bcfc513b7316a09e961a6527542e934b69eb3c79d43b4b3ef5564e9d3f5c3508a1af16c947af696fb4f1f6201f9a771cf4ada38cf1aeb382f4af2dd336b5b012c41ed7a72b990d0d309fab243345fffbfd4735b3dc08996d9d7cc0fe58a7ed8fcb8d94db6bd167dc89fef035b39c68916d9d7cc0fe58a75b93cb8d94db6bd167dc89fea036b39c68916d9d7cc0fe382dfb973d51101b46ca658e4a71b0d98f42760d67115c09c0aba9b385372210d0d7949325c0ed2275769462964342a7020d111f82c76f75527da407580afc872e13365dc43d242793f0b2567a1739c678816c7635a26b9249578bc931994fd7648f653b608470910697ae7b8075445c1bf5fefd96778698c4621a36ddf67c40d144f8ed2be9d9fb68d2130b74f41f60721287f5ad032663e7cc960ff5b14ff41ad2a35223ddf7115ce0cecfaa17c46dfbb7aa6ff36bf3842dff594bc4db95435e8b5b814105035c1d065e9c082daa89a7df39b4961a1b3f93b2623f3827bb3bde3a19609f086ca50122d3ece533a09006492c3b721377a6655c770ceadc003d1a71057aed5c23f1f84e14c32bc304896ac390093cd2eb1e41f3d28d37a1b575a8fb8b122b7ca4a579caf0cb03afcc8ec0332c24d1642e382271840c2218025ab49a3db5ebd49fab59bfe1a0524f02b738b7f3298ac5e75f1434720223207ac2d95bba7376ea310fa9fc199b3d4b327e7c799152f25f7c3ecf3cc438a970a875d828497d962eee3b87d08a9137b419d6cbc9091318ad9b7373e565138a8df8ce655bb6c91dc85e81815c13a1abf739cbefe72115f51761afcd7f72aaf4f72edfb24dfea0fc0808a4350bddbc73b9cf8b7e15f42172a424ae75a8c93cfd44302676865e24aa9d109a215f1845bd8be5790294008f48379a7b120b0ac3f05d12d433a53b6fd6f8944e499fc21011164a733b1819e6c94701cb16485b0908979c3b769f67e63b048bba7b512c6f110b5b06680495060773495ce665874ed2af33705180558b8f2f432121faa9300adc443082b8ba93ba71e58c41629f7eeab4bbe67936c9e9f12ac98994673000ba2624d2d84694628175963311a5c2e4cb478a2131e32d91f23ef8aa78e678483d77d6c68c8d45fe574d0e897d23af5741aa1c67f3873b8a34733cb9ab981c4edfe8f09726629ef877e28beff34dd9efbcbc53d86e4c9138ac4e5e9ee71b73eaa866339ef8f58bc0052966f939aa98f415221db0705c6f0b4c98c6b2f0865c4c56ee3690d665b6860431bf2a6d2cb7d015a0fad8a7eab28f7698d42b7f8353784b10e88502886d51110af52bf65e43a9264d77d813358f083eaa27e4d011867d4c84598489e607f7654f4bce8bb820e6fe9d7bb0c91d00fb26114046a223dfb8dae797f580a772e728eb35eb0fc166a91e178229801253e1d6da04c0bc7e12965c6d0b1e24ac078a5480ae840600c8d4f6ff73081d8209f444b189dddfd4270585ff67b0f5e5503ec1ca50fcff8db013b737f476e36bc22fda5c13677109d488c2d7857e582c6c870c890739e117f7e56ccc80b004f996569fe9c30d44a9e490427137c3a10abfd06ee51b5abb3996711fcf4b90c447dbcaeba6cba50b16bd2b077039d21b257e4ac7cf2d9c3cdb1849e75619e945982b62df3a80bc632a2c10354cd641c793f4517113a40dee983a366e2bd43aeeb3b3634e54f7ec2e6f39d9d927c07d1777c60c2b5f74261cb2c360b145cb52328cbe93ffab0d9d81c94930fed9228ecd75110138812ef8ba8989695a46aa97bfb8e4a473fc899030429e2c8c60f0b3096cde53939a06055c19140883a61dda873be28900e1ffc03891142ffecac17da45e0663f2b8ea28e34fcb0f2ec99542c4035abde34a7caa75e28bbe7c4523c81df6b643993730dec31a1daca644eafd1f74c58e1d60de8550d157fc0a431ae778a0eeb13360c0b51885425e8dceb4f09ec30d23c8570fd00d3c503dfd3d50ea908b81abfc80a46f04b1342165323ff28c3592def32fdf363bf121834abcbcb099a052d534051c44fd824c06a6ab233ed28edd3cea95829a2c818f4d910bd90c6f7a30a96a2aa8c751afd8269c05d7ed8b4b39118549374883ff8df2103a1f776deb978664aac86f4766e89e91e79930140b72bab4c78415a7a1b980197e6d582028d0c1055fecf9e63a36efcc1df9cbea9ee6f9fde4fc412e21b46fa03fb57a390d7e7f4ee7f63e8b0fffc4bfc33f8530c44b6bd6278eea37802701d46370ce46c86dd633168c82a4df0db23a94ffe247631557439d44662c1122609002d67f3ad3814f7eaec42bff3aa3b113c7daf06511436e84a7385e9551f469cb045c1ba56e0a0a3f383a9e6fa0689fa1f4bf4df201c729dd99dadb70bdd5f11051027717ae97b04ed4d4317556757a94da82c66258636987286d520716728471f81b8f1889a8e8a32b0e7edd607a5502a26690792e13aeb5a8c91f2db7521dbad55ffde2df6631b26e26730b531ebe059c70b1f8b8be76e798e3aec4867bb992c04333f3cccc3c1333cfd44c339bc94c6632b399ce6ca6999879e6669ea99967329399cd7c66337b6227ba09c77569cd3514f5b8d77ec722fae385634845b6ebfa4478c2aee142399c62505e3d8c1544f19437dcb0a07ec1a7e859ecd51b5911152163b1d7f2a50e54b2bdd1266521079175a38df8ded1c963f8d494646a2fd204ffbac201ee6e190c2f9a5fd88a2b422c005c673d24d6eb381f41b2b552c7976a95eaa11d545deac7a14854216e7380c13d92520945044738a916332fcc7c0d4939d5fc2ae9909781f100e811ed11a8307e878b824664443f61d152c09d0900582c02806b09e47fda5ea160d748eb18e0ff852ef24fec8991abb935534d399be9a95b3fa5a6a96e373e6de9ae5c35cd69cdaf2ebd91b6b63a9df1eaad3bb2d26cb7353eb5ea575a5ae5ece6ab36dd945bb35ccdf8f5aa5b52d5b6b3999eba75bf40940b154969c79e9074f15afbf8c61f1ce3d30007f556f5e6ceb8d4f7c0362d9866281ad2973d4c205a98550e79a20aaa0bd31cba980e6d86adb447e832de0f75b37b2cae781ee1959a81864f64c5c8584eafb90ea211d32380e67a981ca8004dfd20325bfe4d88a5add45f774b07a1145bb0d5857ff00b9c48f0c60cec0da3a7d7c4d051d050516e2fd335dd9df3ad665cf26ffe54f18f7b6ef9d9225293b174808728bf9cc8e3ac959a54db712446b3eb0caaa3bc303a36ff60adc7f1070c231dabc9160a74f1270f67ad7943cc1f4b06a4f5a02e11437f30332bb9d5f524cb7483b5b6bbae2a8221e5428639d15256e04fdb1d4b7b1539913a4245b0e22d7c9b4bd24f2a0a42a3e1837277c41752530948f434b8d2964f6cb4a597aeee475d4f7b20724004c168880054ad8bfe22b6e9cad9c0425c3ee0ac51a0e67e244fab135266515872844b34c5056d14a582f0689dc853e916c4049a2e218e19f7b0660cf3041de0ce65ef63badfc6e834e0a3c60f61634395878691e37470e0c0acd4e90a17f380932a33f8067c714ed28758a188c48e50711affd8233e74c53d84cb028945979c09a235d69e4cf56d744ab7082a53000b81747134522d9f0210431556ef227f531fb63810e0f94e65da12a1046e9cf406d577bf1954ca2ea68d882ed51d72caa162cd8b86c8c8942fb63c9b55e9950e7b5b0767ac38fe38a3a3723159793d49d9ee5141a5eb5b8ae2b68612417316920d73a1b820fa267852b8e2bc25dbb2ded9ebae1e92dc248ce81afc7a1c4a6455052975be946cd43a2c62ee8cd2f07058455b11daaabc629e8fe2815a87196d449a9c9af7388e747dedb4e47dd8e1a698df30003af91b3ffea21c587b47bb9b3019c77ae7cad583d3b61c26390cdd2d298596e640ed279b79a73fad8084a97111da155c9e9eebfbce03f4609223ae8435cae81a9a58789288e4ca7e109c1bb78490e8c7ba5bd3066d8fc5a5862c92941b276744bf55b853caf8a50ce8005ba852c624c49440008f326f3b9ecf30dd458138c8efb6b30f7048588d1bddb4324943cdb1ddbc035f06036178adc2e38490d23844b918dffe535a75e9c7bb4186ac903b96f10923e0074d729ae13a496f9ca9a88343441b12e991c8cb15459404a8d178cc0911d653fa89be3ba4d550a4916cd06c6d18e8f1cbcd6b654689532365626efef875053b39923e2af135a903ba9d5360bcb0910be78addba80e4b0d88a0d16d4f6f03777a0848e4d37d0f8b67d161dab8f35202c052a2cffda030a4c6d98e5d40bdcd1affd1128747ad2a3b7530cce53966f2f89a83d1905d6c9a910c3e71148ec5dc1a334d6b5d2bc449f894cdcccea227211e0254a9ac7c1a946c9767c543b4c38970cedc24b292f2f4bdbbc0bd7dbe86004fec6d14d74e6b6439a27a3ad39d696380a46e46479147b3ac3b50076862513642b0c551c3b489a3ecf504a1319769fa604e35d1e40882b99ac89883d66ca8e5e97a6e745e82506ab77678ed89c6d49910f793458b58203f6cece31507b2f4974eeb15ac08f06b146c5e8c0f41ea4da1391d4d17b01e9a1909533e2f0d6c5d64ea0fe7a4188204c8ebfcd499890d7587915ebd2b0894901efc6189e2fe725c18a604bcd1f7eedde0f6e30b1366ca94b773c3fb22be7d725f694f9650ec212b8e71c53dbc3c2e8adad0cb689a98b6ff3faaf98310d31dbe2d2a1d9a1ed75ae1a5fd32f59bfe9005513ed0ba580a2db978ad641a2689523727b79ed16fafe9d07dccbb54cfc29e89003f3b6249a7b40e9ceed8a21197a92eb8f5d7a4f55ba48afb40cfe2c04bdafad422002d681326842d473acc7ab5e9dafce3a1b5e5875d3ce59e65792d168f9b3c8c2fea5e060fbda3907ecebcb631618aefe2c3d474467f9d32bf0cf9dbdc7ea3860e0d5e341d9cff909ae5745e94474acf81490b9399aaf395c0feebf8e251fbcb16ff99034519bd55b42220fb975dbc2065a07298490b67c5a806947855700a9f3dd8118628b34822b92986091e6e6c3a7f4b8670e4890af7b2459d6c64ed876ae9b3c195b32876bc61aa17872476c08276486abdbaa3d20d7646b6101eefa1303981f2729211a4f6eeb1628be42f13bd7b860d4f67fda088324cbc8d3a3529de110b7970889eb90c15f494b0374505491ae0937030ffee703ea27a23b432aa87a514318cdfc6ff4cdffc1d3d11ef4fd5dc8fba4b435dc121f9bf9f7e7a1460d2b719355e75f040105aa3a5ed4c601ce0e1d68058db0f647f9a28768d366296f94eecbfe7b47dc1a2e52f7674b7d9894b31b962b25278c5531ffda5e58b82a0fd857163d87e60176837833a43bfa8f68654c5695ba0a8f305122b308c6c1b2c33f2016ae103212e1c115442434cf1534d11d70b01d16abf2a655813cf3a9dba6b4cb0c9173a32f35d118f2c492180f79cda23a778b27efd99bc5ef6cca09a920881151467d2c13294515f235f42962a748d8dfb523a274dad14dc72b0b204c1237931c1cb139cb2c440db7c63fad00da14843e51fe6e05448438e5e56c62e629d36ad70795de0fd59aa6d31e98fe421baa699bed990e8d7658586aeae52fd109cbb3ee1328ddcd28627732b1175a2e643ee080acffffc41aa9302f606c386041b1b627d1ad259db75879dc002100a81a263eb4a2288eda892404c54af9df7608d9693dbd739256fdd4a04c3e5a9a8147589af58cd98f2ebcd30e1fb1cab9bdd8fef84458dbf805ae25e0076ccb794e55eb588ac34b0b4c25667a111218e25f53112a356b4627ebb43b6859b2c2ea31fa4340bc1ee0c87eab8f739c2b9f704365df712efadb5de6ebbe166796d79e15994e2c20df1d4776a9fe0176d1e4adf07c06463ba8bc9052e828171bfc9a0f91512b2c21df8f8e3f2be9426c3596685c8205623856757a639156b6a24a20d381878e0545bb533c062a192ff521d0011de51dea6ce1c6b9bda7ae531a161e2b7d8c116b1703bbe669f7cb7b56f822c9f637c923196007aa019a8249724cfb8ab21a205434ea3e8779f4d8a9d527b4a07c4deb13a70815900a3acdfe64d257a81ba16c1efb243669f3e36d2cf5e377f99f63e3b2167b12dbf974fd333b0411f24a402741132368195c580c719a350a28f115158a6c1052b40fb7fc33a70afbbb743149453b3dc99cb68d24d39a3702f2aa7de0a2439d60ae8415071e2fde718602a7af0bc47dfafe26380a57dc718acb6165ef2db8f7d44dfd98bc1a82546f4b10baace004c609cedc7405f34fa1b10850f196c6a9744e712d84c52f8edacefd2ae3eaac90877d1ca78de12b8239cc94a0cecb559b48e5e390da920fccaa2018c8e92355593eb0d8852047cc3245ccc3f29936ba229c93432db46ecffa5f73c4da1b8d1bc826e91cba23d2e640aec327c602ae0f9719a937a9a2a9bb4593dc4cef1c34ee0eda2926098d62dd2753077f415d7e34a49c7bca98b0b8bac8f3193d9ca14f753f55c88ad95f2a9bf979b34617b4a8a9f3c364eeb40ed32d452610e3d3f884fb3eeaf9386aca9754c98370e0156542e8c33e8846dc1ddd91d7fa39f2826924f3c4d855838b391dbf6dc61a1fa0573876b686db0b7c22141939b20671e01caef8aa2d5797ad14c57b44d959f3944624c83e8a94258c04681b04fc42e4ec102bf73cc15f2ca0bec9cc130532c541002f20207c72f22cc2805703029485fc2a29681701c20bde77785e339cb4313e977c52f2d48ba65a8cb6dab45fb16ad5828b9beb40e4b82dc2857b2b5c9a4b403683f041bff0dad77c2302b57fa89b1f3128ca75aa8ba7adf663f582a2382246cce9adcec3d0e09ea1067ee89770ec61ad90733392a334aafebd4d85d01c0152a7f40900e73deb1cd5ddf404249c31d0390673795ebb9618b745caa6c8198566f367172d7e490d666f24475ea9315a1faba1406a8db86d2ef2025f33dcbbcbb2ead4efdab7fbe9bfddc1f36df283631e1efe26b2ffacf8bf80188624445469d88e47fdde0d52d37643e90108d67ca5340465caed69aa729d3745348b95197ec45e148dbe5ad7083b9dc1ad2ea9549bfd459a619add68a7d86e74ecdeeaa28c31a3b7fe8c74b3d77d5ac2e85236ebf94e648b9025e5728e6e4b75861159c64b189ac58cbe4435fe8b6cbb2fa32f3040f3dad9b1b0db3fea702ac470327f0cbeef83914b73df1884e29ca7c7be052a5401bf1b9ee4f57a3e78abe90c431362f4249eb296f14924e4b0a1e84c6127c1e8eb387327e1bde849ae220b549a9b2ca619ef87f98fb284996fcc4bdf4b4cd07bad70354f3627b3b1b6f84f0701c73e45cd2d16cda23385e89829100c726867085e8bc477968cabdffb87d8abf4819b6a26d1ce41dc9301d08bd7caf4f1869e4c450a14948811f01c71be9571e6f2e7f51e0a270e61e270e6fc40615d1ccae1cce36f2dff0c309e801c3a951c9a057def3f65132f7e47863951058e8d23b48b74849bc050fc015b28626a8e6dc6b1caac37bf13a36d2066364f8481408daba52b37829973b2c9252da07d8665aa0e9a3488ed5805c3d3d1d3a2fdac175172abf351985c1d70091b9084a1bb327d1f29feaedcab08784621ab0255611b8a5e312a719709a9dde5bc7c0e23c4a153e842f318920feb3511f421bc33faab35f8aad140744df4ee80f475ccc1fcf64303491ad8065891fc5c5430730f7850d04fcad9316cfe751ec099dace67a4290843c96f422303228c3ddbf9475f9ae439706a7fc8873c0346f08cf31383a0d1e22cbea762e2b83d91c96205d31837d7c4da6e19a5b5c93bcf42789a7b83267be34e47eb946183052f0cb3d293aa4cfb27c95eb6ff16e39f0a24c9b6780d23d7468848f634ac88d15428ae4fb0555a816a4d9fd7f08e0e311b0f3336b18c19ac0784a16cb26cc5480ef4d94dee797b38d95c0c56aee0d09205b5624323f50994c1b028ed67fd21cd9a147e6a8c3c9ee8a859506611e0b71b8860c6d8f8f8e817829728fb3f9ad5530b3d5cefc355e92559beb378a6df8b9782b376242a9d4c9ebdd4eab3464842bde9fdce525cad112b76bcd0f3ca7e6b5994f78366ec51e4ba56e96ef4633f10847990c33956af40d6da68b51f6ca573011909be360b1667003425f8d2ef0cf3adde492a8c75925a122f34722ccfe58978e72e3b14b0b03d142e5293d7f15940c156608b918a134c89079acc418a25216b75e744d33f54a3e6b008be5c9dbdeebb9da678aacb59319c7a561e4c1f163f18ac6d9441409251aafad9dad9eda87419976680bbbf6a2503701258bd9a686fd49987d8d2a33034c426be2a3057a3cc956004e2b88aa707ea585d3b5d911c062eded7cb2e4ef19b201f906e27b8457b422630ee3aae0d6fe50bbed6c39f4a74d1b91e96fb71fb2bed739411cec0ebf3b3a2011501b23f0ab2b586a7d0740b240268b86b630a82c5ae74331100ad57808d20dc91bb013308964c8bdbfe1a5089111d06dcee0162d077a8013277937029c1742d8fb36316b97a78c13f09d4c80bde8cc7acf553a74dabc6c895142a3448b0440923bf79cc90fd0242fcd5f44a8a6415661661c9e6822c3238171d1ad549fbf4bb32a7d89e518268ddebc298a51ef8a32eaf00b0f5d241857a806914f50671072de0f1602e98b868e8de7211080af32f621f3fdde0caaa76ba9ef19cd49c06758294b83c807bec52bb6abc60940992b77f3d0b900f1bd44f01e0ed1f94bf6dae25f5028919b70bf8251343892e904fb26c2772640bdc01c9115d953413f38f5a9b83c193c302a509d968bd5d0e518db25c7cbb7c0dcf65e63fa1862c33085799c23c375d460150338e510a368b0c01c8f4c16775165265a625e703779218a3ee982c3a91d356443f54023367d844a0433e1913dbdb7bd10ab3cd2c2504003b1c50cc192b5fa200764a6af0b073227511794f217007fc6bbac49040379a19b3eb1db9b010b1c0148513c98873889718bbae5654ebba406ce8258f235a2cec3ac2c9424897cc95953a59555b2ce6992b9c0a88c6642170c322f032c18bc2b1dd87d189a5c0565722cc88ab3db1bc0d378c164b2f428796fc8737bfa1e074e2801d4a0fc3a150d829d753bed0a2fcee427a88b609deef210614026fce891803f638334379b89b937350b09ab66dc95a28992d6c27f7e278da2d24984fa9ec51c91fba5060b00aa4846e2fa4cdf62765b7098585b2fd8f429cc7504d4f5a0cb4250b661f3c99140943268f7c89f7c2690180f8d421223527a74f94fd97a5c767790ee22c60874c348798ca2a17a7bd435e807e5e48aa222543ee7cbe261179ba7a7a0e2632527edfbc5fdac8e9f7b4c1064c7a28783b8389b2d83913db4717a6d3af1866bb85089a79fb6e9e7773855c2e292ad3137af8a4fd6a607c8ea1c97e95b1c742ecb05f9d37d13cb2eb5778a2d0a1fdf9b27ea5397ebf824912d7ea573eeea6cc85fad53380f19bd565bb556df5f87b7a4d1038c0668c2e3d30f42bc88852d5f3ab81ee63b00faf7875a2817cbb6f9b790f2d1294f1e757525df91680c4fc32285eeee736bf1aa4b8a92513ce782c54c430d14ab793a0d84ad398177c7a009d29627e956a2ccf225b791863a4fcea5592f71831af92d19f68d64a48f95573ec1b228c62aa846211b7921a3e3886072985084eb12eb45d3f6bba92ae81e816cc5b64f1c581ca65c91700b19bc630d743d2ebbe4410cddcd2f8b354644dc76d46d7fb07c1914e8d7ac90fa3e050af2d15d574d884dbfb967d151bc5134c8a383a9432d2902431c6faf34f839e3f5732f7374fd3f1a689953b5468ae463168d71c353f002df776038a11b9a33aad1c4b1c61a8e814db72d9fa71a9d7345f8803f690cb7c6db769e3bb38894c66310c6fd775b36f2873b588250c0d9e3c7b5bfed732c4452e769da19b0dda815334ece60b87a000a749d04311cea9f73af65d4f57598d245dfca676fdf2d0793fb81c212e6f11e4af58add4d44d2da24724fa370707bfbf3fd6d82e02553fadbad2aef543f94ea725a9adc503a7b6df45bd124ebd5bfb6a8ef097ad6dbfbb726d76e50166dbd3a55cc937d043edd2b4bf2959eba699dbb04af16d413ce1ca429d6b30241f38605d6eef33097b2a634f383d33e1645f5d676636c2bf9ffd794767f8280afa78ce94c3285a8b3963798c63cab9642730eded6b733aa063a5419dbc150bdadf45ddd2579b76c5dc3e97d6b6afab749d7a40eadb68b8bf79596aa595bb4eb0c6c421f5c6d6af9146c660d9ca984bcc42d79aaef674f5a5c29de3875763c84d023f3d18b777c8a6254a646cbaa7e230ac871cead2342c031a9ae9a87e0ad65c7aca1934116e8955558b6716fb8a16be25ae0fd38e45fb2557dbd7ad9e758748ae752f3359d7a42d61a3ef89db54bd715999ce95c01006b3d1de0d4ba22bc78c70502082082268e71d1b88558a035006392705c4c1ee1e0992c3c49761637b7cd1f30c2982830c5981091e3bd386ac9759c1832c9add92447e46f5b1e06dd8cab4ebd2552fe55dcfae7eac4b0284cc40b68aec385548761d2cfd95a22200f370645d77593fcb276e62bd3a61358e39c3df8e8610d9fdc709e85d62ef1277d93f03645c831d1b6cd83f7bd063963980bb29c22231dc38b0e955969ad67ebf90ace25f5256371892223ebfd9574954cd6bd04873da80929e82485bd6b1e1d3e696e54285834ad6db791c1711badfe0d01434aff6193633dd3e05e5ce894b3d07bbca75127a74287808b640ac5ea33108fb58e15ba683605d5f39ea48f57ef49999931e9866617dd56e0491d192f3883c312376e1e8c6aa195df0386a8f9294ce3c4705a49cf54179623c652d1ff34301575c8c461da96057cc6c284b9201cf36de58d44dcfbf3a9ff8f5c75e044324869a426edacd5ca47ab7c051d0b4d01c0525ec4ce473e356a2726816dc57c10a8b30b81c7264125bd45b44d2fc671732c77dbe855a1bea5190951939d10ae1044a07e664dbdaf602b50c1878e7d74268b3a6fbaee5dd22e729c62dda95ea80b154dc203d84b629ce6ccbccb8f9b90fc50c2e26a547d8973f925da6b0ba46e1a225b22493fe95983390656aea124546b431c38a849841687b60f8cdca64d28e7c69b1fde1e5be820b5352ade370bc64414e4bacc960be638af144683be15654da488d53b26bde882dcbbb96b43027c6df9995718140960444688110d59fda14ffece3d70ee049a58a54a5429dc36ed7a4a14cfc6427b041cba368bcd9c45a4a1e240b72ed047758d703fcdcda7ec47cf0d3412a179009b1c43af82fa3405b17cc7534ef182422f929fd1188a972bb55616f996ec4af21940d09625622ebb25b6ba1ef643d1115c8ee2956cd7e3fc84dd9842c54e5b043718a08b2bc5dce4f097c4ad2293c09cfa0a333621567d76e65b8f1bd843ef5c6c953142b456197bac48462e5fc2f357084a007b32bdd64e30d5ee8c48d04e7c6a693b4d68e558da268ecb49fce47764a0d1e63257e60948a0c3ef44d114b6e0c4bfa66d8c731103b5d5875be0b5bacdcbfca5e392221e096655e396509e4a12303de78dacdc8e8187b91ee92b91e500e49f1d10587bf989e86b3269974e0e7306f4ceb7464f1c41f72cc1391c90ddb9077dfc4574a27a2a75b20f69ef8a259c49b64aecf403d381ffd13ef1fff9d448723a341599aa1f6307b9010c6c1845486481f2424018fc80900090906a09fb88f9bba350dfc9414c379cd62c5fbdd70fc5dc255ba7811f225820c1bc0b2ceb633b41501e02cc491470b4d82eb4a42668a090cd3095de6e1ce4944a6d9670812e3427f187b81e991bc7249b12f50b05b594e2b5da816b4fd91fda2159373cdca8a7f17eb13ff51eb737fe5118b047185f0f1ce70c869774f91f5c1c4c4ffde431a2fe1eb2da837e78e2c1c3fc6459406c9d252893d6451b83fffa3c56c79797144b8d2429aa26d6ff0f393d558bcc42dfb397d5c99324aa132915c05fe1b174c1da5ddb41ac6b39931842b6775d89fbbb2d4f9af20d2047a8afd08dc8f0f4b42a76344982738691ffb3cd7def6802016a93585b225265bd8a7da629ef530a271bc1b94d5f5a2fc9b2a9bdf4044eb6c2f7a24b609db3a19c1ecb1d6ab3c359d21314c61380dc19526c7285c85c6e150809fe61c845c8168765e90c53781f566d565896dddd6ae8c5d85b5fe7d7b6c486113d75ea4314e3cb9c8f19ce36fc0ff020bb9450290410af0240bd192e6940f7e431b352d2c70493d19af346d0708a4e9aa3ac4a40bd41c39f58a99033797ce55d7c408a6135d30987dc5cfff209b5f606ca0f2c3f321aee91e4e9b80ca1e088677e195dff97eba25941d9aa2781c3bc5aad7d71e48c39dd4a738e2fbe4ce540847969d3e842be5a66f2c5d26d28767dfe1272cdbc433563586a707b49824e4de21f6a939892af7c303db1fe2d6fc8ca83a05445a9fade3bb898176a03cf23f9296f97f71ff403efae39814b7627cce987f2310a5621ae4f7d4657395ebe2604f77141bb31c17e2eef1e7a93588f2404d5c24c0d8c78dda72c55c0fe0e26162d8620554a4057e7304cc0d55301e59a5039dae5093a13181efc8344f0077722a2b9ea1c76a247a06db8fe7c8f7f195af3f68e9a277ddab4321b5c0ed4e409c92fbb3aa70a2dd00964dcf619aad960a37c001364402d224217b6f42e4de52a62465500dab0d0a0eb5f3d8d93e019481398cfa427b277851df770b7908b4c27985b7acf01c6c0989e77417f6d259ebe3ce59feb81617e6a74d719a7ecfa28484f47753c16d3dcfcebaf4afec69b1f3af6a0b36c11d3b93d7b6ed3d367a2ee821112a7afe0b6b389b5007f5944a9983301dc7a058a7d35b7ed831a0cd268195e093c0fe42a0225006432023d02b7bd8658f141233ef8e3196b2cce72c2111027a89e97cd62f6daca7a0d28fa8f392f99042d3b4c761efbdc4300cf68931ac4e29a58450669867ade790c9b390873c50067c127ae6b1becf0064f2b0c727d0a21354b6625a5634a29e87f1af095238fa2a085561c86bbdc9a4e8a491b809fc68a1854c50521ee3a3d81c7e148f565296aff0abc257964616cfd1322cf66e94fa8afa9e8b5a16a53e1d739d7a405916677b965f9c2d75ea01556173fa59298ea57ce590c371d31e9f656f529cb5b262efca5e18443ea4f606c5599e72e676b0522c96bafce678c86f9862f2b1c56395382a88a3fa862a96a6c103b040b11142b8a2ceb40bfae3a84569a5ecf5113d5a288254aa57feb8544cf1ac5378689f6535660e9944ce26d27456a3a7d415bf3a91b389a9da622ffc16efba7ab95a3964c231d257de2c44424e87f6546685dff95004100893b7c7761aaeef35222b9c3b000b37d939c3c2b23caea85adc28745a67c66ac1c17248a1673562fe44c0e4a7a76a6a05ae20750d5ed575986538f788148ff5d19b9437a54d57d45ecca1bd382c4fd5abf350e7597507fce929f5aafe628ea3fae9b0f53528e692b3c151bdc4b81bd035c7381d2a0ba85e635a257415d0573190570edb5e152254b0dc156ff1b6b7e5d1ce589a1b0ba8326fcf3ce5b0c6e9ddce027d055d856b1ab63d6e07a59eaa17e753b695397496c756e629de28973e8abd38dfca2ccb5e9cff4e5d14e722751833255afc05741ec5b3abfa984ad9168c29a7f5a238e6921b622507fc154fd9cdb50c7205809f72ea8f2b006c8aa35af194bd59716a6f58bc71542b36b2ec983a58ec53b139fd2a3c7adbdb6263cbe6f4af3c3ae48858b90ae851476f1d8147718cd311ffa63cf39bd3bfb277030f753411298b626ff41c686f4e7fcc805008214017d0557e8aa7ea859ff2e66c583af3152b537d77a77856f93b1d9d65edab156be52cd9ca5756f6e2a8daca9bde31532a56ac4cc52a752fa0a3ca32aafa95ab50a6530dc7ca5efe95ab78aadeee88cfb21615ad9656a5aa6ff994b35c3e95a3a5c25758fcb5d854cbde1697cf3c478a65effc149baa2a5fa5f8c955b26cd5edd421b7633a75ea349c23cb549f758acde1c7914f1d45510af03ee55d2fceb7a7eae90759461de5bdcc1ce528f5fe787ac45fcc338ba37aea1747f5ed18a5695aa743218eb8388f591d5548cab4a7aa31a2848ed54fe7a77ae830317236a0f04bf06155bd068bd8b840794e7b6973364570815ed6ca73436ec7a42d83d40fa833639784923fa516ee9895d0b69ad792bf8ad33d593751e49a5fe8260b898afa0595b49008e8f3129119e86c870e331b0366fb29ea19dae19eb5b61cc1bbfd9db1c12e28d0db4d0b39db6a5f11aaf1b12254c3f9e617fe3cd7407bad972ceb3d97062148d4422d33f35c4d44f433489a1cfd854455f8c27349c1e4bb7f4c9062c833410a25ff865e60f42fff9860869d6fa116c2938111f2d101135cf0032a38a9e12cbb99a6d9d30fe8bc4c284352c9e450e75f7fc94211401999d3f4ac9867b5e3180cd3427f67888894b45037d14e2c71824697913b48d44d70d7af24424fa01712cdccd8804a8ae48f893719509f1defe9c141112154e532e4d98118c1bcbba5c78ae3a2e21ee8c334d8271a9288f7451fd803e111521212ede2cea24beb037db8eb38833e114a9859e8d373bbbf05b4f53e72c70cdb5bd19fb3c39d1ed80377a29d5008996ce02c19be86a5d77a632d6ecdddf0ecc688bd866d527237e4dc32ee86f4d74adbe46e48d356e26e48d3a67138a4974e2e7568ec98a4bd1e282dc2819098864c9ca8e6ce23c524a6c1ae95862ef05ed893782fec3dde0bfb0d94782fec18782fecedf061126c9bf35e923806c288149d243ddb6a7b03be051e7e16027a23d2935d533a0165189da1d1774db4b2684241ef44fa2550f8cc1dac051a1023b11d46cba39d9bc51d33570a6157fe66c538e165bd997749d2651e833b0cc260107677cbc7e0cee57b0666e3bb35d930de0fe2d8f8f658311666db691847052f6569edb2b66b35a89ce9d153b8748c2e1f3309a18f29580f6b8e945ae418df8b941267867ac75708ee8e31c66e8ef1b6c0c71823c7c48631c218218430468e31c6986559967996135f4208618c52c618a594314686ef05767777776cfeee6ed8dddd303a4dc025287be3c418638c31c618638c31c61863e4a0cf1863841fa03310c218139b7b8a292084104a08218436c67e43ffe4d92355b96c7f13a3f4764e027ecce168db9e30ee076575df9c8756c51db39d356aa0493a3881d9df83f0c187e3f210c6c8dde4ae7760cf9d0d890822b18e8e9a3c3b6ce284d9cb60e3430914fa2bea226843dfb58508c4f0230042f21a54c1777d54788d4170f45d8178ad79681091f05d75784df234f9ae2f5ec34ef05d5bbc96f1e0bbaebc3687be2b8c7f4d088114dfb5c66ba669329d5e134400f45d9d049a0a3dbdbcd004d663f45e5d50f2ecf209c68305d111048869bc7f2e17fb79760293a013f804c7859bb013a322df0131327a977f2fa3261e2281fab797904061404fff9a00029e6f3e42f2829387f1efe505277a9ec5bf9711d23fd1c4b7fc7b3df1f33e8df594924093c8a12fdfd0862783fd4e09312ccb329e737689c351e270402f411b4d2689bdbc289f2081623b32e9f9953000e2c04308f99919f67b5d6f92bb8123c2f8503e940f5dcb6094153a6982f57036d9402fd3ac0534f38c87b2c397ff1eb68c4cc27ab09e9e258fc3c11dbfe7d812ba5fa540f73cb4370d9b934921a0978f346703748d664b0e91b8b313a95f5fe0f9cb479cc431978d9809c7c42fec3c3b37e127aff98b5d9ff4ecc1a79dee8f7f07c8663cc2aace97814e673eb240ce139ac41722412425cf0e9d5820073e89ddd01f8410e2748f0b8ddcc9242423246ec21d233dbbc0d9b0df737969f9e80b497ce4e4999bb40fe895491c73b11eac876384c8273b3b35ec422de88efdb452a0417f2e4de800d1bf267820e867fc6b02078a3cb425fa80d0a4e7a845300df6c8067ae7eca13eac1f07ea826084669e6f70e48be0989de7e71b3021c3359c84bf4fc9b30e297e38a6095ff0f91cfe0bc47fd1f79ac63def75482164e8df6b0c1f9f74483184635aedf0dbea9062c87708b40e92826f8f3d02faba9b85f0dd4c7c1bd12388a24fa03d17596f12d91be0108729bee43d26900e7020fb92d5e43639a6e5b2255764de9ae25768284e83e2d25195865d2567bd2196af78e6ce525d45aa85ab70aea9a60a2f79a52cf6b2bc3e7649e92bf5b14bc55e568b19ce96a4bd13e5ecec92768ad7b8cd7b609c5582e555bce45abdd2b71e985fe086f396df702e37cc6f49d34ab607e625dfaef4924b8df3cdf6505161aed2a04a7552bdf7425754beb2b2a25a51b158ae52b156ae6a61f9ca9740b9c99750b9095555384dd3b0aa66be52b95e57512ffdcc89cffc54ef83c2672ddf76febd9715f6b6acf46d55b945c5c90734f3cd6fdc321d99975cd67ee9994b2f95a28af7e0fcfab04ab03c8b5fe99aa76a8f94b75c939ab43d3815ae71beb926592c9110acf8122ce7b4957a432473ea93510edf4a65a9742bd6dba5e2a526e87515f796612d91e2ac951567a9527c09fa5c2abeb2f22554dca462d94dde0ed33229dedeb58c4ac6e4edde322bdf3c552fc0ddb09b955cef06381e285e729aa6beaaaf534c957501ea28b5544ff5263a279db357e774846a0ea7f85bb2337473b657b3371231399b5a3a3efe0c82bee5df900c845ee3ad02d9e7f4e390f3a56ded28b9944ac09f16277b25fa31f9e08fd6e91f30db5435d05ecbb443d75e8dd3db97c0e4b4ed4b64f65a00b34bbce7ba19d8413d465fa26da4ed82be443be64b44a741e3faf8fb9cdff3e10120daf700f06ae20ec8ed98cf3ea2b74b6884bdadf6f83d186518344deb0dcb3c62d31f6358d6d127c5e68c1886f9943362d894259715cba4635136cca24b6f6f1e984bd9588679f4e89867cfb1eaf2cded70f96c866211734c7ad6998ced5877631ebd4aebf25d6fb22168cf459b32300f2393e0a13d762ddad04112201ef830d18192ee5ae3bdc8a711113b8bf3feb89163faa58d973ce06937153d7bf3606801ec5993b700f69983273f9d3dc27689da30ce66ced0768dce805ef299f7c3d391c3430e473bd61e1d422c7ac7184f1c8e764e6d5c4b1e2b7bd72422bbbca6b2956ac9391b346ee3c41161f29ec19df49ec11de639edd3378e88f6926326ccdef60b43447476148e88b64173db6dd8e03822628a23a29d2d0d77325b71364149fffefd8a33d9c7355ac8b271e6fd00bd2baa2fa5945eb2b7c6cbd2cbedc540974e5f0cbbc4e4cb9c87a6b2bdf743d458dbe3981ed1d9db2a01bf39d6530f326e089d6787f606f3e9b1622e391d5c8faa042422fa4dbba443da73d1a2dfecaa6e4bf42b37ac3758e173edd7613e5b267b2e0cf316be12518f611e99b971b08cf1117b31d0310c238279bb3180f8807a7468d473629bcb8bc19cbd8b8155cc5f627207fbc25b003b4a50904771daf3edda8b5049e6277a431dc523b783755014fbe60404b605b0d3a8da7a2837223aca9fa336a7d687ca6eee03c5ead4685b6dbd585bef3ddb928e729d1a1fd146dfdc88e89b4bdfac0f23d21ab139aae49b6d1fa67ebd9aadbe9aac04543a8ef72948de0b7bca11e79991919191915166449b44bf1dca2f8ba218a138a1257b59f4090ab3d7813cdb0e2548b4284266c6d9643ccf1e04050877f409ca0e4de20edb79d3634ba0d36bd079e4ab4a11eea00a13cf39ffb64d56951feed877bc1f94a03a1e10ef07d84940f27a2feca52ad0cca5733645a85dd2a6bcde4b6ae7557a5a6635275d0505a9f404a9f41c05613273f2fc7698fabda759cc4dd6a635ce066be826cc1fe6d28499acf452acd1a49bdeb47ddcb1a7a225f49e7ee851cbace6a494b5daa1473bdf52c006368ffe6af869b16ea003d139f7c1d9960236e79cb31be07cf357e3233a67890cf06aa23d0db58b8db466dec6cc3f22222222221591ea673eaaa9543faa9f672fa97efc7566d4dc2994e5291915525e3dd444bd04aa5ca7863d569d9a0c297bc2f37e80cf37abe9cce8f46ad713e8b4f78424f4ec9db4c9e927337a2f23a0af24dcb109c9097da79d676f3d879d445621688e68997e3d17fbd173b1bf7ed1a39fd3ce69e7b4b3a369f4a85dec6d9b1eb19b90625127e9a17ed123c6a66042ead7ca089bc29351e9c188de0fed330bf4092c8ad34f0cc2925e2a3d4da14a0fdc493a40d744a7e14934d4aecc8846f15cec67781e6ac3b33f0e3410bd33cbb239d42ea647fc84de95113dba262423ad664241efcae8d9bf6dac5db30aaa591971cc5dad562b264c7c98b3049421e54d908290a7f1af095158f29abb7621132e424dab8fb3c12c4cd30da5695a0ea3ea4de63f50340d853afa9b637bf4a7348759caa6d8cbf0cea745edd252f412562a610e916eeaedc750127368b11efd9751500430467b211394e69746686f509e79b435ca18adcc628c5004288fd0b6341aedd511a1435b728ec391f2686fa267bea54aa7884157a5f8851c0ecc6f786c8f6da6142c7aaaa4c52ab50a1f8542a1504ec3284c728e22a37d6f6beb278a4d68ba381bc4e08dbd398d5d9cad74636f4962aed95bc2348bb2986d652ebd04218cc55c6eafa1fcd4afa182687e83b2174a18142a6e52c3dc54f237eb9358c53eabf0638c4ec331c3a4ebfd803a50ae9220e19432cbbcb127dba17733790d6ebc04c807fcb95cf87a945347f195ea4c833da5b29806abfca027778e81d3b6e434576ffcd3bb3aafb23a9d38a7e1d3a9e1e9f1802238d5c8d934144167e06173ae039970d70ee1d3515578aa50a5a2bc2b55a1fcb24ece6a71b66d594292b8413de5cde1a0385229d77a1c0a793fa4e0fd70a2170609f963f9854784a0100c0a6a244049fe216142e8ed3f24404a9ec5f2500af4429e53855f72a263b7812948c17b613f3180e529fe386815e0038e21a866c5539c8627774cdb0583ac0feab9d8513e4982b0582c1ca752a94e276ea592d3bfe29ca6557573ae6a9e52e14fbb5229a7e13e40ca69da51ac24e25fd66741a010080484ffd3f9f8183d3713269ceef169e1eeb96473e2805f7a428b6796e52ed027e8d9d961127cf50fa8831257d400bd8fd016174a946544a55982388f881621c331d828106506ea67083dcf5b12d8c3319de4b985b7b06e6ff80d94a3bcf3ce7ba03be0eb90e227685297bf14a55215ab8bc1322c06148d502497c780ac406f87250de911c203eb8c2226424f909c1c3561ce9670cc0ae7177b75fea57b4859a60787d0ba0be661788c1e2c170403c33558b16ec98587fec20a305078a8040f008b069d3968d83637bab1b0da0f7febe939edcd7c07bfac66f83a9eba6d7c2fb054af4e975df9b656e01d7de7d0764735465c76236a19ea127920bad1c261a01c460b7f618970607e85479818ceb60230459e63c40eca58616198e018219c5becd5f91676a283dbf80e238ed98109c7c4386a328493a4f984638a60e1ec252025f652108ef9c1f9a75dec33fc71cc9d3fa314d42eaeb1524164ef7c6bfdb1bd33ff02e65f7446bc48c08bd38b162f5cd077313f88c81fdff92efed885f52e3a9c5f5e905239d0d07a7870d1774dcde59914a6e770582f3bd1e121b90fc99764f8ad01e3170000f0ebeac16fb51100013c9920bce4d183a8f0b9a00ba0bee70a407dcf65a302a04287a9322ae6a5fa9054e021b18970be8f186689c890f1836526412da311c06bd83b7ff095bd5485bd2ca296d19090d85732f652df885a24c05e9611f63a02eced0e602fcc8abd337f4b412db311b56b433221b50cd763b297a5622f5505a9a88d3111bd66ef64b1971ac05e167b11959570379d45e5a21eeda799450ef6521a3d5c100f2e400b24f621eaa90754c2ca434ca4027a8c18768676313a4ec2dde42664f7f6257797b55dca9865dd0eab44fcae3bcf2a0771b7a3bef7ee76f0e670ecb083652125d335a2e904b077cee93590e67415f6d2e92c0de92113cf35bdc84f9799bed939bd4e4f99eec3929fbec237a229840ef9e92b1bd1b36f482d1381e79a423cd79cd35bf6d20d69cee92c3dcfaec3e5b9a6f37416f6b25239d0b097c5a1ec0dd7013a0ed7a1def05aafdfce87ad67c685015dcc89677fa9176b9205797617f566456ee6c4b3db7a6790e722cf3ea35e662247bd7c84a35e1c76f24238743284636c6e4c57d9d8193a6d66cb14c2429da0cfbc1d3bc2311b77d07968e6bd60663a18879914288c9c4dd679acd823924238a6b31578449f7967990c8732acb42c1e8e995936e79c928721100422ee3c9fe67408e1ac383030b5cb1cd66c6633cb5ebcc0fcc59c9d653db2892a39acd3b3da33f316f29de4bba7b339fb045006f4527d2feccdc0bf70585b48a95fd0748fec5fbcf0c7d9bc701ac65e60a822605e69e2c07c460198bfa1aef2ac5200e6a7bd4949394a65798a6befd1501aaa7a615ed5bdca5fa55196c154aef28d6368b8bbca55ce9c4d8b6cd27001e1e34b4ea35e9da7e132fc3e2318bf2c00f8f51efc7636fcc204c0ef8c00fcbe57107edf108ddf47f47e5fd1673e00cf9cb20c65d7f4cc66dec2075027bba6d7d4af8fa72b88fad82580fad81580999f6ea34e1700ea74c9a84494bc9d868ecf5f9c77f434bc85371075c667f50188999296d5dbdacd2c0d6b2ecfe1fabec78f9f2e97b507e4a7751586fba0e37536d63b6d4accf1901e4b1573e674f49778489767362bd99be93ef83061547b75dae590d3c1efc30c879c4d0dd76a50acc88bc7fa329d87e9d60797e956d3b20d723b8238665ab63e63f0e0b3e4c277f092bd3a48db9e797b4947e7d3368fe82d6975bcf6ae5ecc5d4e00175e0bd0259f01c361b80f1ed3b6b09267b585b9f40cb33a30efbcb33e308f6917377318d667f8e378b8f0b6372e3cda1b17efcce6f0bbb0d1466e870f3a5cec8b6173fa79f0ccdbde1d6cd4c1e6f45bcf9c3922acf3602f7c6bbb4b13f3529c761251722cda5bc28082b0a0e9b11434b1a07923fa4b938779e9faf8cedb856b2e2a0fcf058c7aa72c598761277730bc6be7b2ba60d6ba5cd8f7e2f185877a79f018efea0e1f302f79d7d9fbc2dff90be683c7e8a5ce85cb7a6706be617430ec8d0fc3adb5d261bcb8e0c17fc0bc73953cfae0b1e4b1e4e2f1c69263a50eebaa0e18fec283cb388c7a7f7cb42ee7c1e6f0471777bdd4f7988b0f9e5596cf9bf32effa1de0cbccb63eaf5f12ec7d8b1229ccd0c3b436bb8891b42e76b580ec79c96084fad99f161c669d46d888b99596b51b75a371feed869182989c9d1921dd0e8351c86bbdd7aaaf5cedef99dbb96b9b8e6e2e2326b6b87f4e9f37dd2bf2bfc6342143f6fdfd18d92c7f06c071597329c86a5971c46143d254b44867decea3c76b585bb5497c7a89b901dec36c44e6fe15049ad90083a51b1225890bf87e1d9ac4af04f8731731847f41e302c0664d201854e4022ee8e70cccc2c0ce2ae7247382301c5822c06e4010c48f6b88661180654b71eeeb8bdb3c9ecd5f1f9ac450bd73821383197e58238a1238af911eed88649406f0edfc2a5bb7008e42cceb1780b8be7f0f15bc89eb68fbb163e511ce71dfd74cdb4b92a8a63d36e43b8cb01cdfc42a09e579216159e29a1d12f47f4aefa5eab417578f139a70e9e559c8d87181f6466b8f047c3762e2e3b383b57c431309c9d5bc231d6e5ec1c93d68ecc4b5eb2372bcffc3d96d51656c4a5c21d605857f7e22ec9100e2816840171c71fa02cee4e2348a6c223332a1482af0a9338c143854ab87361a3a0ee1702cd8de382b8235b0fc7b8b36f4238a685b36f3e1c53fdbaa5ad56974aa552d71b572c9530efc64ad1153d6beb986b7a0ebf7439b6ad98644fbb5c444877c91ed3ca364ba5d28491a167d35fd40bff8597b81da687d3278743077fe1cfbb674eefe994b399189006e3c5739896be8e8f1f3f3dda2cde0dfc749ace6e0ecb7ad3f98f9ff5f6672e9f9eb9b4edf33727baec8df4ce750208448c893177f0692f7fd742feb6fc55fddc7eda28bd9359d7adce312f71415c8bbd3a7c760f04627adb92d3b490db42bee43ad40b5f072f7138daa7bd99eef2c9f1283917d4321c110d7b593ed84b7df01936e8b967f050330e47fb4de4c1318e0751e631f6b26870449fcdb03ed8e62195444a2965e7b213cac03c462df90e9507a7691d6ae7188ccea75f9787e18fe3d169bce96031a096e9c1d93518fed283c53a6bb22bf6b5ebc537a73c5ba64f9f1ce3f2e99bd55cfe267399fee2d6c3798b77ed1340199d6dc570cc4b8e01e500c35eaa4dc7705cbef30b03e370747ed3f6c525c763fbce21503bf73a07e7613a0cef1340203a7b2fa0f3d35f4a5e2a790a6753d26695ef3f46859f6559e6343c6bfc18dd0e150271c7ae4385452a0c72167fd1de8961ccd9e0bca3afce9c4df5597194dcadfb103a1f1fcb02aa361de1980a64443f9ddd1464129affb8396546a422ea8cc8332215c7f35cecaa5792eac5f184a1a86547760f49b4d70395ef258bbe88c9b3cb254f241323d2b1231f60e23df9f33ddc753fef8ab34921b2481a310df62601bdb2481ad1221944c3ac5cc22ee697fcb9d2c7c484969ab0a613cfe4130c03f2ec17060bc2c43fee5959a4050a9f2c923e3fe42513cf45cfb2c7bed78541ea449e2280ef659e135e463079f63704c7bca12c3479fefb88de9386341c73bd97f0ecefbdd7f70c8ccf0959395e5f8342aca10d7c43ee2e39de8b8ee76267cd8076ce5d9401f6a3bd1e284f57a48967df620ffc80d7fca01e279c4eb0127eb1201414fa9df0f90b834f4f9c81f67aa030aceec8b3c798f15eadd80e631cba0e0c49af23edf5407776767662d08dec9f431b34903bee18420821c4d99038e6b2f8e8212922849d3cd7e2ec0d7e2efac8bc2a04b1138e792f360461a206d23db787700d8938e63293cb424a3826fe147f790911cd42cff24f16a8c9371f823b17c27f7808bffef901020a0a1212ba8f4848065ae639e1e5859e9d1a76a8043661d989e1e1224e44d2f693dad2fce84f7c44d4327cf45ceca567f948e8e49c7329498cebd65a28e7a6e5c4ed4fdd0d59a865f888c51d1bc1dd92a3264e5ed26520b388cb8afcc3317c7d3c74befcd352148338a6637891e1c8bf171b863c0fff5e6400f22eb78d5e3bd586b6bb59481c8104fc41917847348086833c0fec1deea000e1768301f05e5e4cc9d97578015dd8f0e115230716cf2d80c8016534606e37a0481cc19d0de86b0267d1bf79c42b6a21fafadf63362010ed3d340404a2ed199e3b493be1bdb0a7c10908bc8e5df36737bd303c7be995e1d9c91b83115038e1fdf080f70206252ddef0ec1370f2ecdb110d68d2a2050b37b060b1a20d2b56b424b5b4b4d8d06aa958830a152c6a6061613961b156d2b0b2a282061595d519562b15924a9522454a4aca0ca9144a19505068134a516440a14e63389db828386e3bda364d0c9a660a83c9540243a93499cc99419165d817304c3e21bffd0886313e3b04de0fdd0f783ff0110e783f40673fa201d04e3addc01a2a7aafa8bed7f58eb6d085da6863161b68cc16caf86e4028d9be97e7eda4833aa8834e9c66248362103dc4503e236a460cc21f8ee9ee1f8ec130ccfa1c52821162a8e6fad4188661ed2714230dcdbc6084baa0c8cc1c0412e60cc4faa13e1886613d7f509c29faf4e16efea050267b27904d9c3f1cd32578464b664c9f5217a84f9f9f1fee3a96f054a7cffc5151f119327fa09c16a7835e85b592c38c92d3f06b0c4e5ec57bc9109f6fe19823210d443fa4c9f7f06f6808d0fb5c4d3e2439207a765984637a169147e6f6381c339ee51be5db63e97dc75477d76ad0140da7d8fb966cae22a7c5ac4f73fe5ae6e41891cc3e76f163360737559feee2ccc86cabfdd5e4505bedb6f4023b7d5a4504c5555c53a9177395954f7b63fc74ac838e6857cff4a13f4019e024eef6611ff6313a72d1f4870504c42c04f412424ada11629e22a2a2a222a323980483be85be935e433eed9a94d5420f4948e82d794c72f0fb8e5eb48b3b57c27a4ed0dec16ffcbe2a97df966f17971d6afd23d89b678a981f3f7e49cdc3e3337da8049a3e2e1c0ab54c0301090109010d0d150d150d153df7d151d251d25152e4116a990854d43271888787674e20768da76562917467515ac43327dd615151cae2a69289e3d1c25d6acb6509779c31d1e1e29c9f6a0b869f9c232a1a6a191662a1a196d1b45844a9c6d32ef6392965edcc49291f3173fbf49c94b258ee5d377d7c524029a01477f6c8d3322cd6a52c16479ec8f3a2ca22dccd54670175ad5e5d85bb388cbaa37be177fa741d0c9f477e388645a85f2d0304eb7101189e7d0e39c13240660b48f0ec5309cb683b93098e79432e48f21d8c1739700e39d4cda5e5d44ff5c6022dcec25778890514e512289302b52515045d94abf0c9d9b478c987627e359e26dcb1fb00d9985e50a0a71bfd9c7ddca9dc5459eea2de99bf1288816a95570249a477c40374c4d32288456ded58b1c25eea2db67583e1bf6fd5d60eea6da9bfc75aed2687cf525b6d6ff06fcedd50f9ca1de5d3576ac935583b182ed0e8b7fb181cd3b6021df4edd055ae74956d616ee26c604ca9a5215c2ad2b3836a8c444b81182f2d4e8c47c92490146a99e923815a460b62b516d4c2faa1d4b64e9cdf3904551a424fd55da68f042a15a9a59f12135d86e92381e690e913a78f041a52a7cff4993e12084e9f397d2410187c5a07e507d491261c67e01d23a31c1c61d2c4e572cfb34d4e37ca61951e1da5b6a63f2925ad2dcc512a9192734cdbf668592d495baca3dce0e7509cbe74677117abc74661335014473945b160b7a67336704891de88f0784dc9bb0cd459cf0577e0647546595dcb40a3e7628fcc629294b5a908eb45152ab67c01655204c3401c08f2af091c18d2febab6b08b59ce1d94c131a00c8e792fec9773e40d745669d505710312f18c38222606cc8c0bf390ba16375651ce2ce58e312c09cf4e789ec233abc599b34c62d246ee9848438ba2777b76e11446341fd32a7c3a2291cc6958072a9d862914a2d5a01042ebf4b90e84423841d4c43f37fc432285d76b2876239eb3f5d19ad4a393590412434665a04265b5ab086f177423b0e6c14704994fa0dd80dfa22fd39ae88bde08eef848c3862e2cc41d0735ca9268d4f0c809127692243d730dd04e17e198560211407a076abcd514158ef9d0665fa028c7dc85f30a8bb338bfb239291b358bd51a4744af88dc0d16f506da9674e86d5bd23e1b692f742550fc559457b5776a2cf86a9992e5ccbee7d2ec7b2e93dd6eb05871719ab6f57d4a7571969ac47b158af39165a3ca84ba8bda3ab1d48bc4b33cba497f0857ba1f12342cdb84727bb6d562db367b7324b437b2803acfa2ee808fe22cd573e4a3388a6bf2b59ebdc1ff5a3e3b4cc2f34f58e625a187094a2802977cea2f1c6aa130fc8547cffd33c4043fa0ee1c0829c2882e8286a267f9372486d76b6f064df18cb349f54e0361f94a65798be669e1c29f3347843bec965b6f7bab3fdbc2a16d1eee1889bf99fe7c3a746d56e9b0b694bea285afac6c0e9d85776b73167f5322f1adcdb2b0170924a0dfe9aa5e71b8b54f7b7bf82ba1e27d4e4a7b93be52eff4d8f2ade5d29e7a90b222575acf57aca7487bd3f2cddeac70e939f2e5b339f25b2b3ca2b85ce1c2fdb9b4b585bf16dea28594739b2e5b3c39377bdf63c8c3da1ecf4eef3490156735799b7765398b7a917816ed7e67c397749616d076d7303dc3c265e567d9640b7faffa9bcfe26e69cbb2b0b0b0b6159a66f1581bebd9152ce49cadab424ada72151b8aafac78b7bcc567bdef45f3525a172ed5b3caa2d3bf050b96675db8b356b85cd83bf3d25a53ed5ebe1694aeb097a5c25b2cbef296cd5bf5bd8a6d05c55756a49472c52512df3eeb56573667b1b88a6f2b347fa3b3d81cf92b7e73e45f9d6da5a238d4f9a141e223104ed91cf9b04710532801578fa2135fed1e3e1ee5ea748f7e140b875e49b240b13414410b51b0517dbfc1960ef9d0e543abe21d8e793b4890d0f0978df8c5e2160b0400c8eb614bc7f30a5460bace331628e49e772562725895800f4db56584af20410d84fcecd498ec0f939b5c7b3b0200e4c504c7b425f2c3648db41ba9a66aa41d56f95b6de9f80000793d733ba2cf8be3bd05bc020100f2faf8d0b6dcc54d9c0e8c043f30514cf16d89ecec686ef21f0100f2aad9d1bc6584f5016b5a0ac8bc645bf3d598146072cdb614006b3487359af561e400afa603be130020af1a936deda831026dabe32e46c746a52bd0164ccd0c4c10687238a1b77facb466e8b102ed218ec16c11cd4c2213f4c2575b36e217279192f9f5d33f7dc44c1e12461cf3220f71c7463dd4493a491399b8048dcc46cfc5ce6cc4afee86af7844ef23dae1a024e2bf9270c7ce44a859a49461834bd77c5bbe6504f4a1738429a698620ae83a355adcb69d7fae71434d724640efd9aeeec88a6500f239ccded221bd5fe7e3403dfa6c19f87aaee8f1455f4441d09e8bb649e7a4ebd4b414c0f9c94fce39d62d2cf3b8a338de77ef85df0be4eae62e5acbe6b2d9dac25dcb63262ff93479e6970651939778986e6c169b7560ec2a340ed2b33f2790c9cbf15eb8f6ab8786761040470fbdfcf6eb0d7512bffdea2127cf7fd07a71ecd1338243fdfadbafabf39da45d39fa55c35a0d6ada4c25c8bd3d7b06c5130f08e640a6a2d2af94a12e995a26b26ee6445bb9a8f4ac587ba2f3283b01bd2727b05bd3def39511cab55757472ba3d5b31caa1a51596943ddaca7f97395da52d1562ad5b3c3a8a9e179c2eb5e0d4f921a9e269e9b60fcaac2f81c2df3de51d2569f3d25355155df4e2a5551cc074d54106d2f1f24111d1182954e4f929c18b109625650bc8efd4e212b31bcecb51cccd3442c67c2315666657472edd553ed25dcaf76e9d43413dea2f861aae15cebba3aca56ef3dd7ec5df973ae1ad15c5bd5d51177ec2a75c56465c41da3fc5d19bda7e1d511c7a0a0fcca88635e4b0d4301e8b9dec327f350f879aef7cfdf73a2a5f9e36c9e9da12d3f04cbc02324254ff5de50cb3f7b7ac2dde984040a3faf535373bb37ed794bd3faf5867a80d44f5886f5d33c479e7ba847097ffb68fb19ea4117feb69326d2fa4dd39641913d61b31e7a514f78f02909c618637cf37475fe84c41d7bbb7826909dcfb2a10cc9e8fdf09e4dab3794835b7127a0d3cfe9e7c9b39f98782551722a923df164b06750449520294f9951f6c403a2913c1950bc1f3a09ef25e525d4aed34933c9d2ce493ea747f4481e51249a840204a567458f320ce33773bc1f5eab55440bfae63a35ef0fa053135da726da16b44918117db33e388f7e8057b3b90e575999137a0a027d35d1b614b0edb414006b3887359c47dfac910ab476c0cf1c6967e75f4d3b416f13b9fa95e2294779f8a81f20281e1d88cab7d673ea3a3501afb237d353a6bd3a29aedeec583d8ec35864291454e554def26e9e5aaa95a7a438c4306f718e73592fcd4bc9a285a354d65c714a69be8285bfe72d4ad3df7bcf515a5016a8155dd3e73cc57aceb596639ab3a81cdbb1f294148e8310c214d54522c555aeb90a57a56caed91cf9290e693aa5ae3667a997e63767d58bc46f0e7738265a080493dc103aaf627370b4f70842c7ea5730e352aa15b75aad6cacbc853b8e31638646883a44578ae2a5b44afe5a99bfc7da3595567dab2c1606e4c31bcd4f4ec33146550ae74ac857d919cac14fe152a914dc79af43c20d9ce8d814a2d08a3af9d6c23127df5acdd96c3047bee692c3a1798f206cab2ddc81a60ed0dba5febd94ec6022290317fec29dfb90a8aa9bd941ea90c62084fad153763b3d3f453d42989841fdb9dcaca774068ae33de7da7bb3552f262f0a819c8e7eef25710c7c1281563b11481412777ce24f2cf21a663ccfcd04d9d34fe24e27452358b32828ec9e4e823c4432f1d407e69009f48d6362298679fe7136dc0905a9a3be8570c7fd845ddc49ddd39dbc7b4edbe69df4eae61d13ae414f9bd370cc28f774cf0e93bfb1c7b9cd9bb3cf99b3c13c9311723c366fd77af36ddb7cb31b372ffdda497167664e9e93e293ef177492bba8c6e093f5fc73518a29368822490a415128fa27c53f245038fa97d409092d6982d51223c9449a2c1724f141c27a9801167b9703c2991e9e2550a3c10f772e7831700baf8346425b2832d2bcf4845e2824c435266d076980b237868b75b2773ee134ac491afeb232d0322ccfc55eb96687c5326a819525a459d6a32c2316ab74053a1d7246643ead0f589359a13924c412621945d1ac23a5e684f6ecebdeb32c4a568cd0c63f6727d4a9378471b62bda39a9444244df0f1d83d5d2f3b960b4f4bdc066fa7ee8178425ff86fe2189c251c73333f4ecf04817c3066cc2e8e1e670a02d2299bf1accd923c03290a7a71b6999fc31f992b36d69afc9665b9abf9aad8772f03a06e2ae2dcc418dd7b177a5275d47147486223c2de37aecec3cccd3bd9736d02e8656bbae83a6523727ab1d06bd38a883205114423f5a2746d3901d04c5d945618676eeb8f399cfc1ec773ac7c8ccace4410176d6e1cc0cca897f1ae4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4882121facc8b3e137d2688177d46002ffa4c00666cbc1f1e842625da73e9d81dd1001f1d4b5ea91cbab74c6623450545695242b008d0954af0b9504a8f62840f02acbc9e351fda1b58c40a11049e0420055e4e067430c2c7f604db5cfc0814ebaf088a319c41760f6709cecfb20a748f59171f74ec9e534cd60e84ccadc548e6f0fb751f6f67106bdb303076b65a83954e4b37ee9cb019620d9112ac69b5cbb8659acb98d59bccb78c07a49a9bd93712dd54615aa604297b06616ab2d9067a61987cf40c2b830f4a49f4c2d0b44c11366332349147492fe35207b4f762228dddcfea348456d09ecb7b1c777289f2d33ce1c03c0a0a676f11cfa15038307fa200cc73f606e51aaa6a28e7eadd9e73ee08231e754d8eaa17e6a9a72aaa6aa720caf9fb8742d90ac4d483790e8582284b0473887191ab283512d1828639ad372e9e5011e55a0dfab41311cc51553bf98b1bca74aad7e551aebdc83146abe22e9aa8404fceb9f4878408411ea25076c6c2fc85f948b4b3b3c3444d74188e4179dc8971891fa36b188ae55128f8500ef31ae408f0de4daee1c07cca5e40e77b687e4f6e7294da23e5547393739c9f681ac51f6783825239bf80ce73f602d4e228c1f29ca3ec7bdd3dd91e9c251202cc97c8b22ccb7c09cc623e332cf32530dfbce44b6c96d5b664e79cf4d9b8cf28f28fa8c3f284bd9e55dc18247b5a6602473e3f7386bb18b276524a7f3da4cc5c4a99492ccb324cc690b69bc249eb88410c8b27e8d811eef8d15fe1ed921613c282b0a0968135fc22928aaf416d327be367d88f8b8452c6930f77d810eeb023251ed0f8172be292c7e76358589010c748e92d840561471e3b5231218e89ff5810c7744ac5579ee291c391861784e189c7b81bd2b91bd8134c308627d2f0823018ad38acf5258703f3410a9cf085971eb91b04c09e60823118bdf4a7e9083c6dd9a0271e05637156551183de0b17e865201657512f7cd6e6acb1785ec94a9e862cf5e4ac1a796e1fdd1eba0dd43cfe2831e8e4d1e8fd00a392fb8e260ffc71f984785e7f61d1c3240f79200f8f6418c5333cc3336cc3730ce2fc794f80b3efe8e82804d397d0a6f6942084a7092896f0b2011ba88e1170c0822ca48108133e4d5834571001109e3ce10c32e042cd74de7c89d236bda40581841f00610b3818728215d44c5b72cd4dd6c843e224e94b3604ac9912e40b4a307201923024a971898116a6c063248809aa5063243ab74c0c7a2f2240feba64f6ce3ba9128667a0f0df901690f03aa4f0e1987b63900e297c30941f52076b9613180fe40b5606fa80d77090731085daebe0c9b3c7002ad244851e6b43db71d7cd79d7b886968939d7dcdf111a4c8d9121b6f76e94e89fc0f3d7e3f9d5f9cddf7b76b337fe783ddcda0ec11d052aa2067a3bd4062150f73b1d742eda610e88772e033974426f07691603f26f3687be690e39df8cfe142b8ff67abd4ff622f15c8e946e5bd08948db82b68bc12ef6521ae8652053a97b2e083b08349d815a665a0bd492812010777c83e762671e4c212061a027f442a01d86401c73b9c85151bfa24ef7a90c1a74a803a10e1a0328ff6bc28b0a3a289241a533d00bf48ae8073fccecf2b56c9e202ca4d223248809200ee226f87533e1f9fd7010ee611e469a2f7d7c98c7c777767640d040459e6f1fe926903ae39d87d506f31a54ba36b963ad1bdba66f189c4ec3ccf188bf711076b1651e19b7c8e31aabe6b10f4fbb30bf697f0efbd57884b63f1b29237732b0dcd32e20d03b9967c89150d00f1d96da12edf54069666674f0f3ec36608b88f45713e7cb3a6766cca064e68891328739d809bd6f08f31c431411fdc5aa85229ccd249279d7213f42073c3986585283ce8d4ee6178263eebc2c1b73c3ba1e708a2172908146ee5e7498198e02aa7a29bc2a4946a1bd1ee8cc8c9126cf6e2309e63bb01ec11d124c838b1aab3336b89be986f608e8dc2de0b9d89f98697e228622b893c140036204a572acc28671930f7bb24fa9396376cbd7bd61d8dbde7b2c45c2d6e650e8e1d1d3b0866dbdc99ae2d8666f067ec3369aee916d29cc5195a61c424b6137cd89ce922ccaeaee534a4af69d22847a292809049992020429df73081bc24f91cf532ac47cc69fa5470403e3c4b3cfa02a171bff4cdc8d59618aa7f88542b7e19da9266e87e9bbc4e150f1cd1f14e218ce06d296a1d156ae692929a57c9eaa3728fff15852a6524dfc6df963b1a4fca960b1f6f22a25fbb1c8d4855672d05fbfbb01596f52fc3dacb7bf53af5d3af720ca23c723c5dbb92b6d0efb4d716853d2da4039d91be92887f6a66c0e5f7e94d043e91c0b44390d438d1feab56cead956aa88968159d1d10e79c0231008e8cfa64015cea5b84ae56ea0a37ce378744a8b0adbd29ebdd0f45e8ba3548ecfa9483992524a994259e8f00894c1394b4571564d719a56519151adec9d2a0bd37645765b795a797bc35ed99b77573e39da290e6dcade3cce29852b8b72ce539c364ccb50e85ca75cc52fcca7dc1cbef1531ce370b4dfa4ec8591a6b693a5edab144f4971cad9a468b0ca4755f8a80affbdf71e85e2dce5fcf4206d1995d552521c87f4149be23a0feb8d2915c553aef339fc28160201cae09cd61b3fc673de347cc25c030204e23db641a17f1c1297a5e958a9b65ad05215bba03f5b04778c61b08b9899819901f366241fc11dcc6b8899e21083d0e642410e168d11269e5d88e7c407bc068bf446498dd0db09116b8f4704f3182c836d5d8c993541dba1a5696e9983254b96398440e285c811dfeb29061f222c0e1a9cde25cdb49d38972e46eacef877675eb58282d10891e32d79b101d78da091db897a96652855f5ba149fa9f4752928f6e2a8eaf6ba944ed5a5ac1c7237b65f59c8dd983fc3312acb9e6267b84bb90d1fd0da883628309cb82d7216e74bfb66666cb0ec5ca0cbb3bf98f7ba76e8f2efc5bc212362f84b556006066aa4e74555ecde98c61cdc4920d05214f4bd2e0c498dc44b96302fc9883a23da5a769ee3251b608297700e2b0e2fe125df2d196270abed3f5443a5edbd3b4ba552498bcc936dd068c2a20989261c9aaf2934838278439b4fd5d06b53bde20e5512d510c74c56bdb8530d4dbfaad7b4aa21559248c3aa17774352baeaa54aa21a7abc242332b9d69e15718cb43c34598929a85d1b0e2f79e95c462406221c9992536de9e0e8a620df6273384c1396a206b7292439c9df0c04bd13654a4c411ce79ce61cc7d919ca4bde14d4322b40d8c5be12c42494c494195d164e46f42814ca6998cb885ef6046dc7e94a818ce8a1bd3165440f71f4cf209ef0e19521dc11a99270f7aa17f7faf6ad76bbd0b7bdf0aa86307f5c8948e6a67a4ba756b7ebd042118e873b0ec21dd7c3a37aa994b05ab820a620d3112d50ae87636e2b4945c43197e3e1789e3c3b1744f552255129e18434d79e55d31176994c4226a1ecc532a65767421cb3599350575350290ca620d311cef46a19d52b4a296483a1943ca38a2617e4bd94da4b42b820dcd5a05c109b1e8d06b4399fe77e7c3894100ad54453ce068736f19cc4097107b91777846edc03da8ed2d6e76b508e891407342313cffe8a3cf7f335282784b3c149e17c9ebb9b13c20d79ee01bd9c6a66988caa66954aa582a887dab66dc3b64d6e5b6cdee0b66d2a278ee7bdb03f4ef5f24226f4afc28cd04b5f5b7d4fe7d5c097fc75d3a56b9889551ca3f1cbb401b17ba8040d15c6494d95a21108000000a313000030140e084442b1684426d815d53c14000c96ba547a529a674150216408010600000000000000200082007474912bd88a808bdc586fb436f98d3391bfe214007cff8682163329ef728d817c2ad6dcb09b99221f0f791fde165b63b6b37ebfc82f6a95ae5a689d9a6764a1a1c22f5c624b89670c709bec27168f9ff0f356dc50cd24745899e24ea6243ffa3894cab5abfcf2b80b16215f9d852f8c14fbdfbfc8361665f128d1f2425f9565512db15e5d243b5fcd80bab4ee64d28c1eaad7d039a2b6b5bacbad27b54044889a1fb0b5256cb96d656626bf2af8e7159c6a0435ced9c4a8b95eb32f4b130a881884b244289f2c637c0ae5ffbc0c9b9dd880f2132ee010551d03fbe089c3a0b0322dbc4e81f22be44aec7d0d4b507e42c700a07527a9c79c9b0559762e9c921d027bd0cd1371bc6ccb1639ab6735f742f9491de369ce9f83a0d4613d94684bb99bfd6b2906e59fcef242e5f4a43facba3afdd7a50e4568651b395d99d33b590b547c7236844635f9da34b218c5696aec623a5cebba5483174a39c7900a38f9b83d613d854115aedd50f0dab02fea43614ff3f3f5a136dd09d6901c36ec28802926a214892264050982ee0ad0bb6e253deb0b977aef1c361d39bbee8492047973e23c94d8d05d95dfd74cb4d39f8df8c34c0e4505f861783c81a8ec3e443b1db280741d6c2e15a36bb3c7e884c6acff073ed617ea8d015b6cc58b96a92c0bb5676619c2e6f5bdc43c2937ee86ec1eacec1f7b69dfa994c7a282d1cc92785f028ae580546dc99a220cc520d1947246aaf0fb5ab4fb1a25c495314abfa08fb67e445783a98804b7edf92ea6f6a79d3229b452a4c4786acce58d1e3189be9e550ff96d0e69c70bc9682e7c28f04e30da83ab17d59561c680ea1b8c402042dd7792554397164a4467c6f7cc4243611a644e409f59fb126ec9ff9dd2cad8d028e55222bd70336a0b194dd91daa4718f8bc4c5650a38979b9367227980b57991923a5a3c01c906fd1dedb4eedc76f6fee95b4fce4cd52ec040437a4ce4b1d3734205c4ddb8e608588653bc44b4cab386dccbc3114570869120c91abb3a6282b649cec7b5a77f733c550c7c9ccd8c8a6ad18b7b8de1df5a5742029ed5ea222d0cc800c208a13036ca661e06f11841aac7dff10395e79d37fdc3fec5bb4682cf5a1dd4eaa448884758db03a1524ef45c4e8b234027ca38f7c4bdc87d5820851d2a504975570855fcc5bbcca00e25233b2622360969e19385a363822792766047d012947e50ffcc89eae138ad5556023f3ad658fae3970b315a0e95e8226af58d0bfa9d1afde6799db1533fcb301da0c8cf64fde42754c153f6c4637407b8339637b109e5777a7c36c215f0387d22f5065f88dd975deca48720bd296c6a400abb8cd72185c2ea290bb8d62cf757f89b0802a07e50877552eff6d9c4d55f322a906d8431c684b6d2c412ed7e5bb3bdef24ad0ab77abd805ce8de6cfb552368e354221431d12038daf6cf692e07f8196e97ab60dba89baed99e89bf45e115668868127311386f72b4f04e245e0e6916cb18a8fa61ddb52cb290f43db83d29a25d46867ef728ba727be3fa7ada5478eedb3448afa1dedb33ad41e7cf7c01e718e75f64452c8836c1335efa19e371a629f7c8ac75d2e292b196c5ffed99d411c407fd338dd687bc94af13a440e0fa74097c0db3da6d01babd02c030456347cbacb80b1898817e2f7d17459b0f32ec926f1a6293823502908bd1165bfcfe063a5627ad4a3e400b59fd2f1c463d6a6814783bea7cd814d9d9208cc5b0a54960fa0488888ca6fbb4843bc134c76c42fab2e1a2bd9ad3c2eee04ec1873d9853141a075bedc02a27d4ae1806616d2c2828d0135c0c2a022038930fc390255e14a8e2104c891db6754550212139d48e3a9cffab7286f7abaadfa6a855262c36b872f1f725aab41c35da6984b212a6662e5aaef809076f61619ac29fb6e7bbc6a66ed4016ae47a7d31fde4c5c7c8e11d95b15587108c9331e0c25f04f7db434f1799da5a8f6f632776a00d0ca35f49b91fdf5f60e101c9004836bf5f807415faaad9a2d013a989802e5bf284fa818ddd7e70b3ec912ddb6cd62009bd98cb4aeb14754c44c7f426826ee0a386820f95c113e4bc67b32f2008f790c86c10447a06ddd31fd312ea942f1e2ce1c11f05a14d9c67e9d48dc31b7dbfe32a88be0d6aa6dd5dacf22997c83e56e753fdf0c4cbe4aa3b4aef2bba9d1db81d651331d49953099e499fc3a7506795e2f33c5e9ad7d9903810404bef0308bddfc6f4d3b40a8f3a1e1360e83c961e2e80be77b7527d7a22740d94bb1a1d360ab05e5f67136bf1124f1dfb04c8fa8403541d0a5637c9b76586fd37b0a46a43fda805a5479a8e15e0c1873133776c003a3c865a14c5ec2b6ae8471a9e12ed9888dcaf7ad273f79f53fb07a3bc63ecbab92aa0d20e1d16dd30dc3c8bfb37dd29c8f0270496aa8113a1b62188634bfec8e6b8ae115e201cca0b2311742b40405e6b44b7506c085082fc9107475f72903bd63f70acb43fca51cd1ac754dfbd1f486a310572d7fa376aa2c17318c7ce6cd2793c15678757a0be5d7dd72e49e7e11ed09a1a1be39ca42d9d969c0913aa136793cd545aa08e154e546b9e47aaadfcac2d551db3e291cad502a48e4a0c2c898dfb676c943ebf97fcfa01b67cd62a5851ea06d02c1eb65685382df70256347adf83a7564005767cd40a4f80944564272bfc4f052508a36dddc5d64f8a0992d7d6dc99da2a83174f5d796a7e82fb619c367e2054338d86776b95317052755bcaaf026b279c6050b73b6feef7a8a6fd0b0c0e46a14d38d51302ad7a42e43b16967fa80ee7ba295eef33e3d1d98218ae3b8cfc051cd65b07cd7cc8394c32edd7d946666e0ab4e0ae8ceed34b22593f7b50e03d550ae3a87f01ea77e91173147ef7b591255336a2dbd6bf1dd0c0c6f6cd372f4d992efc4dd4d4dc76354cb6b69714d686362d5d2cf669eb1b1fa58d5456364c9bc7f7c3aba1981215e5a256d6501579244a493006143f2b52504bbdfaa091189b51dacd402b9af819a1786bb5c0ad24a952e526cc644f3d0c5522d0083e34cadaffa154c39b05350c37f288ca87e07457699cf054ac8736bbf42efc0225d67f6780357141eab6438bd46dbb490abcb08a12048131155cc193799d500222e64d9a060eb212320078d42c699035b9a44994cecd0d361e8b2734083106062d1122ef28c1d2b023851c29c5076a34106508ac60a4f12934a7302ed3ac863882161b4a76dafb8cea88589c0422975dd52a5456e925bfd161d64e0b4aea6b8efb4d8d45a5dbc9c27d0c14241ae1d823621201542acb1a4bbf526056a035715f292fd7ad81f9e689bc10439f0cd9bcc583c4db53ff135ecb66e5d0d941cf0448c27b2866473c91fe518b5fad63bef3315522e8eab3b4880d1cbcc0bcefdaa14a280f08116b5030371196fe1ed36b55fb7ec1d0300fb3542128395be11a2b26fa505032840c1c309a7c3f9ca562429f33e059bfdda8c86419dc1a4897ff4400bc405125cf7291f8c5aa2e47e7763fdd3f1e84cfa2f5fd8088eb733fd1438edab15a74f3e5953634759ed0d7521380fe1d702a17b652058ebc19d85fa1f867970ff410e3bb88d2f93c054db4cedca5d1173a5b2b117302bed5d366710de1738369a2eb85b6496d7272f6f79ec2c2cb78c019bc4544a791a42b447331a69ce4b227015799ceb0c31f72597f15eceaffe1479b022b36f3b666a1490d07ccdc47303d5869c5be466c3bef3bb9c50a4fb186f65a459db2acb1336662a7cde3d5baf82422806272e80300dc8c40b0043d5a8ddc8c18a177a2b5ec3f0ca759d3854177a84af5558a1d8e4b386f2bc23e15cac2253448cfe54b1dd8f15cb831b1a918c67c4504c921b1e4cdd707f8318ece8c9de0642a53bf7387b85636ea73487b17c1f5ab800fb44176b654e5b1e4888fe430ee9c34dd4eb2a934a54330d232331f36e4e762e4f030be2408a748d7c24a69ac2698a9ee3f12890bc24ee5c4112c296f2d36fb958925408d5f9ca2738b08343e4e010fa62204427859bda8ac68fc31b4f4dc312fbaf1ae3224ae2c328f3eff15adfab9cbc46e984ad0a8c8e823736fffc7cc582ed821e8f5f705d4a2fa5a748353f6029f9c48ba3ac869510405b728e703eb1e4421d5c03a261707b1081ae733f3148c21401089741b51313d0864061deb60dd244ffb3103e20f701f3ab67f72e2ec3f1e3698a5c812c38691088ef69fecb9043c38b9294ef0b9ef67b67000df0383b3265aadd1e19abbe2c640056976d1e69731fe14a76f8413be22df63a898d69c67bc83b9e3847e1678d944fd05f129a4d66ab3bf61c29b650bf1d988ff8e3bdbc50dd544803864f83c8ca7d9f994954948aec4fee2799065becc4f86d7c866f0a6df3e2aee902a46194ec1e5be68a87223720e5a28661e24567e41a6f394ea401b4a63b3bc00e1c7ca0e8076457e63d6b369c3b9c7d227f773be9ccbcb04648c32975203c6906fbb3a25d0f55014e6c598f3836959568333c5d2b1f6a741bab5f6e567407e9e5397129df6cb8ca594dac33483d2be4b9170c6ebbb16c59e3448b3604b2baf606dddb12f59550e6d0eae871675f87f0e44bcf711d483820eba7ccd70a0b802d09c4ec04d44c8f30cb06b82d979fa4706c0edc401fbe04859639ab6a172bb68a73ed5ae52a0cf76727b6e8e6f6c83e858c7ae4d0ad9c50c5d66ee61a24b375a53491655b3b83c394a0cf5f70a7093c890b90c23405d54391c9b8dc9d70f50aa5d9704995eba7cc5d7f36e6b0241aa9cfcec4b04c4f4545d6e6b2043d9a1adb7d79ab0a310bbde0453b24ca75c0f80126e91b11254236330d030b68f0f563d8ad76baf6072e9b35b1ebd44ead06a69dbd58ad0b9b9aad0c5312bf06d0c17fb1109e9048c7a103f944a11104d6526013f9587bb1f1ca9aede19169922daad3d7e455acad662ef3c836f8dcc6ba610cd315c6c9a4de1cef4c88c1a45842ff6691322f222221681db57bbebd1f316237262007457bd7587e0659ef5cf35cd3abd5e172b2d40788f56669e8f9d26a1d0ecaa992a6949aa59e07852e755048a71dcbf5844f3af412841ce6b8ced8f2b96fdebc7be6495201379aee90c96a86654f5264b1fedf4e41b6d4a4c70ab0344eadb7a7b8982fe398a0d63bd1e3c6fe71f6d9b0120fef3acf7532c64f083800360edf64f43a07d1b3c65754f7ab49055fa12d2e4fe2e2ec6d6cd5bc5522e434fa1ab19ab33fed3a0215efa974dde540cd24595935804f42e58a1719006b221d90f79c60689b19e14e663c36ced36c4ca6c1b9663643ebf441702e2d114688da935bb155bf6abc46a19a5f6f7c02b7fbbacb7349cc48473d8e3664dc57a15d712e1d22928e944906d962ac472c56a5d645d70c9795fc5408abf8704d6d563e6527e9e5555d9771fe254bdd21e2693066cee737273555e335d2f75d4c97d860c64c43b10a73f971f0928df8c757516b224b77a7080b8707ec4df8c4f245e3c53a4a0a1b83a6e03270952e2c8bbbf8ecc99cad000055b426bf9803fdaed4b1af2c4295ff840ced7797c4732ffcbf664c4d9c296dc8f7258faea64b7030dcac414f3501e6238303fee256a961aa8217f92f08ff318a40485f32c89b7a8daf8f24b025edc4161f4e3dd1f8cca421469bd3d8ccb41f9c009e3fd493cb5c77bb22acbfc55555af884a71fad60f3e2733f0183fb26f82044fb8efeac5e9bbbd04c053adb728694efc1c05ec060a2fef313d64c10a56f00187721c2788f146b7ee4ce6f047e6a148ab779bf7734f91c52762b371dc636f669534d9d2c7bd2ee15dd96539f9b82a6216d41346d9397f730384ccdec1d744b75990a9093e5f42bf8b082d68300d3dd424c03254bb04091aea103da4a7760ea426d3cf3bf68fafb53e6d7d1505a26122bdb62aa01098a98fde496667c090b497b5e52da7828db8997a9655be07408bacd3cbe5f9840551a52a7640ea9a3f62e64f018434610a66842b802c7cbb6fab1ab9a4273ec48102c5e2737dd505aab6b62baa85cd52ff18a464bb7f85c8667914653bb4b448760a5af124747eb575677e402f547534da6fc0875e9d889514ce21424913f7f59f9b097a0834916697bce481810a08b7dad0926cd918c4db7ae0781131f01baf6367126db9787ca66b7c513b09eee9e80728248c4bdb17d5b207651c0b7a9a00eff088362aa23e9cfc412f126da5b91b6ff06530e5fb12fdde831b0af3c948a46d9e7358f73b9de5f8d2341ac5a097e2c2f2a1551094ae331d623473860f6215e64f0171560ab992a3c28c6ad8f33d5675687ca671dc17864864bd42ae94c70471af927f60b0cae40197908e45d72b7f1482cc49ec8a550f838e1204ed48ff0ddb831c1fd823d668316a1738fef8d576876aebb4ae121357806d6098beca6a0dff8e9d840fce924bf1a040c562c1ab4af189c65eefd2ef566c5ab51849e9a0510801c53e63cc600fcbca0b9048a5071743bc2bd82cf451c318c9ae1ab9b11689898abd1285b5097ca493efb7b9f0c1a9362ac70a1e6cd11e45b1952438b0f7835fe7c79aba62cfd910f1fe4406a7167cb1dfa73bf0d495de78bb78c56a484a86036ae22e2602fb75e49ab5522e2a619783786863a54c023e87bbbcb84078558240e1ec440ff9a618329c6cbc78bc7b3065460fe43edf903c58bf38f7b050faa0214c659872b23086575403880f2b1ad21c5415a528637058d5a22aff7b3d85b4115e602abffd73fce5c5650427b1d768c8ca2a2f7eeb71fb5ff070e4bf55b24ae85d3dde829e79f37d6d64b290e7606af59a8c051b7a24b8d4f631f2a7ceb1d5b3ebec701f779a54a8028d5bb46f178d2c0a81caefaaa97e8b628946ae730aa38d6e524ed52ac9b4318bcb289ac5e9a1dfffd8ab0bb39d15786d5ed23a939961b7a96db8d66c3fd7d873e61f8012256aa573d0330bdd45ba3cf1b80338e162e7c76d8ea973488d08372ee05690c9ab18901af05046ffe90128df6cdf0374db783545a2d8e64d9ea2614f0d1926f4b60351232acad0211988cd0db50bbf4b0e1665c8292f6c285b823f05b0ee261abedadec161423e8fc6cb75a7a6e1c53ebaa039b2635c44ffdc485b604309ccf80077ea3e1e59766f849f34bc2637df4f547a0ad0bb882e83771e8a2669866c638b27207e53c17dbd38e38b33018922d6dc27d0bf67103f2683da661f9f22e6d490d287b1ae02fbadb9fd4b10e81a989c5eaa0bb9d418a740b78f908a6277d3c391aa018bda76eb63a373563af8afb98d41da5e12b61747ed216bc03024f22e606169d4f6924e6a3c1471525943683f19bb18b9088133e8a4750ad72a2d0098bafd4bb0e3d5b7d89a6b3db256490460bc09ea9e0a49eea22d2b5754e7183bdb0c059d8829cb446284e184f8977099fa8e3579e223de1b46ab5d792d4cb28d017927b63c591c283304906ef3e7dfcbceba219d4a145809297b7f03a71eedd4076cd4a932a1f5aae733fb2b94233dd338161cc0999103ef1c0ac43b35688387490bd1fb324001dd47aa3154ffc32e95a9b2d9610b71425891909e59a590cdd04f83b148863917879b8cf7b3aba69e5f4a2047385989e9a23059a3dfffc0ac4297fb1a759930dc32376ea32a28e1a86295fcbd9373caa54f5ceb105d53b8fc3340178aa6386f217c687ecdf8508f5b0c534220351b02bf835b3be8a6e18e544702f1dbc6112500edfcda9ad7cd1b9ff155c3a989e95d34f89bec8390b823b8800f41cc0ea48451c185ec3798c5b24193673947df2fb17c36c4b1e237b14d0545b92fd5f8e97ba3ce66788c7103df686b87d02a001e9c200971123c83d38206ae8a4e9a7a8a4d0256aeed37873819d27b27052d30c1db303698cb6d90a5045c69900f6b94a66250edb6cf02f40a779e7543b15a6ebaff5e3eda053620670924d8bd8be103045f0464b144f3aece7ef2ffaf24278c9350f0455f366ca995b0e5ff0c7ed09b403a9d30c38f8803278f5e6eabd98988bb02ee670772f179161b712ff9700f6373f610a2cb264c436c42532f97c25651fb521868369dc5ae46c7a42fbe7ca4808bbd88390616c48bd44bc5f73339df512b738d35f2b7099b860243cc6bf84162108bcb66df493b6a6efbc258d0084967bff906e0bae01de6b7e4a640360b1726f3acd413780c01df2bc4330e611da80c7fcd86ca00240ca1a3e9e21943b7fd6ae5a4572ce04879c3366ee73c896114a32ffe84a312098d55ee3cc5ac24eb8afe615100b03bd87b90840ad83ddb406dd3c136122ede71b56b2c6afe7090f169486e15bee7c59788b844ba64f5c25da8180ea7d393f76e324010e3bed1ae95c80bf2f6a7b3dc2c725af65920c6c05afa19642e3e9dd222e4d7efcce9a63974ebf67ed7ae24056794794a2226e750a622593e2850d9415e4426248a60338a288d99c3de83d1b0305648d8ed9175fd40e59aabd6956c786deb6793adbc86f07b09aa33bbfaf92e7da7e5a1245d3d7e44040cf5023821dbab3328dbef9938776193c22073fffdb8389b2444294b66916841f18738ca79992818364d6d7cc495be128774089b7a3135aac6fbdb0e55f618960d787066918f8fe929095aa5801df3c862b25d6cd8512d7a1c9f8b3959b55000fc29c15a68bd9e151a4e31827df3e310a2ffb373c81fa8fec61072d17d3435717cec70b33e689e905e016b2b5f6871b22497d2a85065f1484b6e8980fba93529becaaeca59ba06665ffa435da349c748d823309326da7fdfe19caaf584c4b48c2afb924b2b82a6a3041d110d421922771cd20f0334a6f758cbe8e6254a5a5ed9c2bfa5c427a127ea0b2bcce9fb13e18fb0c4d3b824b3ea3f9667a44574458b112b8286830b62915a5e1625dff585ecc77493e372b11af8f8c9033ab5e710f5986fda1a0b5c0aa7f68c3e42406687c70cd946280dec2cbb6082fddf98a09866ff128a3c7171d938106133ba79080f35c6786e0c275edf6835d725c8665de6b93f6ef385c613c5582776804470adb1a6f2ea92a7ea78ad838823fa7d3a32528d96e2109b9aa8cf971d12448870f2303d42081f37fef458f2672109577e585a4eaac168a850f5348b25ce851cfce454f07bf26add65a45b9612ec9b9e9356e6dfcd910280da0716038a0ee76a997d377f689605e685ef8c247918240e1ae936959b9fa277d71dcb6f96e756a19f6c7ec97354b77900c1aca9875943442c4f45c8cb74a1d277dd10e9341345ca39409480cc2ef300ee56b51fdf3cc2a24c5a5b18a47a5b693827ca9c0dd271159ef2390c72d7adab8904ab14373a8801b608669810f53de8378518c281ca8d01b7d1fda0b65650f97d4a63bda4961357dcaca105509240dcf5dc569a8c8391e19cf18ca24e79ca815e1e25dcbbb7e5dec6951fec325bcee079c97c7c92b92022d99e8d1dd5a65e74da35e9759e9427805ee1b154fb4e8b63bb2c31738007e3145e550b330bd482d983d8a6246496ca507508c383c1a70abbc976c02f68c4f954dde587bcb49af857c7bf352c2b5560c9ca69fd773766f923004584176a792e2db69ba067b8ecd270c19726e12768f0834043fef250827812fd673d59c670a119607865f7d02a2ac74656605f9cc600fa2fe1a54ef4731e9761f6cfff95748cf08099c214e0dfca507a263b223b3d85097294b07208ae51d509dddee4ccfe096d2384207b93b2de14e3287a759c20047ad46ea9d9ba2f7025261e5c4ea3ebe57614264445c8058cc93cb0fd26efbb47232cb1df7b692efd89f638e5b221cefff86d1017aa327cd6540647f3d0c0a58dcc18bdc18a660cab53656e3edee238013f78283542c9d15b0168e5eafb2415a4a4cc71fa0af32603074b475247cfae937aac8eb768bab7848d01660d84c1d606739074d59f0f131c2e57bfc92308b4172168a069f92ffe63d13dc5f8d1bc8ad595cfa73f42a4ddbb1528d990b3fd167ea502e19ec2d5dcb99b2f560c2af962745282f03a0b225ffcde29ee6d0e41d0958ea0012ee593733a8423a653e4e68401f3eb88c501be0728cf0bc239492a660a1b88e4b447fa062c4ef4adca63072cbc4a71f70b69d6baeb8f300ad02cb06c51bed0f2473aae55d302ace90829466d6050d5bc73e50d4473e9a3b3f47b2c7735c22e1162a6ddc727dc570dd4537de556f3a1bbcb1ffa13b941716ae08ccb5f2d9a338eade8b17c571fb8ed4b965d0758874154de3920c23ba934448c93c4dd1bcd4dcfc4d605dda9464c60153ca73d7ec13c6ada938d04b1917f415ff18cf5750600d6c50b18ea2a25f7ad46de9e9c8bd1a4449e787f0ec734618f9fd0cef12011f91eb17dce010f9dae95b1dc70371d66f1bab5f26f1241b7885de11d3e0a3848c8e1ae8737334a688d4aa3d9267419957b5158abf7a32c5d0929ab269859ff8291d6f4d5cfab587de37c48e6fc4e5a4ed44638996292f01695707b9e07722f98fae04f1015ce9a1c6e7f4d33f03c2e1e0e35c44d9a3775957b9a7c6eb91bd630f55c6de1467583aad88cdd9492cccf47700a8f9c35c4dfe5c13cd3e2dda10c2fe36d71d21ef280171cb1c21bcc0b0e669fe10d41a71fac61e696a01c80c8bad6b85ef5201872ccf16aae8c6cecd67217156d7a52b21529451184123b500e20a78a0e12663247246daba22f9161ea222762285760ca0f5745639edc841d3f8a1e1cd82ebc116a28be539e6b22601527370cdb8ae17988edc801aef1c65282370821d678dd06faa9f3419a82353bb18fde13cba0a9e0d98a1c29fe0bbf40286bf594ea378015a21c4301fcf2ceca4b06f4eefebcc21afe64c8799cb30f46105f3a55f33f73ad3c6d7f137a1642c547a68ef51893b046451e0b236730a8596e2c4209830f4aa5e2b11fce062e1ca8b0ef9da39725710469bb10a598202fb6d1857569ef46ac3aafd060cd0977bffea0bf9cd316f092650b0d7acb3510ade15f8048a061450e08752fcad30ffdc700a4a14e6181d232d771395921d849e36c02be6ba417315e24451bf82c3d21782166aec8fc848178d8a1dcfe75ea53273ddc5e37a5a74ed2e332122f7653af5ace2f1e1c2d5a915a22b2e8928c9973139dca9883b265410fb70848d6f26e9f70bdac3e04ff230428471df7604324d0bc2c2c8088c36aac3117eef53d6b5c5fd19b0755daa407ab23d940694dae45cd9660929b936a39fc5283cb1f32e5d23305f130195f63d79ccf6ec08f0a1d9507bbfa872dfebd36e8579c8ad618c475e3c1b2e0946e79b3ffe378c80f38d97a281d78b2a174aba7a5fc7267f31e5e7b7df14dd3a5574b84cd74e59d879d00ffa8924b3e8beea88f182b3bc3b92c09cb372184965ff909cae7ac4de56cead89d6e58b7c0009795b5ecd98e0d9a9cc6303cd8fd0ad1bffedcbd27e15f35c736bb6a8ae8555ba2351cfe86b48a8639e2461022ff4814b50bea08ab5127882701b7c4d924c63addda1c4c64b92bd1b5eb1b2c825575e971d6d5c2d1da8683ce46a2f3e142216d0285451d135fcf4a576978ea0de407a8027f96eff3977bbb67329fe82f4548d282c76ee6971d3b17328cde7925a0c59801a94040dbcbb3f711df463b6f581f8c64c7ff7f9e1e0f20af58b134f8668a46a1ce9aa5ce62004a80dbad04692fc7ddbbacb5bbb5448bc81227cc317289e7ad126d900c0503c7ea4307fba86717f29a03f104c0f98c5a514e3e96749f15aaac2f0e9b43302381ff710b44ed92029c1e5edd03f0a06417a24948b6e49ecc79a444eea640e4e6adae80f0a49d4fcddd46bda8f0fc23e38ba5e2023fab925e4fb703f5d14eb7aa00708a34b6193f3061147eaca7018a297f5722ffab45682c449304901d63b8240b36957e82edaec201c363132a064382b511ecd6e926df0b3b924bd6a4a86483c2c79145999790102bc612d4b4fe9df8ce08ea2b65ea2fe31166341b6875045f76720d4519c506e13113fb705be6d529ea4898ef49f1246e09e06cac763e8fbac8632ec36f15b4199b9047426c36077076ecdb04608a4a1e3b7ac89cc392aa612a2c07ac4cde913f32e399723c8e303347ffa699014c88d830680bf601661dfb997cff857c4a3c0b61a436b26e1e37d2a6804dd528d3f714d1140109038e4d1c9a8d56663e467c04a0868b6d18f73ea00db866d09b74b80265838902dac2a89f02e4beaaf0e71b117aaac6d41b0c71704b7f5434b76c3be32c8141c868722d03befeb883913ab0bcca906b812710bec663868dc466b064b209c77056d38c42cf041266e6c7e8a7d88aa23a7dde1745c6481a68e9d5083e98bd9cbd78a900b3d16d3f3d7bbc88df6a25567a13d16d17193509090e351cd390393ae715b3314d856da92ebad738a6a833ffd1922fc4dcd5ac149e11b051b4dceed59908b358e23ad770177237996ede63857a915214a5e569149e9d69a45a65c4948763eca9b4d2bb46d95e123e4bceaf1713d215af45f931d519d5311a7a03bc9fb1ff3b0c4c104f4b587a428c3b8717829ec6d2485ea8c561244aa40dbf6600f7408ab1da8d168136b86693dbd6a15960110fd267981477fbb884a2ac619b820e5c6943f8a554387c29dac4130f81800051009abf81ed86de106683062ccd44645e14b66d70b2685a0e469f26fc05d1335c07125c18441cff6add5a12b27d8461cd9490713b4584eda56ef1cc8a0c4c4b329ded54a6c270b38d7bcd812c0c479cf143169936d44d3f8aaa093b7a7ddecd3a3bf441b1d1a761b51dfd35d375f162250a87969e02b6a04a59fe176c89b03b485f84095d8f6b4b81c64a91a72f0c7f41712e4d6dad578a1bd30e03b1fcea81456a6b49d1d38eacc5446018f79279090414a830e3106817706de0b9a909a56d3084d9900903cfef1e07354279d723ba5fb788691497f0cf9100c41bfc90af50542c27414fb5efc71ff69b799002c9b133fbd035e3a5ff8e5d2ca30f1aee0eec07a7a6e4e9731c03ed0b0e8b5cde87ab9fa6428823e2b14f1a361515732f9b11212cfdb288f509cffc53af7918d27081a25580293a877b8f728f579ee5ff7951801ed2564fa9c08980ae3204092ae63706066a148db80b19ba65160696d30fa6df03456b03c4767955af3cc4ee36e10857e024ae91c1ec3d6a7fc634b708755610afaf903a0ad3cc8db81525b9ca3ffd065f6b70f0fedec6cf045c1ee630d723abd0945941bd665a13fba62d2883400bb27ac2955a8355ada8b35b440c70b34dcf9c693cf4119cf1d71133ee95c842be3fa9dd0da2413c06ccfd81755e04c707fa67673e8e16ad9c094336f1a1b9699367d02360b99fb4e1f68fb2ee5247deaf8433e26ed84030725a475a94388ba11da5611c76dba59c5a83e9c93b98f3ff508978821433180ef72fc87d59246bee6ceea678c4867b8b3622aa8d7b66f7ad00811210d5b6f11a058cb482e390521dce69484d7ab61782d6831d4176b05d7fc933c7c1ca631dffe290eee40a30064a4464c298841c8294bacb9ccea1933eec7cdd6985a090bcf45dc3a39f004e84129aae1d06a6d9cea39b8611a9c85b85667b0294893e96660c7c7e6a2214146395294323d52074b30d53f14214e615e86e0515dac07108fd5c212f10ebcfb89f539a0ab4159d0ddfa1830291ae60e16b0e7eb9136fffa0bc6b9eb2193d7b72334ed29d7ade5eef3186d2126349cca54fc6acf050a52671e9bdadbdb4b56a3cf2034c947cfa5019b90a23daf9bb500d3969436da216d6cefab34e95874918d0d6c699f8a630044208037b5a23b46ccd0dac528ec5e5518dc7a10d8d39cf9f890c1e0e7a4b728db2365410a1ef966ebd73e51dcb701cd4fc81018fbf0b805fc5e561c0e3b60c1e1a05cffbee797bff0674538414c2b06937940962f2414ced0786bb1c521cb0e83813c2e22fea389ba89beb70cdef0223e381e12bc0debb95bc994d4f0408c44a7d145f2e408ebbe5487be66ae0c6edd9cd51597095caecbac6c14ce4752514d9e9b203f8b721712e6e73ef38b2849bbb1c967b3669788b7c612bd637f97034e37e6a484fdac99a2573bdf73a953740366c888589bec57d1e23ddeede3d156797bc03a8f7147dc6265b9e508204df154af28d7501a1d2487b4f34608d8966f913ac7330821069d2f7bf160691fc2b7afa62938684392e67f528fb21c3af6101942e9ce6d71749967c39ed0964365e05d6b42f366dddd979a125b4799de6bb86d7601d0f747faa2f21ffd334c93c40b46e8eb8555c0df34f293ea0263132f774d3a228bef8a2765ade3e9115d74ae831d6046eab755288ecfc59487437abf8937224d5adf2bfe940fd1afd51e5de72f1e1009a2d7b82dba0ab16451ca9226f1684d1f79e840835d47f961018e91ec81d6d5d02b37a68efe24c94f49a53f8b40af1994db46df6addedf518d0ada4a798d5ffbb3234591113ca050d168cbeb7c597b78250c78dd2e7cb47428de3a30227fb376b39506e421d05beac09c69686f7de1b95f4b6155b33cb86bb35555b3c77d022dc82db26fea2a7625e0bb90d8db21bc072c5c891091f81ba1ad2d1c77c36d024cd5dc7286ed95f53d4082224ca4b74a2850aa01b87bfdd51879d10f489953ae12fa6d1092e6f61130b6a684fb2f256bcd60d2b45a23fc58a6424ce63989f6122cfbc1722578207a907a5a871334730dc700a34a14efedd70a19fb8e1b49203011508185daab8234e60858ba72c67c6dc92201b50f4f64394c4e157186f1a86da03631f8b42f69998e8df88f4d7d1ecde8e750001620a0a6938b3c390ef5aa2041ad3a9661f0c30b5807ec14769b5d831cbc900f972058dea8e8fa47f10616099a0acf29f10f2d5c119e854b0caf01108bf9b62f25e747f61cb738ab532d352c83834d50ee5d880c13e40f63a0db03ba31605a81cf8523f7776d214c7c1ac5867a8feea1d66878df7b2014f8295cf39b6d8b7042220dbd1ec528dcf2b3c2f369ad507e4f92d554ce378db3229f8fb91affa1edf1b207ce6f957a79f23477ad580c4dc23da900a8184b7912ca7a938bda729e217bd8b2eff095db3158b889bcc7b3890a00c2164f1b1ce6912f0dee99e62f3e12840c74c0aa340ce51f669716fd0b4a0609fa6c31b48fefc98a4e78559ad840385657ef3f167ffa34bd59bbef0986be69fd671713d5fea78943bf5d1609208d46227e3949759948fdba849f151ab30b29a757bce820e3da58f1b95b8f1872a305178d6f7789813c32c0ee7b86b714519f0d6cee5371743139b8a1ca3c55af928b1e93ebc6433f52426979997ad4b32f651e8fac3b8513439f8457952e5bb73bf5c8927030c89783324e492c19948e0300cf32bd3958015086f94fd41cdb87bfb53956a82283b300e5414422ec10306cc46ed843ed96db1420a44b860677a7dcf8b55f72f63c0cfda3f3e7e054642107c623f361dc1a4a4d0a345c8a869453fc80061d975b60f7866c6d6270190ab60082cd73b9afc77bc480be28bb9489924f3675c24433262c2d65a63e02d295bf181e529bbf713e3ac4a7a28855dbeb7e49d729180baa24643247eb9389783f803079a1d5b095bb4fed0b3bf9dcc3a986aabf4e614c8fa3dc9817661bb68724008c0d3fe802b57de1567d290c93b9aeb2f6626c0c042824eb7ce8bfbce37232f48f68efab1f4f6eb40d1338e9624ccf92ecef917d9ff56ec1cbd6ba0c5541a8951c2e201a71e5f85b8e7cb3681b34858c396e921c2cb35accd182b15d87248a4f30084f7479c7e03e35ae1baac6346b38a45d33a269db607ea71eafb693b1fe42eb7e0282f7862b38b106019377b7c08ff5fcb3d669feac17ddf40631b6f238b66b7337f3b74a088cd31f4a1403fa74b9b7d96e8f9928f673d8a8a3608ed33e87296385afd03d055bb7a1113bae3f293a6ede6d49aa62831c43bda36f4d90b53421b6dd3983c69176f80d534c79245a0562ca12c2e2114a6560951f2d444af796dc21d4a344e6e2ea93da0faa55955eb1e8c5519b8edf1f013ab63e189b9903438b8d3486e3c9d0569061ab0e2ac1d19df126ac60381e4bdff0f349380d7bf14f8254ad19e128164323cc936738d056404634da3ae98e413cd383b60cdbf4cce222a6d581d68ce4d38bbedf507c3038ab9353d8289bc24678f99e4cf239cbf06ffaaae406c25558f4e75f6cb580705d1470e2f739160f3d6f0b963b639b695cd29d3ce8f7f577ef7c00d42cf78607000296bae908c565bcd155968f18e651e782d32c27a0ebff00710ec8702fc26a58b67c2855b63b17878ab6710f9c15ed7fe3af54fac92a762ff2da6cea5def17421a9cb6af3c319ced3bd3a9572959dc03a3a1b31d46d97bbb1460d6d18bf14b39f6cdb1a469c8a6c218020846cd4425d430e7b4e64d423fba490c5bf55bdc91feeee40a2fa1907b179dbcc46af443ab2204aa9d0fbe126e6ed894e8832033d1957a4285f8c0e954137aa83bfa869de61b41b8329a1b795fd902d4eed0da27fac86b10df6fa4db26a0c334c48b52d63e299628e1f67352f8c6dd59c74866e79e9cff53d1d4b9a23e0b316ca3e9046d3e1855e4802f73008e786fbced5b02b31ebb1ae0d1c0a1700fcd78bb66e477014c00d94f7a7a016e82276fe77cb8ddb328cd6005f5162a9eadbc20e491cf002b630d736ac6b64fd1a9590a87ecad80450d12e10b4fdfb2e9bb777c6918d0f238d531444cc488c68858061eaf1a97ae62b1d48b255e10583640a77c78063f7f4319c38c073bee6f87285596046999384fc923300bd7b97570c23423512bc274dda422266268b94f752411f1a5f132aad864fd1cd8232a1cf40a720d435a33b74999d34f4024655e35f446756c469295d8497f26e21a43b98d267abca4db390a1058b91fadafe12bb75683add7248d84c2bebd9d18aacc33dc5ecd34269ca6c86cc7d3826d67cb331dd39eee6e53d370cfd8bffce0dfb0245985b4947e37c1cf37aa4cf072d3615339a9538d8401056fc6a1a1f801d850826e8004cc35aa48bcecb06053edbc15e51b9d5e249ab79ac37b1d6d529250e0a65ba2d0e2c6a8be71f52658639345025a7c6513ca9d79cd18f9e402da7135aaa33b163cfdaa72987da9b52e86392d97de09be2e4f429d805bbbfe84d73cb8a619896bb74514e0ffec70ce5f02c48ded55294efa5dc70721762a17c6e34b2589e892e9f3cc1e1709f927e5e4ba889c4b18776c63e778104b157c6217791b25d7ee6ee589860b692b6eb9147109dab2a0b4d1ae688ebd782c63d3c63ac54210da989adc4ed53ef716e6809f9131e4685a74fe4caf32e1786851a058468fa72a64698f1e8eefa2cccc5bfd7ce3d10a45855258b5302ab426049cff4d55e1c0e7df57bdb96c5839e1e6c144d1cac957c0e76152b64c1f14b89728062201c8379d615354b23c7c9cccf848fc8bca7545ffd75a1e88c77ae28a89a9f1f17cac673c21292709a1e332306287c4c771c8ab70f4a1fb52bb7e80decbad891a1e43b788739dee9a1d6981866f167c4296a1f40cbf5dd8865016ecbc0b743e37b9b45b6ab1e711ec3149f9310df29b912a9c66bc83b748f25850add815edc54160dd65119875a1016a8f0961e0107e6d628c3ba0eb65dabf7b1d73b477946bb3b7632c4d08d7b5171b49903d73ca5d03b79c6d3ae37e29eb95432281d61e7839c8498673f69c99e6f2bc358598d6baa8f3c4aaaf2c185bc8af239cce078f2fa1530eddbaeb8e3cc3810e5d5cdd4874f6f9791922df19fca8d7039ee984ec67d4b63553cc3661e6155d5f8775b7975244dbaf6d46e9e6d50a89a05dc8e163ece2d4aab1fa13eba5a7551f19b67068649ef047f35da33f2845dd6ac929aac7fb2ca916ad5bfb990a7d07dfeceb062e302ff65aac922c4ca516732b67b2f02f7022dd1ff0875f576efdf421ef94aab4bcd8891c3b173b588d3a90ee4c841033155238a8a958f97b6e03783609d1d001890ceede8b3ae06edd30be254980ccaf70781df3c21b8d0487b560b6dacdc90ab56bf7c27f7d85ef670881dfb8b105ac58237b3695bdbb20f08e22514bdce00c8d75c0257cd0ed98261f7a8a940145aee35354b9134956a869640a2886a664b1c24fb7b590858b987d5e2a4d348269cb5c7e648cbdc5c32703da0ecb4df21ca319ab5265eec652cbfaff702f18d735b909648c8a21d6acec48732e2c1086869166dbe39b4455f376f153a34121e3c7859e711b33a9f2bfff644beb128a9e75e13754425f06f897ae055b1c6c7554e5e40b5957f948d0f56fa69ef9df5d552b65ea464e63235347da2e91da4604dadcce30716e4d8be5a219c8f3c1422f09353e6c4a85cbd643e5f5d389ce23991d82b1d80d642de5029502430ad5f766c816483716aa2a66f23441504affc4525dff27714a1e0ba333e47bc626eb6e1464c689d5aeb4b62642c9bd71105e932a57ba88ebe21cdf1840e1a2734a38d2311fa373c578aa2798aac8aaa3142559787cb3aab03de1b0f039dc10a5994d96637ede8efe5bff2ab02a954305a5d692ff7fb1f751e3dc906082fc6bfe15acb4b49f3fe2cd2e1fade5b04d37623238a1796a3c577616603944b25fe9d3f577cc3ec74684a3f8793f0e31b791d8b90fc74aba616ab423943b1bbf20155015045400956b02a61da9ea18a04063f1f207cf92ebe877f72688f5721198bf7080cc9a7f281ce85fcd957a280bb0ea64b0c7d9acc9cb5e3068be904960cd907a09ceb35e4bcd9ea61eea8dbc6cd96ec5abcdaed1c6a0033662a3c7912cff72a478e223efdb19dba0eee9881e8c1e92e4ef67782d35ca5fbecbcc9b5d6954c22b3877c7422b6b26b620fcb532fcb09043f035c79b0428c7c3ccbac373fddad33bbfffe51ca1fba770823c3f1f87de9ae8e0af2f80b2a0755b7e520136453da5d137a3acf8f0a09962fa642a70432a455ad95f3002567d2f0bf5aa34e829f24ea46cb9c8f684904c30e652a3f2edeccc4a9509ff3367d2ae6ac2b6e5e5eca7888bf04a732b0bcd14569c98dc0bd15544aa55e690ffdb7ed9fa60ae74e0bb80e7c1f64058e0397a1ed4fee5550c18291e1c52788e009b9ef0e3c8ca8619be5b637ed3868b2d5aebcde428cfd3c34be8f2ebd8b904da063a00e5b1b569c5986165a4559ccd9cf946224b14f2e3ccf9a69d676e4cb7336775b05f9496a332dd41555a6b2fc366ce449fb6bfcb379d50fedea228a56fe5b3d835e633537f3dfa61ec8b3b8bf98fe8f7313231a85bf53d77182fe60b7c54abba0fc1e9014a4be0d10c2c35bb9184b881aa7374f5fa38c88f8ace362e859e7037a894037373fd17a12adc1b60eb4c3d6f5ccf4cd9673e547885c437805c2f4c903d49cc9ef1f4d2460d9f9e17c069e8a8396135e0b71724ff95a134b6bec222e70016ee053b62e39fe7496c0cb46801ea30dc75bfd5575092876ba6e7386020207a9faf8289877c64762a70fa56cc0b4aa068b836f211d202794a9c49d894b1e970580f0fcfb552aab86d627738b2f7d0c7243fbb70bbca9ef3bb06acc453d2d07ad7d3db649bf85653c9aa83e6ecfe50e649ed13d45d49591724f99ca249ac5e8e050437b3b8b03a04c45a6a2336c70a0e2bcf693b5273b60e13c1f018003b83da60f0804cf8307fc4256a4dc806bb30ee7fbee522bec62e919215cc3e91189a8f04257cb2b40775ee3ddc01119fba45d79f976776c394e821e74a5c5d83d9b329314d478e5941d5e8a86149146c4d62f526e2fd5b5522ca3df78fca0a27dd2384e6fe38a3428d3211963e619ef6a9fe757d68f66cbc3da3777c96f18738c0b679361275457aaf1e0338f69a640802ab565dacf8aa0d225e74c4df879d6a3cac894137480e468d8162ae7835919605651750fa69a5e3eee01f31b0eb2a3756aadb775051001ee2815c8363cf075286acbdb7ded76c7cffcbc155fee995adee76cbd5fccf86d24c15f684ff48cc36d337c34b56f7e2d809bb8815599b2d8d997b8a9f91acaf385fe3e4dc80a9fab39b853976691060831d90e704028f22f1c3458ddfa330eea580f5c4533a08743c55522a8e6bd8894a37618291fb00f189b2947e9558b6fc92795d29bd61ed2d236e22eaf21442a1c9505a54da8ed48398139d178012ddec5936adb2a3111f693864a2383618543af07efc11ef41bfee03f76098607949b2623ec7705a67ce913e8a5e6bb6aaa10966c1c3277b65497bb6e689154ab4ecbdcf534b1f15cbdf7ca0a308211b2a6e2fec4970e17efb72282d92f9bd96b2bdf0e33dca4362cd08edcadd094b89627c33c1d7e3da6231140186021a70fb0de44690a57b06901174af5242933807fa3865db77f4ad76c0c6e994e5bcfc533852cc88e68dedd142ca92e791451acd741e1d3be1ec5d9def83193525feca76112b5a4ee2ffb1e67f377ad475c81dc500a05c8f57143d92d9c07cda0efa02372d0100146fb3e0f86bf24b241255b93368a078d3b50c72a9224edd1e7b103ceac45e8247c53bdac77de3c79ad36fb0631cc4deb3c554d4247989c48efc2e042cbca12c1051212ecaffbad891cc4435a15559f4685fecc8de57ed3a76c46cdfb254361181a3b127a6fbf1a969f3345765f86075934a417e512f045927400eeaae52083dad2125ece4ab6452deb123f64fb8a711a1a8f3da2af75892fface33a0a57cc87105947c6342f6cd5d10852b9a31ed4ad800b1a4ae5be1f30e84624863a4453e3da7668e0e53a00ccf8eb378d38476a65c316a76e5999598d6824466c3ca894f940158973b69b3455974b058ccc740c324ddaea9c275723bc1dca3ea2a8736f52a7d373166dffc614b104786a33d90c98ff2a2c40e1c76ffbe17dc5028c86cf76bd016023ffae17aeb42e0887c4b013eed8735ab35b42cd18d5b542af1a2fbc2e47808da40b43c0278ce1924082fb293c6961c615abb2c0564300f84a473bc7c68f5322b3d420f4cfc8ce659f3f5a2c9a1dcfec9e8210c097a5a44e263b4a6cb6d5928963acfd1563b4c1ab5861972deac6340bbf0ac1fe8fa05b2955d9a17426e6bd23af6619c2d76d6a07b81619df73d5a247818b116ed879a38d0a6eec01cf7f3e2d4c42f96b5cf2ca080f8a2c6f501d3d54277fa63b64b30d3d49ec065deb5cee3ad1b335caf3863dd4ba0a8b6824d0e087d1c72c0b43603b4797a5f59a4061b5176e91a48c5874eebea8d8d0ab248645ca0033b3d88b4053d4b0a8269737454488304cf35f16b13b55bbba19cd0ffe5e0208fc0241feed62990466a78da72d8bee1229890d1922d194848a2295dde17e98cd0d56790aab13d7dac69ad46e45acd93d8403ae0e8350238b2eb5165f803358b2c89cf4028e2e84b7c5f6e7f9048f0aa4f5c2287b526b6d9d2ba78a1d821cab371d9e153811db6d7d451ee2895636f8a46fdbaaf000eb0f8343f6a9b1b96f848062e3458a946b16da07f3d8ea16d00b97dfb715007e88182bb7a32c82e33b1630145dbf76bde29ae7a7d6fb4ea1998d8c221c4598a16235762ca00fe625e5e5bed657b07520c5658bd9becb7c2f679414ccbd1b67a55fb8c91c49b25099f5b38231410b1e5d5f6b1e4898463a9d9c294cf8d0ff14589402739e6da95c651c488a909dee1fc9264f98b41bae79e82100757ffd97eeca8f2d5dda17275e264e695c20ca778c1904ef9c8b2bb7d56358fb3806d197437f11c4976ab0efb15f8aff497e595ec85b7c6ef6a270f0d69e57690e7433a726cd6500e8622845a5efd98cfc2f0af6c98c7a8e880875a4b0168e939021473c6167fc06e6ab816437ee3a9058864bf118d5a2e49d0da49905d8e92200831308ef1e5d35dec0a3db1832db55e281909b487462c1860d91cd12895933da0de743538b2f7a95ae44e26e462f21899d5c72a7a22412eda6773ff75f3d0aaafb53a13bbe2b2ef0a3ffcdd2dd7e1ef73944e22e32cd50ccd2ea5d3f2476dc19db150aae3c679c4832f5427e472c5a33db0a5c7f2e8562b40aec1496bed6a55ae6141a970053fb07c5f355a5b16a10199136845d52ecdd6b6308fb924caff763e86388f658af3917c171f253ef65b2eaa605a83a58905c4cfd7836f003d10b8ae588d56cc3464bee3c176eec62c228982c12e309de567f03f2ded757d195f5922de872398dafa77712f2892e5841fb8faeeb2121ddde2825350861c4df3d733285198fbc67fa189994a6eae5673bcdda3445b0159dc651c11b83451408472303f47b462164c6ec855c16c7dd65a217dc1883a39cb3211230d514246d9805bdb4d4c8ec6dd9ce46a71724f6377cee543901d29a61577653735fbab621d35ff7959a1f6a11d53379f6d7a3e3b40f508143ad6376012233bc6b17288147d30ef987c15393c1964cfbe81a55ace0102cd5a51064ee06405238a2429d0f59194e1872b18bb226525d90280c06e9d3077f30500207d90d393c35e227860d7b3e232825b9953caabe15d7f4e2c26d7e924792f090c255a33e76da00cd599fa2ea8566c56215cdd6b73774727afb8126ab629548730ffecb7ebcc28f41a7634922ae658a9d6b1bb6cc063d8e32225d79b64883a17f26af381a3e8dbc8d22bec9787837d6c41e97b96c69ebc901eaf98932afccbed4e6f0918cb896ed4e09818e75faae8179de01003c4c753a5bf80137632e2e84d67238740926e4dc508bd988551c3817bf61b91b2c4b08c6cd407c5a2c56814e04ce32f6787f6956734c31aae990111890edf56adc97a4f7be7d581b4e1d668407ae614f81cae6db97887644f9a25036a70d14f60c020ed29aba15883c4fa7978c0c80c4de950ab010f126973679a779cf9d66c8f7ca63de8737a737b6a17fd7ec2bfb7e601706f80b68a1ff0be955549e11526c8a5b6d12ef37ccbc241737ccbf967f6cef9aa1b47fe669176cbe7fcd10739f1ff252366a406b9b8bb9d200da1a20fe99d9151dfbcc307742d15ff42d91fb6a7b7bbb91a12b48ebc278d695ab66a6d6416d73f49fc3aa8376990500d07f729fb3ca4852c75ca57c21b94b8d176281ebc4b300f6dfc0c5b067dd95f6800e39da9f3490f52a16fd90e66e4062015c573f5a74af9d09a2e5a19f7325f651729127cb9a10ac87b8a0ca10a158aef0e3b5ee1d025ce124e934695440b122a9144c330843acf8332059955bfa1109559c724188a22c318e68ffc0f0401e958b829150d73314a3a12a7d4c81a2b3f9a4af515cc97de45f20bae18e401769a5f9c924c7f34ae7c35b9e10c4adf4a1b80174852f09821e343429f410ed5c38ce42a308a6a355d01db41522e99bf4943b98c8982e9ce3a77d037927905fa35a7dde4fb2026e9cdb26a5f8bfceb225720db02db0da192800959e844383210febb9d0c04bb9f5a6843cf6e50649201d275b5c0cc288d0b74aedc24d5cb1e297e7679fb454f2204f1105c3b6423f02686cd0edb3c65aa7d14ca27fd64c53286676c404cc52f1d017805d58978a860119a98e7e57b73de00fdee6ad96640250f39299f920c99faa1eef9bef8ccde71c5d2804bbf51958a050bf4585bc7f9b26af10312bbe3dd0f76c2f3e14a501f219cfcae902bfb519f6e13899527e71d38609dd5ca53a6db3a37e8952f5c1f31de7b19fe5c6a2824f2530f6afd1ecf52d82f086c9a494353f30298a1bf9032a3b65e69c209e5a4b9a8e12f5fae40e87b85cea781f7947672f145c87e39acbf86eefe2d74bfaee3201365e7a95de966044c2ee81f3f8b34b6d09475dc71fcdb403d0f9088ca3aff3fcb21e5db78429b4c29874f23f67eb46288392cc656c866da33fad92c0f15ac21ef87dbc769c58703d1e3fb34d0edb07d787984c5d4650121bd9c20dc63f6b60a0e294443d75df4782f432225462f818bcd68f21f113a505ed0bea46d18d042d60494049b6628edb246e253afe29f088d3f810b2c8ec9c0d072557beee2e71dfebc529f3353db6afa51af6199c7be38ccc268609a147d31ab60e2fde79382b9b9d3a307ad977f2ef27465342153ecc94a60da8662ba420364fea5ab3009b7b6aaf8dd5518fa8384051c4cfa81360c49f69cc460cdb2aaaa116a9b7c63abd636aa22b5f88c264fb1ee267ab82f4378565e56a513b16ccc412b7f0fe4e56d815151a4974e3fd69b5ca573eff899f584552fa8c08d8d80e947f2c8fd3fca866ad07d79b6b49992dc5671d607b9359f387265a5d734fe0cd635dcea6615bb467d5fee96bdf311902aef6a8a18d0f6f37beda1ff933eef4676a17226177dc0d6a0cdc19b4a7c73e8cab3da5d8143484c50269a9e6dbc38acfa480ce9dcd5cd9527dc42cdb150d80169d45023b99aac240b498305dbe8c5d954e505109ead84fa7456b9b6361e5c38e9c02d05b62bc7a10ff2f465da5d0f1e0f855f4f88c5de7a7f4befc49f389bc18909b69cb55404cfd049e114e261d5a716e41179590b86a2037affd9c03b0b7c7bd318abdc9dc4eef4ee86fb7eb5ca61874b5980737d009b52fa49e609d33c40707f795dfd1259c9f7a0dfb7bbb434d085ace092a600d4ce699fb806f672d2e8df418aba5979419fedd7ff29f3c2cf56716342f8ea5a73d761479120c78625ccddb523e99d63de66f26602087874110a67472d65f051fea4f87c387ce4a80984ae958a90178bac312f25dd017984a26605acd1f38d0deb91a612c07b6cab5fa9a011e1477550e07a5fb58fa3ea0ebed461b0850a7db47178c1515f390b0e9db56741d7555f272fa80a5f911a92a3e265da655fb3e80ca021a75da69ccd0767a9f2f3697287eb7aea3c000eb8f6b897ac685ddb312407e7c5439f4b7f2ba3f71b6a1ecc137f96ed7216838e6bab8936e9900ec53f959aa1e34d63e92a3c877a9b4b0b881055f88081fd4166b47e6527d94269b710d02dae340dec98d659a3693d2ad03029e15d3364cf1e7bb984973b9ef97ce97cde94859abc9ca58c95e5f1c62c9dd6eba6fb847944484ecf1216ed9d87b113b8775c930009d8bde336fc266ed5367686204e3cea292a24b31137d242d45cc3f858327c7938fba942c1b9767447a9b159fb6c32a54366169f78401dcec05f070b6b9cd5e5dd87815e8a1e373241984e98f9491576050ab346e620ea5dd4596e1dd1f03ba4c2ec3d7ff0c538dc48e766979802366634c460606af464e0f2e90730437b2b000ced01f66950924f0ec5cf90046ec53426660db96a4c607df71d5abfdcc24ee6e92c055981d7ab726e410df51b88c04769184b0c48bfed1559965ddc4c9dab6f7acbaa64fe67d10e72a6e71af93c5dc692cb1eda83f170e0c041532b16007b3dc4ce57db8200754f3d2c73986af719639c200326d032c51a4a5dafd8cd192b655a80df4eca140b17d6c8e554c9a7fd36a9db8a7b2386b3cbc981192a9c15a058ffe59d9f73df5be400301b1166a8078e9b603c89c1023274335b495474dd83ca78405882d75c58941ec1235340b948500a70ad7d34ab4f01870246a0f319b1b652ce279c1daba1348a8d12735721442b59fa422c4357796b34836025567f990931b41863a338fe2ec8a44b966afdd50b3726db7e3704923e3d7c7cc7517dcb428ea7b80306fa5e48633a1b15f91b80414c3f1a7af38f3b3d1f6d6a81d1e59475bf80bbebc5231669f4e828c9d0838314f8f3f6f028d03a014cea0e89690df8a7ac6030d10443eeb5d9e1902aba663d97892a9b14e3b34b23c08f882294418343208c0cbfee11c0416e54bf11f14d82632de7ce6b01ca010423dfb5a767300627106e2f8675afbbd4fd04637f2fe03a62b14836f95a3cd46bb10321853ee6bf81a08829bc0c15b44d30c40ea0f207af3d5bf017907ae8fe153fbd625e39bb5f6b46d5d34893aad0f13e662aa0567afacbc5c0d5156901b4ccb2fc7205783e82bcc7bb313b27fda483b9000f2b3a359f86c0c3d627b987c715b8fda4b9b8e66543c591478224c7b549e3de7674a875b6c49faa0f47623f8fdbf80c79d4460b588855f812380c8bd2f042abf701603964032a87a604aa6fc39b1c87c77371f6f0811c699a7275116309e02b00c8bb031a8ca44a4beb745a047d8ce7d31b21d526c268c8978806e4cde08e185d87c329c62b76d0a56f37d74f4163ca22a4662902b6a706c8c461dd5b67fe27be9b6d873d638ca8fcc8ff221a97ec097bdbdbec94706d90e217b9c3bd2fd8d78bf7ea4bb3ece937914a0a8790dbfd329bd96e847b3d960e3bc69cedf962f9804d60327b8fb1376b5df29e6a871bb13a846cb58b8df751465a54fa7592a98a7b1c0c21849c2238d192fb905867cab046bdd7ca6c37d08265052154ad172f35d07c8a2d125bb3e68972171a98c95b5e136ca590d7791bf45a3f1bb199a5cc3ecf3ea94c8dfb4e287a6ea2b4b06afd376868d5ade6237e915c529b693ace844881125931d64db9efed230f7d5e27df0330f1d3d3baa8586a0fa8b59d298f40c427d060835feb13d75505493e1678b057b8696214f9112d96a6b344da282679c10fc4e7c9ee9329a56b9c01bc8685e0ac8f4ae34d1a4c26087b96aa5918e4137c74ae34bb0bb95e14dd67398eaa60fa4370d431b6899d314365c78e41c9292961b0fd1dc2a48442a6bd8af1641f3c6b63f35ed1efd058e296077c1b66493afc675c118d4aa8c7bbf60ca6e8c8926a4025e5f3d5ebc437911f1d183562abdc210c4e7c64b444858c09465524c75df42e1ec2933400a9b6a760bc5497b472f9396d8577ad99430752a3de6e093ac439d7340327a8013602437292eb9c23d5c3864c9fc654fc71b4062a7fc63b7f950df0e6599b511757b7598d403b397d497b6634e43ddc03689c3c448731198b12eb35bbbdcb9dc6e6ed3a8009b889e7b0f00b9a8160168e5ae5202245f379d260e2fffad4caf1605b2dcfc4879f05a87283cfc39eb6e15b14cf6fd6f9c587b6262a76d9bf3bc64bb056b1c51b7863e3180a9ab78007e42aadb8c04acbcd4a183084092c2377df51cf0664950cc69f377a60530c671dfc103f40e8a7bea5d80d8d56d8683202d6b9486482695c934341c8fde310dc04e85c417698f6e8ec526833fe255ffa92142944f8b10090a0007ca0fbc102807d098a9511899f7ca688c37baa6228a128b0fe58a0303c9d931b03ec5fd04683f25e3e0c212acd4206059ed28195f80dea118a944b93fffc68f1f0ec1071a341230b1ea5050e0dcee175e2e9b5d2cf072a7ab1091564bffd321be851af65964ba8177cb6b89125ff9127d0ae3035168a7d884ca7375ea50e953c04af55b11e9e347232b2a59bcbdb7a38178703e02e635761df892a88151fbc7e89f2be5890b2ee1996ba4b03b51a60cbd0e8a80e2ba7ddb7a2fc25da441b58fc2289769b803e3d2afb72b113b61f8e2e7eafd8f71b43c099cbdd65bab5262934a8c50d94a454b702a14d94d4cd89b0a31a53d68ce3551986579ac276ab548f219da7b9dc6d77dcf1ed3dabfd10df6b5dff3ee4d5fea7dab44e399daf00c5a2b8266323ee4e85e10d57ccbebef41bab232e9c121c152e18ccaa383939658573a035ffb2b153b0c60dbc4fbe33dc956a3a1b8f03b462d1893875df3db10639d549239d02a3cbc917a579d6f3c32a32a1dcdbfaf104cd3985f0718a396d7fa52c22341c4eb61e5441d1ae4150fdf86a5c288a6c85969402a736befda25ee51f0eb639bccf72b32046fd74a9aea570a285ce52a834b15af7d9e46361a8bf11a04278cd6c0f720ff17468f40d5ce759a3dcf27dc9d5443149a930366e78b6378febb48e373c466e25f92bcaef4c6de50fa850d88d817e317187aee734871870cd7a6109846cff1c2928a22b4a4f09523a6d2cd74db245325ba34815ffcaf71d58bcae13e79ffd395ac60ae4ee295544dc2683f5309e92671861695129c6c54fc0af45d932d4c015e7e2d0f39835c2a7015ada87570c8c8a3e6e542bd753c6d02f59e00a102fd7391bf2ea6398d122fe090a06d731b09b23545bde22410eb44ad3215eaa927ea4d463d74f747d1383a16d1150d952f43284548bd09d6c2f4594791ebe89524fda12ac1ef89e02f6c3e6fd316a3a88778d6ef68f9f3052e8180f0a5dcba8c6f6d209de466a4c052595696bbd1fb999ef074429e26e56144704d1ed3240f7303d599ec555e987429ccb21e69bd8f6859160354b2ee344f76c72b9da36c133e4f79c5a23fa7433f020bf562a434fa6fd781a80385a6a8933be59bea781db4ce673a8dd5786735e61eaa8f8a333cb7dfbbc657232130f6df9eb384384e7ef206927054dfc0187dfeef9959eb4783fd5444b0ba9ca1c0c7cef43f436d73e55a5b54c3bc829eb68fb3f78b3af45caa1a62799b90a6206380fdb44a9a1ae1f3195aa68f63918576728399973d97b311f7a6752c992deb1515ec4a9054f0f0fdd9ea154e0d5e6b00759917a0bbd0347426d36650ad0054c07a7c76c35a29cea317382daf74f1cf5723a5e48b4123ef3ab953a9b8e21433ea017c8cb1be933fb8737a7695cfba17e5be79947e0b3337aed113b393d8e5fc598d0072fc5c3e1f5e3efd0b2fb4fcb2368638e68e8bf8bb28219f96931940490a26a97e87d2ebe953a8c08ce0316f36399345da28d1de71fb30d3ed884b3f2eeb3d61eb7779b38f17c1be5587679e4ee5334c985297a582f2b79e3c4d1129263c46935e712c1d75203689011245d3ab4c98413818cf53e8a7e9019661fc317c3ca353f666db57a7e281bbfc7888ce507ce17f46ab2dead7aad820641fee380a0bb4501340d1ce51502e04bda1f56f03ebd06d42a965590a766e64c517a2c9587f62e8140bcbf7abbb8da7c0f317d54c812cd61a8cb1f96879827965c1729424ec3459ff667fabc4454ed24978fa235193913442bbcd11bb07f58a1bac53c10484a5cc36004ef53c30bbc9ad7d04b36dc3a5eefb36ed7680ed12ba9db079c46484a2ec909425e2362a3365934b4cab66c99b531868883f02e567f5d60886d4f16ebeea28c82edd0e086cfe471d1932422a90b5b09e0e95577666d07cb8c23d197d2b6ca478079fa1747c994ccc6f4d2c25c6f7b447e36001da401ae20456d9e8c706ebd3c198e955a34a29ef3f5a59e8cf5754f871a48b2ca6a28704425dc9a265385d51f78053d9d69f37fa5282b6bde076e4d34693a2144c5d7ba93bcc57c0e6ce3c395b1a51e4c7d31308b439552430adb7d57f0a5c2966bc02d0726a7571e508bce2c08eb64ef8d3dc05e9b7a3ed7db61ac8a110063ffd60c508cd741513cb638b0553b3213084e65050009bd7e128aaf1252f7de78f96e6616b99ec132aad16f59ecc6df9452aebd50d6a459db04f45564d660667f4b09797a6bad4f165db88d16f23b6ce60616b1b80dd620dbfd0c0d601890c8c0d37db8fd0cb2ec49c1d853894eddb39e2932c0e319258a7db8f2ad4406caef92ba2c33eaf05728f98f455740ea31a44871143fd11e93a7254c4f7f1931e09f35b109b68ade1a051511b11fa4429b5e4e397d1b62cc21f288e1a19f1d34bb290b6abfafb1df62a1e160be5617db4896277a64e62b222fe1a49ce06fe30a9b8a1cebfc5fdafad44b0dc4ab901f586cd71e53e9954e012a0c9fa969a8cc71ba26268e7414b1ba4ad446915963a2f3bf216bb2df3d4babcca5e7b68ae873c22c6cf5276394ddf352fde35c4bcd7a92d564cac77299b866ebe90d3552069125e1e4b3d2f2cedc92e673387adff4b9a15848a8715e1130030dbcdb18a6655e4de75004fa4ede58666c59d1037f89ab5e5c222c956e0f25c97c690a72d96408b72716e747c21f1af29da9b844c5e30a7a93f786fd32cccab887f0d38e83eb29c70070b05bef9ffe79fe840a6a8e1bdb05ca72dec81b054785351659cfd86e5d0ae9fa6b25cec84b47100399b8f923de4a70234f44ec0017d1a57142d0c543771623333c29cdeeed8e8f8ceb0a003ca09a78beb2dc1226855dd5958108012b1f84018a3a6914640a76c2c94e807d4ef4dc1088005a2f01e5dea8d8bd55be161c647b1c7301647aee6f18326316c5d98416e350686a3e820247f27808e47a2bfe7987bafbfb1d929470f87c20d131743896d6f200eb556060b9e9410adcd9462037178822a93ab5b25aa79200e8f4a65e6a71288c3814a6380383ca7ee650b3b4cbd9e663bad141087c9c6529c401c8e093b24f5392b09c4219c9ac461567ce270a08bde612f4871c25949cb320459ddd238855aa35507959c525e5374a4de4f0be40bcf5c2a170e73182131d7afcede1bce4d8f60e6ca72aa429c6e1bccc5dee51037dd695b1c12687f18b51e9aaa401352d96de54090d743833e196373156d5158f20c3a4d47a15090fb7ae1488fa415bf2fc480f493ee76c5054a88288e5b441a5d8559d51f307cc24c7a3303745218ab49c4701657290a23c7589b9651bbde5aa4327a5f9712f56e0ca5f1fdd6e16ed607db4f44b976ead73ab73e60438f746d6626effe4b275bab9d4c2420bbe8691fd3419300a22aa93ad704aa6e5e40c11332f2ad33117fd3c33042c0d776c808c8a3af4273a7f78ad5fbe90f99a701adfd7bc86bb5b2001148908895ed3f941ce4084ae1a2e8162134c1a01e09cb5b18bf3da6928bfaf559aef5e41da2032cbc48f88fdbab3d8eb400983ad28c0c56ef7e650068d22b4846160cda6a2ae9355ee32569c8de6b1379a35c06303df40866846786c1e234e6f53bd436cdbb8c536b0b741d28e8c519ac98035a954ba472eaab45fba8fad68aa8725258804efc7892af7509c732460ad649b1788e068bd7be702e8c4ce99af754088c40152c6cd33e20ccc5aea5cab9a7de67274d2a9bad44e225a4950ef30340d29f16944a871d543168a3aa639b82a862dbce2129fce70f96ead24caccdb0aec82458e332485ba58875f556a3fda3eb5a6f66601f9de89088cbcf49ec90b0636fc986366716ecd138d29874e77afcca8ae605660ce9ecdf5cac1ea699df10f8210284d2f769a286b190260b122025d44249c050ea72c683323cc10fc9ec8390cea26903576cefcc1caba332568529ffaf2da8da5bf733edede08b04b2a3979c31f2fa2e031a3d087aeda0a89b4a04e5400ceae2d1bf86e8d64b0236813c08e5a61f35857b9177c0c37c37486f930cc34c2dbe27c2ef026408eb9c9d45f3ec14048fd0f08657e49aacdc061519b163633f0e3cf1876184f7fe06e532e8e846c7646e669fd09af6c60a1d21b56d16f0f1e05a07d0ca25a27dee76800b3e536947570f808d0102b110ae5167f617c7571e12f086e0feaa864363b336b05cfaf2234d7737d1cfea9477aed3df33b01c8bb5a77d9c0328fbf1861622020bff82a34bf0ea7d69899f28e1feb399146c98b37aa888061a166f12f62c6a2f857ccb6084aa34ddcfff1c511d581bb2db0e0b4261291cc050bc8f4341853bf01f2ab9a9a4c461275ae482322ec3b60336f86479b7fd9c2ffd244ea698e7a158ea078199038c38201184fc3d030629ce3f33e1247f6d365c120a98169d74dc9887ea8028720b79b121df23771f509f752f23d5557d83219de6d91655b07b655d4f36c88465116986be26f242d16d799fbf23e88eef3726c219ddecaa55114dcb49c3f9e0b079d8758a1f701c9a1746ee9f5fffcf662f4ab19615f14ffd5f7039fea8c3a6b8afbbdfbbea7c749ad4e71c21fc78948f0536364fa76fe272a786c20b4431fb90f1c8fdbc732b024d8d8ba57e8ed2949ed7c8398c039b1c16fadfe42dcaa4e3acfc7849e337394ff244095e000cca300a79b0ecbaf93b1488a393f59ecef2f0ac9de40bf15734a9cc862949ca6f9031469878096ace20c3359cb9fc734a4f237c2de587c30ef0d6942bbbbc9139cdf8c9b852682a96f8ef688d7e259d2c3b5903fccdbe17ed19be69f01f602b090937196288f5a18d7224491e1314a6dd7bebdce3b36d71c1110b9dabf25bc5b6e7b8c3acfc9dcd3e2dd086af538fdf99dcc294dcebd4c461c0728773399cbca397a6b29822b34b778a469d0383ddaf7b343565f8882ee05b6db7fb9d2dc8dcbab917ebd01aa28ba10f2e5403f2f51f0b0e338de3ae7de6b9a8cb9ab824b0f31365544c3b6eb813d3ab9726ba497aa5cb054fb42eeb67ea879b57896ef44620a1ba6bb21e0f4243c08bd1d60a4dd3e2a6169cab1514c0e13460f48bbb2a0439d33885aac24dd1463c0a04aa29d4b218af4213d6d84d5934344d680e53f856b8ff7c4d26564db3be48b58e94488f6ea56d4330dfc98c65586e83af7162dfc64de42ab8dfc3a94c009fdc575042afef35a9c8bc29eb8fb01889cb2f2ee3a37cc9066101dc71e4b1806e03c6262f808a5e1701b9277f8d9c19b83fda4ce64483447f092922748788a9fefb9a158d5e26ba7ffa9c8a70c50d6989d4ce2d858fda45c71da5e38484f6929ede5202132d422ef68282ea46004c260fb0c436b87086fa1c6ca5a7ea69ed23b96e3ab11e7c3a3c1639d703f016707ddbc980a1597e48655569129b6019edc24bb044efebb197ed22e886d92e51351c1f8b8deef54081405ec8bc60c07656228b9980bf0e04f7efee885e53c8032bca90b97e01fe8bff17e014e6e9bbb75691b556fbec5b6e75b01bf63b987b213756e3eb60af0484f7715a407f1b26c89643ed3a815e0e1e676c7f72601b72dba80a5dde780c0d29de05713cb7a09335cb7e64c9299466863bba52dc360e608b2e7d28abed6da6c0c3ca07429158fe6f7f2d62025cadbab21b49f90efb7b2c06b8b56da171adbc35d660c0eb66343001a2822f1f0101a72878af1f8d5ceb56856987074fcad39bf43ef86814bf5a4b2ae7e14c496984200ab6e07d9ae1fb1851d853f9be2e7afa49fcfbc5159bb7da9efb9a0afcbbcf64a153e727fc6417af474f611110f6c15c24c410383a31437c2bbc27f73fb0a3a960aa6a06275f0dd6fca2b31df1c700e789b726c4ada9a4eb8b4e6c8abe2320145fd71546925be78deeef7ed4341b3078303b712e6b24d9be2bbc55dacb7744372c4546491aaf941e873e02561ae09e06af4b02d3776de2d633f9415c16e28add82a54641739dbdabde5d422f07e26421280a3800e2a45a5c139e1ff53dc5c26480d4a05fb704de9410d4e0c150ec7aa23bce6f4e7a8368426d3fa0acc6e544b29e2af924d384e82e0c78965c9013cb67c7b260545e3de14497fe8ccb0950e486e9f4f1881940d38431daaeaf36e6c0221d6cb99216364f3f58a325fb6e3dedfc1ac5cbccdbf5b2e7f84e582eba88ab98b4b4c829bafe0a83b0e0bb7f2529c4ca50ad1855922b74090c841801c1aaff494191b9b13702350c71878de8f53825fe8b2a2eb6fa827a2ad037455f71718fb91e58cee5119bd275c14b66853889897cfc96a934cac451dd7c2887ae51bdf197a03639a0ffcf577df9df0974e038c732399a4d38c28cafb9f0b4fe0668d74bc62212a6e3fc4c6fea1d336c83619d7509deee072ff5204089ac468dc0637745168e92f897b0ec5f7a858e983a66118739607e6005f3d9d4453ddff88e9737201a9346c9fa8e48a90e85d1ffce6aa11b3fdf6811c0bd719d3cc5f2cc7b2bfde3c9396a7bd5db4a2295a43ea7ef4683dc42cec8a2d088c8050f5ceb52bae0eeb06ac8e44f5ffed1e0636c202c9ca4920e8c263c7b9ea0f989df186741916c8c0f8f3e96517457e94a8a5629e99956c6c8910dcdb3cce8c843e7a0163ab80afc377360914eebaa68c11288f80218e38504fb1cd07e478a06f266497d838b9f49e9eaf713d6294f4a5894a7e4c2fec8fa7a0becaff208d35f6291e848544eec00fea26ebbcd8af2a14f31cc405d059bbc3e7dce69fce2710d2737e72bff04977ac50504eddbd171debc08714573f93408dbc714544099b8941bb56f418c7eb73963ddc4cbb9eaf40e3f03b115ddd8efad991e6e6ba7cc59deb643d69012da720b19947f29ace2e5e6e1567ca7d2211ebfccf612bd80afb13535ed829cd317fe8c23ca2d1716b13849bba7b5baab76b83122f27ddaf1685320148d2a03603712c1d0a77515c578a744ba6bd30db198e91f435a68eefa55aca658dafdea382e71ea73bda7538473d77b7a1f4118712762fc716c69f8e503d11de2316b5d546fc577176f5363b9e89d6e657aaf0a66bf5aaf34b52f862025a1c2bf021b4334480dd91c22b972550956cccd7f176789a8a245cf57dcad1be0f789ee561c6076d599bf7a2a2648a0e6c57ca65fcdfc828cde9a0c62ca4ff9ef0938aa415a3e508e6885cd66b6f384eeef0c8c259631fb4b0cfb84d63269a466822e1f018b31bed9ade8760fd2fe64f3999ad217dabe1458979ff1cd916a3762227c1f6a423401b3b536cbb23c95a560af78afaa77100ce62042cc814a78afdd2801e67428167d570eb8f03910c8623a549afc0179d3c7f9f3bf188beb31a8cfce62fc547012b247b3cfae89e1b5ea57dc1356f8375c05112437b4d08ee55c1dc1e539a5dc4ae0da4a704c8a39ba36050124c60cb9a0377192601a6168f17a8f66815ad0dd3a824b1446e22dda7aa645a166502bf8603874770af8620201e908d8aa2180b1a3f00b28328353851c7bfe8388467e61eb4c858a3b7ca895194b6f0c0d19c08439d346316df6298eabdf6bad5fb9b0d87d3ca1a979ced944cc27e98004974efd37afc6e8d686a5cc63962fc917e9f5ced0aafeb8672987ccf596a7a1f78d43f69592209ae5f0e82d317d5f6e8b5f5f966663d70a7ca50596d38495f324b9993f8dc8954e3212ac278b87d264dd908a3a8ee08d63564747340e5afb01bbb76f605a005046bb86f4c47eeeb1cdf3947bbf9fafab39fecd31efd7577746d80d785a5de6a578cc6a828520cc848d8c52f3be758a85884407cfa0169234e8861a9ace74548880631b1b20a7b922e2e1a84170a172e23f1f775c0f7f22c1202e0140e0231004e507f5404001ce84bfae8098504d6e4be5e5058179088a3fbcb70108b9fe5bf577259997e5496168b5a4af0c3eb160fdd097f1877a2d9d57df561011b7e637045debc999c0a923d11f7b3170ce80fc621dcc8ab88b2a0cb7a5249497fec37563a34da58b290bb64e8f6bdccb0d0ab94c850214be8bcd83e16f6a7568193bdf1bc4bf640965a84583c7c5338019a2481e868335be45e1a8948584a15e270070b0e1361ea1014b1e9ed1466228a261e2efacda552f88f420443bf78a8da62560d61b26427dc3c048d7b9ce3c1c8babe29a52b16c0a8125ec80ef9dc43b41c3a2414ae08b05e399bbcb431fcd9bb04da8784e17f086ede76d3edce9b95be15dc4c5880f8442fd205abc774457680adee7f9b1313b66f071cfb07ca2afaf6820fca551fdc8928ea51436bba41011fc359be7dd7bbc0a05e682afec0a7caead87704f578c0f82ca57dd2916f5ce5b13eb5d09029da1f0b16e8ff10365e35c9872c3ebedda5b76bc4866214b4c46b7abad916f1c9125845b2e9b41043d93eb78089b2fe394471d3d194ebc550dc18dc439b94bc3da0b1c5c78fcfcbd495b73d5a7b807927174064c8cc48aff405c8135f3569f7d287e6e341baca03d9801530fe133227616e6af33e9f1a29a50b386c0836aa9d05d1cfd32222ba0f7e5d0685e1910d07e56553fbed9e58be47c18b04ee387a16fb966cd5f0f8e0ecb7a7f5ff26cda92ccc4579cc0c0733faae062b07aae13f324daf8c4add2d160caabc585d9f5945410a07d07d1cfc7c12a41af219d1185350b9617b16161e12f161e5d4bf24d807495e72d8aca95ea7e7d9123207c5f0a7f8f811e8c9208b7bc92b4590e6f065666482c727c6509f05392de6d4b697b9cb5271952ad430a757f5f996cdcd6e7b0be1e0a3dbbf1d6469fa945dc280079e81ef9f54117b38576f351dfb6ccc998c25669d82ec97ddd9c2cb0d04da312580a80ddbc1798305fa0f9ebfbca5964f5f4c9464f39cfd67e8df8d9a7f61ee9b61ddf01b7b9e9295eedc402c04e0ff23ce0f0ac34f60edf3b36313dd592d05f52ce0e918ecc7ed9320baf14c236d7ebdeb39d02b6318737d637050663ffefd846951c5944bb4e9729789dd7691df82ccd31e7df4547d08a546d931fcddfd2d7f75c14bbb333e7bfe7227d1623a3bd872b07d3171eb9411c16cdeb80fae24333e76f8bcc145237b3ffe23ec3e8e0675715a795247b2ab7aa44012bd2b50a4a0dae9c37a8cf0931702d8132ab1271b69ced03557211a6602c0061e7aba3833405abaa652ed2f8b2f8e84f90e8041d8ad9a26d7acc2c0aa5f50205956426a0be9f2901724a659e43a01723b478d2bd015f24c8e1b8499ed23bf7cd1d53fb4f23c597a08c2ece2a06c75e03d5dc37491592c94f0ffb298af8960765bcd51750fc495aa8efa34fa472d213b090db29ef177db6bc65d351b2574caea32b8064480be424847bd1a8efb1fbfe25b5a2a14dae808c147ceca74d6e46a0453bd80d54ebae9c9b9cddb10709af319ad8d12d6687852a9cb05276214ecf5385a952659e9ca6caf294bb253094ba2777010ba24b9754d9e7c4e27dab6c6b7cbf77a6ad0cc53082856299380a0c7d213f66c460425d847b0d7866b503787492b717fc30f3079b5175b57364c4c415f60c78d3d32d492e82aaf3653e077032c80219275e17c773547323fef3e72757396f7497b946f64a375a94e03aa1e36cf348e51c15c896120e8f8feed76ac7d3bc85870f11b89a7de188a6b9e0597377956d8040f82ca1fda1d1f83a90ca820d46370591fd0d07de07be63a68ffea50e372f4d79b4e3caa65eef5df3dd428eb88f5b0a96ec99f3bdfd08900d3e1a2070ce27971c2c400b68eaf9d986ac9a06ce433570d77340cf0edf02d3362f35e11572e3c4ffef25662b523e998393d6f36dafb76ac7588012df9dfca74e23522d75423ba2b2cd577558e41e7246081d7822e6c04137f5eb1ab86a4be2e2db5f4d0c8f385d88b368b4e7f231a8115921d1ba1a5e8be9ae0883b78cc1f61487c1fbe02fa0e0a3c601d5a45e4c98e97bdc55a28adb6a5afac2dd609b14f93f9f34795fec6c055310d0f063fa519b29f22dab9fe766e49b9fdea977b662883b434ec620e5eb818656ece653d9283144fede6b5a3887b6df05f68dd2695564dff6a7f5e7c247eb20bd4581e2a4d88fafc2c07da5d63ac5decba482b352efc53c556036dc05f4a1e4b414f421e3d961f08e9a604f1b9063dc563de95553f6a86403c79ce050f64ed5de3708645d0f3c97e05430aae3c483826529f19f450e878382e2e126f9ff09969503622e8b881922d54524aaed799dc14b3b5f914570ae02f71c4d0753ce945fde8871dcbc1bf24907474c5569c25d438e13c54cdeab9012a962adbfc1c97141b811e8f22d8213698cd0ad1cf8b70273bbadb33a0062d115ee17f2ae38e9b04bed1fbf234c8b6c1d2271dd3bb9970b69cb2607d22f070bc6522d36dd27122a59f9127d5400e5de14079adfe43b2c5fcbf680342ced94bfb5aa813b371d16d75c747cf669107cd4bf2a6b5e278c81aadb7f1e4537a25bdb07005ea56a2963fc1ed8084856d75937ec6a071df615f4ad2ca60b07d0109245def14b5917361e4a381257cccb88e8d1d1e67d68efed458cf9273a3df2bc854bd5e8ac1f58c647f950fcc237d2117d099e5c0a0b08ed1c41c6d28635d2ebbad75964e629f578ded03b09b945fb1a82aabb554032c32512ec1cdfd1088054e20154e604ff76e4205e0b0ed0fcb0a91a3adcaab208aed6b0752129cf82b9608b0ed39f68f758d5e306344ce84f7bcb6862e703e1c0068f963ed3d22fc0a564ddc027229d81e95b68675efdc2be486fbd757a0ac544619cd2897c53209395f1eca328531c5d0d511273fcc0819c3aebbaa9d43cdc3148aba79ff20ed4365411c5e356f0c8d1c5bbd2ed3c71fa41b22c4c226d5d83b63bccc7a490e391bae473e0aed6396bf209cc9d70ff18a83dcf967ad935a8c8d7084cb38a62ee3f6ab48335cbb5b1d555b4f9691392c5425f41b3afa0e34bc9bd40a82dc224fb76e5cf1ff41a6192e4b4e282e53b8d1e81639c48fa5402976b3ef9551517b9a2b28ac94f831242d53d0510ef2dda939031aa09c880c18dab8e5f143deb8bf0631a67a942d963a11af951259990e2894339c909ebbd58f0fe4b61458db522b58a7a990bd8a8f7e6eb5d6a8087d752a40020df1318e1d4caa07750578404fa3dc8f06cc1971ec0026dd46d60e43744fd5cb0a3b4b0e9403fbec54812e550d3e143d870e3799c9479f3fb9fa8225bc5b1743d97437742bd35312c214e456a4cacc51b9114e6494e4748dd158ed175f0e15d02ee548f9191f8f353c203b89aff5b95e7dd1af7cb0dc8ecf51156f8c0db4870b95dfd54108b5939ccf7dd036af7352a451e08adaac4dbb7c1458e288427bb0c10eb1363a413e73f240849187e0b018d5afdc36a4a4e2fd41bf8e85277797415a3ae23e78aada5482ac4c5d0f5f6c14e1f3e64a87bf2d75590bfd73d2a12da66aef1c4cf6a91f2fe918138a7632ce00de4951230a103fc405829f7206d04c7ec0c899e60dcd5fdfd7ad92213fd66564afb85fbff5d6523cef2ee53c599084d44f86bb5a9c85c19e6f1c9fbd1a95d6253593e1131d5e743a8d2b4723dcccc40e5ea7af71026ad5fa972479002a51560ad65fbc3c7bfd56a8eaccaad9b5d1d171a73ac9d905188c2d2801b5dd7af9d7d56e11f73c109aa555e8c7483a03cb86900650500e284c87a41288e837edd190ab07a6c2650304f86cedd5e584feae0db8043f7c6d11d94869d1756aee83b169545f5a4a11eafdedab23540fe9d1140f0dbc506833eef4d06eaeba2c1323c25b864469ebf75ca6810c55846baf42151e307ddc5d0b83cde170074f30383314c8ac12833c6e8f60799812c2181fbd83550253b5ee8767a57a6ad2ccbf3f5fab2f6929f1c28a7818bdf5ea120535bc6ebe3d6c835df355e31e4fa974db8113b2b77af912a2d1b9182aa49e0f6bbfb1584f8ad806f046e1acba218513a14a07666a4b30edc6f8d344e3062194a8d54fa4c66d047a24e6ad004631d859b93c33352e96da6ba1ae732d23b86f351cda0eb47b6c068c3f4b0b3d8a0b97143594354f5882bb6a0ced2c79605ec2c20ff6f57006d6b44bcbddb13253211aaf3b7ec837b7c0af49b2ebeeae78a35bfbec16800f203854da49f16b51f26cc55a31c9922c980bb77358f4418d66e191ea03a89e7f67946fb852fb6cea2ac7f28123bfa8ef40f42dd4da83e0434e58da6c8cee148ff25417b829c320bd0d9356dc5b279059bcd30e97ad64d61f7f4d1816d6a5fee2787552d2ab34ca4e5e62f6085423f885406312b87a0041d22717ed18b08b6630de96db8ddc5ad3f58f7f0df44727a37bdced075d08f87aa7e3b32ec1cd3bb050af5cd2a0053cb7b0ed03fe1bf820ea78be95d51682ce029c96d034e575216e6f541db2a0f60e5a581abc2dde42d16752dc3db7a7dc1284bc6593fc301fde56e64e4c964d6e6b3722232cbc0c63642803686ae8eb6c02a6730ed88165d0da57813428faf08fcbda7a304c9786d7b9ffc25c41033e6aa7e385f1f27f12486814031e1f9f331a37a82bf074e03dc24b314983d80fb2d3573e2ef106560d367152fa9b80570e8a09a63818137e70e9ba85c6e191ab7498d841a95957a7825818c86147b9009a75e267a9dd67bc28cd1e7d2dda60ce27342de4e750a6fa22bd0eaedfd8684d4751fdf17d34bde3630b318222c6228a75f07b0fdb10649f75ca7931f10111ae5a6bb04e38c40bcab28a006db2a47e92dbd0b3248b3503ae98ca7c481ca0382f20c25f9d5429d19dc32d6d11c2f840b9eb43932929c4780f83efae234677645fecd933d51eb8bb22d6ced155992539ad4c2a4c3aa382ca46a92f0a82a1a7148f5b413bb00b0b3f0d499ee128800cda7a7f455c98180c1f32f74266fc20d6af3d7754e8aa5f3eb3f572767e5c7b2716b5a57f164fe2ff004db537b697431da99fb528578b2531daa9ac1ac0e5421d31fc5e14452247982e390ecfe9614a192d0c2939b24d49e052dbcc71523e65c9720c4cd076ea2e984fc05a505ea3220748809a19a26b7d908dee3650a20e2161385dbaa00499b070c2c43451a304dad40ca9c224de33bd5e87d603be77f5ab2f6a6d5255c84124ca89e6e98f06ba5bc687ba5e49b705a93bd41bebb7e1e3e84f7ef93342949f858c6a20b6e089d6abeb09b2a7431e69510d1b19ea3d252956693b3b2a55e04e0490bf24a00f1f15d25d26d9f5b8513a5f26dfcaca1cb4da863213ee8686fa28f08dcd77e3e7ae725ddb73a6af130b8dfcf4e1dc5c025c8beb9a091e06dc700184cb9115b9ff3a6707b1b7e2fc4c71766d2c566082f15af0826ef40b09019807e60a713329cb5f00543ee1106357c19558da3790dbf134adcf1c649364297f79355f2b4320bbbe9153a967fa8035644dfdd685cf6df6a5027a065f3f8aaf64a4dbcefed301e9e57166619a759a1c4fff3683106b274557a399a83edcd0aae37c53127455bd6d644a0945488120e2031c627db01d07098a60fe875ee09ed8193f60b97281d2f1c5691f080ba3af0bb91f5a6f8bf8d297f1a899f784d9d9045885d8c0c0c1807a7f0b49ef55cdcec3603413d96dbefa4a26514e32979957177468026b6ae96c660bf9c296eb3e473f8117ad98fb3c55972a445ff622c19c703149ae4656c8c3fdda29da4bf3f61454cc52c02fa8ea0bf8a7e792a80fa8be324be3d7e28a6594521eb2707692a2a541a3b4f85bd5d296e935d00642a33ea32ae18f4fe4d6af9ed32f319f0ca253092819585a1d1a8c1b8e6ab5f42ff6857c5521443c689ef05649fb5755daf0fb6774647b76b1b07b1c1c6b8620aac7967b9e7bccd5b2d5058510121b7adc8f68328766ef121fa71e0b67b7ebefa1239e3927cef0358481594634b2e8531fcdb0dc70d1a6c2e8e8254196107c3a15c0431c1a783a6466afae84ace8385cf5d998079a5fc5fc785846ca5a02865d2aec87f2c7385a14e8a2a86855e72e0160a36c67bfd6f4189b7f400dd0b068f2291b719318e5db1501a307fb908990e6af8dd975d293bfa0115661dc744544c5e8824b14a148bb9e75c4116a081134d45dffc105ec228e214500af531652c2716ba42f7e8d19da3728c45c440687a57db060d3a3d87bb823567a9606f1445cf6e905ef0b8a4676e2cc2462c818e6eceed32253db340674009728ae0023d3976590456c34d08530a241deb139cc101f91aecf127c5f9354226c74e3f25ce1afc156d43afc9774e17a88fe0c15a94f3859e9767223dc4a5e3602c433cd47e7f4b833ebd913b94274b8ac607fae2f7ac910c887f2e57b2a057b4143af9953b35e9eee952e9030504c7c864b9b22385cce3995224f750fe5ccfe47b4af944f14083d4cb4d747f9ecf70448eb48e4c63ebbb640b41105dfc9ae97f4e7ac0185b489785df00e67262ddf19fd84890dced0ae83b02d135a6a9eeb653a5cc6ec050505d29108634bc0f51196321352a86b4e1b2db5dce0e3cb9e6b19fe95c2198f07d204cd975cd6880af116f82838afeeadf4be498cf7e5c650e78ecd2fea6e46b0a03cb279f681802bbaa580ca930384ddd97c8549e230797025ea4c444da3590888c2b613cff7605ecf1a596abf4e5aeaa3bc9f311dd4a156f583a8176df8f725c4a64ba8bad46c0f7896223c3c616d52feebac0736e7f520a22409574002288d89f6d15968419e230c43a74e72e9ce4667b4b0e21ff04020c72016818ef784003439188ad68051b8c7ebb17ed02e13d3da6f2e0807f9651eec79b64be61ce03d8122eea0a10cdc699efe22e86b600a328576ed837c9ce0f2d9a82ccc0a1cb263abe02740cccb15b3706b988a830e1a98e4938d38bd243eae0829bd3039d4cdebc183f4ab42b3113152cc3aacb402fe9ac721bad7018ac2ba062e28daa7932dc579f2bd542f41561215c0dd38bb642db94a60845332ad777d534727f8a1809cde0c6806a0cbabe17ecd4a8cb286a35153c28147356366e2f8058509f7179f52a20b5a759c0dd09742cd8e2134afd774a3c4d55c1f45eed4a2cdb7d09b8ddb422ec69261bbc709256ae26c77ccafac1f254abef6b8f2c024148d19a5e21e64ca823c46bb5bf358ff9bc8f124a3801f766fbcf2ca6ef6f375a6cd8a866176c1662ecc0630b3d94c0fca3b2542be59b3ba9c171c8655b7899b4b688b78b936c89ee4e9567b7e984ff3c8b73fd98cc559a6473148b2c145ad360d6d1a569c3e34fdb33e7729bd02d68263f700701093e8580b9ea62291447f901fab00f817f0395e28564bc6b13f2427539722b62fc9ce54099f7446e962c7695fe5bccece2656d6fbf86f060f4dd375ca1b7423116510c6587dc8b573d01403fdb5bd1bb27d9fe78edd514e29a09533425a7f09a56045ab170af81116c3c07cfa86c132bbb4e55f2624540495c12d22fe5e752fcba1052fb975544c6661d3102da5ab8fd03bfa0b2a08eb4622e6e56c316c185b8e1895024c38ac4af7deb2a97818fe64e141418f90f52a5c069d183ac149b41ceb345addf131070bacf9f6e841aa03d9d2f8a5094d3efc6e2dcf39784c689e6e7e2de098d664b5de3fa7417b4ecef10ff1821c0bc1af2016a54d93f95921e697030c49c09ef9e89853bad5b4e2d496b6289b7390dc7590bb468555f19c693fb20acc5a359d2f7fb49e8c96ad2fbcd3d4d4c7aee8063bae4f99e1a71e9a05b75397fb4a24d4d4f23230a42b96ca10839a6b2e0686707ef8840c340a3cd72cb0918134f94c9342e6d1512e25bc61be1c59bb9c024854480090e12065a3083d93ad2cd1516295cfa1f9e54b52652676270beea94d89227b9fa516f29e34bf71a0dd647aae1947df31cd85c5f051921cc32c747ddb09bbe85dc605caeb569ee7e5aa31491c3dd3ac5b24785052725dfd338d91363a570811ac95ff9745faac2e0cf1477cd718be6bef267ae467e4bcab345edf92515943482d6cbe5cb1f7f79a719325387c82ff2bac96eed82106751ea86d3b0d45eee5ddf8df098cd00d77c22cbc497a100351ee84e67c67b0407746a869101fd5dafe121af18d21aeb8d814ac375ef1814c3e9e6501a70bcc2aee02d0911d23392e8e479585962a59be1e8b038372f0891fc11050c14df1086168f7649008b36d8fa2bfc01d708ff590a9c19e61a3ed25ff424afe1f2c423ec93297c001482bd63b5e8265558f8cc1cb638fbe839512536eeef1771df316e51cd55b2f8e46d480ff891b4ec944b22dcb854171462fabe78923b1ad84e0563008205377a1ecbc8442f88ea817c02cc81e87e3f474ef9b8346d8b7f057883f3c3acac37a529659b54e668fcd1dce35e6e1fc8d0ac2bdf0243c91483563b11a287a593b19c25d4a76fd0c5cae3ff66ed9dbc5a09433ad5ca82df3f4f9b715cb3a4ebae6442943a84d873131dc7e744ef0212a69a5dcb6dc2900f24793ee639c95c310a30a3e604bd74629e4a44310405af6713263dfead8c1928e02858ff4884ef2b11e88d0ebadf63efe1043614c46a74e0c41016ef5ea522d483cd5f6f7b92d5224c504ca6a9277c8758369cde179f6ccb23c8e9d255ee1e8ee67becfabba4ac503a49ed488b70b21e65626f8887ed47411487ab1d8576b5dce4639e4d4c81b351c33f3cbdb87939cf4505b92a646115c9efa4d9e24b436ab8f8456800fa91056401d1a5dff97542708d0429b5181e990598651f98b27bbe125e81867956c392bdd62588d256c30a76daa8f29e4d4da3201b2a04f6d03092269b59f66aa7cbfb799858a18eae8e1e4739085e898441e2d387f9bcbe46a721cc99fa36710dda4f9224c33601a665df2cc963e1a129fe93941c452b0cc5425739c56513260e39dcac587c1ba02368f17a4a7314cbdde6bb51222c0660661f2691348b29c059f8eb214edf8776a7cb53dd0c8f32f66778314c15c5a25ead2845ddae162de4c7a934c66f07d5ed82592c99d21f854ea214af98c90e14ecd4e99c0dc08d53c2dc48ba5d22f5464de714b23fea47a62828adc452e969baf94a6d39165accaf879edf56023f259d21bf63ed4cdbe0adf2f38e303c7cfa080e12b79f63740bc51c9e538a26e8ecbd6b400e93d6565997b71320abac2603f8367b2c8760342a06b33c263138ea8c2fb9a02125cbc056e43fda903484b9f51f837977d9f86e0d0051900631714c90e86fe54b1615f89302a05bf493c9f2e601365d197f9b4ba0f4f1837747449edacc0185260de991434371477761cdfd072f20b1eb72dc7d1862c975b18a2dd622e71261039978fe582eb81d586ae2fd01f1b3794ece445fd008c1c99052c775d6ca46a364c632f4ba7709744e2a9c260669356898380fc4f3aeb9819ac00511a28b9291aca84518c1e502ae42f125f4357bb0c87a83925a5e48f79f4a32dcc99025a41793b0ec0ec3cbb925d27086afaeb296413fa6a9fa9d6d3654c20719cbd0e944c3856f9690a192b44f55a2ffe1c795f6899b93dd357292cda0bf5abaebfd110fc9d8a197fdc25f2b7fc7c459a936d57a3e66e457e6a4225eaa5c64018c2039887c15065d1fd79469fa2f7e3d3cf97a491db81a8dee78fc48344be8d151a5e73a156f7ad503a27552ab03234d6b2f97ca6ce9e32d16f7782037145d72ec9d720d29d07c899aa2c53d932cc22b19d009a45ec395dc92892789bb48babe2ac92cffe0b04ba9490b7dabc72b84faca13d58fd897832c8625978b4f9c059ee5dde5e60c09c84bacf38bc556b3c7c2a7470513947df290c88a9085286d6ef210cedc00bd59911c65b4f189743db361496e1c9fad6e305f91f2dcae1aa87c0a5e94a5e830a532952dadc934090fd46cb831e465874330d628190dc22340c455b0f366940e56c0bcf535c83a49d37d3b70638c77b878c376289e94e8fafae86595e72a5b6a4b9005be52505c7e09f4bf5a682ff208f6900df6f1c3516c34c7468f9ab8e4e2cd0e540d66a8c3de6c45b2ed402b1a08a80337a1e4183a3314d516ada95224e58e5ac5815e29c2417c3369df902dc74fa4dafcb2ee33db921d6fade109988b2b7984aba7cbc2e0f03d45882f129928c27096b730e3afccb7f614a516395796aa833bf3d173fbf1b081cd9f94cfe90b8fb225d8fd16c8403677d8f130255503e0012e3e38501d0399cb04652e643995353684b50230049a1ecbf3ba8c68e5c0ed5bff14ae95c094be66da0e4a5b1156ac5fc01821e9116f3eb94d55f38c2fb84b2496030baf9c42bb308a3462e5ac21195685b81866b63337582c920dc0cfdbce650cbe3892dfb6ec34ed1077a469997d7568da70662c934d13373211445c8141cf70477a8487dde560d93bb18ae118ef0b87e721c5e9d94073405028646246fdd78dab2b1a5ebecf6f99818244f4958e1aa9d2dae608a82811ac0d2812832f9134029cd304dacdbbbb5520a011251d0d17e58c4f135a8a4ded729b493c23da39b3cb1684b32c87f0a738091fb9ba802a421ae83900c4534808122a24539cf2e56bbdc1edbc3bb8f23ac5b137d388fedff6dbffdb6e8d904d0821846c29b70ca70bc50b3a0b313d944a7fa577a154bc42eddedd7476d361d3aec9b42ed94eef189030ccd6c1f40699869d75795a965ada6d4f1396192cccae96c330bb288ef27f4ca9944f0a085393ca5fce01d7b75b1ecd7418d5348b1dafbf9b34489dda05c3ec7b1806565c604db0268ce20b856a5221c598308a5113e53dcc2ea67670e7050070a7eb0d3ae4d1991a599bce76a10eb5db46351ac97681e50467a7a36e176a0777aa29f416959fd2486abae278f4ab2c8acca60a86e167380c93b3ed7bd90da3321bee32fcb0efbc9b951e58351cd93d1cb873ae964d7d2f068f8a7702113c9b5611d5d7b002bd8da9782a9e873253f65a53d5b60ecf7d8747330277b46098a544aeba0379acae821ba21da86a456baa261a0d0108b097e0cd60cfb1a2323da2fdd48037839de688079e7833371ed85e64667beaabcc4900a34f1499c1ce1c8f23bb2dfc2a551beef4a6632de5d1a978ac1eabc7ea429b500b6ee12064f68e681aadb8e0169411c723a3158f0eb0a5397cbf7f441b09d748361d9d2b1a0b34fc703d50400140f18abc2ad218e92b89ecfeda8795c5ddb493b56538ca8e79dbf2d25840861042d80bbb2072d55ca10b8bb838e2068af2dae41e81849c90696dc4498076507012085111dd5e1d3951b902a697bc40c31935de14a11020a6977e4d20f2dcd3aea540c26f0a648c7212e91ff1cb61a2231eed4a27d29546e55adc2e2508e3382268a4a671a08f1e92d7e668bbdc46dfa0f011ff421c173f3ac78da0a84d104113027ddb46dc9713c271a0488da38af2d14f44c86f5fd0e35b97b72e916b3ced98769c92c28122db41439ab0a9355d413442a0c8a6905763a41c28b259a3d30f4af3ce5da334dba5135ae7448d8f969c5d12a24b4c6a97b44b42ca0b34419773a3ddbbe425bfa560519bdc34b5e421b4dbd1168a3647e7e6a3d5a390ae281cadbe1c0af747834289bcaa5dfb29feba7694798ad78e924287f890df1ea9f6ae884dd52891ae9a0f7953354a333a8876a3a3cc6753dfdc675341b31bfd713fe24da68b1ed21ee26eba6962d766e7443df978e96710a36207c512654e02a26fb768235a9a5ba3e8229017685052dfb5c70121d54769346d1fbb777212b92444a79d13f58f03c26953c60e4b2204847be42a687658e7445dedfb900444d40b347051df41192702f9bedaad8e034562fcfb5ed3b8efe368c7716a9a762925269a321de79e6ba276af723cb44b4d86359a8448034ded728266377a27cf3dced3489ee4e87b13689e404fb9bc364fa4a35c7b34cd52e9a6194b31be1a4120d0b924440fa57c5f7aca51e6697494831ee5dc5e2acd6db7ef87bcba9d9b1d892671f2d3e8a287de8d6812a2738f2853fe6486b4298f32b5272192b42b12a25db5af06fa31809a19a42b6723b73bc8077d90eabba060ad5ac9425c1ca34d8e4e956a2bf29d0d2984e81d0f75bfa26c85d01e04100cb3fc8ebc1f543eb785165924f941f47581f3647b0d56df0e2aff8a21444c55a33558dd684e055e7e1b46b061a346116ad4a0c14383060b1158584e43389d56b6585951d14245c5240493a99445a99412849414d20e893402c26884f203149493242727222c4422e90329433d0885403c008138241cb71dd9b6b88318351d685a7645966139c0b00b07d75f6e70fd051ebe5e7f36d81db05e7fa9c1eee87581ef4a83ddc1eb0221c7e3e20ae183905735a446ca39a4468ab28bbe50bb2e88a7237a43a87c2c0840a8fceaf5e087101ff47c50f9dccbe2cdbc9c233287f92f1b7dd1a2f6e57c6874c38a605c2dfe18d224ebe605f9de499d07fa894b804e61ef2acb5f1032d5dc069677eabd7d3ae593f249b5927edbf3d5937c4618f570b00949edd34d78d0e9307a8c4e3519cda4cfe81f98e234545b0b494018a4bf974a8f61aa8adaa512ce4f0a86416118efa65b9a6e5889fe1ca66c7051390c93126e3951f8037f608ae78744a2f007a660ea89b12e7c28a590856c2ae9d8a9f46c7cfad8a95fc27cb0d961d3a733d554a499cda7335fce37675fcd55df33969a8a65beda1b777d4638c9be04d84c249d9bb90a46f1ce23da642dbaa8a21d1d266401a7765d2664c1488dcb43beb3bcf7b6bff7e8230b0d1696cb70fbf4d6858deeddbc35c07e9bd57eeefafcf039774f21bb7793e2d453c11ee0e62b38c122c0a229af6eed0ed24b275df575d51ae09d344b50d47787d3616a77f4b976fbb8907c863caeecc330efdc452472d5d7d55c95e53478388ec75edc2fae088eb560182217efb084381e34a80e49a24122512cc45ab09ca3e1feb84913d6c7f1e01c4631f788e1a3448c2a2af3ceba2c4cedc2140cc38a1e52eb43451995e14f65c8a4326c92a20209b5aba2803bac86ea53539408f9d1b9795af9d678635695f4b8f3c699e7d5ed005d559ff5fa6fffacbf6d32cfe41dd6a2baf594c7b7dda0b37f6e14c1b54f9aaf72aa7facb9289029116e4148f8f37ec4c3fe381fa763efa103122fca38637635f06208797f61c01f3154203b98a2f9e9cb2591728b3e7132ddfa9ba9e1730324f5bdcf30db9ab107b8f98c8d216e5e666cbcbbeaeeb18539026c7c695773559567947754e6f68e775428f36c5a9ce37ebcf76990aa37eafad0008bfa3820a73f4a2325cd56423af79b54045796efe46a63da78f5297af76e9a0a6b003ecbecd4baf03ffb677700270540d15020ab066cb77435b00a399df4d2ab2fc7a344737a9ff4c4c9447f60a7d927a03e5164c67a082c5a8224421250b1f3cc9ba9b15feba479a4a21eb02aabfad6b03c60d12778a60629e535b0baa5131572fa69c2948aa908272a89764e54d261180cd35448f7eae944bb1a0a7f18857991069fd31ba618068395e5dd7be91d0dcb4f2f6194063b8dadc4f1e8d4e98ffbd16230cc891281b54bb495308a063dbdd3f8e9d57425e274215b03eb49e5cb9d28cdfbe9dc11efa72fe783e52796d3e9e4e37496b3d00e7425bd487da70b39d1ae48b7a888c1308f128135057f54381e2514ce8822f55114ae88f7474f3f562a110cacc48be3b1f2986d8f7340ca49b3aa2b947d5426f77017a5f3f64b9c1229df6ee98795c1a493942ce7f0688e48947138d0153a0b2d06e88ff215acb3c35a0091da3b4e817c75eb8bd6f66abf1a9f46430082eb2578333855bc671bf663677754557d3738eb525d4381b4e813521499f980f51080c07a09de8c459f7833f0ddab5eca0db583a96d5934f06850707c9183cc4e1795bf002570d67e74a45560f67bd22447d1148f5c3f59df05b00c106427655e7ae4cb0b1a72da3a92a409590361457729db308a6ff8260a2824641bbee19bdd7d8f43aa5a033146f1db706c6c6c6e20041740c127b5e43d130c2ace80648747a76f1aa773da860c264d96f8a47e7a90603bccc33a2d19a6378659dad5c0bac7e452d95867621b9b24c826a3cbe84ca61d2c2a9fc5268a2ade3b6c4af3dea02ce4dbe678ecf2b20d47d184097cb2096fdfbe7df40131a3ba37097bcf5541f2e3d18251d50a64d73b55372b3cffb3c2571a082d8841ccfa7bb42ccb7a48de8d655956b764709665199d3bd8b1f33308b16ed168f3f48e16cd33d338cd4cbac5d42379764c3a32870993549314e3f4332d91dc388cf362925a09a44fdd5f5de374cca4e394143b9a14b2c318074208b52864873d26958f6dfdee7ec0ce54db3193ba849d2aace8ad1f454593f41fb7ef2fa5e92f6d9c597557d1fb18d4388fd2ae71ce508dc4f0d2fd0588e3a8be5c7dc488a2322f60499397edd925201c30dcd46ecbb8ac97f5f18218aa0f4b0537a843700ba663b369b805e9dcb911841c45cd17540e46f1e86fbea05e608e97d134f519f5f744333497a88f76dbbb22fddd2d51e351468f5d5555a3bcb74495a93dfa723e486f47478d7ec1d12dd0687bd3aea6ea2235cef78f57495f2636364c503986289d391e29ef61479958d67ddad9c8de5f86a9f1473b1a877489ea3d1fe90265f0dc44398dde3ff91b3d1e721cc78d4e68b7445da2b99bfe50dea3f723c68dde7bef71ef73efbfea28156784f5d12bae47899b28dc44b150aad2298df511a5b95ed554d5a2f0fa417a75b6416bba6687af6857837634684d57d011a037ed83e27ba35bcdbdfaa3a0e646fdfaf5bbc1468ffd5ea31c2b634727b35ba29e9c9bddabdc3b031151bd13541c8168c4a3e22fda5911fbc60174800d7f59158a616e82f0886aab5290c0bd5585994c1062bd0db1c73a98c214a42085284441891230c0b0ea06001eb9f9026e3c31ba8b7a02723faa779e3ea08d0d3f0a240415f7a37a534b48dfe18c23de1daa901e72bd06bbf5e6882852af6db923aa3713c1b6e67cc0e6d7200ca342ba5efd0d52ec99c062b2e9d845bdd054f3d23ab631f0165dc2a81f4689f1b3b4c5e8256fc94ffff4cf123196fcf474cb14d26a22078b099f89c5647d7e60cfcf4f5f594e65816494e9320c6d3a06bedf4856ac9ece54bb87ff50190b64f70ecce99606022bf785a45b5a0cb25b8e60d66c8685c4e2b17882c045e55b5c2c1c595dc8fa6cea29db985306e12bfa0476f8272eda55e46c0e4ee754ef1eed9cc699b95a20bb8acec1591766d24daa35979cdeaf179921e3f4e8a901d6e1933884bf68caeaf9a97ccbf2a9ccd32d3b734d21975a3bebc22f62ab158475e1efccce54d442d22d164fe583219b76b06b9c6ed22d56c8f72d83e7b2a98a705b61884b0089f9f4080292ca378289206784f11af066ac6f7d4ccc30bc14a3de7b3f95ecd13fa917c64b6d2f13a9f7bafbfd6da75eaa079681ddedc7c44b91d1d3d3c50ba38c1cc8d80f62115bb9a55815ad8bdcc2189501727db61006cbee7815935b4d8ce2296228c84beddedd5d9aa5415e88d8bff7defbc72278797979e1635ea4de762ab0b2f8a58f61525e49e44ba582c6d1dd8d63b9b1e08139bb8420e0546e23d08a0e85be383a086f1a0a30a56af5c858b1c11394f96adcd737ef06de4023b00b5845efc02b90ec402e60ce4edfbc2142de1d6a4ca88d84119390a12ff79b5f86634243fe1aac3ee62ae6bef773488d7c3f2006bd7ba08726dc1610e86f821eddae5cfb7119b52efc5ecfc6b97141dfb49117c81d0cc330ecb09b7650f4ceeeb88d2582b92bfbc67feeba809e8ddac11b6c0e79b482624274b9253b1fb41be4e5a53e4a131fffce7867e21b46c0764b87aadf28b62efdcc609897d1d736f1c5080ea37060f11809a376f8064223d763c248ba8527e3f00ecca9fcd955724c86edbb793f30bce918d005cab0dd1ddd4341e5c31b889365d555c4e84c4a29dd06e930a57b4dcea86cd335062147ccf3c2c506391e3dbbbf0c87e4dfe70af16ef607febb016fe6cc40483e87d4c83a4f0f6f4292ca6db9ae67dfdd7183eebad0f9f687ebdb735b6c51d7e7dc75619fac3f1f431c8f2c14fb948857f7821c0f1a875cd6714135ba7b87e5a049e3f187371dc335f63154636bf458228e425551cb39e5e174ebd1bb9f5126e31647c4521e839718c1b95917ee9d7519e332007fef0198509b7286667c3b790c329acb8081ec78c90da57f37e7cfd682e7c6dfbb31f2705e15a6775812db438f37da0b64d73b37bdb33b6e3c717aafb61ab34f63ceb34c8a7af5460f2e5f17da617565e506ed4c7565e5c6dcda5cdc780fbfae1be747d38d1b1fdd90611e668763e38187efc6c8afbcc3ea4a2763727c57881edebdae08a087b9fb43d752b1e798d80530b107606297133b536c5d30da653c5021dd3b0f73f4d1af972a047be2f4420f41e86f46cb3a8640e799377f804221493d109221a9853c105aae01dbb51f864e00bc935505c52a074d99fe9949c76c63371e8a6273d26d7fe32f48bc3c0dbcd41e1edfec01898ad10e898a9dc788dc3b147d37e7453942a037a5dd4b8cdfed1b2f15f52ebed41b9406f57ef63883bcd41b5fce078ad2dc78fc9ec43d1c46c51b8f5cc64b7d38cccfc8bb69a1a7f8960779a9f1d911e923c618dfdc11f12854441df512cf37beefd00df7263d0531006e7448d4772e836122ddc04b5dc264f430bb4783bcd477003cc4f1c878980c80c93c1b674491daf448e85ba8fbbd17a9bfc5cd68c2f1aee14db7502170806e34238993775e8d5864bf317f3a5fc5318960153bbc79b2de987dfaeca0c7937e1534b16c639f8ef159f6d9ce3c90418f720f887140dbcb196417e4a5eeb36c71706cd878cf0e899aa1dcc624bdc684a731abb34ceb111ea17585ee9448284f996c05e7306a0338ea3bb675848261ac137ac7391da22100c1f612bc99ed32cc3746420f0108422fc19b09d127de8cc624a609de24c78468924b8827c5626fe7056161b69051a87c27542590501965c21b680447ed68d447aaefe675af6637cd52fb3bb99c2038aae8fdc67181dc2f9035c2308f6e00c70dc3b40886be1c8502c74c92a51da86aa435303292be4be3ae9b8ee99dbe317273b343e1cdd63091764e68fdb66fdef55dbac7381fd705afeb173cc1a254b05454febb812ea87c863a8034e81b78d346d0d04405cb7c94119700fcaee90fec31b46ad37d388846c87719e4e2ebba36f070aee629441d1c66ec85429d036faec6699cae829beb1c78f36c76c7b6c11b17aebb5e73d537a4abe0983e5f21eb3bd39761ce6a9b28b6d90432866dba8531232680546c4bf63a78f33a0a46d1eb9ce42eab3922b0bf1b8611d1ebbaaeeb6a1b19eb725b45f1ba35abda360ca369dcbbae5ae8dab17d2b04774d93e19e3b73c578d1b79de32e6d342af687d89b0d34129ab00a9803a9d81fea4621cebaf00d1464f61674d08a6c76587db0aad584462010d9efe04d5d5e061d6908bc99a6db2d8f2b1c903ca3e2a99874a5648c3042da1747c7f5682d90fbb86b7a563051dbb4999e4e1186505a21af6e5c2de0cea6b3e96cd10d840d080b7379b128bed5d385edc26824a5032c9f1eae1ba2ab788ab01edd218f67777059d70dc9ab7836249bce76c58b873b563792ddb1e7aee27181b4abb936240cb374e7d5de1d3a5818ac076bc2a2362495ff7a624d58180c0cac8761301f4681f1de559562eb2206c3ec21edb025f5d9c0cd8b85c1a6b028c6a6c018186e303370b22a30302c8ca6c375e61db62436c6845114338351d80f0606313826c3e9169c31de48e27f7e4c29e963ca2171602c5b0e746c4cc5b33170671726db74166670076eb1e5006eb1313b53f1748c8e7dbbbd150f92ed974514d133d905a32e9fab27a6d665d3d974b62bb6d42606c7f0a0b361b171b1f56c3e5b18db4e4c5d3d1c8f98da1d6f2b9e9e2064f6b821a9782a9e8a0b32cca8baa8c2a87aaa9f6a4919af8761bafec2ea69863b0cb35ef0d8a1b28ecaed84355a1beaf18abb5976c54288611886614f2eaa7ad6a40ed8b6546f51d5b33a6c96ea181ddc52bd07cb9a74b6d31fc30e8e5a75b617cb88889357306682ae8028b06bd77218c5da0c16c5591db685b3acc9429389519ce93349eab55982cf2491d17418c55a0e3401d000ece4d07cba8535263a0c137118958385892d581443aa694c42dc7b3815c2ef6ea137d9b2ae4885598e87382296462b68cc8957302ab3c1e2ce6845d479f10a2a6417737cf83ef301342b23ebc22693942a0a98b06766c29d16b0fcc4f2aff8acf8ac9c989cde615c12d7b52964b7e94c21bb46826477809e38f5998085337a53c0f4e133b3eb3ca25d665e43d205400204122495aff9744c4cc526dd82c3305b0ea35ad0693e957d7eb80f3303f9f015625baa0b413bcc07dac9949994ad308add01ba0f09b88e775810ef64add1996a8d2fc308f1eeb5065669c84ac354692460eae896ea0898d50f30ab0f31ab0b31abefa81e844f0fd62dd57d9892519549c73b19c43bacdab0f120745417a356d5eb6d052484ec29208aad4b46b3471fb29f1c34635ec4c92b21d913a7fe134566b48740fb9bd962f6fde3ce333d7f70a7794f40fdd3def308463da0611af6b7691ed0e8133cb37db9065cdfe2b9be0040bc9306d8ced81d20faeed57ab1066011c04a7d0b83617e387f43b2ed308c0f0298019839e60c72cebd888514f59d4d50df612216951f770c402310341680c6540fcd400418c0cb0f33367917008d01a031476c52f93e6c33888fa02d9b310724807753030045939ad10e8a2635fbbb895630cc52213bb8871375deece0b78b8f1c731806747e3835c73bf8f88ed2e4783f1ece200fa782280d68e378409ec7fd68c843a1162ef404eff2200fa7a62b8f2358ff90d2c037ccf1ce71f2d1cff11c1a7837357b914a037a118deeba749800be73b320f10a868174030fa7e6b40ec3c4288099e9ccec0a46f111ed1707c5c39949d2dd2f52b31cd31b641ade29b0319bce047647cb5f0feff667a9b0fbc57709a6200670856d610d8c45f1a7b6309a0fa3fe6886c328cec93430523e6f9920b8d33c708707ee543c7007003c04128975815ee836d51c11f2a55ffe1aa349704bbfe9a6306b0c59d1972a42034376cf4e9b7ac31e2f8145b8453d7171745a905d7dfffbc28c0a8f0431eeb604255154ec8ad815e3c527484d608988f5c8791b86496932fd28d4cb0bf37881221c8c7a34d7b177d74dbf2cccc230eb9980c9653573db84184d629d044d686caa5ea2d06892eb2bd875bd257b640bb485c47efd074d825bf818dd8b22c1a82b0eb2925198d800efef516c6c80c70678a6faaec6b8787979a94c5bed02c131516034c9fb9e27280bc9f1e0771fd5e33046556721e8a83e04f4212bbca96382d896ea5d55bd7b19310c3f6e19ec2619d55895328cdadddd85367171601d9365d8f638e678f4c0367a6ac0f5ec10d08efd3a6dd7be33d73c6d576fdb46bb25b48eb153a2becf68736764da9a5d8f1a4447b566b2797afcde8ec1b6b3ea9ac1947833177da2c8cc764b8531aadf20df61b719d84cf7f6c2aabbbbbb61eba8d5ab4738518738500d29aa1bc26ec10d2a07cbf458801293154f877f02c933cbf3c3308ff276ef3e1e5875bf5efa785e17955f17cfe79c640eb57b48ae4085fa70964022bc57c1eeedf15ef5aa87d11efc6416d0e345e6bdf74cf5614f889063b26f4ba72388898dc03ccb46602e204fc8bd95b980b7bc109700f089dac72cba350cabaa7a9809aeeafac94f8298b0be6e55ef988b6aabc7713fb45a6d5c11dbaf5af556d75c1e3aaab95d47bce831be2cbb9e65350cc596b2ecbd9edaa9fc2a95deafecd004a4444db46319c4f45e565da5b7f47a353b69edadca3af3ec2df6b926cdec2256fda2d62ea5a980bc57d6b13dcdbaf5d910a5dda335fc8cb9a8d897b7474776acab39fcfe7147c0eb15ed66a7421f3df15196763e96799e10fb8b5abb9de9d83be622c415717d29cd1e1ec401d92a0e549da80a7799aacb8b855ea715aa5299b0326a9665199461e6793f58c730eca5197acab416d3d131a473a4221d24ca44b78028caa6b88bbbe2afbd38d1af78ce084f08ece49063b49f7c6398f7934b8ed99913da053199baa5dbbb1aee5eb6faf652f7714788f65c3c76eb4c748c3c663255d1a575bd031de38ab84e23a2ddbba48876414c752f6927438b5d7bce3a1be109b1759b558d568d0b2b1be1fd8051b99d2a2e07a7ead6ab20236ee1574990d52fca4485bdcbb2ecd9ad26b22c6b8289208c622682347159d592c1441341ccd83952bbd3e0d54905d7ec46755f37c95c7472a3a71ffcec45f08bd4ca7a45d9086c04e6829fc01d219af1c9f4e38ed8e8119526eaf690a6896657a472d7664dd79493b8a7a49c7420dc45dc4547380227229d48571ad3b5632a7445247a2a214df4654db449b95d9b727b72fb1389a68f7890541189a428f44d24431781402009920f6d7fa19347d07c5d7ccbd18e2be8f2270fc9cbb448f4ada529e4d59348775dde43b72cd0e5e947bce8224a033af7cd0927aae8a2d9bd8a2efa361be36da39d0fd1b72d8a4274db30534b8eb403a29d3b2792e72688562720507c14fd7a3cca3c891e1fe7e9840ef1b1fd5d047a8c7114298d7c484e13e912149a977fdc0fee2967ce07e929d72e6254cadc52525226f6b8cd930feea4732771e72225cdadda3cb2c2c590c086ca8a267f6ce7ae4d904814e2b81f9aa4f1f1880a9533b48cdaeca022128944da398eaa9c13894e7c481fa293a95d4a468944d447e9e4a713ba8c0a85507e72d0e832e5a538536e9af1a594100af591f253e8a2a3bc0b9dfbc93c85a80fd151e832eae4e4729e6404819e3249a41410892ea34e46d407e89da43e44211028b4d5e18c11afa8a1a216908a365cabad86301042c816861ddb869865fdb21aa6009369395ac3e9c7be97eefae02fa336d0f5f483bfdf852fade3aa82e42cc8eea51a0008ecf02f8c8024d56110c7714d41f6bbf7d8744c14498870cdfe6f5f1302c92836415ac8aa719c5f0381bba6f7fd355d1f7d37885830ccd66eeeeeeeeeeec6d1b2ab099fc1ccdcdddd38180b8e612eb8a57a173c4a7ac2f0112335c64f19b56332eaca5af17056c80eab157ff9f17b10840379fa5843158fe331b1ad6d5e9f21bec682ac1eccbeaa32fc970fc4c5b1f5e960d463e2bdf7247a308c115be5e098a2fe5e95e82fa848c1fe307143ecfef2fc831356d52d46358b45abee296437bb2136d6dd106a67405f9ba8f72ad631d5b9b5ed980ec3307ad1f8382067d42ed7637174c313b0c4c521c32808bbba9eed9b6210d2ec2d0a8fc96f8c820b310803b956d8bb6ede9618b749ccb2b20ac22c3a0cc3de6d0f7641ec3a8418c4b0eb3d641805e1027a40cbda1708e1e1021806ea000288c5012f251a0f270420640c8a5bde7708e14091cd91753a60ba087dff32848681aec1055da05bb7409ac6cd0dc3b4cbb2ae4b9b2346599a949a0661ed6722ee9936594c26ee7a7c8c9717e4c907c7659936ff8c12e1f82a73c5ce9d237b7c1c2adb1806070b0ba39e1016c2db2303f1f2b243304a878e86700132bb64898e39d9ba0946f193b38651580f0c56ad89930feda0aad1ab0af24561238fd56c0db27b36cfa66396e81686919448572cf450e8db7cd5c2307abd930fecd72f7a55415ea06673024aac617f98e0b021a04b822e2943d9b54c949d031ad72c0a01d11a215777f281c93436b96d76a78b62d8d3b2209f148b8024d8b76a3b0409ae9924170292683423d2f5a2dd3b4113a89e40accb3b8e64942e623f766089ecfebdc755518cdad70e106921578f1e5bb9825c55f8ee860d7970203b76e2efe1beaf6a69bfdeb3ea40457bbc5718edb1b52b225d2d7ae243ba45b0076db06e58bbbbeb13e244addee578c101c4ee80dfa330da61329dcdcefa750cc3ae6a15a9960fecd9470c93d19aaed69b48d7cab284e8a8d5895855fb91ef56c4c5c12c0c5303e904a3fa4d30aa77096688d1cf466601dc2d156abf0986a9f9df128ceabf6364baa58f61b22790a5a083b41831ee8631ccb66dd8c2edbaae2b86e237abb423f255c7e6e899f68c086dab65591603b6765753d522f8d809fbd66b6e35852ed075c15f264641142c2204826b5d1c8fea3cbb67f3f4539f7f9dfaa3ed5d56c45542490cc5f78c27910e029d563479c2719ce40e922119922119229d9b4b135b729cd42217a9a5f9e3d577d2be2110b2391e117bf574cd06caca6bfc8f978fa177292fd27ed2def27182cecd6e89ca9d847e72d265e42217b978522251f93e77f22b043a09c59350880b71212ec49dd07e281e34bb93efca412b97b3e31e69e8559ca0182768451e44415948d95f79a4342b07511ad1e5c9aca9aa7ccf8ea39051361ea2ddfeb3833f9e8876352d5150e8e91ad54ea1d07cb1dabad2e443b40b41c5f9e08e0851696934280d8bc669d060aa1d6af15b19cbbd97a8a0d34a49861e9aa14b12e8a1c9f5847b5576cc28b428f4b4523af9e827db6e8f1b8d9769909cbb719b3c019142a1d255584aa1ab4c094a399127e72e0ad14ec4bdc778423b39bbed91a9a15089c504baca0be82c3aaa0485247695af80482f9d9e7292a71649bbab849e325f4217fd0474ec28a1f3091763b744281443e74252d6500c9d0bcdad1be8d9b9b80775b16e71ea7432757f4d1f566802f7912ae493ac84822594710423f6d76f59fb8bee2e123d18050f8f04dc0d5d75bfe00942961e5b8c9389c665d8eae02e4c6504a42c29ac0699b2441d21c1301585bbbb46300a9a5e8dbeb79e323b304fb33762449a342c4f41408d776bd11e3d3a50d51b2c2b2cbf31694c4f793ce9f39da9a6a47c69969e461fd11e3ba2d7bb6e4fe4957451dac97a9da2daa25a68339d344db76152228506cb9c00a3e04f730946c1afcc0b30c12813458251f008727b6ae941c8946fe9a5122cc19750de1c8fd2d251656a8e47451ad14ed6ed16ddedc19dfc42a15cdb10ca37d04f6687559134825b60272b689ef6b40715b243550851add10e53c316b53355880516540d4991774b54abaaaaecd7245255ec198655efc184296c2a844c982401bf1056322a64c2142d8091491c02da1ab434444d0d5a1a5235ceb011850d9b548a0b5cd0a2f2b9e049a5b8c0062c25461f21d561d4187f6aeafdd09d54fe3e78c3e717036dde089ee9759aa98c32d08086bee47804911c0f484f46d6204f55d0130ea39aa6d0703206cd0cd719baab2a555557755d6b905b53921fd93af6eed5ebd7a3574a0ca9531f43baa53039c192ca55b712e4eb19e44a6d155a17aed1a4728d268ce2aa8424f4d3dd34f41352622394b28153433e219fb681b369c1064ee5a93e21252119de1adaa9bc03fb5aa2041bf55119fad9b420bb500fc374a11ada09ed8ee561098e8e079cca31748357a327c2b8fdc8ee4aa57607761dceeb1657048d0a6fbd0bdda0f2e3b5c1c952fb3485096f59905d8d1426b546cf955a174e412b8589183ff55d356ad0a88fce6b090f38373433c8f7baeb5285bc3b3c5682e4431422c46a9eaee096f778d1417631555f0ada74b55533d6ae267ee998121ac06033c37fafc3b8fae39614c39b0a77d7e22c582a574b8e382655a36833b8e531214376a79df71317d977b438f1304c63cc7ff0adcb7b05afcaeaedb226c4b66d77ac547e75aa7c0d24e2d0c956cd9316dcf24e3b8c2a038a0e14c1c6a0f0b4cdee78f5a15c818204050b14256ccb4351c2e98a0e9d90acf03ce918419e74eab3daeac915c411c1524f3bebf2ae914176f0b4531f1955e77445431b8ee3c172bbe820bb2b5525c7e374c3a8c7ac0421352a53149e757945b0904176283cf5bd9f7218a64321c2e906a5081bd34c1a85e764a476279c1ae44a9daaa81d876d79ef507aea3b0a117607771cd604cda463a0cdb690606320c314c0cabab04c8b1bbfe540fc1bdd95680a6b88f1099c7e41577feba2d32d18c6d88439555c21ebdadd7709ac6b09d65cc1b67630f7d48ebf5bc19675bb6b0cf9ce15cf6e1f68c3a65dca8419ca41be775584f6b4182445c488801991fbbd70a0d5041caeb0dadddd5dc1eeeeeeeeeeeeeeeeeeeeeeeeeeeeee6e165c10566141f882aaa2391089254aa49250c2821042082dcbb2208432e825524c2cb90013d0b22ccbb22084b009cb62625915b4829bb02cea04a32c08a1555995f56c208410c22bc39a5003befeddf1eab3b1ac0cc36e22a08435d840095880b1c51666acbe42b5ac2344512dec426d43300336aab3ba5f0ca189014660599709bc98820d598cb1cf8b33e8a07275bd38438e91255fe0a095482581c4173ac852487cf103898412a92490f822099655e59042d56a874a01158cf10998598b2134a90c2d08e1c3e111f010ac10414add2f86a0a47275bf6882ce14487c21864659560e464d615996a85a96109c502dd89615d5aad6b1d11216b52ccbbab4722c59e20257a858dd2fa0c0533b1413ec5539456a2045165b90628c35d0010b33910a5e8105eca09382281c810c31906286c3f8a20b3238e18cee77874e1287c08ae3baaab0f3e4c3a2347deb5715247f08d7ec19fdd1d4b22891beaa20a796057978d27522a30a0149de45855c1d845390fb97bd6787a87d08c6423850c4a508aedab553bc90cb9add29521f578ddac5f59a9710ecf1abed49a4eb93e2fd51213b547dcfd4f290e09a04dd599ce185733c1c2ca7033e54bce00967c8c11a7460852340b0d8c2b12ccbb211d9e0094d90c3198ad0c514592842157cbcf0f9c9ae28c310a4e0d3041f24e8a0a9e0c51c48c0f0e174164ef0220ebdd56502164c503bd48310c341119c3430c10e60b4000b22a080bd907a47228967063800c10c22487de1080f52550e7200061cf8800c609c6006fb84155c2829d7755d525e2829a45f57e917dd6e6ca34de5db4b2a27a97ca4f21b2aa72a2ad7754993e992a6abb4c9f4ebbaaeeb3299ae721e3fe9938d938dd14fd444671494d2242a2a5fb9c944754815938a0a8d9b544ea7d3594ea713cb4a5f8f7f17694525729b692ea3542664d4e87d95ff9fff5746a36b443b7995f91595a8f295afa8501ad288e5d7e9d7055af9a5f2cbf46b5eff751a8fafc4723a9d46b7518374629134e8e9c77ffae9948634a251e374b2c1723a956cd490a39f5848344c34288d7c3c0d6974539faed075bd34dfcf75d2f595eb2ad74df395c1a8eb7ac6d3bdd46eb6da8e44a58f485fd2ec2c24e9d69744b112ca478fb147dd1ba3ac1cfcc2a84b8e48a2eb3a26255d0ee5baaeebbaaeebbaae933ea9f2a0d96ddcf5edea649bae2f8eebc4a42ae21240f2b508e363e83dc6886197f678d6ce282ddea706d933f6a76a187cccf1b8180846318a4f5b71547e87a3b276a64c30eabd6583194c7b2576c7d342dd9ba669cfda350e2308792292a297c3f9e047fa74b81f21889a96127fcd9a572f1d20b346ca65f0f66d4de3be957d3a86a3af49b7bc63984fe603397a4d344d7bd73ec2fe46a417c67c3f24ca35ea6c0dd262bc4e4c28b3b351b12eabddf3f1e9604f3dc9c97420a44fe7f1631174f6972931011d0ca3e3739777bb27f0b6c7c6a05ac70eb131a1f317b030a02ccc8d793e6b5a32087181f703c4765b9878ee9c014176a8651d8cda5d3036c6087e5678362abfb43132ddb2d7c26c6863382132a649306a7fb8b4985d9aa6f3dec517dfd3d9727c9e100fa569d795c8ab31c6430ea347428f93067bcdeb329aecf1f1baa89057b1cb70f70ee4c9dfdf191c13fa639cc7df9af180cde026cc61d4a78451ef2474f2ce4a18a6d37eed8e2f7607ff698fef38053920f1acc5f30ff7ee51a1be78253731a96d92e19ecff674725eeaf95ca21c8c4279c73adb5987af6024f3a518f50e9a2f0c00545076948904a3f6db3482512bdff550b3d7ccc4c4f351f29a603e00d896f8d743ed960c273c5e443b537c0aed648d7f4ddee8a1d077d07c05d2ce4490ddf19e611d338145b519a632640a63d40eb1289921b6850f9a0bd838b7c536c6b42d4f88b73ff05f4ca8c798b69786ed2f1a359fbae72a587dbb3b5418698744a5d9fa70ac4bd48e4d2171628f31522118ede07621e8a9da636fd8758e1383cfe6900a9b1db4f83047ddb6c136cb0732c41884dcf71edf7bef593d287a2abf3920b0aa964b606173776c7d7e545817abaab808614f08d1ad6bbba361525ee336dec98a6dcbe8d853662f6af4c3e8d2461dddc61cbdc61cbde7e891d16f4967309b636150b46d82b290281f451414947718ca47df66c77250974ea5ea27f9d2a3685b8ea9f10e8b356614355e82cfd4a049465f016581824275c811ca68a4f26679dc58e6abdda552e9a652a9d4a6deb65fcf52a4e8d69f184bc688dc86324713324abe5966f7eae891b42dc3b06c95c6fbf1c4c2c2f5d8caf25822d12ec8564f4460ed0b09d5a6200e487549bbeda347d3d6344e7a7f8ba3934e1a996ebd74abdfa19e35ba8572eb3d9bc66c96d9484a2a8f2f0588d43820d5a6424f3f585e7a8985ca705b9bcaab9552e974682a5d48a8964a4f79c601a97ea2445e5da15d7f3bc601912ff54597e9e6a152840aa5d97e9d46f49a57e555b6e57ee730ca7a69b6158cb290d4f80e552deb29d6e57ca2f99630ca3a69be311eca7c6554a975b19ef1c81746590fbd7ba91c586fa2acf6dfa61a13d10e939276b23114a3acc7a785dd21e431a90f488a61c2d86a1d04ba4cd7546ac8553bace6d5ea58c760585b3b2646f1824977374ac710cc82a35a2ca485c1aabf1f7a19c7fba17f7d51ef2cc7f184d0f17e688b765dd18e1b3e225e853c0186da3f6d346a190b768dac8a1af1dea64d07cd855e713c8e58dc7c15c693baef07f8edba109ec05f20c84385d776478d75c19e102cef07680ae5a8100015da10c2868d1a3b6ad4a011040d1a2c3a58584e31a7d30accca8a8a0154544c40984ca502944a29044849210d80441abd8c46283fa0a09cf8707222721189640e294302088540010081b8168edb50db167b8851e341d3320064198603c3ae1bd765d10a2b5761e88fbb09421bbba3bb2b7c8dddc1cc159ec6ee78dc4d2c5cccb61065a9ae775d10fe0a8164f862b1ae8dcb5e96b12cd4a62025b6612693c96412d5a10b4cc91b625bde5706576205892418a639f857986483fc72d6654d1ea02d24fc4b3ff82d7adb462cfcd5a4c03d647a503dd8b276094950828325b539ae9b60546759f615926559b6598cdaae169b605414e44bb7f4311ed92f95fd514d89acde6fc60c23dcb2559b336654c1a8772ec8f6521d7382ea525895f5632db1c8e898136097e2c2aa5f5675ddaaae2a7bff316198b589e19d26b5bf1d47815521ada8ddcb4dc8a82de34cdbb4c7f3d5acaea8ee1bf26ab7f1d56195b941ee2ed34ec619ab4aa864acb6d5492d99a211000000002314000028100c880442b15840225866bd3d14800c98b25672509ca7398e21640c310488000000008000009804090007395bc96368c81fda6376765f42e7404f27be35316e84fff3085ad1f0117f5f047fc5f42efad230408d6460539a36b6c188987dcb884a8408743dd244f5ffee21b15f6c8ff4f26ef8f85e12d003e122f60fecbaebd62d192b8d3892f469548598d7115f63822cda98d4220dd878bad337a8a2ae41a0e2719b25de2ac7ce268b110d8200738144529652427a2f995ed1f53280de1255ee26fde87bff90875289d3f9e899b4a9b23742b14b11b41f6ee5630a4bf1bbc494db3a179d999e27336854c0e49b1fc63b73fc8288724d3cd7db13747f261dd4cbc7d9dccda3333086a03c1ace72db1de9eef1602039f2cf5a4e51a186d5c417739c68f8ea1199d5b8d8cbf924d75a5e7dd710c3a102b0636deada10da82b516d5c97957c53bb3a5be2200c7a2e5fe2a1734d288e91cf19a22951bb8dc86c44468eb24911392e13f3ab60e8db2b03f4e7f4905306e59bda6f0938743c664f620df3560579db503c7f059ce002a3eabf9caa28416994cf498487efdd60dbf684aab477b2ac99628f11cf15aa1f1bf7ed3fe97e97ae8e978f6ea465accb5ba510c51b642b059069b4672dac9ea75047491644dd743536e43753b0094e6537dddbbdff4633bbc94cf52242b1a87cddc43b5182993d3f650b8290a1ff7c01fa3fa362ccf3201a958df60d14f87481f2b45c69a112407d660222a3c3dd2724a08225e64c02e23285c42d4ff01a1b32736c9e2f0da6896befda6250fe090fe80d73f61df965133e27deebf96e595430121328c5d242a149b83f55ce0a744bf6c296f7514df47f1dcc13c6f5ed4f44f38074da035fb50456255b81e759dcc2811e2e6b8d26348898a32b91225ed937e6dc028ad81e0fbf8164734e09c9c2a472eb346d9c4905aaa64de51f8cf2415ae20c1154b04e6fb668ef808ae6066c6e32637afd44f1f2ba02f1ec9a07439c28d7faffd7afc18946974963a32ec93daab5686bc57cdcfb9ec30557b2b506d7a1891353ba47ee3bf16bd7c2b823e06a14cf7edc097edac1c4cd9751600854e56000db866b7bd76a7db185649059bf69970057a5f9e1b7c90beaf83824a61c20ebff89184b9b991b3eb3dd750ba490184a0d88d28af2c9c03c8e9fc6e38a7f12904b8882fef1796b633a4c289609a76121db1134a260c6ca42828e77989c5265da6120436308c636a5632242ff3d002bfa127878d1d7312ebce7c5e42bd7d1e0a047d03520d4f29aa187fbc3fb240beeddc99e6c322483ebf5411fb19892366a1b97b29a4613dc443cad760177739a5e999971209142e08172d529e434914830a59ed184555003f68b78c07928abe25f3d40bbc92b6e6dbf582ffe986a3dd7ababbea1b49097a396bedef291474f250bcfe92e70d273100ca0c99de667b777aa9a0edfcf5ed7b84caed16e64845d5d7e1ae84fc9877de409588c51e9f2de2b0082568a1001099a6e548187cfad7b5738f86760360089a2d3699302f9432636e5acec15dafe9ad6d714b50befcda1667e8e37143ae72896094a29491c5bfe83fbd0e63b6f0b9bd26fb4f611d280ca305647c08eec77116428452c1c1e7d91319533d5f3e541e2c46bcc2706338aed07c454a0cb353be1f25b61218f687163dbcdd1c0b01e2c94c870dbc5ba85032868b796fbf1a5f8bbf70fb53b76cf862e1aec255b56bf9795f0cf2a56ed037901074f940108fb554af3490713d8dc34827e3825671d9eba2def050b395268799c16e37eb40e05c77ffa4f453ad5f5342ac7622a54ed309d92b4abc718a9bddb2a466cb859b8887bc9743d9dae849d35fe946af885dfbb8afac682b2fc820d3cfdab629b729589a8c0b72f50cb668df75bfdebad90633be88136b5661cb8bc6b357bdfe441f1f2b61b7facc65ffe840e5c5f08ade6f58aaec5c84e61409edb0249362868d15c8c38523df4e268fcc87be265959f0cd8cdba0ff1e2ec0c696d3f295403f879f6ecc319b543816d23b0a4eeadfa8bbd6523bebb72003d38916b90c746d26235e5a684d1a0a2190dcaedabf2eef28938f508dad803191a4f5aede0d8f9e191fa5cdc1ca75d5e11710628e4492b85f2da1063da10748aa2dcecc81917999c5f3c79ad6df3e6d365a1100db24a3449389305e9e04f072ecd9877942322e90d1f0ef1b0fb2885b201df1a10d8fefdb6c2327b87538a69157f6157a19b48d9d193c7cfefd865b6ce125dbf0c49aa7efab846e43dd93f7454e98b9de063ff4ef11f31a1683488ef725ccbaaaf6f2e0c1bd96d2fdb37f1dcd7b360db980a1c1fa6b2ff6bee7f7af13a6ef58689c839badfdbe552ee4f7f9d5b0d955161fba1fd10cabc0e484ef6625d1bfdca03a5a0560612261ba1ee90e4c507abbe4917f1f8ec9eff3bd61f3a30cf8753ebe187e811119cbfd4a00df086c9356684ee3b0bb06fdd441ea9b4feaeee42a567687a0bf37ff5b938e9ba306079796b16192d86f03153687c07c74817a391c40351f5ee15423a184e106dd45c150152d5fd9fb3ede89ce27ea5ddc61b325d4987081ee3c34271d191f07e61bd143393fdefcac175e26f79c36292e63befb68599966a9970cd2358b784f331dda21d95456358f90ec77b33ee5c70210cf1bb8bdca14eec7b213047ef5c8cfca1cff77671fa37f5c9d85b348013d44049ff9c69debf72a23fa452295dc7edce1c6f351d6b5d2a4df509d0598d9047feca225deecdde856275fa62ee5ec5d93488dc372908200b622d793cb47701f52377d804a991a485af9d27a5bea6cfda72521b881b84fb65d33f1e94a15f466fd984600c5ba14ae89ea6c021cb5c5c4af068e06b5db75d4a4e2b42e7c6f49198bcd961e4cf33b0fdb8e77ae51c37509d55226ed6ad558529e6341eb1434a9a1ca7f940aa5042635141443ec82aa91e85546ecebaa85635d9fda9c74418cf2873c42fca39b32c720e8df82dc78e22bfeffd228574e25a24231f1454a3cbd42aa20b4c9a41e186d42a93cffb8a2504beadab6201cb8509830fb7d02fd4a4aa5aae78f38476cf6c63c5061f4192c314ff736fd54a8158254b93dd419536fe310c7479d615f1c0b980596ea1e09995b4331080c7c98dfdcb0be1626b27f4246d52e74056c8d00568f35d8c42fd7e7c4f895bf472314ef35a0c1b46e049e869c48e0327ac231cb27408c4e27048c5d62f466f52fe160cfbb8694d8edd3486a673276209cde8d064f6e4446a102e5ff281de066c71c28ff5d71c63a99e63a90276d93529ae23004b53d81d00faa63ddf57e9dc849818d66e8395e72c1a37d6238b661d1da67c554088bbe4c11d695f4f9a702fab3b6c8c98c76eb0da7ea5af8e7418e5272e755b5b0a435dc1e2d8ae2a77a4079b82dbecfd64071d67d335ef594af258c74f51dc4a4e093e2cb590d9ecf1220d20fd1d055d9111c550adb9a0e47529350749579865738b5d37b90337e934c4dee25d0d42b322b55a6792f00097fc861c7a7207531a56839d64ae44b7719aa0578372e63921a34ecdceb487272d9dea68980efd1b97ed5184e9be6f384936e02134f940255650c5caf3f03ad4cb367a060094180d2b1a8404a2ae1df2445c150e2e1a913276f1a204adf9e6a7b6e57c468b7dde9f34612a12dff086b4414774d3fa192de12fa90d00ebcd83b4415dd537d76c12c27ae2d51e6653c93d2fd79c9503ff9653af1d1501ed5cc84ac482ae753ec0d80495be34a86cebb9c7864050cd255f070d431bd84837bdc2059d580e75d2ff53d3ef14c61a7016b261ecd7d74e1777af92f96ed4caad577a2a25efd88c07efaff21081b390476b759baa2baee4057fc71bb5a59d03c21b0234b3950af147412fa37331c46a5e5941e7b1d60ef9e260621d8121a32313e4099c9930881b5f6fb5c00ecd900ea4d593d67a2b01d056bf8ebab256d5c83c33a2261d0529df4bfd3fd6053ce3c98f800781230a1316104c32a7b96e2e0d6d3e6b10fcf06841ff9fa75f95373e7d1bcec4c8e68622565d18b5c415435435e395527e78e35c97fd8bb09e33f783c39f70162ebd72bb88873928dedbd1a352a243f13358a3405ddac4b8ec3f98be12ffd15f93e950fe0cc2ddd5cf6c04eaf6e98fe69a2d18421711224079292e1dc9ec002e3e6051600429380f545782a97005974e346f35541c2087843861817179798a2fdb2cf321f0983c465d2dafee7c006b78d844117a15dac0d59127a2f80dfbdf6cec9250ccc52f4dc97156e266e0c8bb0ee278cdd607cd3c85a651346b87936ad4f24581746b21e0d6325c0fe71dfe0a0e60954e0585bd41ccf5ab2fe0b1c4c1526061734af0383af65be40153cc0c6fa3f80d8279f35d0208bf1f0eb4c234503d412e3e89d105d1c830a45bac58605cf7349db2c42e209910c29c573c3c064e1019ec4cf9cff42d51d9e04ac28a87525abcb2b856c420203b31b2ead7f4d77ef2462dfb725b5632c3b643aac9a0740184202d60b0689a688b3133fd719db2857c26bc2583c425bae07a81270ccf116c039b2bf29d5963a2cfadc1ed4be9493e22ad9586e63b4ea551d863b7732ca8d24e6d088d4561a811197610017bcec4f489ca8a8c1fbe1c233473d45738665b40ecdc6152bf0670cb0f8a40a1d9829818e1d887ecc72232beae32e3fc554280cf92b12185551ad181e7dd4350216c830559239d4a045dabfec6869372017ceef45b6dcc1827362a6fb412b49ba5e5442a8a2ba367e8193dc89f4605a65f261a00ab123938023db22819aaaabf693155c18c3c60bed8acaba3c7a4c3b1aa93b0183f7e05e477088ca901323ad08b9e0ab50fcac4adadabb200e73bb05dcd6fdacf630e9567673956492dd09072f7434ab42e3a4fd7b5fafc9804d994eebb69d931051c5ecdc41d444a630f5e147d9da5f47c2348300b69f6081024af5933660bac407caf35067a760e18a64cd040be28a1154c552b991345cbd8f1204f0ee850909b53d48e7e522c262cf3a7004a502d230ca412758400b9c70225886bd161eb867c11593720204e0611cee0efeab4f03d5b9b3afabaec6c56a820502803e97c71185efe5abf62a66e2f9387ebc5f6081a148e1211a1ffcba238d834b23c88a6aec66343b4552b7de158b8a83e172e65c7a7cb4756cd3614f079bf4fd8f6d09e2d6ea2d676d52deb59570f7a26e20648b44c54265ef3978c787fc800502eebe9898131b7ab30f6330c762fa5a6f9be53006a0335071244c61ce59c68c0beafe844ddbf9f88a281f87eca13960814559b21c2d69da8f89b1eca4e91d691ba12c9a17415bb738921d3d84f06be494aae18ba453e3d41b44cd6e81775154854d89521e0b6e15b910ff21d3301cd1802d8dfe165339955eb34aa6b15ae905a9ede1e9c32a5aa6b8531a925a29078c7c6290f7772c5bf8e6e146fdf539b50d46d5eee6859d4eb1839dc928612746152b9a0e95e8e4835f3c598d564edfe67698e4309cc7f01b9af2d4b1cc204b61be667890870c6b6afc7ebc3510bd735b93e4b73f714707be6b5bdb9b5544c99146b839b810b53a019d9e77733602d232805de6748da88aa34624dc4ce8d497cc71a0c96ee792fd7b73ed8a81713dcf18752029215c93c445602f4f47b914873481fcab59c5f5e5e6ba1f7c4891f4f0320a0a24cc8da4b08c8254be11e03c73bccab248dfb9d82a2da3d04372c989a7d75ca5c6c4320a6ce6ddad5947edfc366cc9748381a85c8e1bd6651412e6b29e1cdaf706247f630340d02fb3d4186e7a5b2fa310a56e613210586b9cc0afe2d67fa936ee737ac88d2f4a35dfe1a04badead6a0e16ea7e25628537e2ad41347a19101cddc7e4701bec45011a165e233836e484bae81380cd708da7d8c161541746d5e4d0e3703b45138b9db58263eab239685c042cfe3415d56e5f53ebe8f61ed1f0bcd34aa5a68b75190150adfbfc3383b6ff30b88375d50ed77ebdac0d79e524c900b14fe10edbc53c40595956ce72b93732126c850c9a538a9e67f79d88e10468e95f74504ff5dc69afe4a064cabdb3d9ae10d99b072d6b7b305405f27ce05c213c14ad4ba760c63b41cfbc335611dca7f4b05ccb877607df70bffaed7af129259149c64ec5d92b274be84a8a303528ed0a6c34445e25edff210e5330dfe24ea86888f9d160d7113b2257b03847109c7a1480b61209d5f6df6a9baf6340a3a9a2afb884be46696719265ad6d24a48f2cf87dd1c2aeabe034e1b8fe8ecfb993ab2e76a658ea748d47d6139d4ced344d9793fd5a9209b5760c93ca90687c918cc203ba2591dbcdf3b4a1dc92274cc5c2d2dd490d48d14ff241b5ca1c932614dc64efe81ef291771297222297d2c46a7682cab439aca23e1f5da3fb8d1cea04d277b8011fe33897fbb2daf30527147ded773ccd7a885a7ae1ba0c21eebe5674356a3226e3d83eaff4ad4d048c6afc7011fd54d1700238f65dcda195125493d8ffc3157d0867abd47f1f66149302541b30d44bd4ac2666020bcbb675f4386115f9a609c44ca807d4c759bc409c5681c7c98459e8c347d1f361fb4b434b7805dcc65af3703b8d81cf76a2b70ec652e0e3338600f434594021dd3dd26a5eed543c01d41399bf3880848d5790f2e0febd74e6a8e3d222b6d653c615b9a5ce9669aaa997598f83124595a8a0789b505b4854cdca8d21c44afe6e0e9d6e46f46e82f8c87c4971d8f3e34780dfba9c043662d2607239c43482814151d62e93a2ccd6d1b14cf7656336e2efa639de222c4528a7e4c0353e3ead8b24e71ea081d4a7fd0cc0a4745c22222a21d87e312b45dcbb771c53ba404bb78db002d37bbb3b8d71af3f7ad8a564f44ccabeceacdf8c1c90e4c6093ba49f4bb7e3d71f95df5ab7074a2bb60b49aeb3a3eb713c3159945009202ea552a093c96cd4e29d517612613d246c7a240a03c81209e2e66f7c3fe2547618273f13c66918fb7852a7a2bfa137beb277efe63507cdeb228aacad5d9d582a06ec56fa5d792fcf479b7bfbb62a7efa616d0071b30501ed6c9ad313147f391663ad81db05be6ba4fdb8d7ce1a5668f7bfc788479242e8f0b4a29a90626224d02c0dd8cd408d9fa58dd80ca19a81fae6adeb55f988f4407438f3c9b907ca9de0f796a3014c5297254d6e07358f076898dfc0ec72aa298d30f53690e458cb687dc70b2acb4c3a988df999431eda8835973841000f856e6cc2aedf2a6b0c0bcb001d1a0b6cbaeac5b842db5a24fd1962baa2adca61fd2083ca23fdb9232e2582b038fd0d30d9f13a426257dd4a7c944ac9d7394db7ac33a781b3698a5255d1d18b70f82d71a190f140c4f3b209b9994fd65c227fd3dd90b8d64a58c4b447d4a759bed08676ccb91d1c99c0f6edfb948041f289a37b8547b97543cccf1bf252c206f6c961341a06340e7f3763f1dabf856bfcef3570ac07d07606de1972a5c05303357df350e605b9943f7594320d731987d22ceac675b5fc10895c299b474b1feb5e9877ded1921361f1a26f3517ca611a964dee9c0088605a4ee9accef67e092658b8bfbd6121b89067d50c1b998d88e5d45c5885f391dcbb52a16e113f340690eae401f40da9e75b634516bdee898035a575673118bea189ba01658975556b694026e3a2d52d725f84ca8bd8bc153d1d4e0da14e5506c14af2d7c3d118a50ce0ef0552ff5574c524a9c4481d4c74944e7aa56a7ba9d497f0eaaa9ccf4855997ce629800a7cfae8eb573e7a0e17c01b4a4ecb78b023a05b230cf28cd6f642b63787a72169f8a07139e83efe6403f77e4643428ae1007c5972c39fd16d59ff80ed124eb16f3cf6f039fd34e8ceb61437b58bdd496bcd803a313b50a52d2905eb401f2babebd2f9c874be22e3b98abbe99d2666eaacf9e5937d5c1e47f9655c92421ed072683fd5813c7e851091421ee20e3b34db95c149c78a8784abe9e9d54a71be35159f684310174c3e88db91350fb5579700332922170fb2208ff0284fddc636a9bf92176c768263b8f3e71c1c4402f5c73102abefa914e5c570716fb6de1ee162795f9cd96d2f26bceaf162644e4a28bee441624b0c097a58871c9e0b27ece6ed12937e7b89df7c446b905713611ed812803551373bea902ca60f3c99a358c1c04066c190180c8cfff9831981813a2fa3b76ffa8d141b555aad08ffb99c3d654027323bb5d2b77c1d8a9b34430ce6fd78e87af6cd406928896cdb9cc843296ace93403ac8004b1236e01040478d87184b40b88e3ac004608ac91eb65c0dd234cb20368034a8199cf729849698835a10232835418f91404a133ccc1050059281789f449088d89007631aa91e40f2542b9e089954173732b2ea8a584dc49d4c10e5e3d36d36a4e1146ae59872efac61cd721e0a215bdf13088993ef982785a96f025cdeea2ab1d26c2a0d42030a9806873241ea9ee8fc05ae27873a29a8f962454929d6dbf3229a214f7230b692d25607cb263894fc6bab0095dac91149d9be36f49ac880742841be48b6e20ca2481995538a3706f4eafa7be1ffcc5ee6a69428d1c7d10f9432ac1c8be9a8052859359085b95b7c3ec7ddf836fd1c15fd725058c736d99206cd6d8b1dd7a995459f7be5b2c878e72e57c5f72c3372c78e194818d2ad1977a948fd60285f831a669b2ae22323f231bdbeb40367c0d4a4405c960a6513dabb4b39e009722a5587ed7611c95d335f702d71729a3ba0099887097328e504d0a1a84893c715566f1dfed73ff733a5f10c7da48f8214f4fc2007cfaaaf61642d75a420d82218cfd680fb8e68311511038c59a7cb39c829c64bde0cf4ae05de7e8e2b348d41ce3af1537edf222ae4262d9e15bdff472ef2be6651a8c06a268aff9ac0c3a02681620903ba9dc004df1a5f81ebb2a5500f0b930113ffcd92fc442416a5845a70e6dcda50d6d9212d820e0af23b9bc485348dc596d2acfa283eac8df0d3105649b53b7e22395c3c21c960acc28c94d035c3963e64f9c5f5fa0e6cb7671557799707ddb14a30ee0d433f8512342447528322d11e450d4e1c3ddab6a3625a1bcad6106c3e2e20a32524dac000cbc691c672555b96c9941d8b96cc6bd869b877c7d0c56df452a55d898bdea70712619a2bf1d0fbf6c0214c8d9a164c7f302f27861066e1bd445c61dc23c2e447ea3838aadcebe9cbf187dada0909c24c7c2ddbd409b5c8447d4cc14307ef013bd55d63ea621dd9643da32ffbd6379c3051ff9ac1c64b65b90da0b5164d767df93874a5f5c6b2920b77f7eb7c4d59f9194c670ebbc5a4e0204885f17f9c6ac0c0645db8c27174a4a4a16d9074944e45d7cf15f462e7a4c46d8bf2fd0bf85c8f4a1a08951cc1dcfcc45d63744444af714fa68a5d2f8e315cb565c0b7cc40ed3d404bb76d69a828726d079b881460f9dfb4e9d0b17f8e03e9ecc39c6e8a582c2124ff14c414a0db710d20db219360be2042c5fcf4662c742f0aed489555b2ebb01c07d2e97673229861b359bc3a991bbd0ab78f5812265ecb1440be93536d5dab0d86a7419a1d8d494f0500bf9b5c5a0f545fb7932cc11aab7198da33606c5410d339a8cb80c343cf8a92224f9d1464c829c57f30b4716b48b46ec9c5a3f17626547d03e93a18fdc788e645b7a1164246c97b91ea0c64880a5f7c20611bdae5ff8e060d5e92a687fa27552e35ce91f03ecc7d144c3990a0401bfa033edc0ed4a7f89e61777731b95892042c3e4ff3069ba36233cc538a6473f74a85b3857cd135b797c9059b93dd49714398bf6791b7923f906c3ac51d1e6c336446145771939dc6082f02c34f36baa61a0a83fb3c41420319406de7994ec2d53cf2b4fba5b5633f8c67380811bc9821465005a2e36d5e58b9dbe01fd62f0b3183996806dc4249c0db8460205e984a2588255c3ddacf29790e71521146452154b3c2f5037d212ce5a2b9ca6e3f6c6af81ebd05eb45bccfa158bea0466ba162e40587d4732c7eb12082ce9bd4e665a4a35014a71c4bab288438a00898b44a69668fde5cfea869711893555974b0987a3f3c257e4c0097efe7a331da829953904297fd2aa859e6e5f830240d825b06b2a850c21ffa536be5fd814174980865522c05d1e172a25a176fa09040455a9867dfead9c2b728b8a398d4870d21f5c07a3922d79f18d5d6bd6c6a05c859fda4d4e4824058b08131bc2991d09a92f9744f39c7cb33ea5cb906ab4823923bd3b9db022ba40874b0122a76389c0453a091bc571df6c07a2a141385d6a7df71007ecd0bdc2890ed5ff23fca358abe3a2b52affd0bbbafb13797ecca8d8dae04065f31000354b338dc2ba1e76ef862acbc372235ec7d3fff77313e3c89a23699e3c3b27dd7af7333eba33e386f0d3a2eed38af34f37a6629c83d04bededaeb9439337587027c0ded04e970e298b5c02374b850c46cda713030b0f52a7cba3a6555386fd42894d18fc021e2908d575d389b9b24c91bf9edde795d4ff76c475b3e6c6b0a7e1f6485c2c5e8996cc09d2472cd96b581f77651f868bcc7bad398e0306f2b0d63c23eb74436e24aede33d81cf6f3d5ebc28de1962e72b6b72baac7f9879a77b3dee13750e1e577813d47be3d88ca478a29a4ee342708024ef8463024c0806351bfeb2b3078ffbb99ea59f37bd1d789a86e00fbae31027875fb403b3cb83ffb6813a2ee3cf03845b0d175ec4420d4829a07608c862f4877aa81dfea01cf673d1088902bec6ba30e1054d1d4d84f502bf152b9189c117b4db22c860985b4ba6fd71ee0bd33861966dc39b7c78a566c2f6305ee3be2349040ae1fe7778480c0b6ab4180258842fc22c9aee2eb8ba4a6fbbf6004823d658c2c285d8569bb009239453b4981c9955184df0b9da246196d2b7263a908f200215ffe86231df9fd3a901c4b487965403d8c06b3dcab9764c0d1da4214ec4827eb477693c7cf9bfd59de5290907f761594bec9cc3d6db2cf475fcd05cfef837061b047d7446df240910742a72b15e190f08fe63ca6f91d9eb99d28b2d281e1af4ba8a8b76cc2eb1d1b68902cb4bf7929b824fe9b2b312ce2debe5bc1f9ffaa8536a2f5a9154b9d7ff94b88b85f1aacb60ce3285a7bba40c335c49e12e7849ea87cd30fc544326ba95543752c46b5a1e925457874c77cd7396dd30fe6e6f50dd21e93c43ed02f7fa0323c998c9e5a2d46c2af6148c38dff0acc40c1be4ad9fec7d1ebb24ccefc7b1749b62647df33823de97df9e63a6c57949b601a1f09c95bc6f936a2c32c9888a66a61b34b4b6e28401e220962f5574bdbce697f7cf0888b3d1b6374a19aacfd3a8fb6b07a238da357d0677d1e9bb80cfb89991451e90a2256aff47fe37204ea3acaeda8e60ed6904684956ea4256c8f9cffa252ded0b0f757414631a9d5b9f56647b7e565350d75edbcd6f7459cb9c1dd6836253eac575f433dc17ad35d94a892d5c1f054869a5ab5b69fc86e2df66d074ed3eed0c7a89ea4db22da0c201bf730176c894f9fd95ed4769857e5af6e12b15e6d823188671fff805aed95061ea10d12148666015e9a8027e124c165dfef97a201a56c7266666e1eab2848341e455660cf9582ee015410dfa2264719dd88f6b26ca1c2fc596a51fc635cc505afcd8be23b4b852e25ac72482c12811c5ba6d20e05f7b8a413aa662d008d37fe823cac53272fb370e1adeb0776cecb1049b0a93fb96a4d5b5102a1c1355c744fb15ec3c127838e69aac62a4429d5935a22c59a19499be55285f71c4cd03a8f29247f249b2fbba19adbc80572152eea553b75bcd35a4c6041764bbd6127043d049aaecf4923bf4086a4c54deb0a1c6cc5a506a836bf913502da8ad8a3f3266762631f8df7aa313c919c9fd3c730ffedbcdcbabf6aefad088c674f6ea9d552cc29aa73d8ce1f4d88d413c621a830dc784b0e7619d5b1bde14a736cf54e2cb0cd94b3e9e50a898f18152c3c512d3b909d83d835f96c4f8b5e9834ff2b33cb887f38529463c63535a4ecab44bba1a48a62da60087b835ff1b799b95647de09d1bdbc2c053c24f2225b4ca4d71c4fae09612f84b53a5d7ee6d3eb081253931d286193ff2206269a662333e4695e51a3e2346556d48cf508d691f5bc29424f0ef10e6706a62bac9a653c913410b6cebff5c4ffb413ce6f124dd4fa72899ab2e05dec6809612c3c48c790c4e4a7ff4690e49bbf87446215136764ea124ec7ca9188f7ec0732f615965d1eb6e59bb8473e5e29dd05d4c9517dd8fa966441b11514a98155174be252e3584872c0be6acacfe7c43536e9505a9452f1d8cb62d2efcb75e0bd3c55250be755362aac825eb1e8730c0f0c441dcceb89891068abee4926a3338df8e30e37439fb70850c54d165ad2a00a55f22ae7f266bda6d4f0ab46d36f659f8f2d483f1967c10891c10c0fa24f4786620210c0e9cea5fde1007aa566377152517fd444c06830e955ac8b04d1965f93e591fbd09a06cb1989dc730f5313b4c2e91aa9d39302a4d981962b8f82367720fc994d6a83257be9bcc0a8ef050104ac63e6edb2b62ed751e4c0fae331481c4c5ad84e45da9dad0db236539ccde24595144b3805b733d86552a31919f8b8eec5644de24c19d69c023ac6a72724822912432ad295d84a5583091aba467ddec2f3097d8cb8c248b7810bd8fecac33a555b582105be87ac182124821823154b8f04e0f168a9940ef77a4035182d081964d60b6ec99b1238ade2f652fe4d09ceae710c78e83366497c90aad6f2ffc043f9ce450fd444a5bb843469de9835e1592f2b262de73e8ff9b220d3d9d4fee330980f4899bdc2a0a8413bfece6a2fd4032fe93dff339d1531cc2404840ace6a1a6d5a7f7888e3bdfde93841f1c958fb88d470d58a409ad9dc9ba087de4419339efa430a42ad3dac1123a3b64986b40278e0b3b7863e2774a78db0960b0461a57111d4112bf2d2e5c34238991fd1524b0124a89b332ca8244665a1b9db1229d452802da09de336ff6c67527c2959945f46e46e3c0bd12a6b83d02f170ffd895989dd3fcfca4f816e19b19ba911c2f3338cf02d578713654d9ff7f6cd09f6c1c0c570b258d5d1aaa2e6e77aef9ea959d2dd4e85456e06a5f787707d5385dc18b6f42e7740b0b334f2cd5741a0c0d64113adfed11d51c3f9bd0495853acbdce49e8fc6aafc60ce87b39d82369747b4ef23902a8f7133a2b4f3c2ce19a004b26a1535d87efe4eec86a02aa24b9d40229194267fb48944c08221ea8df511b900a1e212374ca1ed435e97296d8f1e3f4f2394f56d018742a298507b06d0918cd2868f219e24553b54ea712b8b44c523a1a40a7d886bee9f410b12010431ef26ab6bbe5a0b31116b899740d57138784dcd699b5e632ccc280e03177964168a9fdcaa43d61b91720646cb25797c8aa213008290cfb2c7c1ef88e2d8c5d0367ce4e80bcc54ec4e7c807666ae07f5e989afe4234e83c164c4650260f68f6d4e70678af181f749e3f32f27a9e43736af905d9b267c1eaeedf0d5d7ebf8f8f07db2c4a106c8180d1c7756719e72be5a0333faa8b40b61e8551b4cd51ed8e8741e791cc10eaffc5300f103965d079f33f6434f385eb907c587fcddcbac7f51874fa8ece20df9c6385be6c2a134d275366236040f3011cf490079df7a860b59fd9be0ff0f85f19bf342aeb54a0803700727645cc9401159b555ae0023a31fc241b2e10bb3c277cac535e6df136da8c80c4709d51f50ca9c16b105fb99fcef9b4c56e279dd3a9454e791a244486084b27e3c584dcbf135a17c11fa807873d37a714d0167fce9f52b3367f38e72d99b89d7af9066637ebbb826d1b1acea9149483b1d06da586791389f3e5b3d87676e3fc9cf8975994c139592d1413ba867392c2713243fc1f055f38a76ddd9860980837050b9cd33301353ae44fe7849dff931881817312139f0112f17b83732a1cfdda860a9b8173aa12604d1f079abc7b9401ace1f463b23d88f70e048b1dd009e764a8151c9186da9c87fa0b44bf589b534df07864b464c511ca48a6f64281062cf3f11db53d157a11bb44fdedf6b11510148d4543350ee65dcab8388f6ef5c85a8393a109fb2ddd34b56cc86ddbd80b4a38e1066cd645b80c80b9c11c9828dd404842fd1bae931495f6c2db57ba929581240392776ecbd02128b7a29298a8fdebb34b885d3f436e95875f066f831007cabe50c8e596ac16f335a42a7179b077430a4673780621b4f3f09d6cf23789a305ff642b18e028985e50fd6637bbec64176fd219454c9b4a92889d008e231c4ce5d53b73b04273022fb070ce2d61b8bec81a27fb40e46bd9392eeea5583d06976fa5e2a7ea42e40ae8121363167c44da9431a1899db6e2e05cfe13c0ab76397dbb245deffd6c9c0181cd1b1f9766e9d099281e5e7d8e2e2d554b1c633187024a68f759b0d1ae7ece27b890161b30b370fb5007a8fa5ff94effa03e9966328aa976f552b974dc026890d7cffac23d5d4e0ac487841a871c99d6cae6044f11f72f4f11fe4228ae8aa7010d63320260bd7d40879cb6e2ec5e760ac7f82f238840656a575b36060e84a9210348ffd0c4c34f1ccdfd59bc30355ae5d961c8fe1ff208768965b7a03b4a64f9396634d8cab88aca5b5a2c54cca430d2d7ca9e9cd3f812ffcad2bc71025f8e9e8556a4fb999b95d853892cce60dfce7b6a23b814c00c1c4a90c22a2f69267f601db70b9353e39610788083daec5a6fb600366aec44718b6d8357c7800e013f48565b6c1c32938bd767f4398a10af4623f11b69ce109c3c01103c5afc652d4d4885403aa6093df0de3466325b1ce9efd2702d37b1fbcd8b886b9901d91b70660a024788d571d3aeff7637e2111c8abebb419e55c3aed1db7f589939a1b628d40413f0b94a202179175cda0990b2d12112aff63f98c128e6067819d899df4941efe001ce3845a392c86b1d90c26c7e05324811f8a01c2a6c1d478abe56cd0e59a648d240dfbf18d1acdbdd45090b77909b476cdd6c3ade73f2b26de0a1e17f2b34de0e259f03f2b2d953aabba40c41d3679c6dd1f342c8b0879bdf1b376e0802213f2fb6303fa07e7e6fa08b43068f304fb984374079341b1281973988876af062708c7d2ba203dc2720d1182654e7e8b85f8d3009a8988bde2220bdd26c1f5688177761c8e810f878f603a8ee20296d1085089a44f5286f6aad466f39ab101e771f64e1bb46e84d358b98df0c3fa885278429765b9062833c1958481580b92824ab48c6f7b0e2cf4b5818602813e0b8a686fae8abd1e51aead783115f0630e69fbae4231eb57520fcb2118b67ec1a08e2328d396090f800338966591665ae8822bf9f36b4f0ad509188993a8703e948c782da28d416341fd745525c555527dc096aa9c4a97263ade81d63a3ac3e265f3933c7deada6c2472a5dcc1d499d523b537aed84b152dbd52035cded5a0f9ebfe343c54443a0fb1677fbc88288ce92aaed702fae25822116542bfc9f921ace369630b8dd6e02beb042e7b024ed199400d5ffa718662bb2d45e8dbcd8e76e0ee6a3eaeeb0cb0c81dd676df559b542e6da2e01169762137f592e7552ab2deb02e04a072d0f65704cae39dee472307dff4529a8acfe287608a7e91d3bc856131a13bf82c52f89331c0c9680631a8d52c01eda701b7793c11bbe4a136d90581718846758098e360b26733eb438e6430744816da24a00887a1b6ffdfbbce05995a649559057c525364666f8d593ebd71dabfec896e278332a08ffe53cc14148facb8df6973c1bf249d20701e561809c2fb50b6ddfa0387856b768f311d2fed4754034b672cf01fb8bb6b98666006e669943c0df5f2fbeaab3c2caa767e64535fba3fe4b59df491d3fad7f69269f7209d589384fb5ed64f31b1a150fbbee8a7a992c9ee96792479448c392c69867be9459d0071f158a790a8706a091a421c63ddcfb549b2e864818788eaad88485037d0732b8819639bd7b5af66d16e089b758038700ed345d02e43066473160aad0341bb9b648eb401a61a07a18b6267ef74cba88f565b0688d6f6ada84aa0ce905777d3d475c4d5c65b9a489a689dd3d73af9f20c03992773724e08dc6ffab2daaba45d2228401badb44d55ae6efdd8dc793920c434d093346316b8a1d9b4bfc2b7bdface54c8f7543bd2edecba0093c5fa499fbb141c56e8433202568caa31be521c089ae93d23affc25dc764e7b7e678354750b429bb0b237858263ad47319ff7d5df66de8e269bac35a6fcb8e497f144bedb63c8dfc94a4774ef192def443345fb5dce6e85949013c24ce550506dfb7608d685209c713a16a306456203ae9a2012ca55e4c33f58d4aa954816aa026aa0e673026d9c0c440ea3f7f548a9c6df2be428f9f09e7babc71265dc6685b757a3e4d12bfb1946922c2ce74924b33cd083c1169cd569cee93b806881e933ae4d22eefda77dd64b646ed5bf7a5720695d660668436349fa36d269d5c6a6ff7149701bf57ae2a90316aa2f602e704d842d4ab277cba5ba2107eafa31f41e271089e3fb8630419aca82f8183b3576b979d5307840c3de9693cf79d24833792fc57f17f91755586016bf9e6fd861d643fffd71eb430496228704285cdff4c35c10458730eb6697ab3bb1282ccc07840c6f9743f189556cef520143aab744a6193d6a0530eacbd3a19490a656e3e097059eb6bb758e048185eefdfafba7c7e1a75e540f5b03facd3f8960dc6865db71262e57ee216363280231878be9fa4de964ae49b5a3e717bd77d162c5be6db9bf7072593f805946e3be31c0714c6f34ee4a9382d0125f4fcb1eec1cedd5ec7c90c2863f071e716dd0188cef7e9f4085145421c6082a7c364f679a38b9f5fb440f862818a64d2369e67ad155123d802c3e995ba76814c424c965d1bb34403df6ef419218a5c9930d9e84fa689ba8dab54002127becc2336c070439262c4f1402af5f49b063fac5a707d6c9272f7a30144cbfe78351a2ae99a7e21bdd10a51bf46394d9d2844cddb8de633bc106c855a3ca22428fbccd1030131d0550a037908a0183d38c96891c4d7f0021b64a30e921aa5816fed561071e3e7ec4a899b81f4813e111d3495b24ab849ccbab728a696a5985b9a5791885183d7685fe0d58d9d01795e60c912ddbf23b152d378410e918fab75b37dd889f5c1e266c0f408c98d06e714e16f287608a6438d48c0a11dc993f7ea40272c99d4d981c67211f2eab1efc6e7d467d11494fd9a2de0000c1f7fd16374c719a4b18e11428d2cebb4cf22c97014d7d919d4bfce7fdd3d2aaa599c5972a068af1f2e2758444fc0655b80ccf83bd01bd6ceabb824cc07eeb2df6ca4cea1c4122a3554203032c8adef7aaf06e43200faf63858e12eb322fb552b1f3319f40557b39aa12ffd0fa759cd8b2bf9bfb3266340443f215e4e1755ced527e71fb3acf5ef68a61cfdeff956c59a0b100d5269c3dc017b2d2440fd4a0ec8cbb57a1ef1d14e61275c128251bd4673e83124b07915fe4fa1086d5c220f31d7e1c494fd064c9ea64aa468d8778d1981ebfe60dd8549d4bb463348c325ae2435a1680ea02a664ace8e5a6665eeb817adb9bf63b2c116524b4306aea40a38bc33d4288d02055ab99a5a923616985c43ab2aec754f573612b40dcb84538d21cac6801e3e759066d86cf90b5c62b0edb54b98f119e9100bcf54cdd688858aadfd8a3d877d4e66e58494aa12ee006d17bfa3b6be1d3d53bda5c6523b8d90345d0f075afa95b4748761f03a5ed6c557bcc31470a55bf5fc093408331c0de7aded906111e90cbd6fb825e0025bc0e3216664a8e10ac5c6938d92f3d7857b207dc31518e33cb139a0c9ed342d66df325adf30fd062ac0e7e003a19027e9a6e77cc37fa2cb3cbee166cd2b5b3ecbe60927e20ff9864facf2b843fdc9e1a7b81513e8bf1d0787fcad02c087bee14b628b8d2de61a9e49011df98fc95e34535cbb4d0d5b9f26baa37bed309cbc11509d1b6614a853bd773ecfa5e2b82c3eb259b9084e3fb52f6dec559ba1b402f3d90dfc2b4db2743cf6d3ef86ff8f96e5a0967d0f490cf0fc5393d4a5e361a6f039e874a5f4619ebc5c91f31e2a51eef91adf5472ca1ead6f5dc0981c42755897f3f68a9bfe1cc206091a2e723d049f0dcf2172c7e3c60da7fa5de9112b7770c32e6b48e6cc14382c9d98e7900ace7aa2b6f5221112ca2fb29f0048c7865a1db53582c07f3b9a520f09fcffb8ec5c63616d76580ea289fe38560dc6fc6106be0b8fe4b932fe103839520cb67d7ac34692b67ed9dee945ff00f9a699355b2fcad5aa1e103379f734ec088936bccc545b7344e3fddae49df290d4a004f8b1f98a60e5174cf2d4191cc19cc7f5306d050ce69dcaa212f2c1ff7555ce700d9459d666a7b89183a7028e7a9cbf5d3ee4cba57006ee5bf7821edbf27329593d1684fdf43a3fdecb7bd1c67d4c6b748cc43e0bec562dbc12362f8f549c7885b019ce1ee2c68f08c3af13eabbf61413e4d810852635b6d9fee4772018434716d0985b153f74934ccf87fa0332e2ac5cc3057323b4f4311546c237bc1488bbbd4757c41916f1bf02236cc9016e9f4fdbb3887d40a8743f5bd956647b396f1096336845f5efe348c58c623770e581abf9f86c5d4351f75de9081a145ec962115f3c9ae7a4e404bd5b47d8d85f1ab1882d137c0779c342b8e78d09d83adb32402e45648c9dfc63d79cb7593a2ce2473a3c0a4c1cebad68e23a1e131b5f3e303479ac6bc73c6b49746b888b5765e5c411c05f49f27c42123c846df63e9f57fb83ef44420e1a9dbf8fa8976ab13ed0947592442b2645f145c93f2fde276baedde46d7709b04bd6b9ff582d591c6047144b0a6456db877bb0a0dc13af8bae748f7c2a367c96cd9d880781cd3459789aaf4eb63e804c578842d73e2d197e73541b4c30bb1da4a4a3c341178debe630759e26c509861083b853fcc62c524493234d60a99c8196f35854cf0437596046492925322c92a99063b9babc6684591f9369e17d091931fa82d0d7c71f596b97bfc4b58af165c93541f9cacdf84d47a5f32aebb69d7ac4a6fa1dc4df18584693dd353f3f76d6b4df8f49075b4a417219185d09df54d6eb68095ff72f3c3d2ce611fe597965cc6ca7f8e3533ec28c7a41d1aec9a22cd174b3e30d1f9623da77ad0c0127483fedf2394a7021c7e879c40dfb1d23e7efa693412499464d04cd630f4f095792253cec383fa2185a207545f4b61b9b0e5ce1cc35e88af94693d24cca2531d403ec811ed9877978f67d3537a113fffc6a2418f9ef7f24120684d3112dcbc0eba9b26e6ec209e68200ffa0d9847e42ec41af909f671320c2bdf62d5754009d4384aff4bcb5b77c5d504cc61abdcf7821f89c4e38131acec733dc840624addf950201920d3c10109207bf9b802160b8ee80f390af4f79d2eae0a6fbf7324cc7f4ad3adb289f2e8046a3c104ca7e7d05fc21a83cea2cecc853d27b143b1d2dbcb37d18f8d9a8c3951ee6e771c0596626e0e51a2a7de56af0bc053f0c68584fbfbabe0d35a5b49fc7667aa6b6e2861c13ed6996736f09345640341bfae9993432a0b17c21d2249b2a9a15f3b5a674b24a1ddf63ee33c93acfc4c275a6e23df3cf2e0c3a72c7951243191b1558a8ee78631d68e0c93a7687a05ec1f078bacead65f8de148945bca8f3c844a60bc850f9ec1a636bd50902b181e3b11add10f35dbb4124289fd1040a43a6b8b07f76a46060411d80171cbfb4833f25a42b3fa60c10d4517d485dc62557bbf3c8d124c47ab472ed3d8c7490ada54dbaf81d8f09f9f9a51f622c76b08510d12e68696f4e283a845c683216694633d9b0ce0f9155f4edd1dcb508cb33a47c15437a7424417366c200cd947678c104236b36a3300f815c108c3ce735771399c65f24b0a909ee975706bea14860482081ae645d81566af3c3dfe637ff99cffc3d67166825769d2d9f31e915c73f54c86e42514819c3852e3df811ff42dde42166b04775b8d123e473265bc2c20062cbc4e94e758cee56a9fe130cfaf094c4185fde306af8026685900f596381ec687654cd5b168612fb42689f17963f308d9b7545a1966487d0bd3cd80d1e9ec18487a213e46272eba8c1611e425fc93dc5beda178b4f037b5e37b05bae793b16b93d7ea5fb22e529861dce65eb3bacaf08151ee526be0f2a4418292d0706b3c7f695ca4a527dca2a25f4cbe07ee53580181494f68c398abe12457d90aa5929ae8a5a61c36d16343c46c22a873eea134ba77b4dbb8b98f139f3e35520d4a102274501d78434692847a9ddf032a0e8ab1d9e481a23854b864b1b7d521cd4b2a98a4f4d840882d3714385b07467121621f7be2afeb8c1be14269b431812ca66416852649ae7c8736fb26c8c83a545566f37a2bf608247c2f93d2e960e44b85e84b12ffe692483c870f8ca91fa525bc40f7675ac4917c80c1a9287862baae1022b2598bc03d0526af2f6aefe0f4d454fbb1866da6534fbe9f06ac382ad1fe52692b184d2803c4ddf3dc32b3f61f43440cb0c9c9686062c1fe97f2b7eb267e279ada61395f947b7684aec56f65a4be49ebeb0bd962034fce83c2eecd3af60165b58ec5a660d5fa460f96503591a3d64248553d246b2d45ee0b167e450d9f2c333a7825c00cadd0d12f061e26f96552891fe686633c46d4354067febf7430a825843734df2c8f1ad0ff2e00544fc8386a3f67a1c38d4239615a10a3d290824f72fbf8cc9f671998823fc3cc3fbfbd3c58c5c789ffc6de1934a50be358fa81a3bddc9cfec3362baf10d0dc72208bb9e6becda5af6579fc50c5432cd8620b37c49b3d6da493a124a8349a19d8edff6b3f8bff084c08b9a56f732d6d7b9ebbbd4d1ee27832c97509d11abef7c06b78f443cb2448f166b154d69d063b156c86968bffd7f3d4360e41639937ac34998956dd86a5aa7c4d6b7dcf0b863c4d2840fb12d5dd654aa3162ecefe7f80bb9ff181ca66a81a51f8fe1e19babf3038093cfe7a74cc6043b38a3cf42524984d118d6094d0f4482c0351726709d22f950596cf2401858a7430fa2c46d3e5fd9126cfbce52b43653371b6f52df334be9fcfc5bf0b29b9711f464dafcb9af989e8b8dd5c632961ad0f7ca87e862ababadbae94c7c4fb412032ac4aa79e97579c760ac375170cf3c692f5317ce859294a97e9cbfcd140186ebbe9ea9851dd92bffdf39114ad24f7b40220b55e20c0db112ebf2ad804f895183f76c728ae46933ed0ccd9a6fd42c86a0f94ae1a4374a1aee1bd275742152dab53a1db8a67f908c719b15cec76aabb42e676805600a0a85397db06b73196d0d7e1b6ba8b8186e5c8f42dc11815a1abbed98f32c356d91f5a89427081d1919967121de6007c2720c79dcdf222f187b534a092b828030bf1abd8e9e7c6792506f8989e3eb66a5a4e83995d4b270d7c2494885d51cae8aafbec6e1b731fdc4f8b1e8668d7182a04501d8b9281c88b4b4fa4f328c3a0b8f51ee0619557358cde01fb166ac159b460946baa729f4832a28c744bbbcfe1f3efbf33c0f3e174a07a45c970d7fb1befc7308ff897a4510fc1d842c85dc068df529c8757bc238ec986e0c0f10abf97c8e7543cc90c6a162dec441114a1604ec9cf972c4924bd6b6c798ae5db8dfa0673126a287d436320abf55723f90623655160272c47e1ae475066b4ebc40bee289ed2754f3e5e3d221d04f54f7de75e44720e30960c8178818c32e9d03000ffc7cd9c6bda2b5cc073a63fe975ec3bc0b829e8f0148c1ebc64cf9a142e5e81543cfe63fc4771692c0797bcb612c23941e907e426f13d5b00090b1b40a96a977042a9b57130e971afacddeaffc0ef7e3b9d53eb9acae20c2c7979198863203f89146328df7bda96808ae8f747e3539d462ac34c4082d255c37ffaa8515d8e6524b6e8f9865c2fbde536a7ab71ecefa9612234b6303494a41853e0468aaf5d2dbbf94012dd5f624dbf4843fd18a9c0092ea6c59846f1839ebe60c76990e61b191fbb65712d59b783bda2193cb0c4f27330a00a5e4aae5e18a20e8bdb80c30110bbb56d28db3b13c97220412b69713a778346e6c759350c66a128e104b57bf77d95c6e0b7572964d0feb7a556bd170b70a9bec1664f2cb91596abd163c53ed008453a6b2b5bc6f359f0e2e25be1ebca03a60684a693e52667d450654cd63e782ebbf5be8272131d5d103261638ef50ba070c0270fc392c73dc93b0d15f4982bcbbb802cbc6bbc103270d04ac65beae289bd0d847549106a2d8e1448984ab34b9bbe2c0ebc746a3b0f47bbf31040a17105661baa01383fa0e2c128f1aadc5fef2cc3a081d77efe680f6307699df74ee6628ee44d09361f59f179a16f6fd9a1299c0e62b2653a2ee6edaea7882f699ab3070f9eaf5d93547e42b6a7629f487217bedff87515458c5f88f3cc54f687cebb830c10b4a71d086466f561c9c71e1c554af721b24a4dc290dfe0f02644b14777b7803132a8e74d84dacd84060afddd8d99f169e12b557f5bd30474f998cab78fa5c5cc102255573ed7058e56c38f36226dd7d1068a3709306fa2a2589d47e1cc00c24ac919d23906cae9643e2b42aeb83b03f43305a7625c85aa01aae3b3324323dd3a976f5446644be66b834cb2a6d73bbac45cbb56732c0b51a160989e2a6226b7450068c267ee02ca07d7cd02e1f5820ec9267aba256226070a311110869120225ca00dad280a0f19c512a800ee310183a28b0abf1681a8931e6de9aa2c96622419b8c370aa299d8b97a1127c7fc442d6fa57060d8fda9235f569841bd18313868d18d46983103a35aedf767956ad0f1ea25000e2ec0297dd13896a295e28f879bb7e7a739b75262e70e45547770cc4b6425768e20ff912203cc7939170c586da188d2daf90a32991f57c17fe38c78f45418011a6cc5bee5d5bbdcd74343bf785f812e6050c57768f2a8c1dd8a6c320842d517be93bb51e8f2471d6d4ac0aa54ffb19acab980d608d52335582017a84afc2ce8fbd9aa1c5ed7765ec9d5fb2c3e1115ddc05f5caaf420e29aa222d2a7a3d4435eff5b6f367b29dbbbb4be84972b77ce940b43c71ad62948893323b6ae3fd41e88e4f4fb8d1d6e6e2d6589e1dd900892b7555f36dd61f44d7d79f2793bf5b5b0f45d0099b941aa8d4e1b17c0a559f806f43d8ed2e59a8b7b23314ad16726a80d6cec51bdf83fba11a99f94c3737f81db28c8e29fcf4a18a3db41a9bf3a6ee15471c735d704c417d71abe6e3c592082dd38afb87f3bd90f62992be3104a8215dd5a81be7a5134445f6199756ca701a8eda739abe72261199b33d1feb7ff2014c1bac15dccfa98116b0acf2101af2cfb8f6e28d51f73cddc6806a74e98a4ee03e4b349040e43e3c2e4a3e79d09c9770c982734ab2bb8fd653af686e274b492db3d2dfa7649a28b2010be6bb75b87032c6b81f1c62ce9271c5fd39280c30f7ccc71a0f78ee90ab03e234c3ffb912855039509bb371f62dd1f87f1c07105f83f65fc673ba5b440fb0103eae2dafe198cfa64778fb9ee9ee3d884dfbc838785d36a63995d2fa01b5b3783a361fd5d3dfcfd46a58f2dedb167bce497ec71f4679f866a33f2e9712eb2cd11da378bdebe85a7edbe696e7c73f67b9567e3a25291dd4c65ef6ffcc407786b519b076c35ed8c7142cca8550a5cb89d06ca0766103392562e918f184468a57a9c34d2e68f0bea8188b74c6dee6ebbf3cfef480569f29e4d89f4154f2c1149732680a5eaefb73190e91556f394548b5582a4928f1ed79d0ee56b08a19ce66badf551e81b94cd60ea7ef4c21dcb27b92286b8566f904f4c9caa86f170ab62b9a371e31c8b9a2a29057722f3858061d78502a8c45b5d965b3e4b81567051c0bb5529158a0c009bc352957bd9ca5c834c3f8a183e751fa9b0d46f3db2cca6301b27ccd8c76aa605e32fedb89b06cfe1b6a1e2113b0c5e51d2d3093f0ab4d2d0719c4f94df3ac69d7db095126295c7de3bf8fa0751717938c0d53e1b9ecfa6206f1f74837ba7b655afff71a7c00629b0244c4e9052e4d605be20b3dee9aab9f60ff7eb4bdd90b4332ef2e7308a73ea654fdcaa91eae2d4c66a1f870e44b4714f9cff8f76bec32ad5bc991cc68e3b3c58187edcb470bdb66b0c37e52f36f32cc61ce446ef420dd6d08f5e849829d6689521379fc0a09d9cdcde4d9ecf17d780329841e65e37f8a07a7dae48ed0afb736ac668e38dbee7f1a5298a18c196d13c3de520c8cf228ab3c84f8ec98cbe68012da6fd55b1960b480b0c01ccf7eedc6421e09f3d50d27d4df31da066079a0db595339f69c609010388b36a0028f26caad773c0991772172f1842f5c16c924e1cb9912a1461de14380fcf4a040f086136220c5e786b4359099743e5aab574adb6abe82553385da380d3623887139b32b9746f3928878547a9d56f7a315daca4db7875e1caa9e1d23beea286c250790586b3dcd4ae809182e8d69d66e5ab561b9850b3f2c6eaf2450da1ceca1b57dd4b7953fb83b7f2b3c295dff3c9f9815c333aac31e41196cfafa5f7c66a0d34af283288492d07b8d479e0a6e441a83c9ae95d3734d75dd073c10bfaca36e0cfa1ad35ab1d8ac5339bb3eee11e331b35b0f5ad575488ffdac87cbd80a61a602d35f086912b8a1ff5026e03341728b154708d75e53414d04549386ddb6f782e2d27a8462f76d5e7af61f3406ac47172ef97eea8cf113551eb39467c80987e2f1c6283f462a5d638c823a5204b4507d0ca8e43d55e0ae7bc14d384b92c303169d1fc438890e2a343a87c5b76d1a795373297cf78e6d3cdc54e7d7af2edf514c1133e546880af84d42c8fb72b98c69f7a842da7dfac9560ae672976b30367ffd6b19926e466b89fc0f44f306d7544f39f2297fc7608e02496058fa8bd974f0c3f0e3b1c2550e6eeed3528fe9944277d524439e4b4b5c6e3cade62de9dd32902f817b77a824c72c6559ca90834376749231e13764a5f361daa494ecaeebd02b2276a4702a6ad0644b75693804de2de5e06b2d4671d5c3f6d383ea3c07463b737bbc1a6088caa5e4ecd59ed4dda4507339645b7ce317831e564501761c3b3b528095340cb88bcff44d932715c98205ea8a8df583dc18831d6f4e7bb43c629da0a1f00b8e1a76be8e1abd3b3800b1e8b3745b6f981a674e1a9abfa1714b512497340c40aa47643996e4667c05b1392b18a7f6a0cd82a7e20f8588bbe30121408f46de47498f3a8511b0e4e5fb0e6534d9b2bed3bc076ec9fa38a453d320b5e11ab0080524879b27bf8bc1d5e0da271a418a9b66db14bfdeb696e008403414cae88f308982e1ce0a89a93cfdf3a2a0c32897d7a78d73b17fce03c2a0a3a5b3cd50ac6c37602383e8bc5b77e1f9910f61fa5cbbe8962251ec8d0864542763e4cae5720cbd244afe08b7a6be81e07eb53668d28e2a9adbd254651aa9a28de956212c44718a5d27b0c9e964258490d6a86e07d9dc113e64f17d6e7509b6e32c028c9db09417f3e8e1064d4c6e111488565469cb8fcd5054c70c1731054cff90a49f6ee77e20661bea8e725ae6d4aabb040d49b4094d891805cda5c8064968168c86c436d5d091ddfc7ba5b94383b33fb3fd40b8389d1cb1588695180c0ca1a14985cf3a661a25380935650312c78426f6f93ba3b985c95df20a9ae9fa2da4cd5a4f62b470eb2081e1effa4e1af0b1c9bf54d9bfea5f66ff6fa089b52f92243e7deb17d5dba880add3b88412f50272e74831393cfc1ac992832adb5153a06566bdb421af1e8546c102e2bc24272f28a1635b518001ce5b451c3fada472323276e8e3eaa7257a3a71d730166ed24c5475b11070d0a85614623bc33ac776787d22a38d29e9169c98cc499d08d42182fc10817e15cb4bb5d13811afcf319115bdbb724b9706c76699fe01cb7423ff6006e316c43f77528a0d2952f78e6de7c1163f7e7a1a105c28c02fde88feb6b847d1a17e8f6daa90bea275416a99f5506c28c50302029adc7fa065dbf89a001ec0276a9d8eb948d339016df462bbfebc5102e540f71aec7d0d621460840b1aec76057062112f5b7c23717b175a349b0d5d1b174aa1e43da7ca44ec9942613d17528d0cce0b56365be26d30de01c27502399eef4ff919c44081e9125ccf9b6438c323f2bd287304289a342ac574cd54af75acbaf3bb041e01e80322c0e24b5979307f8db4d6c3c1ae5f0afbe9396a3029254846a321e820bc19f889864b4465a9715a2cdb1b81061f8a64e324a000e2406794729a71708fff945d12262db37e2f1820918e4ec1e8c5d60ca1d0e66dd20108af2e36622de8699f94157e5ddba101817e3228c5bf7d46d59e532add60c75946a4598d537c9659330aea34b16e1e6a062c52b82755884b877e1e8cd68c7d5ec94a8598eb0fbf8688a345fdc80d3f27c80566ab1878ef18d52c3eb9fe5ec9530b14fb096b66e999a87c8e88115e184efd01251448beee871a20db5738600b5882b354be9ce8c92024d20f543d361cb998921516647a059368da5aad5c695f19b717d493cce0dbbae484f800b4ed2e2b5d8bd57215c558cbe6aa3fffac83278414fbd6b7c4f263360900f07acc89a3d6e348b353237c0fdf4c9fda71320f642f2a321110487a86f45260250f77d3d22b50052e5c29138f0512378f008d50ce1400dca77924fd90006fdb757574942920bbec0ffa944e2055203368be480cd65ec714620e98cd335be6b86098a88e3023972b6a71716573d41b4e56d11e5d0548b22bac8a355fb697421a0a27f02bdfd4d9f00ca4d8a3dfdb0d0b5674e09fea599568b0232edc074c57cd5bf29298e04c8c0571d9782000d946003b84334db326d6b4303fbc6ca107a006bf66366f479e50bf1ae90676e1f9cb330122d6cbc4783685e70efddd6029cb3af7f840554fb3e38a48bd384a2589832ac5a88021ca7073f0a2b7bf71f15a139a0d913ab7d4466baf274e0f3b58e3f1a916df9212a6559b30c561d762e92c1d134d9187c52cfc4e006346b8006dc917ad2cfcaa1ab6d21d4878ea83631e1622275b425865cc86e4e6ad7080c41bdc104048c3787f2509bb23815adb6c370959ce7501e0c68484b4699d1c93730adace0a88ffd5246c58f3d8b320d1febb67cc8bbc83c527744a320344195b6b27da8d34bc1e2bde1d4d0acb504af4ac7ba88f7afd03a8346fbcc99c9bf74dd12dc403d07ff9d51354b91f0973e9076dca180209882a71fc12b8a785bfc7c1fc36f20366a99396a63b14549762fd1005747369c4451b0d5fd779c3ea4ad797cebcef1596ba2b0be5cfcc92eb26643fa5bfcb3b0581fc04ffe9ad3f9f09bb1293e044d6603112deca72c58b2a43bac6625edef0565ff123bd2e8defa191661248a0f7ca6ed63a92b564da717563f759a52ad964b739c3aa02c9b839157955b53538b4ee08fe492bcdbfddcb94d6016c4d3a8069ca33c6cf72ff8d0eed2621674fcba48eb54e945690c2d84e1ab8138d5e60cf2cbee024542893c731e35573ade697433744fa2aa92c9d1ce942536f9637ab9c0e4c2c550d30412ab858dd40122ed9a6758234764025999c809f76709d1fbfa203a11842aaf7afe6bc86a56109ce413fbfbb25bf577dc114d284cec41e73d25c02b58de173edd9fbba3ad15a70b37d0eb532cb1ad4eacab635f0a77ffd5e667d606ab77a3f3a1a86e1d2541bf156eacf13998b345972052bc05800b222c4bd535c96dd0fa0e6c9d5d55de9efaf4daacc59d66bad9b920435079810c4aa374ab2b2926a18f9883bc5983d68ffe86551c22a9a60ccb811b06b1c20996ad66a603893238ee111ed2d47d7d372838ff293246703bcad9ff25b05e9498b1364f38fe6efc3aa9b985ae3a5c505a9a7fe56508b59011631d8f8cd01ed0e9a04596339310f17ebc861f50220b1b35d0be2892bf527a1bd1433256e45ad570bb463c988648d4e80963ba8de9380eb7c6aa6bb7056003751b82b843866ec39d09a4ba31cc52cbbde3b8273ef8321cf1c6b13daf013ceef7469a20a5a98370c304b91e89747cec3d0d4dd5cf579b42e987ecc05711692a978d052f45c819a09fb6386421739ba10d5bf5b8151d6a91817c31ff4bddaac0ac51377b33ef5cfb7cde7c9477ef6f78d44657a43e83cf455e43c323c2cf1852cc2f35242d2e53756b3767abb8c41d2184baf36ff0e7bd68be3851bfcedda7f6a92b9cedfc39a464062dc1d69b80baf3401b4568204e381d71480d594c5323ec081ae08589ae5b1e7d7b5e866515061d7ce5b546226a6779332ca4ac304c570286c6389840c843f69f25b58dc980f1fe37cb64502414c90691d04b40877fd5e969089942597ec7cfe8184e000300c37d4829da576e66b9bd1f97762245ec9c08816d9c6b40c69b674a09b92bb7e603dc927d241f6f07df33ba4fb76a5a144a6f08882db8c788c984e2b3c2e869e8fbf165c771445966a6db8a8a148c9adf526498ad76ca7cb516221b08ef4d473bdc8f5938a87a62badeba2e8a637cc0544fc2d8e0384a8ae91af0182c33dc9ebfce440dbebd56c15e23e543e6ab4bbc1c8173ef1075ed83973a386fed2f2595da485e23ba12c0dabea1cb010fcf94a2819aa95a5e96b07ca7bbec8c87e8096a0b224f193718a88c9e9754ad32406c92f1563db2df17e98c33495d58d3444360b9203ad15f7fdbee08ebb54f4a0b41bf1cba58c8ea5cc21532f7588c6b7951a2354f93877a69d6d140f2954bec6f34fe6ef7c6429b9387c7050ad7e5cecd10b713e7c5ce89b718ac38e32236c5d573c4f470e35c58a3b62bd248d463a9a5c148c9fb03fe97ae37de701cc6e7e2640a571df27bfe91dec82b39956a76346580f3c6cbd2df9ced8aea34a7bc1a1e2fefb9031f005b3d70931fc0528f1de23fd888e26af8be88085d915bc3101b93d016b78902c0cb5e57235113a069638b4ede56eeeb59c5bc795c0e7a8dd745cdf1beba0469863423fde9c4479031126d2f845c4ad675e4acc9a3ad62aeaf04277635f042a4ae851c30e2eb7789a6566a585fe48fcf07c9f33b6f6de1dafc86ef6875b6b9d6084091d987071f4c9e9071ff2b352ddf36149f7f4199bc6eae444ae0b40b9c5f8790adb62eb77357c7f84d25516337fb00f0cc4f0170ae17425ec40b3d9c29af468906bf8b0d4592868bde55850937df713cecc112e6acbef87c7250fecd961deb244044c157f477da2a06acb035ef4639c2ac229565f77ff735ac0c1254f3113b628af2cf7428625626b2b8bd24c96bb0601bba09b8d8d65a6e46108df9c3db45844f809a9012dc2b5e24d60d845100b3912bd3e007521a3106400c45e27fe23b266650e0941b9faeeef5d4789baae05c8983d85bb49903302443627343c7dc1c523b04c407769d7994abaf25361689640441679dd4551644d6aa8c71e37b49f5c6b0a27ae4e7e9f2afb51882dbb8a9d72b946aa9ba4d62ddb4d5f942e308c5201a4805220cded11d87192bcb401d78d869b5c5110a9496bbf12b321bf4983762ddb56ae5c107dc0a5e64ee1399c9b68632b5b34ad8d0941388cfe681713da18ca4c34e14290ec266c25056b745a3000bb08e346f86d13e56a8f6e116756d24db15a56a0128ce61a6fe09d51c81b8039395f2e139375e9fb8a5c9223cd81284bd3c2c83f405c1fb1a29f25933a6d834f447b9ccfc2f001c5ed7cd2547ec6270511cebf4f0f4dd2e6334ad9a4b012e62fda936469c35c23cf146acca0e0a29a35e3d6e80552768e7922c6b8891c91412cee6113140aceae8d42ad31cca0bae39194d9ebc70431636582983d8d44d77436f122bae1e8a594c60d8e82cb4a57c814e2643f663babe0b82bd2d7ad40efe80c524cd34b68e0ab5be4415066ea4bb4b5e4add241a54998c61a14920b0e86a01fe7743605a85a1802fbfd7151582c891a044959ae95fe63abe81b542b94fc06c8d5398376da5637d574579b918f176daaa70b8830fa52df319f93da2a5899dfa64753e007f58540eef6e64262ada6a9943f3055b8cfe553403bbadfe9dbb4062dbf78f0b0deb3de1f2bfe39d203aa453662937b0c63b1deab8c6f7246f6f280ba458c5fbd94aa65b6a1850c8a5b01441899027f986f119a2b262c9ff91a7199b68da8d866e2d69b34392bde66999fb482ad87d68dd9edfcf9d7af6a6dd85936f06154e2a117a417c4f551df1051e725bdfcca7c0ae13d97c3710d8b304cc2d026eb09b8956a26d5bf0bbd80ccc5cac67b04a0f14509a60315fff93ef67bb989805f26656ae0580fbd199b5e21e2a7b9faa071111db65a6132ef7a57515f1588b8aa3b4ab10f3cc1cf0a8836491288dce0969a5b0d662c59316ed9e470f72e7338e30361d24528ea04f46577a6194ace8aae806e811dd1043317567594a677ffa107886221c55c393f814d9bdd726bfc4e647416bee27f8f8cad5f2873c135798215ceda050a501a176d612497e9491533283defb68356f73408a6a85cbe0abc73138d960b7a5ece8d9e3e6ca6501d332a36ad504a130bd0d3fa80579c22efe3beb8d2572886d03c7748ba851248819631924d7ef080f966c83ea04bd53a17f1154ccc76daf4b3b8790f9e573f198534c6c7f318e6e18076eafc07b97819190b182512f0d6d2411906da628717dcb82d8af0384fc96c9631a10670043453ff5d9a484282988668dc68989285d944f7f44cb5c4ac0ff587f371cb358aa0352a7b333c9b6110ac796805b30ec8d159e9f4837970b62cb4a91c89d976406275936d5f559f30df154ec97c45ecba23f6167625c4a9eb2168721649d135821281c56678f4589a3fdafe3ebbfde9764905a8db133cd0e90ec80fcc0aefeaaea4df9f9353200907b43a2260e79f161d4da6ac9990a33aa7018371e203b694e27871cf6c7c94a5199f3a5089420b70e539870d867d078619917477931df99a4806ee5b3c5552d1a76998d4222129f64479a21aed8d5d3aa78950c8320ca8e87f06bf6a579740b22b252ce1c752bfd6945d3719d7b08c24fa96dec2f9d1431470063e3624c1b2b8a2546d30da9d9baee61ce400781b414625ed0806aa8c01d834817df0144e40d274abab57246933615079a66a87e722d11afc281a545fa6afa1e6351a4436f0f7afac19883fea6e775679cd386c7b4e053d80585417f099d171921892fa473a97a7fe89ad44af9867de489257201bb4f3863b26be010fbee679f140b938fe6624ebe8a439cd8377cd87f7cf501886f51ddd7770d0f571990350ec4ed58e573116cade8713b9f48512e9a46ecaac750afc562520f4ee7d2f2b12971ba4e79e19cd994b9c94e3bbd7475537e4a707b8ad701288e40e8e2fe244cacdc1e983a63fbcf09cd225fa047ed93b91d264e5200dae113ada435c46bbab19cd081fc82bfabc79e88ea3d0afcad68d25d5c07bde110462b45a88710acf4dbc68719643ef8a5b68189e0bb428d985a283b123c2b98a418c6cc7b788d78fbf582eaa9ec73b7cb71b3c6110bbe32d4b51ecd1e5ecf4b0e90e573669ce030c951064db8f5f0bc57fe52a16fe542afcbb655d28463b1637780e481f131a05c1369644c42c01ebdee62a6c5fd9bc4dbbe279e6310af5540bb42cb4e605552d7c2359fe15d9976b70e28e20378ee2deb13dfd691d9c5c04b65215dec6c95b8af3b222cc5fcd30c32f19bb774a9e8f259e8445203bc04a6b22267abc49e6c2147aca940641ae3cee17472af8d55c89ab2c1f5d09fbf099425db7da91bab6b36fb255424fcd3af9132a2ef63de38347d3a133f4dcf9e87a2ec9e375c8eef58146380df1b15b19c41472aa303bba4f38588d91bde02f64468fa0cd93b1c8b441be5142ec38f597871911e62c2f8f04b50af94a52ece023393843a08ff4023a285833f9426408c408f57b9e07f6d70cb6f519c38f88f04b81e8a683a157ad410619f0600cfd3fa34b674b509daf90a6ec7247dcba9112d107d27f9f56f8d81beb2d64af188688613c8cdcf7d7d2596d10a0888fac4313f51537225fe9b7de632c63b364ef60c6b050fa2f6c6542da042a19ca43199bb0188f35fcf21a0466063cbd3f61abbe929452407b50c58029ede2ca83d76e53770f00a3a994ac682ce8218b3100aea51eb2173286486f538911596ffb7d398b6b7ef8025a8f3ae563e88bd4bfc52d59bcbbdd0c8c2acb3441de658ad74e7d2679e2dd004f720e04e803f9032b6abd9779c9c78864d85ecba7b0623b9f1bb7363c74e46b1a5dc19446dfc9e09b2419d049e02474881456f058bad6448de9ada0e3c0213ed7b4c96bd4577870e04a3d24dd246a2ce1f65ae85d51b2759f4c22fb0a2b3d3fc37922cd400b07c83c95210d47b6c145d974e3779bf771fdf8c6d31352951f1d84c90c0f3b512b3b54793a90821164888a12956e5203b9f6a20dd0452b586964372f0ae98947945ae676891e1840a019d491b55499c23f1d8f4bae785a8f4402eb9c4580ed07cb621a10748932715380a7d70be489427056fb383a3414f93860ac105c3ca061e5c50e58a275a88843ac37326dc7451e6382ee40442630026a41abd7158e4dc83b6dce8897b54898432f7490d85d2612fb38beae0b40d2150599aef62e12dc242c8d4bc96f3e13f72d69a3249961f9207057c2284fc2a4d18d56629269053460d1845bae0860647223458db1ce2efa17f906d3abbb775c176c704ec87be574158611d6b53e8a6cac299855574cf86ce924f514064ada87021b3eb8c36fadc7596872c84b03c466bc0e5e98890cea6108c9451345b1d7fc94d4444dea327f2665fc51b913a466d0d758e59221128227c5e9525c2e88c4edb5be356db90af07cc751ebc0727095a1b774950a4f0644d034e6c1c04436443d5d3fc1932b94723af5d83ccc46e36a0445591114fc0525192022362842418888c52314fd0066f40671de615a5d8c73083205f04ca89992168438032d68c70d3962254c169411d3ca8065513b7ec559816124cc08940255bb202774f8d6945de43da4040c99506d8f12a504ecc0c411b0294b166849bb614a10a4e0beae0414513428b4e9b4f8ad303e24252fb5a0357267678df41cfef083c9cee6aa7f794291b206ac74c43714a4ed8bf4bde035dcba8f5bedc45d6230c338d1e7825d09df82ff0d1a173e1646a766eed20b09eb29beecb90896088f40d2e68a4daddf11b2a7ac6b83ef08a967eb1f9a8098aaf9e34403b0702e21e03f5cd00e249b3be882dcb16a6ab7085ca58d10b967a93ddea15981e0d77854bd2b57a591b4b6d5644d159c33e45c32c80bb8944a5d99235a9db5742b65bbdf30cf08bbccf2694266ff5189843ed29073c6a4a6563ce062bb2163b761c74de099d893feb55ea1cc7dc94e3fd61d258110b3ea75a955e8cbc6ea8b8e585ed51b4ce28867b396172a314495fbce3d150b6f42326f61984847f0209dd679b186ca9b2d21d0cfb53b8aca38e98f9d6aac971a154b69a523c3894cdd660c9cea53b25113853e9afc01e0f640f11a2d878ea4824e8027b58b6a97275c9e84e67973e452fb4db146d510019f65c55175ac4a472fac68114d1f601d3ec57f2caa8f1ace91be180d4f04c290cc385773f6d4be3e8d5a296139525ae0a61a0b1a4f8d63e24f2547a20273dd6ede1334c5c679cb93640dcccdfb6d49666f456fc531fd275191d4d7293c5cc0b78389bc652a3a9be69a37340f8af8fde846e27fff93c4ef779489efadd539f62c22107c2c95bda799577e60e7d4c6fadfa9a1a6d8ea82c1302d351f1ffd9ebb6d31051fb8b9d1a38b26e0f36606cdd0928de1a07be2f39217e3be1a9c6c4a9ddd52f279d351387a8b07ec8b225112a4f90593ece967434bb548b8549b5134f6c714f046c4d44c544fdd7b526f9f28a3ebc44eed8fecb8e72d837c96e19043652e4cfd2716f6ae1bfa3ac1faa64a0e58c3e18bd047e8db115853e03dd9800a51daec1785b2cc9854ad93a7b8a957c89e88d6e08eb3f37be7c69e0be95d57ae63e71ad268c3a9b64f3d05e1df127a9d87f28109f418bee1ce5ecd85b1b80f41b84cc5eabf72252c204abcf5769ddc02b38711549ca4aab8f66f138cbeb84ff6a17688fe7bc28a3b9f26b1992603473efdcff9bbdd033a9672be17477e6eaa9ad718168708ebbee07fcce7dec41a95179759e4085664d7c55648f170e3fa68206b3e29191f6568c6b2f254e27139bfa05fbd9d2521183b1cf5382aac90b804bcda66c859f08fa4d03dc812148a8e2d3d7f6764258c084f7370af449d7b4f08416272337930efaa5b370f8a73aa91ae08b6c4ffc55c8e6839cb10b2a30af006f419b63e84724d82f852e75b68528499d83d1f70d752cab39cd43fee7c6729606649b93154eb1a7800b7b68cae88df6bbd0ed78481e5d9dc83791b64ba6ea6aade3a18602893584895dce60219a7b7d59bf3b5b3e1e3f060cd9f4a5ce61d112c6cb34d941d14269109e3a109a3c9a0df8725b047516067583c8e2ef8b6a2b8333976c0ec464f6659f82b1a45c010d006f680d569aba4bb5351f226a2bd00770e6be873ef740c34425d3a11131b3d129dc03e87ffa2f349a9459257d8d88340eb5e13a7e3c67fc0f5dc3631379d6e34c8496961a1eb4553e8b16fe954911ee99886df92021c98d2ecb53192544e137b09aee105a2d6e73f176722c11b992f30310b54ea095a3c0566202242884c132cfb21e9fd109176f28e1e0f80da4dddfc379f67744b7e7db668da935a3e11d549f32ce59dc2044edd9e7a210aecf361745aad022ade82c2e7d4fbd7bec7f0ae305dc0570453f6f48377d80a0402285c6ac04cb5bc0e480507537a1e48d9414caa2aa868f07d4ab1ba3abd5a05b68b9bec8e6c68d61cfc629cc0cd434a3ee26d1f67c75875281a242d695018fc97552d8427886078453aa1c83031e56faa950dde72b90a80be1f013a9fbc2040339643e8c172144d283986d4e00dad193828bac03fb8d7dbef30e8ceb1e5feb3e9ce4265fbfceacac82762e47535f7d9c474822944c3a76ff20091070a8a72c8a1fc3c3c90d0f4907792ff4db917d97b879ff588780f9b1c828a1527d280b00a56d0ff8e7c0a124c3fb43d4e10410bb5872b9eb2a400f8c9772665758769cf6104d554194e9c529f987c186932c91b8be71653393b28c9addcff07c6823c1a79bf4fa5069bbb825b551a7481a519dc08f775b6499d313e611b2c6aa50784bdebfc8f8a8cc963ed1f95dc176dd6196e3bba1b1758827b45aab54c6b2c79da8e17e3227cb39959a6158bdbe3121ccb1aaab0e8edc180b822d36b08a3401e0078cc8584feed3828a964d29f96718274eabb45330cee0db69d40a07701e32ddd80376c3ded12855e45be18e802e91830108efd3f01c38b0b56921565199295767705d42bca5303355ba2613ef90d9af5a355741276ae2e8bcf7b9d9fdd168dc671929b67f7f2bac860e3d5ed9fde2a099efba38e14abc5a726faf95235df0a88967ec046a48a354646299aac35ef6d1178551477aebeaf6ef3581b84ce0991e5a5c1336ba335d16509ee69a2f9b56ae5a3d281e647a523ec765d85c2d181454fac04ec4307879c311a9789c388e2394c7ead3232370c4274bdf428908ba74cc44683410ddc03a810e19311139010502c38aa4774c25d1949f72bc9b025c587798471d3e0bbe02289500f3d8bcd32e0c49ba144fc1e95cd80687315429f6763134dacdd9703e854bb8095922646e1f71f9fbae5d4367ed6f568c33577ddf940684037b1b2906e3723d47570861137040f1d04918c8cd27979a6f137be751e2dac832f12bbaeb0cd517146161156de94a02109d320e98547a5879cd680bd601194164a70c3d3497636e1a64bde93ed77b69d7795bcd74cba4990e0bff52ba2ad024311665b167f28d55b03d3b5619e8bbb602ac98b2028d042b57ae03d320b5296c4894e02cb7e0803597e0fd0e3ea695a262b5a50b0380c91e028370b0a52193221dc208b2e437ca44f656a061cc4230a3ee30b06fdef7c196f6ef2fde181560f67fe7fa8fb5abfa8c65e61c1da653d8d3e556051c0d1e88014787bae2fe84b31beee5cca5330c763051a812638079e6968e8d27bb75f09424288754ac2a34398d8f0b51afe63b0601707a12c93e8ca5caf2d5736a6c72da9b30b2199c78b3a4d905c3c147a66a9c6923643352e48095a4de44c1395082d94bce34692b90f6d0b11a678258aa1f2a7c0003fc7bdce3803a1b0231c004b798adc0441f525545a54390a73a80c9988a1909afcb75e128f177488a315c89b55d31fc618653713a8835c63b654f7f896eae5e2e850696241697f72209c842fdb0505282a055ee2bd11b3296bf2d41df5b11aedc561c70d5173454a562c933e5d0feafa2bd8a6ce143c76c827b0ccc23f8e69c76a1b855a5218db20ecca9f959c3a1ef69e0636748c5ad0254d7e53aeddd094220d8ca956864338bab1ef81fcc521065b694b144ab01fe6e6534f03fd4db673406564a716951668ed311164095d0a38407555c5917585c5fc2f1c37bd7d0525084ba6e01d30403f2b3e3b81b2a4393da533e26ab86cdafebaede2e283254ef62cdf72ddebf591e6b9a16c364849df15c291c6ddac7d2d71bdefb0b28d6948d9d0f7bde7dcba6bf6947067fa8458327e50754466f53ed3ea831dfebd204494f2f05baac503cff35db6eea5795afeb52fa7443aa061db03dbd67cd25952652e7a977a633f1b7b4f96b849e9e92be587af424dd112943ac345cfbb190a1385a0638dffe2b8238a2b315f093c57b16c3e1df5b23b568c5a3ff83a4aa921729194c937524bcd7d8316a734bb0ca9cce048ec97cddfdf73010ac5dbf2dcc3cde4e5a44c00fed68a0b1c92466925a95064ef184b9510e763c9c17032c04405e2d08a2f6ff0632033f51de89356487113d62b22728ecccac5f9150430f2d7a859e179cb25a48d9b59a6e9c877953b4ba1ca8d5731ae2a8bdec2ca1045005db0d861222f650b23b56b79407f0b153ba5badc450311ae95889dddd66f7558a3ac704a4881c69eb178ae28cb993922eb2e682c7ffb3a2b4cc66371d7aada8a8a9f251310a2b24e111e45b2aff10d3a018392ba12763ee5b43fa4fdf404043bd9cb7a6c3fcbc9eb741260731459211056dae7ae30020c99ca113296f0ca755ab1e522126eff9f6a15f6306677c28f152275ce3634c585c178c2be9d831ba5dd575bec8eedaea11031354fbee6b14e1d7620bab96fbcc9d44bc02ea38689e2263ab6aca389ff8fb980dc68e03001851bfdb734530215168cf1ff2427a897ea685531b2b695a01d70178648235a1e8437b2cce5bd05ccfdd6b7e060df443387be13f40a191d86c1759374e8640f89e25f99dade991e78c545066773632bb2dfe1416c65032e1fbf85b56f3084099f9382d01a2a60c55481f6ad83ca6fa33ab7e43a0e955d772c165575d53ed4084a1cc206aca865d2addf704d447e9041aad0c951f40ec1c32661ca03a748df9c6a881d7f759941258bf6c5e901282fb71e7f81f4bbc2a1ceceb50f20484c28a862f73f3a39b6eebcc702e58c75cf0d89e8263f4936b0ce9c9db2c249f30afee063e59f24746c96b177d18de0ed95e3e311d804dba6440941f6e42de0ad07c9610cd5c8ca8d38721d1d407a135aedfe54510687200eb3102e80a3daf15898456fdfec87e9748a562a6d8189da876850eba40fe38d9b3fc9959a5cad5bdf595e3a15c6e05f9522e340a48f6974631c1670f4e3195e4e51be9fef06ab9f1fbb0b2228981a62c40df766bb7fad42e611cee1a4b528b598f838c93cb16fd4f139bec684528ea6011b87d4307b6751f9dd87672e63f840698e9b11613af2d14df26543e4ea46cb5b6b875c46e63ba3772f4c5dad1ffb6b4a2b99d2babaf8eb90ad04b7f0ae8b0082edba2c82a90d4a995b74eb3b98c49de2136ec846df9be4616598a0780baf5db94846da9465fdebb4110b7865a2ebbfc072bcf5e18daaf0f23c58a7ad9782db491b66ad5f19fcb8eef1be7c1fcb66ab287ba09f550bf96158fd4d7a27d045016c72c83391a4e8580ae992ca5ea48a1ac428db125addcd2bb3d874a9521737825707244e871cd35c0d853c767551adb77c35221dfe9f3ed1927982e4e5c2fd2b7bf0b907badc8c3131289621541e763a686b9c6908f4b847b549a63cc816a147859c4c56e66b40a1454d9480c0680d919335432aea336ca12931c5b1a91f5e5f181d5738772a19f5d25de7ee57241f8a860b977b3c4c16d0931bdd2cb444f1e673671825301d2dcc8f5eb134733d01513706f64d1c03d167b39c7965b9140843d77463e85a18162936928158ff418e5f81b47219c2b86d2d85d4557226e0b065896c5e977d2bdc9d5562c8168da1b6d0a0dad050dacd2920b245dcfac0f70314f2260a4ab1c3f3d0819e34a3f10ad4f2eb40f4a9f75cf26499fc1d128f176b10cec0fdfe7f85dac8f5b30443a73fcd30576710e6e8eff87b1740eddcf3cc73ff397e0b7b17e1c9073fc3eee5db0bef6dd239d19c7c4d58ff2fe0ab3a4caeabf892472fccac974b41cb4b86223e4b07edef48f9557845ae25260632f20c917ce2ec4e9064e97a46c9dcef714dbbfaded1e598cf74abdc416ca296736de8727e1938378150bb41064c74f9db9b29d2bd42e53fbffd43d5177e08a47cbf15362078f25d28acf79e8e81c7f2d25fd705541ae617cd78876fd01349466f2be5c81c6dcb7e6feb3b8b2e90a488eff24aaedeed65b72fc2416aa1dc3b81e0bcd2b77046275c353696245f30fff29aa7f6d77a5d3e95dc6e8f8b9332891f0c8af3add80b73c7e0463ff2c8adb3eb37e4f3b40fb804966999077fc6eb184c74fe6d79e46ba5fe782d59e4686c71bed97e17a554bd6ce23535709eb44a045bc6188eb44da6536ce3ee2f1d7fe50ab5db8ba278c52c101547204eae61bcd55205cd1541dc9786123ad3ce48633094e609a917e40011acf1dae195374471a4f68f9f8cce99b0a3d008122100088c0cb34b0f5bbe8284284b35ca978e6f8e8702e628c8e9eecdc8099e1d836d3b025db5d42a49432bb0c310da30c6ebb42dfe046c185029715d657fd375929eacd153be3c542094600450f8c4087d60c95e586a200d2832796b8821a5ab815bada1b4cacc189293031822cb470eb51166a922e8109119440880b5ab8857aad5692242841c80e8a4043410bb7481c6f13376186ab03374c21042888a10a206833d2b609ae8bfa0de781909ece8fefe74121d1a8f440fe837c2d126d8f22a65312798b9638f29a5a7e9e44dea2f52465097f54abe132539091824c14708bfe2438fa4b4a192ff052c60a992ec87c41060c326190a1824c1564ac207305192cc88841660c3257c89041a60c326690d1824c1664b62053850c17708b7e1976b334bf438e9bc076fd27696236c60459f7afd9849c0ef9a4d9d80212e4a5e5f90f28241aa17e5c37a92462124f3ad8cd6aa119358e3c9020a416c9030942b6f80309f2b5caffd7af23b6594082b0b44a788e35a45a39d4805bf40309f2ad1c58e016fd395c3d43bf7e5ee6b0036ed15f9639b4c02dfabfcc5107dca29fa4cc7107dca27fa4ccb1056ed18f2a6342805bf49fca1c6cc02dfa4d658e36e016fd22650e37e016fda532c71b708b7e5299230bdca27f54c68800b7e817953149e016fda13206086ed10f2a6366708bfe4f191304b7e8f7943123c02dfa3b658e38e01638e016fd9c32871c70cb1c708b7e4d99830eb845ff5862dce2bd5862dc027e9fa320b12c8a9e3f874beaf8103c64081ee2622a16f0e3d37ac60e223631476a5d678cb1ecad75ec769cf11641d72fa26e95eb43c997484e45d82c0c915b22ea668d8cb022aa882aa28eb022aecd42b59bf530524abeba46bf8f244968d7bf95a50b1c1b8776516620c762eb886c64b659271beafee5fda947dccdeabacf9f3ac3b0f867a7f76babf44bc770d062b48ef61f7e6e571e428fb49bb5c1a42cd321165a6716e2278b76e9ecca330c7cae659d634490ba964331bd5fdea7f3da6cd79861784682326da36b638e8998f6a05cd3b32cc3b5100bf7f16975b44bd3c63cfbb26be4a451e4a388e2665decf3e7b8d5f64c0c899b16e250fce4665d0cb6d5f6acc33759678b2fee05ea60dba671322ddb70922b06e2609b8dab91b68c8b916c1917eb5cdb6bdb5c3b06db665c6d93eddaee5e5c69ab89703351d7d9c43d23699908271375b0ce161369a46d7a895e9b4cac9176ccc4c1505c6d9b899b8b744a652611103fc1b898889f54d7c9896db4d3cbc7a7557a7db5da09e45c2512cd737128e0f722bdbaee64a43fbf9887f2601e87f454cfe93ed9e7cd3a1af762ddec8b791ecc9379af4ef6c1be9947fb689e8b035ddf0b7c7d5d0dc6b95e219f11413e037e12e16fbe070872d46babf4c767be24f6165bb436bcc7f7e07f1c856e959ef13e89f067febd99ee9308798f991375697dbc87c77b74df01d244a128fd28d86679af1fa56e56c751afcd425d50e86675249bdae7ea38325016d6ba7681b390d6f5f35324d23e634733c2c01a698c89605dbfcba471c9ba1e5fa6d015d248f8a9718db2f115ba421a38d6c69838ba4470a46968234c53135de08636ce361b5758e3c840d956a15aac52e2c8449b1a68e30a6b1b5026ce441b1a48d31137339136c2401a5a477c6d409a38d6c631f6195d220cac89a5c7ad50758131d9e771eb5b5f9e2c0c925b26d85669170906be6a5d8d737d2f11d045f35c1ced83d13edfcc7b75b2584de6c1ba59887f3291cfe5cd3c2fd6714f450a89b1cf9f9b5917be38319228d3c8481b1909c68189b3d82616e3bc449a0616ca382e51b379cdbafe98a8d9bcc2191813691ad80616ca382e71a6896d62618cf312651ad926847160624c33dbccc21727d6d148af50ec33f3669d082c04fbc83c59271389995e9f9837eb62a0373530d19b1b58e94d8ecbfb50f698467adceaf013e5519756e74db1660a3d6e81c837352feee3d3fa3c6e89b8b92971138cf10e3f55efe3d3127560a48c432b7fe3717960a559d7ef89f12f75621dd908f9cf7175fd1ed9ace447683512e5e4998d3a344fc765f22449c25052afeaa47caa83f22964ece4513c2fce4cc5cf4e8a9f9d570a3f49147e7a4e3867767a66678776765c27f9e224ec249f9f1e5987a471b246ce38354facc37947d68191328ec7c53db0add2e10ce571953a301029eb70681b0f4cd491953a31d0acc3a96d3c31d14ca406a27548d7c623ebd0bee37a12468e6f7a6622143fb523591329f1d34c44b59d9789fbf8b440fcc486a836d6e12719c85d1c45dbf0d3074813156347d891d966e1d69346d8ae1fb56ed619337d3330069b7d5fd2afae695d6f64b1ef477e7a68a0d92706633f57d720d8f720a8f6cd64e397f8e9a9815e20da47168aa1649b257a1028161a3fa199e8037b75fda23f4dfcfcc040b2d0a716a27d5ea058c8f5a185661f170806aaedf3330b6d68ae192c267a6ae0eba38da05a4716ce40d7071b1fb73e6f82629dc7add09b2197e8718bf4666806fe87f63d7e8d8f5b1e3f519716e8dffcc03ae2e3d6c703ff443dead2f2448f5ba131e4a737432f909f5c1217f9e9dd2afd793344ebf809e2e7acd5e3fbf30ead7f1f9f56f822f8e1e8e53d38a275ef91629cef4432514c7c1f9fd6d963c3519dff6cbe33aa8dbf21c9c41f61e48b239868f6117d29f422d20cf4a1d7e741229ae73fae51ac647a94c89b4a2f22aa91be34928d9e44a2bd50fc041244d33a9fd841f2ef1a7992d10cf5237fc2bafef3891da747fd59ebfa5197d6f373e422e1e768849f24183f43354ee2a7c825c24f51adc4cf918cc44fd2889344fc2481f829faf093e4e1a3d856e90d3f4932118c9f23928b427e8e407e8e68fc24c5f629927151acf5f1d3a7b67953247bd162b3f0cd116c5493c168b1ef4dd2ec05be29aa896f8e642fef4d12ad7b53e4da2da083164df0e00653b4700bdc70d43b72053141155bbc5b68a1855b62c851b5d1acc5093010c3164186b4706be43e3ead8fa35c5826c21c5880c26105ae166ef9f8b43c8ea2ed9a76a2095f20430c50f084166e751c15aaf5d6ebb4d2bafed3ba5967969dd8cd3ab59bf5daacd3c7a785bab4bc74e43d446e72ed50051126f21e2137d54235e43d406e7a5be0eb3fc536eb445d5a20eff1f193cbe33d3a7ef2618b5a4bbf07c8dc4d6ed7db16489047e48e4221416ee511db234172c0eb4764573fc2fcd139ae81cf8f7b0748d304eb1a04647ed3041ba999fcd8f604a21045ac92b7c6e456e5ee4dbd61eedbaa2f6fbe33c63ab54924927c925c6626446c9275d69bc56115b7b1e818632b3418cb78d131e8dbacee756c561120f78af83c9087dce6a3225505962a5ec2d0b1ec0e7907198a5c842c45d759dd82cc6f6695c32a4ea381be33d7b96d67bcb95cdbf6c89975fce2e76529dc2024c5ff7d642807d20447f04bbdcc6100a618263f090a7207dd06fd37aecdf2a8c02afc5540bd2abc306c0c805b9be8b118e64b3531bec76a8008c1cfebb86d6b73e3ea998d82fc9e81ec518159b80576d363abf0c220be1dbfd7b11473607bb876fc5dc752cc618a4e87127473e39a431144b563cde3cc827058f360d1d531165f1d8ba908db29988e4459ab4e7413d4cd11bfa81c615b857f542241668003a409a61c204dad6a5a183f7d7c5a225f7ad4a55552c1d866911e3fb896f829527ad2a32e2d123f4b9ce37c8a41716bb52349afa16dd6396a35efe3d37a3d35d28b1e756989fef3f835ee6689f849e24082685a4fec10fde85197d6889f228ebab4341f7ad063b0b655a032dd2a0fc6dfc14fe2e7e0dfe0bdc194440ae33082e9c6d5316b062cba09a6b36e7a6c8e9164114c5be3041424f762c72c1d6c907f406e1db3749881a624df407e37c7946f5c9bd7e6b54965f845367363433880e04b9a633aa69ec79bd82c90ab1085be71e9153637ae0e044b510524b034e844c7ddb81f7c5d7ee06f5d7edfc8bbefec37c50e580072ac535b0fa604703ffec87b98c4cfad33b7c6e71eb73a108b343c49a77007aee1053631feae82fc8dddac8d7fb7a4b9716d167f3398d5a1f83721c02bdca56023a4e3ef4c80591bd75661fc611624484aa563ba556f8a63ba59200cb00abf0d603b503b86a2e331dd2cdc82a9313005e7d0bda97bdc1a432074e5c6b5b5407e07d3cde2f26700dc62d92a1cdbaacdabe3dfb22037af8d6b6fc097ac6ed6f6a4499a7cdfe7acb3ce5fe900130f83e956e10fdfc0031288608afebd87f37eaf4c3b0e2ea155b88535d863bdd663374bab58ab608a55b009a61dffa86ed64ec774b3b44a1ad38eb156399c1f9d0ffd63db5229103b2e90a0884d4c116cc66ddb83493b10e4c0306c63b6efba0e0cbbb0db84edd6b7b209f177b969bb9e6d957e8ee3c6aec49ee7755d97bfeff338cedbbbdd51d81eb73d6f97a17b227f2590273a1104418fe3bcbddb1d85ed717bf75d3621fe57a2df12796885566d1ec87d188a1c277e22d77d187ea88909cb80416ee79c33ce39e39cb9dfbb0aa4e9d9b05d6f0f0f5b2a90e6860d5bb663f72c1cbf12b73aaf3402b95fd451903bec34c8fd799b26860b6bdbf3bcae043bb7edaefc3ad7955ee7caad33de44306e1b69011bc235846b48052e5e55995a53a58bf40169d7ef00b6eb6f800bb7eb67408aedfa1780aa521e58176e8a2d5df050bb7e05ac5d7f02daae1f016dd7bf43f576fd30a54ae56175d196a956a5a3541d40c5f2901a20edfa654a176b015caca977abdaad4aa95ad500543c088007d5851025dbf5d72853a852e5a6dcae1f002ab7eb97a96d968cbb5928d4c776fd271fdaa1a85fbb66bb57f5756a8a9f9f0bb2eb87762e10aecdf2da9315543f35b5b26fa7cabc9b95f25216d5b7a6d0ee7bf154efed3e30f554eff5d28efd56cf0551aff5d06e05d5950f35f9dc12c87a6bc81d75265f5b0257111b7a475dc95702d5d64347df0a8a3cd74b57ba16e5634b601a04ca0ba14ec6b10d51b7eb3f19d930fd5e545443b515d7357c415764f5b7a298866fc88a621a826fc882aec88a68b8866da882adb8aee13bb261fabda8a88e631ba2ee976e5518aa208108de0007774555b655c2064320811c54b0450bbf6cbab22e162f1658e16dd1565ddb8e11ce20023780410745485dd9123d20420ca450436bf3da70d52109246c210b6a687dd82051c0a10938a02d8feb05281001c80ab870849607f54108aa08e0100234b436ea8ab6a90b944dd9b75557d5755715cb43ea42d5a6deec83204cc858f0ce80e44d5f760d43145c084208604003544ddd56ad431ace40862c52da8a82be6c3a230860b8020950cc4065d12007214c41072c9a68b54e30c2128460850bc06084168602142e2ebc6aa00558cb648d031a6490451d9a68a2558206b9228b9911a488b5d614d14dc73644bf545453e8c886e9f7aeefc9b8822822ab125117611baea08bc27d7c5a299cf5a84b6be54db155711f9f560ab7462e6f8a29f7f1699d703334e1e7a32ead1a8f5ba17005a6445a47e9db7a94a72da548ec483511fdf02590ab7221b52ceb4a9ae3552de87561addcae7fc48ad49877f9b8219405437a698cda17d12af3accf1b4a61f8493a47ed295acfcfcb43e94972cf112b523f6e0c0f91dad12a4a3f6d0e0e7ad99108f5bc3f70904b5a4769e8f5a42d0e6a4b780d7ece781f9f568a26eda0215245bd6cd7291a952c494beaeaa228aeeaa2e5633cdbf593edeb627c39698c199a5606c9bafc1903e5cce0a7a63d49f6e4b8a706e5a02dfcd4b027d972c697936a56d225d1d1e5a81a957cc994b36ad20e4aaa2f877d4de22b92823ae84765571115a47ede9444452ac8fdace59b64fb9a9cd41c5ffea686457195a61595276f922cc72d126e72dcc7ad116e725014cbfbf8b4442357c47ed4188fe2b4a3d16b12b5a5d0ea428252921312ca452156c68f7452907a424a456f7bd25141ab8aa4ae8c50176ed7ab57ad5d3fdb353f49ea3942436e6705b1a454f486da8e0a22a12237c4763868f4b62172e5a0911b52393138086d69a5bc8f4feb067ac3f5f490aee88d1bef8d109b8a94a71beaa9edba15a9d1da506fac6bd74f52c3b5b1be5d7f0f28dbf59bd4786da4f0d3c68bf6c0d660e136d81bab8d1ed61a2bdcc67ae3466ba3add1da506fdc786fb035581be90df486db438dd5860625e1b4a6912b625554243591ebe815b5a135c49ed44e8aa244aee80db5a0b5a3a622ea566995eb806d95464774a45ba55daee3b5559ad5817656932715594ba927f4a2da932be2794bac4745a1a77404f4965a4f8b5a4f237644a49284d08f3b7a93e48e48d23b22f2b825228d5a92d08b564f28e532b5add29fb7ebff408c1af367f9f994da936a625177f679ee767d4a4deba9948ab4ed49359550972dbd27d4a47e4aaa083b7acecf927b4ad7522a22828e98de93291dad5dffda75299296b8a6b2c476fd22a9c935a12556441531bda6d22ab2964ea8492da9222468a90d9d5410fb7145ed282db9a053fa5945ea890da9a5f7734245a6f7644a4d6f8aaca5550425e13adeadd21e53243de9a8954c933ba2c315e1a609d5413389a8ad96f7f16981847801fc009e003fc4e94f1d0fc407f100f80070fee70fdffa1c1ff3321e943f63bccbcbf819bff2b07ccbcab3fcb9f2a78b3f59fff2341ee66b3cead26ae1270b3f57f8e9829f2edef32bcff22dafe2678a9f29fc44e127caa33ee553affa137e9af0b3849f9c9ffc415ff2267ff2253f49f839c2cf133f4f1ffa9127f9f24dfc14e167899f237e8e5ef4a51779938eb6c46216edfa8720403900b7eb1780dbf50b21f28ebce5085ba2dcf2e496220168bb7e00bc5d7f104098da91b644bde5e92d47d4d2248376fd31658e1f5aeb088a42cb5339b26e554b796a6bb45d3f4b49a2c2a8232eaa2d51ea0b4b45adca137b6249d232edfa51258a2d475c4ab6eb8f51be36eb447d7c5aa877bb3e69550ffb76ad9aca971da5a2b6eb77bb0ef1b3744f5a93675fd8667174f598a0a87779fb267e96ef096b927ecbddad4a372bedfa447d43ff725644edfa242d71454a94affc242d714b94f3f4442d799ff393d5047dde6143f75b92893abe28376cbf7c49ec98a24c504ffb2e093d594fd492f7c359d28f3cedbcc9c393f4cd12bef293bf8f4f8b05d5c0585fb42894b7a485c17a5eb827a8c97358d21416f48ad61604a365614f27d66d4b2a288c37e56571d1119436e5fc4c617157509456254561535c96560585f1e24559535a182d0b0cd63d4159d214960585b1be6851de9276ab74899644ded0fb1961372817757241a636a47eda0dea059d56d1fa59372328140a3a8952143b8242a5a592879fa4b7f1e6a90df1b347f8fd1fc69b2423f27b3c0e181c7e863c7073c43d790f52890f3638a9f32fde448dafd2637c0f4bcb8aea4285f57c0f2a7c258591be4851485010efd1f1b4b82bab4adb82f280aeb02a2e0f6ecbdb92aabc3cbc2daaca4a1b037d81b6ac31521b30d015f705dab2c64861a036f88aabf2f2f0b6a82b6d0c7485557179705bde96b4c55d5955da16940794e56d69575ca8dc78c161a82f549255454d415fac246c8aca9a4249da1495457dc1a6d2949505864be2a6d4949505864be2a65492364565515fb0a9f4c54ac2a6a8ac291486fa42255955d41474258591be48515c1214555a43e8874c37e89886d81be98df7063bda6835eaa725d51bad0d77b5b1d6706fac251b2ff7f1e901ed81256db035de12c53dada4231869e7c5488282524eea0886da79a18e242b282535a12395b5f36224614129aa89451d495fb0246dcaea7993651d81e19a3c6e89bc9952495c1117aa88e5f5b4b49c158d0a4bc2032a423d2d9c9555a3d292f0e0f296d4d3f27256588d8a4bc2c3cb5bd492182867a5d53c6e916faabc24278ce7e1718be467ea49de7c81f253f4aa13e54fde6c594bb88f4fcbc3cf94ff9c31520e3f4b5ee40cfdeacd15f7dc3c77f9963761a025ca7b62414730d6ce8b12500a7b62494730d8ce8bf10405a59858d8118cb6f3e24559535c967604860a8ac2824acecae396f866ca6b3a99442a31c54f17242cee08f7f1698df8f9f9120a3f79730535e9c8787e963cead28af1223c486eb1bc8727b1b7689d9e14795325d56c441befe3d302adacd7a869d7cfb909fb2a3ae349a90fae2812e22754847d79500fad0fa79325a4654be34fee8ae2e255d48579941e5e1f5cd85855d217b2b7c6bbf8136d6df0f387f56ca5278ef7f4a106f7a13d7f505b280eb70718ee03fb43da5f1c6d0f2ef761fd017571f4d0be701fd4566f71ac3db0b80f2bbea6a2eac35b7259b5b3a225923f2de135ad2536253141f914ae142cc9905635e1670eb4e57636478be387b7d5d71c2c8ef407b7c57635c78a03fda16dad3dcde1c3fb03db523b9a6306f7c1dd2a2dc385c7f0f169916fd732da18ad38035d79bbfe1696b0860ae3c2a8e38b4b435d812183f5c4703d2d6c4786ebf28a46fef4761d439581ba78918cd5852de131d65246ead2bef81117d4452d91a19eb8b8262eabca97c4605d5219eae9e29e2eeb1983e52e678cf59491bab42ee80beea2c688a1ca4065b8e02eac0c3686dbc2ca705d5e19af8c36463b638527e105c9adb0460ad3d2484f2f2d0db7064a038549475e581aedcb0bc3c2a0242f2b0d16e6855969bce58b4a63857961561aef0b8df5e5856161d0171a6c0d94060a93bed0686ba4302d8df485865b43857161d41797868ad27e5e5cb2860ae3c2a834541a2ef9d2d648615a1a294cdaa1d1beb035501a280cdb81413d34d897f585f3a969dad7855969a1dbe21a8d35e605627d51c9196847468c76e5e5bc1d772383fd16962303f5b8b03262bc315419a9c7a5fdb8a82e688c95436a5c32542ea2ee267cadef92cac09efc9714c56249ab779cd1ae5492a3794135ac75e58633d855ea61bd1d96ba6a3933d6153a62b9e98afdcc5067bcac96859656eb68463ac365b55ba559e86a9d91ce70592e2b5db133d4192feb65a9ab76c6ba425f34fc64ad2b7706bb4a5f5216bb7a67b42b3506fb51a778a568656bca51c97683be14eec872daceba7153295e54e63e667b78479573e2964663e225ac276ff2b8257e521ee5530fc98f3c6e8564c9732c7bff45bef4b8853abde95b4de841a8d18b1eb7c6ffbce739aa4fbde903ea2225d98dfae8e8727c784975d3fe3aa61cb5836ed677479683a7c052ac8f65e93f1ec29a78092fc7053f551c0834c56af899c26362284350929f271c0897c959c263563e855b9e245ce61d79394f3c46669249c13e3f45b84c0db750fc1cf118166f13334155433c468d999d1f2ee302f1daaa36bf4e50c51a5ad0852dda947dd5742fd186281821046e9003fb82ae01364c4c30965d81cff0822595fa522fb62c848ed77a0aa2997bb8bb1c3a7068379016d800d7376e81ee37adb96e81f0b7b7400796dd7f6510e077ddfb3e7fa52900db77bf7dc7cddc4370fb9077a5f9e6f7efebbeefb526662304af0b8ff0b64dab72d7da6510425415902c2c33ae0d63c74d6c60ec18bfe815e699c5dcca171619e0cb0674c7e6d83dfee994f79cfe4e8f796f577026dfa5b67e8ebfa8cb9489fe8f9b78257e5da6746aeb7fbd4aedddf56f16157439ebbdbf9c1f9729fc9f491629ef4dfcdf8bf8c318f30c6e566ee54fe15409d229fc5bb9492cdb0836c7959b8e821c62b6590c833505c0addd6e557e1c3a06e727446c627eac7338834040140422040a327c5143416260abdcd075b9fcb2e8bcceeb3cef7befe37d683ac5f1ef8a4fe70fb74c09007b6cbbc4ad2ceadc8f4a423a4b3749b492129dfb976e92685858a273b3f04d12ad23d1f4caf47533772cebddd3203dd28bc962a67af78f3f4ca275a449ea1e39e2606cabb8efbaf781103a18db2c126d9368a4dc0652e45b09d2fbfc66c7d575df7175d02eb502d2ecb83aa8e7f18e0bab747007ed00293bae37902689f65dd13da8441b48b3c3448d9411dde079a2f7f93edf196a255757e24eba42af464f723baed4dd2b7517b18c5c824ae8543637b47bbf3bd4fbefc5af045f5f20733605f1fde73fdcec0cf9beb203fb3edf19d271e914d76142a7b8ff81f6ae001dd7e7b90795d8d09eea55ee1bda3fbca1ad277e7453101d98c5ffe85823b3c1994e712699ddbd07b3d029ee412cec3690268885aec42016fa5723c1984e71a775abd8409a600c8c8158d0ab20e8d5e83b99c737907bccf72678c56a82433ac73d9eb556740e744d100bcf9b60169dfb6857e8544da7b8ff60d1b9cf80877f5964feb9b96f2589866174e73c17e90c6de8dc1c3ad77185c02cbdfae6de7bc1d605d2ecb8fa97c9ad2491a4370329fdcc8fd6fe8d9bbadf7ee6474be4b71648f23baecd32756feaa09b65eab8a900fb4fbf63ffe9bb3ff1f3898eef1079133fb717e1a6ee2cfde6fb7fb43e5d99d229ee454a96726b03f9a98e0babb87f6115f7dc879b248f4b9186295cc10d404a7ce378abc6359026ae918ff56a247afde227db2cd38eedf76f7e6efc937ded2ebfd95669a1539c5602e8d229cefbaf0541748b4a1015a2535c7e51e97deff77e5a802eb293488f358b447bcc75be2b4155a7b8ff64208c7f32992e7b5dce9d481e674e04217b1d1768902351c704b27b1cdbcb5dd77135906607b659a61dfbdc7e7310b655dcff68718f353bf66ffcec4e006b75d0ade25ec75671af3538b6153c1a639d3b1bf303dd7bdc22d1f4ea47e760ea6691662fde49332c480e7c7dbee3ea388f63acd2fde8b31123de39d3f74fd242afb8efe3fa144cb8c6ce7dc95542b92fbd4a4a705f5a42b3423212167a85a7c001ad734faa6dd6d6ca1eaeed2a7a48c846894eda5942aff016706c52697e4e74ee4725de4c5cfb669ddbdad96661ce731c1e04179cf864df0b6f548b8fed9c869b5f6ce4e6978adcfc609d16e4159dd3ab50c73770c273dd4048c7f5d96ea0841b8cc1eb3a2ebd32493354af4cf0f54af5ca04631d207a85afd077dbcd8e908e127b0bdd3c71dcd32037b2b0e6c1cc0d05a981dc37b2b0e6c1443390f9bfb1fbcdeed96ed7d0bbf7520fe6a99e137a85ddb016be18460bbdf2ced0bbdfacb20dbb89825e7968e8dd7b500ce37975efbbeec53d82dd6fcd0ef0f156751e3791e81d109ffe1d41d23f10b8bd4322e67d579aa2db3fef73b946d037d07dee58130052d72460ffc67b80bf7759c456714fa26d1638035fa0aee141c4e6b155dc63cd103ac5bd1548fd18e030a057dc0a4fe104cc09cd0263a75ee1297a40a271f87d752ecb847433bb9848bb9999f8bcae467b4934d2157a85abe8dc935cbdd2cf3d36495890b2e8dc16ba79e23622366b3ff7318e0c1d64cd6115ac823912be9e7fc4540c8109af8f70c89835c34bc50dda20e2049016c08f7308322bb3443d6e25fab5b6efca1ddad5da1e979cb8479c004ecbecde1444d83b7e04a773bc89edf1163a0bce2e57df4abc6d95de9b0aa2380233cfa1ebdf35bd6243afed9ae7ee9af9e531240359eb62ce190da2e8a1410cb2025fbcac3e25839303570e52f0291310c4a1102da0218bde79ffe40361f2dc939bf5f1ef846c81892f3cc71dbf8956e507820c3ba622074e744ec754e460069d851322640c12c51260d0e9eed5755de7da80bc579c210a41908210b090860165eba0854f04580ab2fdbf87b8210bcdd2e9987d25810a170b4b087a61e8691b38f0fb262f4872641142afcce72183e56508222a60840d1c6f3292df278385c545cb311c7aa5bf0fd3ce8c5680882274cb080cf01862870330ab43a73e1396f123532f3672804843eca840114460daf87d3946c5bf0d2f0c3dfd8225044924e8f47d26f0bdb7a1571b04f7eb30f9d40e0768165603ec050be8ed0d4422c96ef28f6bdd90216a2448a7c4100cc310dccc71881a09f3626213ae6d451a9470b54c3b3e731ff9337f02bf8f9c61d076d8e0f00c6bd2c63b786c8c71bcb0397f9944c2a9a84fe558d2b109d9f1a3b008ae418af06a7bfc1f5c03c479cce91889f1034bb84518a13fa5471012b9068f0f6018066015fde268828418a20806f0c835527945bfe6c51009284813d336a082ae5f93c50ffda0125d3f7782ae7f0b52822292d0ef02c3f8c02afacfbca25f88ce335d7fe8f60a884420913bfc829ccdb1e1f0fec5865e6d924ee1c8f14f22e1f8efeb90c02afd1d89747a1d2416d2f7edc7af468b57e0d020bd0aec17d8fb3e16dd75ddc618735f4aa7746a45227d1f37319873058ae09173ce39b57d262413ed0141676c6aad35c65a47c61b639d75ceefcd72109d4aed54de3be85eefbdb3ee74f7e59d73ce9b06b97fbf7ed9aff7de2c1471d03610b9c72620f87bef6d83a511265de42ae0e6ac35c622e707b2b99e70498f8675ce9988ed350eedd2cd179dd39157f493e05527445e314742b8c610a3aebfb3c93576e4155d83475ec11ac34000abe4d5a835a884aeff9363083a7e20c41036d89163d0f57b8674581ee88c83ae9fb344d7bfd194390538a57f7441d72fcea0ebff3a2e47918b90879899055d7f46015671400b7446f54af7ad2402ab68949bfbbf37b7be7173ff7ece357f740900b189c030dbeb97c07e10ec78a35ee5d9b7c320706890fbcb8e71a7e7bd310cd62fa449f3dccb8e43ffd0390b11b18989a97075fd386791dcaccde3ffd4668d4ffa375f64436c96cadb7813b73030765f3c129be5f9ecc21d204ddc04772634f2a11951e8453f73129d664a3d4e25548fd2c89f786924e2aa108ae5cd2a8a2da1f9f46749e3d7e5443dd16b766760bd66376f54875673d6ef8b4e338b8476531acd4568527eb3ca43b39c2df35ba29eda2f442adb12f49457ec86f06b922a714f696643b935c9e8cbeb57ab211efa6186a33c7f53af2629df632675f2ad4f7d7f5c966f66b7c42485f798212939e13d4848f8ccff3f8e19129237732af3bcc7cce993087dccf7389df80ce9e55197568e27bd0f3323236fe299d327817a941a9bb5e483aa5dff48d3614f546cd7291fcfaae34f346fa7ddb41f95bdf12e50b7eb181b77c667f5b43d7c8cb4eb7fbb666d603e2c8d3fddae837896daf5a35d6fdef3c37adc8d1a04f7a09bcfea6937690fbcf36eda8fea61376867c37ed2f5e59d76f3515d2078873d65788f19d127118ae13d44223e33e6e0a78f4f4bf40af8043c8f5fc033e0c7efe107de6366f449845abc478acf84e1e8477ca6137291fad3005f803fc0ef7804c860f953002f840c192f2f2f2f62f153c68758efc24f961fb97cea4baf7a17bff2265ff2278ff229dff91b6f6e940169d7bf00b5ebe7f176fd0a2079bbfe04b05d7f4a59a628ea5699bc246f098b00b5ebdf9176fd0770bb7e03a05d7f014ad65245494ddc474bd67245bbfe01b45dbf00d2ae5f08b5eb7729cb75ab504c3e2d51cbb66c4f5c00b8266b106bd7ff52fe5a82ea58bb7e20d0ae9f55966cc99ebce56bc2966cd72fa3fc92f48757bbfe5649eae3d30a3ddaf5b68ada34144241d94cb8127e72e8b65dae4d4b42dcbbd74ff1934b3776bf9cbb37774b4bd01417dcf6a6a474e96eb9edddd42edd2db76e5b876e9653b77643df15be575a747553d5c44dd9fda26b897bd536f5e6e6a6bcb9a5286fee93373b54f526b7aaf80c79c63cf926c7a6f80ce7396f6e6f0a9fd96cdedcd4c72d143ea3f924503fa37973b77c46fc245032ac4a07ca47e021f044bc047e02282e7f32e017f00d7807fc036a3ceb4f04fc8e4fc02be079c4e4f8f3873f5b7fd6f833000f80475d5a3140bc8e3f81f853e6cf983f8778027c01de007f80475d5a3af809043f65f819c3cf983f799907e2757c0e7efec0cf163f6bf0b3c6a3bef53f7c8e87e1270d7ebef093c54fd6a3acf839839f32f8e9c24f974f89c14f153f559f8af1623a01b4eb9740dbf513f176fd1158bb7e08942a948796a50c4a0ca97d50203ff223499224c98ffca0407ef80924bac7711ca7604117ce405241929c4ee7f9d0873ca4d875381ed1e3f1783ca487a48224f1f77d24497298c87948966536cbf290cc6636cbf290cc7a5d8a862a623c2cfb69623c9ef779c48f0d8542a72e56e0d449ec43f85b699eba11a73eea6d5303696e347cbd0692b33d8763c4a90f09351f3b62e9f5934e9d536636cb9c4072be09cd737813e810cdd2c86479c812a42c0b2918bd1990e6463b1f7adc4b1f9a488f3da1d804d2338e1df971bef462a9f4222f520a3de18f1fd98d65ee9cb034964aa552c9837b292c3d4d203d6287099cd08ba1d0873a1d0e133aa15028140af550c904725482c8cd86e3429e71fb5114b970fb916f747b5e2c37c075f15f1b15c5961b6e340c592bd63d642bc16db573dc4642e7361d4342e7c6d0b9cf41d0ab1d84ee41e029a8a08b4f83fc645c178e5a350511867ca39c8d7248de753449927ddfca0c6419877380f3744fa789f1701bd554605666220c4b54d1b9ad44155e26e3884364268ea9d37dcf6e1ba0509e48a4894e712f869bcda6d150e8394d4c88c322ddb9df36c0abbc53eecdcd44e75e5c02a95ff39f37b34c26ea8dea140ef06a9b00a7b8e75e549a190821166e0d7203e9dcef94db4b74ee3710bde24c5debdc7355e89ce7b9cf58e854c34c80577a0b9ce2b41632e2eb2d96d042af360c708a7b71eb9d14a499619989b0d442748adb1ad5294ed7f4eaa5508308c42590e37f645b538e7ca758458b5148c45590a64e35fae1ef96743913302bc7b08ac330527044900101b3b26cafbe7c84ce7d3822991bfd4c32f49b655b1acbb6b4cd129e12c80c88a5d024d3399f532f7edf81fc54dfd0916bd28f48dc46fa2c2b954a5a20bfebefd358c56559a91493db409a5e24ea1ff516a255dc6f2bc8ed45cf6b34df280ec8ed45ae751474aa14e1bc298adb8b6f01f159ae13455276393fbec829354ca7a55e42a7b8edc70f750ae3bc8deb994e711b5542a7a85e859dcda6e39d8ed91e88e1c9bcea95899bdf4dcf751be5a6e945a2a9cc6b8e99decc31d3e720e81487e224dfe8834efc536a80107fdb64690a80c8872fa237d9dd3ce5aa57a9cebda94cf51cd32b1189443e667d5ea46e15f7a2e73431a22dd537a0e9a620445ebf08376d1ef7f17f7499f861090d2c32583a16c3110d5addac4d02ace25e059d7b1874eeb70dd4b56bd946b10a9765b292e63ffccc2dcd46732fbe3f0bd1939b7eed0c6cdd885417c9c412dfbeb0e3f31a7ee6d6879b5e706c15f706d27c99c9722b8e42a49067f4e2e8fb2fe409794223d268341a8d469e90e7db88b6df6c5d87b33df9e4b6f9365d87b311e99c3fd1e69b82fcdef35bd6c478beff3e8b4a204d3a84d029ee35bfefc09a8668f198912fe6eddb2c0d376d3eb7cedcd288db8805cda624627b036d14c36dc402ee582cb32b0371654df8e2366e8d11a9be9d800c9feb3c97614aecb473bfd10de4def9ac0940f81b88c1804e71a1c73dacfd465c430f9028cf3b60cf868fe20dc2103e0e8d359bc7a1471d6a9cb085e814b7e140a4ca6d878d8e62c811b5133a95eae3866b3ea08fa6c47b7c52c582340541bee73de4c67d879b240e37c98d26716c31d54319ab53dc6ffc02a9be3d473e9773ff3e92fc48f2b72686e42fe4b6f12634af3541e8df7ee359d64529c8eef76bb3f210ade29ed3ec56716fc5735c14b82791645bb34170c109cdcac88efb570269ca68366d1eb734bfef806ecafccae91bc674abb8b773db09c8d7e9d668fa7ddc4b81854ca3f803bfaffb4daf3c6e1a91bfbe679e0ffd79d906611857a0c4cc164cc00533501185904d530214f06c868a2030810a23bccbe512410a1d3aec18bc90d9d714e0a0ab8083cf07518fff85db87d9042c85e03a361438b5dfe4dbff7d2492d6e4c6186f5a672888d8c4fcc43af7892f23906211766deb1ce7a1dab91ae014c77569b883ce7d976e56e8daaa1ae05538029ce2f28723d8361574eeb977abb8dfba58e6be8b406aadb5067514dc772956d9ef2bd7aed0596b9d7b58e73818075f6e839166e8c27da5431714c8cdd5b90f673e7461184fe73e048261f47702b205663883fec9bbcb82884dcc0fc6bdc81173409a5fff504084cfd629300107ec66c74437bf0c4be24dc0fe0d05d2fc7ecbc0d6cd2f3f0db2db5ea4418e6c2d746adb5c3ab5fd7e756a5ba26fdfc1f4cafc5e7dfb4e89ad63a2afccfdbef4cadcd0aec4b6b510f3b60489ee48ba4603697e68dffefbed3f214ae8d437d237166c42f40acbfa467ae9ba2e7ff937f86dbcc5802d89b18c06d9bd70ff7d24d9bdb66a7b8ee3b88ec4711cc775b0cdda96d82f566dbf2d41c2dbbffaf6b06dbf1f4c7cc31176de8f33de7a6f2e739cec5a4b41f4b66dfb1311ddfbaddcdbb66d782bbb0f6f7cf36fdb4a520adb1dc8fd9cc8260acfd35e57b2e894ee3ccfebb87208ad77f0e8b86d7bd129161eb2afb34f3841b6010c60f8c217bce0052bace84217441f88391073f04413627cfe304bffc67f90dad3e47ebd6916d9da3a3f212bc2080c14915355af9c70750851841178c8d6c4ec6cc4a63529ceb3d8306bbcd098d1b30c1b317a56d96ff20023a5e713eacdb18f7c7e93fd5906a5e7fda8126f95e94fa5570ee920b89981045ff27e9107bd74d0876c6c2ed7c82f190c935d805576566287b689e7cfe8ce6b0e427e02671de4d4fe4f996b805399efcf2e10f21a7f7f564203e2a61e770ebde88d26f941ffa95e995b0f7133ffe753c4c6e376dc0d97e6949381ac49cd8c83be5f2ccdcc83bea1c0437a0673f68187e02132d0d802ce0459dc2cdcfa4edb0a72ff26eae0f3ce9bb47db003ae6399169ee058b069131e0e2082c7bb5f90385b1e0ed82f740a6793fc5e4c6d4d0038dd44a7b2a6c39a20cace5f6c2c2c2792d539c13566e095edf9fc261866f3f93de50b29862996541364de6399714af3af3141d0c7dfffb2593c489bc383d83aa70980ee1b8eb18a86bf2666e43c366b7f216f41ce6964724702abecef7ef0f6fd427fbf9f457ffa7567b2eddfdc06fb3c2d8839107d203e81f1fe026982350c13eafbc12c300c06df0e05e7d0a500a7f69ba16bb3c0daee528057a01c302807b0b6b9bb55bb8b5ca97711c8bc697bbbefc895aebe7f2b0b905b9bb6551bac7568cddc5e6adfb903fa4057afb62ff4fd19d068aea15d7d739c15de3739758ec32f0490fbc6f18f6ddbb6e7b89c73c6b96fb22bc83afec076f6803084243aee3ab6c3d831875599e5c9aaedbd37471cbe795ae19cfade34e9d89359448cb98603f2caf65cfc909b22dd241fe4a448df341fb98725722c9257997773d5372788d8acbc6527fa0772f38b9964d79ce6c449cfbf7d8ea5f8a0c762b16dd3c4ec0d7293474f7d1f4992be87261d2c8d48f5bc3d7e65213b403d0daa40ccb90400ee23175f40eec79f33aab78edb5a20051c3e22fecd7f1bf04d71bfa63c62f31bbee11a18c1373f8fb8c48f35afc9996b60cc8f457e44e64d606e6f5788a20c1ca0573ffafedfe4ef2d6e1a7d9b2d9d73e2edbd5fdc7b9b3f7aa703761ef7afd3e9743aa02876365936e13da71445f1f3c649b0fd0cc7715cc77dd7711bf733db87effd4cd83df879bbdbdcde685ecce3f18c5ecca3f979229ed18b621ebd7fcd3da77cadfa50187a51f379f03f9a079f037e88d35abfe72da0f58bfc08116f82049f9f093fe127fccc903ef4097d4e24cd977e66e6f320aceaf0d02b35a54976116e1ac1e21971d3c3b91fbf4402b16c58f4a449face89de4cb17c2223094a3f439a017d89540a9f1402fd0c8955a20f7fe6f333188bf47f5ee36387409fb0d42cddeb902c83884db4d61ab33c375f5820ffc6fd11de9b67c79c03a5fe3dd83df71d0882a5891f7c1c1b7feff1d729710972fb2e6f47e4927360f722740ae31726e647786fe6e7bccf8f3198f9111f6f62bfc7b9d72adc5db1c9801c62b3b076c06f96f7dba75ee855e7376ea3d1b796be9127a1caf69b8dbe7de6e648ef2e8b9ce731d03daf3503c89de367f7bc3944f7f0f1cdee3d9ccd673e3ea743724aee35b0f13809bc9ff9beef03bf07413ce3f19ff15ef3e1cf6838698f2107bf2f731ca7719bf366e211db9b9c7e7c847ecdbbf7dee3f9888d63ef379dc2de7b20ac827fcb642e7f78399f41c49bf57beffd9bd6bf6d4e9233339afbd85907114df8b13844c75c8401a99fd42bfc1af8d131d7c08330cce61c2875eef5aafb3a7e04f76d95fe8e53527fde2afc3a88b8fda8f558be4ee9547e91d363995f46ad0100ee9cf320876be0473f22e43cf8db6fca23381c0ee7700d683e73fde3efbcd96cb4e61ad0e8cf9a37d17533dd7b5cc7753fc3bdf8dfcf88de8720df36fcdb8fcc752ed828209af831deb8002216a5a07e9e82ebf514665b6ba7b637313ff31bb71aa499ca322ac076a857a8444a565616355468440600000005b31500003014140a84a2f1384e823856bb0114000b619e768c6ca18a9318492a860c21440440000000000040102400db9e13fff06ff00ef32f9e650bdc8a613514882bb9e782ab893030f4e4ea81fcee12578328e6c67af0e13d7e330b5ddd3857735cb09980d03e127947b2619609795f486c77af86855ec6998f42aaf0afe352abc740fcffac4b1b9744059e2df2603fd31efbd8d6eeb266596008cd2d15b9b3c0b2038687dec96ed8025d1a6e0cd880817634a54e02099bf6117aeeb7df48e2d808e097c694890203b78661f49fe05414313d3001ec688e4fc66608985fb4c1d1c8ef16ff2b666461c6282222612fb68310c957f70135b872ce0ca00a8094dde414465f032c64fad93f23b163b0deafd7bc1faaeeea55d7ba5facf54a5418448b164b469d90413e93db8d8d8310543fc0db9dffe85b7e1c001fd5b8ca37e23c19fc9653529baa90299f23577d962fd2b5717a68211d44c081ea0e243faf8992df1d811af7c967b86ef3dfd07aa16787347af2d0a474edca6df418c7a2f066e657be3835516bf0e16a1e33293068ba940657a17bd0c96da87401e010f17ce8716bb67d75589d21fd26d9ebf84bdf8549286f0f4f683812402f9451cf8f6d5c1043091af89a6d3470247bc10372902c930f6884fc0ec8d7e3f6dc57c6939e3dcc8a5ba51d6024851e8e4760d4be5b0abe93740395d90cd32e72ad1c90f6e4d5c11e0d0cbf7cf908767a616488563dd53abf1c1c52fd794daf6929a8ddb66bf2eea1728c8930309222becc52aad8c2f341f059125bd053aac7b684f47471251231dc7b0c3935a226d271d50ded07986b1ea25a9453756a9ca1163fd5daa56cd81b78989e7d507d12601a16af3060cbf070d9ec96feac6f61e06c6e2b590247dd5e7faaafda3c8bd6afcdead44ac776a876a7ce49a847858f2f59b08079ad8ad4f631bfb69b84c32bb0e96903dee0a3bd8f307820ebb80ca67b10f691d53a44c6088cfb92214d7c8360f324bebd1ce482c38158efeeb7c3c7a966c63efeed402e5b576ba45c6eda872b3db735c2bc9bfdedcc6bac81fa60be00f3f22f4c2515db28a78cdd78e58baf80e2cd36c877a21cc696042409e0506233c43b5d995856d2cae72665c60bf09b02c9194918ca1649ae9c9db7883da164b896c796eb9714866c075661f28d149fe0cb4818898f4b880f2d4cec1339a7571acfd3bd811626205f5327d7074de9f3c429b7e3c2046509ba71fbaa4fc279551ff3c2e45bda9fa46eb32dbed4dd8630e98b96d391cde8e912cebc4b261fd5d1f9166bf5d498e1681bd252de6d6d42ed6e90d8c40975e9a21f638d6c5816fb4c7235c768803d9557742b1261671199e5590ab85e021de68d180fe160bfb5e28ffa60ee625cf6f42efd3abc98919b34f48e73c48c2473a8ccc63308139062c3e151988c9685efced26d7ca81ecf2032399815b01e41b32740124d39f74c4486d2aa97721a53331f5c0085f31d234ddea47fb68e9ad8daf1777bd69a6498b7fe69b010a3978168104d7543a72e94eda53626375d3aff63546313fc698ce25701c2fea7ccf03c5db10d7af389d4562462d3950aca59318e2da04fc9856bb33aaf912e2ad29501edb9efca878fb53faaccaddd6f5562835adf3ac1961ef0f4aa4702b12e27f26e46007c71af2a1b1d368424a76102f37bce360b60b686a4b930e771c0046cec00e159926178c76984d14ba2d4e6169ab3ce4a22ab7e1f34a6086db832ca2d4560be6ac23eb5cb4dc139908dcfc4d8ce198e8ec1be7ac92f751e451f7c284619815f6c006ad902b1ac1cc22315730f29d4ac08ec8d77bb784ed806b0372b6a9cb95c04d8ce3086a1cf1889f9921ecdd4866e2f5029997956461a79da4e30942260ee4fd29e1a3d667ab241ffad6631003ed9f7904ee44ae40a6420b65c446d784f36d427524f815168d5b1aea79ed2c07779873483e7d542675e522cd1bc5baf6762a43456b49587140d8ec93cd20645060905f6f910387c7c836294cbcd2894e9dfdd4b8eb6838a9c5efb31e2abdf37458219f45286b13f1c61cc19538fd842f02fc96ac745472321bc7271ff994f7dc72c2c024c7cd5915139682175a909b329cb9d30dd0bf4e3226ae42aaa52ef4196cf1a632497b0f928f9b90e5174f8b454b579181d5334b3f037fb09692b596ad119bcaac86547128d2d873e4eaa5d9685c119856e3d9b55986d26883ccf6e74cddf6fd318f3fb842731f18c3cdd1654c4ecb276bd28aeb8d56e3f6ad5e523ffa2e48bc0bb3c9b23b8b9c50fda279859832e47ef0260db5cbaa326f66cc2b9b97c0756031adc77466d1c259969f3ef0d9bbc744e446a59c5a8bc534c11a70ecc6f7c3efb23aa4b2a26228561ded58744f9e6eceba91e98545c4d28bb4ac315188b902203ff3631876377aa05b4ea75b41fae1c6e09019e9c4104307565e2d1ece13c991f3fccac364bad2a3cf00027b46b6806e66a6b8d75be9b5e552a405fe2c4f132063907ba963314daf53ce7d5221dccb4f09eafd174e2b5481a6604604eee88fe43dbd968f922121e3b9d21e84d61b4787f6ca70c8ddb35cd8e22d72b2f974a500862ec563028102e77e211736b4dcbf04c6ee8ebb83d88d5840ac733d3ea4b8abc933f33b76e03a74898bc49af0b7adde68d689a386484bfe41892349c6490cdfa1d4c520653d2afe92c01a4a7afda51cd444632c32ac147c6dedd467f843a2ba190b36b5aaba293bddf2e101876faf3e29dfa14010d46975915b0206661b5fa01fdc1a9b6ea0b58623c578550ca40b9c48c890eb67cd4bd2176a9b85e9a82183f25aa37deb09653df7634a3ed633208588d5217e2ca55c6ee4e1b15c6a4f34b6db66b268e5e8ad4030f7b7533c3537cfad19380367124237a320b29332bedb3c493d2be4102f016815694d661189ace63bd39525f945d73f53dfea72d557c7ee07200870b93b18c7958f773de706fc0e121ff6d8e9b4aae1e1010b19193072a94b3ebdb881e561dd1dea6ace43a3f1038075c4b023b8cae5f10fe28bab00c470ecd443a3a1ba13496f911db76be787fb21366ebf88ba0e0fc7af538d53b74b1d1c5d60b7ff677548a0ccb390cec28ec5954815df81cdb6c7048a0590e935c7d5c4384f873e094700400d0c3d70a30018ae05c55325c2b20442d89c41bbe77f8144af4f31b8e6661a8225b00b815f93209e49a2babdf6367eef7d1072c5561a9243672dafa5e1c51514219173bb38e0ad6e904d6b32107bb114a7e62738b61d3518692db266dec28eee97a0928cca539dfd19f33df709395e7f53c9b003728ba23277e60d1c3c3564b4ec4405704ad7e6e4e51d5a07ee7143ac986608ab5b0224ac9917bca3dabdf192eccc897df79bafe6ad82af06a4ad1d1ab90b81fe91f4c8f56e27c2b1d29e8938818152f7a162e832e098be4088007e41ac58b650c455ed2e4c89fca99b2c75b780148a9e34f703ad63bcdddca814b0645a72b03cf5b889a45cbcabba30343bb7e3121737e380592597115d92ae9f2e4050260d0fb4521f655290336554a3ddecf76a4723fc04791e51a64184851ae8453f91c35d8161441e1d2ce054019e014a53126c291c22d279723dbe1659010dae63083381ec3bb7bd2ebfafd2b3f97c3346220c3090c0d114469504e098d9bce2512291f1c6740df2b908517217dd2f4182832729f0c56a17c4127b5bfaca188341243a171c0667236662fb7c88586fba9a85f2a6a0e09a74ca05fd9bf5608b3f40b54612012fd5b4210edea5575203f157dad2c03a17bef389d5034da1247538e2e5bf728048bd8528b18f5d41e2eaae6a945bf8f7d7f5de2729302af9024860649ea9e4252cc0cce8e3f380eb5c317dc0c26390e123a848a57290b0258f454b15d957f62d0468e38421d7e25a50afdbe4746fbda3cde4a1c7edc970991878a443143c6799eca91fb7439e0b2ec8d8983471386ccbfbdb9c8949ff1797b48086292b2c399c530901e3db28d6f9ec906691baaf06051a3009694d4744437e264e02376f0ee159dd2a45482a518694b3ca78752f94f34663363f655e069d2c827efe73ad776116cdd071b410052021c814dc535988ad48eddc96f9f23c6cd3a71e4382d6ac7553855c9965658c0426df0b69b91e2b27b93963c4b9120e5059cda5c8243c3e85c85dbb240c6eae62b03ec6c54cadd3339692ebfb8acf9e9d59482b580bfd72debc12c696b3782dabf4f48c6843c4df63042a47833b1f1bc9161cab4222102e4083a03ca8a3426428a1d9168f3591175d5117ba765b4d49ee0e14383e0bd295c1efe5740ec841b2e966605650cf27fbf16d7f5f287a52eb3b8b7272e95c0596573c5bd5e29a8f841c5152a50b3fa581d671d379e083e98615542e4b1806e1a20c5bc9142d1a3b4713c862e5dda74385026144cc219a41ecc047427134ae1b6ec2d2eb4e3a518c9372fc6ecaa80b0d1f600088b40e666b3919dd3fdaa777e257015b3da5eb17a637482dd90768d63be9a54657f143a50f42acaf729690cb85c9b268d7eaf6f82060a154e291b63a558bf66968c86a8f1d80c9a68212299de19d89372560f6091d58233f47dfb29ef9dcc3d4a545790ec2cf93013c1af23a38a065af232899a479400469c928878d59b7361ae2214cf0fe31c132054529801649973992f9ea2a63834d917c50aa0f192bb5e9c4228bc46709318a46b24381abfb253f93530e31d3e56a6d59de444019b27c6233890b9dd657600cee88df9fc32501541ea98fbb2cfc5861945ed23830eea2d4d330c9390aea5effc4f3aa80a821d855dceb1b24f64899a13c85d7ecaed0859e461b9703bc40f2bc45c4d3a948efd171cbb6761818a7eaed48e353b303e7e395103737500039cfc8cb61a8c1c664c6c684b5d12ea323934db840242c37190c6c81e31650c4f26cf8b702fd232b9f505d127a24b7d098a9f42c38b746dba1a4777f24d8289bd0306064c8ebc5715281853076070955372be7c18ffa95b7378a9c27409bd8f40a02df11ed1ea53d27d2afeab5a3050395c8048ad86b53b6e7f185036a753197a6d0fc678d06d0d56fc22f92019a276acb53d0333f9e9ce2e4f47b426ee4a48aa559001c49311efece1067209e2ae0092d47c0a8fd3c99368849f1920fc84d58d2978892d10ffb5c1d1d9bad6dcf8c288b8d53359e98f2464bddaba70d1f656a853fe7aa915c40da21df7b48f82f93844b4b965793b6c1b3acc4579ca26b9a48363f925cf6cd9a25c7da57fb5b5c98409ccb300cbda133c20fc4adbaa104b30b09c281a3299d44b7ddee4668f9c766f0fddffbb8e954f58e5e170e704f121a41c47c16407aa68cd8cb5b458e7b5ddbe5f4ceec47ed9b6e18e2f97d43b3efd979153e923cb5f8796c0bf3507da18112ef21b17d9123bbd17539a59d0a8b6813d5a0c8e5040152483e134f86fcbd107ad372a0389ac5f411438e8be0789ded96e22148593c00bf0fff4eebcd718370ca049ababaa2286f4d9a85599c0cb60ebc1d7bf57997abe96e22b0510371bef22d50dc354b04af9f733fba6e937deffb5a924da2e1a74ccd1430c5490be338a4e518f711c1c72d565177a312d24cf3d45709425a0e12feeae9393f7109bd726e5daf75d67a94b10691f929a3cf1cba53d08ca3741ddb1c41b4f4ae42ff5c1be5d4f039ffa08215a957c074e475a1bb2f2894bde36a359ca4c44f7369c6703c852f95e28cd6132e3327e36c2975d35b182c3ec5b2348da1b188d923f657afa6754c51e66003e4c8a9d4367cb4dee347514751bad23af3cee1e90590530f4737c7088b5461249a030bb5a9e1ffa5e611d04eae9c3a2b2714339ed6a2ccbbe0386d9e78835cabbd29598651175c04316995c12bd6a1e81d5ecf60c4502cbc9a9229b7bbd87cee0491079d55ce0c894766a198ac2f9161d442d186799a99b0f2bda7f5546648ce354f1ce673894c11414dbc740cb8629336f512362ab027a6eddc0100bcf1a35a2e472a74050269253d6f96bcb0e920be00b7f615f35bf2a53d311541b0a97b951b948cbc7283712b944084d9c327d54b0b17d326019794863e84c11bdb6ea2aab28a3d3cbe77980493e79f06fa07441d76337dcdc29d0c84e62aa8e2c90849183016fa4d61ee0a083490d0638ede345eb077e4b8d447de0d34f6ca79fd8423fb1cff47b3421c323b1be335b51dad37edc273b7e7c3beb65590b1edc0655eefb5a7a5a9f02f38a08174c8807b1e705caab4e9a2c93a5357516cb3c312adbfe185c28a5a172d84a8db16a43109cda6587dee286031a2bcc900ff598e598e774a0099faafa32324b955be83aa3dc1f49239908f1444648e79b46c87c195152d6baaf440063b7ef03450c397580bbb1efab04fbbee62ce7e98de1ee8f3660270f65cded241840071e25c854ecf04c86a1daf96f20c360a35097bcc79c4f0e322f665e64936ae09026eb0fb0b32a413532ffbcb4032037c3ee134e7daf61ae532709dc2cab54cb939433988d219f60a897d895f7cf1618c92815b8953cab8550e2e7584290065b79b3f6db6df56330cbdc05570bc114c898901441911907bfbb54ff655c5c67ebd0b20ba89f2b47e0605eff529963f6716a0200c5ed2621ce479401ad1b730a656dbcb3a23289335032abed0b758a30764f928760eb208caa7c845a6240f146d1f13b98cd24f4c155ba5f68aeb29dbe87647adc0e758cd519024a3bd38d8ef0d3f8fee9c760109ecd30cdc8fbed0ac52c95d902ea4201cc1a87a5e92823d246f0ee309d218ebf3e6a51c795b157d7a01fd5b92019d03f7b3c41b018f6f0fe69396ce95d53ee9067ad41242169f1e8e761fa1a5873f3991c5a8dde3da4c45fb8a5577cf9dadc73fa43c0fa5e58e8cd31dd978f6d818321f61d4f38a495ef29080c91cf4e976e2c85c81147af2c60189a77acc50550947798a8ee1091b3cca9452af2c4c0350fd92be50ccb4f4a25ad718c49ea2212e4f8a4848afc56757124354ed2026dc3408e57c1de767d081c8960092726eed8ea516081613471eccf36e96a5407f78279689b06419b9c37b49714b42aa146c90c20f309b04cb669bf424688fce82d0942bc7db3707a87babab6e9fcefd36ce6e080219acd03e3d63e4df9fa758dbd76517cbdf1cbfe163402beecf75730f0738e9a07f07dbda2a231d9ddc54031d4c3fec45bd353cdbf92202c1646e17e0a6209e8e978a482b0f84e11aa094b9206e33e270f11a953365c7ea2ef8137229f005720ec1fa9608e1c1c6e181df57c99cab02ebb1828966098c5c78866e1706444cb40d9d4207cf6a273adf74e3c4760811295614449e34408aded1159098ce9259ee4b5edb8518d4ad0d415196ff83d8c9144ba9b3a247f8711a78511ffdd1c2f9243eea29eec8476efbfdfa3aab90775a0dd4ecc9267e7c12fed658feb70bc86be04f92d53656f484c936211b2a9b777b615533b8e50f4d399e6f5909aa8936758854bd263dcfaac1bafc850415f5669646af026bdd3f2a39c8fc6c1a001d52995fc7060bee884dc1c9a5eb54e5623aa6543269e733949f0cab171ef901f6213529c9cf7f3937783d0147e9cca037dbc9a8fc4f06084949e98c0040f38d4d9f6b97d0491af81cf4847fe1742763dbbf218f2d18e9b34e8525f5c07cbab1ed83a45ad2481ea1326604aadda8a0918d00a3c04169fc67c96b69324b5afc002508047d439df7d737d0b22adbfb1526bc6650aa443e883954b8622d952c1e82b98a70d469aa98c3862b7fc2339df0af91e49977346557f7fea50c23868ab0804b09c358745ecc31371c037eaa56dab48bc373729a2a5d57ce1524bb80bc00d57b667518d08b4068686e9fa54e6dd932b722aebfb9052521721d81bd5008c811f4c610623f6b2d537044a939276235ea0ea2f94cf9f6f399b759bd13ceb43a0129f6ed9789f41863723f2e89f1dc6468729484f5a48a0ed2b4b1fca4d06df379cdd7d0846020aa7020bda90ea9aec47c8de1565b9eb2c84684c89723b4e7fc4b6e1fe3a84de6cf59c60f551d4a59984a0bada207ac5eb52a5ee20220b4e392549b9f7b24d0a154b1da2db5c5727e134bc5594614e93fa56c7fd625766f7f5ad41608f19833b446f2e011b291340abea291b5b75c802b2b2c3ae08ed11c888d3bdc35a0e309a92ade069886e1517f63078770ee9536aa4b1a60d194d0108a7e1c00fc6c3fcc25c3b28dc66c7f6831e336a480cfcb5601b3c0181fe6f26ba8b6829eaa0bb6dcf9fd5521cf174d52987d92762913099ba7b51432410d71be73a5faaa485a613d55d56a96be80b72f278dd703f455a000ee6601692cea8d63739d0559066dd99ce4752c396b66759b04ed0ea2edf7d9c5b1870fab4bd6fe7d37df77c9ed869cef6c3c1e03a17e0db7faaf8c239289819c4c5fa44fd409a38d6ec37e0b894cbedd61d6cd3ad0c6697aaa37488767998a6d843474b559ea15cd16cc305876a834b8adf135d8a0db442ee63afe3fb1833651233f5d780bfcdd4200928f2c7b6f19ab3330ad00d347bedc3e6234d453fdc87542046df5cbe3bfbc17872aad3dc87939cd189c0d367f6d2e212d229c02d99261dc6f55d3ad3421ef05214938dfb79c9c2acc5e51d684630bb269e0b8d0e90c9640549679cf750bc2d1c11a61d84daf57c98a2bed1ab7c46fed26d8c06c2967687f4e1e20b4ad502c396a8bb07ed2cb3a4c014fa70cd2ca7159cee612821373ba8306e6f834e0a6147ea2a6d9b06accd4f25c2b025f369a520d7929acba7b6a89239d0b88400986d3a738eb36fb6d1204e0e5065772baa9ed42a4aac49b804883a82658a6a468432ca7e3b088b1a14841528271f444604b0168be20d2f626a5a5ee2178b3aebd0927ede86a5f78aca63547c2362e3ffba1705b3c861aa10e413dde7d83306d741320b03df88317cf39c9ac98bb6304f0ce96f883e673e6e556a7e44ec7df3d94fb5b3a1eda25c6ad40004deae429949aa8dea08843ac7eaee27e05cb55153af14272a47edf7d97a1fd504de2ba5d3a476f8640ee2737182aa5dd08f0f7481c1bface9cc265a97780c7a87ca5f1c96c7c0b1f95488a001fabe456594e2f20c37693ad8eae93193fea8f1afc70a0a3a91b5d522991527c36b5712abb11c4f68c161347f4417b83d264e9e854e2538c0a378c492ad9885812d1e45e8cf0affbbda8e6abda1db51aacb821741d946d9c680d7d7aaabbc3a8c44e27b5309e286a5bdd2b9a3caeca55b940516156b215ea181ba79b11eb7b6c7af286cbd837e015511c6f8c05a64b703c0ffcfee6c00967b1db0aef2ca2426defe0c53269778a7d66416e29e9ecd3ea9e8d7bb757fb7361b1a4bb086039286936102e0562c552b466d4cc0dc494d5d056687c62ac6f0acb3bba86db8c94a46b3e567c9a7b965674eec48e4beecab759349358098864770aa9b1f560dcbb41bf5c0bc0b81499303a4449211aed12907e6444d577b2354dc08bd57f7f4c9424817463a63be3ef275515a29e743adbd71605d098016006725352bd83a8784cdfe100867f42e5681622cea454c1c9e6389768c5bcaeeeb5a19997bfe58b7acf6ed8eb8e9bc5cb478a01b01d65c21462045eb905f84b19f4bcc83492bdc064cf35e76ad18706a1d46dd5adeb2318877a99bdbb55c682e1e9565f383bcd94063a02158fb1d784c18cb642a25ee66b461d0b416fe7c1911f60d120bc6b254fdbf0310ad52b021d42d14003878a4a165238e676fda315428c256667cc42e9dbb34c2cb62fd7bb2bc533a81d3c8d0fde40b650edb141b679ebab76978cd4fb1847a30b2401aa94027a98333a4687a303c4cf874c6c680c519c00a12ff83ef8de62debdf79696bebacce3bbd0e4e7797951a90bac23272df5a18bd90a519b93bf3485b317f8990d44e6928ea27d70127e7d869fcf1aaf7a7bf66a6c2f345a6279a6ca4f94ba9c61d79619c3695f81c0b81fcda48e60f0937b5ef78ba2d111bee5205a4866c24d828f8e07aa13029a6cd17ab7d3cf01d96b21a50a1c542db37e04b049d2cc51fa6be03d688862c36279bc6d26aa5d8a9713aa980bcce1723da54192f921c341096e3938f241a258388462acde99c670875a834af728af08f7a7beb56f40138e3f9c4d1f99aa19bca71caab82c6607a235ac722b1a9b027172081e458599e66f32b8d64ccc5a8e6fc5efd2b684b07539cd858f468bb4ba8260e129ddb8a225c5133ea338251d6d8e3e69a6bbe3587d09037f57c6b0b1240e311dac3daa524bca7b891afaea383d7d13fefd82f3365b54752375182385a221d1f6aacdf1fcb3e80e4744121ffb8cb5f414678e2385c915a692611c08a5c1c643c2716b5c395e693ddfe4e0b036647e3407325bd5ffef1f51c71553130c029b16af1dfc563c61ea818b4e1531ea03c2dc07c7358914f4f76fab4ef4009863fe5253a931082200bd40a90d5dd9135abc901a5010504dc7f0c7cbda145d1728e7f54126b38607e6b736e392d9ffab66b451470e7a643894f3250dbe59e3733a634c845c5522fbaacf89674b1ef9219f025f836705f5a4a4fb419b8035e3ae02532a5e886dd2ef950e91b3b101b16bad5a7a2ef3fc6b854a7b295af0c6d22ea11964ab5f8176c08811648710158c5435d72e7472167301705b990957e05dbcd82b8a7d2140e68a98cd7946952704096835e2823b15d3beb3463944e1bf6a0f8050539989de7a7980efe3bbdf88bb5bcebafd394286b7d1ed01a7229504ec4443322027d656f5078c3ba99bb55cee7bed9d3c72bfb50c8dbd34284efef9157477cb2b98f32707b8add82cd2a9314cd8a4c875982411100d5475ffcfe2ee8ca326b78a233479dfc354b04d72513c209d759eb1f56e424119642f407ac22e88a89ad36906a547c7315a1a9b1d2c001928c3d12427f41cd102ca5dc264a52d847fdf2ec3fee544df426398519076c9ba11dd1ec8037312b4d8b07b80b8fba8e38414a058c2a0dc29bff309e20d644fa311e683aa65985dab9e32d1aacb975821982303abb3fd236a4006b8cce64b1056d2dccc93d90cf9a12efb03ba7456899a448e45c6c306e94e86b19d3a7d8d622a295ea6110a2cfce77805b5b189ec0ba363110f947cc77b7e5022e995ac8690233ce0a0ea5b525a45570807a7e8c8f895d53e9a58268b9019b3ffd93afb643491281ac7d39f8000380790f1d93028f2aa1e2740601dc87369ad3c596fc15b0356e56fa0d65ddc5cc420744bc92418f8883402dce452a78b082030544a0f42c129e280e1a222314d5940b3b4f4bd41769e86b04d6ef60e3f3d5716819c01b55deeb144645f5f7dbe81dcbc17dd7be410991c296f1407dd6629763ba2bc12d8fe43d057819479fcc6f60a94e5c136877e20c11c2a9637a0bc25c9defb3e012c06759a628b2a664402ceffb88f4bc11565df52178c5884d551eb7ea4ef85f40a03f745e2ad9c83cfb39268ce2f36a11d6e73dfe7be362ae5b623eaf5cd2af9cae72a720cac526cf5760d93d6daae5c13c720626b548b4c17ddde7dd21bf994bb88dfe1c9df941e02a4b0cbed0c4c92a655f07e403b54c52c16075a173e1157650eb8b40a152825b601538adbff2e33f2ed6daa9614bdc349ead4d45beaae6ceae223da8652a1483a87de4f6a7a807ee8110691b73ad4089ccf543dbee391271269bc44203d98b1ffe482e1891c51ced70c68762b017df81b633dda760005212616cef420a89b521ae1c30234d0a21836e068dc950791cfb1daa4082b0b4b2499cac3cdbceec1376b7971f2702f611a03e46226b7679a1430c5960fbaafe527be128da5724facf0a69551a46bb5dfbc3c8617272b43e4f3bf5ce37f422205a9a6f40d406b71ab55489cc77bdc7f68d6538821c3f964eba10c35def3001f876a88b52a9e9bc9ca342a500d984042e04316858d2e70ab784b9fb48e4902c1b7b47797bea84796ffb1c9b0aaa261a13f42909dbd8f1bd311c2340643249fc25cd833d69d9a1129e9bbeada46cc96f1e7b3b43b11ba49593ca3bbe8d55fa522a628125180daf66ad2ef7b32a9e68598a1e76ec4df11f0861736c4f213ae07edb7846815f1e9d4517b4425be5ba9a23abf781cfe82ec45e09a6fd0b514d4054416112d1c3668ebe390cbe8de049423188ee439c20e820b80ba3e3f1ca22ff586d2dbadba8cfc38466e627b6c913e780c4d8648b5c13dad436e23ed47beea19a3c1243dbd0c229b7e67218c0536358d56240b3420c32c47576d05a666043953b0cdb270976599e65ea061db52f2b80116cdd2135f9da332643865b4c0ca9f8744917aa726d22b38613d60d6fc2d2d8dbbffe07967012babe7bed5b7e22acce9db81500944cf23e6312d683c4b2e185c24ac65d75430ef71be0b731c931009ae7d1bd20c2e6db458a5afc63f6d5ffe7aa6cb6857fb18049dad129b261864a003edb50976db3f8bdd127e51b9d793862834d747a477362e17e02321736257558224138fae5440ce8c9e40b7457d0044011768dc7428df57f0a5f847b4f47a697b8d53127f270e6a670ee284f2057000e4f4a33b847c3bf9d6ceb18d1535884fb87858c04c8a732a52395b834962b23ea24d21f62f09dccdc4841eb6425e37498caf9fd4281648b92679afb354b845301e0f8fad8df71a5a787bfcc8d36779eaeb3bf2d3f781fe567bef64e8490e3bc1ca7f579d3eedd85daa82c589b6567b27c625729d57179c75affa66f38e1c6bca8869f042d69bba97326963f1dbcfc0e9d957f9ea5229a5bf145f13f507f2f574e18898b6201cb68b04218796dbc535875c5316a796fb2b55d00f69853d30d052a62658c4991119a447768d624aae51aaaab1896b068873089c48a6e9ffae9d2da462f26aa0dd406413e4a11316680c5d9191bd93366ff22e02d8872ebbc202f4989ac64a4b24d6e987a363230427b1fcd62f8127cd025647c6585fc14a50a87f829e4013595202dfa036235c4dd701ccbd1288f94a3a0abcaa9e2ca61df74a1cfd7a3348420c6b306edf40504d828d1f561318f539d71f515b4aa170de8ee63dab54d64d8efe66a8fd4b25d4f7e7f23335cc98ca949c8f6c349ae0b1ed4f1a7f9e6fc5a7b2b7af7156d4e6fc1de1a9476f4346608b8b1454bc89078661093c8ead7b7785ea90a2c0a3c45632c6da843f0627af8a70884cf5e823ba95de33b631e8cb0db8bb0de72742a0ab99eb7b7d55fbc7480d1f9bc0c20469320c51a4bd0b9c4e7815788c7bc79d2618e53204940e5707a845cdcba1722adbcd464cc09cd86943aa8dc4c98c8646f64cefb2f38ef3ea8b3132cb344ed15756f0bbb77f002d9ab2f8a89f6e3069bcf8e57285b40e5e638ae6188698890e4a4b486dd9b2ddccae3b21583b2c7576d84a3f03cb3fa38832032c4d3fca9f2b48b2cd79060171f49607063fad4805dc1510e21a464e9146135998c3635abe5331b616a10a9b95cbdd85d5024587a30dea6a7c5c9a833ce3a454f3136235dcb9b2009dc5523d48b3a20052552040044de1a2a2b34a5174f61c347c31387a6df7ee104fef2221211cdc45f3731a9484bad2f4f92444c2f48fe3b8dfad2e30e6a896ea0a49328e22a4c18a4ebfd2a5bfac1531e4786e76855ec121138b8808ea64ceb6faf2bbff232a89d7c5cb188092a3d431da1f31701550d77456718d4dc637a6998335cbc9ff2527199fb93f2d6aaa156194e818613b136d7795d4415fab95911e702983b2494d8150531a5141067e8780da01556880400e0e19f4f04232e3f7a47a6a24c4b944904b7cfa06dc4d83214b301ee5039baa467dee1216185d105654c01b9beea167542acaeb1bc39ba9fff1ab328ea91377dfacb0b88a1f8d25aba72ba0d5aaf5021b69b906f788039827ce5e45e075ea3c0c8ec788ff6c54b768bba55299dd1c1096372320a745d032d451c6d6d985500c2f0a09ddbb1a3060367d3efffd1b8f33d501f3a5375d6ecc9d7e13e2d61f7e6cd46853661f8d47b4c8fdeab97a186c2839109a9e1506f84f29a2187b391211dc092fea9a504d2f0a6feba371792ebcd8a8331195996cea8c4c4a0034efec5b661d86ab81d755eeaf02069f31f0a8b52f023ffcc3906c750a5c9e22a2f7dcf7ad3db556f0f7df0e5a32aa840744eeb09673cc24abd9486fca90af4cc852ab553ac05f002a393c05581e0751710e04eee29c80e95616c419312b9150ee0bd75d6273b4ae9a1d53ecae93230e8afcd4787025d0a8e32b593eed392b29139806c2fc26728c905c2c34054f653b4392371dc2733bf2fe735d590e5955f26f27b5cf477f09c17a415b4b8d9861e203ca5e2aded8e6c5514f0ac97b94757c564afc8176b69f779f79a62d40a65ef7a7cf25ee1a3ae17f7a572dbb525fe957f7cdba454ba65a3380eaa07a2b3ba8e21b07e237bffb80f7801a484670c6e50653ddd29b060c17df008c0ff0d08f36127a49a40212e1eac5960dee005d313056100020746d51e886555ce6b87e3f8ed0799ad859809b8d2f00ff636a0161484a1d16a35530ca5dcbd96400888e89e2a2c40781bf0e079328fd2b19d8c2f5e9e235db9916faed0427a5855bb05f1244366919ab6e82b63cf98dc195dcc301ff7121295f492156ff8ff23c2bef1ddf14b986ab180156d8397067e73bc3bda28d3c4237d18fe23fb1ddbd623090a9acf499bd0133b2eaa5c4162befd136d7ec5d4d24bf758b80669bcdbd8b473f5dc0c2e16c82f5c798555b4e84b1f44533aeb22078dc4030c5cc7614c15949f4bf197d5ce31e020e050ce437553611ab88a1cbf880a9f8352ea34f0ed3b13156282eb8870f044967dddd7c90909c3a8e3ede33c1c7565426be349c8df14be75f051cd70fb30140f4c38ea6dad070ab958df59ff6ce5dddd810ba29642ef6cd662c9c23e7a0f5d1520682b30b2269d494d52f29826fd9b49d443df4bc5e46d225d53d857c6a7a3fd155cb1ff24046be1cb83e3e149f8ca00a209e5390b87ccaf7cd80f304c04575eeaaea6c905c80beaaa4867b1352da435485b5bd52ce9b5c41e6d0d18b831d2bb993049d7fb87506796913d9565a383863a61066d090acbc5508df52a348a35f64be82fbc056896947e422088aaec7568b0ef2ca9f1a04942d067cbd3ffeca52ce1f39226668ff61fd49dd351df24d839a79ae7cbbcca3af8e9a0e63902f79c5e68f9141c0d4a01071bf57601dd3e64b782e638382742aa1229909ee2c6dfdf609f487774541651f32e68a238acfc02f3267d414e2a200bcdaa6bf8a37ac0a40fa38a2236d26b7b50256ff0f3de98d622f74022308f01250a200834a171a6bca9dcc637e2fc1bdd7b8339d5e3419dd24f5323cf565c99e606cfa3cd102ace9af5eb854c602f42a20af53e05bc09c4a34b565f2996ca513868400458d2249e1a44540023c97e1d1773c540c6693b61de386a55db3d44b3e2cce02789a634c694a1546ef18d71fe3e6449d363ac5666b6a4e34448f075005f465f32efd6705ab0ee6622c8a76cf969c9cfb3209074acb30ace7652093cbdf518c72b3c5eebcca72f36f7399530777b6bbe6de5405edcfa8dffaa1dff21f725ac86fc87e531ee62705a41f4c97f24f7db630fd45822bea5c7c4e6b315b5e301d04e6f877fed7665e901e4e679036dfeb41bc9ac9dda3fffa0a22addf17c6125407fee4d475c267e61983c9b5e18562fe65593261feb805dff306772b0fd61be3baba8084ec6e2547b675828228de687968db198e5d73f90ddbe17c6ba2a55f1a56a763990a663c02f28eb67d2704917d345be5fde569ae7d523899362e596c555f3d7a902cceb265e46e42a1a4b8a67f63fc22e91afcc6d20549682dd850596ae764f6635ce451f64edc2ca6756b354d1fe3ada0c2597e35588f23c076b913390df9473971d4e22e4ec4b84a8c61dc8ee9a9cc2a3608732d3bef3061ee648c4422f0113a651552254e4bb3de851d8d3242e5f902d6ce57ff4002c30e561fdc4665f8f35ceaf02c3ae563818b55f67054c1cee20152f30638644039bdd4232be14436de86bc19144d19a6792dd856ecd788d926fe486092229e125c99d962492e143c7bbb7b77d1fb95b2f3f289ec636c99ff837e1974257403fd01d29f3b94ca840c217ab946702045368834700054a6bf8fc0b0ab94de1e050e7d3e42d8653f1b33af238df20b165c310ed9f29d7580e38f770dc4c00893a464f6f93d74c9a37cadce32efec7484de402c6693a152489a3e59dc00d5950fde619041ec251633dd93b369ce556ee85e728ced1301401d21e7d5be7092c15c8c91ec8a954a62f0a057df298a3359674a668b42b4f65495586d9e8d34397b9d766f2b06cf7243722cb1d216bc7680eab566b70aaf28f37b7400c8301fed866be08ac84a0a36547174631e3ad413c5d4cd731cb19751715de25c48b7a20ef2e2a6a2c2eb0429020e453b1fc823b770e792345f252fe2d0677299c40cad78521bddf4725d6f2cf4c0e64d166a8232b182d3c36b2898fadd7a668afa0b2b0b4f41ed0c728107d20a9a4191ebafd7d0e61d951c802626ca22749250c868507f1a5c15a792d9e6669113cd34ed9f10038f8f20f095e8b23df159fe941648a1c49a1de4301c304a1ff8f5f47ef9623771c435d496efb74d3201e04cbb12044f5231863584d1675d611fa68403e7ab2f592612489479e01d77a1dc43d667839b76136f8100722053e57bf53542a58a0bb2428b34c23b7592e8f191d06113389892943b5f83312faf1a627732694eabf177e62f6c47609c69126e38a9590c0a5d4728530aa7afcfd50c740a5a593755c3c4547441855bd033a5ccc012371f3433184fb51a3ae403ec2063d63d33e7a7aa5971f5f89c9d37447585c9c7009c49cb2fd8016f203b695c2c858806bf1da617188a8b5241be04358a376af74f1349ec2409b5bf9a8bbefa1b5546c6887225d44b9d279dcf42eeded02af2531d0d6352218779a2606d7c85661d2c2d9aef55fb4bd5302963046697a9a8f71d03b2ba23763378288e8f3a64d6f416597c873d3081047e29e69961cfa185688ad33f580e2cba5dc64286f00768999002c334f5c86547990498fb6f2d191cfc9037ab48cf669dd510d7d973bb3e5a8c1fd783a0bcb221c5433f4d2bebf933b8f3d9a379c1cb070e1758c9ad41fd4edf3d718d566a9a30d5bcec1303611940f7a64b9e72002db7490ec2c7aa66a53aba0e38592861c9aa6544ddfd30834ca80939e8c6df45da9890c222e39152ab599b0d442b06a3294cf50ea4db893e6de51eb4e3d3bab52f8f9cdd9c0bda2857c9d83246bc8f31e8e0292d9f3b2c61e12414f5d1ddce87fa2b8eb9115ae2af750a82ccb4f07f06a74ad5ed6ef888b5c32c7297d0ac20defc031ab50c1f25cded43fe43a48dc946919045932ad8af0aa6b27b366dd99741b9f541b3a3da426be25eb54a46fc1fb8fd6cfa5666a63b47ec30326f41034c10e688a8017ad751844b1d411111a83e12bb2cba2850385264404a020482c9b0c31536c61feebf60c552be2fe5f8e911c47a61bd450c49dd7ed3d789cacd5891f401f9845b23d73267e8613fc8a32863e416b3aaa397b7183d8d5fdad178a81d3e2612a0baf11180d171ae3a111d66df960bc1f0e11c0715eb0e662464c7b76662746e9b46a04ee1a0752f31ca7a48d8b5f002333503d233c5e9a384027008284f3bbba4cd5c408d4dea3a2a00c5f4dad5448b76af5d65d45b71a223246907c4ae6604eb49da4d3f04b407f827ed657755165f6c6ad313605e7a12831645be9bffedea13930281b8741b324fe0ddf14fbc8bfd221d9841955d74a99934ec05c5e3f7948bf24ae617da7c8dab0209d181305dae354bba005e980c508e4620c0047d12c82c675988c3f800c343d6760517028bcf1c820f5ad34f2c85908484f576cf6c1b424d6e446ad243b4dd64470038a79d8b7e500e98dd7822b8ec531140dd265f8df01a9b9b385cddc877cac24f9a8529b4d64845b0a5d03e4b1bcf5061158e195cf71bc7e6ddbd15280bd9d71397d9b95bc27a274f73f3ff86179bb5192c03d07b91a3ebd4b2a37f98b3115f37ccc497c2e208efdbe0c4aa10d74a7d45238e53f9be1ce8611b048c41d599bc598203b6abbcad022d65de6851c4a302df329ef0b008b2cf83e8947f7fc3e259a572fffbebb619b837b4e72b42d999436e0c6b251c35ba42a4596d621c78f35f6d25a1c02dc75d9faf9d9211eef7e405fa2d4fa18145fd682e3a9c07842c3c4f84a22ab57df3b8305c36258d16949a60cb650576fcd63fdaee3dbe450237e2fda44228c811bb033ee5f212b4a66c666d178adaf6450c67174f5c4b804672f10eeec1ff1fb4df8073bb7a2d31e21381d280e7685b39c59463e9cd70e39f823d414536b03a3639456aa8c0019d5c95c51b5b60e79a91e9391f356fcf47a875ad6211c805d854493fa3cdaf27177024e2b5ca6a79141096444ded7ccc3489b6e4f3438190c8f70a33fce5e98a6cb579b9236da36a4689c0a0926e74ac8fbe1e2d91d9c22a36405bb2e076761e33e7379b752903fa49bd85324023f0e5589091616fb9bcad57a8ac7d307266759da8a0abfbf6e1254547b4214cb624a824505e6f3d58cc10ec5733d04bbe727d6435a7870af4d91b7c2113cb9cfd04b185148cdc473365d5fd7df6879af7c19df8490bce1aac8b465af443e0234fd113769c84f7e86851bd18dc508c7d9120620e2077b9bd4adea48fde3c5e1ee9ac2a39205bfb94cbbfea7eff5c62c0ee24a96a3421b17a4d4a1b374fcc2c9d767614fc4836e89c9fa539b791353dd8e2179627271ccd04175b43508ade049478bc888853dc5b3aaf400741c152b51e02651de002d223e5be30d69dd7a57f12a0c7a9333fcb09b92b5412a22bb78dbd1e309a9f769333802867e10c05ec586b6381a22e021094cc6183730743b65bd10b34eb2ea4a41f1c5db4b5b190c09d6bbdda1ee1226f9c25e741777f2974bcd9a3a3ecc432ca93651382416dd1e392481acc4fac8cd64dffb185766067a4db097b2502d90542c9fca035f3c0e11a3e753667633fe76530de863b255488942b545bbace8dc0dc454268f49133254c88ac5efec3277cd27a11673aec2de732833f391514fa5299a04c8060b65d357839d15f588e56f78ff2c03a649ed6ebce712a7d831e6bde52f988629c653a8242391d36e86261644066fe5a68eca2bce4c3fdef6326fe5c740eca805758e076ebe2eba721ab0ed8dae182c26033f73382236f47a91fe7653c3be545c2ebd92041e7b9f582aa84e6753a475347a5c6fdadb32a6a9f567ba8f905c34b120cd9cd846502d6df8184457bd0ef18d84aa6781c3b1751f3aa4a15d8334eb748342b25487543a13a878ee1ee50361ce7cf3e5fd4d52421152ec30ad5c9c92ab23f609feafbd06b6c3cf807acf1e4b9ba8829428c25ac3ff9c4ab5006aad33d826b4a0496c2275699de55d0ea55663d553a890351a6324a2eccaf8e1cdb9bb596a0098597e3144edfa1c6dba53339888d02c6a687c55be7bb7b91d6d257b63d4e32977e3bbc7c1272f56b9f3c458e67886745790db6f34f1ed6142b30ae9cfd8ee78d0b147ba2c9f3a341c8b4729e9b21b3408286b824b9ae93ebfbdade3e9368046ee487188dce474c0fa5f59f8dd2adece65ef98bde3099a8b68f3c25c4865ff1e5a5885b22f4d78ac4ca6c0c619c71cb94458f3dacb83b86dc16615f52832deb600e9c58e441062dceaa7b8fb7cc9fc27825a00a48e6e66f4b68d2d5c66c9856d70f41ab57cd7145d8a34a87163a2d31ad3ab3c0385133f86cb8afc27568c440235ce6d3c3b1956030a0df90da4498ee1632c12e71ca829d9bd35b40da0e8e83ff999e96108ff577b92955df39818944af3eb254844a0ef889dddcbb9499233a606137ee547e666a8272d3f203050073b0d7f54a18f585140066902aac78272a2f426c83c0fed91ec1050ffd90404417b9fdea8138925996941590a9139496bc49ee7fced98613a07488ca3730279cdecf9d4bdf8e7023a58629524a53fddd6effba63aeac6df6fa096615427b45f54e8a42663428be10d9c0237af83f214ff058d450633bdc0f249b72a8b7158629d98038c2e1ac763dcf0a06da485dc1d8949d8f99ae997627f776e3e8f121d3e7656814f72bf0949e039f0c408560b512206f998ab4c0a3810c3818de9f51239da8049a7579a84e1ad0894d40393485c1a81b216d3c3682e40caf6fbb469810b4c25742b1159db03a3d4286962ba53e6223c95c47c2e22fa2eaeb75aa2bb7a6446ea2c25362d025347a0aa1e0e473d53466cb38366a51e97fa523f6944c9439252e7425227056a67ccc947657bdb9224f53ae2f4b244726b2f3e2dd6ea4831590f45425d8d09ca3befd9d14c28291b604e98ad40c17d832db84cc568f595e13fa4d4d85e314ffb1a2de58fecee4e96fce26f5fc26b2ef49071fd45da2e2f4a2e8f249629978cfa3c1275934474cd3c02454f82356b02a1029202db26e6695ba352a164c9fdb28e96fc38a1659d52f4f789a25b900a686a56b20f3e93c2971f2ba81c428f818da20a4cff7920ee887d45a20472501769052c08338e2d3c582613a6fba60267f23cff9c16d1a551fd694dabae6972bea725dc44e4c39182fbcd439c3f05672de5d4f3318c2be11426637fa0b6b90173fdf9748331778ce9b6b59268f8762f617c2e13e2490642db81e6698132d5d87b9c6f3c87a7d336e4a95dd911210aea9e42730eb60e327b287909a6e4760bd0e280572c95604524e50dfb2b25a62d06849cf3f3fa6a9efbf8832903c04f6bbd91d77c84cf2b06d72f21052134a0b4647568f75c35ac21ba457aecccabafc1e3a1beaa3b3ff0251647bd2b5f0177cfe8cb082106f66de43158f2140e33c83d3975dc9a2e87bf0a42431df946c59f2d02fba00112ca5a88bf5e1147efca43928c71f09a74e0c5557dd2e96461c5dda8d3dba9915bdd22a4e7719e92d281b4ca0ba1e0c1928b50745cd423143d2e11d1dc1576da823dfd11a092f2f3cbc3b0395a47539f647bad29bc2755c41d748125677d0798a8d91ec4d210599b6a1e6a5e596effdc7bdd7ca25de537880a20728eb303f339093eee4f9a00c5319f7a0bac87d53dc4689a20cd6774a6d412444d6de92a84d06adbf786fef101c53405bd0536bec15858d4dbb4889adc22e56eaea636b59499f4a4cbe4bdc4b9197562b8471b18f1d8102470b9a6e68cc80f990c9a21d70c6e451e12090df252003d09042ae10ba0fb4c7dfea4bc557fe8577679f7f44faadc1c0436035ca7b95dc6cba9c53b7c0125e1dde9f0b6c869e831330df8495000b2cc096aeaa7f3de3d2bc951f4b2f4de1cdfddddcdc31c1d6d075327eeb8b2240f278d3f9531d1941820248f04ef76d95dc30e44fddf899bad155e46af518316872766d9a0aef3235d7f996e1ea0a712d019e9de643abab45134ce148b356df93c8dfbd8ab05b7cd332a331e7144e9ed4f4182a4f2c61b0f5a152b591c605f8c0f88d3c9c94f20888e7e19efc2a42d3ed26f7b98a8c34f22bfd23c881e143f126e60295d80690a08fddef4eb28b83fcd097b34cc3027e29212052d4079c16701a0b3b9aa60036281e55082e8dd0d60c7c59711a6c8a31213928e63cec24ed869e19f5db89ef7a87a42e0297895383dbe4dde3a971f35ff91d90d2b14ab9d0579e90659e62bc48a3cb579cc6f82481cdbbe59a8b39475549f684540d810b8458355c43d477013c5dc6e55c6c276ca67ffe6e0d6de2ce2c48e6c60f10ff0008716189c3d557ca96f5d7c77fd2dd8b24cbba1c8023fabe1e65e577b94e73c4a537935ad9f2e16ba0e5f712a2e4482a4653ebd6e3c4fa5a84cf6b53cd8f164dd1db8763a2ed6d034d7948b22e58a4e120389f3dc30adf7b7a9b30900f82a8026fa21f76f018c98c00de6e8655d06c197dc5e8e824bec4520477b7a3deb8c41b77c2445f29a1bf04f357e40fe645ab9d75c6ffce5168cfc842b3df50f0129b7c56fb9f82256dc80672dd337d453041866502a245d0a570883e562caf033f9992646642c4cdce4a622f466b04668f634203cfa09ac88762192e6e36cd0de36619a2035509162bfa72f379e26c6e0885d680ac6621e9828a4a747a9e8e3e96ba7142c4993f3f0981b535449a0f1f1077d7fd0b4cbf591cd84a24cdf3f1140ad01a830670ff4f5f925ca7beae460929c5db94027986e2bb1294ab8774e3e877468be08267f2a598232e82399753628197f0a5faf1fe977d83b11118b2245a01d8019eea6dd3f120a560f5f9d96d0e6365bb140538381985852e7faa23f151ea3397259e64ecbddbf6e864869017a3e559caba97b1a0925b913d46de7afe31bde181d9ca5c7bf4609edb6aadefc125593ddd620c9300df3b4c17b50b67792f7b3861fa0bd84f33a62de84d87cbefb5dbc7e9c507b8a81b84eaf04d842a4e4c2b64eb19b75e0f461d40147fc6540e126789d8614ab6698766faad9a2b3c5c766a3f093c8e42e0d16f875f9a872bbfde0022d40fb81ea87d8cee3c14fe0e3d6119faf64ab5f588e5d2d5cf11b3a63a98c89fc1e50c533c6a82f1e05e2b1ee5c0b1c34b2ff473ea4d3428a21f2fe3ada7b26df12f095a2bad5679f5d3aceef06c237a8d8cd352c3b80bd8f8ff1dc81291c01074558ac5b6c7e89a0f3137c1ea20eb09ac56edfa76a5c23565887be2672434c22b360ea5d32f215b754166b41030ede13e03a4d1f5315cf1d6573baec18fbbc5d0444acd1ea52b0b903729faa62408524775e81332e8ec07f4920a0c1bc3a95e15c138d65d969c432dd12cb3840e46a6852e2d735dd14dfb3adcd5afdc006aca5e9095b9f70b96e5484caa5cc4b7a16c1d530fb27bea5062d2974cd940aa96b304787ee6f353d05e23141061d6e63305704ab132ec84b8886b9892a671f5239e01ce2c073a953bee6fa0515f8911b9c417b6653f4552a04268503ba8f340c8d002377e211ce0438b96fddd0f010af4f9304f8a9205ffea13ba2485de5175860b1707dc2e9c0a07ba2c1601718878bf636ac13aa1660d36ff69a238a425a404d663d9d8b025c227ebb1a6c49500312e86f3bd300bd1b1a5083597c324e45775bab3900328dc1d68e5829d3b8142ce52197c9f914dd53a9ec4fd4964c0b213e2b9643f84cb54dfa24136d9ebb6189262bf06ec3413fef23258e0407bff5d1a2523e0e806890e012dadd2103819e0a1c2646fe5c8f032a665f26e218075ad293062f0039e1cf87851838e82dce1d59f29401499f7f80e6b5de3579e2a47ee23499641f3777395324f5ca4f7a72e2cc9603c6ca79da4292587bb766fa319a64493b519091e882a835dd952eb84ee1483672190be354a14bf62330cfd4f6a3de38bf05b71cc2a4c0b0f03f7e38f2bd8ebfaa14e036d42400d8817057378a773d772d630023a2854862cb5d4388fd091aeb7264eb069e562297f26b118326569b3007b11c2bb548a4567c791f3b911ed06913ef82c883296c4af723d2132687e96240a4254a08c4315106aea873389aada274476ee4081970541c76f799adc431d19be3487f620aa3f388f05462bc7c25c2710a36d1dd883adcd8c5713fa21da4629362205646e801bb2acf3302ea8c31c18b8c21550e198735609171aa56edfca5861fbbe72dc6e029ca1ff01d9b049e76142ee8e2622e44f17b95bfeb0a6f7f786c3c7d3c2358280ed5d4ed8af7a491acb8a2039b8c08461495833483b009200845bfaa5980d30b5ff77f967bd3b782c5900ccf6f317ba297526b25fd69dcf6c40f6eae8fc7f34d9d93f2adfe0a47ca6f93be84829a764dba68f1dd1d43a29a1a8e071dfed555495561bfa5f7d21886e4415ce0605a4d3a57ea75711ff429dc3578876a22fdab26966a70e9e4818ee10061032488f048b0404d3ddff7b218f2ff129e194c1bf441d052763b64b03469a5da06da7005bd0d97ab205b2cade2af2daa543e2165c9b4c500e1b3655af63a27dc105ab6a98a32ae1d69cd049a28baa0efff26515b228e1ebd23afa23c1722da97087e6f238f1a402fa9ef1844ab3763ae45ca7f35102d83156217bffa039085ea25f09a9c2089df7dacade776dd689106baed6b3fefc147b1c6320f6f12582014d890839bac9fed72ed7caddc43b6b0cd8c6152e898d2fc06d7cdffd20043e5c4bc6629c0140e72784592248a27857c4d84ed4de91a06928822c29e884a53f9159c21207fcd24ab447c34d495a37a35b1ba825cc162749336a9ccd8bb4b7a4a3999afe30284f3b8cd39a2e9db733e63e19d319dcf47bc84b4e913a2050f90846beafb59ac811feaf9a9fae0433fec59a9a01f99d8dc9ffff7ec53ec983ce750a4d823b5b550523db61e904b0c7062feda7dc3b50f577556a80b20f68973e96a33561638a1a79af0df72e9436e846739251932da3e955260874b92009d39a2ec006b38873e77f087fba84ea31773d21a43331709329f5e0aa2c350e32ebda7bb1f43e26b9dd0c2eb7ba65f1dd85f3eeb4dfdde5f7fc7ea6117acc7c4b5777000010e21a0c240ffaac8777319ee836e7b774990dde10a8962cb0518f1ac3146fa856ebb07007c00f6d62015de00b4dfb0691ca1a1002e20d60fd2b61aebbb037bca56c0ff81510fbaef15e8ea6767cb2ca2278b7701b7a9ca5339c3aba025118d67f3b3b3d9f09de375fde3621137374a3d83927d737cd34c9c67e54f509b630469d293800c4a963c10bbafeccd94aea47f24d251df343b5fc1b4dc7c9ff8c8a2310a347445fafa1338a633d87628c2027255a82780cb1428c2f31838074ab64da6e5273b673aeccd3e7f3b3f57f7083361233763aef4fe6326f2f779781c47d06d1409a89083887dcb10efb58f927010907883072b38ce974867baef61447a5247dc8e4654c630ebbade925381ea037548ac13350989c3347747c426240d53dc19319e08294c1633a23d3142209287847718923e114175f0f616e91fc52e51bc29920efa7aa2e31d6ed237b864a978fb2c55d2e1f21849a091765a49b1af0a2ba8b82e5a2bbaa8220a52152900af757000ad1ef4fa6aeac60d4a2c9640a3eb06d487f6c9fc7ac904fbf6a4fd31bd6e288463d8c1e80cea0d4c8fa9ac134ae4863a23bf606a723b1508ceb41945d74e5b94fb20d5c5ccc0dd497d41345850cc70293f1e45a6600e9aad2841d717d8748eda74131c09baa509cbcec83a8b4f7ca7515ed0ae05256b4017b95d5f8c5a0efe631cc32fcaecf10adff883ef9d9274cb666e9fbc7ee343b2786bf7584164111dac65aff0de9ec797ae8387cfec6de9da97aa3ac70e21fcf57201de58d3aee6d8388ae612701573a954cee7d5b4e02b37fd7316eaeb3dafb1d5a385ac6d1a422e55b77309ba6c16eeff75b9dc8db91f125a013c2e1166921675e3a26b0241916cefee99ae0b72b4b436ee6380f8c76bb19e8ded8f87db3f334e3d29c1d4784feab6a7ace64e5d8e8c7a44ac1f0b205f73ecc9f283c7d1d0735b8b0f268d0f0e39724b8534214f24c26e09c31b4e403b5825e44bd95057b2a2aa33cc4b5289a903eb6e8463de91d450573652985af9688c894c116a6a3bf97605950a922e12fab30ed9cfcd5ffa6728f7ec44a0e56ecfc3fa7aaabdbf72461ec763d66a70d8f08961bbec1bf3f264a099ed2104adfa6d6a6bd45a5e47fc8a35e369605f3d3848b79177abaa00b573517727b24c22a964e34804e7761af89f1800d8b1293ef26545b68285d75b9ea6134e9d3562cfa8d31b08b8bc98194c8e3bcac8c9f2ed69c63c6bbb07c9344bc26b5b80df628d84fe6c93814ebdf8ef01eb55e1d04326d2dd6f48e3b9482a4b5d42e6f10842ca3ed7137cab27d53e99a8bb3a516b75557d75139e27bbbf364207ea8473a5f7e9aa89e78a9ee39b0cfa6bf264af75a7620f993ea1d62f5c95da9deb93b60296246dd6fe8e1ec4065233b5026bce5669d0daba389dc3264eaad7b99276da923f79b4d660bec59321326ef1acebdf970ef00f45407f30bb906093050f8303d1dff00448f66ebb2220b04fcf9347abccf51aa668a76139762ae15544171537d0928a089b3345155c247526e2a1328c11aa1c89c733a820a5d08cea862cf524cd3365a1896d73579e56851964869ff50f4a97abae8197403469dc001cdb50db4332e49724a4490dd835379bf7c210ec62b5402ad80cfa07546248bdff488da550f5a51f7263e986697d133c098a162aa008b177f2b47066723107a54e103112ad967678218df69285ca035e420997031742f9937019e994b9909ba8a82af65fd28c13579b9abbd3844e812f2b89ed8260f29712a525c32140eab0154b317d8ff0a4b2acea94cd48d85ea869b1a645f50729db3db9a0bc74b9f823ef0accfcd8122205efa435a03409cb995e7ca745beb348190bb81fa64aa669848e8201a3244ed5aac953d849290b72bfeafa06bdd7affb1c5117ca4c080d596b3c8de9e240e8f0a3aeea196c7901662dd4cfd758902a6cebc63fb566af1f4850d4dd6481a9e0022868de2aa064c6556890e98a12079313877c08df8eb812f52eb6bd8d50fa89eb8675df65e00b0f0e3cba7c00940fc04120b427f800c2c75a4bd1b5a9c60018bef39bc7d8b99b89cc96894a2fc4f432b716d51375081d57b6a540cdc5f727b14c5fa1f76fdec8facb6db8f8f69e49099079c66d04f74069d833793e0c633a93bb63eee6400685d61ca29d0b18a780f18aeb72ab489e0ad9e3c52a727fc499f6fca60e8109b5b8d9a77949aefd305bead019d49715379ed2adbc46c3bfb1a840764234f3f2da1877aec70ff8a177ec2800805baa97373d94f170bfc6417e80bf4c36e5efa307fde3361a56c0e457185f96b0e37288d04e589216c1119bab6fc19c263653b197696c2dd4f47659e9a134a4a27feaf77bfd273c6ba8944df7aabcc52a4001727ebb9b4355341fbfbf53933e679f08671405bea4a8ea5d34bee4f32dc35c44d65b08692d90f8e7803dabc632a67af5233571cafa13965e9e3a776d7e5cae55b222afb5814482b5606d2ccdcebcab01785586f71966c299ec65855f87b54902ebf4547675578f1630b4067d2d15b04600196a3e8a7639c549609219014aa0840036748081bef122381cab95e83d00d7211835446a533b0d985d21d6632d731565e102018d60d2b2a52876935afd3b1206b464aa7544e2dff87a7edb76c004954bfec4ed91daab85478045ec2ded980b6486584bbea57e394b0d95497f8e3dad591dc9fe8135897047c4e5167f2e4837437b28fabda306bdc7a1935787554b4dc5a6c53bdcc087fdf028d39e40f5fab115a5f1823c6d3532d0ad0a57f613b11a7a801e0c664766748fcd407566fb5864a1b796e7bdf8d56edb628cd9fee7d436145dc7e71fc15ba11debb161935db0ca62cf6a2d348fd4a24d8a121b3daab74e592aa1b13a67eae3194d92dcec21799618bb05eaa1e600f6bb259ee2608f414375725e1db64cbf3c8255053f719503f6f7eed414f36d80341e73e7b4a8bdd45e7a37fe79be13dee4a474a28f0631658659b218f6cab4f9d5200815bf544f40a481af40403f2a000216ca30e82e245468a2bb2359d10816dcc36c332794c99959b1b8617b3ba11027b46259752d7242219a6dc596676d165aae1d1ec26e796d726ba5589ddfba9bf864e943e93a27892d3422c6cd1c9229d843d2e208b7e892c813ad4473f80863fb00ab5c821abc572366216d33c7e5afc7e6a796997ce1ec76508078970c2a770a67e0b45bf279c631e97fbef8efbfdb21357c9965c8f65d0562e07df728b7d315124921bd92769b5b679fc2f4191675750e251f366d94cd41b8f98ecac193f68650281b2b74bbb5dc19c9a55808ee87882fb50655279d65f7a355b9f3d245759366fff06e7fb6245d190652d5332377f8fa231bd4252dbe5d0cba0dc61052455b0e5d8c026079e2d9611f6a592a66a5dbc1217676deea7093aeb60a85639f72e0ff764d7e3abe201cf448de55583efdc9d7a4912d5dcb422b06ab13e6399df7833cfd612df1d37d87d435f62562684a0d07097ff671049132fc811306556a2e68975e2605858dbc5c3b31ba51f118238c38f6ef6b30507c0df2e891124482a4aea34eda8bb83172f622dddb795a6d82cbaf4f833d75be0952495d0ae30455d23632e455bf40f844c2a5609fa9b01e8763acfe2284cca1aa3006cfea4c06db45c519a871f6e5a7228b15237d7aa999273822a1275c87ae799097d0c13eca263cec3689c51dbc1d856c2a4cd10520e097c08c0fbdf4254853a18205608c21726dfe4fc3f075a7e63d283c34304158a516e30e12bb05f0d6e2970510ab356df64f4fbb8423af130c98f28b943821c8e9248ae019f4ff29d98d00af1a30d67fda8e80872c30365f0efcfcf3dcc36e91c3aaa5674725ac96a4788959ca5e6b27ddf8899ee490fea7233a24ba2a37451b7bc57344b8177517a4c763c15a5e09736e2af293d2ec62f8beace15d7ea1ae298c529f2a7ddc5b93cf0ebb1071d9a822280aec07e58ff04531d213c0c2bfcb293a8948319ce9344447224c17fa070349bee1085ce188b9b27a7d554312b2c3f3391c4219a40ffe979d9529667d21b0ba8aacfa799b46bb0bc849854d9654dbb01592318a0b2484f047d539d96d1c8adc2a68a72cd77b659169fcf20b95574e502aa6133ad432374ca48a212c4cf6889550598ce9747118bd4f3d8e60a763e3d6a064a91fa3bcaeb76e4ae135d1403aaa8c28cda0cbaa8035d53e48c78bf70780b6bfec02b3d740c2f13cf14c1b5fda2deabdd639e8b6d647e9c7de9a10c373ba329ac32675c83b76853ef693fae71563946851b2e4dcbba9e0c479b7469a3e4c7e00fb42f907d0fcac8201837cfa1c11f18feaf650aec32337788b27eca25381bd298acf03825692810676df65a8a5b7a8fecf12883439d774ca4a97c29a146c724422ce16455777a7b5e7adb17dce85042171318cf930b858a1e71ec0059cd5318fec462e4d41cc71368eac240f21a61468aa792e5a5b157780961061e4e73eccc44184786076bed2e374a0dd1a79b3cb1c049dabac7cbe7d9efd176d8b1aea159da02df5edc8c52e6b4310dfaeba8551fc85556399ac3e9d7e5990331e6aef6c4415688035472d3eb0031bf091c9dd4681be9252b0472a55919e1383bb234bd5d36aecef7d5168f56b37aad3015c25de449a354a2edcc64d904437960d405aac4172055e299b2ff7b6c395a3aac2564544fd2b6951292833f0bdd19c24ba3dfd5b36455fac9ccf11085d65d0e636c5287317ef3f995212a30e374c7957d92c6875884c2543733e2e6cedbe8d12d8ce714ec146b80c62db48ee6b660db34f2e67ad5d4508cc30956b5169ebc2a9c04d249b1dfe9aa8c56d2fd4ef7a805e9eae83bba5dfa30c3afaf03e0636e841f9c77d874a38b05eaf4287bc94c982173d2b0303b14dafaaf29501063b8a24196d66ce06765e5ebb51831f1584d0efe720c2f7aa3b220ba4de89a6f2b2aa6bedf95651fd2853bfad8ca3a906658ca49beda4fbb904c23d70dd8875989fe7a3b89359f3fd89b496fb527a599f6c7777b047f7265f02adabb2d1135ee34daf92df39191905896679aa116ad119ef9c48f7da27795d32ad8dec7792547299e9684b20f337435b4ad9c21322665cc1da330eb24274e26bb8584800ca224fd5f3acb9b0c61d8a5e26892ed156d0a7498198fbde94a29c502af0cc354603df86a119881dd92262b50bceb66c879f8d799d347db77f93367ea07111cb5d2dcfbf808e7cd2d63f0a0297efe3314e23f40aa43e63fbb19db9e96617bcc558fe4dd1f37a7cb9738dfb0f3c48c8bdc3210078bf5fdd0d230758de58397263525087d5222cf7c5be60324dfa9ff121981926d3d50f0dedcf156147170d99ba82d2e3f61da9041e831e323a78a4066f8c3fbba6ad07e1466a4c7ed0c1b3ff9cb37bc0d3ea82d6907c6f7faa203ebdf1aea8da04224bbb8b904550daecf519a910d9e41acdc9df2530026812128d15d99a3b553b1a9bd34f8c11cab3609ca33761ac1e549c6809baf9d2941d6984424771e2bd409dd9cbd78bfcfedddcc6ae14f58065d86dc8d186612bacea2fb343a224a486648dcfbb14b1c65ba87a56a718ef9e4e1ab9ee57d01814671d79bd27ff09b1807560b21cdad08e20f344f763b236331a7cac8d492ab471b1327e818d69a414598eba0e4a66c960f48e6568619ca2d5723090db7c2d69146ca5cb53e8cb50cce0eed16bdcf5384284c1f474d1ee0420959d27a64b81c8e57062ca23c384510aa1ba5fa451fe6646468ef7c7b99ca1744c07b961852d2e2a36d99b7ec061d572cb41a815991fd82b084f62b6b1615644b1e88d61bdd49b30d670e460e3101fcc144dcc656d7eaae83d4e95aa0269ee2f05b1b65e3557d21ec400b03a2a58b3b7db3c08c41d6f7b6bd9d42d4b080426c9b69dc88804bdc9423245913e6027dccf30f276c0b3293e58bde2762d097a322bdcbf39b11b17af57fff7457a9522c69ee939739a6d2bd355ac97324b5830ba9762793abcd93806ddf4709333a0b6c1d92d08af6eb542d40447993ac5720aa01f6a4540fd6e2c1fdd1c8d06a2a3c3bf6d0d18f1555ac82edb492cf555f1a8e4aad527ecd2b3aa4355142c22de3a4f13c5034f3a1bc42397119ce514d378bd655716e6a759b1efbf5aa4f544243ded4485b58b7dfd812e0fb59af65ab1cf87978a739828175cea24078ddb523481efece677a5b3c3e0c1d073bc5f8e2cb565396b78cee50fb4934c15ba7766b3682e066be8a84459370722b4c062b8c64544af57fa9783ef1ced0c268d16a6c4d4c76cf5b442439f54c18e15a784d03bbd066678b78f3c95d97cd638b70cad5cd92c4eca57ba30dda6951aad4e918b7892aa0a61c4b49b42339cbca5c75e2bbff0a1b06f0c6b4c7182a04bcfa768ed9acbe9a8084901e8aa2f1cb300a86dda85981a3854ef9885040dfb97a83fe64014d58a494f2a9ab508ff829830484ba2b508f33f2e2d6f840b719b866209870ca2df0aa651819cd55cb4fb80dbc486fc6995aebb19a83a3267189627b4107772b138cabaa1118f5160552d712e433adda75ce99f51f4d7a12d13d9b04e35e032e55b47bf1fac71ba49aee1a98618355531a4e4e12a0c757d1df0ad0cb7aae084023782a7182b7133622501fe63f1b4c20f52555fdfac6fe155cdd09a45651c7c3ad2b944e3477685c2ac086efaf9479e07596a0ec2561e391f754a5871dc31aad870ee87ae42c0c2869b43607e07dba91453195b161a270bb2cf1cb74ddf809f696eeec2ff5484b431f8ed3f80e055be1d8e72fff4adb8b27e729ef7b1cb7cd323f5bd3e41ea571ab7c0a681647f218f630a3ea7346006a978834cc8a8bd4dc6ad35a230fba73c5e911cf0849d93a4d7a351944f19a995578ab2c78d96dbc1a569d7d2c41a11e2bb3f1215b48d1da56e0aa2093f2dffcd0708662971ed66bf08f835be56c9573eacd6f601cf37dab08dedbffc340bb04ffe031a9219d13be49ff223e23bcec9cdcb90f0abc4c0448279d3bd3f0412ce5386050ed442b066c4d3475038ffa0a0a026619302a2c496e5f4a1b73cc0b30ec820bb433d471ff5a1ffca93790f69d04e29cc68f3ee29654365e61976a94626fb6db374dd0b9d1c9a415194b5a8a66d942782607880315e3506ce5624a0c1d85c3bc8566a4685c6d0dc99d39c8b3db480c7a154b94ed91bce3155b7e273f5f53dae460d5f97ee86e7780e15e61a543d4ba705095457ce813e4c872d7770a4dac0b31f7005e9aa7a92a063d043e2c68390889d734859d4272fed1905da4ae13849d803e5c12adc81bd2f55aa9292baf4dd29e8bf80dbe2aa0eb78231e9d502869259291226bb9e8bb46640fe6c2c77867f38b2c46053fe7cf9b64bc8350499e6aecca54d6972c1f7bc7da4880944237d93cc29ff538a20d6b94574c6992b369abf0a9f1f20902bfc753f15dd1ad6fa17478924b060cbe7b26b8fe2f18d2bc8b12c16f09f97cababf477738d4c9f465748538dc75b32ef794b91e7a7cfee3bb287f8e74b8f6f72ab9d454dd4342582aded1e3cf25701b4a23cadb6bb826e93fa6b6696ed25e9d6f149fa58a08d90ff42145e069cdd47d574b8b36ad334e632cae0c0fdee575ea82ef7b89e4ae5a219c38af5aaf7c6c933ed27e856bb3b5e07bd5ec16d312b62b125c1fbdf532ae2bd42d7d5c80968f654a836eb76ed3a237a0c0cc1e4c47c6e5dce45aebafe6c1072d1f1550f11fda7e799154c0102cc85d298da9d0b2eae5babaa9062f5ff21810e5500dcab6eb298a69838e83a6f3d8be33611fb017745d2bc73e62da41af8f9d0381473e98e175ab99c6a584a2740140dd138472319961b541eb56bce346664f1c332007f63c213de1e16ded14d2b4bac626502ff405d396b8f716d483568a4b1c3d28011b803d9f1765c92760b57964111255135fb3af4a8776941a64400bfbe0b06ff14392a748a80a90520fecc9117b7f21b7cac13769c165154394a2af6e558d5ebb2815728086fd41d86f167760cfc2e943311354a9fb9c6ef72c52fa14f28174772e3d85b55ad4208dfd14b2a79ff8aae8d4e017dc398b407f51651954c23198b9ed8da8f446b149f624cb109349e8902a5266a48092559786023057d9736804c084ef17c7916e1f15aa5321c7319be12082ba3ae9f3ae5358964a571cfec311b05055866377c8d38d2a1ee4db5c6ea1c5366f1af9a7a05d490f4f65552b0898594f21ae720f9827fae87ad2a7154d91e1969a6b9817e70e2ffc50bfc7f5b41a6fc02cb4b8e58c41090458469ded6b5c6b4ebd14acc4f60c0dfde42676cbfd115280bf3d127b9d13eaf6d884ed9f991faf8f3b44fad2d6b9ba908d2ae43350fd2af7606e29bd3e9c07e4bf04faed13c7502060d5a8035f77bc898e57581f49c7ba30042e532c0f3fe0d5cf9176f85c86f73ae3baf8d45560683a3aa958927e02c9e31ac0b9c70bc8f830ab69132d9580e7ef9ba8d9a734b2b7dc7b6fb9659252067e0c6d0c6a0c200882a047650bf0cd2dee2ebdb4db3cdc8e11202633f45804ddc41610cc13e359713e821e1508e6a6177f528ce3ee1d8d3e524c3b557db397ba85dbf95732439f2f5a06c1dce42795a7ee8bc6ccef2906e6b49aa1bf3ca9628bbf0495a031731391d03543dfe2761f411a3337f97372b8fb67f4fbd398796abef8378b5d98ffcc0cb7c7946807f1f61bb9c396c37ee68f4c947dff573251df73f2f7b53f33921f3537035ba2fd7b26dafd9b68cf2d27219119fa7bb8d5e5cd692e34a2fdb9561f6e7da9b74725d3d365a501bcc868095080ef005f9ca8b0f5a4a53dbac496630ac01000a02144e934a3a5868d0110806ad5a70c23d779b6c32171626c991f0507348f1a37da9f62cf0e84b6000544002d9040ba699d0656f0820a4bb0c803d5f10b9b2e98887388b533b8f2bf192683fd244c4d0d9d99d14098da6a11e16e978181c1749cadd98ac5e48c9c99cd3e22dcc87136103d5fea683b6e63135be2d72ecc2be615db951f47363a71a317332ead7dfd951df3b7225c98bd4c300f97cee1d2d96c361aa12172990e49e02212f9a435f17077fdfa9c462312ed99477d4d2a0952411da28f48928822dc2322d153a5291cee96b3ea49eecd52c6c4a0c2d53ec683febecad32dfba0519e34b2346f9fc1dd95455933acadcaf25c4924add25a25fd1186f6fce7e68b7db22f44df867b695a692b9ae83b8d54455f4429ad2c997229b594e3e87f34d1b7bf81309c97208c67f414c7780feefc0793fecb7bb315b6eb6c636d345ac274e098230cc5bc4277483130883b243678b4190a4c10bfe54dcde8b76c49558cdff1a6f3555794cf6faa62838e340d339b220abd08dfefe0fd31f08e35379baab6acd19cf6352547d430eec56591f62191484a2e53a169122e32f30acd9d1eae3f096b4d48292ff28f51f86f20dadfdd33ae55f4a2d7f04ec92251043b1f0a4a08c5f3097d3c289aa6bd64244cca97542261753aeb2583a24b6a6666648d8c3556890889969f52239fcc30d3557d5f4d554a0a46c974455591a395e51b55d117f91b87b5d90cab6aa2b4ac6933afaaaa9ae14c568fee3235da4c26f4f94821a2da8596ef33cf0b977e7d29e1a40ca765f9ce9232528894912c6e730993afaa9a285467a6c644f0132316841b849bd2d10a5268e98aeb90da727259da5469b29a392ecea22cc6e24dac8936af08ab1e114e798b93107d8a88e344d5435170112da6c9be8f5af438a6d664a244b90a4d8b6932cb555aeb5330c7f7651edabbe8b51b9df23409fadad38d035aa47d0445f2c93449cd83f2dcdb2c5fe435e553522aeb45d9f3beb5d2d7fc71388ea91d57967fd9f3289e393d1e2f7eb003143bb7af7f63aafb7aa3299a684ade40ac9d22ee3d25da6c51fec31b65c6e39876068e2f2828af97c7076ef0e2074698782673ca23f143d32a5c29541df0f321c5c8a9182d4243e601e4cb9007e25219aa9a794286fb7a6b2c19fb98a1a475080de71de13ae7795acec1c5e8faaefac12c07321ac4ea0b6e5c5033039b2c5ed407bafe8eb02b5e06210e680f748da08efa026d45af257145adb5f2a81ff5fd085628e615dae6fd230c8d63c2807ecb950af4b1c64c5405fd8d22c7041f7cab69a01c2050cef6e56249235a8be918f9645ea1a4fec452c934719893b7fc7c7dfbc112265f70b8527f7e5ea1a58c8c0ccb8fa88a0a398828ea03398488d25eea20da40c62086f2651631621c99281ef4b93d75684f0d52f93d431f490f52f90e556947447e43cecc506a54c571b0088773626029a80ade9406340b2d7b20c5a6b794d932085a1a41cb67c152c81156325150cc2b34a5745ef1a2c50a12284f9f72f251f2c7cd501e411265cd0ca5169ba82613f59ee71a229af50db73ef7224d452ff23f1145556b78c20feac0831f74610b7a78a1cfc55474c391255de84311ba1086d80bfd1b5d248c0d9a3e4abc51435391a62a4d534d54ad54cea6aa662a345da9cb9a79889e4a95a69b7bd1f715fb6b3889fa2efa8a79d08fdaca086ea9abd038ae8af24a954949c13e625a93194a99205c2d681a84fbe9f885119ca06d94da1671e910991952158d897d7e82303d4e303517d971d2f429fd7cc53d4e8ea25f5b5db82437551395f2f26dcaa61ce5be0baa385c13bde8714c8af71453a744b16991480d57f4512721aa626ab60361340dcc216a019e9182eae5059d30c208238c17951650d4a7f55774f85310092474cd3b47d4277828345d7929ca8f02201a0a4faf3ce51c213243595d9535a4067757221e1877cbd9f734aba4d552347f6df63222fd6a419a8a72375552cee493193ac76b91ed2d574bf22b4b7b324df23ff4abea4be1a47c524229291f27aac7495b6d16846b7f6b33ed89731fcea73dad2c078d783d9b28d1cbd79e94b4c88a3e91e8e9149db49c79eae3e43d55a09596bbb2a68c962f9f097aaeac40dc5d73a642f4172325efd7296fa9104edf507d1a648654c81216192aa435519bc6949c7dba827425e9faf4bfafbf4bba52d6f77b348401f77bea9807cd2bda6fa97d45eb51e2be7e1552fbf78ebfa7f8cbb4354349592f2e77403994bd2772e6260f1097a3c2118a249aa216bd18e9229aa2b6f46bee5efb9a73ee386ebb37c7688a3a05c7781be3559e922fd6447daaef569725ef4f6fcaa1f2899089fabc7c94a72349c1efed13d04f1549d377a2827fafd8df2119bf39a8ff48e98cac217f5b4d414d6b640df9d48b2038ffcd8ff339383ce87f5e3ae9741ee73de53fae42a84790558b588fcc90c60b96972f55f7e5cb19d2cb97352c7fdf25a9b2a6a685d04f79d9877843266ffa5a1f82c031863ef48766293343f929785ba13f0ffa3c0e07b1602928096fab77656d14bd2b4b45efca8a4f264ace6891f91b1882a2a43f590a096510789970b5d90ce55795e7871bbd30d28512f9ca2bf7a307c2d018d482303156b0269ba1acac78a3c61b5357225a5697966f377fee3b8c4df451545272159a5651e1a4dec023a256c953685af42938ea0dcc217a51a6422b327dc403e5b99af2518bde5f844bafd5783cb50e99a19475f684bee8b7a6b1341196b3196a59725c7c45d1d75665d52195c59a28afa25a5f569590bb2b6b735425b3b802b651b1016ce8683f96c3fb653c823e25ef9128ef0b0a7de867a1dfdfc5e0d24ff908fa8b640dee1465392bc3ad9f92578840c00ca57c793c2d47798af21245634941f5cc2bf4e34b1d324d1225afd0cfd583f7d59d1e6e6551d8dd5a4ccbbfb8831b00c6abe6e6452527cbd70c7dc3d566f18bd1b35e1459595f71afac89d2b4fc3aa4a5e5579baa64a6e2173395c844452f8cc0d272a6a5ac345ad61a2f8610d1bb26d152be572a6713255f3e99a899072defca11fa01b3bad2663bb458518289de3143f90ec6ed9c78e180bfc07c042770939432f26766b4fc172f0f177cb54002919c94f1432c168738c0010e6f78031326530c5910a18b3fc4c10b69a0c9c18b8d11dc7ca0069e0b74306b8314bc40b2c54bc56207378864884213a490c50a0d375d90b088c1466b976f10ad300525a0610b4718c31e90accc6c1978c006900d2f29d379c19330e839279d3e9fd0408f74b401841e6eb0840b62c6e0843bd4a0010aee0627cac0c5ca0f7568b2871a781ba4919215fed0e42bb9c005252b00c2e62bb9c005a52f66cf810d13f905cd7451ca71d4ef1664fe4d3c5cca059b293fed2659b1416f928e1aad9b12641bed429d4a38f1da515d090e495725a5db0bb20de700ad82a6947ea8dd4c8f16c2087275f4220735a866f81822404b031071d2b2d483781399a886080912d3eae288112211c54517908a8e286d831cdd6d92761da5ff1d1780cad1fb437aff56d1fba5bb9452e621487739d96023013680b57c0e53fcde0363c1ced1e562f414a5b902cf5536703986d189d8125ff2463b9ed367e0506077f71e1823c1da57cd1225499050cad55a2bcd91a352666e86d20fd682210c241269a23aebd58f3beeba699074e1648d697f245dbe274997abbd7c4e7e12cc577ef9a50b49d698f33590f6f347234d43cf9faf2712319c4f0a22de00406c990188e1fcad1e40cf4722a262fc23b4bc8b28cdd772887621446c1b311d1ef1a525c15a315825255aa39ce1fc8dd2df356b5c2c5139d8578c29ceb93b67e802f75718715ea179446ab2760c57641bde00fff8257a048e9a3f62dbe211381a5083a30147bc8d1a2ebe9214715570f65a7bbaa6ab03f31ab80c228a72a18319b810adb166a8753e82301d1f5253e37057f146e464cb4d5aebfb828ce122608e38f1c61b6bfb1fe634e1e2cef7dfcf0c05d63df0cafcf8f27d07afcc6d09dfdbfa2a9ec7f3d60b57a5d3b91cca7b442f5f8a3c95100a77a5f678a28e48241289442a5ad451f1c25509559ce4863c3f5d5db82b3abcfadfe39828d9836b86025b6badb552e2172d4246e4a0bf50921b52815109855e8230a1eb0a038d8e5fe86805302cd1f7fd6a01fe1b0e5b4d9035c0fc8552882117b246c85925687f69a59767dcfd3d25979bfc47a37bb9df9e21b87cbf3d44d0be3d44b47b8c74f2f6cc68f71ce1b8a70bed4f6a9259ded6ae354327d2b9be191844fbcb97a322183a224650aa6de92b954098ff2d647cc5bb24e3bfd3b1010840004018fb5e0fba0a4310c67a9e746de00c04bfff66df13d0051e0163402133b0051ad1fefd4ce93533513b6cc9d26ba2e4bffef6e88b2795dfb8c9fb9bbdefb2f79dd0ca7b30b4f242cf5a8ee3fe1d8623e8d91a7e6108c2e4dde9743adee970d1f14e00bec8c5fd8a770f5a02bad29e79dc67793bc457c4fd1f22ff10204caeff9585e5ef7766b88aabbcca499b9f2743882a44fd381c0ef5aae765202f356ffb1f679d5c0e76b5e5f0aeff891e7c20dae29006147d32be97f17d2710e6e3c8f86448cfdaef0339f0e3ac17afb8f2bdce765cf7755dadffd5e7ea7b75d6bff93e0ebff89f24848a8c199dffee59fe7335c3131dbf8039d105d0f10b33c4680ee523dd4cd4bb66e8af8418facf80c91afe3396c81afe336e68c8f48c98aca184e844bb68e041fb2f9191c32dcc845990a1ff0c987409af8005edb0d08bd86285d80285d8e20fe2d075bdee0ba3206b845bc41af753ddfc2015d15b3e5cedb707c1404b4037202613c532c32367fc0ead3c1eec510da1aa0f4477517b202ff2e3f6daefd85ecb3eb4a8efc377787e7b4f06f2c2bdddc3b5d6c9b5ffdc73fe7b20dac3218d960ed39c6c02c32d0bcb9b662630a44bd49ac6102acdc212aa68935b8279e975832bf5d4a155e945228556a44df3df610b04c108c6645ad6dcb5664bcc172d3b0ce78e8c27a9ecb0e509a2fd45dba3ca786f4fb47cb083657c04bbac80f892a2ed04615696f0bcf64d785ecb4d74e0c31a37f92b11b3ad2cf1c47bbe8927de937f68b1437bcfffd8fe89dc84e73b907f68efc9df2cc6f8cd5ee5c5d530116e721b2a3a823666e8412ef7db868ede8ae76932af25334565e2174b42574d8c369384ee8b2563d03b54a2dd1382723968ffb83b23da1c3639ccec606466869cb7b2881b12b19ee7796ff1eee1e59048d8e2c28271e507e2769e0b1243d70c8d59bc11e38da843ab6f3651325e847768732fdeb57b19afc9f8ee7402617a9c4018afbabb4b7797eef6ab3d8139ea24694ec7f9c0b79db7204c07fc0f6fb07b0b76ff81303d7ca67dac34577fb66eed9ec33d7ca62da788db79108481e1fcc77dadb556aed6cad5daf94ff41df0ef573ca9ae3e54708c61cd2aacd0ca432b4fcd74078744443334a01154835390fa62a9b71568d2c7d03e08eaa05aeaaea484538281b9f472c2ed88d42674c0f95d1c3518ba603a2cdcadc20a6bc7829cefeb8436da3f9c098fb4bcc655e489077111cf5b0ed42a43260afc40f0e3743e0e17b7beedcc22dc1aba40245c8aefa7e034f7fe6372dff9b08c2d1df79c4e85354357193243afbf69c8f48cf63c11f5135886569c19df3f3469c616fb1c10867b02c717b0032ed1bd78f237cbc2dd2aac2be3e4d4d9024d7afb2008f36f3b325ee5f306a249ef2f0377200ce955582a43268a946958f01f99a17b7defb558fdd80cbfd913926ca22af7fde6b8fa1c0feebd6f36432e3bc75d926c86a418a9c90c9d03a418a909493684f54a5ecda06a861eb6f6a56cb8379e0aad7e269afc475cd03fc3711bc723e35971be0882e0db3c70956b4d54e7a3f6a83c329ecf23c4c3eab027a6833d413c2b8f8c478887e551852d95ff401815f08a3ce18c9b5cc3a1cba27c11ece46dc54c77dee6c16ebad2de5bcb558e26ac99a8ee3d6c4dd4d4336c4d54bc13f5854726eade0e874666e81fba381cceccf0c80c699edc1d5a790ffe05613ab9075d69ce7fb3a9002d09206e68e52607b1e038431169ae54385600f1ede823dd90dcf042627c164b31557a8aab39afbd3c457a4dd3cd44916e66e8868822b92186f3a5fdb71613225d5ec815a2fd3b96747996ace13f44ba5821d2a5f4624997aef5433caa6ec815a29f35447bd7596bed73dd77d9d65abf83ab18e9ceb78030d55afb2d5783382cc24bba7c4bbad42fbda4cb130989d0754426aad3922e177c4b44bad8f79fb144badc3c8389ac71235d6c9e11ebf21301992cd19e636c89855308871016212c8243d70c43288434da9f0b8f8433da7f0693300a3adc42fb77a17d874cd0bec5167ffb87bb3d2ad0171135a309c866c61d3caad22b08d2f383e832c389acb159b2902e33663df0f820de50f90df2e0c02383e832e389ace11305be771ed567f58c26135552cdf00e11557a410c7d8613e9525ac91a329ec589f69f317b5252cdd20b589e34d3a4fffca4b4922ea5214164ac58483398489752901931e952029968f79f5cdc70b3e85d729590106bf87bb8a48418fa3f2e2d21b6f8cbb0420da8ce1cd1fe245c0a52f242cb94a0a0fd91687f3088f69214b4bf95c934e410512521338cc51bf64b3cf02459a2b8df2115b47f2885e8521ac2124221de104521de50e142ba945a46c22d3e4442742911d9e28def3d04800f85f86db52bdec8ef2f36e3a8e990ebbd1452ef924b672cf5f6118cd9ba2f0921bd7f890747d033be3484e5fd4b2d19ef5f22f2ef1f4d43643c005a5a881211f978877010f241a808a1248cc0a05de506f1461dbd628b3f87434790a1bf0a0e1121b6f88b706808b1c5bf83434088a13f07877a105bfc2f0eb1628bff874332b1c5bfc3a1202121dadf619dbfbe5910daa170ed975e1ed5446129a897c35618ee2ebd4aaf89b2defb9794a85edce6a583d05e10dadf03ef0d898456738b1a9fa7e71677872dffb095b58d08b8f18b26d8e8f8c591257a081dbf38d244874388e1125eae2f5a56604141660bcf0a09da3b5d330d596cf16ad4f0be0aeff7ffd837059a8643eb87bbbb9647d5d1784a04efdfb5e28dfa2bf8dd51c197eccbefd7bfc3df3640359ee2c0fb7b541f787f8f8ca740f0fe9e96a742f0fe9e1acf0d8a0aa58582f2517d5a9f9acf8da758f0fe2095a7ac787f50cb533ede7fe43df27c157987db46077e1341c5ef687381dff1b5234c8adf31b6a36cc7d9097ecbd596325bb276fc96ae2d6720f05bd294e0b7b431e2b77c6d09e3f15bc6b6946d39db733565f664ede9da73664f9a3d6df67ced09db33b6a76ccfd9f6d57699edacedaeed333eb05b819d05784e81270af08c024f1360790305963db0dc5892008f008700bf9be483007f0073007b8d9ba406b005b0fc0a6027b09c00964a6089847c07601d980138ba7c1e38bafc08e0e8b20438ba494a009f00473765404a81a34b49058e6eeac01358e2d2cbab7815e49756c1af20ef8ede2502cc2dae8e4286f1cd401a4f19f1fe9c96a74af01778ffabf2d414ef0faa3c3582f7075b9e22c1fb83359edaef0fde788ac7fb83324f41e0fd392a4ff5787f8ecb533bde9f53e32928de4df0fe1d95a74ef0fe9d96a7a278ff4e8da7a478ffcecb531d78ffce8da750f030bf808f9e6ac01be0a3a718f00af8e8a92372fc878403bef3d1533a3e011f3d15817fc023e0459fc4bb7cf4940498f81b1f3d458167f9e8a92626f0457cf49405fe3f7aaa022fe389f8e8a90cfc8c8f9ec2c0e78f9ee2c003e0a3a736f0427cf494063ef5d1531e78d3474f3df1a88f9e0ac19f3e7a0a044fe3a3a73ef007f8b9c5f5a8dce4af82bc3b29c855e4cd690fa6e23d2ae77e77a8c0db8b951f15b8bed8f95181b517eb1f1598be58fa5181fdc56a1f1578bed8fa5181e58be536aee314d1ded3692a707c095ba1ebc3190f69fc3d185c6d18544d812f0af0950277a2c09d13e08e0970070acc2901e6f4c01c1e98b33148020c8e0083346ef21701064380a39b0af020c01fc0d14d03780fe0e8261bdf011cdd54e39fc0d14d02780ee00de0e8a6d36b004737d1f80c600ce00be0e8a6f02d802b80a39b00f04ee0e826219e02b889193f011cdd947f87047074d33f1338ba49c62f81a39b827825707413cb27812300011cdd14e31f8091c0d14da37700d6818fc039b0111806370033e0056b8c037f33d7f0e70bc0fb2a00ef4f00de204cfb23006f70a6fd5df0e6b0b4ff0dbc3934dabf08bc3930ed4f04de9c99f64fe1dda1d1fe28bc3b30ed7f00bc3b33ed6f00bc4705c0db5d04c0db670680b7d3d8c0db57db650480b7b35af09eb113de534603ef391b02ef6963c27bbe42bc276cbae68c10784f9a12de733503ef2993f19e2c8cb78cc9e4cc86056ff99230d78c0ade926625c25bca48560ade3186779485f08e3310ded146ef6f163f78877a7f331bfb9b49d1e91db6a49028d8c39b061e6af437f3d4c6e95d44fb225be6dc34e700be4d7577583f6c4d945ca2ad8d4fcb5c03717768350bad42413a9796f2394f795e6a6efbaed502c2c8fa5dcb53ad0d6b78a3696d48b47cdf92e8acb91a2df1f61b02d818238e393f4fcc34d56c675add234e85e5267fd9b554589e227177a4c2da5d99d44a6981043269108180c31218fa11165be8db3d5c9af7149dd69efa9c73cee94e7d7b0d9f62e24935c349ff8485ac41e937c3588698947ca1a7d569a54f3427d569755a79616dece1b01f709470e75b87794abe44bf99a98d49ac896cfb6ca3aacd0979a2a5a042f4cc7435c31904bab2b24fc6e9b0bd62583e5caf2179cc53bfe5ed4eb4fc4d7299c7dc24bbee3dcf9bf381bc44ff39dff3e6fc6906f212f3debe7bbb870b82d93ab9e047bc81366ed176dd9bc0f0603aae8b7b93e9f81e9ba8e8bfd16f427b9a7f68b1c39ffe8ff95a8ddf04fde14f63fca13de6709dc3d5f2ca8ef9796bb9296eb099579a981388139e37989be2cfbcbddc147f7b49d7bed8a20a55d8620b6d464da3b572f4db36d2ff083402912ec7711f4755a5307cd2934a2e8b231dbf19469f73cef719bf185cf9df05411046aa60667bbde41c7d676e71f7d5314a50a73302913a608e7b3d1e1414693f281fcffd7c3e9f8f8a8c26d858a26feb104b54c628ec146461e829fca5761089d17c3b6fa7f3c4e9ed74aee759cf7652f4dfc7797fcbc1e07f1cf77db26b7592aba0f5be0773642d73d79addc8e12aa77215b49e673d8fb3f503bb5b5dabd6f338cb711ff7d5ca792888f53c5b6b4724c4ea8c8456e111ebd5262f4e288810ee9b71baea3da756dcb9ba96778b687f1953612b86458831a2b4d2cb539e98596f4d6c31d9ce7745afc28447eb709560c59773dcbdde1a41e540bcc1e115efeb2fbbd6fc78707768554346264adadf17645d3347b4cb5017a11a1d42c2659016e524da1f9ca11197d3dd5917a59432929a4c2d1771b955b7f26474cef7e47b02c6689754bcd4177819f3eaa93f324dde8576d9cfec40e51cf7e98013a345e7a7e0b4145370fabe47c30fd1c5fef78930f71eaefa721d07729a0acb7d4635873bd96f623c16072035d71dec37b145fec55570205ea2e55b4783966e062c75a7c345569cdfc0628bfc4fa6be54c1dbd1a077d83ac9e8d212ed9f0eeeeea4d7d8ef8e78301aedfb84d49752765276db67f120251329abac4b4a373394d55aaa5c0d694aaf924746e7e0d6f7184fcc97c5adff7d4f5a723343102cb6f873fe996ed7e1ee7b1665d0bebe1f0eaeb55c57a7e874c76d4f66283915e8c653315a6495f7072d9982d333de1f04bb51c5d59c07c083cc105d38ef99854588c72a5f71d51c2eaecad797a1f2f6036164c850796732c3efab3799e1a7c5d8b5beff54b0378961ce1e8be1f71e1ce3b23880ef5fd002d58be7ad3ff6d80c5c05a765646712c36f6a19d899c496ef39ee06fdbdb321d6f8de6a8f8b689f719115f7a2bd4af6989bbeef6ddd387e135be2740df476f744a5f1040e5b20f85dd769db13afbd967d68ff842dbd4a4a3ab0f42a2959a95b5ea9f99be8407e22fb8d9bbedff2f75a067f7b4ce67e1fd8e9749b93194a00e00d4283f617820666b92413dedf379b6149c9bcc06643851deede6a72f4940c0e28a594df04318a5359c3b83b6c79545a27a58d0e08239fd4e06e57dc1d5ac5c15ffac9951c2ec0f7220853021ee073de7abe22ae7d0f08d3c303c278ee88cc10c49c8f060be9a3e861618bc69393ea143351376bb9d3e96cdb6b9ad675f776eed5fec60382cf824978735a9443239b0cc432fe7b74327257c4adb5c375b80eadd17513a1ab67aff56eced75a39e3e47079852be2d6e7b0b4914966e8455c226ce85a6bad28e0d59ee77928204ce5be5a6bf56aad5ead5f0f9fc1709e67dff378aaf492267f8e9378b896ae844409be973d07d7b33e93204cf5dea3f2c0ef3d2b4f4c162bd0dd2b7eade1509069b2d9a3614fcc34d95c44cb56be9741556c9993f3dd9ab0c585e16250779d184b889021b11a1414141a9afb6d37292f88969ed7637b71ab1972325afad86edc247f2be27a55f0c2164c11295d3a32999f511ebe8f9343078c9db7a00f0f524aeb59cf0b5bf5432247429a6931497e9f0d2e0ff99a4e42d3529e5658c81aa09511c451aff070f7c925dfe2fa5ead6fbd062a272c4eaa53cc69654f589c54a798d32a06085355544eaa13162310a68a9eb0fc4925fa538c74895a74025fe54473529db0a0aa29ba131627d5090bf059f0e654b306ae7932729ae14ea72e6aeac9e6a544e5f76989f63fdd9c98a87cd42cbf4f4dbcdf9e9c54272c524e2b6df113efab4acb8f1d8b49ef61958f20cb77fe0b7279d4d7f40e5b9d19ce4c1438844a83443adf79ffd004864bcbee3ec968f7dede97bfe5d866333b3f0fd7af99f3d67b2e0a37cdbe2154da7b6badfd3c6df3fcb2c5f54df64d4f86a8cf02c2541c6e71fd0f736685a91cee7418fc4d36519d2ce34db3ee4d4fa44bd4dd10aa89ea1e7cd28cb63682bed59af71454d71e5e68c5c178d9349ba1f71504c3e11e061f7c19786f4e40371e150dee49e62484e5717e9f5ada4f444e2ece3ecdd07461bbdf2724279b539295eea316fd3e6d3210540161c08a379908f4b20a7cccd03f098b658c6a03d1df0cae67c12faf2ca1fdf63bb4dfb20f2d3e307f59cb405eacf735c80c5dae66e89f0caecc94426470bb99aea66b496f937547b473fc9d6879232bbdac2cbd4a4a26ea3eacf42ac5b47bdb8c965fb796a756763ce1c3f34fe4ad15b63a17ee8cccb09bd1fe2c5debe2aed5757ff10602135aadeef6a8ee7b1fb66cf7715f3681216b748fc3e3134fc53f917f68b163fb0efc0fed9ff89a7f6cdf815f5942fb27de02da3f912db07d07727453d8e270ee7fb845e3c5a321db62dae5a947dd4ec47293d7395c4f04c574547da341304f8cedc305a26368557ad58a3b2bfdf82e01616eb43f0a4c89fb72d39319822a50f5cd3637fb627051402382d03633f424fae5a9951dda4a13db0f8f96b797076fb8463b8d184aafd2cbf33cd00d8ef9349e8a2fff2abd32e806f6c5e06e87d55a6b04a57c5bf1856d713b14ed3787bd5ed74623d13756007df0fd06772024075a880ec01a8038d0fe1bcc427bcf0a32e405da3f6e14bdbf1918d3e50dae48bf41196cf08a7f096a379a1bb41815248afb4e88ace11f4e4177dd10f0bbb0f5cdbc762365b0483372ce9f3daa556cf1f7b027c8f4c87870105b74103d2ad8e3034f1024c826b6f8731ec75923a21b9b360cf9505515b61b9b36ac81b39e47a57203ed3e07bd3f8d056f8f0cb6270bcf0f405f68d0173ff064e151fd06e5c9c5ad0f0291d8e23063b0e81db6666426a44076a498ace13f236bf87742c22433f4f0a5fda5cd9c3384c1844b5c4948031376111e891ad5349f52e338f67338135b7ec897d0d511e267dc7b4931498afdcc97ce20c36c06ed5f928328ef183a73f2f6e8fcfea5262537c4521ce28d58bc8186585a43bc41faeefd4b61902532c41bfffea5324454fd9b37890e797f74fe5d6a83a69921136207875dcc1049d88518fa0b81c325008045199d3323874a66d815d9f2e398555ccdbd0c5cc5a88a91f69ef4314e29c83b34f2564e2eee0f8ee338102874ad400afb230731a4e144abc8cc90061eb401f2a6210bb320c32b441712121a398c827421d9845608bd883754bae0b89092c81ae07700c83b9c821079874766e4900939abc8a8e480142321912e2f8464235d9e454a225d7e080909c9869444fbdbd148e547208c8abbbb7477e95e6b65f98a1fb43abe55912ca212cc63f9dd637b79b8042bbda270ed4fedd5126c2f5d495f52e2f22917512a2fff8b28cecbdf5ef186a7e58b3a2d6dfd03613e18dc077f0b4e10418030418030a2df42e5af8cc94594d3dd9d52aa699a26a7cc5c8c31da4dd21a0b5b3f03855a613394afc53c2555758615365135b48a371c546927c5acada55b67116ee7379089f8e27175335d776486a6033d46bc9919ba0f297bf8cc63c473e42be27a6866786486eee96286d6e3929cc49e184357e9d505b9f6a5cbbca2f4fa8ab89e986de5e5c82175fd1caebdb75cdcb84f2b24f8374198aeebfcc697c042978d6d29a594554a59a5f4ac77733729b64317129210ceec90c66b9cd848b12fe66a2aac58105a8535c33987faa896122ee7aa5f3f2412baea872da977d80a89cc30744d94fcbe7e98f25efc4f9e962f33c41b5efe4a3357e62597b4dff782ab4dbde27d12ed48a6c97f7f53d7ff9ecc9473df0ca63d7cc40366e8a9d04a0cdf0283f69ab98fd2a5be8c82762a8455d0fe3bd4021748bfc32f844a7e875b089f106b3021864b28124de1114222c8d01fcc9ba477f8e5100a990bed1f1299285f32439f8547360cf3265c18aec338aeb31f78393466ef7a2578336075c612d18c1b1511e776e0c7d91930af7e2eb8bb6b7db1d8f20aad422b8739cc5fa75519f4fe66af30c0aed5bd741c0c77872d9b96c765d5d08a375254d30ffa05349e4c30a4f91d76d1fd0e6bb020fa1d7ee105ed346627950e83f6b00bda575cd01e22d1fe91f4318652a0118b2dfea51734d134e440ca3bf4820a328442ace18a2d01405e64def5374e8bda9cdb7fe087341adc4c331318926e316c403ab6dce42f8970021fe1293ae33b264a565d7f6a7446d34e696c74c4943c62461b256248c41b0f9828673243f9fe3a5c4744c918cea9c41147e4c9a926aa06e16256dd9c154bbdc9599bdce8264e455f1bc51bdc15b125a63817c81ed8c842fb6f133703edbff1be9c6afee6541cbdd14dfe9fca5b3081488d230694ed53398ee37858ca71b57a14ae37b73fc5e4a6b6ef6e2d0436bce549c5bd26b9bce50722e1e92dbf0573709e8bf2b73fc55029370ec719469f51203ee426bf9e84e84d310fef5ba0e566816c747b7ae241dfb3272ca44b7d6ecace4b8aca95be3745e7e5156fb3326f1ddbcb24b6977faaf26be6a4740ecc8162df43e1b6da8139b6e751378ee336148d86524a29cdf2293ec5c81afe1eacfdc5df7730f838dc3f975f5ffefc38329f5433742bebc4ac6cfb6cdb72a7796cbfbd44a23ecd7a567cc242d69079c57bff4e4c4ff95374bad2a779ff360371c47486272c4e5868208ce679525a2d29f5999ba6fb534a95681df5c3c1e5a8ea37acfd57205ae2a8ab664faa1316d2457e547e6e3607a92c87079ee3fb88a052a9543434303636f7ba6c6cee6571f366ce4d083696b60d4da5534e7328cdfb988718bdfea573345172e37ea2bca7f4bb49a9bf7c0f7fdc57efe4e20cb9cdd9a0838d25fa938beb6fe36fb7d151daf9b9a5dfc49bb6db3731a76df7c5b75dd7718a68ad6d3215fcbdc97896ae8c901ac5c947c806e6901ac54987228b2d9d979bfc7037a7e3e2c0e28df9fe1c99a778bc8d1fbf3b3e7e731a8603e3c03a326ef2e7c0e28d8d052907bc47f11b50c1fb73a1a74af0fe478c40059e5ae2fde5ca89f7973632365754bc57f1fe1336639e4ac13b03887841f184407a84632586047e010ab8c0e304941010800ffc101d10c1b78060bf8d8f9e22c1d7f8e8a9117c113fb7b8fe1d194f7d5c3ff2eef8c82cc056fcc775efc7757f77fc272eb282b75658618515565861456541a7adc0f1e553e3a96ae3a915bc3e307f16e0eb26ff15604e05d85380bd0aec54b84f95bc9135b225551cc0f138ba29f524c023c022c0d14d063802e7c0466018dc00ec267f755c9eaaeff18501f8056b8c032f006fd99235f266aa66cdbc71d5c85d3ee334be9261cdd894cd69f382b9666856322c199b81b79c499b17cc3543b39251c13bc6a22cdabc768479f0fdd468ff0e07e60f7a2f77a23f4134ca6c7f58daf3bfb8cd87082009688104e2da1d838d251b63ec64898b2d32827208beb17cc6696a6eb8d8958de6ec55be2242c6c5cd5c9a51cddbc4ab1aad5e2664ddb88986abb936a3d7c3c29b988d99d0f5ad11ebca6cb9b2e15e1736baf958dcf3350b89781b23b79a7c71b07b338abd4c86c56ab55cae99191a9a1aaf719b9b9b584ca66374958eb1e572cdccd0bc6231c618638cb31865b398ec2606bbb189352f4478ea868bdd291b11e12a2234bc89d85e4e305b2e8e26ca6aa2cc26ca649a46597d912e4fc93839bbaad1ea6534e9d25ee48da7686e5ef206266f6ee48d7e992c4fa9b8d59519b1be154ad77c794a662316fa7c5d6e747f14be739c2d17a9d95d6a030023d6e16aeff58988372a105bfcfd8b88290be0e135872f626c83f68952f9620b4f9c007b700d30c30f8b8c2495bf42b31153d3770245e6034ab413e144c7f86b4b958e363760c2a277bc99d5c85ce14fa7b4b10da0fdfd11e0360c4077200369df71eeee7bb8dea30474b5b2b2e23f412392c46db4a580737439798f66deef9c24dccdc653df6b323769a01bed9ee264cfdb659a8d6fe917c3f241c944699f249f97cb3a324f89ee7744b8237393f6f97c2814aa405ee6f7f6777c6fed7f5ede21faefbfece37b518e9ded434d33131821984fa4f6bff9b9779c4c14f8da77661d0e87c301435e28452a11237a19a2fc438b1ddf8bfe87cd2bdedb0fe28390917f7c79c5cb2b4b04f1f69b08227f1322d173fe03822007dc385ba888c82e315f44d9630efbf408cf15eb760f9b0cac1f8e25e31e698d634941c1cf26db649b13958c6fb24de6614dc6f97c3e1a7599cbdc89cffcc944c9b74eae970282291c8eff9c9e874173fa744d93a9ae8ce5606e865ac78916a3b595d6de7d1a01e6dd793b67e7e7e428e1c6c8b166b097174c6b1f7369edc3b5609c14bc81e8944f92197e5e33d43e36b1457bbb87eb79f9c3c1f57e77a6c7017d3e20cee3f094fb79c55019bdf69f242496d7fe63136fccd7561ee53f5f449795e8f63defb21878f41357cd82abe0f47cd2e82d07c290321177441afdc4ce043c22ea51f62633d43ef0ed087c0d7c6d62aa472a31c0b7a07deb31b0c75848e0c45393c05f016791ef55465ff618084e30be7cd86fb0cc057f7764fe9ff96920ccca12a2ff7e87284737e51d7ee326f0bdff7038d93ab99c077fce3dfff3a1f9293e71d429a10fd87db8a0b5d89d20cc96fa3e52d3d52690dd3e8b87fbdb56d50527e73bb289f2de2ad1db651f1bad71b214546f2bdb9f9739163764a2fcb5e75c1ccd44adcccd19f93c0cc2574b2bd38474649b9ba1f6a0196a1f1b1cdd34f7e7a5b58e6c869a95c9b4f656669d7caa899af3b5ff64266a6572202bd3da7b747be666384118e7b6a9c9865082a85a4e8df67726df03f1a1d921827c98c7e659ab7d43a8ac872398c4f6f5435bca37844a6fdfd4294f35ba7dca97354a53529efe7698a6daa798669fe7528e664aed7f600eeebf8f1345e9574a3f0bc2584ff631bc5df306c4c747eb7f7b88205bc5dbf597622bde5457fadb36448ca63625f3d8be630243bad8a7b37ebee64fde536f43a834fd9aa5eed4d046539a796cdfa13623d1a179a5f3da4bcf7b69fae87fd96af60373889e661ef453de8aace7d12ab2d57aa2efaaf5aca595be88624d77aaee508a694a3681619f037354faf3bec50fc2e07f30c754bdad7a99c76fdaa33ce7a9f92899ea8dbecd3d1c56dffe27356ae767b1fdcd62594bfb9bc0d8a18dee640e17f77bed3b1badfdf665cbe9cf9f0362dac3612630bed340988ec30ea35a7c4e8d8e33400f6561a3578d6a750bb26209d13859ac1dd5364fabb4569fb2c6ed8b5ce7d9ed8b9d67ed17bfee888eefcd78d66b74f42e74f4968e91c99399af3c26c6e4661a4152f34a3267a691e9723283ccd5644d213327b22e94bc6e96d474412363e410c9a244745c49554c326fa6d32631268936a0f8339c4e848e4f0db04739a48e529e90d823a2b69d151df2e3e7909f394db82b48489009399998ee4c38a59409aa699ac684566bad9589ba6ddbb66d4c6c2ff46dc759cebab999aee992c96868a44aaaa28d96dccc9c2c2e13dc0b7ddbe9f93e73119a2538730ecf71aee8f09f2f35103db921a43f5cff3a51d373adb5827fb8b435511f2cfa8f2b82b4c6e52990cb4d93f3806a463d380d5f355ca9b53d627d666e02a9402e4fcd4ee7431904aac1f16505fba0cff2588b1df449d907e9e9b3601f2bcff220158bb445dcd190967c995c8c58339c21ed6b40aad832df834131339c1fc22012ee5097a7a6ccadef3fb5df1f4bbeb0bcf54f824ab0d099a7587e86aaa7a6d49a8eac33f314e9a7ca287b2a7c4ede2c8ee5a9cbb1421ceb8359b2963f1f036fd04a7f2c900af4b1386d84285322339c93d31ea42c4f8d48926aa589d234aae1aa7df28e91f7e73b1f0ce251513e9fbc3718f02b1232ea8ea6691cd73d058dd0a1e113d095e646acd110ce8398a3bd487bcfe7f3577b8fb6693f6a793ec6d7af200444af7d525ee56b1eb13cafe5518bc709b4cce3f3f53fdfd181f25adeda27870c4383fef31d50d6bef338fc833fbfbd035222f0c99def5efb0f0e2111fafa282879057cade215106505cca0ff3cca83f0b642dba0f73e1fc123a44ea91fca1c2e6ecd9ff29fcc23e5c1cce3fe474bc934531009ffcf3ba8e3e618234fe15af4f53f79ab643acaf52708010f0444d983770b40ff79fbc13abcefe3699d07fd27d319e6fdc3d3409fef6875c41ab5266a6a4f276a8a161eb1b4dfa3d19019ced736003ea7490493f0380ec270de93379014cce122f4383ce54318f41e7c53702814ca7b7b941c757c4010e83e1f03e563709880b251004487bef39c078172e839bf3f56c71f04ff93f2287873321ae54120cfc7e070e17914cc61c2a52bedc92828bf3f47c19c0fe1a8eda78040b90aa93b1fdade3f0feaf83cf846804020d07f3e9fcf07df07811bfc4e18faf3f90ee6e0e07e3e46801e456fcf7f8f22c3e0e0e0ee14c8f4dede03fefd6d03e1e0a87138885110db2990e9ed3dbcad98e9ed47ac215256217584b4ff06e3ff4d141474a5b59fcf5d4e47907aa9bba8d4ccd3c6992065886600000000005314002030140c070583c18048a627922a1f14800c8eb05674561e69490e53c818430c10001000000000800010540086610e35d2c4e3eb640ee6295a5c6bb3308487a5cdce1213d734f3ccfa695ea098279de442dc32ee0831b2bc949ca40b8e2b8d1ffe596f9630f487f3dd0dfd18941c1b86e4126d61309143d334b42145060f188ca962259e33d0998924c44b15023a103f6d26107a28f362f284cd746c8d7f160c36f03cd73b2638984b86871fa2507e7a172f5a9df842699d200952607e61ce9ead78db43166a342c86340c04556bdf0f3d8eac6ca0edc0b75b9539b749da486365c106c2e40445dba7409944e40aaea1eb7093dce5d58ace6a7a1f7b5521aede55be9d86155bef51bf51071313d36726f911a00aa8e1c04dd04421b6e9dad10cf8d39e0dace1172d2beb819cc4322dc0bf6e051bf80acd3e1e1257c537c9e7f27bd4d37daa8655d2b8aab70ab62a7b5b9acf0a6df412b04f9e84995a6e18c1e6ee3a51cf29188160405b3e79dd6340fa00dbf218a2feb52b370467d5dee3abb585af35b3fdb4b4345fed718fd62bc007f7cde8a85d720a5d982d76402b89604a512fecd5b9c81f8653b12a3a6604c993a155467ad7171072e762424b13616b845f5ea58fadff43598184469a5eb5775219b9e9691a514c52572ff339d5a4aa04083fca0d27af1d4a777bfb147fd0d71a44ee7ad0eb5325d8646ca47d9396087880e515eb1d9ecc3d060137dcb32afa7fb9102eaa61890edd31c37accf158343af6e4e761bd0c3f5c67a5bbee884b3d18f2992f04976ec84e25e8cf042029712c9ecb6ad956a30141be331480cae443898e4c1f8b14487564b8d8d4eebad549cdf0dc77ae3df0def53647239cb2e4dd2d1f66d448e607029c77412f957c00240a7b233305c76ca8a0f4bb7e39d90537877932609fbf27307c4409fbaaf13feafd54d845af62fd1ce07e58641416e076fd98a99651d0cba26c8a7153d6b016f0376a77597690c3a50962ecbdf77712c6cd71ce01ed554670fb20e53bf9dc0da12e4f5d86d194a25ecdc68e17139c21faf9b2a935bee8a64168089b4e33c35735d2c83136b3aee9328e62914a3b2e0bc4446b0c5f245efa8b5a6c973411c6624f23ef2c62e258797e5dd68c195dfa6c4bd5d5581720b01061ff40c5c580de113e5ee1238a6128a474943cbbc26f4f528701c8cb62bcb9996cb528db88af90ad9cc939e5d7f1de25f37de3886f80914e611799f8a30167ba9b3154d76d10b40123f4f7b0548542883a54bcd5f858b2990ccd4f1c9431e1d71d0cf3100b73dc8fd7472e6fba6910f9f35a6f038249a622bee79907dbfd10cb36863e536c464266676767354ed5f4de4fd2722439600d3df1669bd51043d8bae630aa2097d87b3b336d484157ff06c41183c408200c8e4b348704b11513ba2a61c662ddbe3f0e416fa69e31cb4321e37a0201e778fa927b4c607d75ccc0c3a44f24d6beb2d44f983e57c8e62de8f5b6f87ec9d244cd06501271d501f2eadd5aa7993e7a2da87e091f4e50f3fe16574903bd3a377a832701f9e28d4fbfe2a3564ccffe06a822006fd4d6c9877af03beafcbd3f89cd7c2b498a78e61facadd74e92200262ddbfc0ca3414e10765931c98eb4afc925650c4d62d9b7d73020114b432df005c573a5fc516cefd486920ebc19918afb0cb35da35da3e0064ac03e38a2d3588ee9da78a0620c4655f6cfd199a35805fc723b6f46580c16f724c6e808bb3b51cdb6cbbc1ddb5fcd7c7a0caf4e0971635e0b01648a40afb0fb042d96413800fed40a6adff225dfa840fef996e4040c302a1d6f4ebfd3daac3accaa2fb5185487f9cff1dbb42cafae1c0960d11bb60a4e92a38db2328b4edc75348a71974eadc17408ec33d5594f8030dd57ab9d74b2b49738ab2612aaa7b8180c405bcb8663e4a7ef8613120d0961a7d02211fed685f12f09e5b06029cb39d21ca64931acac398e5f0eb30f00d81bf9626e2fb312c003b8b4bb73cfa5c974bbb9b4908206eb78bb5986f6e083c5394310d402d47d3199c179d200e873d5881f8965f634203ec683aeaf7d0286b3a104877861fdd4b991788797e729b9a361bbbbce35841431c0caf320dd4e1bc799fd4941c852f8b1e43905396c7cbf1e3b56087426b8d221a97e8eb4cb189c5984b346ac9afd2fa8d9dc839e3181c0fc6cb33d911485982712e108981c1db7f47d85710ee56507b7cf265ec0fcac3c9ca789019e82d14ef239fc41e1d502758da3f59b87f12132d9d64913b4c0eb4fea13da44360f64351548b4f9c5306da18cfb13fffb1e4dc316bb863c1d7314ebb63c0bb63fdb163b3ae631255c7e2eb8ed178c76aac8ecb54b8ed6ac43f08e83b6845fc83809c83b4f7876d12897f5ce44dbfb36dfd18acee8f8aa1f7d6302d5e798e948c31adc04671cafb030b28facb3e66aef7d48df7a71e788f0a4249806b4cd1b77064cecd3d21f377388407375a93aa837c20c7c2ae79fef43f7f5880feb0a64d40f80134adcdddd594cbd29fcc58dc7fb66fbcbb05437b1a482eac9a4d181df8b90ed16f7ca7f8375adcbc549ea3dc6526637ffe4ca8f10792675dbdc810f2273964bf3af2a711e50f1f983f2c397f7807fde122fde129ea0f8bac3fdc607f18d1fef088fbc395f78735f00f53e21ffe907ff830fff0a17f5837a83bbe9c1568ee9f50c07fa292ff8446ff09c2fe130ffc4f0cf43f11fe4ff05d260b0200dd2ecdaca500624202c43771c78a08c84107e41f7b9f17990c0524ba1a815533c6d00752644ebb1a315fbbf1f8b6d76a223d5b429b741a2f719e08fd3311b07a28b34f47a26cab41222a5b906aaafbe3a8a4930b8e12d4da21e62dec77ba75b48c2c01ca78f763eadda5ed4d747f9186dcba0b63532cde9c958c0075f76f5c48238f9cb5af39fe19a0ca787fac8880040d18107e002b0360c60f9a01ae13195a29c70ed9c69708e7adb92f8ea1d97713110014a069d02263e01fda7f90360c19df0a02fcd6db94db8fc1b371a013507deda3a2c0e0a6cb9cdb6b547d50b49745d9a41cdb0c3b3be54ea672c36e4266fd2c81ed3ac690026bb672f915cbecf420d6f25c6f1d206b7284b3ad7cf6f858edb1b8c7028e9ca341cc932a9c5b2ef034a159dcb9d6f19f86f0f3d950cb69c74b66e5579e3bff04fab3da348d58e084233ac176f040d611ded2621ba9b2299203c0f5737f8515705dbcfa6ec0aafc6d4f4a5b2005bcd62e14b699f849ccba1afb9301f4d0fb20a6f670b20588000f80128f182218c66910395124d859e3abd6e275d43b7a8480b81af2359466d0a44d15c63a5b6733c8cbdc585ae24b8f23e37263691697477bf7ee48c81f316ae2dc6a89ed4ffd26ad8d829b70bfebe02fd750e8e6d2a805b05b9c41d2598f7a1361e1e7d0ff8b9812f6d6ed7f220c5ee907a15fb44ab84c5e1c1d47d50a8e6abc0206cd5c80ef117766b23dc5e240e337ccaff668d42d89c1a3a6f1d0dc7d506a863c8cf20cd0a5c2dacf34e0902f4bb2097494fea95906eae2b228e78196ae4a702ea4a244bd79fb2f447a83b54a827567d1494f6dd052c9dc6178b4feb3df009b16f30a3a3da69622e341c45a7c19d1770ba741cce978300a1af973179e7cdacb7db00cb6b4898205abe007d92bba07c2d98d020edec90ebdc9ecf1ddc86be658f13b76abb3be5bec0745ef670c19034fc52e69496e6dffda9faaba2e075d96c91c9d13a0da6be00f595edca7a0fa550bd5d46bd7f0d343620ae3b3b2c3535580cb21871e3dcacecfa58a9452f36e536ee70fbe56e17eb49eeee44fa364bb90ddb7a8b02bff64b674265356399d0e606918493561ddf527656caca2d2e8f10ce05fa0261cf8f4c2831b3bd6c02cd1c7ca47f2d1b37b0bbce31ba34ee345a0a2413f9edd280f0e08218e6430905551957da5e455a245d6c8f8aa25ac139dd0b864488d181a0f39a2c8a012ef4a792de64d118ca4b7a368f5e85f3288782934d5ab48a5a190005734810c23784341f1096d8fbf93304961e4fec26f3843e0185a38f2fdd83f8231c06e17aa9a6eab3e4636832ccfcfa2a8a2591f28de052718d746c1680f95bfbd1c22c2340690a6bf600eb59d13bc41030f2e9ec6e5125ecb344ccfa340872a4af2c40682b7788cfa45c567367b83e3552a2dacca52b5d0679b3bb8625a4db240d57f99775d6065714104af32c17c28a299eb191de7dff092797f50c33fec61b1202e2ebd3846af27adacc7a891a2daaf8ac1874064a2f6d4e163925f514a5830f549518c92c829357bd5856c60bee9330894977b711a92cbd9c2476952ad665b063612c7e37d606ca408e884d1aca118fe791dea3e29233e30a26a1848697c64ec26a2a04342cc1f061022660464168212ae40f713b680ad8734dc0751ec8d59d4c02e7ae0292ad3644bdc2c880fd4c188911cd48e7ab936d96094f68da68319532afe5649464d7d7b5c3b5b088ea24511413a6b2c131b6443dfafc4fe90196327115166e867b2f7659934c84c144f631ccf0efe8a0b3fd3f937fb55a476b3eed61792e0a83f2d6eea3b9024d7796adad815a9cc5c29b69ab6e8a7fabf1fc695d04387651926542560f25d08d47e5cc1efcc0d161fca551c127ec6daeb366ce49a722ead951b68ef3a591f9fd31486aa8e84f5c0aecb826642dc48709e34c1a345c05288a0be7e9aa04b174c002c4179ee76c712b19b870fcf7bd9092c590a2f7bdcf09d225340b5816f29ec83e22cc230009d808e3dfee7e6b8810f02164cf4dd85075b790828c43a8cd77988dfacce6f69e468c40de7aea9a23d4f7809694a32bdfb4fba184cb2ed857cfef5950974d1807e15bd079eff70c380a1632abc1ee4fbf39d1d06de748646856ff779b840e0c7c71211be01b31708c0ae4f406b1c02b3652ca52cf983d6e24f79eb2118d3594bc84df8dcb14fd51d5b2a33d88d82ac1b0c218ee9d4b56ff88b3bd5a6155250b1a97b7d0825af57068f0b72000bf16c17a31a386367f4e40669341b1b3e185162a605da89b620e5ecdd391ab3139cebea4d24b2ec0df55ce726eab925323d8dc1ec626fc92b809feb5dd544c9e230ae8fc1f5bb2aba9a843bceb9e988fbd053bccb03f4b28a4afa94d7a500a4190dc7307e243dab6682ab8655ef8fcca31e8ad59ac23d9dbdde04240a1c0118e72faa412610b36ab4fb7904166ec38c720b116d88a5a4ee4f530fdc5e3992f9f5bb5fcde8233d0b31ce5e87082c19fe120adb981ce92d9476a08e0de3cb89c4edcae9523aa148b2448783bc2cdec431780d8ccbc7786ac41d526db8812f1209da4c9e0f9ab5ebbb7e0477570cae2f6b5f5dd6b650759526427bfeaff819f3bf26036833654d52e037662e53e97d25e0ae10fd001677bb5dd761f50e72c46c857e401d08680be68335d086d4dcab8605c6aebf4b1181950060022a23c14907ec7b4b31c55a9e81b9a82c42b3416cbeb254d463aa2e52ed5d1c05bdee30d32f8df7472aef154f33db166b9d01b1310c9272fd5a0b0ba52c8849bb5d150db4904dce32082de6797816e96939a44753a8191f56ce3eb78698ddc42278be612d29d8e4968f94c23293692fe373953eca688975352c60603fba391978b8fc266ce95fa9f4fde9d226a7e8cdf4241a30574115b830102b583b7a17add3f26d3e5207f28f796950c7201021205edb6547ecdd03a49063aa2bad399e4c59e8d7d33c93545835e48d1329d7dd29fa747ba2423ca96811375141e80363c84a855645eb47a2e5455eb5b76a8a87b13a4d155d3e45420b056511416eb11a407323a76c5a3cdecb4e54d1fa8dd8b410f0cbe17df18540f8be9093226445dfa37d8d47bd4032d75affa8b1b206e7918c1f6d6b66c577ce36e989763e0f8881d29879db12485e25e6690e5f53978c9b79716dcdb98ce8245fdb14db93a489626f859be5ae453c733c632df5f92af6f111a0205865c2283b110adcde3f82e69918ce58aa93538afbc1df486d2b7b42491f7ccf956a28ec3c2a188259277140a66ca6b9feee1ee5230810e62bf652965be35fbae19695794a9d1ae0604b5e9bf2cc7fc6e251ffcdf0b98bc7cf0996eb2bf04a89f0d1aea9d080af367d61b524ba69bcb5e2059bcc116a397db30c2634151f03633a14cde4c2bb97e592ea43c828870b31f7d259bdac38573a5d89236ac3cd9893827df6c5c617578f40427a22a92c294b2805764411bd7dad07d7c7652d470a1be0c1d710c089d05503fdcf8dfa6af227abeb3e9656c5edfa2cce76493ab605dd2b933e3daec54216003bdbfca876e67732f046f7c225a2077ea60b08638ea877f99e4ea01d38af1bab1be12b18d639ad85047ef8b64038d0d1693286b4067a682693eb8c3fd6bfca253dbe6e70b2ca26003f64a4d87867231fba171e7b564eee9d02721e31202fa4a009a1e3bad5c04a88beaa8015ecc231a4cd579fd365717310f64d0323b18110596dc19fe2ba69388e15c3a3fc56e2ba769cf129e4821940ac8d4d5d1fd5e2ba06e610d1435087922e7bbaea3381e3e2b5af72e03027b79dc9dfc65f7c42c8dbcac0cda521ef29f0e76c5a352e278fa76a02ba171e1bef0ea65583782d8cc5d5b2b92d85001f58454b16cca0455e31d980b0427864e748bcf9dbb9324ed6fa412dded92585270733dc41a52d238a097d073dd17519be8470cd5d270c7c233140e37d5fc0d0e3f0180a8113b358abf8f03e188fbc93c6e10e6f423a61eb381cd491a05a4c660c3ce49379608e32b84919612f4c2f74d4c0662a6d07d17b2b089f29bda2bab7c81a6ee342d27843e45a6c7d68057541c5fbcec18e9d4e98e20d5547751854a645064977aaa5597054fc65eaceea6de180cba3869582329b593a837241dd878940d6b17aece6d67b1014c7211af421fe966771f55bd68e12df3d8b19cc9d248b8fe098d26442fcbafbee31ba3e2ef42fd85d83a75e091f640236605a9008c6e8ee5d97304f4bac901055c4b8281e9b76ceaa0bcada88f968ec9919f34162046be640942aba2618a16ecb176684bb96aa64866b3613e61aa4de5e27425f3e64ae5aa54f6a2d01d0e45db560025670f80ea19873d3c7d350073b42b1e81a5beb47ea1f02d6596a74f205d5c7ca3b16df9616c01dd2e6f9f374b30a014df576b0ebdca433e2d1b851b9acbab39e325d7e4c52146666d4e1287ee98fb3c62da351ef6581140e0e40fe36d9f0e5f7321d4084c281bb1a3eb51b0287c110085dcc8ca3382e2aae10013100f19bc83de44aa4fb6c53cff5701f0bc0ec0c0568ec70b0c324cb9e221e6c1e9b33aa477783f260e3c2b2185f7c0cc7f9c92a768d14d419d235960de624a45bc9ad34fcfbe62a1521efe620dd9fbb95214ec8a81d0e94dd719b59f7888ae3466cfb5fc2ef9df42d7c183118809a26df92c864887dae6eb3e1db365f736d5997f21f2a107e0b3ce9eb1acb7406d26642e3ed4cd809b2ed7b40c6aa9ea099801b1dfa757752cc9ce3c8ca9db2bdc07140291b7171d99ddf86289a529e57a1de5e1ef7569593d53e1d2a35845871e0ba721f7ca99d66b6c6c433f74c0c61eb279991bb3407a13492eb27df20da2fd456087d42b987aad81a4ee33a46db1b4e7f269b6813508779954f6463d03526ca928e04db850d67bbddef0d115b68ada358d6427feb2fd4389ce40af03bd12476a3ea36f4f2320ef9cafc0c233ba75028bfe86f82849a66ca761f5d5767dc30f2595f7c7f20be776340555ac176b90d7546d55179f91d4ea5bcdaf3968d5ff509b5070b53a34a10766a1e87b8071a06e2377f2ad2f8baf912a00901d6fa64175010c675c19805e6dfbf0a690f73c50645e1a3dbc548d970e3b15c875a37c1f1ee7d811f623df3cc978a1af06b6bec563849ed9a2bf540ca88f9c2ad9be7ca7ace6965025ccddf745692b09fa5d804b6cdbd39b096cb0d4ae600bd6baa1e51d7911dc0cd1bfd2704991eae7e99caad6e35bd5cc0b3151c97eac7c41eacb4a90ca5947756ed51c81a579fa12a0823b5cdd57db8ff94c7e09095a5f3cd570a2ebfffe53aef28d149d5196a90f2daa2771c47bdcaaf8f9b7072a6af530f928b17949c9cfa3353906ca023d1e7a10a7e42f7e6cd074c5a221bb8ad77f7aa789f614f1d01ed77e543d408614fc0f5cea7dbaaa562f1b096751e6bed751f139ab662aca5f6c57afd5667a529b952691faf1635932ad5d2967829b4bf63881a132855a99666e95b9dfdbd91a89844e995b2744b7b253ad62cb3674e80869d2fdb4475fb45d7ab19bc6ad3b2e79b847737a847b4a59afad73248eca99c4ecd9411a936c7b56ce6d0d610bcaa198a61467ec6445321b4713111b1a8326c9f04f8232ea5e2ad9e667b7735520d207738d671dd36c89946c6c55c78c80cb2cf41a18fc5589c610cd40bde5ef39d2287d0ec6b42d63a2b2864eb7de5af639b81cfe837c615ae70e3dbc5885d635c11a95a4fc01e30f5c94439e2a6adc12d732f2dcb58fdc26938973f874970bfb51dc585a1d661058558d0f955023b646617e2ab03a97d1d99c01e8a5fc3ca5bcc1a15d476f1e7e52dffba55e7fc1b8ab402ed269bec021be15531257f18d0bb2b8e4bf02e37ee87d7a048bfbaea443208ef5182f5b09207a650a2caad9bd48af0d6dfe27469b8549f91bb9b4b84578b7e9162793d174738d7e2d22fcc7a6b28e92bc2e673db9181c9565a48aaa4e46721d3ae385ac65f6f411f23ef8faf2160f64e630a18be5c86fc54f9133b5a4713dc3c41463ef3d9f17f80b871c347b6694c912a941a526df03f2a9f2a5de40e57e82362fe4572b2291a030ec07e55f298600bf8175557f3a1b8f83ff83531b004f5e439fe75a42f69bdcf3097e9fc2c458c2ea857a3ca534bbd26af6b1d2eb955e782f85342fc11c29ffc8912714a459c13646df254545a6e2ded8ba8adc02075d71033f0c599c1ea8ead97a7acbec7f174696c87a133d7c43104735bb98c3da9b5858bae4a2fc99c25828581e1f0ab526e6b25fc0bd7ae9aa85744f2f7f384017a98abd90bdf385c639521d51d45c7a6ca9c4375842243b455cf92cb1d65b53194b82ab52a72562c9afdcef01c332a3f437226c5a4af3c9602ecd4e186d2fb35ddd0b06f3ba9944032e45c2d9d1278d1a551bbeaa1d2b16ea79909d6095a82e9ca26865f410e96c840e14cacc72f52a548c6b66e12b61a7bd52c7415d87089d26aaa79c52ea6a8f2f3c029c32454138e7b94c209a895b16f8efab15eb3f97cb5c2217e3cd1a7e0f16ec22affbf45315f342b1006f6f21dcc26a9b55589806492bed8588817f5f2f3282ac6585e2a1856d82779daba1704e8bd3b0996ebef153f2dc9ba954f93d276d6fe0fdf4fa129118928ec94f300faa88f2aa13299293f4019e3a0d6645e1bbb5621f2158e1c179d649916ec2073a702d8d6f54fda88434fadce45eef4efca0259762a4bbd529337e1952691f1ae9cfd73f945a4d44d9ed9105b30ac5e6e017db46885766a1a7bad9a140aa80f0620c1fea5719f1d1e1d5898a8b59b34eea48665b9d17bc3c0d76ea27c85b9fe9a18c65966d35d061d0c9fabac2feeaad0256c24564c8ef51f2aac1db403d511cbc1b92cf1a8ce7caadda47566666f8c1615244a88b185bfc649914a585db725404d00c16015041a2ec5124cae71dae9f274c3ce1118354a10a5bca64911be031c30adba3e6f052ebef85a3c6160774ca781f5c6b0aec04212538765c968bb10fcc7ea96dd798e8341f21e8d1e02c4b923ec74604736a0379ac8ec798f4e764e3702b246164d71f0b6f749b3c3977b3980281033b824181213b0e3ebce8801e9442d96a30472d989ab71e1027c8d20e7eae3169ca1bdb735084f315c3f0316814c36665b26a5c84e1a8a36e2329cd43c38ab17f4a83b8457084656c34a4b5fb21b3ae155bf759442ea74be50c630760bbba248888096cc8839761a2e7bda2ea5ea0479ba48cf532c131ba3a8d302d97ecf839d4083f1f8faf58906c603de61734b36a4653068ead5db242865597ca6bc74f0ffad581d4b3e28a02106848d99f1816746945345a7ba1bafe4f3db5d71446bb7797226f1cb80b58eb663b9d42e4df0e36bddf0685288fae7a0736dbe7d94eb84bf725026982e1cc551ddeba7f22d7bf8968a91519008ad77b7788951a787de0334c956e696b8217a8b71728f9589405346b2d3389554a6134034e59cfee099a46711f09984fe893937686a41bcd55661976e1f9406fb37ac1a6dedc4410c79dfd01af8c44a3d74b454ed3ffa23076c55affcf32ba3d6bf0ae44372da1d9439a931210348287bf71a898835db5fff8d4454c0c6b718009b2df4eebb0a9a91e2c7abf46e27b9e79fa21952634fc29f4832138cf232660e1a84d5df0835ca86f2aa65310147c462e34728fcd07bb2912c94c3ddbf3c15cb67d978e2fe1a122f0bcb19df2bef709150824e8d435429ad7f62076f2b9440dec2aebc5abc180acc434436f5935027441c5e06ee3b57dace086622e382fb14024518d3660f2578421a0ea93e623264587a99224fdc0b79b55b8d2166d59a3d649a1a1e0481402163a811335354c5bb7520ae0843d3db59d21a9fb0d7c99e16e43a6fd2e964ceec2680d106c4112a29e20f9bc519a2ad0b382b4ba4546138a2a4c4249584946b1ee20f53c9eb01700deefa5dbfbc3bf65b47c394d36c099cac8ffe42bd86cb311d541e8f8b505c1815d3002c5c20fff77a7dbb07a3b78d38f78db8089d9aed07e62d0f478201c956934a2cd5ce67845d5e9978e89e7cc400a8b4b71ddb41cdbc2d45db85ce66c13574aa7801731d758477f8cc503c68a71290ee3a2d3123dd420cf89978187abd55c42ca4a7b9825b9ef0872797cef27a488a11f9468822cedb91057a92c09ca807618966852a00a939dcaddd9f03d9c33c75e092ece8704889e15b6eda6ee170bd227638dc70b1587a4c8abe8c8463b260b9610e37fd855148b689cd5a32a2f5461eec381b3e5321f87ab09bc38871c2c6d21e248b967a99487d0e9bfcc91d32039a0f6b5e5faa97cee144eaab394b78395f9fd987c15ada1215fbcad8e58a18e7644cc4c9f630b1e1c9437e2881ffd04cb1bc173be235d5ec74d873c6bd8b2e6079b60c9e0d7bf158e9e3c8946201e3afe4a687e563e3f22b9ae669f05a8d2adff10b33096b276f0deeda31b8c1e6c5ca17d97114b67c7ce3949571df889dc1182dbb4f62f613dfc9e6ff6094df43a1e0941160fe4103a5ba415a5edacf0d46e196a936358e0dfe44b3eb8056713f555b2d9226bcdf9f1c269fafa18648ae7ba1f11d8e3bd65c9c29a92a70645286f157ef360ae3f79ca9ee1645e4a0599c9612797f39d66acb7852e6bc5121e036812f22bbc3d19b23a27ae42ca3f19ed2505691d9cc51f087ef305853fd899f5d3dfc8c6288f10f3388e261df36b3b8e5883cc47fdc1e9e84c311f1c04698bfff10d11d1a2407c8533f1a8cb725b9d65e95d1e0eb358eeaa32585afdcdf31ebe937a4419aa1dbacedb38f952199f630c66e22a6ca5a805db159d52da109be5c11aad6fb1aaba3bbeebc6c04efbae5e2951ea0350183d1c3e1b04ba2d45847c81ea32a383041567eaf029f00dfacedfdf22116b694ec76a8afb42f144b6712b3c9517e003a9898308034fef0cf14126693d829127654e11db461b8c81481368548ab3584715d7a54b899094ad90cbff8756c84f92a10aef05c05f69aeee1580769593f6faa8984dd44e5546684615d62e68c4fdbb3373fe749f87ace601723d47a4edcb12198059e0464983c764b8f7379aeb967c9242ed9652f3590ed2cec963aa59e3c84ee3d482798738458a15acdaed21fa77e8bc805fc2452fbbce537fc6ed4e018b47b328fbd79768874b42e53161d765c24752bb5d6034174bdcd5eaf511801aa41ecd6d325ee5bd6dad8aeb87d4352507a6f28f11f3c6ccfa6d54e7fdf1aca1261be6e29e1c3c406d6e2b275035b9b82d956d22326ae3e80e0bbe4b2ad66bbc77bbbc3e8aa447431116f9035606450a1555bae169e3310cd71934c1953572543e95c2c887feb887cbd7dcf34f5d195ece19d86d2d8c41b420f63181c7415018385d64d6857d8e4268d5ba5d1bed8ff3c1f9410f9ad7493c82260c11ac566dabb276d5441da02369c812105edb9f68758268229a307fde34834c8a068e6374fc299d981148ac918afe4aaa23f2e082f201cfa103fd2d00596552b3be873b12032c6bd1f1f75c27e3fc6335a74faeeabff41fa0e53dd13f38ecc42beee36b0d4e8294a5aa0a029017ca5e0db19705a71c5ac3fb1c94f2ab619386bdcd097b5a27dc46ce334b459d88ba405b80a7a96ddbfa22f8e6dae4b97f9c3c2785995c59cff0aa20a63fc1d4b29415ba53d1355c9af5fa5972bd411ca9076ab43590bf874bb90c0cc0a5570bbb0631018773b3b31da1db021f20567ffb0210ea51961b5038498a00bdd821bf5c6e8594a1d6876a4fc1ea08921048de04ceed486684b9254b54e0555f155c7c512cf6072df74bb83258f3414cb60918b717f57f2f7dcd2eefe2afadcbd313af1afb7624d15044267975ea8e6bd8cb26f9dfc5f1d07e172c145ff27176c5fc181ae976cc45f880e4a300aa8e70e936e2af5d903b4104478e2cf513c74514a362321da8043962a0f201d301f6c732b41ee0ab28b0605ace6427574731764ec95dd15db510042f939ed9e3d92537d0deb0ba5d6a05d484a932fbf73804107232bd5775f9204b5b72c03cb49a87217f172803b6ea4c04cd2e3ab40d561ffed0ac29fc20ebdf2f35100412ec01b357378fa83d7e9da08697c897bb8a26189af80258e5f0712a856809f893449ce60a4a2a46289cf8a493f9c53e11e1388fd2114751d68da6d6a24cf1786f4bb67367d71558086624dcf18686d0696c9d965a255ea43b230dc6e718f4d40bf678789c9a26b02210365d1f7f1a2a42ea2aa321619097f572c82a10ff8dbcc02d5af474eaab66a6f069ab18774312f383488a62733b3798477f954965f3eff9aeceb2528239c388edcef135727c7a6d82c769d2ea78bf7457357869bb664a7b68af48f7ee25eca8aa2d73eb5c0ce92dd76d2be47bfa37537d4af702079658505a6dae2d5bf6ece82a5fd343ac97ea6a14915e297ccd73740bb844bc9ffc50cb4f452f843fae78aaefe667687d2aad0878d11408610edc599ca16b3bf625e9ec6d85ab8959c4b7f8b48b225e0c221cc3bdcb7f80429bdc15f6af61ba4d5ec12c5695ac8edea233f20f98d24eccf673ac215737b347d78fee66483e42f7edaf0ee20594de3d180c1ab3219c9c5549abc8b8ad6f179fd0b20708a40961d99d415e84d321970d05a3b5b79bad7cf4be0d258b4820b7e3770ba902f9235568fa59357a21f6b0b68c9161ef8c82b7416f805f329c467d714b763ccfda5fe2f4579a386953bcee95160e6fad90693c37f2a0946aacc5e466a11f30c82304106aafd49fd783926107efdd085ac27a2b112041c47b2190cf9794bc4922716cce3b6a9143c99c24e32b3e478e036426a37297a8368f22711125079805d6c925a61b98826f12948a27bc70a248de6bf31673566857d367c6b65fae1e18dc5ab1879d1ad958f721ba38474092709c2c42bb846520337abfe41a1e20edc12eb36700bae4e6f6a3572bf9251c3cd02fbb2f7a66247bb0e353d540c2081b4ec3a0bfc4098965460f8dd47215e4828163b13daef01bc877b24b535abdfed3958f95db3a7aa32321a8da45b3c4c59ebd4b66316ffc44a58ddf78570bc24a7b60b12c5eda348f899fbe6f38241a485b46fbfd5c26137ce55cd75957f9c8ea6c0e0013e14a3b133dd001c41132ce5a34aa32485df9e248b178a9fef35a2d5a4bba1956608a275dc351fa078e645459a2145decd37181aec85557e187f149a8a2c92055fbba14601b89b764034c3da649d3335c3ca10e467305cf9887eeec4b8dd04447daf92b2b966900d6b86b0ea23d03fea66f3b8082dba0d3242fe47eec5146454f6cc96bc1ea80f81a096882825484215f8a1b31e03ccc765da7858b3ced6b4408ff6342046e077a4c57102be21e86bbf70833b5f395db4ef845176ae597a032901dec1fd0873a0caea64330c39ede61e6063074896c5aa8db605266da1a9606fcdddd92d71f87739b376585d5930078830e903871d6b7bdc34fa4faad8c0f22fd68ab4c4479b40f97cf354f0067a351b7226843df16133141003ab5aed7e397b0763c0aaa67b341b4349ed47142811819c4f4552bdd882f3edbabd30e081111fead4d4d5f32b5a7537a9c02eb7e3fd7dd80bce794e4b4c083ce35f669cfdd978f7c3d79b9ba5773ba4ec7e24feaf2e5f338dbd5e1736afc0317d5221c8778989db7487e1e837fc87b3bc37e550ab0415a569e022008ef01ad8eec1f7395d3378d1280159477f0d88eb648fb844868b51316de36d60e4c90f63d6f467badf7bce81f344249af7947aac523850cb252396adf7ba48a3574a6652e126c7b660f55f18b76cdc9174c67226376326c16616c97de1c82e582664933663d24edbd553b7563badc43d858e3f850ac4af25ee4f02aed3d13f6cfcb72d350a636e2886bc060e3543ab3df22181b3cfce72761195a5b291f9ac19ce0560aa0198c0d1b37836bd3518134be92d1a543c1a350a1d98bb892272a39dcc222e0da027beecbf5e63f1949ac69791f6e197432d3dadf1a4eb2ac6b4185e85a040a88d0a18625d7684fb67bb6cb06b0ecc6dfd04edf0529d944cb095184323eb23f77ec291ce72a33cabb9126dc127b6f2bf99694bed8829c0acb87886fccd9de0b04212714590866d71590cb5e77071ea99d95adeab7e50e2eb05e0a1f849cc830e94b546bea02aa38326a0fa5c8fe14ac30147fecc21f272fbd9a259a34087dd3d8ba1627e09d9ddf300f9b96bc97164e2a2b79236c9647d97613a928ef3fe9b7b4e4812085c66fb6e1f8157bf88a5f99fa33b5e5aad804e8bd141911d660a8f3dc4b37bee3d27c1294063b16032d2749f398452d10b8f14f76ee61292bc50a812765f59c490a931c9fc17d774086613d66a35f245d45c5c0ff8986b051c965fec309c08f9547a6d8334d03ab1105c511f40cd8df9784b1f3a9d61228a5349a48e73668ed25516a4d3cce7bf520f72cd739736dd2838bc28f1f317b2ae03304347ac9a858600e8b55a7a0bf05531e331ca06c715822dc6c3e437972b22c20f6cfcbccce5cb3b73c3f6420ab72ce3799884efc2a787fdcfdad71cd8f5771ee1499463c006bc5522748ed5266f9f5a373d9b447b05b5873d7da7b74ba0c1dc2811201181a9aa32f7517f3c7049723f802e262e4081be998b8994b85266527b0c5022ceb36f2f2870ca68bf9f9a88eecfe9b2a633285989a8dc50ded5e63109a0ee8c4cb3966feb105088f99745505b425c41952b1e309925eee5a441cbbbe05c8f66ac9a53aefebf046bd43676df08a6c1366338715512ca4069cd6793f99a253b1adb0b51c106cdedbc9b6a38a0948871b22adc64e66a97520ade82f70895f5c1a953157286d465b412203750b204ddbb5089abc26cf8636c006422da24d15a0800f09f477a0492dd495b38cd929adb56beed74f13d1676dfd024935b47d594d65606b780198503527091768af3711152af785802b18ce3f0c717fd64f38d33e768e3698af93c886a14e745f51cf138fbbda4040073e3e56032cbe17350e9a4b67364e6c0030d220300e9b989a253e4ab35edc6d424f74b6e06417b87803287e45ca4dbdbd1aa7dc9075ce5d9fc5bea73e743127c9fd236ceb06100093fd02e956e0ada33544921301ad5a1f0481d351fb9c7f0731fed209947ef416824342d4e1226e5df88eb5716640fa961bf7241c604cd7328a3ac689a14df1adc7c223b41201b2b15ea096888db3b51eb611ac8b0b32c3d635545f18c07f8fec21031b817d4300f56c425ec48a02638287f4763d1581efbefa82b8a0d89f36758fbe939556d24811af69fa23156b04287d28e53c8234eefca4e11326303c13b67914784fceae496e6571f135eb6043b0953cfbd56d1c7259b967fdcc5c2f913c8143467b6820ae8ec9552649018ae5a844d067b8410069d4fea96a92e66ca18974836c41d1ef216a1253a61a4eaff81ac729cc69b1dbaa18427ff1de46e5990939b0b01b5d7762ed6c98efec063747309f1016e36bfffebc1088ebab5d23c5f87523fef889ad18e483c4b28dc9f932e9d10d54807a716c184ab73be5cc24e270a4db1da2b23d5999e3d04d97f83739fade2db969b4dc09de068f3a451634b12756f964f0f1d63f2f8e35a0f2cd930879a2fba83c7433c3698dd927f42e2c7419c3c5bb79458e1d0332c877c23face2dc7d7f2f0af866af33824ddf69c2733e725c6f7b42bd0c226a8c7b88dd3b70413fa987e76f29b75ee046ccc39b5be80a58a51973ab94d1fcb57a298d2ac3f0852b3c9ca97e59a0e40aa088783c624400f0209162083f0d564d1cdf2b197a2d45db319e9ecdf270c61eb340c464cd937ed18d4c57e9f84f3116b8ed12e2b87a676c4a689dbdd3d07e367af00973725e607782caed9b778e87eeebbd1621a5ea39f0eb2599efc3321dc33e3b43d1caca24a8039c2ddf71de4c81c9542c84a34936d96a84e7265bb712a71b10f41c80e41d1aea6788d0d6cadc6071f99251039450e36f5b48502649069b1aa50a623008d568938c619f0c50891fd8ebe110747579e100e31d2375907396c24c8711374a186f7de5f52ab5f21cad753b5fd7efb1bf94ee68c6f1cce776e52beec4cdbfdd0982110ce61c96e0781ec4576fb8a7902b604384a914dc8287e2bc483839f841d95c0f959f32dc9053a667f128836f1b13be2a73e0aadeae02305da627159064147654080fa5302a6884ddd29aaf4434edb71d3c84822d9b96b071fa95ee70a53173a4fee9858f2a9e304b5f0932fa4099911af64f5868b6197956d747b01abbc814c7d4f64ca922c098128e3e415f0de41673612b43b0054edfcdb1b7dfdefad8835774de82e4f538a840e053c3fc363dd79b5cb168a598805befc6383a164564ab58027f104444f46d015c313e8c92a20503a5cb8076c886665230474774b5c0e81e009b84362b490efb076c9afa860852e676ccd518fb504ccbc8109b5184bf246c61d338bcf581b4f66806f20861d37ff57f966d730751ebcf407156e0f0b3bfd6adb87c0bb11b29f2821aaf5b8b1007f32fe1a4b8978194d3ec1cebf812563cdc18434a80cd218f44d65bc971f8af5ae5064570f79b1fe1e7fcb4bd264b597e5c96a5d605333d00dcac57f13cf00a6afec19385f57accde45473644f839c94863a424bc2ce78ef73ed813cd440ed3273f8c09516c6a78f8ab90286daf9da45189a718f43dfd589e35978a89fd29fdf024a4c5c0f6856bbb040b2752f023720f5bc77b08e01a4e155acc6525b3d973da3b1830f565a252ca5d2b2019739dd65092e1334ca51425ccabe06e7d51e739b1430e38dfb26098e154874f390979a1a06108119ee1cc232f8564715f8574526d55c5cdff7819a782f6abbdfa8be80544169f364e0730d1717f926114524a1c489c3a1510f11006c41ad09c3927445d1e8303a6222d089a8507b24496ce2d080010ec9c557ac9c1112d5813d7dc72f30a401b3feb774ac30c1a90d427a06a98f40586032a113c56b9e37cfe029197de146c89a047ec478b033c0f2d48818541fdc5d291f590710e534a0b92781bdb882951a7a37d466649ad9c2acd0ccaea3782442cb38ae652dd037557ec6e44ef454500762b8c9275f3dd7e21a9e825ccf48b64825c538b03674e220914515decc743f6077abca8509ee9ee921d66ed466086a13df1dab94e91fbd17aaa5d3a5d44a3bda9e535ca7af7cd9aea045ce805b83bf097e6940d8c0870319e4ed04da80d295b10d9be4a79a5a257321e69fdb0936d09ccfbdffacc0909aa8c505d56ae0952419d420fec3150f0cae9759d552a909221ca44aa5104b2edae33929a1ef980e323bb26722ef834d458c09da26cfc04d3dd2f4976937d34502bda9443155ed981be9f3aa54bb55f9cc6f8b28928451af18f594bbca7450b07e75efe0dd6cc9fbfed318013fa1908c9611ecb2a49b7268d9afc485685ba304a4e7563137d16d2bfb9a3e441ee622e873168d992fafebe8100c965811452cf4060300ca0b4094e4f8ef2517110437945c4e76e62b3a5fc4afdd117ac914d686e89174c60230798101de603f4b03970e1a13f721a4ea5efd3ca886c29d5f659ea36c74501003c02902f1908a57f6acd902bc16fecb231c921160e62a92001b964442ce61b2cd1b1ce9155fdcd4f9dfb4008aa69a81414c63be16f1b630010901e8e37f428f938e9007bd4a65742fa6c1e5e5786ee1684e022e44ccfd1887fb202988d8266db2134429e7a603936ea7c0c5fb5fc4865ead28a721eddb1e294f7d475a04e0986be3e91b9874ec12644f4b191efb611c7927a0099ccf108eb2aa3d67ed6406f9921f1c9a08018b39b3ae7241e98787cebd514ce71dce15caa14dbc42561cec8e7cf627ff88e585ecd05707b0540076aa6057aedf51af581b17f81eff280ce15264864d7457339c539ee8c5c42cd96a22a48959164fea29fe32638b125697d5cd31be754127ce5bbbfb33c39994cc97dd1ee9b473b88af7d2da392e0d52c41fe2a81944fcaaa370c989ee9b64c76fef4191d672d3e15cd30a12ca84f37d56da2a11274fddd38a7afefe47ea2114466cc21c7d979bc5007c271143eb359b8cdd4459f1b4294bd10c85129f1896711805d2aab20a10058bb3aa0186e94407db29040f5b9094940a350342cbd69f029b1006b24d617b4630c11362e98b2a9168e072aec537ef917a2b1d5baae67ee53ea40c435aeb4f1488df7676116cd337cbbd9b3b3b018d1d959781adc8593d6fa3345020028d6e10909239d2a33949153d62e669ebff218465067d188e0681cce0dd64a0a0176a799d765b601529e5c2e950aa59b02b618418e0639de4e61d3ccf615a4dcb428dc226fbc99c5d9d1b0f222db471072d7ee812e9972afa1a2698edaac1711df328842f73864e305b89982ab16d4e4c03811839119cd33d2f5de58f061e73b4bc1a829c3c048f310489e2be6ca1686949f13a8e88d2c2c572b7e55a800e5ce0a3e2141118058c7d3771c7515503cace573b390c141949ba12b60ef3e950888e76461a2e1114666494798575106fa425c38fc4117943af882b1afcbf5891af91a6c22b78760cc257bf7029608127ca1a370fb63f4e9907b7c0747cded5866bf478eb59e9899e73159874284c5afd5d21ca7bf43ae250af0ce85943a7d68867c163aae56056eaf7a309edf7c72d59075b14123a34d4b48b190aa229a5da5aad4217de06f0f1f8bad5d2d2eb306903319bb6f90e5ebd1d5e36acf380d411d6d72c5fc161ecfea8d53f85136023f88c367e3cfc2aa92559b767d1e76e6b4d9d30ac01b769f39503498e64e38ca11497a37c78b42663f831409ca1eee943f0d9a0720ba5f22b09bdca4243196c99f3e9c127e44097d446826d5f98546bb5466d5dfe7696ac6198cae33094c85eeb537926446fb97a0898feec95131542801b649730cb1ffe46f22a97d5c88b8a4e0296b3404574daf42f342198ec9f87a667073ffa472351ef7cc0e46842526fef671a4e73d7de4492cbcd785f4ed52d83b7a7a65307a4fa106ef3422217c14a26410e7a383b8e8530c0f5ecaf907f7534cbc2d0a86eb87e858225c2703cb2915a8384a889feb2d02ab84714c76e22cadb415bb032a7b789e8a549c9a5ab37bca75e8e35872aa0a77b8d40be9e01b0cf6d75b5ad48d7ad4f93b4beca1abef544b9f331165bc060df9eb670c6f566bb92893494747fe1ab7d7adb8e1a59664b89582c79b61b4805d8b32372d4563f0167fbe242ddd528af3a67f83d6057b197742085392a6e1eb255a6fbf05cd8663cdb459de3479e099a0fee65b76866b9a938b3c8eb811af33a5682d55f3d5b3825c4e8c160a214e899ef65924fbcec55cdfee112e1c1a1ec19eb5144d62e3342df9836c5d7edb1e461e0ac9b060db026823f0c255d219a51a7bccecbde9e92ab7e634c66e4d90de921d778b3e992d57b2d025988b0f9777b2ebccf31f92d8b8e0623a37059ffb27c98c5faeb9a9426dff0dfb501de2ae3bcd63cd6e35f7529241035e5593a1f57a45935ade76c6025a4c1b25c7706ed2d9b48e3c7bc7902fcac31b316066f4de216a76f0ec29a661733fb13fbedc64ad5387fb381491a6d5258c10c8c75b4cac730a6e965ec57b39c0dad21ed78d239ecc075277382c66c748322cb6e013e911a7a15baa80c746c5a40eedd43696bd1310ddbca45ca2ab1e987cc903a3be65325a6555dc81b90340f3331380165af524be6fa923fc51139a017f30a5d0b5cd0a23ba68f500402e9d6e0658194f499d0b95b8642c733cdeb49be2c0dc915cca76980135a02523f1dd3654f04547a673fb1f1e76c4d78970e52feed57bfc429995d870a03a2901b122b05c8e6b18c3e4428db7432f0c4c5cb3dcef890b5d63c032a39cf65d23117c05db5bd948973ae56c67c23180f180eac0a3e7a24548932b0694c8e54f61e7a2f8fc67353c384523381f65d55ea77c851ae4811b5c0d53d5b62067a3604d871aee2a289fb8864dd84aabf57a09b5a373ee00ee9aba9e0274ca8ed2e25958d8644edd07162e41199923b8900511854d82942fc8624b4ab6f5fe0d6b7f64207f6f6590672e0cc0118ce77562ad568dac32093634166ed3c5cac14c95777edbc6e554e6ad715653711cb0e0bb8d5602ebbacb8895318eefed478fe6caf24eba5d103c601de94e4d6f5d1c1a7b9f469e0ce40f082125295ee5fa3003f0c6a329a45533ecca43ce83db583c4a34e3671e5be9efb08d677eda46ed340d559692709eccae0c534519d8b059ab3a372eaafe3eb6ce3705ae0ea0f2cd7298667836b524207bb5ab4494ec8455a99cdcc1ff576d69086c082f56b70d8b73f0fcafac409a1479354173f1de5e8b8c003f5cf96dcbc9fde2b4c4f98305d41ce62651dedb763cbbecfc6a16a385cc72e6d873ecb61fb471f3ff0a5e41fcc1bcc857c1c5cb78bc6f264d1c168f8966eb4dd96136c6277316ce1718711f384476100121adbe4c06d9545de8b212368dacfffbb6ba8f6f930819a9cbf423ddaa41a958fb5974f4844bfc18f6db3eec3b39d2b12e7dcaf2b5321e95ed896997ea843a81d4573fec821448c3ccae53fe11f3acd3cf145e9f0c41d0190b53ef865df9cfc4db6b8ac023d8001d7689546f1c0f6d12f607cf48fb9517bae6c1998236279fe81ae0b64961171ef47f9ea3f06926459fd8fa009ad7d084541881886404a9c80b1cfd00ea624151b1615ab1171a1b8cfaafa970529018e3ee3bb7d385d952779291ab3126a7c5f300e55a18f9ac3e303afd0079bdf87f20fa95aea4305a594cc870a758a6c7e12d1936ba19d317bd39510fc44b83d8d6a301ef5d9df5ef6b3937bbbd229f53eb21792cc474f73cbe043556975b9b4a441e248f2b4242b122a8f1de5d6b89a7e6f2a6ba62f83f6f6afd199050bb94526cac5dfe7c5e78f1e4e54293dfa5e8de62e3d0c4a21578b978e4606eec138226d1155b5af2f102ff4a9f6af04ac3c6d84af5f388de3db894144036f896e0300d7a43279c4523d505a19b0e3afae29a24e66286a40856461598b570062ee8252a364e5637d84d421405b5f5d4f68ecd786b2daa2c5f7764f05719cf8fd61b6316140ff533fa94bd843e197fb8e798c986b8eeba16626981f389df525665d12e7ae6f8fd93a9dd977357958a3054b976a3bd0b43d56d75001dd426eae103a9e9907d52a53af5f08735e973509994fa64e5ba2afd102186ea0b644df780e35d02699f923cbb6d10d7347964b6a1796add34551c48b89ba865c447df8ae0263741a99e3815202b5faeaf5963bc428010c45c6acd1ee7b53ba16423331891ecd3351b81425b59ff73e853220df188f67760c3edba3402c8d4a06c8d5c44e602f43ff071439375e8b14a494ef513e0dcfd2e58455d319ac000091687e94552db9f008a52b6786f7754e18947978c310c87a15477a0495b9ff37c59172dc9fab2c24de266dbeaa83b2be10f7baf1408aa5dfd0f693b1d4f06d3b9f3284e944d3d314f169e9827f0d950e92d917489fff510b77c9c94d8822a1a3fde16c5f5c6a0f78bcdfe6b64f3d87f7a8e551f60b3ab7908b95a8abcb0474028b2f8417a758581ab5b9b4f84a8ce15772a390a2a79c988944584facdf6087cc0cf46bd23a596294e9154d57d023df589c02dd3c892639332982d47a2c450bdde8e871613b3da0fa38a13c1a602addf7f23f460aa5208e8783544e25838209417f3e1f92d6275b27e7885f9686cad2cac0ddbc49a8b231debb9e0d511b890649d5874a2428ae8a0116115f55cc6667f20aac588da792476e98200a20e05b85d60d6a32a20fb2ba825afe582b21fd584495c2af6c48b2b02e1e2660442601481e59a0f40333e648cbf875c5f6fb8cacd3cc70a7991c8afd406dde35889c862b012efb54e815a9df84368ded7cadc1094bfb126e59b1c3e0ed4260d5feca8a501a6de903c0d6a54185383b34d06ad392d43bfbf69241e8f7a511fabee5c654c67c7d07ec354b841c7d3b0bc5093d43fc0794f30080ec315226c9b00d7b8489e7f542d8138be12314c4d9c664c1fd54ad612f78a64a636c4fbc74a12ac5884efd2cd0a119165deb59a0d3b995150487b3d91c984dbb53328dd2df42725d8ecae444821b0efa2cab9c0ac5ff965dc36c519e3b782283d393ed101642e40e09e32f1aa37839aae830f955784c33997991b042c6cddb428a93ac3c7b71db14145b77b383e6e3fe5d19cfa4418ecedd3fa919a8acd8a4f0df9fd698421665a6e3fa51a649d60cc76744254d520368ab5e4fe75a001a946a9c78b97e1b2649d0f52664514bebb9d3511b4089d208c1f5988330849feb9bacccc4ed89acd30086887279df6927b466f1584f79090883666604555672b4a83d4b1f7998d55a7d687fc3079d9c118438ced05d618ffe29401f47f5012739f4b7045942dddb2d95684a90ee2a018bb1500d0aca62bea14334606d5d0c92d44266f4557d95005a80df3ff8a507ff9f1a08be62c82ccf066dc48c12d8064e4dc2e420ddc8b55d551e4f19816ce8015bc75ff647dbced9c5fea3bbf3f2a8d72c0c20079a4b8cccfa75383c0d1d98ee64202347e24918106757428257c9c8c26090a7f35bb517394c24086fee5b84b0b98f9d563a5436355d5b22c8e460ea3df9de6aafbec83289948efab5bd171522224a410279ecca50fbaf30c8aed0d27345e8d1ec53576bae6ef59211663bac2c4f5478afa95cf16894626d3554ec5394ea2879bd704f03269626656dd5053643be8b725ad7ec708456b1f757556d3477aa0049888b9409b36bef7e4d1ab4ba27e6cc01d8aa2f0949551027424d2fdb8a1ebde595d9c087e3564d47e93300caef3565b32bbd301304d75e06d52bb46ca1e6645ae3a682a803ca8e3ca5460b0e8219c5f72142a959606c206b98637c9a6d0bbb2fa25e570330a2089f8b3e3b5873fd66b0f20686ca7ba1f0140a5bb87a7c3e5d19ee3e3f305dd4d7231db3bc01faaba81424eb6036484e80ba9a332d39076bdb08a44ad5520296a994d26a6d8cf1cfe21cad25b487ab94bce8a5611f1a6babefb64f02e8bd004a6a170661c0e40b6e3da8661886d3490262fe1c573e267628260ad540c2824adacc4c289bd5217b202a20988adcfcc5b26a1beb7e68de89bc56a2a1f982327bc393341645bc4c8f277449b93f422fda7719eb955a8fa6544563ac0359d1884d5a78891cd64968ec87b794ace85cda965d455d08650a94ac91d80e23684f3ce97fc2d3c9539f6d103ff5d923a03d977104a0707f82c6f1e4a59d2467d5fe43e28cc7733707db50d9dd68a1eaea2c64cd114e7c6261e5a0382f97e55674d1cdfb987c17689ae4b37616d397696601f2069a492f629ee7a10d84a9f3e22df32c9de3ae30de0555984c3e746e53b748ac489c02830c07e38e2f1be12e0bcc0b4883c3c146485102839b34c6a854bb3b8824c8c58ad39007a751d07237c6d1578035cb8e923424ac44212706160921fcffcef1ab2f9284ed188d0d1a0fdc7ac3699beacf6c7e270818ed69bade64f0e8126dc4b3c18ad63038008130fdeb037569fed01a9cf0a282ed142d839bd8987228d29b183618c4ec71b6d92313f4250e99981b1b7309cc4211a580f0c40ed8f9b8f344d5b0a88f31c455cb560907b036aac568d5f58b9d7b10e2d4a31e40aa32d23b5e90927c0d0f7ea014ba16aa6bca2ffe63c47a191e41a01af2782a746aae3b0881854ce1d387b4ab65254f53eee38adc082428be906bebad4614b40980fee99d4097803e06d1f21b0a872b436c4c3124abe50067e5b30f0c216ab88eb5b2b39920175b75004b8f606e9063c407a76cbf6b602d7bfc9e5debb1550522014ba3f0e522f767b37e761e0c5174498a388e36b37761b93efa09407425b0add34921b43240694a601b0948ee18ddd2bfc818467bf024f012c8e73a60dfce02854fa883eae37fa126e92a5752a19994c40986d8ef65a3f10e135f1f2a897a8766084cbb71134b3e362469689d13a30db06816cb08709f77cab759eaceee355a795b26b690e841e16e693fd060783118559d146ca602b0f6758edcc1f4cb2663de00d214e12743c6a52561cca0195376f6722a4c7119886e9504c41a2ce438cfdead1288f41c58da61a196be0ca5e58525aa1fb4cc4f8642868aa610dfb7c0312945cdbc59a55a284a574c0ff7d6a7d913803818be1c095c8ee1fac79900a43d5ac25753b50f3d469921dccae657aae00dcbe358d93d030f6fd284431a99068ff49d381b2abfaf7b5637c65dbb027d6202ed028262d0d120b4132d98926ada33611ddf73507dc738a052c0570c605c405202332b0d6308ccb089d258afe0120a870738441066c5c0c4970b3c6f62d0762a807aeb2410137160400bffb8130c548bdbafdf17fc5d82006795d2d913e90342f88e4f8735c4773a0e0cc739990c31dc5852c5f8c0a5ed8baf21650dd9edca97a97fb3aeb37dd5b14d428aa465537c185671bd459a861586a4851661b869deb0187a66ea9a3fe58fe0456602a5bb08767331e20da71bc7939aed6e2cc112573e4d1e4aab27c1accc2d39b52919129ee4e498779c9e63a011a9f8e871fb8f889a94fc116a7c54fd879bddd21dfcd06649a0a8381c93635c16fe51ac4483d547b470f606d0662c6706904736fb24de7fd22d2502809d3710fc5746eaf3ff51e56c611d238d0974a12ec7552637b8828005c1b5bd081fc2a41fba2f56a2e38538765f4cac22a6ac441609d7cdba03a0c734c6fe4bab9645c8577f7a5df429ab614c114f2ea6376d1ad49bc95c6fcc65c70254d4213659175b092398ffc917f3fd0c30bc43d651ac0e3688739f9108f91687748a5a212405a78e79eb3694f787b0ebc7de0daf46ef7c419c16e94b75215d38491a425dcdb403e3f68115867c0707fb1624ae89cc672cf3c447be9a114cdda0c793d0f5583d6e84c161b78fe244628d6268c3fc0e9b2b819b589dab5f3693d23392ec2bdede224cdf03e976dae31dba0b26b6d832ec07a20861db82255e8e7ac93619c761ed3416ec23a938da8f5564d37820396d66fbcd18741975d4845d6afc948028bf78094e19ab1f1552c031d815f6466893bada4099c73659607ea1b53835fe2077c98f588f7c25ce68d4c51f323d76bdd049e81b0b74af27884d3b27d419ee2489f8b976b74b078e59eb99710329c4cc8a4b6104a1e96f6952813e920f6d6cc7447fe15ebf357b8e3b0299d8d01f7e528e09673d7caa2cd60d4319076db8dd39f7a52953f7eac5b15f96e9d9728a2d940ac04be4557892083e4e3de0b36d1bc92e022e8c0beb83a0863c6a274380b03430428bdc3e0d546f631d131be6fb8099ee706ca424dbb86bad983f943207754fe66c8499c2022ab79e41a920eabf4631b65a0af9d8e11f4f159c583382a5291a1c7961c188b3d89b80a736c49fac5aeddfc1c720f0709544666fd9091060bf60b8f1fe3a4413ab2052bcba3558104524971afa00ad4134c6ac34ac213c157babfca02979e0e31ab3c6ee990e9d95b17923c3d508c4f21b2536b1e43db3690f7c6e525067fc14d21aefd82252c2639e754627db0c87834a3c1188ecacc88ab7551634e7f18aba06da56b4d5799d23ea696421f0c87059a4a3b07330c528b7b9f8fb69311ac1ab4ddbfbf238d563c9666f376aaf5012fac7e3b25601d62cd9241db790fc4578fefa63ca0819815bdf6a4477db0daa7fcfba1100b8597ce704749532320b53b0a6756709d03224f2e63927b81df2a673dfe6faefc824964b1abbf41037f794bc46f72a5a9bfebccf84688e53a1db2686804b3c019705fffd6b6e2407fa614a49f991fb219c892addd4e9dcce1901145c3bd5b890fc83b4225ecfbbd27606606e8c1d4d64264220ece473d1f676d09fd41359f6227eddc5e05bbc7e5bad9a173f1fad86e67c5da90d19a74cf2ff0431a2af460755d9788ee4ec7a09ddafafee1d799545c1e48360931ea7a734ea60e92eab4ab48838ad2672734cce2452c6d78868a022587897387232b4903f7645747ddc7872b78123ad29d450359775752561633ad8b040a1cb2e2f40a2fa40c0dd1679f17c791ccc4b20f1faecb45f0427287dbe769ea8f5c4f3c0b3f187d222e894dcdbe4f141573f8350e789040073b8d534277748ea920c86c2c4a9d08b589a0cd3cbc9e5578d04bae06c9793ed299f55048cdf46177487047ee7cde5a44acd263fabd95e3d67884bfbd5b58d3556798afc237bcc7ad1315efe0f0f96fa8776a82f9bf3c676ac85b9edfe4d7451adfab710502c580a9bc935c1a024e9dec2fe9f6fd0ae4c56886589ff9de41a2965e297f2d362572ccf3c8253abcbd37e27fa1ab8c74a469991827d5ddc1b976a0ac34488cbd76bb2c77681a2df3da040c7541dbd75e3338d5ff0ce13ab8bc67f9713647b8eb0faf00f5607fa9a7cea65dc365a0ea39e70567791f668edb4dfd118136228787777375510b8a7600b381dc4c81f4f7cee1f004fa7362699d4591f30b50c5fce2dc48c29e20000db3b087bebd928fc7a2a21c43ac4c2b17926b6468e097139fdd3d108a72c789620f402fda4b55b823616fe09b59cb4a709a2b9d1f854ed7d2ca4fc923c21585920a6d691fcef5093de2200edea597ecb7b43374a1e0b778891a2c445264464658ee8773e8aa892a1cb99b0359145e27042073b275552e9061c863a5c8fe9679c5dd88d09f52e3a77ed5082ad9539c393409d4eb70a40b719c3c8245a8d3d36252bbcc04e2d370f2f6b909edec4313e9e1b81aa8329947a1226447bce49d0cdd1bae6aa65962dad585f250a5f0fb1abc701f43ffc4981f1514b629350b91b20f860ec89048a811259a157d96fb33b6e8cdcb5a07d0136d2c1d7dcd6a66a48a09590446760657c3bdaa081ee2462007b8bff4643bd3d68d25980b62e5d4dd2a9e95ca90bdfd7c8374500a960f69f96c388c4af2f80bcf80b2bc14aef160d7ffd366e1030e9eb2501baf0562cb7ca0c5923c62ea979f8c0012294e75ffaa818819fa90bf98689c1138087644cfbd21b35e430b6abe850f48bc8ae220b891a3adf3669e6e905c423bc0d3045062aa1e8b2bd3b7aec22fa046b349700011b717c39a0aed49f007209e8101f305a02cfc8029159020610bfe05dc04c034de61b589d19411c909140a0ed6f0b2b8398c485f356dc254a1108ea83d5444e87766d403a29237153aa3c9ec9d86f25c018f57e815fbbcd6b8fd6a9ca68c771ea62b44cfcb724fa6f02e6dd2be4b3b2ba6d932e46ded714a23e5378a8cbf3158cab68867b08f8cb2ae81a90cfee3d8c082dce627ffc9725237543ac9a4a8c0f6d218a8f1c3d51653e54c1c7ce19076f5ccc0c67ecd108511ea5f0939b296354b42acc016646c66ac1e2769ab67a611cd9d1c8afa13cdc710f748fb1db94d7c3318a48eec241c1d795a3210da90b101d7eec472d18ef183241bc0aedb6ec6d135cb95efcfc3c52707c8f28fcebc12da9b75fc04894532ae473db799ebd42fa7e79f36e921bc7ca1fdef6b4e91fe88255f268899ce8e694c79101fac5f8f08cb80f845c9ba0e7c8bd56290e41fb1a8854587149eb8114e3f93be6b1323d00dac3bf7bc4b9162acff8694688fbb437e63ae085726161f1192e27a5510905ab7c612915132b5fd1c89d2f4591c1842af86abb6064a6f5bba562a0d5b67862a373f30082289933d764b8fd95476e192b09e4b5749f4ddc9aedf224e24e769e9eabf84ac0154d5e22deecc65c45215f7c6ddc394a55bfa0e8a0244c10899be3ef93ed21ff1806600a562705747aa6aaaff954e61e7f983d437a8ca8770ff8870e3fce4dd8e9501d089d941dfb1512bede64d75091ea6cd9240ba5be1299ace736ac4123bb8d8a7afb0dc5c421aeaee0521ffd459685581b6cfd76f3a766fe7b00bad5f5542252d0f37b30cc35356b85fcd4afb250e2834ad6f7e2833034baf323736083c87f42613d6626a8104308d59cc8e5c2651472ed5f188918dc76b034431221d5b41c19b7437925ba3c0baa594acfaba90e6bcd81bd391cc3322793e2d57f69c5acb834539c905e45c37dd3dcb5e00d059c4ef74a3783b4a24b01aa8e18523db2ba6cb3ddd60ada8730bc5426196a123e01829e76f9d7cc6e6c176153faeaa997735a856c6927987c12565a559e698607f1e42e8ad9d942e99c6613794045d7d00ddfa01ed44f762e1b29408889b1d320225874dc91e530247a306f03d5f5e5c375bf0b835cee955dda4fcd3abb83250def2934070ddf7ca9968658229622018df38c409d85745430afc9fd428896318716b75d6cf8c183aa15f47b0050aabfc9ec78eb157db5460733f855b1859454220e32161dce618f16426b2161053628687ffaf858bc0258a10e8384bd850806276ab3fd80d2e9c67d9f5d815b9a992887b7981fb05996b2d40f4875421661ea82d3bc568d1696594ae970fc688de72b760b19386a250f65550b41bb5864a76db7e2ebf5483e4058684fdbb032ad7c23d0e300e8b7bd94521458a435db49008a9dbbefcbf1240734ff1f8256ac1663a08108244667fc08e2e4d687c8851d3a3594794c0f9a878406c9550786d26ade98b197f28d2fbcf4e2656c2e8dde74b6b1462a8f8c11e318fd0266cdab32162e2b0d2989b887e3700b1771173fbc1e3cd8108aaccf35997d76c6b20ed319bc489809c1b2ac43ae1e14daac1c0d0b82c6f5921e98e83273bd80fdf5395588cec8ec55c92041f426508ec3bb3a828fe61e6f8a6c29403204806e7c63f1d41411b63d91622b347f27aabbf5786fbb7a5daa6a08b58e698d68c40998da736f49222791db151a0da76207b70b23d2252c423330babb78d844ad1a085ceff22b31de18166edf03666310b766975126e8b8ca4d32ac2667c2a2aa902dcaa6193e4d974804258e67a669e76df0dc6b9836291eae6910c74cbdeae6f26bcadfa47ddc4c1c29066fdb0d03f8260b3117d0508422e7c1ccce6c19d838d6d29a404ad33343820a0b3d2c9bbdeed5ec84400f1ba4b84e6609b50cd0ef9dbdf6b28bae2945f29c43f9232792454f0d016c919fa001a4b42ac3a8e3d07495f6aaf14cd1c3eb80ae81053e1468dcd1aae0ed184367c5180a7605132f078c080b7a612aa6801e6bf12b81260cc06d503712857098bb92877c5a54d2e8e76947bc9ac872eef3cee92364776b990bf1f18f68a9ba560393f101f38132c9fdaa2328b035679cf18a01b7635743e0d767a47b8f762554ceaf740e1bb77a5454d09f6dbf93960e1123d741ae3049c51d09a584554497c39d45683d8fff6a65ae6c0999385c7257d8082ec2541a37a211b28578e2768e05eb8aa5bf1b2ac09673d2ce2f4b54079d3ad84150252bfac38b6742a0914319f413f3274d76d727f3df9b8281509b8cffe5ba8a1f0b7997a37fe515c813b0e95804de2cdc08f2c25d667749887746a68ef537a3de1c8554649105603237a98c493a4917dd4e3694df4336bc461675022bb54a083a0111a441a39a9f91e80d15e5d1761ccf3de56749a9f62e2f3396d3f96736319aef70fea31a3376e3341175adcbd5dcd70db6eaccaaf2710c272cac86e421f960b03a17dda0d23c5b24df845754e523615a72081ac6de1f196020919b4dd613f0b364d97285d137a8c48603dc99a3d06bf43350f4d107cd7a8cd22405c7edaad7b2992ecd276fcd79ce35152bd7f11413680f0989b6c54a92355093e1a59bbb9558d96dc4d7f990aa41128421cb80f9e2bdce129e501c3e0f67efc0723979fb0bf8a8fe7002529a8e9b9ad7ce102daac7b7202764647ce939d9317151568aa4e5494f5df1898ae9669710334f401ea169029527252cc7ac005e18381322b68001280b4adfa2ac038b186b3c464c4069daebace2da91c7bf5ccec4fd18e7d978745f7fce0996148842e0b7635ce8a5cade36fa045a40e56dae657442056e64e43d19c604921810f66273b14dabc83b521ecf695b45d666599495c8db306cfc76434a8208c2fb8fa9fd940c9f2c298d1fe5399e45e06dc90d62432f34fd22a977d82c9d2992a64f9d541f25be975dde1b43178b3262f8f415de20a1c197fe6ae8ee0a6ae7bd0a342304739498c7c66ef46dc4397240196bca01598c9c252e3694ac7de63875c2dde99efc9610e9733eb8080cc51485a32cd07cc18abb9abc2a4a814e02b16e13d69e2c383588298f80e7f0edf48fb535adf80b20c32088c6f92d2dd2ff0b63dd33b393e37eecb415c0eb4d4573b59cb22958cd9283f2abd4aae35ad0fd150c6edcecb275031410d7a3f5a38752dacacd92bb3c7035689fcb80d521336777e6eadd49a4039088f965fa131cb16423fb14cd3edee9d0bcdb8ddb3d4ea302e75b4cc053aae7ed0d7ea2704ebf307388a7089c8b6a6f7d8be7aff1485bf4c827c95addeee2a9b23beb7e948a4d8e0ba0ab6a1594a4f5e258af916c121ea67c4f424e6f262ec77be02de8579442401b175b93723d2f9c39e9359959aeabb611de7089ef4303484f8573cfe23edb41c54e2970c94ac820519ef57ddd56cd649945370e246ecb9b2e5d2e92e3d86f67c23564c3565ce2b3904dbd7f5b9c95ab72155961ba45c31fb8600d0c4c0b54801f879c2f65df3c344db28ca26b221f264592600aa0980dcfac991498e6fe5758c72a6bb969ab5077630ee06a5c354fab89de3f5f85fe02f721844d91828aedca927916d68c12ec5267a65c71e7dda9e1ad2b3619f17a4f5f7dc66b3795deb0452752aaa5897c701d94e8cea0f26cdef7cf305e7dc5d4d133b5ed70fed13a941ef7e3eeecf25cf3bd0c7b3f1b715ae550c9973d2bc8f332b99b5a530229e08a9c3ca808b5793ca255975c2fd79c698f059788008b3bdc26d1ddb1ab21c7d98fe3b152eaa6a80f02334dc5e95022361058f83781d8ed1163488949b0cca05a359f10cbe0d6737442a510c192e40b2f4593cd5890f93fcd5d5bd46e5415ad04038ca2e8d7ced980d8a19ec3c6852fac55008d611abf22718768e3d21cb5a3e6c8feb58114a0d0bda34c4eae53781b0154995c213af5c5bf4110306887aeee7f7ef4781a7b1220c2b81923a1196f7595b518e3332350644977bdaa70384d6c24fc23fea1df6248ed817c399498ba5d00d1f062b4c19a1031e8abde9db640c7a2f351b14ac08def598707686f1b8d8672f759cb7ded0c03f70abaee7635def364d2d5612305c77fef59169f58712628c6f490a70823cf0a866c32ec54dea628ae79cb623f49f3c6b8f8e124479bdc5998b84189e4eb1452b5cc2a786c92b375e6a9c355f3c474c8186bb43a6f08bcdb181810f20b522906e60a15042e087f10d24b12491a4dedf945bec6c30e204cccf384b020344efc1f0aea0a7885d171b687d1a6eb71077c1dcec2a8404ef2f9fa4cabf0ec44b882ff05ba1e0fef1fb3190dcb46d44bacc11d4c3860404eb76b23994d93be6b2cff3255b680e27b9ea0f8e93ca86d7246c633ca5e56dfa4f061c1c140a9a5ccfb7d42cb5206096ec0baebdfc24475750a7aa0985e806212c73697a06c8476a7d31777254a716d81d19026360aa335ec9c58e1a35ba3840e7fa771595383594ecbece4011e45a556ab42f9355bf8e0825b8b7d5a61cc65412b76069634b28122c1ca1b96f12955eb828fdbed39cf30ac459bb8d0f2746a3626d1794c0222c2468a2689a90be5ad9327eb8a7784b50e5d918190068cca0ea4b2bf1465a3eaf030ffc4fd50226b8f8015eb903b8585e8d991b654961361a094f4d05b6479c3ac9252865002ac61c86e414321b1c9957df6eaf9ce147100991abdd70bc6e3af0b3f134e7cad084b644862706a26226c486ca92cc7ce33d7a038d7ae571c8719a41bd567e9983b6f44e49e46dbb6849ec92be2acc942d0ec4e2ebbe0f78f6b1e44c30052e6bf5215077a91843591cee23627f7b5a7c53bd3bb1228aac6d68811faf4265254a72e5db4a589af2135d02078ae8147d6750ce9609149f52ddc2cf84085a1fdaf2968da823e4f3e1e245e479c32c7e084bd3fc3596977365c1e4b293fb7c78e1a92f1e801792e493cf57391beae0a2c0d001c9e67fc87897b72c8ac49c93f0681fc6a26639664b2b2230ecea3307e4c6c8cbe38115d8760f8cc109173595e4fb51947f95e2fceeede0787419416fee717cd8b4ceade1c9e76db5b9001c2d7a01e69a4b186acbbe2d250b1178e262ea0b527b38e8900bb9b420d7b6693384a41b3cde74038f1a2e2d835ba21b42e59714676e650b94f3b4d0d1b8b079829420b5004d9dbdce35928f49e4b9409805912a9ea66fd176f07d291093b3e5d4ace058d30e7e4daa9cb91228f128e661f399db1417e0aafec0d8ac153cf208dfb70aa9e32862933ccd4305ad6d278d503592b4c583a045de3b4e9ef4c192e29d4012b663035e406ca41e3a06a7783a11eb0427e4a761c4e5c997ec0e01a6dedd821b07e49576f0db04903b4bbbd284593c67661245f8d200bb11581de644a742b6b74d90a26db2694138cc70e5c8057d25718c2a73227d1045bf6356357839445ef6570f84c43d854a2e4f997af750916cb6560b3a188c984f787866a65b99aa4529c530193e9bf02ecaaa3d533019a686d0b45391c215233a069aa57b67e0aa6f62aa8a56e76d45b68957d9c23e6c04baeacef013361cb19944b975841628170fdf4aa2b66e419a6b4e5aca3bd9173a581e48b89d6065a7498acfa7fdc7786bf99dadb3c4c6937b6f0f534cef6ae2b9a5e926a5f27e0406e613824c3a36efc75b828e6ebaffece74a17ac501f5a70c07429a72e302527375632b26048e7bf49f222e0b659d27078e7b2cb51647cbc4b23b8619d5da8cfdbe8f4e94df4eb4f2300cd39d99dd0aafa4c08b66e8e0b8869a53156726a22fb7ce2f38cdf4ea02d99019f69a958e9cc0a5f57f37f0083204d1f89a2e65046be3067e18c26d87a8696e72a1e92b95bc4e0577202ebd83110bd29b29b2486fd64c9f6f05c7ee69b8a58ffd0bf4f5be610f211b989e747f626fbddaf1643932ad880ca2aadf700d78ee1c90ee584cd43ab1a2c688ab1cd54e1031476e0622dc430ec8ea707b07d09e9a759e0cae3702cf742f440986e60f3982fa28d4e565d5a703a8002548e88b0984577439252c3b5eeb825d42810a28bc717fa7bf1f6d0bdab8527931ad4d00ab87864749345ea62ed1550a759b336d15afbdb6e3680409cdae22df1cf3c84d102f47c67a83a0872cb78b02d5116aa3f6e326b269137f136ca61499eeab48789c53993f2ac419478527c638d380b41984376e6a2caed9a4394fc939792c8f77370e46b044a94dca54c4a1e4ebc476d7bd570f6f029e7f817cc59aa05dec246a0e62cd846c55537f74299b8aa7b8fe3606006e807d8ba82675b5d7f00bdca8a04058e0b386e92198e0787f18531f66d4a00c2606a2576cffac7ed81a08aa027b40ae4c590d1d7b496ce5d7ca275f2bab7c5ce9932cb8f6c0515a0deddaafbff1573a5eeb936e906bac75a2f2d60ff4fe6769123dd4ca75268838ea1c45a85eda44d340e5a0b7023481ec09517dd6b83fc6a102b82df9e4d53290dc5825babd3a4e45d3d1c89ed9a47293f6dd4491746218779ac2ff1ee0a494e24e741f88e5e3dba9685a16888b9c98b855e34ceaf797174d797621774ddd2c19097723bbb2bfc467055c4addc9b164eaa1ae972d813d456cee4f9e09f9d1a9f3b85af230eafffe7ef8467f9f85f375083afddbf6fef57afb7d9ce71b2ff8dc5aeb067300a77cbff64aafa42174dd02e0fe9bf72fdf734061473e013466dcdf92ffeb3e80a8a7fd81960fc9c60038b0e3d34b3ee75ec1d00dd867f80689a61c4b2c9747c675ee489962783c9a1262ac59bf35946bcfa557d112e8ce6dc66363a9a02e010ad878daad16077b9f8cf11afde5527363d25d9ffb1a35ca66dcd7328150e390bf80bdf109a079c68d754880626d5ac4f88707e335dffbbb838f24e0ef70a60183de18e4675b44c36ebcffe8cb2156835f6cfe550005d2ceffc664b3e0c9a52d038a98f018a59809ce16794d7822454be08636bcf0e3d5cd66f0cfcff3a8d0894969ffe17c1cb7e6f8ebde41928c440d20890900bc9d590d82c753414538cb18f8264abd201142abb8ef20a734c31953b8a88f7a92733b2b7f732145a309bfc718831571f6af2b7c5ca2b8eaa1ffa7c0a8ffae1c1906893c74d21f5c1c94d1f7f92449dd454bf08887a92fc3389472559b9cb0a254fa68fd2cdc3de90c8282a18b87b0cffe5f26b6700d6b85764fac750a99004af6c6e43adc700345f688dd055c827b4d1900ad662d7b23a16757ebe87a241b350b2926fde708514726b919f529dd459dd49b1a47980b57ef34d883d173dbb1636fb202c65bcb882517ba38191cb15db295622d625f2d2cd3c59325e2dd3aa20d2a766265d49d250e86ff1f22aee616343d071e9d69c5adf5d8e8df4c6f94a82b7c4d6b5427934aaf5463b591c4889255926492c30ff46ec98589ee7150e9b864fe25c5c4b9e78a767cd7e7f1f9ba2dccca5702cc924a022e0c2a4712e405b642a3e94f03e930d43ff62e824a17e935f89ccf926808480b89e8a16ed0de8da69515ccae540a22f488096cb0c30d416300349689e30c0babae732a9634f11e8ab2d29d02dcae1087c9538d532b264a92bab98d5eb8a64f708d74770e747ee29133d0fed9c312d180e8fcea62fff6ddf810fbc372396ec2ed7509da2e96365ce0882b80de7eb2dc6a7b88899e817aef19285b88314b58c4de48879416fb1c0a426412fc6d407005459d96964c37ee0dc9816798fb8df1ed1837863e00bfe25f24a8a05d20010468e1bfacef93f40a835995cbdcff8c2eebde2f802d013dd0dfef2b57a36269f0145771d76c24927d1b21c7db3d1b346f18d27cb65e6a59c42f46540e6d53c972b080601e33821bc277d36a2900e07e740f11201c3ec0fd3e209c9f046c977c809aa8e821d5b9e7881e60e94c59286fef63670f07866d01072c21e654235713f58848e7fe081af3b2862bff31c253bd69cf287df5ebd4274312033a008d082cb1a0891aa95ca5a4c671036f4f59b4ace81ae5e2f6b5ac22bef8d7c7530d1e00cfcc76bf359924b7265e0dbd00fa7994390600f5f8535259c03ee3b0158cca85cff211dd121277c9911d845cfb134d1a2bd050570e6d586891f78f626439a649fa45247dbeba37fbf16f924d9e5669d7c539e7d842fb1024a4b0c7f66e74ad2a1879e8cb59ed771602672f1bc5696790eb92c3c15deb1e0a8b5803e015dcd053fb2ed825e1869a276cc548ad9b1876af517858ed2338a137371eb56bfe422f6d70f5d92b0de368cdd4eca0e0cdcabed6d631c4eab5db2b06c043d4acd68daabf3ffe37e74b970b0229052b91bd21dcc296b3186f5caf374a7719701b53d895c2b2b277f92dcc94b88de8688d39d0df81714c7de56d67f9e8a9add28d742243d8a1e9ea44fa31ce246f2f89cbf129f9c10b194a5b0dfb79f149d38adf4e9f8494022bf4a98ffa14d8769aab5645149ed520c13ec5e196c96e2668eaf9a9493fc01c420319f2b6c3977cc603bd8f097a9f2bb2b41658903478a915f172277f1f06df4900b921404594b0311ad4d519ee8ff4b6b20a354af42c6baf06912e5ae0027d4a83ce1c8e04697de116e387891b3ba98367dde4ce7a4c0abc962a205e6de38725747ed6655f3c6a048bc11927b81869f0338c5ece9b54f9ff7b253baa5ea1bb4e914ba5a793285d8e80f93055f0ec09c911dd0c636dee1e927f642ee8a32619e9946c817ea57f5234d477b508c7c2d3765e81b15ad9855b0ba008eae1c83f69f0d2f490963c0ded4a06f2eeb339509fae842ce002dd4f38cf5238b224ba697956f59d13e2ba960f2960252535e142422102de13ab0ecd9cc87187bd2881c538e86b38cf5f4674ea8eacbe3f22007f16d6ae3cac9e9bb429a0d88c6452dc902df9a9833c67e3c27e9e84468b3715f14ac4fae9900cda87245e69d8b8edfa55ca94eaaf5bcb4a896ab22c75ea1e2a127c3c253e2d70ef1f27b91415f56311b957195a35b5c953d71f5fd54431479c1042f55604de2d5cf47dd69b70db35eeadc882637116c61c1ef284038567290c9c3e5ddf88cf9343b63bf48f416905235cbcab56c96770af30ad6a9e559579a1dff4c1fee0c88745aec90d4b6d0d9af2d1613a4289fa83f6f14f54fd17cec121ee82d1616fb1d1374fdfd1793114ae9b161c5a3bf105b5c9ceb475d5cc01d3830c38e5f2822e3109021148f5f76ed81d0a54d203ca0c53995320dc4d6d0e8571c8c678a46437b1bf6958f2728ee9bab0513e03bd23193c52e05383f2e872a18962e6fb3db96ca8c97ab1471a4c98f27ed3309de31aecd631165a48a5e079f9fab666bb57767777f796294919920935096e090e33bebc54bf6e22a9b61ac57d7d2fd2280cb8cb811a4569f696c3685ce6b8d72c0db7d902dce40c13d97eb356b86ba68b941dd968d564fd9becf9e705bd5ee1ebc3429c4d8e8634595fbbedb172d55ce32bd7911572fdfae36b5463a46a94fbd71fadb04f69912b4eae9fdd698546d5cd88feeaaa8d359797eac7417399fce4c9833b026ed02ab34c73cf3cc3287dccbbdda9feee2d6abb494569a574ce49713414af0d1a8f2646a3e66b61e4da93abf7959146aeff5d6f79a93e771d28d7efe86fb8e41ee3380fd3360e2bcd8106cb30cdc77ba0533d6aca42d334ed438dd3b430d334b1cb449ad8699aa6cd4c45b713b93bf3dc1ad599b208c3efba173d77cb9ab92a7eade26fa268cac294326511aa15a749df4274eb2a47c4de5d3326cb7ea451f5fdc50fbd1ba9b5560cb4353b1a99fee763a86398a839c920eaaaa4ed8cdc99b430a94c59cc69cac2a46a94a5d14c293a6b8e6852791569770467eb30bda190a6e1d286968797b550e8f67725c9f2eae762a3bef7adbbf55a2b7a2a7a2ef49bc3801f0abd470abd26c225ad56892e87dcea087df679f3203fd2a4fbd70211f3daff5d4ffb8e64d94895e6405dfc4baf921a36b4d22bb334b4c9af05a28d547953a7ad9e6742f0fabdd63e7b1fd8570d67f3b1c0f00dcdfa75602eeaa8750be79cfedec2de9a27ef8848ada837ddae03cc3387a9dddddddddddddddddddddddddddd3d3eac9f161075a5369588435abd0eb9b3a23c2f2f32e85d2420f1e76723894f22ff85ccd1e564f50a886a404159ef04f90e160494bb52a04a7bbafba7274b14dd078443f5d99420bacf53bf60b53e89f20fcee0319aebbdf465dbda5fd9a3160e62b97d398926ed1ac47223f5f76b58682615664a998460261567526918fca2a6c0b0e1ba0e9736dce538cc94c59642833759ca513916c9fd948ead4cab90ad0a11534d7e5fea4ba5a8981253584a0a02baf7f7c1fdf609983342b0e8dc8505b7e19b4cad0e4abbeae8f6cdab58ad8e5ab1337229a6ceb03ab08ca524916ff2677f030641fcd2c832f69e36412cc3702b7b474431f5a5549f48535fca079956d5971ad1ca69818c1f1d29b47210799221052e324fe6e8a5a5d85f49f346bf4b2f0a640acf8dbfb4919a15cfb634fdd47ea3266797e44f6e5c6aefbf3db86de0732f6e180c29bc15861873dcf61feefc825f881e2eabd5a161201dd6b82f6d2ac57ec34034ac84973192e6d50c0663ca1552acb13c8dd2e3f1a6c7e3f13c658358e98cc6cafd58cf84ab4675b8a23dfd885886ab70d5647b3c4db64bc43ef3783c285cd1faa5c75386abb26e91e96f2eb1f4208f6776909b994adfc714f5da869c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c2ab84a9bda198651c7a557690e5cd848d5a6fdd50b281cc9374f32a0f0a3851f8fa7f4726c23d524adb5c979eaadc761ba6f4a314a29562946fe64fa1c4771a5b4d45ab9eb679496f1935b636940b4bce920d8ebad130762a9e57ead48a3b046d56c9b31f3f378f2e4a1666c88c157022fbcf866f0c9c00b2fbcf0e28b81175e380e381d883f0849b3522c84a00500f2242308ad1cc660ce18204fd205562b093f446079e1c383dc243db943ffc95296e8dc99db0b204fc2e330deb6892289f437de6b514a29a5f4c37177f78fe5a5fe6d134512e95f4b79a97fdb449144fa27c914f6f24292ff2492687bbcd49f6d9b289248ff24f9f2b2c3b990e43f890482209038634e3fbfbd10bdf74eb72b5fa66fdc99bd96c388b64d1449a47f921cb74d1449a47f92ecd1b6892289f44f92aa942aa54aa952aad4cb0b49fe9348a2e8b36da24822fd936493bcbc90e43f89248a3c3bdb268a24d23f3943e20272bbbf71693e5d2241bca7e3e9783a9e8ea7e3e978add06b855e2bf45aa1d70abd56eeff703e9c0fe7c3f9703e964d7d1febfb58dfc7fa3ed6f7b1be8f254a8952a29428254a897a6cd0cb0b49fe9348a268836c900db24136c8ee80402f2f24f94f2289e21441a02982405304814020f14120f14b976d4604140a89804222a090082824020a8980425fbe6833e3eafb56dfea5b7dab6ff57d3633fe38ccb6892289247ad1d78bcd8c54e3a81a55a36a548daaf1ebad33239f6d134512e99f2447ef33a3578f5eafedabb76748781ca69fc4e5309dcb4bfd244ff2ee243c245f8a25c945bae49264dbc0121369394c13417ce3f8feb0c7619cf8feb0e5300f80c0f78b2b8779e2fbc51e8789c0f78b2d8791c0f78b2f8799c0f787560e4381ef0ff5380c14df1fea0fbd1ca602df2f5a394c14df2fea71180bbc105f92505f92305fbee430cd9f21be9cad9622be9c4146fcc806c5a1abd2d843d2968806d1d70f8dd32b1f787a7ae81f057c8825e8c543b8c2a5f758e07a14d72b70bbe63614b729707b0297ba247069042eddf1d2fc272e5579693e046e145e9aff809b8497e63b71492fcd6fe23acb4bf399b8f31d309f010b980ab809983d784c031460aa24717520318f18c0cc3c11c09d5e32e216319f883bbd34440e983bbd84bad34b42dce9251c777a29883b7ff37a37970381cb0d00b8145f70492a79175c7ec9dfc02559f2275cbae4b273996e39592dd7c62d459d52f42945a01cd2c9fd3e94e1aa0c018952b99f875b8a443eeeb3c3d5e1ae5c959b7251eec9052ab9545092325c511ed12d43a9dc1f2ac3151796e12ad4e3d33a93d53b1d0e579a4eca8e3532c5a5b69aa7a6b9bff0f79f1943718a12d91fe369b24331341d348743de9b58073a0e57160c62e93f59188611ea843e94d23572e99fa204fd9ca2040684e2bc025ab95641abd74a4bad34d5eac74b194f8f0feb67fc69a9825e2955a6526538aa6ca5ca747cbcd4b3f9882cd2cfb748201fd70b0fb9f33aa4d5e885e160aad18bb5fd882d125050eefa1daebcd4fe2f3e64cfebbc5415f9f224e94592e66561f0569be3d0f1476b8d54b97ba4ca5ac7473e1875d5d12b37a58d91f0f86bfa683ab9e9cdc210aeca70959b5e8fe338d059f3f43a19a6b108780128531f3db2ce32da199665d98f1ef4891e3e7ed0da3950150d310987994f9f346172e4c8340c4f10cbcd5d46829a24df96402cdde5f2a046cdcad3645569d193559eaaead9b6d25deeaa3d3c358c26bb791a55c3a8b5e2549ecab3ea09a35165dd1123f757344498ba9aa57e7701558c562fd82bec15f60a71f3f1a93c3c3a3af60a7b85cbf57ad12b6813bcc9527ea9ecdc975b2b8d4679ef15c95eebbb16d953bea9b2d76f1312ce74d157848109913c8567ed4947f8410b1e142db0f05aa4219fb020c3f420df14a091a7d0b2f62457e4ef0a22157821a7643fc950c19194ec4779eb54d9cb3e7ab3b9819b9079f2dfb09827ffbe36d33bc958410bb2165f4ae4bc5776cf95ddbf1ba720a0d6ae3e6ac501eddd1e7677c5e9ccb14ab78d6619a7d5be11b16e35b2ea5ee9ff0e9853af749636cdddab7b9def5edd2b56bf7fce39e7cc7cba6b9a0a324c8886bbf02fb72cc36a4a8b9c92276b8d346421ac3c7ddce0835c4e29e4fe963cc968b1328f19837dbf371a2d8f3ab250fa24252658499e98603fdfb921fccbadf3625c6ecc13754185d97d7451480c41fb791db7d5aa6119762a21ff4b52cc14934dbaa5a1a49335c4d9e4098aa6e18e83389b4449d13671731e88f4cb2dd3b2c7bc4ecc475e88d1bc66ffeee9d7dae176ffb9c3b10aaea4267ba22af58dbacb1ca3084a96a8dcefc38cb9314ffda6935c92792e8144042944ee271bcb5660ef55efc946e1d21fc33c4c4f18ce329f2539873a9f4eb2e1308d506d334436dc721061b68d884c676278da0762af65a75a33d7bcf0264b2976f1ed88f4b10d73ed23335789f4cb2fcf59e7acf3e7ada3d1a842f2ccb58d9cdce75988b431eda374fe6c927a5b2152b2c9e9984e968aabd7ea9faf40a4ef5fb7ba711f16c1fb26c997178a00df3651ec512ea955e977abc391a0f3347b08c1020b1d38f714482041bf7dd67931151d34e2ccd4223169cfae73e3c07e99f64ab333360fa8b1c0c28134ab634e92ecb70998b354dfcfb03a3c5b1df5c36c7d2c6b1ad969604f437b2fd35e6bfa3db9e770670dd384e4edcb2a44c355b57dd5826a7e0615754b81a1be0f0dab19d6d4bb3a56334ccbb69c9c9c9c9c1c6da62f98c3e570395c0e97c3e570395c0ed7f5f73b1804b1a9d5512d4d5b1af7ccd2d45a2d4d5090a5c9b22ccbb48fb3349aa6699ab67d9da5b1570405f5f46cdeb681ad2314c471cea1805f6cee5ebbbd76d7ee5a6b776dbfa65456031d33db2bec15a9544fcfce8ebd2228a8a787c5a29402c14382ae712713be1978e1c557824f06de1783adbb55e9b77dd5625896695a6bd3b66dcbb0ea7d72f0264bd9a572bd5710c56f198749a1380501596311601174e1a31fc322a0fff6c3db415e129fd69a8657cfa42fb0a76d8fa09f66394c7f88bd389c51968bdeb92076ae7d46a5b57259fdfa05d1a459fdd3e338243ffee8a74f8729f9d04f3fc1cdc223fc215c92b96c1609f7cdaabf6da24822fdcfccfcb4805c39a87bead7fab559d50b62f822a6ae265935c4f5c72f47a3f047cf237c20a3f1f64e93235c7e1ebf6edbe8e7a4235c8e0fbe37bac44b8dd427a8ab51e0d7a7461a257ecd5e8ba028e2e669b2864fb7107bfaa751e1572be41ad6300c550ed33bac59aa5f77a8507b2aedc9d50ce266a4c998a7daac79aa2fd3150d62495fafdaac6651213ef8d44e9112fa29449c12d2301ca7abfa3febab52c4eda688339ee8f61022c4fbec857ccfb1b66685700f0da7845efb9b99997df4a00304566a06c329a1d007f13ec3296208fbe01e7b0c07f99ecb5e7b1fd96bfd18cddf9c999626a5877bbf4cd34c53b93e165ef0d297c3745fb7175539cc873dd2d6e14ada5c4f6621d3a3f0521522e48797ea27e1a5fa19ae8fe11c5eaab54b512bfa66b362bba199c90ebcc9526a41b5d6ba4d87a974c670efda7f1f8446fec2ace06719e8b582b3aa1ca6ae6c96bf3b8515946614db1efb3a4bf55b472be240b354a7bb2600ead39b86034dd26dfdef4e61458aacdc56ebccd4c32c26e2d5ef622f15d3b2ac3a36a5fc56d3cb0b8ba95e93cabd9a8ec02c9fb7dc811cc6fbbaf25aab8e67f533af6a88757a896e1b8761db86611ba679e9f559a55886d9a8b5de787d0fda3ca4056fb294263fb3beb706d1554b71883824c46edda2c9bacaeac605f12663293bb8f738ee8a9cf7a238a4c98a55955b0484deab560c63a0aa569a8b767fb7df941dfe9f18dfaac9ead97f6234597f08a606b1fc86e4fa5ef60de1bc6d0ce2cb13d0339e8f97363188a5f70d51a351d9635f7e3e487d2a2d72c5c975a5c345ae5f18b962e52746aeeff9c679e2c8a502110897658ee33c5c9a54341cc6c6c8d5f3c9f55d4d56cf880371ec0579479aacdf0dc452737d5f764f5ea69fe34abcf7ccc31976e36e526996c6b1ebef615c764bde84612525d89794601c97795c9679f6df7703d155b923b9762acbb0b736dc97c19f22482adb703a299d54ca86b3e16c381b2e555335a5b3a54e74441bce862bc1a50d874b1baee4bf9ab2f16cc3a5746aca26cb5e4aa7a674c4d203291b8e4ba5529966c3657fcdbbae0a19bbeb3dc7bd17247bb8fc6e4dd9404cd9e18d5615cbb22ccb2acec5b85b85e4924b45cda509ee8c8daff1e530de1a5fde1a5fde1a5fde1a535548a3aae072f6345735beef314bf36599d5917dceb0bfa8b7c2321ac613a34bf58b1449230d2346fc483e92551c2f2b4ec5095fd85bae86bbcb5f4039e8f38b95b417345dda2bc31ecb4eed0e2c7f7d2da8515cd58ea8d128bf26a5e6d25cf354bd9f263d2b345983ac9c0da2bbee05dc95330cc42be27d1cc7711ec957ec3bb925cd273448f61ebbfe8e659c87e791e7d92bb924ace4b9c7426b31f758092e398ee334ee665f7247230ff3ae097649a42f2921914a9ef499a52195ecf032168e2f0fc3a5acffe4ce6c4245cde30f0a2e4737d15c4d7e3410d3c8ea0bab3abc225e2b7c99a491b3f76ae9aeec487845b0d7d25c8d72cfdcf57e3c2be45abfa47becfd621e8abbab44c165965d0e2bc9b2ac312568ee5cdefdcc5e8914eecae09f805ff2a941f3afaed4a7b9b4d7a6e28c682e4d8d5c5335675d6e186691f00f1fb33bfc6ac05d391cbd774728dd63d89350c4545d4179273d46f22a8fe132e5331cbeb0bbb2bf6320d867df3b2ea5706c033473d8e5de3e0148fec348302cbe3f764d4cca202b1e8e53bef7c7defbeca67c2537e5c3df10eeb12f79ee625e721fc2484c78903c868190fc8781901ebb52641857d2dbc7deed0e129e2b2a8ecb949393777cc27198639f7bcf3d76e2ce61ef7d8ef98e4ed59a0a3521a2ab31eadefb397a139393135cde9c5cf08b124cfa926bf2df2579ee659a747f88f88ddefe099ea39109f723aca4049752b8cbe4b91ffdf761931f711d6682cbce264ffa925b7edfc9975c100cd15df9049794fce84deeccdf2d4b5ef4a4ef3f5c05cddc9b4861b1f79e62ef7dcf71ffdd6f88c8718f4d92e7ae1445648fbb9ef7dcf5b05b06590d11b1a71689ef4bbe3badf88688a5077872691fc352b82bbb32c95b92d19d59c6bddbb1b27dd12d3dc0136495ed87af4665b88a388718869848771576070978edf59617547f7a101f04d9c9dc7bdcf55693f57b0962ca0e7feeb9cad3642dd264fdee653af3b21a86e7e3a5fa4df3774b07caa5e6d27cb2772b4ec509369d5bde84cb8a9d3090969fdf7d5b25260682ba7424b6e9dc82817c8f65b73cb0fc6120a8cbc4258e3c62d0e4365ea63daba37bce52c99b76e232887d8bc997e971fc79cb9b293ccf0fefe9edbfd021c2b738724b0b2e6d1a083ac4186220a84b0b2e6f72cb87d75a6bed6796c6ca7878edb75c129737d67af3362ee9e9c37f399d1e47a3c23f3d66694e388738d338dd70025173393e10f6c7395a0c44874f2d1256089dc1e0ed5ed4d1758f5747f7e07b1f08be4cdbdb7de28889880f5ed38bb767c207820e3173f89d7d938ddba6dbabee5ae66767f720de9a04dfdefef1cef0310fd0aef46d09717993f1afe067796a6978a0e10af9df25eddbb07fc20f825fb27fb26fc33ea95116d3d3db0f3fb306b0f1a51f4deff2232e6f7c8845f0c3f7ece4113ec8e3fb5bd63c4ebce3fbee3fdce1097edfb2fb952780e9bf038098656c692983f0b038a57bfb5f4af7f3c31ddd77f81d0e92ed8365f73d80a697e9f096e1b760f00b31c436cdf2d3f2303d888198fec3404a0fbe4d87d8a6b3e9475cad12f8c1776be35d70bd71faf0f4d6c6e9edc982e06847db3df8e3c97e68001077a1155fa64924f2adc5e17be115c74bb24f6a92da264923b3fbb10c92fb3dd37ba66b63c734b55c6a9198b8bcc9f3c79f8d6a397d0bde9a6c79f0f6cf5bfa697778cb4fcbe38467932de4af3c886793263cc9ff481bb7b4f13d7c4fb2236dbabf7bf2c1077169d3b99fecf07fdf8fa69f17fcd9a8d3832d2db8aca7132e6bcb254d36de87ef95eec3ff7da5ffc6efc6dc7ddf1d1383d422317e4b774b1bffc3b7dcd20ab05c791bb8f42b255cdee48f66f2bbf87fb8a54d5e791f6ee981bcf23ddc32485e79b151211e35cc9c61c139441e78c05304c93634e38c9fda995ba751f87ea8a242228d4636fcf253e92e8f31cf70bc40eccffc6fefca4f6bf1141aaea2f3c465906cd3598797e9d669d4d4e1c353b80e4fbf57ad736f69ff71caf73b7cef6d3aacdc9ac54675af63c4250d8068df8b882cd97e00c4f03f14e98f1f3e57734bc63d6a0d30aa8061f8d6daf1c32bc5479aec481c83387329daf1bb9b026225c6b73fe2cf3e7895e857495142e5ed5b0ca45fe567f639889fb7196222249f72475d4ad1caf8318472452d88e0185a1b7ee217061b7ef6c11fc710864c835c438849385284fe8ba32d1a45d5701911894dd256a95a0b5be424c4b455f6ea7387f1883b99267526e0ad02cb26bf591a12c9da9fd806d351524282532c16475da2df5d21ce1d5cde942f7af1cb2d348eb8b4a13bed7fdf71b80a2c776fbdef3a4e93d3c3f2463fab3e461899669e65cac553d72c51daa2d4d5ea14bf09312658de64b9799e6c3175c2fcfb6f9defcf93fb9f90feb78a4995cc94b2788af09334e530271be67c2826cc7c1fa0cf4fc2219a5c4401f93654144d3a76c549d6378003a9ce06b1e92d92eb27e139aa0a2be3141b2d63bf2981612222d0bebffe8ffe205d54cb807e2d8a0c9751e4fa540a52de9aa44195ab41bbcdf771d996b76b53b3a66519a76d1e11d5cfccee05b3a507f25727697f7befb634dd873f1b4531fd90c565f7e1530c44bc216669aced7ed66f5e22e077957e5bd76d5de7556cd206bd97697a73eaf0a4d970e5be3649491266db36b2bf8580b88bedb7ed3fdb6d3f710e71db92983b363cc255ec28d9d91d55b39626fb69b5cfbebbb3a95a15356fb8aab82591584af285f0f279b7041f5576c953094750237bd4592b18925df264a9a0368c902e6cb25c27c553d035d658e395b3d7dea325073c67b46a77d3b68cabb8a9d42a41d7d06897211bb5c0044cc8820932e0c2a81c0b10a00223002581c7c814c4e08631dc60e4e733c2e6031d8430810c31d4ed0424159c618c2abcb838630ea8318e8c91655996fa5c9d75aabb1b47b3c18431d018a500a2c1db828ec0093270820ee8499e4a30c30b1814b23600a1c21bdc70062f8660849d3698810d991ada50bbb12cbc90c3115c42f081834f13669c0d6bb8428dac339c2ccbb2d476c58991231f093ca0369c90fcdf9560c68b7f0e7f992326eb436373833781a065d01fd6b3bc53b47189758aba5473ced97d5b4893b4538d72eafd4d839aa4a94eb5aa512da45165a7cad6e2459f1ea194952906bf1069e37ce16620b1329ddf78873c595dac81d37ddddba799d81d16e725cdedf37e9b30fe1efebaee3fdcdd25cd2bd6ee47a40e93b028923cfb795f7edff79ff779dff7951eedfab7ae9b3807eb075d10c52647a4abf2f344bf3a67842347d6b00635a8210d69080a42031ace7006cd0c3e28e105571803280d42386286dac386585bf046f0c3186a308314f35482192a9c236ef06c1962397fbe877723018b31e68082cce5c99a430e9c704216803044a70464a8c18de41b9e277801a70561bc80094466ba0c4672f9d9e00a5b64799271052d32fdcf0c35cc0832032863799261c6192433cae82165ccd30d388e6b8e73ae721897691cc76d94e3a6379d1c883dc7052eab95db388dabb472185739e7b8e638ca7193cb9e534375cebdfae6eeeed5bd56cfdcabbbbb7b75afeeeeeeeeeeeed5bdbabbbbbbbbbbbbbbbbbb7b75afeeeeeeeeeeeeeeeeeeb5babbbbbbbb7b75afd5a97bfddcbde3e63c8929cfab5ebbbb2bedd97336e664e068dbe65e39318a289afc78e079d8cd72cd9e7f58bd14780228cbbe7e7decb3af3b1c37617f80d3d3aca5f9c45017862c0d86551f95f6108d1b27b3e5c8318eb04abdd188a492549e25147a83389b3c39f970bcbc90906825d893bcc4050a8a3591e4a5b9a4447b1316d294a76bbaa6cb02514cedd2ec61d7b3e79f46b34f49b134b58223cca3d56756c1ec4d48be91b86ed332ac7af638598b6bd05447058dbfddbef0929c88e8a521cc6c9f7ea58f622bcd8e59b06affb18cdac72c1534f5c1aff64b9567c17c304094471098a4cb6c4991b1a7784443ee713cc3054422911930100a858c644014c53268200c43324c0182e018a8b0d6ba36f07d9f186c3ccf0b0307baae0343151cc7a5d1816ddbbee0014dd3bcf0812ccbd0000116820a815a83f803dc45d04e74e7debc8919f363730dcc8064b672f6d2ac253177548c2b49d6ec69d63cebb4182c57addb42317c79e9b830d4362f4012db7f96a6fe67eba69227967bd044365b8e7f344944fce68c6916537e097d30c029039a98ad9235908ccc560886d9fa918119f80540fc1eb454d078cffd0f109736db348ff3ecf5c7798f01f11efb3cf0f3bc07ed0e0f7fa0dd9aec0f9b4eaf20d63477ae4fadc8feb6510d7e8e65dac675d877b6496500030c30c000030c4ac1c07ebcc9524eda5e2b8e971722dae6c851b1cc59fe4d2499692351857403cd6f5031cfdecff0bc0cab73f69cdddd1d7a3ff260c690a88041c464070401c63820081295ef8fc9d90141809a46a202f2505731d90141b8cfbcfb10598ddb1f43e0f86171e0f8311aa5d81f43cce0f881e3c797638fd6a394ef1f626606c70f9b65a3148b8798c1f1c3dd89f76b7222be77cc3f288810028a4f0821a01847940f0a229c10028a8f0821a01851be17114ebc9c10028a0fc34694efbe5e26229c10020a8e2be2b96be298a0ce792f4ca05e3c14ea45243af15e982802f5e231817a119d782e268a7015817af1dc4527debb5c26268a40bd18f1e2e560ba172f35bd4c7f380e43673e9c0fa7738159c2a55b6209975088d4b9c018b1844b07b3844b88d4b5608c6819b1844b67aa39bd2944ea7668b5381823a88b980091041a48a552a91901bc787d28bd2399662239fceba1a9631b584345dd54e34eee9d19c36523e8d69a673bf5c697a318d937eecc18cf234f1e77461e8c3d185ba34f16c09723eb47005f8e65e41e7b461f8c3b354fff74e98cd79a3135dfef9d3163c4eff7b2408730f97eaf880ecdf2d297f28204d03d60cf9543202f049a315ca65b6bd9330cabaa9f397d191e79a019e339040ad198313e7c7fe8053ac40fdf4fd28440938823befc3642f533477c290ac9bd9d1e284ca3513d7c7f083463e8dc7cb83fdc8ebad0efe1d2dc23ee03eee94e2f390b56aeb780650cc7a1df844c00a8ce4e8fcf4e9f314ff4556e6781bad0e7e16ad12a92af036e10b7ae567d8379a29f721b07d4853e1ee2ce5c1cb7552c151d03caa564b83d24d3c75c991ac9f489b84e5c212e14d75fbd7a512fe689fec9a55f5017fa7f9928e2bef8b85a40ae0fcc137dd2050175a1bfc335c15c23ee12d7e57a8beeb4f20c75a1648d8f002e00ee0d563b6bb67bad1896552ccb346ddb386de3b8aef3bcaff3becf5a100c2d1886a2180a89c63a8ede74144322d1388e46242425262624d2c9094a4a4d49f1a629a3afe6927c35b754c9355f627550afc4c4e4abb924ab83e69af7485fcd3da9a9b9e5b681350fc5750adcf752cd4fe0ca78a9e625709f88c0a54f5c0a814b1f70a913b79bb8cdc46d1f2fd5bc036e0379a9e697a8f91fd775bc54f30db835cf805bf30ba8791f35af805bf309a87904d47c8f9ae7716bfe00b7e60d50f305a879256ecd13a0e677d47c1235afa3a6e6696afe889a1f40cdcfd47cae79999a17c0ad79236abe889a27a2e687a8f9989a0f40cde7a879989a47d5bc10b7e671d47c10350f44cd03a0e6dbf2307dcdcd81f859318865edc9fdb567c6b03695c39cbe7fc37118977fd971180ab01c66029c8adbe1589ccb611ef0fd9daadb7198261c86896f077cbfa7729825bedfdb71981fdfaa161b251f4f2ae07ff08185077c7f071d565452504e8e78d24f8719c0cc9790c88c46bc28240ef121683fafc3f1db4f8709e2b59f19f62f57bcdb8d934c9beecc2db7246d5c558e39e79cb3a4a45b52935bd2572eb756354ed9abde699e9e66f54fab6c5750d92f95e3f8ca779c072b3755006e5abc8b30871b79927105501ebf6c9118e659865e499ea5493e59c9bed4e1bf79f21faf9d2efea21b4ef15217b024fb5b94ecffa5647fcfbfbb25ce6e2eafe97efe796af91d76b0b1830e3a94745859215754547e504949f1210505a5079493139613128907928909362929b92524244f321aed301a471d46916845140aa9844431450c439410044f406b49f6fb4c3ecf2bf1ba8ea4e3b811b76d63f6a75a7651f6cef344fb3711cbfde18ca9d9fb41cff3449fdace4edbf2f0dc985a1aecbf1983bdd3d9e09c278a89d4c736ec78e019c0f3be2cceb072b9c0e59e79c5e9aeaa1c917eedf66ef79a7ed5b3e8ee6e91e48d55afd857bbbbfb0b81ab52a1aef27c92bbbb7bbfb340f5ca7989ddb5bf21789b0b4ef0727777afd5dddd3d737777776f81f6c44f14401488a26659966559adb5f6d822ebf1e3c7c78f5ab32c7b0196653d56b5c78f1f1f3f5e35556badaf5796bd5e2f9aaaf5b56daa30b4408d1af0fcbc76aef032c9938c25749177f0842199bbab20bb832183ec3d7cfcf4f011851c6fb294283e6588a588bec8a75164cc98d053112b53511922faa5a82502ca148bae909217bda7e592db05c98b6e163fd3c5080665ee62221fcf6bcdc610a914da4f05e2cd3929a55e7fdddf87d164639aebc7a3f1d048f123566d47acb556add6aad5aabda8718169bce7221b432c350dd474e6a99f66afdb7c74bbd07ebcdbe661149b0e96379966f052d1d5c2e892c5be8f66effbb809dee94d2220adb5dad0b7750e6f17f5492e91f047a1f7b66de3de033f8f7b2ff49ea509bd28eaa0b9da1ed34b9a18a0a591a286af23f465adb556add6aad51a12bf20b1dc7b261f77ab0f1824e2ae97492e91d04be10987b2652fe5d332c99d4d8e3ef84257bbc13c915c22a29ed9428c22ac691a0d0a0c56437458282b1418e4feaa85d1a812063366f6578d470b23b78f8fd7799e177e13eceecca1d5d1656388a528c4229f790ab51f2468aee3f8dd12ebcb789542fb11591a94d53cf5731765a7517c70517858a29f469528221fd1182256198d5acd98a971a1ede47e6f056f2bdcd774aa80da835f4601c1103529642a68d69931dab7df8add096229f211f94c141fbbb12481fe203e098e2f3729c587a3491aaa3429800088ddaa87b0e4ce478f0224714493d4626babc5ad33446609e2f7d22429e6275aa7513f67f8bdbaad1386df43c2db3ad706cb6118625293e24f54d7755da7f2294fff88240ad0c3874ac3d09697e88884a3513c3c65c93447a6e33886dfab460db1427331b64f9791698791e98f21123a3cd9a81d5aec9832a5b3ad6d8bc4fdf0659c069d6c8ba52eeaeaba5e9d5a6c388ed4458db47cdfb794e10fdf780cc3ff79412f00a24b79e35f9ebeb46efccb97b475e381bc3ccacb34056ad4cbd3a7451a85f2f469eb433b5eb7e3489b52074bdfd676e338765d17d2d22d6f7209fcb04b191f479e69e417ea1286e3db1bfeb43c80a02ee1831ec0d16408fe0d8e26435bdee41eefcc3f2dcd4753da74ccb0457f2b975c59f99395ef61e559fc5b9975fe5c79f096e01b374e7a60b9f12eefb9dcb8419e90df03f92cfd91d7f425776545878d37992ef9e02d71015d4617ebe2f2d4d2b8984c0f9a7e34bd9dd9657af3fb5aae57bf92695b4c97ec3a9ca204f8ddeb00ff26dbee346ff2b5e97cc2405097ef65bce5f67f37345dd297842fd3e42d3f9b9e5a246cbce94d97f460497a0fb49f0282e3480dd4cc9e4a198e644a5f705690f118e1a1943e38da1d30123a782f77668c72516e0f01dffe67efb74ea35ede5a6b5f1ebf876faf8a88bdb2fff242adb516bc23ee82a05c9a5fecaa51f8e9f790396737270cfeb63458a473c4a4ff7049cadd8f17c465b5d779b82928bfc3a37ce8a6a0fc9c09fd0f37e5e4e4c59b72f27346345e8bb1ea189e47dc44d03ce271c4389ab42d36befbb1e5475ce200cbf9a63f91773639e2b2e692fcf14db7b4d1e900f27dcd1303992ba62f5b70a482a8f46bd92a7bd621a2110000000400d315000028140c88444291509265a2a6da0314800e87a04e72549d86619cc31032c8204200200040404004604666a40adaf5f96a76aa10ac6f9b558d290d6f65a8a94e3aae517745afc73fde87f5ac0941b814448bf247977d76463400f9691c28e4e727fea31d6da5007b2752c438678682cfb60d1fbfc5a5d1f7494289b71d3c2355c58123e768cdde99e82f43b8eb12ef03d44a2693eaa8c857f0dc32c987f92c492936ad8edd026677d24a937c7a2e64c051b631f2da1ae7ec7d8c110c1edabe3efc169206ef2300a7cf36af42ac80011c951cbe8a309779803f481ff6372554011ad0efb3cdd344a990a399ddc78e7ec84585a98a2a552e12ff16a9f8850788cbb8dfc7570269f53d6478fe37e2ad46083062f1d2d0b6583338cfbc83eec3a514e250c0741c4c758f87101bb6044c0c3946ac8e8a80a9a3d31660cdd24481a5a94b8ce8e6f10ac15cc6c4ebb307416939bc3270fa33f0b22288989151b910cb9819d867ce832c1f91c6b204e41c70c40279477b23ec7542e74ca43a8a8280775c90d857a8737c2e07ce3315e6322b9fbf995f4d20c4c7316f6017e9e38846385150ee611e23cf2b23c0823e1d9165ecec5caa4eee6a02d0ee599e8fd09326d69b0f5aaaec13c9890b6484afe2b492cceecec8423e5308946d7852c00af2cc8b0b0615ca761cacb105bc513c6edaf55dc043b6b9fa4f20d4c979d0289c35313767d55f06827c9f1be05208dde32a305d3bb783a3d97aa7e1092c2e7ab3711d6baf7cdce1a229db70dfe6461926696caee461fb5045921766d49ade2202c67ea6cecead8932d3cd0448604d0256fd678a37f5fed84f15550bca86d8a0351ea2ed241c2779eeba0d20e259ede1bf96962a6b7c8e80e9ca82859326d9382a44fd827a6a3ac4fd9ad808d84ba9c5b1b3df0df1504cb680c90050b5c24ae072d01ca53570b952744f24844260b9a9dcfcb3e938bde020663e6ce3b080b8db8ce9c6a2f268f444cf088d11fdaa4e01ac8254981a62e646231eb9f32010ea07dfd382af821c960e4bfe90982f89c46c03232cc5c7ee25e3be69f5760d5384ad02d9b6f587117f76292756c410aa5640a860d0d96f3b2c1e9d1ca10d5039a1bf7face80bd8b358c4a2afe7652056ebb96231c2d2921198222a82835811400e8cc035371fd71713c268e0481042b3fbb0af9056540abd8ab978d14ed117869c7a8c20ee14619345d0ed822be147085efc23e7d8fe184bde3f88111aa1f173525c18415f2c1b447229c21aa5222cec4580e41b0417c051755086898caec18864de79dd799a871fdab356fd2ec217922c2dd944a0f8d7894804070b11532baac8e8e3121f85915a6c32017a6681111859f9e0544711e0b8ee0145c707bf3014a8df1401ba55bb52189b1649836d412fef9bf7919d071304512f64c008263c16e1ad2088d863c919f7a1201620562bf3a1e9c970b01290acfcc70d0ecb3703c5f674eb382ac5f34498ef0b41cb9f1a77654cb1ae26268c4deaec57c56b316418bef924595276bebfc33730f3ccdf3ca4f62aab731f15cfcec8b37fe615197c0adc9339c9f44c4da2ad323bf35171af8c24c66b82713265115e604c721244fcc82126e6d0910642005ac8aa8a30b1e84cbe2a2bab0e58859cbcb84d628dc516b92e827eff8198167ac1beaffde3c6228e5f5ac8db598764492e065d87b5ffd31ffcef6922ebc25b1275e6da0fb0f3af33debe6965d69eaf4e1629642e5c140b3eb43286501d3187740c7382a05ab05402f3481d741e3cfc9c6fcfcbdf2377195eb639770a9a73f1fe96a74497f398af968d2d6819a7f9114842c672d603cb9b028fd3ffb795cf5cac8c04ae3865d4a99cd443e5bdc186d36dac2d47028453fd55700ab94439041e9457ae9beb48946f15f666746eada5b918bd3fd1b0645bbcbce74ff59e0cedefd3b1b9562d9050e310df4e4a3d388effde78d5b9718dfadad8a2df1aa3ec97dff4c06de5bc0cf1d862f7e3e6905dbb90df8f9061e5284c445fe200793cfed8924cf8f9c1d5f90993c79bbee33aa4ace6c34ae3c7ff389e62f95238153e98799f346b9ca9f6684c23d0d866519531992363878cf15787313804e370be7893a81f56fd42b09cc5bf29408612b84870f7211844e642308d00db5c183728ff7c1594e98481f2840a28d76701e5ebf34fa6f3fac9ab183f7f3d3908d8e9e847a042603f10cd335a6a2539a71e651202394b00a1a1381900143cdc330e71f2c43de2647f3de064561dc0c93264ceb0ec2b110f8ed7ffe9df4ec4936913ad573ee0137d1a8a6fd7e6a27947ed61d3ceb2d78d3b6336f728c27e6d148fd151f93a8bf086ea07ea4abf543df94668fd5634b46f80bac885e7def7efd3e470b9bb151985381cdc024cd889fafb18791320cbe84b2afa8d39d916f85466ae7d2b77898ac714f4803cf36e0017f5ea7b8cf9a3bb9ea6c0a351d38a94ede463d97e05e1cd448e81d543cb774db9cd44d24edb4e92fca14b1be52421f9643cdbc7da5eb7b3d38e01edd34f9081a9bf018ca8902a7a250e633eae3474a959562c13aae4b224542914cb5522b131a8d6ce89d6115d7a16154994aab92e19551ac57a95402d0c8bb543a21540979a45c502a14bac4b4285626c1d086d1592e7ed1f00af0ad02cbfeaef7948dc944d81ae0294e12f41ecfe031496dd9e3b768f0362ca655ef5fd5d549e8c2ffefd69ae1364d47cfa1d6b27be1eee7884f1b874e126e85432436181f4e8a7a91947e43081a1e8ab7ecce2740246344e2ea77f77232ac2ddb0f804646c81a20ae6212b6e1ff258adbb55a87de8593b6bd0468ca3a75a50a8989d074e4a57cd742a03840d7ea446ae7081a6b2d4e93c500e4e77452db15904c8cef5519d40844cdc22952f9b0929c58331402bb6e3a7123a60854079cbba520d70afca51e8a2b4c65c9930073a7ae8807ea58fed5f9d9b293d10d9ec17214cf2f032cf41494a70e72ca381977bb1c905f8b87e4e77d10bbd12afc77ebf0202245d9db008f08aff0d2599a427d1125047262292ef55202f875f62ba024153b9b12e6e16157640355495a0e451705a43f0dcf01bba93503504db873b9a95619fbd979f60bc7bf99e84a90c4a89fed1ef4326700e58f7e4d95bcc171aa3bce43aadeb0cb88bdf7340e1d86f68ad40222f8c9bee2b764374ec2ba68bb5cb21daf9f511a2bf606d2d1f7b230e09a957bb28feb1238038a457bd4fe0563d600e4e3455b0f6808eca2cc396a603a6da3cf63de29714d3222cb67c7bcd029b6a8ed81796c0ecf4c0bae7b37ea914916e7a0ce9f5f70bdeaa1755c9d57889c3bf4a62149bf8d98a7ba08c408e562fe23a4f9198e2f4ea5c1271a9ef79e8ff4f372128f58612f6a715138257cac55867fbdf6b0f50b8d127c8af070b95ce039e67b2128268f90a266915f079ea2403328ce10fb305062647c44e43fdff2c1282aa0ed177ab79eed339087185471566f01182c94dd571579760b277057114b2246cc4028f108cdb1c0a9391c85c0bb8bda2841a5348f0e93a8e31a63146b439ae955b298217b0d8527f3bc62b5461980400ae77108a0176c7340842d3f1809c81c58594ef6b71bac58c3bac047f5dc274514d7e50349045c837cfec8e6eb083b001aed2f8cf0c36550119ef38fce1571df510364b94f90e08e498d3c92c53228223acc0968d0fd78d00e2b660f634a52cdae3cea83b7e07de251f3e028e80773b4976b87c0500d76aca6a2d4c6e406e2a4e909fdde9e28e0106b8ced911d753db09539642512f4ec6245eb27450608814a14357d0ec540a9ce3da53b8eb1a4868578c19d32243594492f862511300e6d6d8694e11c69d87c9f92a54b5aad813a05f4158b147c89e64c1a1233399a95da959c8c0a1f677ed49a00187bccee5118747fd1dfb354a51069530d0928a9e2a57042e2cac4b3c5c079e2b40fb625cdddb3d6ddccb5051c9ba83a4358b420a6702949117eb563b7986ab31a32781bbfa1881b026b39136e95532c47e97a41df8e45221dcc5247a719b7b983401c2f3258196212046816ad02d8beec273d0da4343f28f74bdd3f56cd83460b1fdf7accea930b270fa5947e702edb682695649e24aef4ed4318563a14660be9147dfd11c0516a38be384f5992ae295587ea56257f8a937b3e039265b574d6f03f9e210b39f175baeef74c25a62217b4b4241d3aca661e307976b17fa72a6c51a95ae2d92c3eacb541bd1a5394f19da4aae52414ef41dbfcfda71d105bd2c371261aa11fbffae550096e78f83696fe11df38b8da08444b536e0cbc45f481024201c1a1fc5404882d87d12f92d477cbeee73c172a71de5b637aae18c83884d06dc6de4387b0f95fc3d79630f9866ed5b4a25b8d5054669166acdcc2f0a0d6494d55e92f5441340f05e2286ac8c434f9c3a25e9f7d1131adbd2cc4e41d3c1b0370cb22b1fc424e49ea0c025e4bf23cd4e6b39b9b494e57b778fd2cdd922f1a586cb042b689ee9971fd3db27f74af9cbae3987a969d1686ae25358e400caac510d2e4787597cc1e7b0bca07d287dfe7928e4e4c8a00223aaf90a7df7d2bd30c56416fa8a6aef8ea314f2b73ac4944b877625937e8c158368dd9856247590a4abe3af56cb05fbb8069b790cb945b79102c3b77af0620ab7e918036816fbec1d1822b2af263ca4029ed1243b34833ce673ae98a9e2754659e42d631e1a5c4c14953025ed9726b35ef52ab54b03a8f09940849220a3006e12fddf24823d08cd8eaea97874de84c697636ef11a855d864acd524369734a4361bf811e610ea93c523a66a4f5dfe0086ff7e724aa61128dd870d0232170a59dc717f17d6a6c9934e3fe8db2902ce2adeed1b809459cdb110f9810baf678f8f647ce01f528215db5baa8741f3dd188c8aac6e4d17a505cddf6df3c3312724f64b2a622092361576a8415faed860139981048621605817b498e8e73fce08b8bbdeed5b4a9d41769772cbcd949b4e37a82b716be147d172f7cd1ea2ee84452a3a7a5f8424118f430f1a397af23ab23d3c9daf3428ff231f25218fb33b7a834f430e81eb9037d3742a0742e2d1aca524569e4eb09c2a22e49aba91e7bee68de0264e643ee93b468ea229ab2b79848bc505432f15c7f42dbac2268c4c6dbb7480eb45183fecf14c63364cc5436a2af14b45155a14dfb200a62f72de647602e138b8951f82d6d9d02c79253edaf810f3e4324db0df58e1a6a611a57b06f83c4d25da19d7881de6a04e5ff5843d2846649f2fb0849cb40074fbed1305df45c933067968aa4ec002789d46317c7a989cb53ad657e81c8e9d38075fba30b90e1c4bc97ca32b5bcd088e33fcea3176c0f8f3263e4d935067b77fe1d821d8ca96c294dce81b47f801f278c0c986f19b848dd9e67dce0989540ff164590e79248fac30b27ed2f070ab15ba2fc761ed474c1781d506ee51693b91a0312f0f266cc52ed6d5f9307d41c4746011b22a004a348b597675894792908ed09a48e8ebad4139e8625d8206b93ae7bfbd0a39ccd07a558de34eed5eeedc860e63d5aea821a0c5b54006859456e027ebe55a7f2edbf05ff27f335f05397cf74e19c1de4b10c5d2d9feed9c9d937c898bb31ec3742291157aacafbf795c94aa27f37d9028c061518a2b5617dadc46ab0b80ffe59c92610c2fc40fd1d3749eddf470d88fa87680bf0f8f57ae4a523bd787866948c3de12d95a5d3a2a23ead2e01225c3bb4c220694153aedc3f6149771286f874029d8559c8f55c86cc4759cd0e4cf6c494b58a505c38c9bda3f6d01793152c12cce7aa5f953e5694bf647643bec25adc91416ecb6cc470332f3744a7852ee350abfc745a6b7a3bb6abf5b37883c8601727d44022f3f0996007d953c40df497c2027526f7ee13284effe55a192466b7ce04f89de28764293d59729dd7acfb00989e6ba66166841e8f4101ece94c5ed21a5bdd531e1c1dcd4ed8c0cf5ff7cc0e48416f4d3254cce0a11d0d6ae2ebee8e6c2fde40e4f67408a4e0cb2512a7af5adb7d2d03f04faed9bdcd902c27336826a258645901d8e5db2c6ffe994af4a5f2308bf75eb9f199c2e212732d484573a6d97186aa59d080fda1d9238b93d564bc00707e2a589e3b4b80578120c72bd87ce3ad62de932597b5264b7e1f49cb8d9daf032d98706a5943b45d1089707d7fbeea0687e4ee6261bc680df5077bcf1180a28b1b0058b98fcf671fd01897830e35b2a2a60d64f9dee037b1edcf4a91088de7d1769861b06c6d47986359b47366acdc73e6c6cfb8dd563646a17123008998f3260282c3dc0ba73d167c4d2056214c5737655398bbd30063fb9a90842fb86bdab1c98b902ca43bef9b2e67fb7ddaead1202bcdbb6088784b9f7cd5925e0a4ecd4ae1550cf77c8232ba0185edc8cadcd3ca75dc60ae74ac6a069f73e46a71d69f7fa63e5f04ae9b494a0c6f94a188b9890d6ea6c0a1ddb44c99ef6a2251508faad8e9ab0219ac01f05a6f31c759daf316fec2ddd81daa038d99b40e16d38b80c5cbcb2656d40992506350d46dc195f8b0f24db38dbf665a7c04d44e79215375becaecce0c38c9caec665b184041d080d21062fbbccb4c19c3995950fc9f14677e9189e5a9cbd6be4170603d0c5e9c444bd20981e6e251d48df5e60e89ea2e86e405618630723c5c621a63ed04f1e2985cdb1527f94ccdd850189d7099fea852002a1fa5dc37740d6bea8eb71e3e63fd7d9f39f522cda50a29921f224fe4eee54401ce483328f3df21a1bb43f0376128f1d036b4002345bc93f3e847671168145ec3d24f32b964403d4f510b6eaf68d332d19eeacb83603627a861c47f8b87f1136254cb621499f9feb8719d662ded0cc0728628b5ae4bfd669b1c2724a1f6f397c82789ca9f3f40586c7285ba757c1705cb1dce90c7b9a0681ba278a03187b1187c208a681c60d7449d15b748a6a1bb0246c9d5ac4b483aa7310860f38341df6e2611632dfe0b7b4e57d8087a0e2de0ff0e35a318f8dd9c858e6c648fc26483f716398f43d853fac3e8f935f7fae9dfb61abc80032724f5b44fee36a5f02abd7a96505bfd38d98bb32509f2f43f1c1499ee404d49f93d6d0527f65fdc5542ca5ffbc49effd49efe9b47c5b55fefab3a6db70313815ab1baa72bcc092586d75725cf3ce1f85f222b78736b4f0b1bba1134607cf17ef137febb7a2c851f6ca37ff0d5b061e465e24a505be8687aa49ca3a1719c9627bea06ae1dadae46d09ea288fb441617eab4e0d9e9d39d357518311bd7ebf81bb01235eff463b5ccc990a5f2dc66fa9b6f5f73b466bbe61fbe3c39880b29f5704d37da8e36b16b357c628d63a3a35200d85579621f57c8e0d0c4f5921df94ffc8f09192499b1123fd12e5da6f1900cd810c41c50234a2ef8c2d1a07762ceaee0fa8d5de326b883e4aef2f27c754470c467a7f1336d65cfb9bfdaf09ce7ac8e8605850d930735b4ddaa06a2361ad8006b80f8381bde6f4c8ac05c8abbda426135c1a5eed9b6ce363f453a1a3c3b3adcc1b08522b551c92ed7fddb96af0052e4548c1e83103704a8194f1611252095e8607b102271990a4c5183254b5cb240e21da70324255be24a66090f683023aabfe3e0018da97e2b6b5dbd707294d6cd392ffefd5dcf9eed6dbb27ff8fd0e942ecee78bc17067d612962eba5e7f29d7d14ab1963967b6fe8f652f507f005d6a04110a734589a2e514d9aca558dad4515efe3cb08f510ffbd19f00e06c5b6bf0e528fe971e234ca90fd8005283a5d2bd9ad4463811fcb36d0f51a1e4ac42f52c75da7e7f3b141c9bfb812b213acaed14479dd05398e69b6289b7d17d98917c6680d7f841a8d5681020d34b413938ab42bcf390359b06b10a090d3b0d5e5d6d27bb59a36c6a5d9c11fcef56db62b6c858b1fea79d6bd88a8d4c82dd438d9ec0982d1b5bd6f846515689a3184dfd448065caed77519ba0cad2079f4c7d8ceab888a2bc0bcadf2dda9c993aa892504b48583f971ad91fd92a14572f884c9ab48a02fe81bcb71016d5ead1ef15259e45397fd1419021919e82756c206effadbbd35e3c900c6ab09478d0b7375890e067460d5059f838b46dfb6991ac8383a239d924cb19d4dadb5e81afc50490b5d29244a91ec270ef214c9afc032921ed3b22c51d714ad9f910563dadc747b2a9a8fdddd5cfa81e330a6d82c286f6b9a74629962fd58557433a126c28cdd02e588f18637474e8c2a9d59388c5bc504109f3908d3f2600e173c3f9d8e95dd6eac95edb8d009223aa2fb102227a9812549a4f2b89204ea9f5f7441a468610417662ef844604968dff244a722917de669d9ae1820dbe229846a1ee7155b37b430a654fa23b77255c05ddc1811f8a4162d31d312f49e5ff280b13d4400ac2b0e2a2826f4d3c2772048f725a940bcdd1fbecb4f53f973202f8a75eb4768aaa5e8d0b74e5e0cbc8a119ea904a728b436f7b771e54075a4d9c9d2669b9ce69db2f3b630f5d9d4a0adf06ae13988af370518139796b7198f98021371cc582eb869512e1c97c44b05640b1acf55529b3acd83d6862d06fd5f7577b25a6de0550815ae05202b77f0b5a6cccd49abe910b7882142ba4e16d558c0fb5808e95be75fc27c803881aef4b31a6533f36340bad737098ab0a348557111e6d947a598f507978c2ebf83a25375062c324d9f0d59341333d8e9a730f10456153dd18bf7bd8bafaae043a02c120398e437587bcdfbca6197ba0c16e79fd7fe690fc33bb4fc76f3e42bb5bc5210b02d5b99e3fd96777b108fb7757e2039c1ff26907692a59fa7493301071923fdb683146369a156f9e5b7b1fe3082531af8f32e873812e3f31c294fd6f410709e075eeb6b7ed35492eea9f72e9dafad0e4dc777eb22c07960658fa103a323ab1752c6be91132a825d6c584496e2d8cdb0ee6070650f5f956b97886f61fe16fa198054e378981a393b490cc27782ab15ecd40ae9a2508a67093c9d943b0ed2d588aa2b30377e34b8cd277462d2c90f54d0c45c1b04ae9d47b5f88d015c5cdc8bc43e86246db46c54f959660fe3464885d442f03dbc24b49ed9dc11de0668f7296691b247380c2cede99c70144f6ec6d991d3ce4e66fc667da086e8ef76eac1193fa3d32255bdf58a02e7eee03dce9396777c58a10af6b6f7f7634a3c399a062f2869c9ab2a1f69ce3df407c2ab7f702909175fd8c545ecf8b7a82efe4d74af7f2ea1124f025186be39d1dbaf0c8187a8cf763e386b660b6c7a1e791cb6fa662de90aeeb073a7cfbec3da707b8a62d0bbe0155f393d6b0a336cb4f4788f8fa68fe0268bf44d3e17655a8dc5ddd38023a9b7ca96f0916d021b72c59519ce093645c7e8fd6114b35930500012c67cfe6396c417c141ed67149877bf8445703ecee2724484059d6dd0a8dfb1bcdddde30c712a421ccf4cf8dba98f9f1431298e5772ef3a5e581d757c299244edb1632e530df68a515e2520e5f3111ab5f6ad2232bdb6d6601bd77941ea1ac704455d5ee435e8ba829b9f1c361c25bf7d5023e70eef79634f3512390182145149a1a49df28597a747f34b6ad7800de0bf8d26140fc50f9012738593a6dbb3351ed9b8f154ae716b804aefb3aacd29f700e5c0eaba795b6ca3f2315b9f6e92df81b6c5699776c7446241de80a19135476b5bbb700add24945a082698424f43e47d922d4fa64d4210ae217a1b4422cc1266bfb4bffa4f93dc199e18915a684ab89df926722053eb3d944a680f420e1a09572f9bc60959d403934e371bd25edcc80244eeba44c8562a9ab1bf42ae38b179aa39ddf45b1ae4dd5be982e5e6411722300c73696bfb7513b91300d0e6d89aeb403daac14ea679431993968862645fb8492d1693e22e2df2b32bdb191ed5f9d005aa2459c65c11e39d1a7e0c6c8183dd17fd2828375450992d94ab04f8e69a28dc044c340b7662b521028775f20f37e16a3373739723a765536c789e46e4639b24c854c63fa229b41efe196ee84556ea5a4c0a694b10947498de7464d24fff128f01e6de52e1f723eb82abe0f9d3f22dbdc0c2c0a43ee7f550fdd2b8789fd57afbd8f2053b6df6bbc4b29490a8960ad55fb3da16b9306a86244aa484beaf0f63eda364949c6f21724032b9fd2a8e7c7964568102892cf21c98c7d70a3c13c7e1d0beff54884f2ef26e3584144a4299476ac4f341ac62f794c7798946732fae533f494b8f1e973571feb2e888b1ec63f550fe209136227279968f648d4733ceb6548b3004b7c803e916f37f5e0256414b78733013339c779b2a6e64e403a2cb12667f0196ca3b15669ab7579bda7d2915e0db535a8e4187ee1c489abcd63274de98b3e85d537c666f5b48f06a1b51c295a4d18345563e215f1753a9782413a42d0f44835b250265b137f7bf2237161b4ba2497d6baf30c36ab48c8e65b62f8ffed27ee90af28092fe0c281081f782eb19b8d634086c53addf098d87e6550e89c698dfca9c2cba8f89373b311698233244a34f19ca5b50c76cffa136c78e443a3573e2a810deb5b2601364cde317b613644ecef9b93179b96e9a8c5b481c397aaefee2639e4ee76f819a90763717dd97d6fb98a2dd8a9f875d1f843f89d2abd3496a75d6157f5da49f014e4b23824465a918e87fab35cd356de08df58938a7a640b77c2cfb1822de6d01ca74c89dacd197ff59826c4f57001a01b4b0520226104a28a0cb9231cdcf136db660b32ab725d2ce638874cde9e45d6c359090ab00864fd05744ca4eb18b8502985f7e72f8a49c65c3b81e3d64b64a77fd0c99e41ee6570250235ed0cf9977a1417dfc443134def190a240d146f8cfebdc1007fa831829016536f0f954943cddcb6d4c2cedf431a94f15867bb71278347855afbb54925c9e46f2bc617e825b23f3789c1ca871b16e99d93f40873d514d0524de62892401a012994bf663e0bcfc08865d61c2182081602472644702f2282241fc073810dc1588c291a4e5746d7899993dbf88697482671899ea86212a2c55e8821f7eb9a386944faa8c29f45236c012d51a26c5af585d68bcec5178f9b4391ec3e7f926b3d03feb24575ea12002cf342d70dfe018e9abc2a3f61ee2bf8e6cb09b2cceed3dfdeafbfec66c41451fdbefafb7efbfffdf55f6e66ff49a55a96c018000389dcc860448ae0b623f1fa05f0f7340c432a97a880f78727e6c9782971d84b6f3a81131e8482f159136e0160136177755f3b4a9fe582e96f12dd346595a762fc22f29b563b1e5ef208669d2771646da3d3a8201fcedb230ad09b74e992c19e851c0e9bda61b48d5445d62cf32645fa357eca80f8ef19deedcdd216214f2e80e82af9d3d0788b18567ac2b127b5ccaf5c337c5b22cf0f5a4996be3744bacb5cdf02bcb00b4952f9e5df5b70374524e6aff0665b20c95dfc01390a157824b52d40c44dea8f4d5bb00e07f400b7a24a0f23ba55170c9bb2a276fe5ae37f503c9d6280206acb063ef3fc2c33fa070606317e1b74d6fb6b2f2df522bbace474506844a0052e55e6ac4357de6953347ae5a23008f8a30b7b64940ad21913cf73fac15f13df941a21f756f11bf821b7ba4869aa443fc7e813c9eab2500c02dbafcd932b11253642e43839d581ec0f853c33ea29799d6edc597071a875b30ab5b85491fcb1bf0e0594368517c7c20ec904e6a67da36ae8c665f6bdbad011c1c743a122daaf16969ffc108c3f092d487d11c5532b015572f0514d0d7b94100cd413427814bd0063470f7c7123a76b8e93390cd6520726e57ad1113b71b8e344de0522b2c2275e265b0507c98d764342a2944bad47bf61f08a4ab225296b986c065187452f6990a660b9e63f82fb28f96a072d9318ec7f60755f192148a8b0d1470c5b2e59bdeeaefb3f0ed0bab8d207695d95a5b72928643465e9b36a893a147609821083c2f50ce9baff4f3944900dff0584b0a19610ff025392857e3044047d10aed759d64f8a6cf9ac36551ce0187e4683e61fd86ce0648d19005a10b752c5df26f30e07b26090b36906168689ddaaf79564288115235f99cef95a21293291e61f8221d38b1b90fb69736076725bdca525604bd915240083c0a045e5c0ac619c0c221decddca782e7c4d787fbc55287410f99b136d8d5b1cad50cf991be1914e414ba64b5f7da47369f7ec0b7888e3dbfefbafc0be6d8f0d43cd03977155ea8d60cf2eb5fe27a41db2296db4dd1444d5da910fc088c3ecbf68ed0fc1a57af881376acb9e64fd498186564b3e5050de96fd2e4d4acfc074654b247027e7a7904ba498ae2a2f7dae184a0345e61a4be4744ca823f2cf752fe67437d68eaf17da2afcd8f5ca7567516ff973a430f6d0343104605a38682e3b92208f7b4147986b596ea1865ea4b76b9b45a2470cdfed079c47cef2efd070322f71813ab77bce2133372d99de64456e4f0407eefb0783606c48ae43365251c7187bae635b3ee018ddc3f189bcc7d0e012e95a54a45cae50a8d212422b200ab257113bfa83fa5a22ae462297013f0fa8e8707a04c5131f63d6d94d7dd2f0017690489db60c9c28c4dce701a78c5314864082694af3f4d906fba210f2bf3c21bd7f703165da8e307e9d0c4c0e3fda14f0cae4707b23e7264eb9e28c28e9a94f0edf5edc0c9c265038f08545fe878f99896c828c92f83a93c2cf0d62f391e5127eb97ab8c7d866f4809a305f453488a77f17e3aba1aa28f8c3f0f9c4b00204f0755c2b15be41e07c32db2002f432a895c57f28383b186c9030be1aaa8a823f0c9f4f0c2b40005fc775910b4c3b9bfe51ce2f38de4df704ffb55723771380b3763699b26fcec881925afacf96480192769e8edf486314ff427e7b1d4bab725064ebd302b47d59f2ff53441816c48a0369508286e1cc32ad8782bb9c7d54710e1e373092745768851a270c50f0d724ee8339118a5cf53bcdf92f059091aa6e860adc23238082833533f72971a5ea13313d66cd18c7de3b3b03d5600ea8ed7f4384fbd7996e7ee356d4d3325703bc248f523042113a6be9af4da0164b63ba2f231dc5d1577020957fd20933921e22fdd4a0892940b7519f3a465d1d4d5d9d60ee2eb5046d7485d7eab422449f0b0e5b55e61c8d2980f41ac31263fe434e5aa6f70cf071fdf5621f063293d3654e6018bf0010b641527174f148db05441058aaa015f6830ee309342d8e1102129d75a86cdaccac3f2c5ea4e9ddf7570fec88b62f002d82dfd5b8fb2e40a080bda002483e15a95c0dc262c9285398c86f84f7460e7e44be8ac88021b64d201269349c4c9f478820f349c90b7b8f2a62cec48f81142e910b75ea22a2d6a6985bb630f532c5618abf94650220672d1f3771a9d26f6f3cdc0423315fc7d016422374e6e5f591f9ff62065ce77381c5d9204be98d9401cb946f5df1b2327597c4270e0412b0404b2fac84cea91e8a04ee660b6c2e2ed8be0a947efb2847d15e9b99130553b7fe423fb652fb4b29ec3b1fb82fdf485eb41af36aad04a76d117ab319a9ff0c0299b79fe7ed930f8ef8da4deb1fb2d0e3f37be46c61d1d8bb738fe7d70376c91817d2508a3286bd4b810aa1670ee3ccf6a895f4e63bc141bb0ba2bf3ed3521e7f780efd67d99c3ff771d9b96906522006c86c0ec68f3e902334e4fdeebe31bf1cdb07ab1f4a5171e6c531edf157c355c0246530dcd92b2ab5e5fe458ac3f3f1f442a83f080c8b32609bcaf2089936f8a1a68149f53d7b1b65844e8e4c3e4317b02daa0d1aea048daa32904ff6241bd8323ffe512d45417d9319043ef2511098db1f874b4e8d2cb29e02dafe0c64bcc1048bb74b4f6445e3dfc4fee594927bbcc89d9005f7efb841487e6be8d4a70fbec405a6ffaee8e9c37e3b214f836be84b3afe0548d5b044310986e6cabf5e5133180eb4b407a631be42f1a0a233e744c668fc27799fa8ce1dd2aa624096f3b24a3ac190a55f9c56cb3e94e90e4949f5f67046412d5a512db1f581d5af2d7404788595e25306d45c06285a6b823c7ffba8e9f3ddde7f21275b899c3ee885358845209ce970ffe4435ccec4e093eb167fd6ec2de749bdd88e871fae8475a35a037fe1991235bcb19774d9e56f5da87fa6430002d458c370c9398bf9d55cae85d5a90987b21d592fc18194a4d19ab190e2857a65de34ccfc47f972db1f56302369900d8e04bdfaf467316447205677aa76db7c5b0c39291a0820319a632517109c12f08887fe0043e0323601acbb609591b7400916d267e1d6c89d63e690b7cc94676f997b60270484b321d4cbb509d33df14a4a9fe358a11b007cf311978000f0bd74bafb82171d870e43c7a0e7e871743c3a8e5e35da3d163de6e80dd10d63de601683d22afa00dc7d96e89372af22aaad18780e3425217b52f0c5ee1c36493793f13061fdbe674ec27b5f960b794f3aeef18366a47ff4c3a6402ca3f579e661c51b7d5ef3143d945f76b9dbd0a1d20f067e192dbe6ba524370b66df75368e4a54a1c1aa0c061cdd8d6ef96a6ab615b814284d5cf8c6711aa8631d2d0541cde5714d01cc4b475d669d7d162c24fadb8f36193b28f21219fa2e809d40fc9efc7214d30177d8f6dc72413281658c094431b98cb0e4efc0f290e469de2b99ac89ebb05f1a5ad148dcad04a7a4ebf91f44b8434dba8af1d1c198f6046be13192fa8dfd8ee385cf1dc6aee9c2648219c157010a2d87eb0cfe6ca62e3295c9be73d2ceea80a310c74246309fbb83a03ba8e3cd1a248dec34554710305d71e6cbe6b751b638a6f47ffe3153c50190b07667b020433a5c267b502687804c9e957add3a816cf64e187b337a8fcc35966b1ad44f18586ed651a6a6e599a55c54d1e315bc5b8cd4cf4b9356d40b80cc71ceecf71c485a4c638ea8a5a0cd0a793b986d2c125dc919b01a9e14b2bbc8fbefc42d03aa55352afa79e4f3b7f5cfa9f1101f170132cd124e8d489ae3d1cb3515bab8890cec8f43d8f0d38ce6932abeb9e58c6f5cba3807b805f8cf126f8d16349b5fae043ec3d8c5df484bde36fc9d467a17fbe4ed19cc138f601319c9362aaeddf13d8c341f586daf1874cfd4a539444ddb58670a4a7733887892c154253f7bcdcae4f9f713df7219574496bd9ae97670aaad385102f5919c12c5a68f934093c73f37c3db1468c71b7990ba8ac6200768b501e78effe453bb11405dce2f7ee913631f10a554209a910a287d6ebf81540d7852fa538a12c2247779cb50fac12b1d26fcb4e4c442c5dc7c5c86992038ebc6dd1bcb70533a815125849267ed89b98a014ce4cb0e105c5706566e290c3544d51df28bc443625fd4d5282a546f8200cf92d83bf742b93ef1de69e901e5447c1f8e8f7b6f65dbf72db30d7e499a57057132d67b434c2fe7485cc814f46dab1bd9a62ec652f9e8731fd2f18427908d308ead6adb4b3a672909faa8b2fc3bb1043c1e003d38ac36473f56c6013ef7b4c27467a932dc5f360d62a53dc1aa66119bb8df573a85546507360d0d700c67bb54df912c867f5b990c54b1b200016f6d35b386a570547e3417c13aa208461b5a1a4ddacf2d4a41ff80fbf44568e9835d9e5bf277f2ff602adadedb6c72b4a024e170fcf79ac2e54923029da26920050e4c6a315ca4d86786e23f121f674717e0057321f601a8c7f5b19aafc40ac5b411eaa72464415d92d7c0e233a27ed21e36b4cfcdd3160e2ab86b4b64824349eac25bbfc26e73431d8e209ffee416bbc59899f8c48d94dfb6500b13ff7a3681edf629edaee5c7ec30389f67698d953faf6dafc7b7b4a7f914e9fd2e3853acee73892f5deec35e89ca682e4c9453cfcac66fce82074817d71a9fbc3efa3f60dc8735a2b7f9b3a9c5bce327301eaaab3fb56aa2323f569d6c5efb244029fb07230961bd282c905ee9dc421724e56754922d416b02693b4cc478067af08b6030f32a967191c1a96dc0da72fe69184c3b37ff9793bb888c04e4095b22738a8b612f171b22101968fc3d10debb604a47c91942cfcce970cb5d6a86dd8c56af82ae6e4bb7773ed768c92767a6aa0cd080d82a40255e410c403e23eb406f07d3810e04febfd7e3da42935fd65c82bfd77455e5f898f7e216cc42b67b77c55808cebdbed62484e15e5ca026046b7b3707adac23b87a47ed35e1c7492eda84824c0797532da698a1533fc67c604c4cd3090aac30137b4d73bb3a117986255a3d5897f8afb013a90eaed2d3f5bd029cc779ac9de4fc8fd5fdcea71bc439fe9ef7a6ee5448322161bd32a843c67a23e5ef04c239c1a6ad0790446f670636646018aff9647940e494943a1d0b8d0439fd73f23d56b2ad05e4240a4d4db47de45f500ec0a05da89eb0a3be3137f58fea4ba47a518f026562351ee8c7606335b190e04f24899f9cf8e1bf867a3544266404e5ec5166a12b1e2a89d65ead608d8dc4a709e2f1970b269e16f50afe14986ffd720d1fd84a9d59a2a09bf2917197a76867768da9e2221204dda6b1708b4c01e2a6778449adebddce44f079b2b6c5fabb186b3ef001c4f2bc920725297c446e13090fa91c942b5a3948efe4349ae4f5b5ac77552ebec559fc42633c69297206e0c021bbfcb9d9b342b08feea96f961567a8e49c0175c8ae43e56ae2dcc7816549608bb01545c3d254108d217a35fcd705d7a07f354ce23feb52e6611344bb292430ced131692e0e1b92dc5b7e42a1e3f79673dd233a768d4c28f824753fd1711886b944383342c7d01ae8c5f9ee70259fe30fabcaf3b0bdefe571480b7c7c9a1eebb6cba8d3cd58de4cda6bcc31e6bf8be12104717561b4c85972b822e511b1900c26c2870b901d2b27e82e9643f08fffcaff27c7dacd4965227fb016f061c71ff1b142a8725cbbaad9af2890d3e3e24fbdadce1bc41ff8dfa5a57fe18fde70090399e0cfdc6639fe6e7f3fe667e54921f0fde830c7f0d0e4fdcc2ee1b9e7d1eee7af77e46f7b6434e4dccfe86a78c681e57e9cc1fdf4476fbdded9a383fa95f4ce23f5313bb33f40d920ba421cd91418147e63d5a9c958f6a1960b7bc0036eae141ee5caf32e45a2909b325ef6f82e288be0bf36ad4b93d5590ad71f76d52410d42c3b90b0a5481244f6329bf940ee2b1ce4805dae10925f75d753f528f0fabe555cd3b092ce765164b81deb6bceb0d9378e82ab519e90dd87540cc3b60d2fbcf3aa59209f824b49058331cdab160d12c5037faeb426d969a70b6d980f71d0fb8e00a17ac9b2f10ba6309cc1e32a0270d05d0fc3ae5fdbb06cf1fc559ff2aa7506619ccb346c89327518164187234078d26ed81dc859aecd4067ab205889ec552c89c4ee78c7870b046b3a88878dc22efee38e1f8206a5e4e79cf661402de60cda7b36e7450c0d60b1fd62d99b72aa13d1220e85d9b70a10e45b8ad28edd8d75551d8d706a8c843283506c502cc2b0ca512c07bb14b38a7cb49f99819f00b026924849f5848f09ab062ca88efbd08e09204ae55e35de6a816b30e3143029710a42e6db05688757ce8bcfe0263a7650ac0af3fb05eb004e5d0eb67da9bffda1673d996736a92351b85d907699719e4bb9775539dac10adf0e8c362032d67a3a7659c77677bd2ee0b74b4dc10020ab4968c4eb9a6d568321c633b505aecd5eb2082d5cb730899fef096835c68063d97b8326faff289d9b272d4426ca5274fbdfaaacb276982ff04cfbab6b55aeb3f8743b0b3d2f240d655810cb9c3843a5b278696931f54a58f056f6677f5aab3f56055a9319c5eb6e8da7671a593d5195f0a86ece3ea1e98287ef5eceac46a856776925264899f6536484fb08cf178aad8e9b5e8aec375fcf98e06c96e8e4deb22752481cc67b32e7fd75dd126add64b97b3d79db37fd7dfa8aabe4d8ae27964ffaa5ccda2b0ba867de9bff66e0da4ef507cadff7e7c4a7639432f43b6cf779fe43d53de48363ff62f9edc2032f7566f3e1f9d6f7b7686afe866753cb5d35a78431c1cd5dc2bd0241c465e1e6d2e7f3b432f0176bf87fe712b749e3fd4db78482d12149b6c3f3551a3f434142ef1579b3195b0d8bbf4468d6d4a6fb0cc652794e78ebbc27d9014a0b2bca79621bfa59c1e6899bcbae0444dcf4a2ac65210c916578e843022734a13f1c3ab3a407a1861a1b9b0fa509ae62143f8b2db4a3dedc3fd34d4bc5fe110f595be5793dd3874ba215622b8c64c894cbb1122ef5d9f8afa67a02ec8724ad7d310c580c4281b26c36d8177a2716495fb4ce5406eec7e5dfaa7c652d51d793dd8aec4888071eba445f2506694e272a13ebf81b70f0ae6fe9aa8a30dda0264f2875554be6131bad4b7c5b9608a7e46daafa2d218ac77de4b522d80063bec14b9c7a88d2b0f8b65e07929b53bcfba8c2f26a073387a67932a7fc798db6137170b1680580bff0eed80f922ef38e8d807c509476b2588fa4c09b3bc6624ae064ea33d052ce36876ad4c1d46dc19410ec0484cdb56a21fef99a421db351d99fa72883476c1e82a2df6a628788457c310d9d0b0d9b5bf698802516809c9b88b62717a9056c5da59a38107735fb7b50300a64775d9ae8379518f3f8657b71ed6f2eb1d89000f59a1f82b1cc1ffc6e0afb7a70de66d033885a7dbe4f8de81f4f1f2e5b7ab9f7c15ee099c3242d69355ae458b15a8228d72921a8685f1c12984491027a1db561b67c138291b8fe810671b1959e3307dc87334ce6f4cbf35287007a812834023132a9f24ec87776c12cbe629294e19a48a35fed19731ebd1b0f7e1c0e6be3f25eef845d7665a364c47b7c5c3b2e3e5475507b3074fdd33d3e568a198eb5938337c15e6ba454fba370f7db44f4b25b7601462db707290446a344a61e031df87e6028a202a8c7ad073fcf23a119327e19d44df73770b008da71dd319796e10023d448ce290c84a73298fd70818fb4ed046872b851718b57791244ec6d3c4df9a26b5814adb2e46135d720652611a388380386f57df676a382338ab7e9fe5e508b3946e21d12217e0855ffebef8e9aa6f900daa30cd27458bf8653a4c7acb2ffa71f70eacfd85b8c82819a77abca22e5d0e5c7f74d37acc5ee2949a5d42711930d1da67320e49e055e587117f0d08c9c723d72863fb8aa54d6e3f8c80f8959417ad32edae4e3dd1f24936f3b9d7af16c35ed3c2fbc413731d3cf6fb52d765bb9f132f288177b20c88a1a4b24f5e4d193bd1b8711a70854a36d116d508e3ff0f1145fb42063575b5c913f483b66ecebeee214de2daba27902003032124c22fc6b0b55185f25eaa8d6ee44add413e94a1faf8d8de6f2a44be8547c8f5a7d242c210f60ffaafd0014f6b16c950a7220d96897c7a91fef6e5078941ba18144110766d2ed4795cc38254435d91444771e4249afc26b3a4df5863d0f4dfb266dfcf5bed725527fe24f202006342fd9e1dc516498aa88038fc44c76575fa62cbc606003821f8ae938f0de17075721876cf429c65ad724b8eaca625981a850af7910898294166fee388963b06d91ca7e93a8ca332ddacebc989aac4c68b8485ce1c33148a23a20dcb47585398029a0c4b0f07c67b2e0ed52b46858a022ac343229372103d1323224f147e496aec9d3856a4c25246d30b6e594d8d9790fd5434ad9417b4db03d3146521d4560c1b1bb21321887bc3f4ccc618c278850c80dbc266f12bfd16913c91ccd62b0ffa3c25abc540c3e89540cfd75d038a240cc50d3d073fa1948510c7ed0c7560a8c93ad0efde8f08ec4f23e44125ef88945e85f8e3097fb934870f2161cb5a5b09cdd9eb6b84cb82a34b95451b51b7fb5e310a1c8af51ea3564d73b85a63e68086682940a6a34ecd35c48ad72c8527e6316d476ad509e3219bf95a71cc289799413cda96590fc6509af485dbf49f470b7030fc6f2937cb7741f3997604c1f49d14ab9ce22739514ae42e40b9d2b0db63d4f724dada35d9ed962733773f5a27315551f89ed4c20a02538ea7c4f394cc142be2131f99108cf3d40007f5f9e243ac05d212d26512b691cff4525e5a4dc83022127b6a0ec9be4afa2a5f7cbe535a1a59d77cb48a8a914ad960b5b9388dca60a6190b386dab2ec8ddda0a2b889438e9c1a4835c1f3d6bc348a3ea871848737f95a24df38dca58765333965174d9fc1f6385ed6bd082b6a9c8b3c67ff254e98b461bdace66cf238a80172f2cdaeab23676c4671882d99693929b6958adeca520166a944e385f48d96789464b93813e92b194d81c430c5904b4b19bf6a696dd9d234794b2ea6bc75b6cfc758635e816ce2f045f772032e95184edca8a5391b5665b3b994bf7b5daae417af51bb9485f29ffae1a5cde8d8f563ac97fa30cb699fce920f65e7457e641c84b8b5879aabe1d28a0140fa5e42325f97cacf7c5d866e97be884695db75a0a7ebb0f2d2988f1b98c41ec2b298255fe2fdc56bcbdbee254b9e2423502dba2e1572b80cb7019c1e51ad8c858e7fcb50912db4a5b1a4a913fb2e57993af679baa4422257e0ecd5c90c456dca4904d1ed8753216d8378734f3836f277a74ae5b722f122478b552cc1f3044325d679bebe7ce5f68a409f26ca5b2a08f28ad5c3acdbae48ecb8a51fb5fd05fe11a4a923decbfed0cd4d8dcab5a889dea6feeac5dba0219a86fcbe2247c4e6c928f44822674320124514fdc96160a4f77a20e291d82607691798fccc87d8f477e3f2f32155d02c0d7cc56053ef9bb7fd1694b2432b151eba889e2c05522894147e20da9cf78828f30421c3f6680216bc32c0de93d10f46d68e0b5bcfb7ffe89570ec46314ec9c37ebe22d529fa898a83742daec28278506e0e239eb10471fa760196fbf4bc41fb73b68b5e57c215589931e71978d3b5bc8c6d92ec569226b4c20928f151f5d1fb083e47d48387f13a32170e2200a1b598ce012a3d01445f32c1a736d298cc561c411fe13220b06f712098bdb75dcb5e0186a11c86bed606b7ae6aa4c4e7fe2006880fcabb9bdc23878ef16d0c57db11768a24ff477a89b881bcf85f66560c60530ad29445f363370c3153000dbb2aa399078e50813c69c6631d91528c4d397538e0c3bf18da6d2022c34d1d6023d57cdcce3c19f382c9d30fb6817a075608f2e16c377e94a1226d629360ed2abbca2dc5dfec46d83cdcfbeca2a10283d814accb21284785a5e001e9c59efa3eed4858389ba78509f2f7cd83d818d44f0175a7d96a2505366a7ce37bfda980b3504698a0944fb496d9a66213125b4d98d9ae02d1cf18b0ad984173ad6a4ede12372e7fd7a7fa64ca89f0b0f1a691b5a9cbcd22c2c561062c0c6b06b14b880c7be3eb375005022bf9351e89de642e5c2feff13e94c5b2168d7149e62406e6dd27572924a981b5dc824bd163bb5050f70b2b1f349a46d718f64855654449f2ff2c74e0c39321f0dc749f5df440d74ac240107bf465ef529c61c03b5d321799043d0920cb6fe9cee276042e64e46bf45177a398e757304a1a938cc7adc5c93eae52c3e72b0a51480dc1702e82dd4046243a4ca8f6283fc49208c1a5f7401f591b4b0fd73fcc85600928843b4fc4d0cb04d7c69e41fd8bfe8ae0313480478a58c7b4370efc98e9d9551c3dbb176a645f7b01c8ff238d04a4844d94470c43c666f37834e045913980811093f77321f61e64848bdd66e0d26acc8b117b187da5b681689f66e30b91ba3c1c243f82c336a85caa062b01404a003d577cd8bb31afa12520728c44f31baf87977b7cdf03d9b2069cd316b83730929bf3febcd178a8dca5b11c31191a20e958cd7608a81958099bd683afde2228ca295ca9bd813eb5a7d7bfe50553b825dbfa6341823c759f260f066e7d5bb87b038870744434a1c50913d91b505ddda6a4ce7f46fcdbdb950ae1bee351d64370e106545a206cc4ed86092dd3632d1998a4e140e7c5be7c9ad30b88e1402a8a1c5243736fb9e441ff2acf671ef01c4105082076bcf7d5a3380ec08c1e0949c004d41698907d9638c80265200e15610f7d02e894e0bbd222707592985b9d744b47e938c097bb651c1f9fec27e74e7c40c9f72c4f157ed7216b7dd816eeefaff34c806e886d1c0770223e90d0b6310d0f8abfd81fe88363809ad60dfdb91b0fff0cf8190a36f80d202781aa89e371cad16906548dbd9dcf7e56c78173c654390e1cedcbad91eb5d45597a3e79d0243024d11fa0f88939bd8da6ecc82ee1547d472174340532ebcc9ce242501f6a221929b893429e71f452f8f01fa49d562201b4502719b6a349a142967f455fefe1dfb97a7340d35a0aa317ccc7649ec166dd1ce8e404f178d5c44045cb6ea0c9726f0e04c7505d40cdfb326dec5ff2d42b3de142e63ac12389109a783ba106aa1f50213c8ce482cede1c00fc3fdc8fbc8106921e7b80ff148724a459863607d2ea5342c6f46af379360bac559aa0d9fc95b210b93db00488c11b1443868f62e4cba76032b488126935203d985cf854ea5c1db8f15ae6aa51045e87c573dcbc0f628755078c26a33702e5fde858b2138b1b22b0ecce27189a1769b00efe0a2b79bc8b955c6cad0d237da3b0ce34cfb1088c1c6643cc91ac3ca82f2172cf79deb286ae8aafd75a4680502851bd7f9b31cd3982e951ed7061f7bebad3c0be96d658bc235be3c8ca440a18d91180a7b547a9d0c314891f3cca6080fc503333df1d2bafd949c69f86626340509bf60fceef6f28eb06f2d065541a6279f8ad6642d00082ee7c40fcbfbd767f7fd80e7f4fa906b64a493ff4ba2a895c551faad2edf28104de5d5ad576dd59bf78909c61d2e6a1086cec3404685a1e377552edeccb8b9a4e26e1597a579f08d79786e50dbe44dbe4826f522bf9345873f480e417937d21f0e9ce3a6305ae66b20154095fbbf5ba8337638fb6c76b851e1120a6df22ee79b8eb9d8cb46a2b4be49298ffa2967cf858a00fe0617fb63f0bbf6189c5e12c60345adf3e82d50c6ea94f9d1f2c3702a947a7a46f8b069234273a2d60850c06d22a000b683ea3480c958b6b80b60b36f844a0a0fe23a689609c9e260552fe1a3822487741c0a7b39d1c8226a603ea19ea76a85110f16a113cf966439d78bd9a36eea6b62ec2a22b5349df364330977ad2dd228de45def3f6765368c9bc45820886a42418d55bbd9fc5f1dc79b98682858650bf0f1253a758f75743c3a83e1359297935dc3d57f428014b842324fe5f246da80bd7a1b956f153dd15dbee2f0b9052ace0d194cc8973245e920e8ae0e436920a602e24e916f09fdc60dde822c6e50d461d0b344d0997c3529713cacc9ac2ae5c96bf13ec515f4d6bae6cda5b014c06afecec80874a80b9c5b938d248dd70f50b755414883e317736831629c0b97d619d7402ee23defeca0205a8581d3312a139ce4a4a27532584784c4ea130ad41a217323ac8701ab764c25d2e6962b40f305afc53609a1bf17432b519f06e5c0e3cacda6aa3ac0b28b5e11bffad72df6bc0edb9e1188dba78e621abda51f05f00f0af236da9d2253fe77285ec49ea62e95aa00eee46205dc74f41df14e11cd0db92568d717f424fdf94ba2b727f109ea95d4a8772d1e9c5fe045db278e3f29f3d8aaaef35d8267b681fa17a045273370b719adcc7d13cb0c655e90884557c4923656ad88e303ba2794c63334ab795ea150f56eb5d60939ec8d510d07e12c6e4266a0b38610a84ef6dc28bbd63c511617c20d99b4e64704e1d433da446e0ea3ba0ee223d9597948846395cd4802112962f2bf9a03a59e9b6e887c56f6e20a993f9fe8dc3e63d7b77d7a9b5b96e60728832ffcfb3011c4bb2cd879e183ef79d22c8849b943fd10bce0479e5394cd73e3af55722ce43d2db905b4b4af5687905b11c2d073658bf63d56a684a69d8a91a1ac36b7bd080c608995eb6bf294af783a236515fc8a2dadbd9e62875a84d9651a023579dcb8ccb17ca720de0bcb7247c62e0b25257f30440e9703bc13db70eeacda9193759fbbaf053ada2e3534c7143889a030b4026421b2fc4d25aa16fee510b3dd297edb555576845bb02a3ff79a62980d6eb92b6ef7a96b1f0b4304cd46a0210cf168c8b88312ee4ddc01fb8ee0c53adb5d62ab3a463accc4d1ca702e05e2e1e0a8d0c1e04fa654d58563ecade79795d614d9b494f84d3c4732fc1783badc376bf0c6c3a768ef5157cc591c61805f70924addf816db583d4e3557fa090eb8307b02949d4a846b4a368125096d0366bb09432b6e7aed4a0772a86b8f663283728640bd031b113f3eccbca3d04a3093dfae25620390448fa71d36803da55ef1afb3bba567811818de304748414826e4d0ef9d39e77b83815f75eb1cf606327e18e6bcbc7e247c1693c8d43642e401557a60ebb85d93cff19c2a80965001e1bb420499b31008c0f3b7c09c7703051441030528c1454ea36963d2d0d4c0234d8f9d46d3c624c5aab1fcb788669509485ae1d86deff95896c8d2087560d40d4a271294c604fbdced1f855a9d2a74dd0cdf2139e2bddf84f4982ad72e90dba9dd8b97b86f86a391804657b2e41970ac646ed5802c3fd38f6e631b6f330970a23cc8a007caf80d969e82ceec128b2fa4dd018ad412d2bfdc5d96e36e6b2a497f6ac46b2caa300b6894bb8ca1ba53642a13f4f719f903d691d57cb511a967f77864b0aade9666e3282691a1f5361c0b47582645f192c43ef213f6db7adb532417cebb4df6557b35cbd2ffec0f53b950046cf968a5f3e5b374a5f43e318746f64e8860767c18c98ee64a577173d3ea986b9c6d3c2925da5f2e87e25ce37110f6948b8b2c9f630a404c3cd21b5fd92ceeab5c87e47fb1c6c884095b07324e119b4ec61544f5a59468c35dc3ad4cb5cae6060da75678e5c8e320228f1460d6c6cda65b0bd6f47952ba2d2dd3a5c6e97c26aa1392f3e29911839f6b2d76e4b7d2abc05df02b4557560102494df01343e4d7edec9e7e0de3981f012b27db65e20071b78e94bab92e07b37d34b5421371f31db99f5133f06112ef1adbec509bb18db773bc8d5a77c69c18714f78197563d35db60d76a925eca568583ff21bdb97cb78e54a77bc7efec4c1b1f61d7ee4e2231759a4455e6f37705c6aa41e99c22299a2fe4f326febfa2364add3cad5948a146b458ff9b2476208dd5d5083c41e7404b71d790406ba6c7ecc664db6b4cbb41ae8fbb6b192ea3e9cf8d177f125eab9bfd0dbd6ad1b42acb3b4ba0d9e58ebfd6d70ce3b626c1d721adc82148284ae0e26436a1904f8cac568ef31b2bfce39a68ec04b04322820d5bec03e3cde7cc6846dff847d8b5d40f7a88dd61bc7c2aadaa7a36e77c9f99c1ecec4b4e9b4b9572d1e9fc9b361fc281763db7842bf2a4c9539da8b45301f10a189756d8c77acbf640379f55182b42b754d7a4a01979681ce773332d5aa96bb7e4087963a8c81c29aa2197fe5ee49a8f83b0fb5ca184bee3f24e0c6f8e17d17976590c24a889581fdd264446e1ee75682f2fd4ed7b445c2650ff6d84cad95e0681d98f6eb7815f31d21536e147fa4394af8a71d9811701085ee1c9bb1bdcdf9d92a9bf968e1d65e67c22aa63ad797f5bffa14aa66add1bbfbc0522172576db168238c94f72d4cb8a9a093a9e856b96c0bce65dc27cca7e54b787e706de99ad3d3887a86a7a9406c0a451191ba42033c558af011c500648445161b253906fcc8aa422cd596653842847223c3b867117fcbfaf9d01bb116731a6d01031283acebf291d45ac00fb5c802e99ab6af751f98e1887f94f5875323289483e9aa156bd856385546cca50306b197b65e3588ce872f195de218084c37609e600e0aac1d19057ac16943b8657fafb2d549b0916ce4107b73d3e900df0265dcca1f2bd7e8558e905b60842ae7dce8452e3c639cab2a1d5cf8104fe5c0334dee8a38287b1a1832e3c8476319fa7eaab8458820c03507a55e2825a21e30147488c5989eb79265584cad3e38573a5951c683b858a6b4d6062fc56390b9aa6539dfaabf1bade190ffc0d004a85f80dea9dcf6bd102668ffad5914bd4f1c61b400f186007d2debf002e580165ffec522460e9953c9b73906d8c061fd084c0d5043317f5079cd95c61a77dfad4b06efad230375b2c6edba32aa138bb8d441e6ba32fd7e5d32a953a6fac8f87efd65ae4f06f5ca649d561fb2e75546e238d0872d2a4976f1655f5467a2f72fc39ac82bfd40f0317f6ad0d74e8f5ad86807a83ceced6f0192f69a97d8f12497dd90243d33150764b7f51c7427d32372b60514e8c8b9ad175062a3f73f5f3bed15464cb80910cd9750ee03e4ede3436ce00549df2a857df4ec6947bdea4b08e19b61fa78155adf04468a183c101772bdc6429a6cee5cc438049163523063e15a476dd2727dddac0f634d9dba0c1136cec40035bc94ddb7ddc6c953097420bf624eab0526c1ef874222eab9873196bfb56958d7c06b92ade21084cabfe6095a5c810be5129727a4b865ee3d226daba6730b22f4e3ee74e6a4236c7293cdd003c14d5cf52268bd08632ba7d121d92cb4f1cea61390a37829171607e4fb8966bb7522f67e1b8e2db5fefa1ec5864d858afc7fe1a1ccb0cbd6a46fcf8e9a6f819a873cf1a7510ddfbc9671775703bef0a72de18fdc9cb27f4496d1ac100ac6b251d42d18912974f19e3832a0495142073799cb63609407adb0d6315d536828dd932c78082dd0af3c947ec9a2cd8084e5866f14820f7ebda82bd7f08aac4cdd38ad07b486d8903a49c6979aaf8d77e4b255274eac9376abdb5b263e59efebdecdca2ebdd4aa66b5e006385767dc589477808492a98c7b4a8508f2bdcb25e2bbd80e0ba2978ea950ad4b448dfd7e4242ae1cef5a00147d571e145bd1c38352571d1c48939fb12ed00386b224775a97ce99edeb97d33be67440e1755fca138e51db86b230c7c438f9693f9cc640225b8f36297d11828d42dcbedf440076c30b5f90bb53972ec6dc98f72f7639c83cdf62835e5b79283d73ce5bd9c57645010976e8600d09c9f671e119f8c41d48e9dc31dd451b11c2c20268a62283c63ffdfd22f2159365415a7ce0744dff0462211147b9fbd561d19b530e8ec3681b2cbe490937605d1f3459014e1fcf5d5b11d57658d243c57612e1132c05dfb2cbba3250e29317c228cd790b806e409fa3050660a1caa75916e2b055c96414f8954e790999d8e3c4c91cf569d51bac1f90bf384eb038171137a15509023a06bf16de3e77497200590f910ec7fe345c3b48b51ce1284b2eeca5574ccc9475b54fd50cca19e0b846a74bd2268f153c4476a217f4f85e1d1e0a045342363d3e26efb137ecc0e18e78fd31ba8317cb3686ef2ed3350875d2a06a3caa9bfffb98835208f59dfb7f3748f35f9a3e299de01e58a98d6266bfb0418b4d34ac0c8d676de0fe9f47b2aec224f37cee84af2f5187f9ed55641868240706c152c4c93c87590a2a31b18ab65d276630aabedf381cb4aa9a3af52d9cab52017fac2f4ba7803db0bcc5cadf2c94298ee90946a1e3a79a75bfe57a29f57546eab3467950ce3ef215395955307c0a09892627a792a4f18c40f6b8df6ecafcde060172324132ce336bddb231319f830f929b452f2187cfe0e8088911edd8d20fcbbdf629f89a854e6ce8aaab16be44a521c87b3f0f08922a9b29b880610ec6bdbec83d068b36fac720868114c5cdb809e0aa003d38b49c0c81d6861e69d91a0e7274d06812a977a32d3f2d342dd825587923486b734cb4ef37f6ec3f1a76e0c136c3feaf8118d88e5d1a2f110b58786f00204bb709c9e50dd822b2bd869c709c20148f31a822a3afc7af0477a64ac6a5b424398f5c7e530bbb964b4e0f1e44d78e70cd8366031512885fc0bd1c4e8a430df8d8f5057407715359758183be7f8c2ee6fbc34d2b30e3a39184bce2cc818157d0babffddcdf7c10d34843ed9690e72ec5fa276950759c9934ba43eb50d3f59b090fbea86bb3491866f3fff946051efe4f13f018834c822b393d7aae242231539a085e492ae7c83b9e7b22599c214e4faa81481fefa26b99a9547690004a760c423a20bbc6199c97fe0656dcc922ea2340986b3d7dfa3a986f3ebca157c44949f563932ee1569ece5c83c9910bb0bfaa2633fafcccb897e9fa5171ae886b2cf3c8c335760a71cd9a24370a6b0537e5a23de367b5dcdac243b1a993239a619310c45bb0f5dbdb6eebdb309cfd43e3e0681ba6a5bdee6dc1cc8e2a39b3f66d58489fecdb02cfee8be45c58da309666b2b405223b5ce4acec364ca43dbb2dc0ec9fdd16d05ab694406ea21ee438711b86d298b82d5000206e53646eaba56e3370f83e75db03fe3500d1402a866fed6e924ef8ca0548d531635873907668a48af651f936ea4434d712c2ed9d8a19e79ad3fab76d3cbbd5e0b5470058590137c4fb36858c7c37654eddc06dcecbcdd395ed7f624ea9e0362299f385e7dd4c7ed3e130de851f095b97b3b270c36237e9e5f494d30656a311cfc36dc9003197bc01bf57c87d47429f5198b80de5cf2748b9f0f9eaf7e35a8d9dd7efddd8b2775e7f57aefcddbaf67b3fb7fa70492c1e1832794cff940853b49da09750a913f4aa8843d07bb081e967dea66d7cc6e0d48be03cebdc6417c635528be3c3bdad5d66dfda59f05957cd5ee450ab765a08d2b88daf8edb2815ee6a4044edb8e1ee15f5ddcdbd13c088f7099cf71a24ef74ea3d1366a76439565e31c999a441d388b5ac723b8e313a0a6b16263f5b184f7b4479ef47fb084e55479687c891536a52a67a27a6e076efdfca39a29ed90e40bb2d11ed32a16d47bb8f0f9ec4120a90d4a5775df797e92ce3d7794a270f1001602103026a59735e8b78f801aec2e1fd660be8e105ab4cd20757f647748e6915ca705a39ed13355fe926a010b9a79cefd23e6d52d586dd5d59a8206fc7213502b5798bc5086dd96ccae9d35e38630a764067574dff2a490dfb69ccd9f5868bca78e96c1ae0f93bf136025691dec53b2aa4a1de92e36e9a6714c547167e65fc75917b4915fc982ba56c7f5ca7cf40b8b8d58d3734c0b6482985a3ec891765be28a3365aa90a3cb9bcf92500413405671fcafae4506e297bf6f4b16167e5f4acef5d50c9367806117cbe8240a1dabc0d232de2301384c0dcef304513f8b5f78d0a45c30e758be959a37839072f02e8d9901f7229886d271117bddef5c10f98ed9c57545cbc6844d820db76e64d9ae9f4d4480da5d476e1ae7666942dd067591a011907d9c472cbe4c528d81759e94eaa900117834d409f503e38ff112b073e4e9e370f7b0b273432aada6ead95d95e0bd594feb692a2cebc5058417375771e13884cfc12ec4f7f7dc4fbb89bc12b9e18cdcfe1055b3d29b768b3ff24984a400b3f5f11a7072d4445ddcd1c424730c130b2f44034aa9ce929481207cc19d4209ce1d9b4f26e580a5a31f14d43c0a88b4209455320750d8cdab79e91e24956631a8a260dc2404d113cfe237cce6d041ec33e9856ccccedfe37caf37c3ef4ee8b2269e09cf4f66d2f1503e86a05c3e0df31e49cf2c375d9a381960aeeff5d59d98d53fd4742c4b2fb93e35e5fa2584d938a28ad6ba260af2ef2a14c92c1a006190ad6cee82b85bc467409a1fbd132aac2d9de642614dedffbda21089609a002cefb4a151e44454f07992372ecda9981a4893f0ccd8d5e75af5e7d458a9d2acb5a1773e5022cc7993f8c2b9f4cee16bb9e3e81fc3d7f711f993c1427dadade9bb0d7347d6e8f19bbb3233c277b4ff5b0379feeb2ba0dacb0cb1e7fbfb25eeb29407ffb2964068d3afd6219b7c89648263e487376cd7fd4d4bac668689a62f9c5d659bd2e2c357cd03f3fbe22d73d20611887462ad622ba90f55dfea1e6dd822218083e4b96200a41c36b46c5232d8fc648f7616fa67e29160382e86cceb3c8d39b98492d7aabfb9f0665f97c3ebc607c1da06d3a12f591d082030875390af6942450d46e837f4bbf7f8191ac74670eb2a3cb9aa68b4e9e3989c7e127fa2ff6e39983932268bb30ccbd32a467b56f934aeeadc9de814a397307becaee81f6fe2c36730c16e313f4e8dbb97faf3dc73273d8cccc69d2b59cb1748f4b0a92170d88039982e3b60f0e2e489a718223a4ddb6ccedfe1342bbc26c4968eec50a67421544b3782487fc4a8eed85c708b7621e23b1d16d4301186efc06bccff2881282e93a0421c3c24924ca20f1b986e68c21bbb405f3dd9482405de7a34f0970fd14c561944890e6f6de7a883ec390043350fb316a2b4ee6ee63a1cb9feb9005e360cb7431723128e8cf397ad0ffcfc03465b4908bc5d5b450cf161a8e0bdbd1413e4e7d8aaa6b414c2c368b7fd9f81e3e6ab2af799ea9e8b2eab527fe24d7f297b78b9c962aec7183a4b8facab2116fcd44f98153ed4af1c8d00d68e0d9432fa176434c3123b67e464062a3ee9805f7b912157056d64f637bfa653300cc8142dc4003da7f12845c20d4996d0e2a5ea43e88a0048e7a0c7ed70d5a1eddc21cfe2665785ddf439975b517f951dd7d1520d6a31504322e3ce0d8891dfe6a840102f2b11193e761806a5a66567c64d0f71d4edc46c8cf01fb88b136325a5ab2724b2965923283080308fd07da63eed53e037053546a01c78df1571b010bf629c3752dbdf4a6c4471f57cad55c664a4b7f4ca9bdb26bdd81dc31bdd48f72cd4d2e977575e589f3dbfc5873d9a54b6d5733bbda417ead0b61df76a40e0a7b1432b69fc4b66faf8dd11f977116ace25ae05ae0d22e2d4b962363c657eebdf7de7bf3ad66690349d080090e1409c2ecda2bf6bd441881827df1bd362528b87bef0d4a30040f4f4d6428427362850feebdf7de7baf151e00020b13445842a284152ab05c9a0c2e45860ec800e5f37ce034e46c3510a586199cfcd0b2a993d30c367c60150fdc3c81000647f8800f46b8928422945860adcb67cab6597012eebdf73220cb00040d3160c7b513baf1d0d73ad9f716410307f6cdf8de7ceffdab4b19eebd38cc3095710b9789241061fb8167249c20d9a09c439233121648613775b24ded974d9d6c41c020f8c020f8d0411154a480d682243c54a18023d840021ac000091ba0f4b083111c408841ca082600c20824481082064c237082019387d9c44ad8b4081958b1bd4d8b9081144b1fa53f377ec001bda1fbb440377eb001c5a1dbb7cfcebba96a07f951ad06d0f8a9836e22756593fab73ef7177ba8a36a90bbbac67fd40eab0edbee2868a26f53e8ab8ebbd6bc998cf7a37487b1be05f7cd4ff5e8da4ed29a2b0629dd99446a62c1c7245293fb41591757da29ce3665b38152767db250ee95505d79c9bac93c727eabbde229814fe91e59cbf97056eee62f5252953b62d73f5dd0ac3bd592aa07d5926a090d77bb6d7cef2da98ae9e68009d692ed1da57fb6b8ec62777badb5bb233d295b63b3dd12a7c44d4e279db6070f8bf7f863b2669dc74b735d7bf1bd17e3715f2558c9768c95b65f4ae9fd926cff8e386cb5394ec94dce97962ce961997298abbc1b9454495c96bf969faf8d0a37979473ce4ba6dc9cc5a81de267a59890dab8b5ad14f8259149fb2ed97964ed3c1545b35249764a69df4bbb65144eb55b9cb607aba9759c2b77a916554b2c0cf5a8de16149f5db24aeabfb05582f2277b2fc6397338678ed33a839cd65de779dfed3ceffb4030fc40300c4591da6a20188a5237ea06429e96f65a35d97cc99738cd95a4a26c4f4d95a92ad525953655fdc95a100879d2a817065202791ad65081a34ed2492b50c9be4df4a7db553b6773d3bd519ae88fddf736dd1fe88fcdfb5f206ed36d6afa7ddea63be5d6ee13970179ffdb646381e0c460aca852c5f91a7b4b6a9bb724f71548b5b9c18171630303c68db5d8e6062706e3c60607c68dc5ef8f138bc1b8b1a1402cb6c9df93c68971ad268e68478888131222d2bae38876748488b81d2122dd713b3a3a42449cee6023ce3638311837dfc76a09e97c25b30d908a6108c560e0580c06c7751886904e0c06168ac1e03a2ca4a313838141a56dc375f8cb423a164625fabaf3990cc1af403eab5067f68608e7c6e2e0dce4aced0dd10ece8d25c2b9c9fafd897676706e6cd6d653a22424da016fc01c598f1cb0478f9c3014c11c594f8f1c50d623271441594f4f8f1c301441594f8f1caefbb0904e0c46d69e25dac1b951a2a4d5d283e73389b3cd5cacc74e8cdbd989795ec8c57af0ecc4b81e3b312fe47af0f0ecc4386bbd901b710f9e9d98cee9794d621b9d71728470b290104ed7811927a7470827e708e17460cee9e911c2c936361d985538a74708476bd96b92a575f06b7205a462183a44303011110cad3f0c4347460403eb10c1d0dffbebc86444587f5864e9c856ab1843aba12116abb58ae133b48a31c46aad62f8f80cad58ad550c9f212f1cb91e3c3b1da8ca393d42fa13b18e8ca8c58527679c3b229e1ca22e2787280c571d118f9943d4f1e41085ab8ec73473883a8cc355e7c263e610e52ff7f87cce36d6138b81e018ebf189f5c4c0b1c7c7c782638b4d8f4fccf362bc47664fe6d9781c8e6c0787dbd9c1f93e1587238bb18323dbe1fc53c962c4d8e13e15d7cab2183b9e37f41e09e3f5205fbcdc43280b09799e987b0c09e51e429e98a77a0c4d0d09654fccaca929981e432f2f327cbcf8f00103e37a9101e4e345860f18d78b0c20201f2f30ae1719403ec2954bc763e680638beef1d1f9542d4e1663c71359b9c790d0d494cb8bcff7f3e54fc84726f4c96442e3e8f209f9fcc8843e1f99d0e8f2f9fcfcc884be9c4797af85cf8f4c288607e461a21844442a550b510c20a21844aa9618404058d5c2220610c7c9788eb4e186388e8b0dc562a2d88a0dc9880dc5c4d6900c19566cb96c8664c440d0c7832407f280a0e6d1d13a3a61c8d23c3e74348f4ec8d2533c3ea67ce8e890a561a6a6381e1f3a20683e48ca803d201903723d3bdcce0e08aeb81e7387ebd901575c548f1965ee70e08a7b898a92e931636268fc88f9f14346662686c68c1f31347ec8ccc4d09831e3478ccc4c0c8d193f4697169fcf8f4cd5c2c28b01d4436cb9ba211939210b46f3f8d001572f5c8fb91315f50223233c21e4c21d193c3b210fcf4eabc522dc917102cf4e288367a7c5229471c2093c3b21c7b5588434324ee0d9f161499bfc3d813e7ac09e1e16cb05fa98d103fae8e19ce59a31a34708ccd905bae811b2d69236d65a4c641211ad563044260d2293680563d2a0418475125ec1cc9834b4fef19ab4d13e5a6b9f717cf1f9e133be4cf9fc98fa61c71799a9291b9f1f3151fc7991d4620c51ec62e47439392a954b17e327a78b91a372e9a262fc44fde4742a972e262a4ac7f8c91145a01749521cd22f922fea211dada3238a2d7a0848470fe9882dfa6908e80948478b2dbac5d3133904f43f5be157588124cb9fed157eb60259fe6cef159e2c7fb65768b1a009659cc0b3e47201fa98d1b38299f94c1ab21719cfe7470f954b4c17e327476c69a18780749cc978824a1b54a2353cc48fa0c7a4553d266d74c5ada5db646b6638f77275fe545d514571fe32f3fea3926a2ae8cf91362605fd3922a9a054522aad9380e87f9951bdfe6c4d59bab63c5bb71f2d5b0984acdbfe3c10b2aab02d28be25eb0321ebe63ec8eb069580902ad499b8f333b4230e0dedb878513ed5f7df47d20daa708cff91a10d55f97de8ffe918cb1dc01f1de6b9a9bdc67bcf7b1aead00ef338f155df4b6077dd876f75795660734fa94ee12b77109f3a4cabca1386cd71e07b4fdd14cbb0a4df75e549df863584d4adbbb28635ccff9136ea739cf79afc70d01387ceae2f01066cfaeee1bb848ad25a6f1d52b7bffdfc45e1ce6fadbeb70c1283a33e2e85702591059c47bbfed1cee50bf88bf0c6e50bf889ac362e5fa85f14ba4371ef63d5f7ddffbeea4e3dbb8efbee8e71e956767d5bc413a45b4cab8efaf8e9e3bf7ecba2ba6d791e11a9f56d7d17466abb010bc565ddd4a664c51412f4e537f8be6aa3d2ff6018eb830ee340a67fa997daab5beb6ead7d4b3af5235caf1448ec0684e0900394066a70e508258c441161730ccc18010da4e001135756d07463200209226ec0198a11d7d61d30a11b0f3dc301841085d40d0a087c0083d94582f2040a941e3775823235850f5c0d3ef8c0d57004ae0857a44a952ae015ae8827ea0bc4f0e07ef5abd22886c7ca288607cb08c8063ed466ac3f9aad4a23a3d51bb51e061c1dd08036336a32f34dc03f9a71fe2cf2a332d2b74a8c74ff7661d2a8d8e60de612168b34aa459492a8cd564853c6bb228d56531c565954581ed61062b37840e85bf72fef87f1ef53d3885f976612f6fed45abf964afab4d6da4c326966edbe3369269299a4a56825cd0c3f2957065c647ccf87f13b1a12fefb571c561f7f7771694e39ec25c594f2fec418fff9bae1bf26ad9632efbba7d7ed258566dfeef3bdb9acee7b4f73ca4cba5225fcf94b5c9a14cdd737a5a4a4642eccf2bfd2a459917219fdcf526cc2536ac2c98a621905d9f053950ff362f9bae5afb5966b5ae34b67269043f07e91259052d7be6eaf2bbbfe0b32c646b5ed17df05c6d3547a2925b961c965b7c8ae6ff6407fe8396e8da94ccbb04c46330790ec5326654abda0e2301368bbbe696552592665cac610e095feb3c86210bc34bc2c080601ff5e0d8254e37ba3080196698bbf0fcf7cf6765ef97aaa334bb26eaca7193449c31a4576cf0499f9fbf76766fe9b21f5cc0cd5f8e2224c6164040305820a9068b3d5c3b02a9bd07c0df25076dbabffafffad4824233f6b927ff53441689efc205fadfe2b3925eea9378cf8fa108731bf79339fa688af1794cb5e7cce9875634939c1784d307e973c4d78f03fbb4df81a26801fd6a078e2fdeabe95d7ed25c5c916a55e53f55fd05e20b9899499e4b0ebbf38e226857af1a0875dff0555f195dd0bec1089ed34eb966f7a2c4f17fe7ba337f5718942d0d3f81edaf0e80b32bff81e79165913c820218e30855c82b93cdf841bfe0d8b2c58be9e5e902f28f225e5b5c1125e75c3b7aa7c4de174309a4f0e83714a8c5ff95f02890389a9217597e499ff8b6c2d094b9b7c9aa7610ae4d3fc4743dedf349fc91caea73424ddf78bec26cb98fc74f692e235f5f3e7ed224ffa2f1cedfc610d2375f194baf8165154d9a749b3a58049870ddf2f5ed882bce5823cc73d239341595326554b59d4ae313229d9cda4c9a476b5d56065ef6c6aabc105fbab208b5559745fd6940d7a9fcb8fc5623db1b0b468d6647d7585cfbacd30ae9e65af8cee0485d22ef22d84c67ee1b77dd5bfd47489cb97927a4df51aaff19a6c7976f6d93bd8f53d570d9799c461aeafffb9c8d35b242bf3d89caf9d654c93a965c66a64f1f94d265bdf8ce233585fef7df9faf58582acb9fa222eb4de3e8b64e1b36df7630c85971d2eb6a50c5addb00056a3b063f6dabaa4f4e6c41fc23cf82e3248f8e7f97df830ff55d054e2fa4c25a6920ea399c465b98480cfce4a2e031dccab550983cfacc9f74b74a0214151a90db1c461b5ea404362c161b5d6fc7dbea4f4a55c92504cd43683a62d05e6b535592b265b53bbb2f474199660d4ef99de9b4c4e5ca635d77ad60bb54aa3263c58bf7aa35569c42a73f735a7d6ba16e5dd95e611f466064b9bda7830c43ecddb0c3eb0cd9bcba88d0355b6acdbf56d3390da7ae3b7e6ea2f4cf8dd6f458224f82e970b24bd181558bf7a215679bd5288daa2bccd23e88d8dbacd5b0e237e5b9ef5346f99145287c084abfca335599ff56797ada9bf2287dc9df1df77a411ffea59cfd5cdcabfca45f84fd60d97f9833c070d202f7159ce50f9c8d20e6bd219a582a4c310950ad2aed54e5a5352c2546b9ddab5329daf67ddec14a89b148755152c1246977f79d6cd9a2daf59ff42b668b6a6be0b496d4d4bf9df72b95825adadce5612eb666b2c309ee6cdbc9952bcbe39c58c7219b5523b6d4d5367f3663367f366732e6d2bc8c0b89adab89c22fa60ace6ad96ac70697cd19f70d7536717ee538c49dc7406523df0b9c28794dd1c564f70cb6428d02089c2e8468106345a43b72e5f3729e0b641ece3d296b14d6a29b7deaf7c3dbd6eac8e75736d7bb335769c55d6cd9aaf23684dfd1decfa4becda04eb06c58a7add48604a89333069b98cc191df3eed5c1e6d26512c4fb3b66b114230a1cdbe18a34ef27a7258f52378268b36ab5f59b4ad4d26d389a944ebeffbd3540af27df7411e922693c3bef0fbbeaf3c43d254622a99494c25fd416e2a99494c252ea3de755d6936994ca692ec662a994ab29bece632ad3b5a63d1f6f97add9646efdf2bcfa37d9a50bb7224cc134bd0662f290eab328cdd7be5ebc66249e91efc330cbb0fff7cdd8284efb16eafa7dfa079336fe07fff81e4ebc93df225e5f5bab9ecf3aa7b57b29e928cb4f6e4b2971497d5a6ecfa4126d42d6a57f3b62bd392ab83ade9eb32087dddbe2348d566993cf5b656bc6ebbbe59b3a629454d266b9a345a531f9bb67d6926932965d26a494b380ab9230d433dca5c023270dd0435d488ff0c6edf15d3a2c54c0b162c6458b85c302e189816302fdbfef7b77eccedbfb8b4d8776969b55e5a2c960bcb5b56e3d8aa1ff3bff5636ebf2586212b044115f87de2e76dfbabbff56360a7ad0dbdebf6f16ffd98db57fdad1f731bc3bbbe497f2ebdb177fbddf565d67e8fdbbf210ffdc1ef37ac813fe6324a673231e44973f0fb8cd1ec33e6629fb1989718cc3e632dfb8c9dab7dc6ce709f316f9fb14e8c7dfb8cb1f61963b15f3597d197fb8c86ba3ef7e76f8e5b7298f730d6cb1a5935568d55a3353eb262cfaabda458c0508f38dc3285ca4e1bd06b6eeea40311fbdbd4490720f60983a2a2a5a5e5d6ba6372e86d5f6f5bc6e478f70bf8f8f8dc985bdaa87900a4b562ac9fcb208b43bd94fb5bd33177e3cd79deb6e49294f0f76eb87299a4613cbdf76e9e14efc965545c62ad0d28adf506c5885a3d4a6fea0405ca02e123c058ffba3841f936752202cb574573195feb958a21f8799d6e69b156a38a850be6c5654626a6c5d3b828c99f1236fd12c21bdcf6ff5e5e5d3c27b0fdbf17195f2b9e14d8fe9f099fd7e92b9e00588d2a31c4e25981edffc15c302f2e2dad2c9e306cffafe6695cccc8c4b4e0c42f0035300098f0e25542a945ff4f0062fd33c8ed2505a73ee81cd69f724aeebdefe478a42d3e811ff9e8cb97628cdf7fa12f7d4fdf7b7019f8cee44ebcc99f78cd87d8949e5ef32528903331e1543c8aba27b1e9bb0fa8cce301057227ae047524289037e160d318dc60d3a715c89f541cffd3a3680a5b8167d1162f5d51d8ea699882dde36a2c4fa32d5e2bf85a21415bd48d72980f6375266c818d8b306d2250d89d62fb7b566c7f8d91b093f356d154af143b06f4e746e14f2ad0b55271fcb138d97e8fb0bd69fb8df2b8baa4ff467d37ca6a8ebc6f29cc56238729adaa0e8165f225ab649358250eb36f95ec1257ada755da4bac0e56c9e5b5247bc4ba8c5eebc3475f67a56dcb420b0c60e1a452ff3272d949a15c2862a105adc7d1e5fa87c13c16db4e3fbcd2943055319e162a6381aad4ec688dbfd6fade300ea94c25b83dcfb68f82b5d6c625d3e2a60b85553bd2faf4735829ac82fb0c32ee93021b3fc51fc5b5e5cd4f79e40b7a0d066dd7ce705b4619d7eb4d2c0374aab55ed7cbb2c0da586bad8dcd14a3db7a449375c70e87dd52a3d0a1400037d271f769a4df9f002ee33ee7bb6bc895f5a57c764fe0a33a75d45346eaeeb55677f7f25a5ba9c3aacd3e22b5c3c652873c8cf463b8de22b61544d954000426255430438562f33608e7d95a5bad2d0532d028c840066ed24d82011615c93dd900f8fa3ef9c0e568f4bd452ef724042eb8fc84c99b61e109109d0c0b308ee39e4889c95cce393f69e2a50597398ee39e640959642ee79c833802bab8cc711c178412164ce672ce39081e542f5ce6388e0be207ce257339e71c44add5c2658ee3b82090105b99cb39e7209670617199e3382e8829f42a7339e71d5d1057b0eeb87708dd7874da08c6f8041be71828b960cc95c04504a20b8510c1235a7c317862e5c5000b8bae032c740a5c1c1497dc0315968113ad1b731827032b5a0c806a81859a5208c5420d07cd421ee2d6953643a83675aaf1b0f1a64eb512bcb881058c31c616b780ef0c98888db3131695ef8012baf15882042910fc9085034ab820698631b031121b7319638c31c6185f8cf1c518638cb96c8493f274c06be30b05b399a251402dbd19057eedad9ee426b9467a6975b70eb053ee2db656ed30ead65a6bafc3dc3abdf1ea5ee90d758c7159918c55853ad3b6c62bb56298830f67eb310640b5d079124d76be39e79c73cef948ce1e7032023fa2e4a403ab4d9d6c56d83086b4a3376e6d514953b7108996447feadf0c70539ed4787e51519fa64e8ce7a5dd6dbf96e75549d166f782b4926293ca7bbaac5a2beb1ce94d0d6b6b359b9474efadd530c639e75ce3721cc75dd22eb14ba29cc999a6a66a49de938d72d8d3256d5087794f1e94c3f0f61f82f7e93d595aad78e34eb171a70c71efe946f576406f84d85dbf7a4ff4068ada0a44b77f93cb58ef2f3e71d94a3cc5116cff535cf229f992ec4f09a9e5c5272b0595893d50954fdbb3529e9e9477c59bda1e96edff21cdc07f7a4b0801ffe90d61bbd7c4f69e104f91a3595384b257d06646f4acf546c6990ba7646b9e5cc62d71b10754c631f198ac8b3c82caac9495c24a6961a7b43569279c2edb9fb666b4de9fde3f63b63f0b0a74df693edbfdb573aeb391dc01ffc50f92426a964d446fb0d5faa49fb97c11556e911e149ae3df428a564429af0614e61f922216292810f8fee294cfe04aa4225c962c59664dee1b71cd9a44d1f2fea2950ad452121189e041a92612f7fede0de8cf88a59ed08488be82ca6842c425661162b364d9e0b7c8d617697d6d79174ec99a5e11b46689cbc49ac3985099280485f93b0b4eacd91a7f98d29664929eb55eac69bd4fb1b66bd27ea1b390f45d49bd31596796dcc1e55bc81d308bc562b15e3b8cf534ac48dc6387b19ef59f832da4b74823ae59eb3199a46748455459b25c419bb9ecd02a937ed6fa20c7a4113dc3ef4226b966b82c42b308d9a1555a284b85145dffb22952b3cc9ae492d21b4a734ed5ce19f6dc16ceb9daf5bd9a75daf549758457dbfeb46ea60537dc63b1d7cbdad15a97ab00747683ee7a63c88d1b3768ad953a7d365436be57911fc943f561a95f53fadafb4fe5c2eef27ba40bdbb3feaa72b4359feabf4fdb9a4f7ffdd305f1eff7aaa1b0ecca130655f85f2996f43dcfeb6a089636ea6bfdf571541ed4d67c65903d71a74f09ecb33e76615318743e8c99586bb50d7964cc95fed449cae1bf435c496dcdcd25b5353ca8adb13550b81bc818c9c501b45c467202d0612dd04e4882e0900ca18d7c1f2d6f000988037802242de082c855089f13921bd4704032c561b4014e46a66899c3570b6f23cce564844a7d551088af6e7a9d8ce8f0aa7f7da094de2db589b054bbb689e4b06e90fe907687443208b5898022fd1952695b088d5d755c1a0dc748c3e1ee02ad6be9221bf0d1a72f3206da18ca70051278601245951c90706546f50a74d8bd3134c9a8fbc8f607752d6b312ced5bbaa8a5e1c3f82bc6d833d55467a4212e7dc68b77752c945ecff6de5b8295884f8f4ec91e6aadf64629af8801a6574cb9c2ca65f2b9643e4b57a0c336ad61608aeda2375cc6d77acd42b333f8e87941afa97f944405471cf1821e5c8982c38ce68a8ec94c14362b84b0f3a6b62b624822e9841000d1e4871e2c1145c4cc373085153a506d6ac322040c9af8800b6ab83921b1c04c03fb1c956a36904a3e3beed3e5d65aa7af6ac3b7040b34eb42919bf9ab750cb8536143144692e020044398f96b2ab62458b142861cd89240438cd3a71d4698d92174e3b1c3564515f076dbc1c3564512553819f9a84ef508dc7d8219e7528fb6c6c7bfe57f5b8ffe2e6bbd06dcd79174669bc2cab6afb9d7464d78748f4b23fc5d69d4bdb882510885dafae98c7acfc97dfe3b238d36279bd9d44645944dffc3209dd5d0d2761126e2597f7df23bbfcec66aa1b8cf9f75ec20fe7756914cfa99487d86581a35d16fd424e33005fadc7f3accf17d2a5519c45f7fce219274e694cc71ffebbcfc94149d8c99fae69eda981cd65a193cf1a7a2874d6d4738b24f7d45caee9ee2d77f03154736b55dc1a2a25f8db4adb1d42b0ac3147019c48d8e66dad6849496430c8044bdc7d6586a00557972e518e4e49e3aacc561f4f107e14a8a4b5d6d2d838cd61665e7a7f95d7cd5144ff6bd2058fa8cd59ffa73a8233f3dedd3905b91493f5bbd1b9546d47be81bad1e06ea3de353efc129f8e7c7610aaa1749ef31f9adc61454e5f9c2d1bd1f92a7de5f916ffb5ef75df08876610af49f62fd46964891ef9c6397a2df187c9a7b1ab5edaf9e369671198dc2b6edc7e410dfbe08b6e0e75a5cf67dfab950877d0b1e7d3af083cf85368eb6064ffda33eb96f8d6490981cf8bdc7efbde7bd7f489ededf6f711927d32f92e7f85cb87a4a6f58af5f3cf573e073e4b97afdf7c15087fd5519eac0af75a8436bd2d3e458c6e450bdf7aa5246244fee1d3f57a4ce9228cd39f5fb7f1fe441bca71b2483748f75791eed133f57b6686c03c10db610b15bcb6cb054a9b44aff058bec0d8e2b73c6bb92d4bafb9158dd8907784fbbff1e931f3e5fe3f8dff7bdb676406c7f65479e0e78edf1f1483ee0b53f5a4f70d7fbdadfcbf3dc1bcbf3f5fb38e833768f82cb46d58fef3f00979de3af4815f9bd487edfc3bef7d725fe7bb6e0528f15e7f0519d718754f7416e4b128cf59dea4a864e88b8876bad11f08d9f46e05687b24317ab3b76fe7bbe1c10dbb96692b3cf91f63fef2fe995676c5f8e3c63a668aade1f974c46f077688fcc2418df8a25b5f7c2f6f967cc3b8b3047d66fd99ef4b3ee3f8f64c1989fd6af25114c4b8ff338afa9afc9b188c603621b97414028ee62269552289ea038e2daa0a84111b55d0eb3c0475b18a92d8aa9cdbdc52719c4caf2dfc751071004ba487feaae372c009d15a1596a345af899d431382e8d66370d718ca4d3b60d3a048dc69136ff10fc438450291a6d17b1f6f7451904c1fd7d27b5f190a2ec914268ecf7bc2145797f392a10362e85d42c1f298466e3ff3a52088d5de94db73b21350b01a84dc77121018e64b029b539ed57faf3420db220bda91fee5ac32723cd473c3234ad81e3f3fcc4e572b9db2c3e028ceb17e15dcb254f303d511bb57577b2729d98b0d61ed14e4e586c58c3daabc3cd37e0eb042f51297532c2c66dea6444ad1af1e43a54b7379343d09dd643c8c1ddbdeb963cf980f779de942859889be4032b691b8206b6cb61396710bc92456badc3f0ca55493131aa543a34a1442909c98a71358e9c2d0ba19568b0082bd66a759d8c4bb05a2cd6a5629b1a6136b55131a2d5d26a45e190c0c1762a41b4b8b4b45c2797e6a2c283cb8b8b8b54131e0f6e134d9a4a0e2f302f2f514cbb5aa8eb648956a29f60c05658a3d56ac1c0d89ca055a981dbaad4b68b450b162c3a11641bb4122b052d625ab4b0392182d6a6b62a2188918989019b76059b7062493741c5091b586c6aab720199199950489d012bbd7102cb9de23a01b5ad13372786d8ba8a1917333357ae936fa9e282c6858b282adfa6b626ae44c942dc1dd0804f4313d6c0f4867e252fbda1a5a743ec89244fd8a296d8a294ec28df8333333333ff2f2e20411a1a1a1a9274d9d426841194204992645946451142121ad3c12802a539236a3bb0d02de24164cee69c8d78da39e79c6fb71d3c8c58a286afba645c56b7d78eb8b2dd65a26c7f90c66a06c21eb010580867e24c42143893afd54d4da3d168b5d9795d2ead6b931d7c125016638c2dbe18637b31b618c764c0841e7f2d7d82827c647c501954faf8b876e2a3aff325b59da31de9b3d8f6a0a6985967eeffb2e232979d2ed6137fd692cb7a7093ce54b0333b7b9fbdbe23ed8c65dbfe24ab666bbc863a5efb5563d16a325fc9fb22ff84bdbe843f7d6ce4ae25ec3a13a5c5ae323217f575b3b299af402f292f25e88dff29ee5af5cb56815e4f512ad06bcaad02bda0a454a0171525e8cfab0abdf137c1569651eaec0549922f688dfd126e7a7254a057d4940af4b2025581584d15a70afd61f140a502b1962a8e7ff9243365bb8f1301bbfe2bcacbf27492dc41d2903528ccdf0539a39a14e6cfe2e165050cdf9fb524fe76f0655e56b6878f594d5fc2d3d0c4d0b87041ba98d9f65bccc86cfb2cfed68f059fa2a8646b5c6a6acbd0cc0800108000d316000018100a08430241142461206bf20114000c6d90545c54508f8563518ec2208cc318649031c618638831446a684623005a3410303686d8400db2fd832a9bc0ebdd4dbbe5c73e83a3579d4c0ba699f2642d7956e25b6287e3c2bf0924ed5cabf55be08c0477deb2e85ac7cd192c548bd1d7a65ab32c438443214f677a4af1fdcac478e5a3ab22b1db45603c59b8306107f954cff3e654e169ca722c324b10c78ed260afcb48561a8ff8adc3a4b18123c1c34ca017227457079063e9844bc586ccde7cf491a0a9668a5735e2014fa853ae06b77fd4a6e101eba8610ddb4b67adec5987ff73952164429c00d4eb552daaae49f672cb39d2f8ab28088ae14d05bbdb4ad6625739ed24f62595d4e2fcb0c44793a1e436ea257e6f7d0e16e98572b0ae4a22e185f0e4937f1fc79d8a2a16c827f0b314c567695721d0a6c01c56fd56057481a564a56a3475159306b2a98b007a25c53b8c91a4233063f56656de5a5d22868afef1b8db5698c2a0b688ccaeb7e8b719859a1bf7f227db2a8fc08987186037c8be710671d641bc7b55cd5ec9cb52024a050e763b1e13a2407d17b9b30242bb78100536afb0ab7f344e5b12b9bade5b74b5e805134ae76018bfae2189a7c3aac194d969640479b8635cf21dd372f16a56c43cc556157197b61220accd790e5faca7e49195a3768f3cb965b684f6e939a62daed51c18dec3bb48dc5307d72102f719304b33809af301eef52436615e51a0b48d3c0a83efa81e596d10a250cac3ab7661348186c997547fb26630281ebade827eb0c2815056c8e671edd4449884863fdb8b6e19ed1fb972c60631f16e10d764fa8a8d899b6543d8db0f24f0a4546dbb81396ece25f949a10e8da9363e512f69220dced833ccaa349951e658c1ded661c235d313334c2a616955e5c0cc48e1b82bd2d17cb6b1a10226dc6208bd537f7ab774ce96a2de42e660f84e745787eea013c32cc3f5e83d26fe192b73b17d03d17139085b4b08e62cc7c5de20db06bc3e34c3d9007f19ec2f5c877036af5fb67aca1010fd7a297bab87b3a80b47582ace2d54a8e00acb6f8e39e798d3286bb6d1502d4f1308230512e0ffcb8b7bae41c280cc74412a063c3f678d35a5dee66012a0de491eb2acf7c292d63b14ac772196f5f60bb74787c663e33f27d5c67634e4ac4868574b4db1c0d4783d9b94a918217f745983b72a33c31fa25b6fd01adc368fb659a45f83b2f006bb6f45bba23d935625e8eb2df4c9fe7b667f5ddcd839905a1f6adbe217a79c7524a7070e2b4fa5b7f3bd88003ffe7844fc63072327a6f245efeb1488d41390a6ceb1b78b7618f3c80701e06bf5b3b0a0207db8ed749205eef33ee3988dcde0bd8a80d25abde1d54a330f3386b9d092591d11f5f7f0e748c2171bd5d3f9589d409bf4381dd3678cbd4641b017c353cdaee79c084efc1bf05e0487c59055b9a681a9b58b682a833979f7b9841c3b6e1c1bc899877361bac6394d72b0a2d787e60e8779219563d7bebd275d01406e68250a9937daaba4523da030861a571f3add7781b6803e1f172b84f8ffc863e9b2e9e2180308c34d2592867133eab4dd98f4ad6c6c710e133b5cb4243d00fbf66e6d3a341bf2edb2145171c59411850a427d0339588c5af0aa0bbd4ea144b39bf318f9ec703e5cc9ba4b1a63b60f425f94a1915c11f2b0def17a8f53c3ed0d9e1f50084d4d4c07edfc242b5cc3ae03fc2ae08751f1b314e7e8c8b5ea56a81f9bab9e48104feafe93e0c035072caaa37695905d65f1218aafc8c1c7de51c66389e2a0eefa4a1a291f80d11a3296fe7983abf2a020b60460c996a134b6ed79d3577d3b3138bce9b08122675c813914f0b21d6e4bab99dd73ac6a1b3729c76675ce4a2f34ac61e5f0c13e2710c5aa8fe25994401c369d462646e6ad7e1c42b6eef764cdd3a3cf06cd31d196e348c2b663190028e3038fe707110b341e3225c4fa182a312c968b043e3ea293bdfe9a83b0e36895f1ef74ce39714c21d4fab9f7cf098699b93604cdbfc7884baa1af7f7ea59b4b66ab89c2c9e58e5810fb11e7662387822d2db79476608cc8b51885e7ade851db8074de8ce344782bf4997cab547615d05be254283e7df0ce7881d3787bbf0ba79605a860a00d3be7c3199ec991a9554268216fbb3ddb8c3ec7c20e45d29ab0b97dd1fe0f474a3f320b0cc7a66d277dfd78047c800b4f4d4423ab59479450444e1952a18c0f47275041a2736cb3a7c1553ade11ae751066be0ca91477afd4deb530fbd144e229c734b1cd7040648c26c0382f715bf951aa9dfd5a6619dad93246b16d10cbaf370918f029f71c08c36056422b498e8cde3ed03db91392cc7b885b3e6d91ea726ec0006bd8371775c05ad8dc08703a996c574a00b5ce538fa05ca6b80c931ce23789ada345169f9654da1b3bab8b456c3a7894ac635d01a9d0efbfd37f22f2349f0d8fd15cbe443fa89925c3dd410a4f503708653ed542c4b07a339493c01ded0bbe5f92c949737075f8ed55c79f9e54ef3e987c8ec69aea349b94e18db15147395c7e82c1a9fe53036b505e20771505bd218851d8c457eb70554c100dbb5b1acad1a4f1c68b982dd9a37c24d206fcb10e89d541483ccf315480120dd21d2031c3f9510457e580933a3fe428b920d5bdf13d4406517ea8038a504253210f8fb3c80f20a94391f2a66b7e417ba782487a5ac2a0b08572c033572d539d3c5b852e395a0856de4c0098884d76ee80c32ab348e123a03003bece55ab8f21d74b41574327ced55854451b38f12e7b0a1b9d5aa4ccd95f4751e48d4ae2619ff976bb6240ac0bebfb21202d82cba4be354cb9388592267237e5906c0e5f2f5cf86f9daf730a1820797a130808464ef6cee4cabf672f935e11cc0d3c7d898de24c4e42e48edfffab2ef9acd8ec0cc51fd98c42cdc3ceadbad0b317c8e882ddca8614f22e15df7ca07ae6185e265d1fbe9742cc89c402fa10b37a296d684ac057109a71671fc7f235421d40d2820680981f17d05263553e8ba6f2b554537c71bd31485d10bd651c141d146386375b70319255738b1f1de3da9debcfd47da5ff947a2f1060f19485ed58be25b2e3bd0318560dd8b7dc4fdaf77024079a9349b98d663e17b1623540b47e67937e3243a8b86e608fb60941b32d20b4c4142a12f1a1172b48a663bc34137311145a0e9961802394e16a45c918fb1ccc7a1cf0cb2f9da9748612b2f5c04dddefacf9ec8253b1770a4e8d7cdf67e4e6d2baf7ff1de64bacc88aa960dca96a65c3c94ccff882013cf3587f8410d3ab516e9ad2076777fa6c5f39c07170182ee5b2c1c88211ec2f04d8fa765a50624546dad635ec47962d668797aa84a90cea6549bc6ff99befa9a33f3d701f1535a6834fd754a1c44e3fe2266eb28b9c827abb4d1f131c0244e647a674175b7734f4664a439cf466b45b6d351b8ea6e3bed676ecde204111f13689b9a18073a5a4e1c35a30042a8e83b621e3f721bf4e3d5588fcad547caaa8249b3ad5e6623695e985f587a1a4a1e67e245d3ea5b908d4b66cd5e481979734f2a803d9d7d20338db851c0832088cc146a352255f789c9bc6f8b21b579a2a1aa61d4f63da27df3f832e78ea866b27f561ff229c68aec99b7bb2b547b7c631b528f491832558c0d11436c090d349f511dc48af3debfad4bd5f8bcea10a0554447cda068749c1f48fd30aba0407ba90e6676c6fa8ff32a5a39e3fa41ee47b9bb56551c3fceb239fd78876789f5f708b938aa58eb4e378b3b1adeb0fa0f032cdace71f7dd9a872b0ee7ae6fedec0bf18510734c6e5adf3b1549a83ff8785da1ed4e34a47047f22920e10211d32b97cae9fc3803b0429d07a4ee6e73f4f121158b9541cd99c37c9acaa9d21692b79c3b52102f29dc3913670b3c6f82c753a22e292cda6c3968e27e93e9521d40509ed3e8f645f7cc17b870fb289dec03ef71847c26aa02f422d0f879adfcff343d77438bcff830e2b473fc14203f01ae8d728d28151f2820275e027425aab1192b9a532740dd60f88f4e2b2f51fdcbc86c1b2cae9c14dac982c1b4ad1a017634bb954a73ee9f7be3b655af5ae2d998568cb09dcdf785da1661c9efb188f23bef0cb784bc4ffe95992de20755493c3b8b7380184d66313b23791d9dfe635f354f93dd979cfedf08c6b551cd0bc8afb3ed476104c2702b816d4e586adf15f11f50865bb885237d7b33ce12cdb4a2fcb953696d5b15a56330c93a723a15f4160eb892d04a2a0a30bcb3cd99289c901dbed9da1d440f5d93a919627ce7e999ef48b340ae5b1b7bf55b6ac3273804f7dc50d41602ff49c3d9c95ea9f0b94766b672abcc621233d7cee13de8df03af7445eca459040b523109a234b670f15ad89c20b7a1a09238fa93c532ce13ba3094e0e44c766709b92353905323708484f2886411dce5f4a234d68c25eb749891b521ec89d07528256550ed185f19c44fc3ae0986a178589614336256f1f6e5635ca26824d333da9933054aa64a329d95cfc46f17c6a917c5e22b2bae65534e9356c0ebf7461d2ff5d286f8a7b19bf05bc4f6fe1c03dd2813a0f3bb7a55219e4cc7360a7a6b83a71e91b7fba14908cbcac018bbabdddcff2144618aa3ab7e3648c25119c946b7e9e57cb0e50b1facfd62804841545f26a869e87e49579466fb8c53c424e59eb6ae59ab96105be11fe11c2148f67519e006ee125c4bcecf8f8148061b8647cc79166afba5096ee1bae6f0b5b0232d8e5858542334e9f1e32888a95b0f867932693391bb728165215d3b63ed2c50b020dc8c1b0bed6c3248fb1293e1b0b424e0c08bf9cfa6c69c9d72de15445d8101e17f84bcf422bedbe56fd19b07abe26c3171489dd1342a61f4872d0c6a4cf9c560a9090e7c97529a1f1a0e68a9e62ac68b0ccabba30f45aa3050bdfc93a0b70e67b9c62abf00a1f8ff07cede9ce01a9caaeb276b3362769f71afd8d187d46d531a84e55376fd316ab945c6163b108d7737c40b69068c01f5a2a7d6f5c7a89d394961e02ba6155fffdf4849510b12144b34af142fdc3d01f29fe048b58c1d5835a908eb2df8f594dd3b478de11731788c3d632c5f115db309cb5b05d64205fce329cb53d0e9c67031487efeea7ab1b7201e3e8e76b6ff90b346acf79afae0c6e4cfc0eeda492dd5e7bf8523631159b2d7925803a7eeb643d4f21e28e418956aeb71a47b27aac72761a13b00c80ce48c8cd7c4bde54fe10c23ae9699a67dad2acdb0dde59bc780c965573f78dc9d8940dab215a56cf7d2ec3068503246d376bb972b463f097957c9720d5378110c8fae6098fac20e52708ea3dd73f45a17d6e00d8e59a8e5488bbfeca598bb4ea8a95e5f4451f0465a1d12809fc65ec690b3ce13e596e376eb346d4e543a31260667dca906cdb068935c3077904365e68d1aad9c4e6f702b87cd832b2aba1ad00574008d456b65231c3df676f1bd88bb5068f27ef1f28fb20cf28ca7041e4ce5c24ab5f51a928a5de7930fccb1f5309c4637ce7833d3cbc2652c684c6f9b874c19c3ea34c9c994e214a4eb13ebd4eb9ecdc9e9cde0309eb40385a9a7125a6638f0efa7349f680e80f4bdd32c8a40d4ed12d0db863f07c882d8897cbd74ff5706d5ce68a8851128e28f2ec038cd647b36f36069bb53bf1bba81901ed1f1bbc7143b03ba56878f02e15bb99cb0f66dc36e96371579bd31a480e782dd77ddc1ac194e1cc307fa45bc13951a743320c14a60046beb0382852312acb4b61fb0528d14bca1f1f122560afcdcc3caead7c9cba888c95886cd9b9b452569dadb9974c1f708540d0443c0dd32d1f23c0b75bebed11f1e0067081c0c0df56d60c76c848d5c2863f57e9a103611310dbc7b01de6aea081185b58354422b8640373c13377c54e7a3c6ebc0d00e83d828316c1b71849b5593ccff99fe8d67b27c4bd44b6269ba78347a64316ef2e66b478817eafaf016e290b1be59a8efdae99601367d4795d3f26109c62d0d81249c73722d754946a71539815a7129985c84d093b9b1291f9d64328e4ce4a1ef360a4f620d83fbc29447401aa5e28c9dee0ab05144888132974c3a5d097751ad35dcd550a71c279e667683f92247141d124b7b15789ceded78dac93991bb2faa636a1f0353c617815e0412a8a319dc62a9e50862a0b05433ba2375b0c95e8c2bddad3d7f9a928e1c587954fff913142a7251b9ad819f13946c38188c9d0070e6ed31b827887c5889bfbabe10fbccc5fabfa6c2504387860cc34d9a7892834cbd6399234c8ffa093aef278ae7c7d15134ca88deb92f33495380199a8e26698be084e2a89180c5efb9b268c0917ef74ee189f770b400a8ca9622a94224f2f5f6b5410bdc06e29e72ecb43d8bf4bddfd81579a511329034ab9fc17f037fa4b324c3cff945b0635a9aa37b16baf9843cd312a255e71304338ba156cafadb101d06a9bcdee7a452f1c17752f454c86a53c36af40921b678a6569aba174161b05a13fe00581a0ac1f84e9fed4400d02d9a79ef53b013506aa5e95ab8f0437f47b595c2872d833795ca5c8cde04e50bb3ea33ec134c58a417d5382e330a0edc1e246b8d0121f4d94ff1a38574a6c9fee446e3b9d2773266ed4a751ffa071ced191d03d994d5bec28f56f9f642cd95d669527a297e2e562da69d6a4a694bb36053ee76dee28353ee6c0692f552d1d45920a133d9158f46a88d363c119fc998f804bd159f28179f2e87d6180d549c8d4f34ebf8f4c15eba0f4ddd9f853954be5a9739259fe0934f0c5643428ef7ad7c9e0643dad1bf7ca6a045fafc125d9117f6d9c092e3d28679fd1dcf202c84b68ba555a4b1058885610600d01fae99f7b819b386b1b13a4cdd9dcb4277a6b73bd05b1197db777d2ed316ba19afc71dbc56b037035e827b3b6ea51a844deb4bdf4ed0d09d41904e61fd1a8f05b2f7b5cf3fa9882667eaa85d1cf06a05211008f1c0d055519d2e644423fde27c2e1e5aa78c452ad388b7b3b64b143837fdd61947dec77dd4c3280190984c4fd435a50fc4977765909dcf064dcbd85a02e85bcbf4acefc838486ccb30676f61347e5f9e44a3dee26b51e5e4ad8437b399780bcee02a53a5398ddbab71e02c648e88088246c4a02b1a8d53ebec2d9d70ef0d9b5c3663b9e86630d193ee5462cb0758e66ca3b46a8f7cd025068434caaa286f864bfdebf88816f2380b9f0c92d3023ea4d34d46bd39f843bb42ba85013ee6019ea8b767b2c0f3e922038161689edc0d223631fe54a4a2ce1641395f5c88c9edd2bd0d31c5edd0e33301ee9d218eeceb1fbd96803ad0a94e19f6533e509e710586bfd32db132331af217267d5723aa61a1d4d629dc64cd98ead2ed49fc64d8f29da7118f5a2f32b114affa65a95a2650517d1d38a65b1013f731cae484717fa8f953988f0fab2d2912190bc397f16643db821595cad3f435e98e9e1ce4b31c5383e5222d682694005a9cc6f3dd3941cd62d988a20a3acd931f51e15966112f9df4ac61c3a57dede45c98a244a97ebdfd4de9eebdd8a5b9390765debf5803357cc00f6fc1cb1d5064c79080408fee511f07263e9076f6c21ec7c957bfc31c70a97fcf2326e2d04b8c7d2016aabcbddcf85bb7091ee48c235d7683dde73dde54b90dab3faf78a972b76c7cdef1a4cbdbb2f57dc1492d67cb56fae7fe8c0a2d18fa7b7069ff9d27f47d7bdcd0b6a1baaf43f5688d5242c8e4efcc1600500cd8e8ddb5dec750c453b11e02048a540ef2b616b55ea41f905237db743a5ad053b4cef1ac087de77f7109ff373ad383eecace912da004bd0ef621593a72e79982f2c0bc09658ea15a60e05be5b6261a9ac61d0c1b33384ea1e9cfe01d961ab9e75339c72b96a321a703780184e98ac1639c7cf7a8b41c7976cc13ecb0a1a437b0506865f39d928028f0a60299be50791663c1bde11c081c481ee18359306f63d111c6dffdcf269f450ffa30f0c154c69fa1ae8b9e85d02f603dfadd17ae16ab16c4dd5a6684ea59485506bcc324d0ccd4e301ab5e5a98253060bae231584a67de363de61403cc56c6ead6f8ae59381ce9fac4ede882d200dc091f3d13747a6569343c82ca19e10ee99e1b86d23b16209cecd9a5c38177669a24779121b5ad6b017f2f7d7106e0397b6b97de2e291330529cf116416c3881160c752ea091eae8048a71b2b975616f9cc68123f4d604e121b31d142814f7bbceaa004a7d6c09b435ab52ed666d829da5c47ec6d377d735f39a4669c4f199c18aafa832282c5a510e6c5c0f05f05d8dbf7ab414009214888251fe300e63fbf5dc783f334ab8c4619c991fc03a9e52286535e0b63245a353bca890457f837e981bd0138c33d7e2568bc42cca9db2058829a4021327b27bcc0af30c9707873d42a639b9ff82e53afc99f8e7cf79a36336bceff81480f42473a73ff77e2388b5d747babf737dbdc92aef600bcd585adc3c677e9dc9af68993efac833148686b522cdead54e7580b5a3e95e58c65dbc330b5ead7376866843cfa6ced671f86199da7c66c541dd49df47ac2e2fe066a9be6e2aa0a749e561f050976c5513b8560484d10a862e63a9a6fb417c09250f4a5a2c130f2a8a6104b039deb7e316a5b2b734954a7e70037858b5b8c2c69fbd796a96d9ec3c59f06749f1e1f070ba1ba504df29f2dd591b2e787256e8ebbd7fa462337aa100ba9a9b80f6e8039e1715fc95336804437f56776ca5d963758d07b699504e90db262e1227a9a99e92be9f13bd9784b73f802129cd6370ca7c1623e1d80656d6368276dbd72671033905031ec6b66f73d870e163a95ff89824750f5a2fd0b416625d04e5b21afb20279fe576cd3c5819115d7e8c497de0b6fbc923080d0914954b241f1142a72db60014859675b0d6cd861a9b543c203c0de93aabb9a2a891b58ccb7b6cb072837b4afc04db844b59fbb22f92f2a68ac1c8a316cecdb86ebf696d6324b693d017a169bbf557e0af51c49789cd1cff1187e50e7ea25c01a47b158b8d18c83347063864a66fa6d0e290dc4c5bce2ee96610fd32fc0a160c92cd7005d26680c955800da61d1f953a25c89f59b4a4fc99ed590aeb5420f5d07c87d3108f79c3d3b0845ca0810a26faee94258c1c3a235c5c548833680efebc4f64399b74e273fda40551ec31161d2f6efac947fa68bfc87c73e49afbeaf763d2d24dd2f3ee13e8f2e7ddad835494637f8c3a8fd9ece6c8de8d9516fb266572ed499a8fadd964eba4fa636370cb66d353a6129c28b71ee5f919ece2a153e45d6b3bf4b768067f610493c31860342c4e43465c1a84bc176e153febe34c9a3d0c2b8328c286317a411763028591d12de5bf704dbd3f98a56090f5144930096051b7d5cba20f65ed4e2e7805b65c58a999421976092f48904eb4a69737201608bdaa6a6e0a6f79050a21b8c846ebe72a7e1eea103103d60923d5d995c8a65638876cf216ad3f4fb651aa84ab2a16e32e5ec9c7e495c64a3dc16f410083a7a93f56a669ac3510431b6e1e9763f76a6365269982a70916d215763175338d2e9d588e22b61bc592d6ca3c1bfd5c46103992dc324fd3b45ea19b6a76b4ad9cfb1eeb25f0a84cc6f35e2be0d5440c0b6e10feffe365dc30713b40cf4a4e3224040b2343e92637034e63563e11d7cc3237718f1f1fecb1921d1bb8f92e23a88e50ed48f56c78b1246a00d1705295ee00c2c103730929a7e5508c9e33275bc54194725a9e70ac8df0fca1d21e518eb4c94b104cc075c76c0568e2f7eb8aaf63b20d650a871323cb00122e2e3c99e3c2f8405a68940a586a38540c448a6f28e5102ad22e9c7c3ffda12d50cf4fe8c8f3622206b12508166dc0ea97483107fa018b0144b812eec6f2fba1cdfe3e560277783b9cb4e9caa8ed41954e6eb2099c88cf48ef58503e991b71b9169b5f9a2e99da16171e02477e821373b926861f5a5d99da1e173e027f6e921bf19936965f1b5dd9ca16233e02977c821b73793d86dfb55dd9ca162f8cdb300d25398f9b672665a4fde750fe081208b2078883c820ad6666706a85f13750f0743819c6a3429dc3ab8d83816600f8963230811460d877e2cc5ac3e865e439b4629fd40d4c0150709ea63b40491904129283ecf52f77f3f917778161ba2e2025352840491904329283f4b56f78c700c10a834169f152cb6e5c40499ee25196ba89fc95f62f9c5eabb3469953500cab25032b78bb95eaee6a695d4d9a53d106b4255484c77be54e5b2023387a1b97c0291ce42bfc5aa1a6056e730744634b19bd40c94058f74fa30156da880f83739e6cb16088694602b31cd8974a76a732b798fee0f7971cf306603131a0b18c01eb77f0aaddf8086223f7b10d14f0633c03c7a15bd0c7e9fb9c46aa16def22cb0b4ce91bd096ef1bd653a187809a8cf5bfd86e3861c0e3d4f1c3bde3c9a086b3b326d09256432b3ef60bc9388b99396585ea72d40137c9db47a6fb6b3af6bda5c2d636526ae5f1757ff2d7c92df2f959e3625ae3bdb3ae341775d1e8015aa4b0d6373275daa3c9808f2c078734ca8434fbc30b6067b185c305f21966247fd058eb46cd5744baa18cbe1496eeffe24d076fc645c71a3638810f70a3abedf1eacd7db19508b0983853c6cc814d7f8bce0fdc1a7c384f3c1f0ccd8c31266a333ff081a4843c42f41de0445270605c04b5c791edc6694c68428bb92a2bc3e9751b957ccb81f285c8a718cf3d7c5345495cf79fac4cabf590469b5282627d3a73100d68d7945457161f02e9300257d46ff2c0f483f3a7f5322977cf6cf4ee7356f6444e619cfc924e6effc43708566492e1ec3ae1e08ba74a591806ec985b58f58ef61c18c2bf5c7d44b88798043133117f111e14e20706fab3b98cc1bbdccf124e89a34c674d994cc3a079423b6432b6f58d1162547db415b442081de8f4c82bbdfbce9bdf9162e2368b5d5d366fb70de2347eaf026344dbf99377cae641a33922dc9e20517f0c2543cb379c3bb85e29807d19a570abf72f471179fab4d70db119698fac76d13a61b64ae1823bd968e1def857bb9f3ea057d302d383812095121d1c50f261070282fa0b9d57292beab560ce255fda9bf54387d0ef14cdbc6305d84113f0eaa02bfcd4df071b02ecf373801d61cb81d80b92168c7c1ce941732865b6d1b7c9b6c57b8d271e6da8c2de7bb130a7532ac1a0216a8b1230846d6de92416a8bb4064cd6b6837b931b80300f86901380e040a2e519765efc49e3b081b46ec0643764ab7463fa872bc21c74451663b38a41b8a2bb1d27265fe6edc9b9b4a8da0784ef009868b1a1b8dc54cf68722b715f5b46a5b215b0b20177acbc158edc86cb796e7aa980f30b9404bc6055ad9285a6299c1349ca74228caa3727463cb996c441fa2c5f9366045b2f38d8d8ba2cc8e5602088b388a8ac0dca18a6cf96859f68cc26f5892ec0e892ca395825008692a4142981cc08246c5274cbcc80720bed36a41eb8e63ab92e2c22f8167e8945faca823eb14856b03a586e4c194a29436a70fc2a3d64046eee3c5ac493ce983a2b6fdc69419098ad5a641b5aea7a095dbf97f79254e4bdd65280130861b6df90f39a880467583310cfe3330eff3f40cfe5ace65d0ea8fd425b2008e340a4d49a2fb902d5f4e5b4ee73b262f7c980e44b61671b186006a0bdcfaa3dc41db1230a37438f4b60c9a7c4d1d97d56fdb12a79c99e04c3e72ba96a7c53321a8c722385ecbb2e51398d52e2918b20052db0b04f288a917645da8f888f46b6a54539fa5a7cd7216afa4585ffa992e3553dda506e4cbea83906ac0c9ab852fda9957629423abddda7d8bba8e9a0cd4a71ffcb27a1dc0353ac7a8fb01489064303d85ec7ecfc2940e93704c8f760979347ea3e9468fc585c4549057d660e81547621bd4f2421ac31398bd62be76d9d6a081b1dc22e0822af60f70a4fba9ce1165d5dd705bb4e1b4adce4b2d76e7e25d3f249ebf44687dd153ecdbfc469351709f9ce7d8425c97777b25d1eef7406a93a413366433704122d794e13c485175f502f8447d2d454ef1c2f3a2937094e163ba083b18b332919d9e8eb61f173a4db0f247dbfc10ed47c1020c8d78d6fc18345df7e71c88a93ae7a9545ae61d185138d91e0cebd74998228a160c99931dcb286c3d307706a0410e2db6928d2ab38bdf962a8f5f7197a2005900b6790f51cad646dbbfd45cc4b21d126bc0ce73ad972887b565205a595b0a3f7a65ec1140690303b41ba647db5a353171562515c493bdf7dc313d38bb72db83180897a66f0bf14891d74155c03c981e2c6a4cfefeb19011aa2e52427b7e0cadd52e206ff33c30772754124770dd2be79532a450e28f4e1a4f667dd6dcc700e6b8d5b3edf3a9b521008fe25ced69dc304440e49ae3774cc898c65c5c189b6e11095ac7764ba938f6ae6340f7b2cf3c99e7fbbdb7caad4956d34a3bfc6e2bf223f37e94da5aeaa75d5fc068a81561dca4b5d3a5089452ffe0bb80ed5f139894026d764444bbc2dc3396f063cd31daeaceb46ae2f80a686270809068d218ca311538c1890e0a1dcb10b6003526d1d292c85f2d4aa3dd8170c23990722043898fdacc1737b59731487378f68ebfc4f8aa78bb008bc0b3ea4a3f43a4b19d8e472bb8554d19a02340c1cb54d245b405a67f60bcdd44d8f88f2e8082833ae74743018a40dd1b013e9787cd18c33a3a759936cf77b1322fc2a997f41e7c30f010ad4d5d136cc166659e3402850216c5471c65730e96081e5b08d4712e505884922e9609d7b65b6c11cf984e51800edf0e7cb19412338dc80d211cbd87e1d271d429c0053594c3ae25631900db0f59d6412c4a8bc63f1e297fe6ea045614b308cb1c44c3a949345549c276056213860938990002e9008dd5e19edccd6a857875da94f808834887c6ef6cb011dbcab16b2c58c3f1d873ffbb4cb408c042a5d384b4fc86b5ccc1b5b86fd3e04bb2c8fd634820d8460ea713eab46d7a7547012b1a5d29f16a37233e5a9b424d92b95744efc2470f2e9899dcae0409473d92ca0b72e5d8c06d9654d0a3bae2dd5b9eca67a64065b8a00fc88bdfabae3a18201d9a4a023d6a30c0b131c78547b6bedc6da453fadb3cc158255ac44b5761d99e3e7f154b9d9d47158881b0595e5d93c354f7a2871a05229c16a43636862368270361c88b4ea5e7f8e1ed08fd272c013404ee9c4d603ec1d69d6598f1d6955c34490662604a65c67c1e423d71981681d6c56d56f0141733adb6b16fe37be34aaeadb311a169d01dcc5485f2b850fc1eceaec9b369aef86c0fa8a5d097cbf8c4ff9b46bf7bec00a48a077ab232de5cf3a633ca76c2dec752a39621adc39f5ccd406797e94e32d2af972bf936040f44f83af3d42df12e55d03a8e88b8e2df66dd10acc2c2988e056528bcaaa782ec4ca5c38ca81b05eef2e354d83d567650e175fd914c04845bef5dfc61182923130ec1ccbea4bffbe3a582b13ddcc2a21b0db80b3c94bbf42391be13250a0cb2ef82fb711e2fb956736cb59de1d304206e8e992cf3174bf7cdc2d5b0e6c54740991180a68cec0755c57fb527319a5bb7cd8d8e65ae30ee5e077f557922efef5a3e5571baf21492102759d0c0c35c6d270171206327846600432810a5f8f1cd8d3e5fb4077708336faf23f15dbb211b23a461ca6558c7288b82ba671b379ce709d2cce3fd1c235409668879f006800931ab1061fda6ff892b90900432fdb4316e0abfbdbabad84453a8340a63b1dae6618dcc123189e2a2b026de9cdad747e26ba83291c859a15235747468b4dc839b8864d2473732adceb74fba66723238150f4ce68b38ffb8d03f1b9285f985263dd83571a445a702f38575c25c8399e0dae1afa50d62ffe91992925f3f1a4d0d30bd9de09a40366d428c1eb3aeb6ccff7257ada57763562248e999bbe0e4484caf096778bb0efc88211be11fad08c7eb57af5a8c8c35ee508e733ce5f99c69db212aa5bb50ab557fac50f11bd5193fa61029d2f73a4643a1af6a4c6d9d9aad6a1e4475dd94081f708994e6393a6cc52547cb60dee41e40f950eaf77e946cc7102c5a5b061a41d6704bce3e63c95e4d52ee04858d6ee54e06f8604a432a8758ff52c03ebb48fd8929070a7e850ef8a239bb2c2b6a6db23a1edc84159f16bf1b83f1dbc75ceac0a14f1ae4511d7359c39e97989b8069f78a0d6c41cb9fd4dd836a9df0ed38994e821dfb7276aec403aa30dc071bcf70b50739d49f80bd2ebe0186aca4ac0248f904d7af6af96453ad10b64c38814e492b5d5dace5390e000cf16577a48e3333ad64d57f5eb39ae4661a087c68ebbf199eac0f09354994143d575224cd68962435c062597b9dc0b2c19cc85229a938b92908ae0ff7d44b535a704ed65fc2ffdc3dbcabde6d1fe006df8065df84bf4eb808065501e735f1e0e55435bf7e5c6219d9bde9937667b41d02e74c6fa6cb48421adc8d91b8b887f342b95dfec9fc2a76765205cc5bfb966e50f46a3b25da23160a7b823781199f2949566b24893fcd0728deece5a1817c45ce1b7239ff9fe2ab5cbfac48eaf759106d17bc3e73fe75769ac33d53907853a1fcc1ba206723c3dab34ce54e9adf461ccaf0c3db30f476f725b20f9d05cf7ff91f4906e7946bd595204e0eaebbd58dfac7425bd61b14752123b5ade98596247ef2fc6ee2e950f5264168521f8d4b0579194aa8d83fcc1e741a3f670e53a939ef1446362e2028438943ba2d4e11f25c94314fdd69baa0f2e0dad49a772d28f7430173c10f8cf901136a5dd0b9ed887f1cf245d55f4bd27e85b1ce91684933cebaf7b22a59af5a759c5d8008766c6231da7cdb30b90bba2ed7d2a2a9967b14d291040d797bf3fb4c62c03fbcfca61e8f037dc99e74827590daf0df48c2ca9c4e67f5a59f3f319ee8ae818c8738fc3af456d6b2bd6d258fd4c4a555133009f6eba87a58a48cceca175cba8bba9b8914ea3d8cae89b00b33c89c751125773737a8b713fd6a71ac867dc4bf4dccd78d75ac999507b5319fee255644ac99b0ef2f6fb13d58ce5fe1d9efaa9da4f4c635358b92424c6c33db0c5cc201ab058c3212501ea0b5b4ee18a8505f68d2caa2c09bc1195239f8fe61bc10940de965893aff34e3a7a0c48921783856e1b28c1b9f8fe9cf5c534a5b88defe87ce2c37fec7bc3e12277c4bd60ed9156e37e8f0775d1e569b123a1e5f3636d7ab2f0ef1a3189eb4de2992f043a0afb2b802a2bd63343a052c79673cb13a4039871ca96d6b43da7f2996b34f358c3391d348762228f3700cecfe5fb53b46355c760094dd96c42e0980e3b67b9b740711b5342834e3ac58d0171d64bda4dd43bcdda71d3f1a23cd776c3d39989bd96f22c65fc0baa51c110aaad316a79ee20da8e0458f63592147b824e54ea3351de0cb5a69b5fdec09967546ed872e87b4336fa51b4c6a90e1da4fe645ea31e4340116512e4c4048dd5e3a86b530ed7a5e91273cc940f730d119043cdfacf23dd0212b5775bcefc892bd3d836b64ec6987f9255cd75dd139c1ff7716c9cee60c1707e39e8ef07f5012cebcd8523c851b5055e9700d10f0354a4286788a629f7c775a66935760652d9007507995003c6b95ce3fcaf5ac952d4b633d2230ffa66401ae6865166f43e611eaedc915b3d705b43689ba6122473fbe7dbd485b9510c327fd124dd00ca62b92c17adb28a8da10257e4aa6226fce1b5443de0885dc652320ada13e0f78d35abb7a5735ce61b9520cc3c84ea49208187a42af6bfbd0be67a0c2b050d88e6a85868d6386a1bd4712c126a1581f4486c7d7b7ecf55eb80ac6164f2e9741ed11d346653c916fc38dfc476a2eb2eb2f1cba5ba4e49bd3502b5cb1375a436a6e7879aa1d043d4535d2855c6c42c16235ce40be2ea8ef9a713b012740bee8aea8eaaeeb9fadb5b3dba8d672b125c77249dc82937fb9dd90642dc3fa363a952b9b5eb5e5bb795a283255d021c008eda2cb39afc1199fb1c65444f23fb1ee5caf4338fb081a655f60ba3756c258199f34613b3cc80cefebffdeb08f49bec61d918c731acf61817aaec494cedd03613369a2efa579b9e73b43eabea846dbd6e072f16a34987e22fcae3455e7f0445fb1e37351bbe60adec3e6c566867c84b59ee877ce466362a95d48ddd0b0aedb29c8b2ffbd4bba96e042e9ca86457ab631cc72fa66c333559ebd930b31477c07e000199dcf3e45ce14b0b3d697dad17ba8ace41dfda2655b3f88500c7c4d60a973837ac9dcae406b6148dd34ff73570ec488aab5a2c577f4603242839fe45f9cd1a361774dc484621b9b572537adf344075894b3e8f52c83097946b7882cc52f22b8664e0ec1985fcb52c66c97b50a0fa6faeb2d02f3c876e85845134022b75f11865081520f39e05ea0797cfbe40512f2a7e04f9c9b02cec2a5e3642b7bac78c0c4cdba8af050c852045c259a61e6da3f97827a553abd25af66c2d5ddf9702429f2998cbb81a56a4dec2ab2eda538f429c8f2fc721eb9ed19bdab8c17c083ca6174014db6fcb2c07d116962c48c266225bafa11f18d34785a505f7cd5900f772f758c4be932ddba7e36e136c41e7d775f0a708af37f97c9b2cd647306d8ba31ad7e7dc836bf2b2bdc6058c44ab905dab0c84f1eb3808a6fe9e88d9ed2edc221b4341a20d8bdc96b5907530a3e180339ea33cc5ecc4d15c90239003ede24a622921f0d905935651ef195a210a2424397ff290d4b5bc45b3ac084ab389b7a9b9dfb56b039907e03435c4ecb23601968a87482a695c5ac9c53c6e69e284a7e7460d71316831b191c562937a8a11ca9604625eae4386d3dea909eb90f0ba61ade22018ec0b418a24caf3ccf8a90d73d4537d3e2fcc0829e34d60094798cfef49392fe8edef3d76a9178223fb9d4aecd5ddefec9258f1d262fe2e5747df3c1e47f1cd94d5c9378e6040166a3d632c4f545985bcfd8a05d4ba2f58de3d591caa9916c5c14e3ef4881f7ceb67c9a0b33fe416476840f059ab5fa82237960104565a937131b8acdb211294a46ee0e4cf54e5cd66579539932876f417babe310e0d054097246e981bae0fe465b3144a20ab8375e8935aef1a6e071ee161ebec9bc7c42107f040dc67271466e9accfc486b5c8a3f43c4c65e86b5d998be8ff04451ff5bc9321d00d5116a12a03deb96a553293bf3c55cf96d8fe3197e48284f71cf1776a23179e295b5d7345b9942fdd491b9f86582fc0d002509f2617722f3c77cf32c25a351b61aa2ab9c6d7826d91119865bace1c3189e196cd001985f3cdc05dfba3d9a9c548b9ba14d11da564f66d83825745f1993bb52f7b74c250998f1e618303bfb26ad7530347e8dc6121e5f1dc18423e700612676cc35d920e1d53c91b4785d055b2161a9e9226e617126599a206d8166298c78f44ee1f2365563c496a10e521be2b4f2735f06489a79d3311cad04b8d64c607c6f4d0df270ce0e0d7c4251ab13dbeac5894c8c0ba8914588c341b61efb630b08fd584e0bd1df85d5adfc69e4da144a0b01f015a51de269b66c2d0d7f25a55d2cb4a949e7d2a1f898343b7391c8ad1a58c500fe2da5e53b6d1fd5d51dc7b42c220f6c5aed43ce8e04e16096d90589e1ad5f3169d34fb6030f97089c3149aba1bb8534614a5c84d98dd86cc6bcc7109cd717d8e8735e736f0a312ed2b49affe8694fdddcebc9deb12244daebe3c22a6a8d7bee091be0a8df3f8d7d3e275cd4ab30f6499f3054d6faff237a972945b7849d476913f42b664d810297e26f8b71e30f817fbd8fbd01370a262ce4f6a942c42ea1d0131a8bb2da1c796253ba907992115671948b16dca45cec3dd73a4a8865569dbb4872288292249f00829614142286ee6ce3c87d6640c8091a39eca1625d0cc3b4881b9b0f5b432e7465b47110d714042b457062328ff6808ee8c5875207f0cb05c3b96167c242da2682f3cff8ec99846c719f379436c828f79d9c1e084d81e959fa834c3c036c3f96714986c7a04c969aa5594207d82a577b1e30be4224b4775908f441b278616b236cf3eedd4f4aed98e92e1cbc6c017a2c87080cb53a76d01f9d943d5c9ee69286d04b10337550231b0e080007a1bf53c00f03dc97e4227898514d7468fec936c07dfac131af1c22f23d194aa92f8a49074ba9639922b399058d42bd061b43ca83dd606a11b5e98bb6e454b08a9488dc01302fb09b23f2c600c7e05ce971e4a3b2379d1c3da4a30acc6ded0e5742aeb463ab46239a49069f5c93174937395a51060f6bea272b45de6a2986f566e0478a1e03d04848118160e32d8358ca06abe9325cc87324a7dadba10fd8b8fc81561ccb58da59b017b70f1434a3d25743fd04e1fc1fc2428d7335cd625ec558bf6b99dd555c1416a164210c8f0b1be9ec120e04809d1e503daa505027415ed8aee8bdea3f3503a6a2280b5fa19f54d3e70b4ce12dff9de6eef47a4889bdf6e0ed0daa78439ee756260c8e9abe5f455bb6120b15ba19c64f53078c5d5394f10e40e9e39136e6cdcd4342c87ff285386dc144edb080b43c1adf7b685bd63d7da9b338a5432e76dfeb816320e3640704f5742b0ac3c79a23d94e68aab54270449d48d17fb941f844ba20146eedbaced7a989a87c3053a9e0a58262c92e91f63248c0587fc48cddb8230f6ac928dc13a3ffbe8f930677b2509f6828a16f449b1512ff02f992695a54c1743c178af565430fcf37b701ce2788921d5657fe945c5f716d503d516510db6ff6f964dbf16d088b8200e172297d02ca279d1bd3ee85a04863230c550f6f528b4da29d2e12534f1e585cfcc1d82c93c630452c3307c429a121598cd274b6dc0f00ec686bc04e25e462c0d8904351631a4bbee2482d2721830daad8861fd72b4947554802265146165490d3d1da5087c43ceca58d4cd42f73d90149f3e884425c85cd10cc472236e9a52c9f1938dc1da54122bb407d5938e58ddfb71584fe2028802c551b7afe3c2efeba4ef313fd0d877e7d03905a9ff35baa604bd6256ea86371ed0fecdc6bcb089d89ca95ac444325e04e6516954edfa988162d114c7dee50035c4cc9771076ae2d52a846cce894a42863aee3411470240b947735446a7fab09bbfeeee574576534b15a7445eab40b324702fbe3743145d602caf4a490a143969e4a212ded674ff11aaf0208c89d103059798327a2f22e8708c6021432ae5ac8823b1ac1650752bd04ff916d63017638970eff9a847e266553eecffbb581fca2911356ab69f76095ef6ff410b3e4c4f0089a1e9a1e904fb9554e9fc7b49c5bb8628d8faca2c35ded6be9d784c5c9ecb3b5bacca684e819cb682d5e5aa7dfee8044a25b87b57879ec6aa363329eb9befa7e5bba779047c79ed8e28f8cb3440da329c5da923be342e9c48f99da92484086508e358622fa3884001e03b9def89c5f37dd97e7bf6bea338cc4ecff765d2303adea3f59fe003f55c994df484168d80e2af3457aa8a3a181aa48f20d691e13d0d4704f2f2891e693ae4b5d2ba3579058c1c751b34ea06cbb3a201486b6fb87193dbdbe31af5d63401ee09745a5177221d0bc85b1be72cd110a2db2b31e1d48878164bc451b23804e1de6897f56b2a1ef5370a1dc7693d5d63c2e909ddb30c7f44d5c4b824deb4249497872a2e109a285e80b33389e334c0fe2d555e4edd32d830941c48cfdcb939132584cc440de687216b6ec51acc3b5b323c1e4f2d8119e9764187b81dc0d7124ceb2168ee67209fdc0cc4252d3ead84e1847dfb030ad8a72f7ae2b01b35b120c56cf0d912acc455120b323ce3c2190de9ffc31e78811aa1a8ab1832e5ec9f1bf4ed00ef0a27cb210eeb2be193df71dcc8489540b6832c8d6cf436ead0e3de0d5868ec5e0fb1730e6abcdf329a71be45f602e776838ae301f075af2dfb5699d4eb98779d8c8701eb1b95f2bede358915dae2f7c7c2773d9e858c69ebdda488a38e59bd6118bffe2f51451d37d974f2a4205001951784381b0ca281582f1bc438f0104673d5a73958d5ea345cced6072b5ae7d999b7604228b95a04ca0be1c2d0cc7c9d80334ee6ffa82760a3fb7564b0019d48ebc62029c19da032ea27e9ef0069bcfb3e8f4f8167eee00579d1e8a1fc640b4a9c4228fa05bb164d4f7e3ad0300b9cdc7007b00d93865d91999845dd73737b75070aa8decf6733b30f140fabdcd597e83e856bde81ebc97b73f8689d88d98bb6c37c89d544ada8d66aea9af9307776f819f06b51c0100e5fc34ef21f5268d7b4ecf183cde8ad24b5ec91f437e0b22f93273d06bc0d639485e3dc8e3ec202c79ee11296292eb39b5254a0ee26aab4060f80d38470f915cea014173648f86553b972ad0525206ae117391f89cb7a1a2127088503a7808fa9bf5b8ef33d08bdd45530f03c0ea29dcd091416b70120d736b7949ff03c11a549ba72e2f258aa3e02b603028b7ff997ecde832164a496d4d8252ac6247d7ec4964cc1ea2857aec72fdfd1f73d7ab34be3036b78f8f5d1461e1f9ada3e89b0fbca87056cb82301adb87239587103001d0e327614cf422597053ba92d076b158c7d80c16a132c15b00f3521cf07bd4967e3b672dc81bae1fbe07b2c0773872d70fdee3cc86f8b3b8551d7aa866181a5334c47b221e2336a3462b4b05ba0cdbed0e7fe539307b0359555a6203d3880dad3c0cfd0bea024cb190b22be1ed7594bbaa90102291537399b1c0aa24db8cae75f635f7ebf3ab2557e4059fd97aa51461ce17a0a23b2c72fe37b9f491f33ad1b82c00c7de1e50ab0cc7fc2e17c572e19a80c9ec492fe564c30f5bbe5190f9963945cca0425a0135a30b3cba6549d6b9d878aafc130a38490d42714913fe87030903c811d46a6e251a0ce36da72e03590067e5f4127960c6e56714ae755a1009f8721c9671f4dded49f236a97081a30f8b36db6fe47fd4dc72b15b1207919e46436ece615150924d82891b4f5b315c6cb6b964c89b598421e6aaad03bf23dc152959137ca2eb4bb1484dbdf4fe1a91a3ab9b5b2f2cadec65ee018e373c519ce53ac1a48d7d070291457ffaa6c2dfa2394a7d78741ce7e26adf5e727bd9430eecb1b8ec2750c9620706db72f484c7efa970180ee6baf112261900a16654461a1644aad9130ca4e48497d8d0b7b90d38619a35bc40f348bba31e0bc6ba57ba960b70a2ac84e2c727020397df708f7e3fb98c5d12965045d262735c537714990895c73203e054e9e47d4e65ef2728898f84851ad217eb5add47fc44bf4cdd857c1268b279392f3049151bc5e3b8545c243030147293b4759d04b2809b5eaa319c5d8247b4771fdaa018154c2eedaa300a358ae1b727d4637e6adc463c943083d5ac96c8b26e978c055462bd3402c0a18bb4a708dd08a2b77c8b3ce6a08362431b437d67943039c639cb8a8afd306ddac74c2c1005ad3e988aa4ab34e4e07adad568f0db16169d7b35261f184554ee15616fc5a79d6811dbdbea80bcabf25c0ca7d975a4b634429f445434f6cc598288e2e59767e8de4cd450ffee6a4f9af8f1daa2430757d2d2ef7d233caaee0435601efb844be59e53d765f0cf7c434912f40def84e52682db40a95252a80d6582eadc461e1189c2302b8e93858fcf7759905ef7829ba2c90028238a9257da3ca82a3773194ba41a19ebe8705df43d24ed042836ba837c64546a1d1c437238cee6a7b9f2b2ab63dc6ecc3a080572622c33d96d1a43f6984b27e27f04e71fa0ac47ca853d615d8cb0d4f088f9a207146a1c0100953ec7d8aa7681aee18f030dea227a06ebdc61e2ee66246476beda482fef0bdc851892fa670e9b92cc181d0f99c96507933b7e427b46aa0b79550dd8964533a67a86c9ed0e426716a8d2d3a65e3ed62835596cee7bf1313dd88c0d9f6194d28ed829665c1c56aa5a1e55674c1330e00fc2923670ef106a9e6299b45f3f5d3bbf7bc28eac39f79c6e6e602a5e248fb66241ee2cf55b224b3d49bc01f50e690b2c232e5b15dca76dc11595b421c3449e9502e50152647d0bfac762aa13ab34f7cb0d78a9439f3482b05d56e57b200369c2029e8587301cf9f274cd8af39f869c19067f46835b3db63e4e2e2b81ea40eb749ff7dfad7a9e372d55d6d4e0d0195bbf4ae4236e035927c9fb92c6f23b742da6f815649b594169331136ac437beb34e9bcb56e1408cf2041143b9d7d972b92b4b3d04d12fcc982ed3f0ed931ea310c2d7ede085e9cff3a7c72b3e6588e6d823d4bbe05a6904775c14c8ccc106008e26450cdce8dc76db2d408111657dd1f9ae9c4d5ed51b7f1f87444ab232449c3a86ee7a2332ba058709a2b873a320b786dac7e6030b0dc7f273332e240ba7dbda5db8f6ac5a0493c00ea7b7c39d95afa25420ffb2518be5252629197262d57c9a3725b6ed0e533ee4fc10254ee8daaf60908c7b834cc07f6f26641dc1f977080457c834aee7aa973ffdc81484646a9ac4f0cffc30b74e72839dd6671ed86d9290be3ee87405307814d253533223632cfecd0b419d754a2fcdb7b0c596415271e7cd0ab5cd561d23d47615b75ea1a16b36e2f242ed79cdf91c036aa0bd44007cdf00f7683559204a3237f6f3bef5d3e7780919069044435afab0b5c990d49c4bea61e8558a3897953c6451a63a1aa8fdbd821b3bf49dfc0b04c992e1464cdf5f675b0628b58063fefc6c8c6fcd31ea48cccab5b6e185bab7f5bb6854cce5445923f964c3e9f55c10599969bee4a1e2fbae97ec081af902f8d565f553872c0a8dc07e775312315492508b756298a93a63334016c8ab06d6eac167101adc535ebecd670b9dc6702d227e09789fdf5039c9ae7a3a25cbd63d6a13fbcf51e99e4a3f0f4daa10ac34673b13f9514cf2917c7f2a2cbcd0ec114714c43e6890f097dbb823851c316c06eba86c704f7db0920e4fec07495b5ddf9d59f5bc65087e38e1d2e8766a4ae04fc072ba48a5cf2683560bbbee04ea68adbfa4065acdb691fd79d570854c781e0a74246d0af60c3a0c78b2998dfa907e66a5c19aafae89f7552718353910f6fe60fd6f3e5bc44330a0ab9f5d427563fda55640374e2c6559f711c1b00fd50a3853ca248e3f8696969ce1989deca9bbd6afd0f051c8e622f7bd4a58fcc0d90385945855cbd8ee9ba5506a34a20dd926afee37edcf299745adb76f33427eb14bf16a23f005a3113c1e427df9eb734b3e352d713825f3d092f53f94add1f0e955f1dc1380b118aa120f2af8ae17305f495e6296db50bff44f2bb4b01299c24a7d1cdfdaf19d4ff72ec32613db5cf0601f5aaca7aa9671eade0ee1eda7c658035b01a19467136d4a7c7eaa2d5815398ad23ab1ff480b95034ea4a6e0fd4186849e6c65b3e38fb904638070afd6bb08f58ecd08bb97b8985e1477008dc4a55a8c902543969512a0034d1f5d3a89370dea8f67cadc5bbc89dc426dd9fe8cdcc14a652a5416c4eac1bbb14baa9d9a05f5524c583455eaca3e18bb06aabce0e0d48fe669e56fa7c5e1315d9979839b93daa86ffb8f131b50a94cc4caa2583d78377ea1b25338cb2620038f1cbc4353a32e77409cf57d3c0712c93eb78543e6912d251471cbe0e7c85caebfc0c7720f5fc257407322fd3d3a525ff0ac130514c7563d46d177deca23853c716e86aa08382409994227c52a008c5b7b5e993cafb437f8e39e8ab91ee10a7aebfd1cb1ce471c3abfc1a7f993dcd0e1e3d4cb6b6e061c6324a0fb79827b5390bc8731fab618e1831ac98d08758c000f1190b6019fa19673ee5f3dd6a985abe83649ae6a0c937c0b3c8b70842675cf1a32e76dd234b351bbe81f2f6c036591002a8b43f5916ef8054aa76661ed2e12961afa06fce317e2d95d68670e59504939545502daf023de9ba3b2226990226255ecd56530b156b549d3a54ad1e35761f44e2fa953764f28a9970f8882cc546d55565971a47d3489ef254f1ca64d7b850cbfb76e901d1ae7f8c4258b093f9206f4a1c3bf97c43eeb51a1adf589596a416dd53fbdd4c1a1fc1728eaf8ec52b3291fd92db35740d7a9517ac797d4969ead38c88ddd42ef348962034f04c05af50319acfc1f4e5f475a98932550f083701f10664561928f305d0e7427127c3aaf3749cd3bba691b889a0cfee2ea5383b5e25e4c5c48b88c6d6e34c65e506af7d791653e93f17c09bf1a3fe5800f31de461fe786c0591509eec1a5ccdb16793c568583b8d31cfea5467aaf5535db42c44735a69b228c55011e46026a239bb7867c6f455572e44e68f1476b183033c92da8d9daa7177a58894c40e586491dbc1bee82daa9b3b136ea004b8dba29de5b3645abb2d25bf7966cab13b45e7e8f2c5470efbbb3d2a0620ad877d2d3d5f5c71602eadc26a20ef3458324c44d96b1cbe1e9fc6e5023be8e2e1b537a8086817791c6cff37f08240f6497cdc45cd7224acfa8058fbd96d9b944a14eddbda0a05e7c2216345337485a45cd99f7119efe1706759877ed15337cd6be4576489c238d97b08f9ccb80981585e97ce47439ac3999b0e9bcbd492aefec4adf5054dc5d2d52eb0f48e94f4a82a1cff3646b406ae031820c7c12f711624f44a6f215c27288fe04eaa6ff72d214fc83eb66c35188e0a95c7fe84c6384f5d485ccc5988d4de3f6047d6b7e0f58e74f1c9dcfe8d1f4837ce8f0f1d5da3316032e4826c1fd3cc37a6b10de0b925d2c579233df3624e105c90ece8d4af8172d42791cd85e2bc45c886672dbc32219e04324a037b0d966e8f7565c658efc04646557d324409719103599db50d31baf1337b19244429446519dc8eedca28a93330a636c1f5dac8a0ccd0cbe93a6d610f884662fef18a7a2006b358c441e40937268b29b1bd4e76d672c4b14198016086c6dc139811cdbf6b7092ee52ad5adce33a53089441f71ab3ba11040adbd6df121696f883f79fd4b17efc9d058eab1d53aed32596c04bc77433603cc831ddf001ece2a1b7729b0ac7d4506a6edba76310daa2a7ee47526ef1ca53acafe1132f5f223672590e55be0b9f74f5d8cb643630373a937421e30fc1f47e79a01aa18b7066e52ae3eee5361a91642be299fd64c34e91c5c77044f6ccbfb3331b091bad5f93ed51db44b86370fa700971facdbca808a73ce004bda27731f11c488608a4f315b02374e266e3a7f2f45dd7176691b1855ee164fcafa0b53db9308d0fcf3be951aa93d8532f1c7d52abb5342392ffa1f23b8e4a774cfd985a2d5a13e05c10e0974a0cc14b74ece62412530d0f71b15e63cc201f4d2ff75689b8f38663ea357738f7980c3c78b77efb40658754619faf09aa33258fe9c9684ca0f6b16d50fc5ff53dfa1ea3c2a5b9763ed275e9dd733a4a36e6aecb8cee51fbb4e85d4390242c8506f5864ec2d3bef527b752cfe66d4adf50ad9b993e870804ccf617af9d12d63117766d5a0558500f2c205b7eefdfc4ad52584d921b2b25fb5d895158edf3ef7eb526b097b9c7476eb9e83843244c63fbef7cffa6c92fdca8a34091ed03470e290dcd062adc018594d1106bf164d3f9bbfe2b630495be1b04a8eab12964795f450144cdaa92f04bdf319d1bf23fcb2132fe4c8e3c228dfa0439e52db1fdaa1eb00aaad78d5cad0640f7956b9e749a366b10cb159a962c7920b8021192d2304d342387d742fa6e8afdda5bb41c1446da403761d5ad704d728e38fc1e9bf13bf82a2cf128c11e7e3b50513364db69b6b86a972c51b7461270517493d7c095f11cf1769d040932c46049e6dc4b10e56106068351de85218655390b24d97d2b1b9f8cce162a1a0667741a134bc319e1afdcb31062d91926ccbeee24b372277b7d0b8e52bdf5a8e72b526472e1c6a9f9d61a9357fa66a15cc5a2aa9d0847513b2bbedbda54c01990f7c0fa90d312b47a56288c0d749b852dfc5744e3857c9957a245c20eabf0da8885ea6b8c029a014f4250585aae5e7775d4b0c51f75f8c2909172a86e689ab8b71d7e9f3fe8be1b8d594d40431d0c2711c97a2947b17ef5d6829f5d4c5c5e5699eb8cc37514a53f4534eb817ea924a79cfb5b850fa344cd03041c3040d13d465964cd025b954305dd7d14401d3751f0c8d131d0d141a265ebe8381a14982799a2730ddd344f1d2cde83a9aa4ee5f689c8081791fe88c0e26d5d140316d530c26986e45345f5e15f3f2344cd03041c3040d132fb32405905381dccfd2f4e9ee3ffd274dd213ff491385cf49f3c489e9a7d3cf96140d2ae3e0369d56444980a00d55490c500b17f75dd229a50053ca648a499938a022eaa28053c0295d14704a17858aaae8f49e8b089c92fa29a014e014e007c02a6009402ba84e0ae4deb4a27982a2493aad689800a300a38052c0286014a09489f240290a9832850d6a753a4dd14599828a6a4691d24da093a29b32050d13344e9cba285487089c024e01a5e8a274517452d030715ad13ca149eaa2d03061025744db049ee6e90af4344b2f314544df778f84f7792ddeb7705dea03bfd2c9b47a317d8be95b5a4cdf52847a77995c5a5a66c678e14c2ea647a55afee5e55ddee5a5e5e5c5a5e43dd7b222d249107129137590ca802ba2afe471d4857e5238e1cac1e5566e80c575832bae0985cbadd8200b171657c7bdc9537d6afecbfc97d4cbfc974f155344547af09170cdd2a752df34fdfc7e53d74b09fc1351e7321d99335b983b1025915acdf8971822952b09239070a57e668cd4ab5ede07ee657e4c91cbbb2bf592c49c19e3e567ac7ce05231d309e7521121e12a4abdcb7b0b12977f791fa86ac68c39c3051a0fb3229af1a95e6838373303667e0c44dfa77af979faef5d623a077f40b94e2ba2d29b64a00f72585ee837041b7ce08a115c392eb772a58acb731cc7ad3a9a02b9f7529113235cee8473f9e7229aabee933082fecc1833643825cac189a218f7d5cc183364cc1d887278d239e15cf348f75e7afaa00d26e09271b9952b6280600ce8420255e9f4255a445744d3d4f274d5b98c1c6a452473c5857a97877141b93c4ab532b9a05a52dfaac8c6a903a340390ea22fcb6c820b8ca97251d42a05a69c48b9a4625c400da888be2bdc0cf720a8bac2b5b82b03574c54a7e5c1d40fb07c46f8c2a03a2ee0730fa6563364d09612387fe85ca6b9fab6e8623e2d623e2f3e2dbe2da88ee705d5f9668bf7799172a2c573c2955146c9450ad5f7fe699101d50ce3b926806270644c1751e979546e65065a107d57be2b4f5cdc7f5f589981152eeeb9267064cc6c61da9466c89836483c97136eae8892e8e67c13b822d24984313fd4160318c38a155f745074e0d4e5022e1770b90035b99cea10cdf0755dc9eb606cccf038401c36b80ea42e9349d5994c2e97a1b999f44fb3a31c0e6f4da2eed4cdcf041cc7712100eabc2ea87cf3c6f33cef09cf2babc89202025001011d2481c793e2f23cefe3380ec6ed943ccff33cef8603f2e20aee8a8bcbad74914516cf0b2c9ee7815d4881c23541052e3280627265a85412c1163cd0a284f202688b2b805c8949a954e2420930012e98f2b9dc0a17130072c1169d570262726588eb388ee34a1e181eec0a0d8b28e3822c5f072589133cc00016a0a20a094c808407a4000a07bb42c3227a0e38c157da624ac9000d088177c5f33cf0fb3ccf3361d982072e2219172f6cd8e06668d0a0325850dc7c4a6f6e646470e008b2c1712a150852ba7231818a46d7c2adba128e1956fef489f82a0997e9c1d537299d143475ef7d1228944fcaf98b0c4568d0efded4e243bf3bb570f4bbef563e89b4f87465b8501ced502feefa5a864c7ae23a6f7e6e32b9d0a7a626a0bce7660a00be785eca542ad1e73af09b9d8b68ba4cdfe7fd675a955e0620e8733f04d25501c055e7a2efada874315c0c07468b93590691169f16aff4df7f2597057034e5c5701cd7751de7799ec7954aa55289fbbeeffb3e2ec6f33ccff3bc95cb0282401eee51272adc6abab72252f2bc20e729c345639ca7739e2466d7f284ba8c03317d66fef41957bd785e0b91928bafe89c5b4039912e3ed00515ee8a49e7dce20a5c380172a1c49c2577cff382765bcc394b1f1630388ee33ed005637c593ccff340531428dff77da6d316536c31c56432994ea70f05657251858b0cb86c50993927a55b68c171a18563995c34818b30c0e0028c3927a5940b034805f2402502cff34aa512d8a53e5f813c5011a940104cd93071595cf3411ea888c0167781a2ea56df398d179f3e552a1818181faa6e86775dd775d3e7fc15fd6f05c258f1e2d292429d4ce057f23a28a60d35d030830c31dcb001c30b3568b8300346f5e2d292429d4c9f088ca86ca0800c2f8b2628a5a512d83d4002595429954a2593a9336191c51756b250422a8b325a524e484941075270054c0ab49891021ca4600829a8820b2eb8e0428d1a28680298822dd4a851a3c60b2f64b14514186a68c086098b1b2e2e8821061bc800c384195440060d371a50830d10d850a38b7ff141cc1256a9196365055a00404b141ca91973436ac66c712566e5f2e20094cb12597c40e51f78da00195841c10f408e072ecc8051bdb8b4a450271378052c594a1e0aa8701d47298d02a44169c9ebb0cc25ac4cd18504a6642104275081278a520c6060bc075d50210b0d90c00a1660010f950114eee9a493d249e9a474524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a5944e3a299d944e4a27a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524ae9a493d249e9a474524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a5944e3a299d944e4a27a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524ae97c1fe8d875506a688042f9503937868b524a33c0711cc7711c4733c0d10c701cc771ff7d1950812008a25ce8cf775757e3c670d155d15c25d14dfa8339e79c73ce39e79c5ed75d518249e38a29515cb105a5945e0186952b66f07d573c01af0803044d5618e10a314ea613161fc0620a1ba92550a7931562d8c0220b540a95c2020c2e7030ad602185fe8c992e1c58c0008542a152292cc4706111864b16a896315252545240d4cce2a5886ca45ccf5db9c2ed805fe5fb548c29e5a202e5793e2a26940be476b82bfe55415d31b99ee34e555c445d1205575c185f155447a5f4a7980e0be8fab8aeb4e2c0982930e54a723900baaed40494e320a291e442c59c54dcca1f1543795450b81d2f41812203aaba29288f531e148a8be992b81d104ca253ac88c0120726b9e8278153509ed3ea058c1ea868a782625a812b95d7ad52349240ea1581c6d7996ebaef3b7da70ffcbeeffb4c5ef77d26effb3aaffb4a5ed7759fd77d9ed775ddd77d5e77fabaeef3b8ef3b3de1ebbeee3b7d27130d4a37b0f8382b9698d175dcc77d1cf74d008603c2c2e4ca10938e8be2ebbacf0a2a408f964aa5ef014c78efebbeeefbb8284ca01526f8be899465835664c184d20a167859ace8c2650855b00084954aa52aaca0bcaed4755d57c517a6aed4954aa552154030715da9ebba0efcb6b0c22b512657863ccff3bc2ac6f0b0608189649ca4a84289120754850140ee0a9009ace209ef9b401e081a01fcaa9082bb42730568a88a2a2e2a584a0e98ee339698744e9809508ed20770518054741c9785152ce8bc6f4a154a1880524a63aa90823e61ce39e79c200b389495ee8b2a80e0b24165baaeeb4aa530b6b0e2fbbe5945145d154f5431c61349b02ba230711cc741b139000a9c50022be000085f740cb8a28a155d984a6ec71484840b5040081e28811274c0c32dc0c57164b838aec47532576c61e23e99ae3b7d333879a55d3a75a5120e9d1746ca8365a16111b520c0e75d21864bd795bb042ef14202254a6e0786c512a98f8381ab2c342c228deba0c0628a2b0065e14281b030b932c4c4cb010faa50ea4a9e050b18a026ec0a0d8b48eba88cab543a4012570c81021a88420515337082278aabf42a05b84a56aaa0e22aadc0b2844518a6aec4928500a5528d92d7d12c9c151438e1025d6e05054f40cec60a402d7c8c2a338c29140c222e4a10782b6200461c818427316787800c809c8dae7b8f7e2617f71afa393540b9531b949371b94b41390e4ea787ed6df6d7e8d721ff8c93c7d1513e11e8d2f1cee127025d2df28954ae1690d5e378e776723c0e32e31ba97d008abc0351f4424f93b89d989f36d020c3d3c9f3ae203d3fb5e07662f869e3051a3fb1703b447e1281ae9ff79ffb442a17ed89405792f724b317650f4e01bc0b3f5f5afeb99dd409e47684f8d98408d85311a826a852d920bad141a232f407e032d4be4fd0684504aa6c2b22958dbd22b2f17a45f432794524e3a2f49dac7a70e58a9b02e21511484e714db0b62202c71591ca45a314ad9256547557442a9a6ab62252d197adbe1d1f39374f9303158346e1ca95128f8da1d2c3d3b81d8a8586c1cdd009404026c70d0f0028138bc76363a8f8f0306e874be2a6e066a470990bcc31386a055785bb32c79863743c36868a0f7785b3c2c920e6a98d1a9ee8a38c11c5c5f1d8182a415fa4e47688c4f0f455307051e0c4983285f2d8182a413c4df5f481b89d1913e820e032555c20b251a5cae4b13154847818b7d32571339dcbccefa2c8d850a9e897b23154625f84a307f001b8ce74c265b89dd453930b95ee6d8cc945b1703b3b9ef278fa340bb7b3f3f4e918dc8e8fa7cf25713b3bfc8fe7e1e97352b89d1ede079e17f2f4392bb89d214f9fd382db21f2f4392fb81d9fffe1e991a7489e3e1706b703f4f4b92cdc4ed0d3e7c6e076869e7e97c4ed2879fa1d146e67c95326dc4e104fdf41958d9934a1cc28538ab822b211c6a8b899f9b118909b99b0159183e19a44ac88fc8a6b365911b917025811f9189ec5c348b222722c422ba26905102ba259e5674534a718590560556445044bcf8a885a1164e55a01591151307e78d15a11512d5cb3c74a6745c445d9b122e2927056372b226e4acd8a889bc2359f66662593634544c370713338560058c5c4383763c38a8842716e8686d50cab186ec4383763634534bd7071332fac6ac44c305e564433ca942273d363764e60ae222e86ae1c0049b8c04d3a270562056592e1eeeeeeeeeeeeeeeeeeeeeef3fba2cc392708523016c0711c6732d12951789ee79d4e6138e0fbbe0f859a55a4984c26532a354604502814aaa565022db365b6b4b8b4cc7717b772022350975b7141054e20068d0ba05a8a3035a082e2099e8eae40074be0c00a29b460e50a0fed9e7051fa34e80eaad3a528e89a62032eae092e2e2e1fa80fd40506060e851a541142166cf00515b6a0002702554fd0c085fec004c51192502557348a248133294989a453927b5292d324e792fc0049de4413ee2737b93b14770424b929294989a42692dc939210e0494bf82ca38c32cac032d2c78a35cfca245b5723775fd2a7883b56f20ee9b98d65e99a91376fa156eb55ea1dd6b28683b45aa115710844eb3a86af6c4ba45a2b0af1181bebc6fb85546b407e90f8ee120952ad855793376f24fbb2bac680e4e8b0fdc81608a9d6b205d2add6ec80bb13e12a9829ee3bb439e3f03726dfe6fafae8f3cbee8b7687b644b2afefbfa50dfd0eb057c62fd8d3f63d7ad1d2f425afec797466e97d6b77acd9ad6fee1407779f4e6f589b8784fad65a2d4dda22bc5b2dad6dbb6e211b9275ac3c9b36bb76494c88addd4dda826e19ef2a92f5c858b32d918cb596f18fd6750c420b772df515a26f15485b01e01f9d59345d6936363776472cb6e3c60627a7deece80877883a74ece87163776aecae79eb984ddbe86dc345a1a58536fbce6cf02cd7906563494cdae86c75121b9aaeb4566b675c9636fdb2b59a65aabc33a6e9c778d374a57dcbea6c8d6c7ebb6f3e12abcdd6ca5efa564bcf9204f3aff679e79f7b30f3f397e9bd305d2698d3ed38174557c34741d0ebb8399dfa04a2eb61fab783e7d4e79c1c2d32e7572a824e3a3ffa42d09ca5f9399d2d2c8e964a32a79f1da55d94d9cd494f930a749adc9b1de5ec9c44744e0a26a132d0494b1d9d4ca07396e80462c2302747411778dce7325f98b306c8cd29b344e7a4dc6bd2ee64da41531308383d1c5c0fa51d0ed7e34567564141807ae75403b3e3643a8f4ecebd064c224ca7ae52a97cfaec269d4f9820cd614eea51cacda963da4c70a628a5b41464e6a0b4a3f38663a16e8038cc961931d0074c8fde98dde4a65320faa7d939bd257fd84c00e7312e98eecd5617949ba5d97db365725228055bdcecc14d4abba72993ccf4e6fc6eba1e606e263d95403ae79cdf9cad49a90fb8d234d18e339a2b7ac4d54c138a4ef09bd4075a03a581a38173cee7cb2c513a5b3a15d7d11b94d2599a9d6c9a704c9447a7375d76e69c73ca4003504299e88c81a98f4e202638274767378b4c1aa80f3a0345d18f7a939b745214fdbac9799c8fc94d99699aa939e70eb3067ae2be097693ced99ab3f402a5313b3a3dd4e4680d93e328ed68377d503a63a0a7699a6047e79cad49033d7ddcecc06eceb9f3f3e588d3c19bdc34cdcec634995a282164a86102a09b9496e867a7aac60daac89c74d239678d7f5e7a9215cc2c4958fe434308e3cad00588d004a13a841b208680c581627ae0488660038b24260b0afc5c0023f9a944590270811aa630a4ce70e323c6864d8f21b87860a7b6e0d0b9c069ead4a9051e58caa8008f295bf01a2c59a88106cb149406b601acc3949b1c74781a28d480e553354c8161864f716108877950f8770470e7dcdd81b87b902f71ffc1dd655c95f281ebccaabb8aafd293d30d31489af95a38d3f7dd307d1ec7d5480d29f1b302654a27b04797a291fa0490da5c0bd7028241800824955ce867ea685a68e80182a4939294d8d1b8284177c8e025e966e9470b92783022048600b43b7546667690e405985eab5482763170353948d201a800355e780ac01151c20049374c4b5234229034040612d4a72a24c118a0fa4c5c8b57d41dc00925c00e86c3b141092b60c094830e9e80633cc085a23c1f603e1fdd0f56882a4bb8e0c99c869c7080d12e87cfc712575c80c8123678c2e6491608d8220965934980002d392fb38aa41b3a4a9c3e1fa513e8c2edf810e168380df994f04183105844869e212753919490f8438b245547a373fa7cb8d0523aa17a56446c20e90416a921d64492c7a9bc5902a274f27628e5e0ea016533e5008b944edf0d97202f35743f261868cca0240750e6270807254e20ebd3d1a263c707e84b755f0c5e8bd331a5ba1cefc367fa4e9d8df743d7c387e9c9c0c5782fdc98c090f32125093cbd60da51224ad244ed00653a1c1d8e5207927270e984783a783598707433bce070342c91c4b2999c8cabe9386f002b2218804919dc4200822b5a54094107a44040124720e922990d61443409828992244240460250a4d543870c0e3700e0bb2eb8e801c80dab186e7c536620032a1b00a2a787160d3552a8d216596041c51454a4c8c005a65020894c0e0944201604149ef0c20b78e2ca80ec70faa68022ca8e89076070608a960f1d1868a04ee037830c559ca0891591fc04c067484f0514700003ccc0c22305210041079258a26447c7068dce0657a6a004080f3aa6af64810a54e009243f4076c8919a59a058a057a0637459fe09340c3a040fcbec01dd01d5812907a92fa80d6816b488239a38401abc195a6e5018688d4903c6056f068599aace85a2bc13358120ed263767c95b5e3819381524750948ea8c9472904152d59480d14092e7a53e1c7aa04477019c0e8694141e282120a933627ae134830d02249904d005c1d580daa5143804ec513a713d728841126845128d264a9876b8043ce15a9e90124292574692978a410749a95d438224930d17faede0d9785140a981baf180253a27925e6254cfd5c0d8803660ca58c2d301ecf1fde05eb81fe0e66a3a233dc4944ea50f2471a8520c1d0d0a879b5daaa3390df174f804508aa1742a11a568a468986040d5f804c0696189520c5c95253c2f926e20ea6affba8186ae957a29c17493abe18274402d353efa2df9545ee983e15a5e0d975942715e97e2388e721f0772a6d30c1df725f966bc009d60bed237b9afdbd1d97413bcc1614942c9f0f04092cb079480297532804296e884b0c4eaf55ec61692c003306c70c58a17b69950195b80224a0f4f0f3cec60120a4fb0c9a17a013f218240f253060d58a0850d4fdc4879800f1110c20e6af082155411022a362c1c5e360eb0ed2774a64214b2fc20075f706182249020a249104c90fc101962430d30bc80852c501002102071c48b86193069c38b8b1082e0a4d69254c616ac50852642c0f002cc0e5ed0050b5650c50944f084020ef02242004b90fcf8d480065dcc2005528af8a00735a0c10bb858810a3620451305204014b2ec20072b50411623789264459f1e98962c47308210ac7081022c4ac001281260c5253e3d33302d35a081150a48008a27562422003e437a7668b9b4747e0423d4800630e80205589440041c5880029e0c11001f1e7668edecc0999901d37919473042106060a50b2e5080850838b00028149080274430c16b88263dd8b0c8c882911f5e5c8040c30c519c6882c9921b0c24a0891b1215a632b82d745af0b240b1007aa0eb00e500a53273280e773359a81a4ac3e9c0fd0b364c1ae80c5f0cdc0d6ac38361be607261c60c4ed5bdb4b8a85a68a46ea06638c19840b0f471a592e771d3dd5dc7dd63f093bbdfe0aacf88db31563779736963451c5ed25672d55783bb83aefa5e70771c5c55ca32f3daee5b4ce6df8a5793f7f5fd7d7f875baeb9d2c2afbf31f9fa7e4905aa1216eeeee2aad207dc613f232f6969473ff33cfc78191e7e3c7967366684bba35c5572e20e7b197e7d7fdf6243b0582c21dc1dc67dc2b83b005c55eae13ab3b44ddeaa520ca5ce45d2eefa5ae52acf08226957aef246e04d79da9e91767c19fecf5896ebd66f6764cd1e8457eacccab4b0666b3636bca37630887b0deee00f6f87d31bdc290e770a8089041f380fe473b68539f8f0d1c3c78e0f1d1f3c7cecf0a1c3478e0f1c1f373e7cf4e8d163a7874e0f1e3d76f4d0d123a7074e8f9b1e3e767aececece8ecf0d8d9b1a36327670767e766c7874e0f9d1d1d1d1d1e3a3b7474e8e4e8e0e8dce8f8e0d183c70e0f1d1e3c78ece0a183470e0f1c1e373c7cece8b1636787ce0e1e3b76ecd0b1236707ce8e9b1d3e74f4d0b1a34347070f1d3b74e8d091a30347c78d0e1f393d727672747278e4ecc8d191939383937393e303a707ce0e8e0e0e0f9c1d383a70727070706e707cdcf4b8d9b9d1b9e171b3e346c74dce0dcecdcd4decc6ddbabb0caee2ace0ae33ab66238738d1c89c648ef8237e00ff34279ad300defdc6dd63dcdd8693426796ce561caf2d6663330e9daedc698c3b7d77ef9cde80192308aec7dd53aee27c7039dcfd86ab38976fc160df3ad1c060dfda323bfe9f60339b36bbf97fcbec2803fb9668c75b65baf2c0030dc3dddf55d40bf7d777db62fffa5adafe9616491b8ebd0cffb6e147b222e72a6a82123c4d8e1cbfeb8bb628bc642ddda90df48819437cc0bdb56d478e70ce98c7dda9abe8127767b16ebbacf5904836c641db12d9a4ddfa6a1287a48f3bad21e39c7b6cc65b48b4bbb4e58c83686b54ad11f18ed588f4c978880ce30c445a227897b71cb65ada1add7d6b3797af9bccdad8b7a486abe614df772cf5c37685cd70d5dcee63d581c1557387bbd370d57ce7215b4d5e776f71f75cc4d09925e29a4d688d54471075e1ee2fb8caab9076fc1f6f632f8e364cd33ff3faca3c9215c9fbd608d76c7e95f548bbbbe74e6d54fe446756688d5e4735bbfb0cee9488bbdb70950be13ab3764d6613666d13e271ac36b75c73ec8e19e76c9fac2f5a32dbb6cd4fe2bbeb266dcd8e65edfebe35ef9f9177ef5acb58f6d59dd2e0eed3e90d773a833b95c19dc6e09d3bbd61824214946b9194e4726a82820750540c7d7f7a239e40791eaff4de1b610412f4b947627ef748981e7c37c208244c2b28cfb342a2f4e00acaf370ffad9028adbc15f7fe48942649a140e99e40e9564c1479df51ea75ded243b9190022f726e53aaff4b990be6f5a512a9538cff33cae6444e7ea3a6f4544bfb422a2fea51822235cf327f725cf09c721a15f44c54039c775dffdf4388eba265df9c07574a20005723b9489c944f7040a154e7a701531d1ada870d283cbb570713f9780fe312a10a8bae79e3e0eef07ca7110fde93d15431f35274fea0824e8975649f4e7cf18e741a11e447da6ee4d943ee91ef533e608f027057950314980314cf4c0c3bd29e60994c9c33d133df074ef2d431cea4f31ce934abde9f450268fe9511408e70167cc11a69fe0ea082a864c3fff88d353554a86ef7b7015714fe546bf948a719e53cc93d343791ed397629ea4666a95c4fdfcb97a720412dc9b5649dc9bdeb47a02e57952cfb504c17d2ae60824b83fad92b86f01821be29e42993ca60763a04c1ef04f314f98e881c7f45026cfe951b4a5470620ba4f7d10dc137049123ca9d511540c9d7efe11a6a7479c7ebe0fdcc91403c6304185931e5cdf4f1e1711a89c7819ae6f5544e5469fcaadfbf75a6400a27bfa432d4014355b80baf71620eedf4b62964cd08309f4c08928a0dcddfd9d87775ee9ebbc52e9fb40d054fa40d0643a9d50ee296f717949b5b8b8bcbca8543093725cd7795ea9f34aa5ef0341d3079a4ca7130a953aa152a9961617979716979717950a0666862a35615273c67481068dd4ace13144343c8688c663886cf88d186abcf0020c30d8b071e306a8ee1dc77fcf715f13be2c5f185e4389ba284e03c56be84749a552a8962ea6fb4d5d2da8185a90b47c8ae6098a2629958ac245bf058c426568479404ed022cbdad8ed9b458edd6e4d556ac38c7bee661da057bbcc91b5e9b71684924cfd2faa683481c8447b4da6eacc4d66a85375bd2ce444b2681e205455efebb8ae3a57d2b08495050cfeb25da20d18ee3fde1c8fe686dc3d02644440b221270ff8c73ee01eac1434888455af1d6df45b5f678ff9317c7ea1f61b248df27b1ae36e859a12df58b36d731b4e2df76b625cee5af7af0d07a95f57d1e3d84845eb45ae7b0449e658bb01179ebae227e9aae45444bda72f95b5b71c4325f5a5b54fb2346585aeb1afb96c6e1bf452b9fc49706b336d3f66b19e9e3225f767f469479abc73ae459b01c1d36d8ebfb30d863fda22d0f6d5d65f861b656c957684b0d7bd6d6787c1bb3d1f68b366ff23192dd240e6597b4b4fd30988dc81ebdecbed5b61adad8c366688a423cf2b45a4332309bb65986b7beba864fde9abe64a585b6f6796b6b64c7c7fb8e61cda6cdeef8fa088f63b5e26b3c7e78b7bee4ad65bbada8c7d1f5c3eed01a7d9da1e95aa4d51a2a6d96f9f09678ffd1b6b19f91b72ceb91676d7dc7870119fa01d396b6c56af3db9848da4ddecfd6c8926f43f2ea172d69fbdb58b3fbb67a8690fc3c2b5bb15a5aaee5633dd6a77996b6e16b6473c982d96d857e465e1b9bd9f7f1d639ca5a9379fdb4b21ea1c996b6ed0cefdfb672ac339abc32e15bdad663dd78e859427c721d6de1dde41d479bacac96d6b2b5fa13da5248579b43d2070f69d1dad0964261cd1ba9070fd91a0eb2475b95592124fed9a40d0791d9209c6d1024fef124e01e03dc5d089fe1420ea7d5aad6367ddf8af8c78a386cc114a106640897f95dbf358e57a6edac96afb25ada6b5bad5fdb86ad88c3d7b6fa656fde2fbdad46ba329bcbd738dea2176ddfa35751ae359bdd1d877ba90aee6ec4553c34b191c52a4e8f588df5c091ede8d811db91d51d310cabd5f1b1a3474c87ace2e4e8b076c7c70e9b706b5bb6a135f020c312497b1b73b58ff1d0167e18c19d95b1ecd625cffa5d7fb4e087155fdddd86ab7e48a13d39bbfa07927b5188c70feb0f2077a785dbca7ed0ecdfb716b3e9c7fb87b8531fb407ddd15982f250a283ab7680b9d3244e7bb0463856df9258fc5bb63627af2f6dcf2caa96145a44686d0006fbaf2fc36fdbb672dbf03fe12a1f64780f96c4b686354d48deb4cdd5740a425657ebd56af5bcedf1c6a5d6fbc69ebcd5bef6198445847bed0e899587e6d66a38bcc53e56c75b8df4cdd7d2f6df62395b99cd4f13fbadedaea32de20a89365b316332494622844c626d1e527305b219cb2ccf8cc47949b662462243b26d48c48d64378983903e1bff0411477b65fbf2903efbf26032099215499fd28633912b93d934e963c9d9150ab2f14fdd55c858c96c7711d247df2345b9d6b2dd7549916d43a26b112be2204af43d22565ba4e60ae45870f71d3e03a602dad6ee5058c7d206d56d8fe80a54730552e984ced29935de6db319efb6b55a3cb6f01989f3d1b65a676c8d8a301ebae2a275f23bd0742d82b7153730a3a5c5456bf78d275ba05d85b06cc65b7fb6a59017c9aaafb6a49d691c5ab13e69cbb7e20d13616f6d96cdb0f07e1b9295ccd608cf1eef2f6daf73ecfb347bcb5c32cf12edb6b7df3948d97dac1f8bb75aabbb8a758c5d4de252dbfcfabe109f0f2b2be3b1e2b7b44d0bab25f18ba3a5fd266db8e67a96c65fd6230df4a2cdf626569b47979de56a04e3212be220423626c91a44b44521366294adb6411bff6059b6b62459e4dbd8df6a6d6b1b91583f743d6b7663afefbf0cbf6dcdc84be6ba64571bdbb9da22da6a6db328bab228baee1e6d47f6ad5d2333f28a38247b449f6c2d90dd750b15657cb4ed8f15491be6610d01db56bf60423cde6f69610d5f577dff963769b5d5bf912c39debaad90cfb5dab6421bc9fe1c20bc91c167fc57880a740bafec666bf457781bb3c2c638bf9dd58cb7d08c8290a9049b26eed6e8dad8e0ee2cb1f65bdb6a5bdbd9157f5e2f961ec71abe685f8649acc7b106b991f508c6433566d3b7721471add57abd7466d9d8bc6aaf564b93f86ad26e249bad15cb7aa48b423cbe6c98b14c67567ee99a6b49e25a0d873636736643f759dd27cc7dd6dbbe63dd191fa9c9b55a8d8d6cc74db8e3c687cd4ead3e72421d3931bb43e766e766a766db995867357626de1cab99e9cc8addb1d5b259a3bbabd1cd567ce93a8ef5450b778d8d36246b101d9ab803e0091d8ae8c0e3ee730a0c7000c8051478b1e3eeb38705088124ca01289085bb4f2635b841151b42c80114ee3eaba4103024430896e0e3eeb30926d83093bd1f1e70f7d9022e091c04e08b2268ee4e0d00001a1628c20d308881bb735470021123f80017107082bb4f1e6a4030f0004a130277a7467a7a384213399ab082bb73359eb8f2840748c9e206eeee45a00163cc2f5a5bf0c1dda711a8008511643ca0083beece4900f6418016032221b8f760e118d5d4dcf6cdb504aa854c6e483803ddf61def4e6263357bc41add1dda71c441b29d55b21e91556b24d78edc64d6f2e4da112cda84b22dcb9a9760d126a4371e85c88a47f108e720dae6ca354827296b42b2cd3557a04dda6c69a48fb68d21e96373a509e99a2b906d7665240e42ded9cd48806a29923513196b7833defa16d1e5a5e94ddadaad0269b2e621ad6d7845d2a7acd5ad639547c89deec8d9e14e75b8d31c1c777a63c372a73534ee94c6dd7188439cf5cdfe20b33676455b2567bad65c4b12d7ae8dd51859f36c66876f208908a06b5bdef64b86078e7423ba44bbf18f586d9123fb2324565b24891571908c45f2fe9071b645bc0c7fc6fa1a5df16bb6a2ada32d1c6b58d6ecde3500eedec355b72edcfd06773a02982040c951e6d021870dcf7696ebf88f24da54386851b3fb0e71150e31a45ad3b57cf208e75959b3bda5edb2968b94b54cd3d6e6c4068d96b42592b2968bdc0086bbcbfcec6fb17d6bd9964f56daceb8c683ab6e80e2ee97b4c968d50d4537147177203548f6494c7e7dbc7f9356bfbe8f430a2a1c60c8d46cb58b546b7866491c4f5ce6ff67bc2ce1ee38aec2a103078cccff6ddfb09635fcd19264a58577df19b6e451053a1254e42d6d6b5188ec4112a4b5add2907a96f424196237aed9a0b186d88816653224e411163223ef8cbc62ae384622b163780badec1aa9b902a95656b8dfbcbeb75dd62c104784ac9e5839f9db48e2d7f7e5a426d23c0faf57b6b7d5d241b295c96c3c315450c564899980b609d164acb61dd61aceb217e2ee39b82ac61523c377e13caefa27b017ed5bdab663acc2b235c22f1b5ea36cb5b6fd6d1cab8dacb5176db6bb8e6f634fd69035569b788dae48de27456b4324bbed4cb4c5be89bbfbe0aa9fc18768f2b688ab9fe6696aaea5d636c4b97c1bfb71bc472f1a5d1bda6c8d2acdd6b090bbd3e02a1b9a604315771fa2c98b365f9b139b9f66465ef2d69acda2a585d5e6d7f5e835798445b2d29e36a4b2e1091b604334791af1be104d58b686c36dc335aeb2e1dd5d86dfe83569fb4201aa1aa4c03a1284c9d75eccf5a84c22fad859d5da1e4112efabb4e13c13c95bf4da48960402c48fd02ab15a26c32f9b7178cb9bec71f71faeaa01c85dd79f9157246df976db428b641fefafb996ef52d56003934796dc71150d608c36d1d2426d73497177b15a9a0e57d120843b4cbcaf9a6b097b56cd15e86b154b9b1571285a9bb539d9a4bde50d6d0642d3b588582ded153ad9a40d87af99aed922ae7ebdb21549abedacbe445bcb5746e2b02c6bab8583d4b36f78c7b2e6a3eddeaedbbedb0a595a90b11ae15c962e2b9238b44233f21685954724ef0f3be3984bac96e6c2443669b5cd4024be3bbc796b1b8465a48f686f690b432436e320b55bc72062b599b66bae4065595f4665595f19ef3a8e386cb56e8c80ccd86cdb959c5da1a7d9b6525f2132bb6e4dd395f6b2bb8a57246ba86dc6e18b0402246325a1550244f4d9a4ad91b3ab750522fa08b9fd08ad127db345af5bb64638d457d4f6e66d73ab45de4a0b6baee56b63b1168db80cad88830001d2c3f623b44adca90e7307e28844245d7adb59ae43379ded95dd8d7fac90b5b3ba8566f70889afce5649cd6e1f3188dda40f1157dd8055dad7276fcdeefb769c9157bfcbdd735c75e39d8549d18613dc3d89ab6c4819a2098d104d9e358ef648d7a7999177eb7c652fc33ecfba8da34df676dbb1ace150bce26b2bbe0c3f2ddc956793f686a40b4789b6badad106d9195983441b41dc3dc8553044c19db5b59dcd6cfa376d766b6fcbdbae9f6dac6623dfd236cd104d8468f296b66bb659aeb4fd76e39f67fd91fd113ab23f48609001cb96b7fd7a93d6a8c7dd5d70150c1570f723ae820108771f72d50b5a7077d6104d361e358d48de22219ab0b4a5e93aeab7bb86772c6da268f7d5b8b4e226ad917d7d6943cfda78d43f135ed90d6da96b44f216c988647dd88bc4576bab61b62c2bed6122798b604f5aa33b93e117edceb8b4f96d485a990c3f595fdfb7d9d286361e856ced0e599b935a2211c9fbc3ab2c6babe50387078f9cac5b2d4bde91c4afda0dd2f6ba8eec8fbbe770d50b49ce126dcda66d7e01c89d255a6dabe5266dceb620eecec3552fccf0219a6cab5f4234799668ef5896f5496b63af2bedb7d57fdb3763dab6d53fb23fb9567bbdb61dc75ababb0daeaa1103f7989bfd21bc63cc06f40218d2d3c373f3ba79e528b979ddbc709484fa1eb176883bcd010ae7ee9dbbd7c0a961c31fefd7b33aca5eb433b2d2c212bfb5917793387cbc5fb437efb76101b81be1b497bb9bdc95b88a4699c3ba61e118f5f020091a12824d9f534c9d593686f3d637ac1b564e0d79c76c6b363a727a84d6474cf4e12347270c2d4e4d0d87ac988db6efec96b7be339b67dca98c3bcde1aa2269cb97e1a1a02038db206c1157486f6d6d4e5cb77a94ad482629e29249b4c5428290b644b2432b93cddcc8fab22b6374951cd91f16796f160b79168c07160bf67646d6232c92f768c4f95958465e0b83d1ec980d8b4f5e6d6f0e4be29a5bac4626c339c87dedae46d707c8f5fafe6c6222c01d06baa8daf2352dcf6accbdbac34a5cba7b0ff7e9c3dd65aef2800b5eabe960ddd4d490b7d6d8b128db5a4dac28acbb0ad919eff2e6505b21bb5472dbe2aea50db2d9cab6c646b6b60911ed1116c91e1fa47a843482548fb0487cc5bf8d6f4bfc479634b2b5faf32c91a4b11a0bd5b01eff46ba9ef5bad6d1a6f57dbd2f697b7ddb57bc3627d78835baa3abb4f6871979b7b64a66e4ad5688b63888b5435e2fd26e9b8d7029564b0b49d9ebf5da56bf6c48d6ad7159aba57e21d5da6bdbf0cbd6ee7edd622f1cbe5edbead711a6e917265fdb6ada16efd1cbd2c2176de36c8ba82ffdc2a34dc4b5972c1bbd5edb6aa45a7b9535dbeb8554c7bd5f2f5bc4d51abf6a36f2955f48b5f62a6b97bca42db1d578cc2fd296f8855bad19798bead6af521bddb1be4a6b8bc6b1beb29591361d6b69d2a7e51c70f726aeb280075c67964dde65b6e368b35ae64e8bb890931c239b30eb5a88f47277dacc119922b0af212f0fec6b9e65c98c9fd682c1be860636337344a6c8d3f03c8d91cda50cec5bb522f28e418038f2fa499f899a11c3142e1ed91f96b64678bc358f333b8e97bcb8dc75246f0d892f267758656f492b92b8acb131525f7d73d8f696c357d192d98624d6b7ca5ed79f116dc632d9926fed1dcbdafd19b2e24b5a9b139beb9067bd48e2f046d6dff5261bf5be4fe21f5fb433b2bfc9e88d7f6aae402cd8112661309cd7e1356cac56b447bf6bb5b55dda30acfaf5db3124b715a2cd6e118c87c4110914aa275a9c95ad7e2c628d6b9bbc220d4c866daeae5a77cdb666237b762dbad9a2d762c6a13862dadf72c577937794c970aba6761d9083fbb732795fb510a901581a8085eb6c2bad6e408f06dce0ee95b4c9be96b5f6351b696961ed61693bc6aa68757898e8637f80d92224fbc3d242581af622312cb3f4cdfe90c36abde4c54b7b6defd60b30c08cf409b1d62efc73b33f88fa667fc03ff8070a2fa0a0020a0de497cdb7446ba36d63996dfaa533cba6a61622d9d442a48c6b21927db55ab510294a16a238c1dd510e5386922835f8d6bea2cde1eb5b48b5f634df6a657b73aeb1d7ba963ab3ca9a686353d6c4d76b1c2b7ee9cc7ae2c8fd5b376d7b6dab7566e98cb328ba82f0104bb434a2cd77dbfcda092e5876b489b8f6fa8a3eb5a31a24563c7a3d269713aa269a08e37900f2df6a4204eedae6c4bed6b71207d199656363536bb5105002168ed1e35dc792b46119e92392b6213603656b647f5e4644518868958856e352c7ea35aa341b7bbbb1d1eb72b43422513f6b465e3c23f1d33c6b5f9aae34d7b3f4570340c1002590d1463f23c3fa231bffccc8abf53db2b192db986b0fc6439a89223061022630e0eeac199919993fb23fac11e7ad6d6f479bedd1eb9db12c871cded2b6101fd7b35e867fb5ad5ecd687bf71d6f786b98c4a11d45b2d6b2a56d1c93b1e50d7b969d9147ac199a5d65bef5da5681b010c643486ef6871601b0b0c86b33d6108faf45570f1d184dd722b0a781c19eacac191d9cf096b72df3a2857d1d31ad9236d75b1dad58636b770321d523acbaab0c6947d68c8c157148da970e9fa303f64575c332de611d425a1b6da8c6e6f22bcc96b721d8cbf0d6e4b58de5e7e81045b1fe2ddbd2eacac3126fb608362323c3b688ab31ed2863d90dc91a657c0b676eb648e66f48b556696cae7a66472bbeaeb41b598fd8f0908d7f36feb163ac92496e2d5b20fc23924964a315c23fafd7eb55737bddf60de2aa239eb8d1ad46e2113f7c46e66b6e757c7d8d20c38830c83a5a2cfe8ccc1fd9708d2c1b91b746968d860429a1e95a64489012bbb191d5780ccb9735d2577c85fa6537266fa2586ff622e15c6a1baedd484cd64ddada0e2d91cd627d1521451152401616a434e1673c8014a61eab190be05c71e10602585ca985e0e881084a013200e280883b1de24e7b668f4f57162b1e6f1568ac36a8d5c2316ab5b49022e5a5e99add3e3224a435a2c7d125cb4a74129aae4568ba16d91807e95ac8c4caaa9068457db33f5c21d96a9bb18cf4a1edbb44246d386823d99f7cc4da211bc9fe588d476daf9e9197b465209f6dadae34a01e3d568dcb30e321e41116478c83e0d1675ba1aded1d73edd978142292a32349b6da9276572347f8a776ebb8856ced6620242bdab1bc79080f89b616d1f6dab4f6d9b96e21d1c7e621760cc924db0a8957c846b23f5adfec0f5656359944dfec0f5b5f23dade3cb491ec8fee11b5bd2496592137249ccb5748da3049baec8cac63696b77a8873573db0f0bbfe67160320f0b619fedb6b59a6ba96becc836bbb2c7fbc77a8d6ede319ccbd7f76dac87c7c513ab42c4a2f0e6984b579a486a5cdeadeb4823c3d66a58515863e35865367c93791a6d63e268ef6ddbf02d5b1b10cf22f197b6172d59ed18bebef8ea5ad6b2f647b8c8b374697b4bdef1566b34a22dcb5ba469f4c6a326afcc8a42cf9ad1595796655d99172dd295dd4a9c3739625c56bb04f68353f303a311adedd2c0604fdedf334382947cdd39482cca905693b78ee5df72d5a4ed67e42d71f93636d6b0d26ab22df59d91b90d3deb568bf0cc6e21580d13244b869e45de90d9b62d89b7bef56d48227916acc810919f1e23afa19f9e23447a845e3f487c868224091a12fa4112e415d423e427096c666bb6ae3219b662cdfbab5df2acbc3589435bd0cfb3f4b5319696e19968c7234c16d590178735f569a14ddf72ad4f9256635a18561a3b96b53ae459e54c0d89dfead1fe8cbcb46d8bee2863b3ae3f23f1f8583f4db646f608d39e468f38c41be7f2c34b2b6b9e915700ae23bf7d9e55cb767f78c75afb1a92d636cac8bbefeb3ac66a75f619cb8690fcfc90509223b6d00a3d009e95c326add696ac6191ac79bc9bb4fdcdeb6b6fa3a5ed5d91ec735c8a7697b4ed6ac5d8efd02122e7e90854342568234b63718c557dc5d7f79550170d69addd1dfe38d6a37af4e4b579e3513b1dba0f1bc75b04fb8c1f668bea86d9a3df8116e2b2c76911d66d5b59d5345d7338b361d2eed0b1bdecfe0e96c43924efad1e8d75878eed35d7c3dd05e02a9b72d8c6a310acc7c62a0f67f31957c988f0dfd516fdcd16b55a2a190df7199a9b2d92f1cec7dd4557d90ab8dfe4e4e838aa41556b1bab311babacfc22598f9e465f9f67691f20578e9e23aea02136f137596fae46fbd2366cc43806fbfab7d11a5d203332b0b7b425afb3e511471b0eb2352e8287f0be62cf1e6dda068997c78ae3e8126dd06d1cebddb9021dd925a21583dcec0fac9b2d9261a47ae48fb06063bd3db0dfbadaf1771dc95b77b6e158859e552b796b332b91b4c9429b5bb98ae52013ee7a738973595698e8037b3bdaa2b0e6a167e52a7bacbffccfb7de58c6565f1abe7f45b1be58695a246d32127fbe43b6ae46b6ae40a48f48f6d86cdbb621a44fae43301e12c99e71ac35218c877aca1a04df6c81acaed6484622de1edb104de21b04ff08c14337b1e29a3d62f5ad4147f687f4d1dae619ce40a4cfad8e56882c2bd11e84104cf05bb646f6452bda9816aba5dd6a359b906db50dd247423a48b4a2e86269d97d9ad02a79d18a9686889a2176e0ac2184a85d91b4d1b0bee696b7b62159ff85b8d320f6e6ed4e79dca9cb9dfa4081b86a081ad5104f7970a73f60ee740777cf7693d6ddabab9a80c0ff439b8873a95f319cc59a26372ee486a48535eb56ebf5b2bbda1cda6d8bddbc491c1ed52cd2f63d12499bcc666b3462adafb8af68b12d0a6d68ad9628569b673797b9da3144000188104018da8e627dd16ed9a5e925ee1eba8a09961b1d44e43ca9ed7823eb6b5bcb15a8a6332bcc61e5d4d4d8b1869ac916ee2ebeac9531a9e28e65e47d4971771b92987c314172d7da8e2f26e28d891177263bdc7d5bcdc4c69231dc5ddf6cd11223a8965c41b2a415eebe6402fea285b8b44b9eb8fb12980ce35cbec823fcbad9a297dd75898cbb93b657888daecd897dbd96a8dcc5fbda56bf9488e1dade2ffc16fb80bb1e2d59d632ed75a5bc9cd444254fb04cc9a89508717fbd60ca202533f82b63d92b0919af2460b83b89af986d99240b77fd4a22c50bc68b2b4f3cdba28c8f5e32194e427b5920d7af243b5c2799c1dddd5f5c95a4f3db589675488cbaab58b7ad0dfd60680b77ef9ccce0893204c51f6f9ccbdfb692bc2f569e212377cf38e72aabe2ee2c570dd5a8362716e76b44f68cd50a699b26ad2671109b8136c641f6e6219f7bc625a984dcdd67645efab26eb6e835236f8cceac6dabc574583939ac9b9a9858636fde9e0582a4e0b06e72583735a135da371614f49af15d71f7cf55414c9cc43756f3f5dd5d49cbdd27bd417186e0f38b4d6e8d6b76933557dbcc1edd626f5936568cf900b9bed6c7e48bb66563db16ab09f2acaadf1e3d2dbc3447781cb12c86432b93598dcb6cdbdab6c38a64dfd2d859ddfa6532a4ada47d91aca21d2b39bba34dc4b58d84f3dfc85afb234cfb24cf126dce47433f23af4856b23e7e4be26cd3a47dbc5dcf82d98c5f2fa45a63c1740effdfc247fbada6ed6b5f866b348dcd38dc78b4b1df39ee5bdad0b6c55eac6121d8dfc69b6bc665cdee20cffadb88439825f10f8ceca937373c9e87bfe1f139fc8589d5d26a11c6e36b46ded717efb2acb59ba5eda785977654bb750c7f46de1a0e4bdbcbb0eb59453738a40d97b6b7b2aabf25c35f65bfc94ade1abeb9b9c1a9b9b9c1799adb18ab3a5b243b96778fb6dad76cfa6deb03a158a8a46d33959118754c219a111800000002f31400303820148c4583e1541694545a0f1400096da45a6c541fc983a228456114a510310a186008180032322332a30d081d7c8cc71e1782eeb30611580ade55d402e2f5a70b7d0d74e0268412b29cd1e85c732da9f4cf2f81d2708a9a21fc61fca7385d7f43400786a4609daac4e078e4c9d2f350d5deec15ac8cd9f5b467430891e835e15160227a7033e5f23c0284ae30c11565ed22116dd7d119fe61b76ca7a314a10a423a1dcd2a63918300af4042efe6686ae11fbbc70887d01825b9d04daf82b4b70fb674b0ca54dd6e43e98e406642704c37a53c6163087e5cfe3e5f1d21a5acc807089d85676531b39368130ded91244e4ae1b19d9fa6dae4b0e011540fae7d9c93bd995f9e38e7da79141216bdd836add33838f4d6d8c068795c49b5002120f46f2d75b2955c03bdf191698138e7521a5886764a018918cefc69ef7527d07f5ab3baabfb6d5ce13fb1992e465b0c4d0e55af2e5b04dcd17eb1c64262748afb595d168d90d696bf238302e610d9a143f747babed83a008549fc18228608440ea83e441c1520442826d8872b8fe3a9a089c87374670e48460db6a203ba1df55838eceaa5a353ecdf8a2dd25b3dccbb8801b1a2ea3ff899856f3be2aa82d027812e743df11b82f12232d78015bd0a13baeec1444fb5dac6d6a86606c43ee21c921df8d93bab9935c18e14a49be7b72ff071dab46afa157762cf2117786b508d9c465a4fe6edbc8926964f4f20b4b281254acf278f0b38491e836e46ade5aea98aa59660140ae012340a82076aee6a9f22b711269dc997369095699904899e6c2c50206c861ca233249dd43d44fa7ff6dc7510e280c630d18529212b5d78ea0ba760c7f90003aa56513827f6ddbb9e40f74f1fd40ced48de570659b3210054ef3ab23a208c5328fac1d01705fd60b403432e28a3c0b4d09b6f64f0a7340f819b0e396fe4c344db685a8fe23d1866acb50a520c13a54f06270499dcb93f1f03f2e416f9ab8430f3ca59b83ab08a8d6e070b51874b8000e58c006d553ce353b33c9b3cad5e3b9b4bf577ca627e655404d8dc6a535ffb716c7f1403cebd9ea5db4ec62558014ff6ed187baa2d9cc0460e1140c246bbf9d9f064d7a2c80220d0be62c731dd1e6e1790e5a81bf2d8dc25b2ff0f0278b1e451f3f402c57bb63906696fc1de0d6ee8c259392f7f86f040e8dd9bda005fffe59b8152f3250943c460fbb8df44026b322a80c139736fa756d2c675ed82300d4b98353d65ca9df94db06d8e1c2c37fd27944597beced87a9587fa5412343b375832351c6aa2611780ec3b042c39b3404c7dceff1b94ee2d4139884533d434f66602a1201bb3865b114c3e16a68a3903c59513abf0932243af05ea0e6a2b67274ed21fe74ecabd51d7cf8be9379562780decfcb0d3187258ecf883ef15cfc500101ed8820069bd23b9be2d07fd4be0cf4860697914b2f96e8cd80f0561b3bb6536ce376ecbaf1a2ebfe748340e9489bcf294cdaa20f104ca5a1efd7e499fce8827475c664660733939b695ba59a84d27caf3b1900cb17034e56fe1dfbebefbd0396f167f803e982c7a4366d1f894b2ba8c40db258049551ad2cce0d1ecf210406bb60ec6e9f45501a6a1965d374000f7db7d24585fd5a5736494cfe4eba3449cf60c90543c9a642f336521f864af95cd919e7d10bff817d8738a61c7c824518d39a1f8f87cd7e932ad3f1e380b1e646792437d89f98c09730b99282d9a9e5a591fb3fd016afa0ef4d33e4bdf9dd695fe0aaecee15ac3b279431c84498ef02d152398c94615d341b64907004c55f3a6d51d1e0a701fec5dc6f008280c310b0b025a050195587aea5dc84ab7f871a61c4bcb667413639ce7650e062060a0fd060df2ac8758ad7669798bd0815a75e5d49aafbcc5eb198ed57cbbda3250122aa25226d2481b1a5fc1729f25f60a1c497981d4683f1a31fb300073ce00615251c4e78808227c121ed27b1f96ee39edde489403888d29c36ba06fa1779d075fa4fa7ab890e09b8c6d216b82de96e9ac2105f55c49299b93df3c0db9912fe5fda9d8e48df58d0f6004a3b28d24c67339fc06b0c3e646dba19cc05ba8555aaff0c2ee6cb3b90e77934a0631e57d9879a3a60dc94e9d389b0834c22b49b9fa2f3a80579deeeef9aafc0de480ba9fd2d10775fb093ae4556674ec79c3ff706ce97dff4c87325299e594d853ac6bc29a2a9cdbd41bf94ae6e0b034df4a6fc8ebff175ba84ab949d9fddc561256bf2132e82fdcc8fe00e63040e8cad82b0d12f0fd33889d7709a12ab76b6f10fb0f154b73252418c4f387b6f348266485579480dfef59bb3a102523c3cc5aa75f396f2064441495a02743aa3521288e0317f93e39985a8dea1de6cff684236296a42dcda0c7f155eb61189ba49bd061eda72001fa03b54cbe41dfdfa6e5c93298166df883a4f2bd0002cf1327b29f702b510de32f82737a278fa8523fb1ef5d8b86c1af78ee1254ad9d644c97fdad5770f7723d1969385540e5fef0d776cee2096ea3a04de8a8d65a76ee0fcb39ac51c431c865df4e5a87e609ed788b8b583507b4c88391288b698944bb08452337983262cfc984cf30efd0c6a6a30b7c183310481da54f6771e92c44f5abfc4344e428a435607eeba919c00eee5bcb765646e223c258c0ed5d84358285cf2a93fb773e9e3db83524613cd12ce683485bc6f18205245d8d55de943b863855207f51d73e0394c4623630e812270c85b24fd20869afd1e1316f7c49eca0e7214730193cce25c17f97537bbc0834dcba9a75a06a488b22f1c41852dce5cf255f861822af08e5c329a946799708ce550f25f31ce9609c5c4fbb54be235f9279352e99655f749e811720732f14caf6f7d6876a0657fd3b499c289b7bf886f7da786d40378867c4b58002cb9b12275e6ebcc78115a8fcf5f2e75b7a2c097898cde99cc78cae1d3f9835314e5d76d83a42fbab87814dc81c061fe1610060922df24448f93fa1ee16e27f090d04fd84a3d330e67d56b553e4a5c0ad2de1c274d6b1094e6aa6b419fbfaa8de2017864205ea24dcda7702c05c2bff1d8dd1afe02f3fc1bd55c795d995768b0961465ef5a79f7b986d86dfeac3ca576ec467c65094913e25b9d341837464d24db8e2430b444feedff7ebc71cdbd1e54e00170157238cef3e8bc7845f81b72ab8a97fa066fe0f516631319338b42230f632e767b4d33dd15f30a86d338b5f808d40c1800ad0e4da75813a4d71184117f5b928f721831a4982830629c2844a588524de062aa63037bd663efe392fefaafcb0ba1a59b59699223db42c0a99ac8612518873ad19c1f19c4e559b8cf4197b5af241a0f0bd3c0ad4313385687aedcf280c2e95d176198a6b918addfe1279f39a095cd025df26d0306e7f24d814fd194218c1564c188cf748833a0bd98513edc4779b89a217a57ad378a0c3992ca64e191f214ae7254e7e39ab09f56fffcdfd0be16c650d2e78fe11f3785bb5f0939b60f62b74f5caf2d10573f5c14ba615d6842e2ca6015fe9b0be5b2ad5f9ba46a637f0120273401a9cce32fc06dbe5f457b4da9b1294f343bb272430b018af370c63c151c8364099c900272a0c1092ba804bb4f26a684e110a8d21087e6f5bf05eb345e441a35cdb38d24fbebc2bca72c9341f1adb6745e477a4e2e0763153840a81fc5b506f8e68125d71afa845aa5c7de0af5779521c0fbf41777e08a2309f1792b1741a87a8d54b4d49b996d5c307403f169c5666a6b4c2bffc9a4d3120508ad0b9a46fd69f71177a8d20ec052032d857c1708317b93ac7a430bd8dcad22e5afac394f0d72df52e54439970aea3273c0e71748d589ce679e8b19baa29de956162631763b3491180d47288058da9d9a54c8a3a486b0f8c9bd35383b9c7485bbbf3bff43c9f583913ea6ca6daeabb81b267477824328d3e69a3c875712d0d4520321473c2ffdd90cf0e4ab9798f3ee798f892abb4fce7d665b4ec0f0c6d432a2988ca8393f69f0d2dc07ebc82a12269a2d2fd175c7ddccfbcb27a310714705350b27c70e28aab98f6dbced80950049c2d061a53db425dd629a7debf9a66d11efb4223d9883889e46bb61658c13971351f811fb36ccbd909342610a6feeca01d09a293cb4ce236f8b54452ffcf52d3180ab08d8c1c3581b0847e8c318115ff7345d09922f86614014be5c7942b35c5342cef0881d30789dd35e6c1aec3667d7a74c2ec94a2cb435f0a982b04330628e4d695ffc525b5f0ce4d1ed6c694b36bb6ba64fbba772789986a09af263aafe80c001959e884441873f7592a8bc48041f0ed68bcfa48a6acd1c917471dc374fb224f9ab8d0449d575aa52aa62c22280484328d3a170a7a140e9d3e44f33e0459ea1e8c1307eaf969b618f4958820923a2fdfde5243f79a1c9a45dc5b65f27889a51b04b53826386a77d5456127b81584ef0004e829d6281e430e855cd7e9c2a1cf290d3c901faf216a2731a8595f58cda25e85fe21980e49601343d3caeb76a1843239e6726e17535876bbeb04efe10358316cf0b2a3a8b9c8fc916a68532a1a0e354604d75772068f0850a6ad0a9550e7ef6f3ef0fb571675c8d846a554c7a52c1a664f1d2305a8ad8adac642dda4e7a70f6826d00c65c53d8ae42930def13193466f16a126b36c89e5dc1ccd4d6c521573b1433196545b982f700c64523f7ff9bba8377fbcdb6618f731e02fcd8d1acc9f3de6eadc93a666386a16986edcf5586265e478f4e267ecb2d9693a45a349cedc89c99786905d8961ce25b454092abf1f1510f5b22b01f4ea8a6cda44cdcb7ded7009247cc24566690cc52d847f664544de88a5f37aa751782661b396d9cb92aaeb9c44dcd81809cf91332f40d24e646e9fb2d7d07fec637d72bc454b3cf423bfa56b64ceb33836aeba41d2d38c141a5b496716a0758725d74fa28963362d1840e8b59aa09c77986b8c57c81007b42631b432c5a824848ff8f047ee41af1980888b675bbc360b38a00bd1930eaca6ea48ace7d6527565b55cdf4895ed2ebeccd048d0b27212119fc285e4b2cd5b4d6de5b311ed87849e0cbe2c70600697f4dc9a6be2c30eb468fa3f77205fbacc3c2ab1f8e4e760ffb87b5c8b9a033f94a12a888249d977c411bd8823c7337ac3208ae45198c8925b399c270194cff08cae66d15786dcbeb8ed9cffe6befdc55b0109b01a295686cce1be3c928109880daaf830246303b68f407fd424f5ee7098ede43a00944ea8d19ccc898e26d9a8ed5c59f73cf8ac5600589bb240d228040b740249b9bbc5924754f63d4a1584e980116fe1c7bc613e0a53317802fb1e88e2421aec24b9411c4930ed308354b16dc44d1ea1b29e5f8dcd6444727ff0ab9976d8c4ec1d05221caa89b4294b26789a24522b36b26e8697087986b4ddf8f5d12077637bf6514fa83c743d183d068a75aba2542b6c76b1e99ad8b247d5c90fb9d2bdcd905ababef1faabd6e8b932c085c5105ea01ac1a730ae7b10279251dd68927c1c48476ef45c13080cde529457e13234456885616463a3e195a0e97adb787a988d3ccf6ee20a046bf7d3e2b2e3ee9278c63cbf0f7865cf780e8a7eebba842b67c2eda070d7cbbebd42b64b5f12361f16fcb5205481308aa86eb428a15f82091eb914b0572ed2f47ddfb1cd94aab8910d0dc130ff16257cc3a0921a04469bb21c039a3146e2671022c92927fa14602842363362fac2f111da0b4967090c32a94519f30b4421df87272dd4780357f566a98873d81e7726df8cfd9105ef7361a2c26b3d743a12d8c02ade393e89a2306fa9a3bc3f9da7748ef8aea441258197159b1c51767fbd90a18dfb0d8599b5248022050b13cd3222c9841982d1927946f49329304c424efb7f5d243696cd5d94632648e4027ee382cfba1897b96e61103807a89f4a767614cce3cb128357cf195662786245431718f407268bfa056d1ef1d95b823177b9d8af2d66ded651efdebb1f73037ae1ae56707178b10a48cabdcd87aa9ab7fc6c8e442f29410796c9d056ace2743d5d5f47044a6a0900618a9ef84f0d01ddb56dd99c683970989547092bfb09d59552800d4ebee991354424f7b7df5ce8229a1eb2d3da69ea20d00ee60695f197ca75a22583abe10742fa3a305e76870f2ec49dcd39261d0e576887db4289fc77238cb995ea1c55470634db4f224a46996eb10f823379a6e0b5870c166fc39f83cf537c17c0b3192d2eb6188917c796ade67f10b780719a6d532620322e3030c58a8e4f3a13ad39a24e283ca23b55dedf404a0aa771c9f904938111608c7aaae95f4ac58399bd3f620c23b91ceb52258236aff61e3ae005314405303ec7dc5e415052e7ef13b46f9874c69a1355fd43c73501b9ac27dc206d83ec14d604e87270e6cce5026f5d0b4f1136870fd1b1a65c07e267804b2786b6a8d3f410b76af56aa265a841dcfba1c539338ef898d45dd540a4524721a5e173bc649e89262a1d2ce884ef6793fcfd374fc411710c2a9b16595299c502f550d3ca3883ca04d338449b70e8b95c911f200a241ac1df1aefd83f1509525b7bb53ef6039fa430c9f1d5277289cf922177def00747f396bea7c8b49215d3e76c0295618f8f16013369366feafd5769e08414c560e50bc28c003ae0f03445020f2637418dd8b37c2fe06404a7f36bbfc21b94e8906e448de0533713fa1a6d4dc43ac70b72a20d7d75dbd82229f6a0456532759ff59c589b6775416c766d07fc5758edf26b1ecf7f21a09ade464447d09a41bf5571622d49bee8f4a65ce701bf9e62b44364f2017eed02fc195c7360d146b0a96f8a84cd11f82d5b9a49448e41c399467c73fbcf4a8abb593c02667decad1afa584b7cf51046f3d25cdc2d21cf3fc22181f39a86c407628e22bd30f3dac814e2650076cd93c7b6257627e60598c1f714001cebf75d0f657db835b88c5ee56cb1abf7f26b375b49a333283382b76927bbd644de6c65256eca2e0ce22a704effe0712e1bad1fc0f955720616cb774c66eedd7258c13aa456b9a2f81977be81e812140b1c2e9dbb1592c83b9de624fbfc1eeae31b212b3f1c50e6e26f023bc21fd34b5c0aa3de23757450b1d3bdf7345fc9a69af8c2f9911d32ca9f0491197f07db8d1c87a174bdabec38eed3ab7559c0c7d755908d2c560bc4bd2ead0ff37ad85c3735ecd69fdf135b558947671b150129ab8c6b52211923eac6ef464cf8bf7e6d1467e9a5682e5320f082757630b4ece2c40d707db6a3d42b759322e211bcccbc29a7c67d5394914e7d9046ed2d8a9ffcf4eb091632da6dbe67e80b0d55a3166e6cc6fe9cbd29ca961d417b91d1d4ac8a8a509d445af97113ada376cd83a263904590ee29e007479098c84837ed35e14ef7c88684d3890c796f9b01498ba9f34124089a8367b3ba2280aa81c0f28046996b31085e9ef215da562be89d836aba9fad5cb23b2076d315ca518e6f9cd01e096d2f93f5eddc772558edcb58b1be01ee79851f98cfbafe9785b1c0100ca379e301ce58aa175329e19bbd5c74c4efb76d0fb1ae88e70fa5350469de3b68c987287043c41a46ab86b4101b2245b9fc2ec443d91be1524767fa948390ee7470646327d79ae10f8bd18354efe1cdf548ceeadca42d6d43b3b424db10aeb5467d48e565d9d68932b2690fb10668ea5383525ffa21fafd75260c7b2911e56169cd7741ccf228d44fa78b3bef8425ad1b62d4596b3737e15d23e003a591a863db771788e54a798c2b9656d52cab1b3684d99315c6d5c55ead2a32c2e4e8b0b71f0782de832d0381bdbe33e39be7c3390f9c1e606f7df90d47b12b1f29db18ca9e52cbf91b1c72c905361e008b9366e109bf44f8cc572c9420dc70406bc67483b67da9cdee26c13f46f3fff1897267a4647597db2d0bbba3a29e89acaeaa818f9a2c786fb867f91516439e92641e3c6a1777ef2446c46a388db420cde4936e0dc62882b705c80329783b62b4a96bce76db927aee11b7123fc461243565a13d2a1e04ccf8a6cae6147c2e7e42acb8742e8dc4494488cf04b46148cd1f9163240c90eb8656321ec09ec957e777628f7f3856155b5ee569584c547f80e740d87a9719e39f27acfd18fb9f749884abff9ee99a24173f38875aa110c1b7acb0807b37be3d567b6b4f0ca181d03edea2872e5bddb4333af5230ec3009e91bdf0f38c38c5c66935715371440921116223993cfb42809b7aedc3eee7368c6d0d0f172a36ae53ca77ad3f6f386efcb9eab5d66b3bd5b519fd534af9f3cfb284dfae2f65fd9ee5ea4b1a5a5b7e75a1d259d43a3ddfd6b055efef5698e2563dfafed059e2ff5a7a0621e9d56f8f26d8f448aa3f441b3a11a07bdc95b37c32b00c4da2a42018655249d1aec8545280194a1edce46b01a8d9034629e412e3f69b0376cf1801e41e651830ce35b7618998ce39afffeb895182c8e4c9747e02f87eaa04cd03f5f2fce99d4866eab182e378bb601aba4221877e709279ec90561f926efbd23092c41c317882deeca17d316da52d8c433203d0b38e2577180ed67c1eff95817f3e73c6a4d0c9f8fcb100e099e6832f8c5e38b62470ceb28d373c619fd7ac801b76b5d5a1804b1a9402485f841458f1e77f46ac351e7a5b08d916337a3c5437c61bbb50408a0374f126498b28f25d20fc6b243b31ec59a3f32f29460dc7ffdb13daf8ea094a12036a2d6f36cd2e75471b6503c564bacbc3701d94ace6d2978322b92b7bca59d512967436e4193ce93a28ab244de9f6b0d66e7156ffa85a3f94911fe2036b40e8842a9ddcae22b40a1b70247918b42f84c081016febcb2b9159a0faeae75de6854ef2eb202a1735191c96c2c05af5d43351ba457b14dc5cc6bad738d1f11103b4c8bf1b738a40ff444610fa98156f098b97b0b36d63cdc249001f135b3fe56682e5dde74a3e9739bfcb9e899ae1d47a340708d7081f6029a4447930642afefdb5a8e52a3ec46d8174240cd51b1d85ff6145e3468778a8c73bfaa9ebee49c48ea510064f5d30e62c2c9cfccb5fbd2f5e93d9cc6a60a3d934bb1f4f4c99351b69a1eccfd3bb0c6f32a9f7ba30b421ee2363e1f428a85239ac2bbfe50fb1980b429d2862a5de6c43d8621fd94165997558025ff66b0d5eb535c3369bbb86d471b5b4f1c9af7e4ad1489130f1073c7d2ba744ce0e994cbe49908141647ee5089b3aa545a273916774b2a71346705a69c1ac147dd18a97cdd9fe296bcf836ff84ffc03d389d7e89cd2c8a33dc726dd1ce587a3fb479ce689312a1913f8594db138415d916e10297d9c83d2a38a5c6c572f235270f954de7273d8d711a9cfb84232cbc67cb7725a01778f6ca8cf1c1eeca62bc96b499fcc9edbb37222f20276f835181122050d51854ca0d0263d8eac9bb5d113eef3c570a642aac90e6ec9d7354152c43b3dde0d2c0917b59c3e593c8f81e9471ac29074c5068b4595811126babb4d8d6961e5b2be1b97886d5ba04266910a487079c1de0d531ea240168f0fe9d1dfdd807518c686f483356952b20256f766e9a328ba5d908cdd6dba6ed9ea98630b2c9fb20cc115d27601ac8673e347393ac5cce19d4066acf7a60611e8996f9ce3fba97ba333cc2001b5e66d4d00b1e51375b77945f7b972e875581b5cbbb4e63cfef6d310aabe338fdd841c52fa3162164fa68421ca3adeb0cf866696a64f3546f2ec71a0b284fafbd1cdc5cafb308a2d3b20d285cdc5f14bb90a5549004f4654e5ad85a2b2acaa0b96cade944105332e54f37acf313cf2ac75fd8e8a0be019b95d4f9dcac124d52008abd2e438a8a7fadec82bc3ef58a460f99823e22136d64d680f1c894823e6841b57eb556a10b1dd9531a619ff68845d1e18f64a75c69aac6a7bec829a73bf4248eb3c6e4d7b9cedd45bae428a75471358e39a31870fa682301f1bb9a529f953ec1df7f4b303b25c7ff6940a8af461bcb64bebf132469dda42026c8311770808ab013c7989d0e6796a0906d19320dd063f42e42e352a8324a349f2201925202081c7d3e3e47222cf8335a6295ac022401d8c07151beff613d02ab3d335bd8eea7f374c66ab154d064f4596145c586e845748ea1cd0f237e7145578d4265eca768842d587960aac12d1b9c69b71caf028be7d287909725362517b3c00f9152ec13466147b7c15b9059211310ef8c445799a2fe7fb150a3da7de43ab73a8d2c79a398cba2a13fb587ac985f117dfac8111a781fe5b2a1d04008f52cc95066f9a89cfe30c04eb42fc4cf014694bc841f101cf0dcca9868abc3a90811c2c3e242230f0d20a865a86f84dfdd359844e93367d02fc31ad263a4cd988a32c4b5fd4dea26a7a2b1c49cd365d2aa56c3bbf5edff294ac5a88c7b6d2d3a61e9c6f44a31ad10621008b4ea223d8f93752b898c7ee4722c3f4c6ce48294a846c81999eab240de73560a2749c5ac60ebebf424ba33233107f75569dd7251921615d15c463251f637cdbed5bb15e026df35965146fce1a207e625a69d419eaca869e715f71252f5a2adc6ab38eeeb8438f95d176931ba4e9012f18b2ac3b426e87650bff6662415e0233cfdcb37ab5c8883559736fad676295561676c3c09e650901b3222dbd24bb68565ce569946886241a3a2e1fb2695631bfd8620a4b08dd94758af9a17e2d2351ba9d419821130dbc9c0c401e0cc93f178c762ca4fc504c27d8edfb306a2d1a130781ea91f9ad38f82b1dacea4d79b5f484ebb59285a9ae3aa16e9e57c77fdf3594991e3137defefa9633bbaa87f10b0aab8ff2b72021ed288914087bc15a5aafc22b7030c1ef9982f18119ebdb7f1e16df5b12563d01dd3edcbc2a79a11e4fd2356787a8d7de89194ebbb5f617ee8c55927a0321b7e28459c82ca4cd4871e837cc84c85964f4ef3c8dc9f8f008b8e7c4bd7008b570c9e4b7abd263fa1fb3a8c2d0806aa555ea6d95e0dae4f12b0c233d3ac7916de605682268c03017302238c71b71034c497be72f0d10bd832b05b781bfc84c308fe1abe1d5bbf5ab1e3d878bcce08d000fa16a4d73898737dbc9573f965ec02047b17c50b0c4e8f401bc8e6dea4a0b967142315363f780d55a9d565a606a0fca179993739913c2283f5f943a78fecfb7fe77e17cff95cfd941443eab9f58e31473bbb6166ee87cdfb545a60b40e42b6f9adfdd216f6563487154884b1df62347431b6c5ad5c6381bbb4465b0561588f904315f20308388d1cd5f60dfed1e0fe3ea6dc80e4426f6aafa4da04eb068b5eea793c969c3142b023f284f22321246072bb11a2121c9a8212392218f45c408a4c7240dc8ef26e9a11d777eb9f626cd4a48ef1ba66984184497156dfdc2191852c48d91da0071e9c6efa0f28aae7683906512019a4555167041b40d373d8d290184e90757ba9518ae919d33ae2a32fccd22c5a82118413a08192108bef9ee84799f4921cdd245644a4396c7387fc8ca37b5d109427e8b01c115962d2a7a899514b2d21475d77e2aeb1d4a35425ef8e89abaabf32e7facabf63dc4d2a92bf043e31f1ea57c7f7ad0a334abdec9e57a432ba50ff668848257359e6c0165f2bcf875bfec9299efec407b9ca8f8fe9e8fba8c20d89210bf31e7cfd5091094d25137eace490928bb3dd44c69d234aa11f47a243075237e5ef60345069ddf6f6a7b9d8bf75fd9eed5bb84b88942d7cad55f6d8dad4174a0988dd531ead834ffcb95d7d734c7425333bdaa203e278c8513abf1c24829ae66747f615f6eb9026679bf8f78bdd6e4e4ea5433ed3902209be5423edd398bed1b2f31f5b5be3ea47977dc6ab57d9aab94a919df205c3c0ca164d2be8f84b7fd5b57f12b6ced6f66207dac49467c307800e3eb004917625fdce1c6e44137ad1364857ba673d7501bbbac69678bf885fcd1588891fc514fb3560c98ca84978cfee917a689694e160b447598f2ce603ecc944d91f59ac8e26fed73fa9ff003900fc8302732172c5fb8e90b0dc00481cca92089fe751766da3771db812fea1fef8dbaf77c8e289ca45eb38893ec32c5eaf082a16547d07b3a594d51c0027ed664322cf3e7374254c4206b6766e4b3be5dac1586a7a578b7f0e700de649ef7f5027f3fada4dcb22e8cc91194db6f71c7645fc7ac40f9894d1121b06590d428e94454c52c318f66cede75584add66a909b0cbe8e7be9a2e533f8107c4d863b65c17c606e09b923c0e3c6ac8ced6c751d4f878fef225e53e0534782fea7512aa821f26e02b615f16ad4b97a9996fb8e6d3111839e3be4eb2128ab3e200be0aef3599097af6ddfa7f776daf2218d131103592e2ea7fa5b4f94a6c6c8233aba40f390d799f05de00951e6381b124af7018091980d60cc110708c76732ec7af3d549b279740061ee94f489d81f3861dd76421e4614cea3532b4c683b3e82f3aaebfadc25a337ae936762074463a4bed102df8888c15b771d687ef14564fdc03db869fe1e54a99567e1d6a48cda34eb8bc4c1d3bfb6be39d1a85383f83732272c816a51a150abe3dce542d08cb4906f0cfd612010406bc969186cab516cd3683ff999b5f7dd438b0f8528410263c66e777853127c4e8202a16d749e93258b401f45d887b4c2b5bd08f6981175c64647aeffa224cd0b84b76baa2312808c0d5c4aea11e96c31b6eb47b27a9b27ca210e7767752f4bd7d10d21ea69708da4af0126161e5bb81d1aa1b0444aac6e80a926f5dc05d56269383fc550862e5897aa85cda79a0db3faf2784e4ea56879bff44f7c10c71e6b9ec6d283b0b541fe04af3a384acade270c5e618b2b2f50e82fdb818de0900dc2ca807d4e68b959e9f67eca6ca2a1dfee146ee58d75bd9b19590432f4b13fd6707d2807c6f4e575de4c5e660832a7d270fff0c90e3bb4cc321485b304893237d8c18ba00019c25c3d2479bbee17374f5de2a2663dda093d6db186d33f14552768dee5c4a9846eea053e908e9d764dcf8a51b4838c1ef3ac89cb0a2744b76caca1516c9178a5c4ba5eafa13e74d2b7136ff85d2e9c783ba0a6622a89e8a69a408b7c23c298986b405c593353f203fd77f85c88525683454dc7e1b2f67f20c616a6078bf5b04fa718ac6d427bd5b2a778a8a68b814d0e262e8d33a746c7f647a84583f684264c2e5a2e0c3d429b29980543db93dc11c582e7a0359699d22da1af7a36824e31c801064d01816e8f057f03c16f71d9a2259782968cc257480f22da1cf6cb1f637a44b1607b663b62a3f2fe9a30fc9f2097be3deb7c4d175e6f0ea59bd73cb6aae39b970b514343048ecfb21ef7e3942d01261a8b748a44f0d5aa08803e2dc8cff982165ef03061b89ab4061d21bc434b1d8f1c28858c503fe2a14f05702a112c8319b52bcc5f23f574d3c827423141342db81fe78e9b5c61fcc9d2f9183957b808c87a43f1ab7f6d6383fbd1c26ef66bed3fa93ca0fb8c27b9a56e26900eafa9f8deaf9dbc010a70383f91bcb92da7b882038c7c9c085e8867d9529b830b2c45454259c88aad09be42afd1a79a8ed9cb21d1fc2453a6b44ddfc2e9b8e945320c10948c39aa02cb6022bedc7bcdd0732e3077f094ece87bf0c88879cf0530a3dd56b80ab4d01f4fab735ef0a992fdff590cc656f32ca231c0e138e7b4a159b1364c4f25f90ffe11277551156fdd25ef66fd195f2d5f51bcb99a7bf8ae4fd12ce7bfc0be5e907f4fe2fa0f08745d9d6672882d43b13bdbe46f8cb3f956ec7c07c9e618d69e6a358444836a67f4790217d5440db70a40377c48a952c2fb614fcc63681b05c91d9bf333c0cefad48f054e24fb0949c6e4f5283b999d79e52680b875e9311b66a89c059c6e916b0796a13c29c6ab2b663c34ec375cc2835c0fed9d1391ca2a1069b7e852e359b80de0f5eb3bfa2e52fe8214dc4e1c33f4221a03c89be6988e6ef09fd46a5f9fd617d508e0bf54f0358ffaddf5f79ab98ef8165ed5dca7f962cce039bdd9f345d86d6a3407aa4fbf00cf4229ae6f8d9e93fbb9573d8cc640a4df3ab73669df81b242d6bc1e72eac91b3c8d60a53a398f3a5a5f5568c3f64e8b7c3f6abd5b14442e6e5270f9542d53857723af348b9e72ebe4ac6389d08cc974f89849f5aa3e70fff38616c92516a9fffffffb7bf67eed92b21bd4f17d050ac23d58376ad738aa6a1fb8456e5dc8f936f50423519508e51e15de18028dc6b1c626566f2fd3a768bb78c81cd444f9e3ca18c5488d3fc0f3ef54dd6947889c21954730ca55f75414c051c8be988d0d738336de506095b5b0fab62a7683d7a73bbb1c10cf48ed1643eae24641eb354ddab48cda968de14b91bcf92bcfd3c72f9f18a5f900bedb6de28dd726a5b0d01cae8beca82abb2bfbbf2b84eaa07914baf49598e8bfe2a863e489a992a4b3323f22205852ee24dc4958b8fc0ce574a71a9f91297c520335dfb0a120067102b73c70a16d921b133f0c4eb33c925f99c67724572703db3d9de4c1c67387fca5cfa733a51afc163a463759c02c63d10091ea6c9204866d5c8c9c505e003b1761b4ba75ca8b39880ed575586f73fec77f8e4c7c1659177000f910272066ac5694d541bf0005fc1b1090982b645b88e167f9294a32b49a0873e912d311fd138efd97d23c8fdcfe56025eb3b020ae534d512fd4d8e948389ec4739bcc88bed18b12ff67b42836fe8f559d62dcb737a9fa1f6b108880e5f67a6acc6527254457aa4838687618b0017e4b12852e19b837b80bfb4b691ce5d4aa56e7093c7665da198aac4bc1a347ce9d48108a14fcddb108e0895c376b8c1994f28ef6ac128e9b305fb565b4dc211b9f2cb181e4930ca318df94d685f31e6f59b252844eea0561714150123865ad2f74687dc92ee5d832f9d2794d1380c2f2c692d4b2f194517c7686049967afd883bf4bb2a724f28bf89105cebadb32c963ed45df181a7531bade62ae730b41bdec5d21a550b78e46b30a6c09f0d9fa83e0a5177e225237fe0f23c57b0aaed3cbf8744ef9c520b277a99ba108f3b367ff822dd5c655342d5fa2f201cbd8159644e555fb7db17266f6994b4810c418426f41390e5ce6330357664cbc7759f76045c1a978471723675c27871a7b0c1eca8b164091ced8e43c5b4c92e09aeeed4298f25aa21097d74d8e8fdae529efb2fa45d29c12c74e94ce373c0744b47714d020f41ee2b267f452ed3f03425f40e88eae4626faa4dd8c7fece0000263140384e6505cc3ac824d487487f1dca5055c7100b1bb1d8899739e9a7a693915b122e97b8085a3894fbb280f54ec6c330b8559acdb74094590cd1fb830e238b272951b90201a80819be291025cda7e96bf6317c38338ccf134b27f72a7794bb4a6a10ee8be48db5cb75f83bf61f08c3cf748f4175545159a956aaee3d374c4c177d2ebbc44a7a934a90a02949c8e1e54373d787dd37652840407dbe3584d094d261a38bc4c110cd6dcdf8b1b9a7d2b01b0102cd372043d3100f38d7078d06ef9a6bb7d4ad7c3b7936b41584681a32c8903efa7dfea450340d02089a436f94c4e00a2403ea7bb419dad219b8d22f7eca4353b7779982afe48390aadbba819ccae8e61b34999dcd4d3d2a74bb60ca75ad697c9d7174a740470e1a9933b65334c5c59703870722c9c4db2e5298824d38664b8b539ae6eae2f21143f04de9684bb339ab368a8a397c02b47fa5b4579984971c0ae70edd478bfcd7d8510b7548b80ead8816bd07e05eb943db5dc9a48ced18a53347ada4c772292eeac52e9b60cbb151d3b3f33041923919aa677a7862977c92f34d069d5da9671610664c0b2e8b5bc415d01ad2b6d66d423056e40f698290a2fc83ed1687d46565f10da4e5864c6f9d97e864d7781f4e89af9b941cac39e20860aa2216a6fa7575da2f363014b535faf16f10cb712b27796323fc768b40fd085a2f26805460795dcf06c2a607ea4b4f90e4baad8549498aed72bc953c647a6bcf70f71875af15b3f15064c546aff4724a14556abfd350df8aab938f0960c83ef22af3365b5a6e2ced8bbaee9f4fff29ff6740ac6f356a6262d360aa5be04b302891d8ed2b8659a4fc98b1709c5cd38d7f3e943be87e9edc67b4c2e33c0dbcf08c91604df402f0e574b1a9f1d616617cde43a85c6210b78d914c1ae8f3353d539358fd84cc6c2b8e2959d75bb16a10808733a2e9e3eda44c2fccc9a22490523bfd85e6c07c9d0d03142ff25d17438df2ab19a32719a12b1df7717b777e71596a2383bc84a4f642a1d8ba31916dad9ee3f1b477fe2f654448483042d492e394b253dffee81e81cfef6b947180515bdb3a1fab77f5b3f4da5d37a34f53dc55079802d15a09fa0debefebe100c77fc36770402c90078a825d5c8bb88029388881fc832ecc6c6e46883b3e592531dfee090b2bca21f7a087107be816e6ff5c30bcec0321167e05dae78291cef641bd7525aab464715bb7fa20b9b35a188fa1de69753763ec0346938148cbc0b07959abee523681662f8db1657860eafae084a00913190fb3496dff29b18ed6a17f893716fac05a7db894b4638486d003c6778f7ff0076bec83b3b2dcec0f24ccea0586714980d51f728e824058b4038cc09378105788a00dbfe3c203960b8b0186cfbb25f78b98340c182c8614f4cf0d9869c7eb88948b8a3a4220be1b2b4f406f9d1b2e25c345ae901b38c2c4f4637af31aee378019041ea840280070f7a0f784ff97b2b4801030c1b6acf92b0aaf629800e331a57b7a9fcf66f701c537edbe512085069808b1971850ab7074997ca28757915c2c9614daf788861473cd82093cfe4582d1952841554e5c3c11aa69487104818900c35c65eddc28d11b667d98f8692e9d310f99c660a2c5fb8489e0467bacdc1ca6ece4af134e2527f5a487e80a13e9a9cda34d88afb7761855ba0daa77e3f8234298254c6c88800e591225a6406213568067eb55624916a0f2a764be4489970d0156224c2023d93b60cc84915303d62d9af8b3505a72e9b51ca2fc878e66d99e59d304952ba10494b2c24c266cfd723ec88820cc2365537c735194689c0b00d4a3632fa7d1d38321aaf0f56bdae722f5f86f61800a859226d385d1193a2207a542d19c71eaca4a9301e68b67162b6a80d3c8f7bba112fdd9dad8a395a9aabd5ff431f11e748afea2ee222e012a626b03f3a22b6f7e0c8bfa19c740456e00b8cf2094e0ddf74989d8e14a22b1eff33af66916f013462a1d232eff8eec9c6fb0e857fee351f09ddbb2e75baba1e1437bf45063840a19d96349ac54f3b30df79c37d43beb73f38a417631a88d7310962219cae82c0a2525fa23638c91210c67d9cfdecee5e30112492ec8fac299c69d13faec643bbffa86866ac9ce44d6d18ada66abb81ce8bda50276d0ba8c5952c21e12cece69d45e2f40b29fdda435eb0650e1943f741ce0f569b197672a2d1060c191197347329c4d8996fd02ab96f87939acb2c78d15ed421a816ab8cb46fe758fa1b646309cbbea83b6d15f52bc9748a88fd98da29685720640a041c6e1431521949534f4b4f709964edd342bdf0d40b15f7d8f6c2d8d8ae29b03704a969305a52defab847c50247f48824a11a24cae5a5ea2591ac30ecb401b84437cbc8164733fece21976a0d46cd54448d71248f78a567a91de75f15345e2a976a47ed0a75ceb22983f0283b0b06e1e1134db1fceb6606170041513fbfdeea785edb1aca21dfd932739888d22627f630896081b06ad416a0684d40c47b81421f967f653100bf4983ae97a47e414d2ff205639f51ee1b26c64825600629ac72ddc4a1a326a64bf9cfd86c5b476277e5cf56f468d1e315980273fa2edf28bc68c5d0a7bd33350c553a1244000911269c0a0f6f86396d76cdf21fc933d59e00ea1f429cbd0b45121e6d566b2d2631b467752bd803e4ee820891eedab8f343ea6b2b010b4046e9467c4f7aa3b6152ce318c2ce7020b140e0f2e9e8356b7cc37237ff7a2057a6f9d6ec9947abbf8a0e127740b42539b375d6b4d26848b2b8dd1541bc0258358099c051929581b95ed9fd58e49714a9c732a7e0bea1f00df6637bc90ba7ca4054fb51ccbdbe8b62cb28f5e52201786b2d44bfb7b1a87bab0c86d017d2b30eac46d710b59446b65f8ea808516717b4fcb868ce1667952b0e716113e194ab7f02f2b154640b2f6f8c73c072437fd2025f47e203014b42a3910eaccc23a117f7d337e3a147a195e13a1966504578cb0e90a46ae7f30bee003bfc38871defca6b7776dcd11ca0ef41c2a658ce5df55041e706afcb357941d2cfb4466b0263ecf3fafdb640abd9727b084a19c8c76ee5119bc30eb102f08f526cd7411e98665cc85be52352953f9b92903ac59cf29867420a276fa284e28d1cb6dc010e7e2eba3ccdb9ab4e10a650ed850588572c2836d63652186c932c8f83b8134ba3cc52dd24db5ac345b82f62a43eb23559899ab57d238d1ef2cb6897ac67b760247e5f079f980ac636223137b880fe8d312ea33ea0b8c26baaf62331124273716b39b7b7a0a6ba62c60971f40f0f963bbb74526c2135247c3ebc5b85e5e7214b3a45d048ad69fda44cdfcbd2e393729eb6933c633c30ba39e716f1c5216e3b9588107a7f336e3725ee8e742cc2b2edb01e101f6094d652136b3278180c1388ecc05a2e83f78546c0aa6cb0f6dcf1dc068faec31859a779732661a23aea2c2bc12a104c3e2cd6161b08687a8055ecc224c9207b415df814d6c9a9934219805f5c635c92e9a69282a01edb12d7fe2ee4b41c4c283c25f7f23f1fd858cf796fa0e49fcde3cc0eb17efa56708f8e961e23d6355ccb722ec50121277aaf7dd0bdd5c26947cd3b08af7512970fbf185ed6334359b094dd833aec2c2db510508272a85c9cd07c86d1b540712335391e71a72f36144d9ca31ccc7f9868a368570d22444672936b2d6a3b6b87a70e6da71cfefc1b530baab04abfdebd98100235d73fb91f50fb3ad7996ffadeb6c556ec9d7bedd21f223ebd2132ad7d7ebe7b13f87360adfdc33e34021e27029e99b89db9d70a5c563a06b87b154f5fde94e6754c9f8241668514155332c58db982ffed701fa0fe6877fae6ebf1f4de88043b2ad08c971c264085a211326fe850ea722e3bde8ab33555ac56241398c66599f14740864cf2b66e74fe8f6ce88939641aecdab50f2b887ddbb3fd372688ea4d3c165b3bdb1626664bea0ac692ba7ff142a4a71cfb0989c50d9b2990f170a8f190095884b09cedfae9a016d40b6f2429735ddaba6d3df4fcf55c784fd74e96b65e2c3a03f16add8ba42cb1a62107632e9bf22681df737b14333545625a3a47e2c99475ad43246ec0f7691a9aa3de64281bf9bbb55a2b02a85ff15dbb9208f9434ce706b72707cab8b26733d76b483bb131a1861a6fa3870e6ab7358249055668eccc5bc613554d4a73569ad51c531d2daf3796acdfafdb2c39b3580c31c06d06883bea0d1bc018aa7bb176e0d6eb9668bbe3cf7a44318b77f35238909e0e4ea200c0911cbb20874a8310060e79bedfa2f0174ed476f93aa28c6e439aa0ec4a063e670b49a63236acdb6bc66bf5e1e19e77c86889d6a065c77adabfe37212e00c57065457b14c697cf2abd430ae8934c38918b5a280c1d9015fbd1dabc7e1be1c4e69b021aec83cdef861825cace078a7966bfaed28ea18fb3d23e6a37a72f1ba5610afcd7c2cf1fda3955aef3d26ff3aa8d2e98ff9f5626d61f010f401ea87c3e6340b14b83eb3b94424f9e64960e55a20cc93507dc32b1f989a9e00740f83d344fd177bea42c9f453873f13300c08712538ef9c724bf9c5acc177f28ccb4cee4a7ecd51abb471389a7a19fef56da4ca04b93847da922017e574174efa3c8f33b2274e9f16176be2ff32adc7e9c63312b300c515b00b7f469e336f2fe00e0b0875bc8c8d48cdcc271ef59da5035bcbdf8ca4e285ce356b2b449dc12c6ba01e40ebc1619ed1c95ebd57c587bda4c7f2aad2cccd0b2924374530cee19eacfe2c5a5bc4afdeddebfaa6029cf87883dad183bd2c2629a9de2088b2936e1c255595f96badf7f690e4301dae0a77fa677d0cf11aae0636819268d5214a1b890b1da73dfdc6d6a458b08e4f4b6c26b275c1ab32e1ff03336f1b567901a94f20d4736619d9095af2f301cac5bf47d8307ed21979c4c714dee377141169fc8f5501fae2451b257d9b517f0f5d96465e65ee080e46896eaebd3655fc12751d3ab70af2bb2edfb1abe05c385bbbda23da264d13480c15748b345a9371f3ddc9f660d05a834e3760220aa6a85b972f662fd7ffa9fa9fe62d6eac610be6c4de593b0ff6e3903aacca5aeff0bd4d4316422d0d72775e3ff1770432302bbb3b7b0b6e80c020ed10455e00ae6c28bd4f5a032705e7047f919cb8ce577119887f760f02dce6ea64c87998979b118603c0776a2e67707d6d61ed9df19c84239206934d092e29c61b152b1ad2f74ff5ef9ec2a4e38e07b50c0da6040794e0ef8db11e51bbe0e5a27648339e0e3a88f6d0e2d0d02c53b020ef80a763236012925af177d10841cf00f86656d01744a5e97721d1319c401ffe419199ba0a54629bd5e0aeef6c220077c8af95801c45176cd945d5728d1e5133fa9e1eff2e89dcea7a12c34cc2a6a7ff2611c13531b34dbee85324f0ee758e3fd6f59f2fc3ed51a46525b6491a55eebd528c0dfc4b74568d0ef9b6278dbee2a195215820b142b48ea137cfa14603b6fc88bd6131153e35c5e5d2309159627e5f9a3acc4e709b90414f279de9e88f83c7efc9d34b577854f46ec989fd8c9d9cce7ba18f2d3b5e16c040068c133fbc7fd47b46e6767b14399aa69ce27db390167d584ea072b8ae76dc76a91bb9fbf29a6e5456bc68dce5d4a98b92de0b9a8b02abecaa297cda46cec43d53d2fc9289976584f7137a17abda87832b61f1e085d84463aeb4e5a456339909ba2772215f8013551c59d786351c75dd986ae70348bc62a6fc6d49d1ea909fc26ba40254af076d3a4b9a8819810afa222ecf70e8a2e0770888a71da54c67f94bda11fe8302a245608d253a9fb7b574bc31880235624eb5261f7b7244c39c7c9eee646824c0908110f6ae12e0d76c0bedbb07a75b2c5389bb4fb223c194cfca67ff88817a2514edaef9a8583680a558405252ec47f1514fa7b200d7576a4612bc3433ae5945edd2fe26895e84bb8895763ed054780426c0f3ed27f80707132e12e9c07244c247e39d68c9c8e2a023997c6042fcb52a8ca58206ab9245dd1aa28db4cd0cc97deb5f8ee1a81e38c98a82edc92589e660bf938d4f9f228fa0d1c0b0d2adad9ffd8a13a8be7bdd098af77ae8e40dda2800e80a0fdbd7bf6b4e1cb0e9768ede83edb0b2ba9cd125a35a0b886250db590dffa692377020840452c4d65bc6ea0dd3fd3221d4ef8d25d60889fb00392356f368aef3444d0f6581495cce0b592c3504885d2497cf324bfb149308952bcb1097de14bd3bc7ac9d335a1e76433fa243d1d8e83de925c66185c6e536a026eac8afffbd900e09c6b9507c25547a887292110716416ae65508c6676ad75232f3facd60453ac6a0f0e467fed8e44bc3e0846ecc39e9e2779c68b42cc6c81326734d904539b6292894d3399e932d17946c600265c38a202bdedf5528977d8bf364fe72855f1ee3d6f7cfbd6b7befbe65bdf7ce3bbefbff1cd37dffbcef7ef7de3bcf5db1ab6f80a5021a8ffe75b7ff980c5a4f3768c5f398fdf13b2bc27825a2a8012e4b89720274c90aab8bbfdd5053b725bbca8ae434118cec58fe23ee4225294abb8bb80d535d80cdc23981b0c57328d42d034d78b52881149cfbec65bb7fbde9151bd991a349e3a2a0328c3d05d91b88da7b1a56d403afd023c3c22976f3eb8eac7525d49500d83449c8ea73937e4b9c17eb32718aceeed021580b020a9f62ea3e8268980ddd834daf88b839991517d04bafd4751d859b2ca7e6fd35d14366e1965c150ecfd5584a0e4c16315cb01cf9f76f5549422058b0a99402c64f449c87b0df3ca6da8701e1c82aa5dd3fd612bd0b13a00253a1edb33ccf22a10e3f94f9bd4862edd52a5884da25a7ad0a6ccd5466fd8ad43d77c11751830770529801875e887c9af978943a693aeb4d3485fdad3a529dd69d2971767a115a6f3201dfba9c3460f56458ecc89cbad8f59a6a2fd337954926806284b9a02952aedcd1c4790d71be4ac22d13bd657219a5baa31d0b21ad457211ddb393edff5ed6dfa836228f501260ed6657f0763a5a6858b922b4214fe9b7e58182d3c25849492dde6fd4b74b027c0a72994205f843d7ebfc3c08d3b59742285926db9d227c44ee76eea913858eb4f592081949ea7c728cedd231b75a1ff05381b7918656ffa7ff00c9dfa2f94c557b4360477ac352d0a2cc61fccf5007e6feb71298c2e5c45c19ee438704ba8c4b321fa88a85d92eb7ff65e2d103dca4033759315381bbf684e16e42cf8378dd5ee170fc4c25d44df0748b5ffce1071c09df46f0eb9c6af1a270939177c9ae36af4db01e3aa4b7e8e9f6b30cf0561179ee499a661308e3ad135f9176ad4214dea064b70f67ed19820ceb5f46f18a9d9af9e10853b08fdcf906afe8539d2913be1cf187a2dbf0d7ca0a8dce7e87d01bb5c133ed9230dd719c20788725a937e59410fbaa567780163fb6f8c88071cc9ff86d035fcae69529c63e1db38a6a6df1e30a85ee6e4fcb807eb5c1c66f1269d680d0783e81951d3bfa0471b6aa76c580367e797c60982dc659fc688dafdeed0b8e2829bf3cf15cc7380f09d2769a06f348d230e644dff0d15754023bdd912988ddf0f7a5457d871f67e0353ce0126ef27096b8ca3477461a269bffd23c4bed0d46eeb84740ee46043c9094642138e09251c1192f0f32660e14f36e91b0cc3c81352d37f41891ed6486db007cdee770d13c29c4bbec61135faed19a1b083dcef09afc6bf18231e7112ff18c2d7f68bc60471aea57fc348cd7ef58428dc41e87f8654f36f821b5d957376bc5d87a53966e6c92ac0b875fbf154b2c7d04c456c8dafa5d0a4923a60981b8c08c3d1a9d4c31182934c009f6d6df8fa013dda6f3f3489c84fd67a8d3e42fb8e879cb9d6f7bd7851723b566268cc3a46e1c333f0147a8c736b9de311a6fd498966df8045a145deb32295f4f6ebbe79a224963e872e90389386ff7b7637b46297694292dc3999cfcb1d8bbf4c606a30636ff140cf8def8a9c409e25e0218350bf88b959a2c3b53462d444e200b9b9d5d65ba3b29c85c40cdcd02ae73c75ffc80a6a1654c76bb7227f66ff5fed4a149f03e39f956ee88a233e0f7f4644b1492a584e2624abbdbb3aeeea10ae97510170ad90538512544f994e77fb4484c0affa36e1c3f175bef26ae4641afec0ab0c338be745bc8e855569b80290b54a5e50d72216d47b07058a7c1c8e96fd4b9bc4a0ec19d5cef3785856ea9387858b4a998879cf04759499a54205a33bb8402cc27f3cfd4491db73042b74a0b7e696a942e8ce53c044316662c1b03238c96321f8b9764b9d4537db042e59accd1de93befd3a86456bfef61e56f87fd50714fb98b6a19ced3c5524af3ea27f31899eda28b4081b7bc705750382e3d0c26022ac52425b8006c28698a05e5fb7b86382172acf2f118a7dc320b4ee894e6933fc8a2b0ac1f3301c3a0a2ecf2f7f23f58f5bbda912bfb55a0d18b3c517ffaef6d2c0091d5eee11e170e94edb3d5aef48bdb58a80d9187b206db6aa42484b18a86e3616900e48e1251a7144b43621b69c0820694d2d9ca4dede29f526324a8846cba9df20cc921bdff927669a04da1ef713635f1eaf8f9e972ade9fa8f004d1307bbfe1709a711f57ee776e57ec7ce5f6163224a4b7616a4a05b443f9926fe8411da79957d0094d021541ee2f83ebdd34278a2136ed45863d0a5e1b677161ac6a080fc8dd4a3e11163ce7b771d1cb7d37becb2483670775cf5fd90eef83e9d5b54a429e467afc0f166bbfda44c8fc022a117a7e01784701ccbf797e03fbb70ce0a07eb439cebe06e41fa161df401a813b819a4e46a920a073524b6c142f4b0642e0aa45e029868f651411ff3fede65a8b966b011ddbc0da85f2cc35b77d15415842c301b6a4f5e1cc3c1c2c77295c80f059ffa2c385618ea5d1b0d27f82982d3f818d0beb5bbbd5e4c9aba784c3ef8d0eafdbdd15cb4af5fb03f7164d64375023edcbf042cd449db25643ff26f31c603a0abbdce4719d3dbb16558a46df042e2c95fda9ed71cd26296339820d1068160dbe80a4d10fd2104931efd8d15fc46bc78381469fa726221aeb8a1de4437607f3fee0f9002ee6883183a4572e133605add887ecc78d72a9a9ed3ccce6660fdee19c3d3d84fd87ef88b1969ee0103e59f4f12333f982dad7d304bf2b3a431f317330cbd50253725594718c54bdc5dd4aa1d9b05abdae970235b770543101b1e7b3eee62dd808844a2354a43cbe1e6b738961124c66e5cc906b93d8bc81ad3abd3883964aa6aa10c87a0c76c0547c7d87d113e6164d691a530350ec241d7dcb84c73390ca1f48326359bc5652c3d0d442bf7e13cd57f6baeb0e36846c6f5c759b59f5154b0628b802e6df193cf3838afbc978ac459d69cfb0d92fb175219f0a49ff03996d6dd2631ca52d562509165eb2a81eb23156aa9b120e4c01375483fc76c3392e2d6008084423e262df9808bb2d023d77babcbcda680d0c48f9a7cc410b02e8cf0d63e039044b50b55e4374bef31b2ce765da7a9993336d05c5b438bde5eb8baaed96d6dc0d2dd1512860a84959625f64b0de679a29af7927264bbd92af110804c1271ac94382bc4867f3caaaeb7ef0fab223b80cc0d2650e5e8fdd77dc654195a6c481d167393d9403272b9568a0d4e64a39ac747ec481d60ee362c7412001cfa5017117889c70733a8c887879dd20ef97f19789800b045a05ab00ca815bd3d947f8bec599d32b793ea1f219c0306af8d12e933180f50ae48578492ff0ec4c81a35885d45f947048b9c464c5b94fdf884b84f303303169d3dff9632fa7a0e97cd007488de834de7d3730d1eba0ca002f9fc5c3a68b7f62bbcb8cc550d4f25f0e8cd483d716dd6804f519c4c7527ce21d245b70d0637d1a169a724eba7b3d5ee25f205169d4bf18d26cca7c586e78c25d703128a476acb3b4974195b9486be18c8043604248840e7de08d6c4063abb77d9d49cea79c932bc732aba40d001b966de5812399de85392b860a6fe0e47c9dcae60eff2c1101f5137d419f6c8de0ff62dec4bb594b8274e0fa76e1101b4a0ec094dd7e11130b020cf38c08313a6ba92d4403826627df3f62ff84391f243ab8651018cc1b467a88725f5dd80c66ca133b54c9a8746a0be2a1341bbad4f9c34e89b8b6fa87cb904720a5660ce39b66570b33c2a18deea6a49409dae63038a3855df1b093572582e1364e5ca8378a35c969252bd172ecfa1b4af181cc2033f2113db7ec3923396035530886c69cf4817389894daefba59c6385d1d04bf0ceeb1b55f345b46b9cca2082cbb048a3fd273603132a0ecfe26f01f10ed90e3a3153d283c4fd5e7e8861385575098b5497a6bc44fc1ecbd75e935b1f8cd85dd0c99d5b0088cb9a71b86995d6740e154ef2454712347cfe170efd0463171e7ea2fe6b94cce95c3ef7a6f1afc1de4445e639ba485ca3e894f2be5ef5a57c07555e3c723d20190ef87ad66ab41c896990f071ab62a62299e981922d038b0d3df2ccaf602921c739e451150098b3fda7617e8cb6bc2062dc4a074644e2f81c411b222003b301c7f80220c558d702e913e707075bf68996bd31e36290e751e97adbe557b3ef5087e1f8021ae2ea665207b80f1ae975cd1803e9b66f430015bca278be568fc6f2f7b2198b9d61d60decd708beb3129d601918be13323f4d7c7b56ed75818a85670a0daa9114dd64075240b19a87363f70b7401cd9f058a607d3b054a8b716a028dee601c8116f3b3f1781d50e7b5d57747bd642da40ae9d47851f0e78971d8fc8852f0843a8b8ed25d84e3dbd0908acd55bd67bea60c2cc1dde6b9c79703ac5f90ca71010d64615871482e8973cb3dcfd35fce3a060d419d3af084cb81e58da725140dc4d347b82ed0bfc818f22e3e94c70b2f82f76ae715b250e9250e15470a057e90c231a9f2ab226bf7a9f58caa63571edd03427a35b23c265fe587a624885775f99efed961a436eda71423bbef811f45573eff276c8f44182a09b73f697016a867d0c84b34becfce2cc01659332640df82cae00f977c6aec2534045fc4bf03fb3462d7869b411c3267995a22887c0213f8fd748bf5511bba63e91da02c1462d7af656bfb624ccd515c1a94691f4f09fe0511c813b660c71b909b2c2f344ae10519d97898ef213578af870f8539f69e62b49e1d972288eb4355c93bdd0066e1cff171040b5bead94448d89ac8097cc53dd3f10a38d9af1366faa27324c7da68ab22b893c233d67862a4fd5f3e7a459bc98634e2b565451aee32ef47caac9de605c5a22341ed24cd21ad37c2d88e2d1b6b92cf102536c3b3279f597450ca8a583bb5c71419582f6f7bf186e84f57c59da9b34da8ea1b1eea511ec70ed3f5c52e8cf92bb6154456bba23dd297b40ddc34429b2d4dcd0a3b21c54d9ecc667aa8bba02246375e869b3546e12a417d0a42a290e7120efb1ac55c5bd9d96461cc3252cb25721de96f41a393d410ae753559e75fa9f8f10a2a436a4c8f5a7f7a4f56e1a820283bc44ff4848a1c89f38385d6225058c058578ab3d58970a5e4c417aa38587a13a233c65ca29fd35ee64174a43d80c17149abe36a0cab234dd505b03c38755cb3ed7065a15c8ddf9bb2103e1ae074f9e9faa3897d7070662bfc5a5ee1fd94a4bed34ffafb0fb5fa4061c42a298f7d01746710a32d422c824d1498fe491a34aba29c31e1c0e239b1ab3ea2d43316f248701fbf54d6e551e92b7ea038e4f5fb88f908423cf2ce38feccc6071e7ebaf4930a1b1004cc8f7b100a43b4aa62898a1a270a8b83d51e32d7e99629f564308267d92f537aee97f856383e60f620f7f8eddf5bb9e50e5c24ba054072db9f23b7f859ad46f3fcf6368c49d7b52ea32f4898b492d871d3f2335d0209b5c587ed2798520511c83b57ca9218502e1074a3daa02d24fa0a65dbc5a2c58b0e32e3fe42d9860850978f0e90f0c134e62311f8ad6f3e367c4e6cf80461c3b3f26b78d4cadfabcbf97b42740dbf863626d3654fd05a72f1beb7e43218975cd9b3be93cdfda134b3e4b238bfb01069cb999bb705d1dedbdaf24be58c4ee4680b663ddb9ac008343a99ffdb7440cc72f31f3e640aabb638ad9f622b6fc5be4ec965472f2d4b91d0cbf8a3ff0a941a84313c044794159bfe96373346fd27bd50b10f58fddf63f7e50f85071852876b9eddb4c340ee601b76b8f213da2c70bbc3c55134b5688c655c94f26a8ee644c506b2c365c90629da43412d72872bd78d0cf0c778e00b9ff96613399065392186e10c504e443f0c34a356102562caad0fe83eec69f495d8d2cfbe38250c4e35fdcdbe7a8f5ce1e33c6b2ccca3a3a51d8a4a74ceb9480cb06a7aeae179917997093b8320e97aa47a587cadeed72733796ffb34a03f2ba7e4351fc6fbfffe0f73b8664c57d143ef8d2665ed7897eb7546d83e14d00f37eb265e611d913ac0dd75afaf3331c45fa6794ea62d104b87faf8539056e112e55f85248a45b5d16c7c442143971862354813049345208857d5fbacb0229c3a37ee335734a14c5648d88bb06550f4c361697264551d38543a62eba0e0baad44b9de442446b06054ffaedb8d847e440fa7884d96b06848fd6e708720baf68f8025704412120655bc7b7d9ba073a5106d08a94a70d4ffc1a2517aad8b06f2804a9f363f841b2ee4414e8900377a708f6cfe9872df66b2b095d83ddef1e81cd2ae29089e7753b2f4e58439d9a40f3d82407fbd481901343042710aba41158b38738c95998f1c8ef110675b38dc39f754bfd321ee17f864d06cf29eef05cd72772dc437e9f54611557122505bb33b248a6e8587efc76a4232d4f6c0914933b317ee2a6781cb84711b949c577db3fba8b5bd4951386994d5122be7558bd84aaf8ee58be8e34702ef86ad914b3e802956557af98ee962cbd4f2a1ca494abdacd51055197d47275efd72ecd35257a33ea9d20d10f30e8b45eaabc791553fef975c02c7dee0d553cbb76093f8461786f20ba08037d402335ea16bde6f3f6aff9fdfc010e6bbe626a6d4ae9da452059e0404250d4f107846b43acc40cb025745b02cf053d222214f17be49fc94b42c70d5d9e4eb23222587d21f60ff93c8a6e4c4676245a84028aec444aa628911b5442bb7dce2fa3f610d67a25fffd50d9cce21e89f026e0d7e0dac0c200dd2f953a7453fa3294e81ac4953f38ba093b09efae6b41a7c53b460d5fbfce04f91cfc8dd8d70cfc7727703b8e7a3001d6cd031051d493c3aac8e241e0086076cf10034c4265408baae6acbea5706d1425842e5b64a8485eeeb3354851be37c12fe787e2aa84461b3661c869f5a56fff947681f608403c870800f1c90e300200e4880c7014430f1458e93fc38b89ee5a76e7d69d5b599667983da37add45095c33c6d53557d294e39c0f3aa1b9b3034f2273bc344063c4c4451d1c0c0c89c76a5fa51b443b4ce2d37231632eaf28400f7e4e8c3f84472e858a20d189b50a737ed13de7609271ae0860670e1ee42dcd30021f50e9e4a044fcd40ad3c4aa0a1040794b851428887613553323f8a6ca97fed0914866fdae5692b88a656fa948eb9bc8109eb4afdbcf281314dbbf2daaa7c5f582d9a12f5a756ba245baa935a7e6af8edd36ebdf1993aad161960030f03b2f03040f32ce00ccf023ce059c0910504208932aa504c35785fdbd0a2b06b478d29953abcc06b629306b53d09e55b539c1aedd678d73da63875e2508a53956ca9a7ad3eff489df8a6afd17aff6792e0e22509f46f9288a974b82789ea2c2df545015370d7a9bfa9a7f2714a737f10ad802d017a48401512c0027707e947536799801bee5edd83841a4888e141220348581e2492f01ca186e7882f8ea0e288ceddbf2bb2d45018565048c2dc165028b2d4505556d3587ef42dc1d4df7c9f0ef5d678ace1c9b5f2e27e5275a23fa9bf99f11c81802e585a1010fac9a7a2692521a0f320e006ea0064b89b76d407c8c2dd1de59ea73de5470f50754993f3f7f418400b8f015c0a808702c0c0538009b8fb7f264f143e49685afff38f23dc43802b780860020f0124e02140e7eeafd37a9637ac5f75a626312604f078eae0f1d0c03381cb3d9e201e0f8e30dc33e80bc9b0864e429f3fe0c65846e7543c95a9d39a6ff20c200dcf00703080110ce03480031841058f112ff01801c44f3e9fbef665fe84b9ff280e7d3554853ee7d3568c3d456ce129c20245a49e22a2f01491798ad8e129e24613ee1140183c025882004c8f00ae47000538d115e5da97a957a83af1902b3dfd08abdee5c947553e129cc9d0894f5b2ab146f29f7fb8fb897b88f08287082edcab93fb38a5e9212274ac2bd64424e15e99b66788348670817b7582539a9ff2330904c1ad5f1c8d8408430bb1c373030deefe847b6ebcc0738388e7060ef76a639c6b4a344f98eab515abb6f5566d59d655ca38744dfb949a789b4aa52965cd6db535d55a49312c2f249927ea9bb627006704c0059e00d80028e1ee6fda35ffc63832a39752486a97e5b6e068330992e4e3b1f4e77f2efdc5a7bb8fdc0380230fcad8c8915a790000f204b1062fdc6d8e80206c4255d02e517f0611e35e4120d37eee09e28657638ae4b18106c9632389fb8cc74668ee13e30d324d1b38aa7affb345c23d40a8e1a4f9bade6bab07082ebcf466895366f4b735eda8dfae788040dd4f0f100c70d73ade14cb7d9624ee4a47df4733a24921614cda02314dbbe2294980bb0f714fa7099e0e17d525cb9a122b364d8f87e1483cfe0733fe10867bb5ff0f04f04314fc90c4abfbe7903ebca10f3ee883a90f38f8600677afbea64ec2f0a37379723f757f29dbed52f121007ba8c21ebad803cd1e58f4e0063da4400f55e8e193072de4a1087940920790fb554b67e9523f1816189a8a2c41e5ebd4a2529caa9f75a43835a45627e19fac0695396f928fa3f1e390d8b4ebeb1265d29fc96aeb89b2e80c1ea2c043860705dc810b7700c11d9eb843107650821d72ecd0803ac4d450f5916ae823b1d656a56abb4fa50ed1d2a44f1cd275d0e870061d5240074c87910e38aa1743f7b47bb4393f43e2135bd37ed69fd45985a12ec3395c63900308e4308a831f7210879a38546b98b18614d648ad21c4ddad290c7fe47c5843da9aea9b684c610d59614d99a2152d6ad352299eac2e6f88770ef1ae202b53bd2996677996f74cc91d3bf49376eca8df132f2d2f32a42255ea4459546b1ac021091c5ce060c41ba2f08624bce1ac4e623ef97585f323b1a646c3fca91cfc695dea1c6c324d3b9af63326cf9637b87b457243195e4119e7fc468e543778e161e8861c4c92dc10e3eea8cd112347ea4972030e23476a75c2b401086dc871f72aac19af8476f4d106264e16471b9c0d5e54af2f1b6a2ace8f24c4064f35864e7c566d4db71ccb7426f54152c627324a7d90d4075983b88622d4b00635cca0aeacdc8c6fda2956c3136a4051230e6a68c15d9455270ea2537f13a4458d540d21eed54d16c55d9e5e8d1bee55fd1beb9286541a1e908624d2200034b0010d6270f708380e3480000d24347cbcfabc53f971aa2ecb6ae5e4714a7d561d7e1f2e4154879f1a9ecc7c60c2fa85e069c730279cf98bc79599da445db97844fd19ac70862fce90e40c2138438cfb5543333e9e20c58031241f402adef5da2cadba2a5487787aad49e217a966e882198c6006339cccc080329451860fb85fb58998baa36a59a7ff86c2308c89f96d733a8ef9ef998aa94e2bde1b63991d3b76eca84cb30c5206ab0c0548c30e38d2c0421a5fb87b5977d48edb2aeb5375280c2b89c3961055c393969f49c34492c8f00632a441862890c1046498820c22197838e8cb4cb3523ffdbbcc456aa8d6aac252435a084ba8dd8555a2fad5d0c9f58109ab7e3da47e61099be05543d5c9a7fecef8aaa1f0e4fac0843554a1fe9c19d18c258af76b6b4275fe53aa4f3ceaacedb6f7fb68be8f068d24ee6ee448ad6e30de10701c68d478aaaf8979a47689d23647f2e39bd2a071d537ed991cac824da81f738a67be6f3496db6e34bdc158c8f7d1a4a0fe1cc301c4f00731c0410c2cf0cab22c9075d52642d3b463588bd45075f2a9bfcb8c12c311616883bb07711c6180411868bcca1faa52648937bee9cc9b40a669c770632c13daaaff8c3b9c918633ac7006196720e10c0f9cb181332c7794949a43852554e96b3fdfafa1eae4fac0d4d028a5e6a84090a64afd0dea4f42d49fe1a73ebea9d6fb7cd34ecd2081c192c060e97234fa3e9a94941cacf27d345fb0c0179af04217bc70857bb53f55cfb7a6f3b4268a56272e8515ef13df8c4733068717b838b8bb0fc761860e4a336ccc4880bb931c4717bcd0051478a5cbd234a6fa241cf2613dcb4fdd65d529f3c47b143fdb4a92fa2c6dc9d69afa1b6cdaafcb13ca99ffe6bfa3fcf937c619d4a39da2a312366fcedf93db30202398ef3b8d35b7850b375c38c016c4f06aa7b8de9c7105d9d2595abb052c706c41660b36ea586e7bc23bb5e79b68b4f0042d90b470c46ac1882c7c9185eb5578225341b7e5136a1c6be2119aa65d09532cd4c1731c5808030b26160ae036472a08b4cd54a7cc9d4b5597d74cf115ae708509b8699719c7151e700522ca184219a1bbcd11d089d114ef6cb11265b815aa608524364740468e54a8cd7ac60a272b30b1cdf47c7d927054010e55b0421572dc34ed884f30756d151050051c5400830a252a20600a634c01b539526f59412913c7a556299de2fca5d3de13bc6bc665463fd52965eaf2b7cdf8d62980a65022051db8db1c31eda8ada9e2e09314342085236e5152c811053b442189db1ca92c2d202347aaeab25293e28a37aef7abb628521472dcab2824611a4f1bfabc020534dcbdc67140210b7771b4e8cd68cd6a356a4df9636a85afb62828c47875cf14936fa2818208071968b83bce95c4f8ac1bf4a668cfb46a8bba9fc9f82293a185bbc7380e329ca84e2e5a56a5ea3f4f5843a7e813c4f02aff364bf2c44fb802639a2774ee3b3fce59862110c7e10435aafbfb339a7f9fa52986344ef8815757c76874f249398d3523d3b42bdf372ae9d44cd5b6d2a4a49cc61a3d1a09b94f242507abb87b8be3684235461ac67882bbdf388e318e8c718457a115d5a65a5155555490155555452a55a946eaa7415584f5c43ba5c247fdc2175d6a6a747716c7c1041930e1c404093041005ee9b086aaabcb7ca6a7131ef1cef1b184122c815c020e77aff07659a9398d39610d5527270a9f37678abee8b252f3b175ff8c1254f0e2389420a4d2f7b4fb4693c49083bbc3380e3164204607c44022c6a7fa5ceabf2897951ab1cc63cacc16ef1ad650b53196d12e2b353575da6c4b9fab4eab4c127a908423497841821b90a00577171d0712321292384211701c011f0147187dc0110617ee95fe272bdea7df2508fe93610d55ff64b5e819aa422c237125d52f4c655b8e25f9e78b610d559fab06b46b787252559f0afa6035617db19a6659a4562cf50bb7fe1bd650e934c577a95f18d65015ea509768fdff51b9acd4547bb345654c96b7547e7e1cacf57ead7184418411bc30c20a8ce0038c358081060e304080038c28dcab1d7fc27a078f13972933b563e37347355332d59554fdb5a71397e7f8a67dbf0c43fc52a119d7941996f42944d5d279cff224552090695d566aea69ebe8a44b2ba84b53e08b297b323116415de6df76a7f84fe576773fe1fc43c67c9ad79ae4251dd85feaf0120e983440007eab9a12eba8ad2ef3ef148ff29f6759ada948fd4e5c3e4a9fb6e27ddaaa4beb52ab9bc52f54abd2692faef8dc3e2a28c647159ec45450cb27acdad65a431db684614c18aa9fae27e2a756fa2ceb89fdd4eaab965afd2d757d54e7fcf7bce7a39c2d162dc772db6d6fcc4797dfa7495d6eab6d1813d650ad72aab14996199324d0a779876178525341e0274485356178025650cd270c7558bfb325256aabc712a7deb3866ab5cb73b45b9f8fe2d25906953d31a909478cb186bb57637c31468eddd64433c6c76b2915ffa2a793096a30e10baf98c004b4620210f76a096d488935e39ad24ba882670926f7eac37009dd49e8c4e7a72e215b25a0a1042daacf78ac66b5550935ee4ab0dc89e01831ccd8252a460dbc02a273e92c6f462b9ab435ed5265631c30e395cf783c4b0b9ab405222409484802063cb439928495249420210948b8c22b153c45aa9160193952ab23cce1086284a023618549d311b2f023004989f5084784b186576174e1f5c4619870189de3306eb8bb11ca70374212af8c3053e51457d49fa83fc130c3dd53d63cc1d0020c163014500431142149954b27c6baa67414a9d29822c06c0b6e0b8e462f2929e313b97fa6f98b2f7ca14595dad9a2295b3ee90b9a5b82a09448043e10010d0f6daa246e24ac8fc2102174c7315f9f88605556d525116ef810c8a886c0850f01f5216cbc3d4230c32b2178e1952e8570855742b08260c61804340861102c209801841cafceb3a6442034c0b422364be7a3b7e596e00f3cf083ff018e7adf94df9667ea032cf880043e80c2073664728a53fa9471acc90b1878bcc871f762d40335787a20831e08f1ea7e4bd5186ffbe339f2400e3c7081870752f0e0c60e7eb0031bec80c6ddab53d6e34f21a6baea37d1541faae1ef161df041076260f47560ea60870edcabf2fee954bec6baaca02a0765e400a54b1c98210c3820010e8ce080060745dc200b3790c10d72bc3a61ea17deb086be4aa7f97160c21aaad221d5dfd85d53f6a42bfef0065dbdc102ba20a32271b53affb5bfbb808157765b16ddc5a79e3e6ca006ea4f8f0dba2002135373ecc90626af36b0dc3d3528c3bd3a7199bf862e3f648884b8065ca4b8fea9ac418d579a0678a0419212cdf97ad200488ad619e061065ccca0f31954199021033475dace4f16d532f81c0331dcab1868516b8d41e8952706384e3b7ee15eed14dd6505c1200baff49b461858ee1589751233dc9324f12461adb526096d2eaa784119ee95469d2f48f282cedd0566b80b522ea8eede82325a90c4b620c659b0c6696b09b3808bd19e766481c9ddab5a59f0f115a4e1eefa9194fa91941accb1a7ea1a61590ae20da2290a888082110506f0eabea84dd39af6686bca14cb3163b22c9d5f53ad5b4afab42db8cfd7a3ef1b1fe7fbee09b8c8f80426ff71828f09d0d8e57d8b4d1394c0044036f966f5555941d7044790b630630b2edc1d54495bc4b87bb52b89b7c0e11eda9c296924acd53d2d36ab69924ae085fb970088bb5738a656d792600dcfeaf92fd290a00b77af2c096232ae3a48b03f556eadcb1108190117ee150a9be4084277ff2143e465049d57f8f4a711f8f9fa7c2dcad0a20b7c6a91851635ee67a945a7858be00bf730ac201a116421022022b8e15e85000cf72accfe4f7cfad328044eb87b653d201803041300018b7ba573a84dd3a62c88a5ba7f716a9a96f48131783e3003f76ae6c4a569713d3f30e4035d75c3f06f708c07da5095d7870792e8001a9e0e78a10314e840d6011b1cb8030766c0012b38000177bf714f165a984116dbbd3a4395de654b156a1df74cc98c2b8ff09e1ff2f84c82f54dbb9238c463eb34f495ac49ee38cb1de48f13a8acfec419a36c1638361086c5dbb4ba6ec0021bd8a18132dcb705a53855f1c666a9b4e8c966fc65dea39cbf44ed785f97368f52d00ce021b4a99569926a067090811aafd52dc50cd8702361ad1e034cc000053000720f6d40164df3b5291578d71a7381395c800aee6ee39e0ba08ecd722c51db9cb94085051fdc3db4a9a00a02dd32ac5096848514b040dd431bd04858a1b6086a4f58c4b8dff76081c375792da0865b408c6a6b8b5aa00baf5e2c9085bb058878cedf2b6cae20a20246a840aa023a2a500405c0a0800b28d0e2b1420f56ccc063850aac00e215aade527cd30e6bc856d04e4dac45fba6bd752ec3294e8c77584327e43dede7d1131e412c2d2131d562aac31aaaee677d4b955a9d3c4ecea7a7fad9a2d6bca5b5b7146ff9a7dd667a2a3536d1bf9f52b4c28809ac115a99409ec049155ba8428cea7e4e311986617d11ada7cd556c51d91809ab5802891d90d000494d6803aaa0fcfa96a091b0d23a6cb6288a6daad21685e4e38e537ea8463429244c4e5daf744ab664fbe64a6a087797c23d395e6cb33c1f45b145ed148361dde39f271eabcd59c9f9a0be80e200ca09f7ea4f9c3a3fbfe9649e76d4a45a992969abce34a84f85a3068e18385c54687ada37716870bc140d2f75b0a462a42c70af7429936cb631a3d358f37d382507aba4476c33b8ef17b87b14eed93f7675afc2aaf4483ea31b9f2e2b357a0d9d44dbe81b990cf72a0cdfb4d9daadbfa64c332533175edd969d335af30df74aa7272ecbd39ea850c3dd668b5241469545a62274a7a25e2adcab4752a266b87b8572816e77af363edf4463b3454734292a44c054e0152c0077af74b62c2d554c41f7ffc656a708ceefc486d316a7918906b306265a814eb28ed49b36905a2db14435ed894ff977a87462b39e76ac58a3a83d65106a4f55a316a55fdca0472d0ab5a83a7393879b2f2ad27cbdcb1c6e8c65b209ba416f724c81867bc6d5b495c4750a6f0a203ca50bca21a501dc3d887b4c5130a9c074c4bd0a6bca4c9da41ad6508552c31aaa6e19d690a73482521625274a9604dc43628174828724dd1d740f19800fc28ba07a9db2b490f8df445373e4a8c24a62fdff0345e7c851b1a0fc098faf522b52cd91a32a89a021b53a71498352b5d4214039a682bed14b050149b92de07edd828e46322c405252c6277292610192ffdacf9804f5b6e0fd6bb765b9f6818cfee215d49f7a34ba2d2929e313014dbb4f8ca4ccd8b431ce1607a3266d4db7051c0149b9232029a32ead204bd442beeffb52c627b24b15fde3084ced32bfad71771d30f6c636856278c8c509efd39a62c29a7bc323dc2bfcaf2b0f8ca201f1e001cf78b9d76ab003a0792f09d401da70f7fd2136a124308604864800091b33e09dfa1b1b940d8c4d75aff66977ce87f7c6a0163513de6bc3b0ee740c47bcb0474a475c8ce0a10abf8fc625ac5aa3a5a974962b46b6703fb1111a23265250418a0f688bcfffd46757fb660549619242f34821441441709b23f8ac20fd2954efb224459145144eb8bb912355c6393f8f9a38d4a451a385bbcd91ea240c4f52e2a7de3ff9e0534d8c7bcd8dca53440c0f3589ed582449912c8a840db8453abf8fc26691239c081edc4b652502867b45331a8d5a52d021590cc119620ed968de40330500b887c60934a89330a01d7a87ceb1a798980f4cb5a3aa480cda6505813c33e1ccc90c0364c890c980cc11991d324578222086290260040210e3454c8d276600478009014cca4b1a3c2f5be82c74125e31e1a786a5d32c4da85055c96a28aca0f0c4a57ee107aba1ea4bf6547e466b4e43adf6e8514f3edf476230bcf6f3f785b6c459096b13d5059ba8324cad40a635b7b6a33ef189454bb654d8acda9a6e05ddb7d525756142881a8488414807845c21a0207440230817415882a0045100144d80020450a478a048e24f5c517f5e135f1be3903a3c89a9f577993f3061058531a83f6bf81286ae896be812bed4266a4ca973ac4b58f3906bea3f95651dcbb3be4aad4eb434e968c16909d222840df7b40401c4071e2020901420eef24fdafaa56c4de34cad52a74555a6d53865cf94ade71349fc70c30f307e58e047901f0bf001061f3ef091fa00e2ee41b8c7c78a0f1b2c4f6039010bc8a263850f2b695841c10a8e67a57317222a24cc7582c5e81e323057c607109a161fdf5fa9bf01bf8f840975198658ed31c2ae182dba8435549f0c7daa0a7672d526aa4ae92c37c641d38c4f42aca6d44fd5615895b7de17ef25754125062a275021a9741e15234858b854586a13f5243c71f954586a28aca5b38c09ef87423a74a94d54971c39aa2aacd6def375ca9ea394cd2f9ede8584ba571e12102f3da4233c4eace184199576e20b77f7387185bb573acc91667c22a83f9d50b1312397efa341e113025440c0424088d11146598c72469f1e73e8e1024f0f0eb857553e09eb597e5f5849fca92f86fb6760c24ae24f0dc3fa62e812a6c4fa227ab2fb41afad091defdf609cb31c8d6852de44539a94f189f438c2e6c82dc330c50c7ca65cf1468e9c18444a09dd3da5c74bcaccf78d461425b57c1f4d0a0f0cf03879d4af0e5f16be167c3e3e1dd60a0a35280c75c6a10f141f41c22f3c09f28109c19caf7c549f2035888fda440df281094d3b25a5f69ba0fe9cbfa3212a6854415d3aaa20951bfb454e662a88c8e7b66493b6a6f3cddf368f1b6319978d71eebae0e9b2d01a9b3bc5a09d8a9d06822a92280e2223884cee364734f8a223dce60867c67f26495c17bb824e3893468e54aee65ad40ce7787faa6733634bb2855ec2a9a4adba9bb66a6ba0685d6839aea23de1eeff9904517f7e1f0d88fad3938d414556ca0ae0d536f768737c782e3878ae225ce505e4f280618d96e54141034a093c281640d1283a504a2a1c78aaafbc501d423c089d3ca1ceab930a4bc5672ae3d39fea59c2d4d009e8537199edf9a3de3a635405695c95896aaddad69445e99b8c51150cef999a76eb94e5fb68c21044fd099ef8fb4e985af5aea15a2b5b53113ced08863554eb2753d59cb3ded39e2d3554fdcfd44ad7fc282e7799c793a586aa8cc310a423fcff11ee16500c4034a025a6d044aa891c3bf6b0430a9e1d46d831c50e029c18e1e44f9870afb5da3a975a47de3a85a29e7c9af7c7d68a77cd39796d5af253ed5841da9aaa695ab09ef64d8c4355558dfb6b14e860719d659099fc3acd8fa633a7b14663442c221791374d2bdebd6402d72c8b5441c29826e99a6511f71224ee25a93325dd4b726ee95e8212cbd299fe38f1cb752fc1f9fd793cf1ca1e49e710f7922672fea6daf64e73178a65299bb3884d95ab06abc96ab49aad86ab11d574356230b1303a57a055f2d816f528c68f626ceafa12fa53c6a425cdd7a17be709279fb305c3b97f1a6bf6f824e9e31c1243c29cb8f491f73904c634d31f6f55f4fdc734e335cb22a63175c1b874962f6f8a2b1bbfa8bc29da8d5fae8981f8b832e9f832ee25e3ce18c5f91c72519b693a5d10e5122a72f67103e383c6bd8345098a6557e372feba97e01bf792d3c252ff638b7bc914a90ff2c4354bd34aca3c61dc4b4ed94cedd2b43935636e6276b631a98b557e2c71feb149277cfe3de1d39a683e6397db92ba586597e710f70e163e4c3b96a7697c1a5d965e8869cbb1bc291453dc96d449722f9922c69eac4e8340f1f94bf71222baa332f302d342b3f232040ab086e482cf9a71d93191e204e536d313ca8583a24b4cee7ea3a4e47a94323e11ecc2b12e9cefb3704627202c4b3f1574f249f93e1beeeab451caf844b4b6e6d86157daa53616a671a90d9661591a86494d1e4cfb011ad040083c04be01df000e54e03750b8073129b22fbe22e0ee2070070110d8a8a27604517f0601eec18488e9ce5557687c1cd3b427ed62529344187a8cc1b93871f713b8c360ee3ec4099321392fbe450946e03e8272e47e53847bd8c38466f43745b13c7960d501f57cd3aa3d1a50cf37517805d5e313d1254ad2256a4ba7899e4a7b7a8b3b01fec56799f738ea52f0cbbc35b7611845f337d654b1f96df6b16ddbb66d9ba6699aa6699aa66559966559966519866118866118865dd7755dd7755d97855998855998855998855998855998e7799ee7799ee7755dd7755dd7759d4824128944229148c4711cc7711cc771dbb66ddbb66ddba6699aa6699aa669599665599665598661188661188661d7755dd7755d9665599665599675799ee7799ee7795ed7755dd7755dd78944229148241289441cc7711cc7711cb76ddbb66ddbb66d9aa6699aa6699a966559966559966518866118866118765dd7755dd7755997d789b84dcbb0cbe5d4e251b87be92640e8901f652cc7ac87e0fc52a454f0cb972cd74c711114365fe5c739c4bd642c21dd4b76c8acc4e017f7923fff06d3b8975c527eabefe863c6c7cab52aa5b3cc2b3abf9c24528953b2fcf8f28ad6f467793e129cddddcdf30485cf96b29a762ec56a4de336536d5fb426a9d2cfa364fc139e114d5652c251fd5450773751a971771d262435e85c895236672b926af5b5f304ef78174ea0e13a572911d4daa2fbb467792af3a8cb5b4fe9f9559fb445550cc4dd89b815dcfde4264e2461a2a772b464a8840aee6edd04025ad42f72f1b863eb32c7bd049440e92cef6ffb23c6bbb60dbb56dff1f14653791c9560fe476db48db3c9b2caa34b8d68f371de342d0ee882bfeff3673df34386c8595a3366e69ea454b6a732c7dcf7a14252d9399fc29c2d3f6488bc6855f489c6a515a471e967d420aa73fe0545edf7a1bac3ae21f773ca1f65b8bbe9263cd4e0ae7305ea4e9ea2ec54e13648c10682987c2cd0b9da6799964ad1c64b8eecf4745fac226f0d9dabbb997815f013ccbf4bf0843389323e8e699662fe180f0028269d16be0f44b5ce9506f3a31d31a0b8c3aeb424b1480738e5ad242e4f9f75ae762976d805eafca8f9a6b1dc7f32ed32db0e14dc12b51020b2d0000f0226881513ee0e67febd2d8a92b776ef609132e1ae287105709d2bd3b6284a6a5f214c9e65e84d3beaad53996adadfe75e62e4861466944451639a76dc1a9fc06dc1228fa63698f12e21e2dec122c79e1ea72cb9970c29a171efa841cbecbf19cbed5e3293634fee9d2edcb244260268e87486c88ca3d2a5ee3e240725ed9fc93f33f32cd9beb9b2723e0a83fa17f49481dcbf0f24c7078b85639a7605c84bae34687215c0c4ca43fdee59dee051e70ac5c4ba9613f5513cea0aded847d5bbcb98929818f71218ed5ef252e29222ff43262133b87bcd98c467cd000bd2f032bac0831bd1bd03423099c9e15e22a4240814fc46c808123401cdc01d749636a1495b20a1119bd04805d984a1116dda657596baac55ce5bab736975d5279ff3f759da5349aad56873b5254e4d899f3f0565adcb6b43b8546d0db705c3da6364595a6cb6e8cd3a3f5ab3dd38a6ad20d4bd18458b94da3eaaee543ca54eab754cad763ade1264d2d6260c8de07c99f74ae8da37b1b4d4d334ad59d52a9bbc640cef5371d526ea1461e5119635a54e117a8914333131426a4a2d43986d477d5f63f3be891254104208218638d1fb7c1c23f54d34420821c410ee8edd4489181742082186a884104288214e5e5b11e57c143de28b82f3b742f934bab7e963a38dd413de3a5d11420821863061c01e4e5be68dcd99fc317ae54ba795d9d89cd124ae397ad450084a0dc35ae18dc3ab86aa55753923862c1da8b5ae939098eacf12f7fcba04aac455a7a5729ff8c45597a096baf10b7ed929ccf58ee9ee47b8776e74ae5012902a91d6040931bc9ad1b9fa442b9a2071c3bd7ef72c83a454b4bef681d86d597c5cfca2cd4752ced8fd2e248cdefa098dda4c835ad40c7aca406834f932266d81a454fee29508e87dea934567b45e414f599f7825ff3d8768776fc24d0ca00213a3f6f47d2606f8e1a9bff91eb527948cb71d757972770448e126055871f7139e2995537cae3cac3aaa3cee9b748a12600c130260e16eff9a987c21bd286c92f52b4b58888cdd96059327085e3c82fb2d588aa0ce150a107737c1a10594cd58755d95153a513857131c1070074b6799bf93b6a8948e124d9430a17355a216a50d26031080c900aebbd751ad9f127ff8c31f888476a9e2871e29f596a712285a766cc06facc9dd74e17cdf85f37d256a43db4d8a80719dab0b07c5444f2558a2b6d24fdafaa5fb6fde33b4a45a7d7d1aadcb546bf24ffb4ba169e3fd3ad4a772a3f9c73eede96790786ecaf4b4d9c6acec13bf5871e7533e9d4c6e50e086155ebf8c737e1b23390644b50f9dabfce069cc31094045edb52010930088c6c7017729f64849abb64ed07a949212eb18953eb109b23925d58c7fd4ea2663544e7114b5d2296aeb8e1d16f52ab5d210d85fba24eec2c4c60df7baadce150a050504d1143c8d3920be69ce1e4f7c9e984593f04d676eea83dcf2a6269d26d8d4df80f8a61adf5457379df9f1c42f37e3e7d098a5fd314373fe8da579fd178f9fba76c83e7f86a4f73d5fa7ae7d99fce569cc01eff9fa0f31ee5ebffa6dfd57ebb0dbe607d50a85cf9b475524aea74755adb54e71992d4e55ea138fda65a586a55627a679e9f453efcea54589d42a9716ad27210eb76115fb1b6b8a416aa5519b772df3a7540cf99c9aa5fd71cf9fb9ffe34dd19e43f2e3bc8c55b9566506bfcc905ee39b6a71cc09a19cc61c3ca4dc610f77a08387214e0d43985a9decd8a16b15c1177048a28234c270c61ce47087905ba8ddfa546ec7311940173ab89183d51d15b5a81d8db0431229157fc1f1715074e7d4e1dee1031996bb37c14bd6f09236d4c1dc196b94cd4b3413192eb8a318bf5c38e0958103f1f96c1d0825c660037d96322bbfd3fd1a544b50adce4782b3feb3dca745921243d493f81442f7f8297aff4553677c62ad4f169da9426d6d5579a70df7a9a83c421e5fe271f38f96f4699f389360589d6cfd286ca6a61d9e65ae3eeb300ccf3fb1d9a21fb2a5866a659a5f7a24e54cdd3bd4e16df950b6d8c4638971f4c6d8fc9dfafda5b22dcd32477ff488a63bd46f1aed4aadf44cad607eb4fca86759abaa54f9a8d55896b05975ad70ca5c9ef0993231fa3f7ea754301aca8fde3c79962649c2fc09cf5c8c9f304dd2286f9d92dae5dd2589cb4caad58826e5b684a394fc61a8a392d88658c65aad7ffcb3d6f4e28ce6bfa5796f794a991545e24aaad50dae5ac7be6510cba05286af7e27f5fbd4fac9549bfa194109a576992d9a860ad208bdbc9971305cc6c58508ee3e857bc0c007af747e9c54e78a0c336478a94a6709baf566c4765b96f391e0cf3f58aa93b4f1cbc62faf879c2df8e5e29442b6dde3e380f73f107c81699991f14104f4f1044906866606043f9d2b8d82f27d2098a2a0a4df173a7109ae542a2c952461eadfd37e645c5c4e2ce3e2f2179f279f2ae3e222e3e222a4e6d3a92a2b129724fe4ce29bce64204358f4cacc8b56a582523236453bc4f7812078febda5092c510ba2fafb48f335be6936a1a7141ca5a4a4a4e49413e6d492225a959417ad886998a8daa640a1025008ff42810832dce05e61b5897b49a3db8293840c5dedd7f7be8c6e4bc6dbde161fa39632e3728b7fc7279271ce0f9e18dca635dd7f534c31cb6874f2198d5272b0caf7ddcfc1e2f75d184eca69acf93e0be7fc9149db8d3ea13a010d2774e1a14d0585b5223981c479eb386f799d80c3dd330659f1d30435ccd36774a5095d34a1c60353b0c8eeeac84ca489c6cebadefa92a540470a99286aff76c3ac8b145ddece3666029d28889f91e4258edad54452ebb09a941f1d2870a2f17af2224791a759e3b621e990b13df698e8b2ae6cb4bcb73ab2f304911bedf69bf59908134791e8048e242f9127765a365a0ef3de029d268c4f7624a68d22aedb3a8fb3c8ce182251f4bc51c45df25a6266654c1047517c92db30ee769e27d2723a4bd8ba4ecc46f1b237b3b4ccba663a4ae0460b2345f67a1e6975db5b31c8cee22ceeda4891cd32ee922950749220ba441c8991deb88dd83692dcd941c2e6bd4864dd2b1a3171d4b24b059d235c91468e9bb76d64d6d92be26e3a615c6bb34cbbd7653d6b3791d74141c708ddbfbdbc9b71a3a8b3b6cb56d101e3da44d8edba31b3b28dec8ae08dd8468a96f62fc2b8ed8a703a5f601a2766dda66dd6a57998683b5101913e443a44e03672d4ae96715bc659e3888df03e5bbe0fefb3ec60a033046ddbecff35628f695a678d634708db288aa21fade5dd9b4e10c6edc7ed62e393d9ddfe5e537480c0597fb1ab69a275695713655f3adf34ad6954e9fc40bba2cf329138769c7675de9b7a747c8091186659967dd1f3b4cb59a68fd4f142bc5ac691a2d74411b334aea3f9be93ebf4e07a1c478ee4f53fde6bc330d3f75d1d1e74f6d236cf76a2c58998e65d9d1d6056e43cafcb385177655ca699becfa45393e43a3af030edbb8bebc6ee7a1a29b226ad9383ce6677dbbcce1a3d4dd4699ee9fbee9ba22d6121df67b11014bf7c5f099b295d070757f45d366a6f8944d7fd2c53a16fc079192662d7ed445c26de6b347d1f7896a0999e9ce874315ed6fec8893c0fbb9e7b0b077c24e5f789a549ead860d3388b596fdb38511b33f14ddf6759dc457e5fedd4a013af6c138d9b7559a3c85a614515557cdfdfd4fc8cd220b36427e22ee961a3dd2c5167fabe94ce0cbc8e7c51b76956f41be69163d5b66a30a7d88e0c32eb65e368478c1469deb5ec1e2d7acae9c4409475e49665dacd3491ddba4b7760a08d63f658b6719ac87bef7a622789665da4f8dddbbbddbfb6f1059ed869de8bc89b6dbf69b77381d65d1e478a36b3326f14ef98eab460146998a7691a897557b430ced46181155d4efcd1c34871fb2b9a406705a477adb589b48edb2c269296e97654f0db1dc50be348cb5df7eabc0e063a291091b7ebc66bc74bcb464bde9c0e175cf72291b67564e78de2bd5ee392a683820ec32e9b799e1d31d26e5666f35279d01829d23901877556ebae78c5edb2f77aa58e09c4ee37cfeaecf6f6b3cd7a13882625ff6e39e1fc637c74e6fb52c6ce169bc5d991d448afd3441c672d179d126057375e1ed6751d895d64d675aee89080c33a4de4ae25b2dad53c516a833a23b0f712af87618f5da326d22cf259be2fb5573a5a58a2d1bbda655def715977695c4ad31181356e966814ada813919cc8c23079b658d109c1e891a41dafc8d33652cc44515b7385021d108c9888cb3ccd7b0fbb77b448d3f77d23d3b6315b8b9d0ffc5f16466e9d266e97bc96e50191249fecc4cc1a459e25ca30d3f7e9991452a7035de6599ab769d9cd44762437934ed998b4c381abe3464eb3b6df44f6bad8f57d29369d2cae88f36c265a97e86277fb0ddc6d1491248689df5d1b668d8fa668d28e06c6cdf2340cb3acdb79a348d48d68525cb40be7fb3a1ce864a0c34811d6659b25ea386beb6040c4dd8b2449d172228bbc9d7681cdca2ecfb21de989de762216da25be98bd68895b976d9c55752cd071967d8bbbc4dfb891b43a576496bca2bdeffd28facb55c08aa37d91f42c8db397286ee0f78dbe6ffcc0d42e6d688ca400a14027ea6cc6bd763391e8761c894f3b82279cc999efcb2d5678ff9ec7fdc675d6b5659f99be2f631c6b9260a934cdffbe7d963846e6fbf0de9fb72ef3043631b3ac355e4c74592c23c5ef3b52854876d7dbaca8896e7679d665fabe120477a6425300c9a8919b76adf1afb113eda699beef064361b448ca1a339123338eb4fe1a370b337d5f0e16c19bd19a2213392469b94da46d9ed7799c8579a6ef03f1fe3e295096475ab1d3eed6dd2eb3ac68fa3e2a1edce3f78daecdc735bffcf17ddf774f2a7cd8ef7b738ba9be79d3dec7c9e9d821010e8789e4d861d65ed9e5919d364a47b21b452229ca9ebb2e6bbb65b667a9f2c41eb5cdd32ed16a97d5349175692fc3deca3cf25e9bd579d9357d1fde67096a5c0abece16bd72a691af5d97b39be8b236db3aec82820a4f746517e65dd6a589982895f7f9dfb75f84629eb546d15edadf4cc3fef125ea36edeaace875a39889ee296ed89689361113c7f74422cb74b2c8eb12c72b6edaf87f893a536572a47531cd8e1db9715bc6dd9b4ccb2e3b6659673beb71226ee69b82cbae4adcaee569a2e73cbb759de53d9252bb9417c344a28bbcb2ee72f7fa6bf24c2f5ed626ba3cd16bda5bee4ddff77df7fcd39b509b4bdff744e992a31589e46f5d9669e2765330b2b3ecb691dc66afa691a2774739b725e5fb348aa1f891fc8cbca2385e6286dd6cbb22f2b21b773b4eb32c767123e9da9899f1b237e3bebb9ee66956c665e226f22e8bbcdee579224bb323107b695de679dc386aa475652f7e9f69fee823f4442c1b2d11e689dbd661e4f700b9bf7f2f6deb3cec8aae4b23a5b048a0eb324eb41b66c91fed652dcce68a1d67498e13799e386ae3117b9f1475d735fecdbceb5dd3f7812223ff23e6592ffb17afc85dd7f47d202934ccf35e245af28e646675db43208ad18e9e47769bf5b2f15e91347ddff926f87da49a4eb39ca66ddd485ed8bddc68fabe952277d3b0ed337124c9d1f336d1f47da6cda5bb7f6c44fe5e9798611ab769e278696ffabe9b3a49df973a6dca35e49e25ea4c410f8d68b3444b245ed94892d9c859d3f7695c0aee138932236662c66997266edb465acdc95c4b2345a2f73c4cecee783913febe1f4f98f3c7f77d9ff622f016bbdedac7ecc665628c27d244bb8d9a665dccf334d1f47dfac63e0aee2f7d1f04603af2fee546d18e9d75bdce9abeeffb747eef4534be48ec441c47921b772df1fbbe0f3c4b0b82e2cd9832c44564314d7cbb5d6fafc8d9316f9d7209c9464fa4795694892e12d3acad948acf42f380142b08475e6cdbee1539ceea6ed67d1f14de466adc93ddb679a3c75d64a945b48936fbe4b5a3b5f7ca2c20e3388a5b67b5cb7524c7a1fe8cf93ed3ded813193676a2d5b6311b33abd32c139ada688ae6fb40f0fbaaf8619156f6d6356622d2b33cce23490ceed244493eacc8b2a24cf3ae31bb16295e161167474c845918e689d965b3d1cab8791829769b486a9965c52ba4c259db96599a481b3bcde238cf34c2b2d49aa82e594cf454a67c1f7a2abfef949e2fa4df468b715bb7596f3972bb76fe152744a26c14c951b4986779dca89920403ee789c84bbcbcd1669bb799be2f5bd3c863644951dc9ef3ba0ddbc4ee62a6efcb5b83a322b548dde9e901295f0fcfda3ee334cdcaacb76de266fa3eb04ad93631dbacf16616a65d32078f6cb319b7691a7939addbba377ddff7ed13f97d0ef8445877b13113b5d7b62bb29ce9fbfe33e9c3c3aeab13596ebc17375e32139dbe4f835b631378e627ba4e24caac2b22ef86892c27224ddf87c2b95489445d76352c13619ef5c851bca6ef03ef69417cbfeffb462410cacabc70d8a58d58672f2e135dde968da6ef2b9de5cdc98665de78c5edea3acd1a33ed9abe0ffc3e4d3b617c231335cdf2eed54496cc46aff34cdff77d1976c2182c6510bc71813acd209800eb3ec86d18ca05eaa890082500b4a38904ec60c009129f4bebf83c005bc2010a6002e3bc440e3089254e1a70bd0697a84c28a13f0cf82ce09e16d492d039147062400232de16896b8923c89d22e002df042671008d5b800172306a33a00037761cff8600dc869974d80582a5b334696baa9eb354ea06e0b8c0cf008cc04e78043f5f37dc86a1e36b51110e10009883081d43e4d89312425c2036416c2271a30620070040417c6c5ce0ce7603b1bfa4a3e4cad72c4de3cef9930e06a6c8323f0e08823be773b8115f0cc1072c74fe644f1b43f0010c5a001d21b8e328008d9bd8e8e006110e05386841f2206c005112734a8313ee9d2bdc008aeaa714541316726e709c20e23482180500c02a7730840fb62040280ff503392062077db8c2dd4b6eb803c0dd8328f1121493131d4c4e68b8d7af7edfc6253e747e989c40d7b942f18e1a86083189b0ad06cd922b6ee4ec230c4f3ea8cda833fdbe356e82e09ec4b7f842e712c776a1840a6c43dbc8364c1ba50d930dd046046c6cee6e43015ed221dd30d1016de801f567104e58711e01817a8c7ad4939c5b7e36f9423e990cb3c917526bade7912a6ace2dc12fdd07c5c0831d04e102dc6344be19c4d923a53651cf3741f09a18881774c0864b10ee008882beb5478f31eb1f561dd970c20e37213fe05ebfcf8444fd2f3e2f5081ab867a545fba9f5f08ff798b51d0b4ac9062482b35a5e6dc152b984ce1df85fba699beb8975811ada8a844d3c7b64d0c95322400c07000d310000030241a0cc76332b174beb30f14800164ae5cac5ea08ae430c921858c21c68000000000000048128200e13f56f7645aceece8a6fb95ba6e46f18047d9f866c9063b63d4dc0a71cb00da24490fe9011bdd4c0f8f8e9a5db1142e8b486d92b05e302bd8ff738da601e98b283fa26504b5652acef2e07aa36709aeebc4fe75bac0fd9efbbe487bed6e3141cf2c770a3dcb3770ee7f563f267d13d54c84122bd2d468a46fae882d22527c31daf0308232a9348c6303aa28b90acf87c8736fe19dc7be6972bf5eab96f6062e443533ade8f3b0f4e3dbeae7b1c589616d2164d8deb873dde2e34187ceac356d88c8e5d9cc36977e08c13ef148fda25d14377e6c4c6e1fddfcacbdc88e14d1af7c2c803bbfd00f37d40beefc9622b3da6c25947ed1b87199e3f1c5683da1b9de8e05da20e8b9e6d86b07f7efbf8c29356db92bf9593525a885cb0fdc6ff5399114043b3ae56eb8fd442e8137d00a37a3745e5998afc82dbf8994b0c66da05ca68484d431162a412eced7709c7394d5c7d47dda9dd003715a3dc7472d713fbd6eff0d11f5e2d7a76d120649dc7ea693b88c2b2393eb32be3bd7a6350cba479a0689880f210e2b87ce9bf7b2a4df00320aec1f807fdc18562908f5c6f756a00d471fc17812188d9eb04685354f80991f4ec5606467efddb72934b7ef6b53f6ae6f3071a41c054c562c70a4ff6cd81fce9eb1faaf1a5451681f0b17370a55fcc250536db1a117f1fc87ce7b89852cd2734bb1784ffd48ea28742aaddb163d554484846f92bf7319c33b71e533dcb40c615f51b3db829296aed670121f27970e2a069cecca87782537ad41bdcda58fb3cb0ff742450d5a7c6931f3247c9c556d23c356746097654a6a96c1010bae8c27a2d324669926c2c3443a4ef626777773fd5f5e1945946bea03da1c7a946e89c92066443cf1af44272aa17c71bc2ea9423fe1283827f5cf2529768c81172314f601c267b41a51a70946ea1ffc982f5bfe22ea65890f15b5b4de7f5e0d189f27dd14999666978d19b8a201e78fa7b9096e80352cc0e23f7fa1e2458b9c2037c78a5945bf4a128a37bbd002b2833a63ca9740ef0c8d658e9d61db293eafea2404fa410ceabf59b8df2c7d8a6250fe84daf1320743d7166594b2f80a7f1fa8fd579a9485eb4369595fa4654155e15f85d013b5a2e7e905795fba83d826cddbdad941c8715054acf01d92a52792e6b61db8561d0e86c83409c10af97d9a74a82494c461e9203c376295323756baa03b67b800044dc42e753756b689f834405758a4a4aedceca2b4cf96ee3f73c2bb895bfa031153adad579e77aba4cd2a7ae7519534c4a0f6df7ef49f77102ca203dba35f16b977e929aafd6ac90506e420d3a5dc1cd02f0bf8fc54c2f590062da2cbea781e7dd0779a0609aaa8bfef6a6477eed311359c3159da243f776021a4d65c13749497a098bb4c8e6b3fd33393ecda55090714bc80b75222da271297c9b3481244e8bc9133dea174237d28401857ea09d42a31fad0b42336267f45d70305e144aa780dba982514c302b8e5b2ae72bc6b8366b8b4a35465df1211c67c6dbae148b61d12a59e321452a5d8136b74daeb22a5d07bc226a63da1ee0c335cc724f05fe7e5d16398b370fa9f95906e84409a2f1196c3c3684da81fd208212e3b38479bdb05d044a4810a3e536604d1230c7bf6e2b3aec1c068fe20f06c373545fb9a013d10755e8b4210376ab090a545fc500717a2d172802e554a22657095ee84693aa80535f96e2257cd060422d69285a10305dd0d7779190c9cc00543b8824f3d90f8d03d36042174402f62a21ba9b6a9b7c1f2455d9074d9f0896f45234067ba8217e930532deb48abe310f6e0f86070d08ff694d34007c12f6b4a18fee36a432d899017dc553194441ab8c045598a55d14ec33666e5b5fc14ed6e4a379b84dee7ec9d49295b7789453612d91256f2acafa9cdbe433b15bb3ca34af876a39d2529d5e74dc70dec678df760e92faf8ee93703134002c50f8d9abd35c01f572d68f5f4653151e745eca5473e765e14bb1567802c9089bbcbf9bf0fa4f7e3d387fe5ed0118e1e704856356b12d4e64665e629a57d37433bb03a9a5202b942776062c2f09f0742d0823fbe3dd504c18f04db1da2c6fa6818e627f77e7d59699669ecb8953e9fe8f4185d5b4f5269a0de5b9c0ef85b5f7fff9bae14fa88f1198e7ba8258797545238d123460da44813ec3a094d5e06f5e8368a580ceda86fa6eb96aa3c5f21213133996f8788db43db992b5dd3c5745ad0ca38bc03a0066df9ca74538e71d291dace144235b37670ef7040baff913f1ad72e72c869fc6ac1b7c4932f09ceda876c1f7b084de76721391a6c0bde5d56fbe3c51ed6e7422502490e03fd761b9795851e4791f4d7d64a05a0819afb88610f49008bd61432001e20da322c2dcfdc7d6ca3020c5bacb7058028863209938093316046420f0fc880d5e1123f3494c48ac120e811c06632380a8f472a233f00921eedbe319f06d36ae47ffb616cb6902f34a992c1b3dc524c3e94bf6b7ee5d1002060006b9abba0fff9b9fc8b4cbf473156c8851d6b46f814b586cd2458828522f919c58221a93dbfbe230591f8d76ee843f9426a80031be58551d15104af9830eac4407a488a717776b5c84a6b189a0279c64e014567401ebace335fc5bb296d478e70e823f8cb7319a73e173b9ac2181c01599c93fda2ad27d3979ea0207e321019aad28892651e87f6e0a21fb81c7f80ba4d68fb510786f6e0b653ce0998bd3c0c70f65c15281c8d49ee5bce526dfe2e1b0a58e7d9ae6489b039bd846650d53efc00b454406526f6b8b001009dfbae96f2338c35c3c27798ae0bad9372bf3a04944d1c209e110be1eae8869ad5726bba625268ad34f5ab948d8e7929ed17fb0ec3fd377a9c1d3a3665b97ff65bcb0333290d7393eb97b99ff7e96c9e067a6b3c9a97ca573d9e2aece5aac2a66d9b53fe5b5b0d2cff7aa9cd7f3d55af71db586b7944ca7f659c846bdc71fce0a9666f6895c903f8d38a0730d0f4695ddfc3fea632671fa68bc8327f1dccd0bdff65e8fc9245757b024309f1c955e25037df4d6677de87a592710a2972749316666391e9a8752fe2c9d5a07ff6105280e979c207fe62ea758e53e0ba6343ae99d9a12a1d8dd3e91fbf95ef01843e172ce310604e8d4e3d053c734aff972519a316a17057db8eaf2d6cb45a5edf099b8787cb24e4b4803795a7427f8782a037fff061b0522badf8b00aab394d29eb01e4d217b679d96d0b3b97ad940b087df8edfcac5077ec98c361287dfa27453ab7217239877da166750b726729f8f19788a4cd52701fc17c34225d693afbcd5e65f6125dda23cfe7faf4392dfb3cc25d6f44b0f422bf9f7e8f4956e38071741177276a9be6d64c784c796d18a076609707cf41b03c56e99a0a4debcf63cb5cf7366663bddf9244cac5d95e0071052a136f083615ffd89611aa5a073279a089307e3ff07f269040a624b8413c9bd7b43ad05e98f47eae47097d0b3800cd588507f871f0f7b0af12283daec62ad5b6ea4e42ac0b152252f8b2c6cf4c3c7c6ace06c037327f5c96bdd9c4ff488060228878dedfafdc248cfbbcbb3391c2464a67ae59594d899a022d285f9054eab3c395cebd8334f7189f2b4777d02574fd5d11e11b88cf5ebebfc7de124fb21ce76b9ec324c6b48acbe868adf8a4fa195aa106639e00ce1e7b236662f760cf5854e1a3fd28faaba97c5a220f02c608636d0918cdece4533e5d0fe5ef887d48aebac8dd7765537aa882e8a78a6b2389864ce7e0b0e76c8e6a32437745507d1b58b60c2792df838495e9dbc1be9e9048f9c9d2860c722651b363aeb696c1b70aebdb945bff15631bb1d2bdb21d3d710cfb9130189bae76ce1fea613133fc20d163eadd509f3fdb5d93f734570c83921f59c3d408701f4fb99bf359113cfbab4ee208f58ccdb30881f059d20105b9112c6cfaf3f8c6aefa83ff9463009df08743f57d818f61f4cd4ea15df2fae33ba593c580a5ea874fb1e0af09e47707eafb73d024a8317525bf63d949d063665f9cd0d8532e984ad72a2d55557ed2ecc8f5af6a44339e1660fb9cbe29c79f3c61a1a7c1eb5b65ab717ce811c1c4e2d019a9f6fcf0bfbc466e89c89e8488428095b1761a29326662831443b7c59d012e62022e65fb65662b6358444cce607de51dea3146533cad50166ed40db2a578676a8700a82d0bf775ede9b560e3097d9d7dcb9cf9e6174a755a91b343b3665215e95d264d3daf5e36a19e066f66961c6c636002ccedb277efcfdf622d58de17192293e827f1eae09960801344bb3b1833cfca4397cb51f920850f12a8e8f4d50c252df973e4dc76100e46f57c8806872b41f1abdfcc434af1c1283cd6acd3649ce15604e24a2a05c21775f6f874892c8cf014847ae23105c9bce6b4abc36d76383a6f61d8a3a32f68d117e493a2945641d45a6f5c8e8516fd7a686b4c6a53be19efc2305bf357fb11b37de7d3ffcb99020f04903a2cea5228de8f4e443e9aa8ce43a7e873e25965a1244c0226642cb4c501df0f94a8df5d987f9fe53e5b5cdec5f9c78459197dc7367e24fae06fe5e0107903d8576719abc6bf7067f4f23d140044c01df1623602eb0cd33982d01a1cdfacb27870f7dbb7edca49a05f4c6303141aaac5a0bf97beb0daa0874f1f2e78849791aef6f54c5e2f5c56e444ad6c84a0fc1e5a70765f1eae47ccc7a4c6761152589efb76fabc02e484f0af2bee5dffc57bee25cab3e882b80df8fe16f497765afe4984ce42fc23a7bc663f22436ef170df922b24b9bf62e0c986d58bc6bbdcc86cbee7f756139ecffcdbd16eb3ab44dfdcbe1825486167cbabd5f01fc5dbdcf7259c19f259fff607264e9eb0f15554968b204073aadf2ae2aa7c403b08e49f7ad29f73194a117c4480d0d0365e5a8dcbbbeb7ca6ea77e8a55dd9da7f889fc963bea8f69fb019df4f879f324174dc9cee02eaed77475eb23c6018d78b7972fffd593a6d1a1876ffebebd61c123d87832fc7d8ffd85ff882b56d014ae43cbfaed34d53b65c9aabd6f277310ba08de893986738c32dfa9559ccf59d90dbdb1cf611db78d2e2129939bb9745858699737805a5a909fa40d0ab081285b84792b8074437ed1131cfb5437c05a8763034d705296a8ea47ee985584695fb6056661305e21b6d371dc79d732b581305016630b97a95bd1adb0f53ea18722eeeb45cc41cd54d0e178ef0c21b7a3fa88125d81777d92462c7caa2f1ff0d54346b7a74e0882d0f3bb475430b66d788819934420cec8f208001830f6fff80015a1c6484f68614c4bc910469c1086198187de8c6c719d1c02146b46d6ca365c1308fcc0c230d1b4b8621a289238667d238811919c808468c2086e983876fe180115a1c6638ab8612cc9e510660c20831d81f7970030719d2ce0103b33498c8ec0c6500334610c0f2d1c33739ca100d8e339a41438966cb382330308020cc8f3fb881230669e198a1191a4e644646328219434461fae0f11d944bc92defc1cd06dbfc6bab20db046c625cbbde9af5d55ca7562c3b4266a791c4c972e31e811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310c10407690551dea19e3f7a772e6cd891c970e9e7a0d4813d046e630031581fdde5dfe337d536683d9b9d9c74c889115d3c0a71501809f764e2d0ba395c24bd3408ff9e2ebac35710974814f82ae301d64ff685db056a0e22dc089192c8b5bec10c2dfa3821e69a878f301892c530929910fabf0539eec2d9c34a9383fa1d1dad7e00cbc53c26ec33210fd38b099a6579c311507da2cca5cfe75992b29416b7bc508f392bdec43e09d998e2f71552742c0e5a75bf106b4260bd90bd131ed606c991f54db8ea22bd253b89ee7fe8055c1d7145b712c91a3829993664f098c376ec252e9846cf162c991da5ab3fc3c55df45bbd770c170e63833d99846cfbf4532462f3decf3ea851bd1dffa9034ee836c4fe4fddd24a842c826a4111a6826e7a50a38e0f9e5b7780c6ec5494570956ce0e8f774ddf98e3ea4dba4b3c42f66ce00d28c8af5a412e4fd2d1af49d42401c619cd00b0633802beb4ed065a271ff25e741092988f485402c68c3c4a874faccecd5aa94d3897a08aa30f42d2ec0b89020a267082d48696ae441d6c5f9e7eebcc1f3a7ac14fc2a29c087f59e12c07c0a7e9613a775e941b757e993cedf63a0eff1f616a73fe13249870db4de8697907e9ae462a8ffffa845284efcda6e5d868b991e5c954d6dfbb68d3c5f6639be43c0bd1327245a77503e89847483bc342f9fffb9d86692e40b6604280459b5a83b767b7f75d64412efb012a5f9c6c8747427b6380a4116bd6a9200db5233792544fe3391f69a37ffa9a5d613db859bd9399b8a479d06d7c7a1171c14393f8e17f0ddfd7ef18c03477608335d41ab0373325331ebb3ee7d75ed5b991bb4edced20de8c23ff91e2f4c740199512cf30c0d7724100ab6fc47f7a341e8af3f78284546f07a39a984fbc742977894fbd7c6e781ee7390e50425e2dac93b9b0f26f9fddf3730f7cf008102b4b157a5d5357f3fb0e70444b0564faf7f05526d707944ed6385042066cb3114f5bbe0345a7dbc0f2a19a6d4cd8a945833cd0bb4db617ed01ae0cede71203dddabc0c343b8067f3a14bdb952151ade9197bdfe0f4041953dfdf27063d0b32f54a19e9ae904ea34ea2a6ce051c54b88204aed14f96409275cf4647a180425c4ea8755f004c0f80605d13db26e963418b7fd08831469efb5b981e33f98087cfa29ee2293ec2ec5dc5c939a6bfb8a28e5a384e2cfb993296f7305b4e47bf531fff3538d7d105b6632329ce4f0d18ba2ca2542194e963a7bc8bcbf11c9b92822d230ed41e0cf9a8d1b607a0b37232def93d9156c441a321039e11151b331dfba3ef7b87f9d03acb9f96dd4df18e23f65f4cf4bdbdd8e3fe1b16e93ea415687304efdfd01401ac4fd3e55ed5d67f1503a4577b25ccfc8d3af0a06c9e1447f4231cb3c1dabedb1089c043a48b74b353fe4f5ea5d437f464ccafd00d4f10fba99a8c373de275c4ff3120fcaecc813e6ef71658e941d299fb38611f314ce654af52484384279d3412a44f5ec0d1b31b41d6ce9c624e0e7a9f2189b56ac9b67012eb7b3f49c30ce4366e7ffcefe0f5653806ab02dd35a408be2cd69db02b22d3548278bd4ce826d71d34033d1e5e983b67df3c22defff04322964b703154bce17f3584ec6ce15c3c8fc0df00b93d6424fc22182e32ff86d124beb260bc01f79b31b1f60e1af7ce97beefcf431bd12ede81647d23c89a0c0eb0ed3b6caacf5fb8fa127e7cd26ec06b7a7c827276a5bf6b5fb49b54ef61d68c863aedcfaadb9f823127a0daf93c8378873f22d455c49746852efe2899c35e19974ecb63aeb62fe254e80e2705a55722a419f4a7754cb941c11371fd053817af6057ba6e17cce985502e1b3d6754ba137448c3afdb508912f49fa5ed8b0a052017eb6da89cafc308206be75399e54861ad806315736e4b5596a10401bd2e7198949a1fa99e0b9ce9e2aeb57250823cc649e1f954a900c4b431d87e55f3f271a7cd5d85e829a07ea02dbc70b8342f98c116a294890f305b3fdb9c71f6b2ea692fe4a925dcae4b54bdad10f7c21910dc8fbdcb51b3cfb9ffcf292c3d5ead00c281b80150bcc292580fa61f196fbe3e5816ab80beadbadc0e79c66deada30ac0e0afb838a9b085fbb0cf98e814e91ddf8d9e7abbab2329674f2aef9004cc3c3258a40f1d5548f7ab26ffad85796b573581c89266572df40bba3645de80429d718f33fa5f5c34e841511603d6add8ae434668136b39f75f9b2c3db436f4ab916dfb7788318fab87e7cd9cda05aa820ed1e48b65b4be30dbb79387d8f955d7aec525db62df85e0ce612a0fb816402943e5d415e52b311ae2ca0713c9713d3a73ecb42017f49d0bbc5d96ded0085c120b80bc1c5b711f279777f6efbb4a3f12b8c4d43ce7ee3fbb3779e392c97d8a5a97bda98cdfa733c9997db1e1fbfd26ab2697bf23b62b1df0c9b547b9c584f294be28e0775228ad4e9e057a503ffee640e27bc3075134a5c69120edc26ce9873d0195230e1eb018a7347c3646aed5ffa2905eb69755b2b4346cb73143075195faf2cd19520e89dde3976bac0b23858a08e4c88cd14ddb90c655bdba0b1dbb07e437992147916b25477cf65dfb00c02724037a4f722300dc7f63736c857a687d1a0f12165b0b6d935bdf594d01cfe76eaa28c8e00dccd35f3671019cd710ea46cf35092e98f6b2209080c0656178725d6e3ebbf9fe04e1ad69735d47140966fee2b866060a0606afed5651db5b37accb934f0bed7bf58efeca3de073e18a09d392e6539eccc27f4452e70ec2bb21077e9d47aa7ff38db568b4dfe5cdc454fb97620e36081272df8c630be6c8bef8cf8aeca6557d16db05aef2dec1bbe904e245f401dd55d04d201c05953bc14b67c2098060f0b9ff4cb1333766a611ce8564087ab0b3034a38febb82e7d7b0b28d6de97e7bbf551c365bcf65796e335ea22eeae1896cd3ac92cc7300a60f684466fa63451a9dc2d0daed89edecfd599b238d03f81090d39274a151b18e472877cddd77cb0f244246a23986083c1daf02465e77c4374ee0decacec2c7de499980a6ae45afb659f7aaceaafa6927d7f55bed81bccfb1e691de8e5157d8335a33cc3654c9b04d74d1ffe78f09d3eab3214ae4b23dae01cb85cba54f944c5a848e2026f840f5dc1788de32649f24981ae4948d1134fb9f4e867acec5d8fea2f518840118c7fcc7d3c8b8aa88b7a7021782798e275de9a3fa3789fee4e43b5ab20d4f5851ca20b392238966e01ab34c125cfe13ec6ef49d3ec79e040f8a0073fb56ef8d8e85eaf30bbff67ba36b57f49b58ac88af2b8b897b286e2258201a5116dba5e768c3201676a0e320c7a9ac14bd71290f1fccba80541e6f376526b39dde707ed3904d52bdc859c2b065943a3d22c26a8cb32008a88893ce0fb1c95ad64868779da278535333615783efc2cf408c9d3c706705bb8da829e1952050120949ac6d1613a8b7c31b3756442982a324c9d732de62aaad93643e518aa9734ce7a261a9446eda8c76dce3e1faa9fa9b5abc0edd68b0963669d021a85a5c92957a594e2399fa16691a6b2ee16e5a03133b8c3d9eff563918b33dea419e56661601271a3a5315f8d4f3ac60d2773cae5fb2649eedf3e8f4cc2997af24485382f3678f6f18a34a7d1d94dd1fd81d718c907a5b40e7086ff32700d08305193b1d0d8730b51c84adc67d99944f19567acb90726aa0d39f7066f1bf1840c0512edc05ff56bff556a04c1f0d8b5e15730c0220313e97756c80d7c7dab874127d41a9a3d79a2bff06ced88237a699ec3fdd39c875e0e0eca8d1be7dffa867f287ffe7ca3479c3b7b197f52074d729b09bfc5f53797b37120fdf50e3a18c10af18b309f24fb93a2c24f50d5b223ee56ad09a5175b1efd45846cbeedf450b66d5eb946a3edcf5efcfd4207f6647c9a29b51e058c4816c9d890afe7506e3bc5565b07007f4f607fcc262d1250d864527e9d260a85aad52b2f5e2be7ba5ac0c2ffdbf7cca3b659679c7f963fbe8da50adc2f6fc8ac27aeca05a7b4c842df56c2966d74b31dc2d2bc09e1d7939f31ae9dfd6f1fd2dd6152f75d3c98494d482bbcbdc4d4b499bd44a27b96dc051966472dc7a048b2914a760a3bb0842d291354f6e2e3493a1c920930bb12186c82a8f6b434404a1e23b46beca86805722c9e2f0d9fad0304cb3a117ac4de1cce56c923381ea14d39e3be1361e57dc25c04c90e40678708959e3d58d09af59614852e22fda0635c56ea77db143474c7aef4b090601f46df192873bc3f465689b26b9773fd880324240b0be34d240ace60fbeddb53361280d2dc2c0d58db54688ed6cfe3a40889b894f7fc72169ee77ead5cc70d3afb6e28e678b839df43c187e9e388adeb44972ada6abe44a06349ab9f17e4b214478ee8e747050bbd3d1ddfd09f2ffc4a58bf1b16d94cc49e84169c74ad81301688503d569095965c9a5d7227e7672f502aa15c6a0f4371f19d1db864e8b3cbe626b0455be39fa24ca4177de9d1f0b60abc28643d1024dc29c83678e6015b033ffb7f165f463fc28b175bcd0ef00f5dddfdf076cbc6bf9f82debd6cd596c69b1cfa4eaf65f29487322cec0b0cb1cad2e992e0a54896fd89f1bba234d2a5e69a7284076d97dabcd1749b6584db3b836bad0cf2d6c7a453e7d55778bd4ac42663e1d0dfc2fd7b92be7b603e15de6098bf3a686e28c938dc15169beabc346c57617cfde93ccf5a4628ba1a526fcd3314ce5ff1e1e9afc27a2e77d95caf565e77644f99fc4db1d7fe63ec6c7c8a6ed30ba69fb748cfebb4320e43151c5c769882a690f3867d488026bc8d8b1a1dc47da03e64f523fc27c900c60b52f17cc40fc0d5a67fef35c34db24d7881938d01e853196feb64c59e4c46917a3c57ad143d81587483ac9d1978e8ad2c4c15fb27832fc00d7d4cebefc3a0ccdb6fe07609aba4045b0c3f065ad2e63061a06ade30382078231ab4608b5bd16971eb775d65bc02c2693bfb849406eb53776687ed590da2dd10f61b14f1b6b0524be5a0fe65b2691ca2a18eabf5b604034536dab6b65c3be46da7ee85eb22123717b6e119a8ecf9b10ba041bc7d6d2dc64fe45ad8abf285d81ccf73b57da39486abd314fea34728cc955fe5ff5fce3407dcc536cb51386d9e1bd15038eecaabb92c134540d090da1b70d6dcd340c83f5732c1f28fab8751c187258d1f92f5970b5810ddabe485fd8eb77d08fb8b027c03b16ba9fa2185e0e3577931b125c83ccc595a638dabe070f8f460fab4c639e96a2394727cc097696789ca2a76ba21032afa042ad14bdc3ca5c967ccdb89d2193631328b5557157573f8d54d675210df56141c628e140c3ea2af952872fa05018fa199c0f21ebab1096c7b10e1104fd8979d63ffc7e60eea5adaa71d5dca46eb21d553f00f46c0b26e6c3365fc0e2c0f3f42641ba472f015df6b5e9ed93a5542e8aeee3bdb6f93fea848e4e3ac3cda7b6e6063f334505b18313b0acd0ebc541e0a6daef9cd0b18346251efb6f84b01812c142c11087abd7f02c16a7e98b5775a8c883a5152e598d427922576aa9045a52561eb01f5b3d73d8d623504da158fc1cd4e03150636117f38e4aff314ff6637dd5b38820b33987bf9f10dda720964f7d53e8fc43e54251c56359706b16ba9898dad457c8ac1ce37edd554a5bb24af72e38210b1c4d8bfe1a64e303855d2a30670df5a0e86dc24a3642770f1f6758822e7e86931c55217f0cc6d49799d7c70d6c27483bfad92a7984afa94a473df6349b59bb600dc921c21195f50f431e8e10a487c69f74f0f59ad74a4f3b86b2d9af99b69b50e0a0587fe112d500251745ed2e29452de834e94059920a05810779cab8dc9e462fc01ae06079425835f1e08d91a5c62761f2efefefec892b6360f94eacb85e1c91ca39b91d2b24ab116ded968ee4764ee9a3d02e0add552f2bf0154801b46719941a1762853e6d8dce387231a929aafdafe41e93aa00bdeefe836b128372ff41c8a7680a993f7c7ad14351e7695966bf94f94562377f8e8c21217c973c4dabc9a01ee0fd218d77a72e65da1f9e52653054b732eda962072f3b27e7630b83d04fcd84e2612935e2ad40ffb2a3f729cb86c57e9ab7bb7ad33b96d16e5dd37d0f1b6a745a7a4124e67f9e17642dbb320edb95ff77984b4636eb310e672137906d62f205ca6a9645992c94334c3c113645338749c91cf368208192c9822eaf2241a3e0f7ad203be450ce1d0a16af2d1aadc48dfb44db281f85e9eca75e399fbe3d82d22495f05acfcaa1ce4afa9a55e436dc3eeb59e894bd24dc8527c8f6483d17221014c32c44c59758c75d7cbc250bbb7ef50dbe9b037d14052e20baa5124845c2b64ad09661527fec96958f7902fe8e0908db10b4440f31b2fa60ddc0d5bcdc3ca4deb7c83df13fff2462bffc8171f8ba4bd60ff96491a57f15576ee83907c720c98f6494233243424ad1ab19d85170ad46728e4d86eb3e3dd921a150250ba4bb424835cd165ef3ca6035bed9f3074d72dbe8e2beb547221e9d74b7ef851ac515c39390a4477bcb378e131e7cb568f62758ed69aef7e8bb814e670a480e5d9211f949223a13d86bd7686e2e72c7f5088fdc7cd58860f8ad6e37bcab093c9bafda4c5e5f9b71223f3aa94bb558c737b589ad6699dd09038ce60887e71971769017b4aedd70cd603d57005e51daac79e9e4c5a6521656293aff39efb028af93330322167ab16e7835ee4a6cd2893c4291af4b27769a8e735d526f8542c4223ee9fd358593abc7045e56a3359cf6bf774a988ad0d79661167c6ae82e0e6959127731860fb4750688c294079a6ceab99a7105670c9c21e07c192cef0c299ccdbd0a8923c25c2503f37ecb307252e846f046ac1f164a8fa39ec576ea54b8d217946480caea51d22712485c59f56780ca0625246440815e6bf69fbf0fe449f4c80f543af269835e9748f2b3a62b49d7362229777773d6650263b6073f2c55e15402997e0be01e3f8562364c4934302079e9f380dc590cca06e883de4d103006bad5ab64b3a4281d142b34fce6facf32e3646f9c3e7677e43106d379262a3d77919dc031847bb4d6586851b8d5492c9abb14979a55465a155999bd1ffe239285c886f4184da690b24a4edd9d9b26085d1e830b9c5b2b41f79fe2550dc42bb6b3ad8977c4787ba3f60ee85e525be4833d92c526cdbf0150a870e5cfd195ae6a7469788ea701e2f10e7b797afb55f7c3e12549ceee4e496f0d6d6a9033bfb223657206149a9e39853e29d6867e29b9fbc59f7535a1b09eb99b501f834d481cd81f8591cd3be31fb964de20e0f16e58a1c87c12d42a545ef47e99f77d042375449c37eb0de9d47d53104a034e66f2ad8151608dfe21a6113995cff9168b9d9f16e4f9a51eca1df039045cc8b184c36ca3e70c7c66b9c6ffa7f74114cc2360575e92e458c5cff441afa82d006de83f423c97ec3b8f70c9f3d0d8ee9d6625f602fcc4fe6c6fc7e23e7b89d3e456745954a3badc173a94ee00a72f050fb7186475f2139b326944668b87dd5d44a8f3367a729665f313d0f88b32b25b5a6317f1b9c1d347706cdcda747ce1b496d9493bab71cb953cfba8753b9876b5d7112439abf429a5f597ee9e0ba088c852321459cec5411e85b0619eb91040eb464192b4a317499caf6ef238a410e0d7fb83b46aafda4187fa780df1006a9b73b6d73bada2f8e5180aa65186389ccf3bd093a9d8fd403cc483a5401b6fc22f7606eb1f82f41d9a372b3ebfee4fa7964812c1ead8d8965ab29a33fade727e4c28bcaaa24cf5a034d8b025e5a5965a1874a2b57ec0045722bf0a29f3a92abae40aebe878348822ad3618367d13584153bbc9c53f3793dd35a8f09ee26e4412fc75cebc70c91da7a0e73e3ca6785ef94602502b6244887bead8dddaf0c6f3a8552e0ff39a5b0a27a96464686b48c0f621bbbb7414ad5cea39236b2338884b3beb7986b46160330920915505b9a72066e546e2987c5167a723565626b90c89a0634c564aa0ebd661b7e36794659dc7920164b64189503530cccd1e6b79f6b0f175eed95b727ee590c48b99651edc94a99f6f2b018bcc7164d47bb1742e6f7fa4be67c9fb3f4b103cb6512eea6e902d378e7535be2cbc75cf9ea52b21bfcddf85cec7ec9ec60bf02986554b5379f00c362e174a6e3b34bcf4383c87712e4ef55572e1d87dead39426d4459d942caa5422aea1f86a824b4c09e15aa8b101c4692c05c61a25c89c509e070beeda87a37ced3d956e57482a49bd734f2bf2967f007d3a014378a16d65a1d51e76e6f6109a1a8f303ffccd84d54dba1df0fd68ba52f3660febec67a6f49091923a16cddcc9124dde9aa9be6db6ea116aaa8979120affca4b4ca6735fed4ef599ca1e0b74582177dad20996ada5961e4519b3e423498baf89b845a8cfa5ee534b93442d29764f833afdda19aab576b0e6e2bbd5e0124ed2072447821fb3e141ce0adddcd67fa036c44aee319a1e11f9a1ebc04b75b99aa728d8adce5764fb54df1bb37ca9390605c14dd2d243711971d7b8834924945e49e20aa46823030d13b5ec69cb682311e428edadd47ab0555249757301c391a8448c3474535393a9e045624e74d4faca52d83db53119bf529620867bc9a95b7736a0802c25879f6f7a8b7ad5becde69aa5b3f51ec306ed92b03f79287013630ff6a7f0d1a1538851af449e82c9911b50aa1505dc98019115061a81a006a1911fdf9a5107281af3c4f42d5842ea416919d3f6b1d237934913b10e2fa4f486473f4edfd625aa9654889b28413b87150c0defe5363a6b204022417667089f7d3b79d5620851a754762e05eb96abad6682705114142a0d3cdb789e247d516149af4af4c4b3440b978888015beb56ce298248132fc3fad8bcabbaa312b483e38562812d77a6c6d6782b3b7afad0f171e1ec9da18e4acbe53c5ca390097f9bac31ec97bb94361a7bef889234720ddce1ab28fc10c80f124ae154e302934c3f87b582c5a42f05251f660daf34a11bf681dc06e443d0c65da74b0238eff077e21f0a38465e018ef265098214f4cbc0e7592ab8469f88bed5ada5d8ccf8fe01b757cf8df14d6f81abbc5418e37ae8b2202dad7706ffa38322061eba1e1cb988e63977ab02a2f40e6fe27bfc0a768d3d780219f2996f72a34b35c97be2457cc0b884025f86ce3108512b9379581289644fc47ab1d6505cd6035a38886bad3e09e8df6d3d7f283af5c5093c2e5f4a1b38727f0cbb84aae8f66f1c0205490321cccb7253ea12be0dd250275f19a3c634387d02ea71aef18e63eca7333c4483f7133daeae58e3de267b9f56d44214f806f9a3bd7f61ea9feb85c7a2cc65461a9101b4ea4917185e035aa2998dc2ab8edaeb36a498be30382d12548a6c4525157718c2e6ac9d748e289bac6f8b55cf07bb3500aee8f1eb3fed033f423558b4694ea72affafc5e3db67556d21d944a7cdaaf0ade58a30e41ffd3300fe4589ecea4c337f73e59626b0d8be96c613bc4876e198295df23fcf74da898b567d4b37ef36eccb9c41e50ce6ae78feba30347bfb74b9d71915eff7d0d0b953a97c91280d5c8145307dec4cf64bec616d96968750c6db82a8a1435a8cf123099433c6da3458f606b60320668857eb92c47fd433b7204ac05fd0acf1c529d60dd76500c705a2863d440ac2f012dfbaecb0a70bf5a866c94f38fd168010d1bd89d6cd243addc871be7162ec2f7dbaa9ee296d080e0bc91959c7cd23803367572c860cfdab8289f8835d3842f165cc4302cc3bb667f76b2e89a968b1b5dba11648b6755e8372790e9fda03b86be12987b13c657b11eecded29644aac8b3993b92d3fbf2ee8c5e8d7ef674ee5d5fd868a37c9dc23707c81a7138cad82e44fa13e82329daaa725396c24c150248c6217d751e3cd2768a3bbf261a25ab64cefc543adb7166370845ae36c8d4d8fc8a11a35c569b743f153f1b4ea576daadd8fe5f552e6fb933947be7afc049112943e86cb9c5b9550f1350da929eba03ef4389a85629f18e75242da12e61d262885691527b18cc8c6999f305f0aaf2bfaf0e2ea0255579583405224a25e50127d779b9fc82ca721dd30360845fc7c0d0c39eb3180ffab01d254dc70bd5d72d49b48cc0b5f715ef1adc75a517dbf75c199990bd59b816b2027f635b4f4a9f990a82d55e04febe3deb492bda745de0be44bc6561a5dc04dc7dbcca0f88d82bb65ab99db0d74b64e55e2797ad5ec5ac0e1eb940a2cd5e0dddc258b70154a7f829e466e6755ea8bb40d4d4173c5a5101431dde0f8a69e32c3d78d9ce51c003425653341d6402661b70c083e2b59d7f45ba88536890cc8d04eb7a4577b26556427a08925b3cee1fd42cb40535a74e777ee01bd6506e5b3dbe4b28261fd24a000ca0d6f35a7ac8a3bcb271cb2540a38743989381b8e398c23820514e234277ad668ce1f0546031ba6b6b253c643ecfce389e4519afb30eb301011ea7d09ed5457e1cce11259a8ca54ec107e41e35eeefdbca9c090b5b384332d7263decac48e23765312cf529e6feb415ed45b001fc8b553a9db6be3f7599d1249eab5a644ed1d0309f374de15d3f703487e5ff80d221f897dc3fe840193343ab8314eb98a611488d386b39387bf68a874b9c3701876e3bbf716f10fe1886981820e2f926bfdcdc517327e00328ef3548efeb9ff956d5ddf9c8c135cd46b6db4e5b8adf60cc4a978c56a7f40bb9f16f65f0e843484a954398be01548a102009092219d1aa9b8f3119771e9703a20bc3dfeaebd628b3bb4d9cb2a031c85f11109e35bba7441d3d3aeb374fb1a11b322d89ead6c83c1417587b85152cb6cbe4867074abb93ccd530f4aed47ef029761210e8a983d2405523211302dde39c16abfa617f346e91996593b70534a9061c341e3103ece7e3c7831e776de4c8349c056eb749852327d4523efce1d292796ddae476a18444b4859bc3b86bf2650bbf294cdfa21b9e73b0c7f5cde06740b7420554694e86f716fc05e6a7fa6bbde08d4cc47356c56daa258887e89d12b00eaf33487a266e562f496af359bbad11f9762339a7b9a9d303d0eb4b496920a09a6ad3d5b845fbd748b36df986edfd0177769fb2f4d34ba3bc61bf7324f1f5e72f665a3a9979efc6b5f8dd10b80098b7e6ec6fe239420449741dca96f83e5a274d0d0395b9d23f7b54d2edaa97eb91248e3cf0738b64d072fe6523d435f5ca07c9bc4b8e359c68c49910b3ea2e5c3e13bd81f9a6cdda405ab7e7f81b484dcba01412518db54cfabcadf36afd346fdfc889c9e4a185228217379bcc62f9a4328433ffc651c8818edf20c23dbb10bd68f057fbb6b56342c3529a38c493c8f7a5ce140776160c043f6b5ca25477fde6f89b332a64016bf4ae98bd5042835305fb930722ba13915a8def4999765437953ab36a0e35228af65f7aa9630ebdf365203d851a5bd28240a07d2fbbcdd16f877d21766673ffd39017ab7a2bb4ebb52a45d3e0e1a165ba542c10541a29ede7ad7c7eab8fa501f34aa828d46a57de53960f20ce023be4fd9d3bdef97cc98291bc12eac37dc11b4c539c611d968708d238cde713d44a24c7a9ed4befcfe58a2b21faff2375e6f7574e046e7c18dcc3851db9c02b9c717b6bb65bf3579fc9e4fe53c8bcb68a28580e221e55af1c348bf7580f8d65536e88dc51452ce4e1903c69a87fae4d83f8667cd7ae5c5f92d698133290f80e709d47fbf2770275dd54ab819cda1872beb0bc2cecc9ab7e633590a0e16e611f2cc4f4505aa01d53208ada1ef4fcacbe1593ba44c69b19554234003111676d61cb0af746e7006928597d72346d0e5a1e5d48d407f19bb01723930c0e14956f20c40307dbe8905abaff37264f1bbdee2c2a46913a4863ac313cdbefbacb11c857ee6e778d3976289433cd1600c8710ff8aa40c5befa20db8cb526bccc7e548511663e33dc9635eb2bddfcf50361b2618329c0e9874273bc42188c9c0e9a0e8604921fdfaa2fb8da8e3976319444e18a0c824c5daf96b1e89699f588077f3c3669287b10fc8e38fcb14fa21c92a8233276d443d1ac01aaaec86029c4ae98da4806510334d2118b78a4a43ade120b25bb9b703ae1bb67b1b831b7f7d891e847b400b64766e6410b1116ce3d0224cc7fe290e4a96305a0e17ce39f9dee86713a486357504afc7c0499ced89ea0c038a59962fca75617c91dfb7308c1e6a5967eb0f5d78fa9682276a93627596a0bcd8ccb3223d3c1fc56f31832998309a16b44055f600cf8b89e18b0b88bb1bd996774f68f4845185f66a8b7165d67f2aabb2b162c70cde293a61b6a89bc7ed7e52f9b679f6041b5a6b3eb87fd074cbfd1c5a6cae02e8d92c0505de514b576fe4e7f2e5bc7f1d505ddca37349de5c71abb7ef08e4f8e001e4a5ecdd6b60f9770975ca4adad7977e081f6b372c100c531af61486e71692143ce9db60bc6982f2ee3fcf1272880c23c504eb4989ce7784cab5216cba01aedb2de909d7b1db5bbca0844fbdf7f3a193db8911ce24c3093fc06064dec86c47f95d4eef04dc8017b98970f68a74913661c01e39b1328d38a7cb6b3b9cbbaf6af1f1631d1dfeda73f4dbbf3d0394d2586f822e17d936725638e317fac73e5cdd9435ba5acd6cf429f64686b37d862d4802ca4dd99852a12ca715f15e607d251397ad87f86f55fee013f5218f217fb51b5efa4c0f032066096026923de3815734e25b0cf360646c288ce250e777b805e5d585c5e29ec924e599e964c05aeff1ba99ff72b2749d25aa755f0152ca982b827b254f38ff6a62ad11190fe629027582e03a02dcc750490a23bd6fb212e16eb968758fb8f0de33773485a59e555e73e32e1167bcb5e6cea7e176efb55003fa32dc37e9903082719510fd9ecb03be4f577c2b5e437ce5816dc2ee7f40b22ec1a5e946f407623d5f63585cb01a754ddc59a730d2c696d42ed95d948a3c4abc7e81f982b4cf9e97303dc4467481fa674f4c561198495405186ed8c8226690fe06cb12f89d14ec64e33a4d0b030dbae3791cbcdeb08867941286672f610f179f2bac6dddff877ae0614e83d2eb68454de389a58e80e0d33b700889d279101ff3b9d5c3fa7bcfc43d5a37758886e6d8f322a09fa27df27f8c285f0e327e785e0fe1fc6c8432e33cf616dc01060d67f2bfb943d818a747830f292761be3ad81caababcf9835c443410645bcde9462e27e42ee212117e25f44d41a037357ea09263d0c16d5aa5df038adf7ff644e5d77de12b487b87e0d5bb37f3b26366ee798e2fb97e20385733d23c432a524ae1aa1ea4f9e73ff8dab463367035dde2edb94f5e71abe8f86cd760a0e834e6590ff4ef1fb3bb6943d6dccd88cb379350f1e14baa65640995ddc5db4183c147714f0dd2d89bd25ce4e568889a45bd134f11491f6cff623b269db8bd728c01fe01494cf6e4d179eec62b8dadd347a2d515a26e7eb319f4b9d17fd47db2ca2acfda79fc34f2ee2212b3a9adb6904e79e5798f2f95cb15b07ae4c2e3d5838e0399e4798ec7c37fefbdebf12ec3dcb39375b4592d2a93e5c8d8bf663cb3b092035b6808e5b8ea7c4c68a866ff90f055f3aee447106f396a7d38a9c44120b10a620e26f2f26319b9feeda7fb52e5b6b21dac677e19e924aad170c41774529cac1a9e15e21c1b808858b39535ba79434ab5a047eebb8e6c8bb8a8c13848060dbfeb339172f7273aa7677f19b1f098ed3e9b16dd4d2b38b4d842b205e671f92f0c1048edd28d4a559dae97254ae00f63b8867949700c7118820ada47667d086cf3892557a8f7323c53d2d9b96222cd62e6c29c32454bbf381ba77e9dd4ced6c809f611d268dd8b9d533cfa697ebe28300eb4ea9a0dcae91c6d9073b6208b4cae9b3e697397bcd054d74850d1b45351ab7570972c4f537bcd5c921bfc765b29ceda8050454459bb336093e15f4e498935c32be06e6f79a17f57c09eccdfb36998780eec2d9dad34aa037380e0465f7826c0b4f97cd6258f23b22c274f1ab7e301de91f2850a27f48d22435eebdcbb02393b6d10177a9cdd8aa540b632053bf8aecdb4751c85c6d8c8076447fdfe66c4e0a0e3530427356a04c364f13cf19187dd6aa224374731e0268d5c97c354315a753979458e3bb58c0f99471666d709e5b1423a63a6b674262d7cb77556005fd71c886c9376754c0d333710553d960f5f4447d4552cf5ad38be4900870b9e8c5a1c1c30b76b3a1af922803ab602fbc180ac9db36dcb6e8b8ca07e467bde02aeaa69a0ed23ba4ddf363c87646f1bef4855c434b7a56a9a9b44d8482033605f974c0a2e8e0de0f12ed85d30ab8b5235e608f7cc68b569e73b6d2146737f321a4b90b112f29057b9355cd6acd10e0f881b63eef36b9fdf8e9bd28e3a74657c86836491ff37b57d711aed6fa00b3a3f2aceaffef293e6cf9ac1deec8ca6815bf8229c6c1b5bc00803728fdd2fc9a07928fee2cdd4724a66e23c9b2cde8705c7b94527529aa4246d2da7a311813f8f35941b8988dc8c7803b8b613b3c030d0151ee228cda269db3d1fcc57865ef649dabcbc4ba34711ac0a0dcc04081a4fc17f98c43a01ebc1ef1dbd532b8f53876ee406ef1137c40d6f24e31b962be2320a650e9b6d14616ffa8e7d48e295034f0da8c704ab10878e2d462c3d52e77f7612ee3469feb5d99938009557a94b602cbf3656e0d8d1420468c6172ca8345b6fbda739d2e398a222983690b4e3f635da88e74ff7b14818bdbd320d2d040e27329e338dd741da8ccb10cc1a273241737459a39877a03ecf18f9f5fbde50e834a6cee0a9711106c095d0dabe33851a785c77f3d4e2a3744f6eef4a2aad86395a26558008d59811a423d6781ecb370a68fca3d54821144a94c7113be39c4ad4ae290908633ae765698bd9c6f038293f7e0cf9fefb404475aaae77b16622fdea6fdd7a1e8180c1336ba27b241e8c0d3b7d7c2edcd26d3c7001ca412a01a32451ef8d054151c17d953fc07e109fdee50044e5eba2d67c63dfbf3b3a5c43434287ab33f3a03dc17ac363848602e8bbc07eadc6ff2f753ca90e0231930f02f556d2e2edfe532b1e78283fe1f20ee666dae7c64e575b4f0c804a891de97af734c128fa06a26fbc483ee78646078a23af6a19787fc73287bbc377b048796114e3e8a574ce7f8cd412a49e9a3fe57a3df34cb73a52ba1b2197f445f3a1ab57ca66f94f978f0747063b9b7be5b579fed8ec19ccf7bbf62dbd34c7cd9f9d1f25fdbfacdac8c2faf6c1dddba3e7576836e75342c370b4d2b17fec2992051d45159e3f36eb647f2fa4a997d610290e9e97e9f7235e2439aeab07b235333be59ed9e3e37cb3404fd3aa71941406607627c92b32640ff8589f85a4046d571fa786820eaaa140f24e3d45b0baccbc8636eb3e0cbbce60981b3441751e36157c4facb839e382094f09523e40d4073198a4099fd911756cfdbef56bb952c0054ce7622a4b9178f9aeb1ff0c33c9f41889026a8d03c42633af9b5a4359db0fad7816295a4f8635d3a4819ca86550eef06f29bdbbe495b15c2d9f450520961463cd7da1c5d7734728402a9ccf39959e4ec6828bf15bb6c07b0c237d374dff4267ac58e72acf02d7bc8d4ac99dafc13270c5884e143fe6fd597a0b1f349d40052df61c475a0249026f8f9845988fcf01fd88c16ca08c39ce1304b558253cb4f16ee6c61a002eaf059f325a0a8ef7cfb7f59ead5bdccda76d75be2126c2b30401c528281d48931fa8892335341bca16f8167f02dfc4a40249a7c7ed73ef875041e537aa0c912f786abe09fb9ff9a8246cd4f2648294c4b9a14a094f765cf56c2d99b9dc0002e8929c64a47d0bad70b25c73c601baca3f0016acea3e7d9bdbeb414058fa46750de8bf633c0e91c5579847f1a2a376ff8c60df9965286a75ef3fd7a89a9ac24bf6f96d812c9dcd8ad34e9a4e4c1f689673912dda1d9948b0f9d0ddc76659412e56e8d89e22ebb8e408817af49b9d0e659dc7630c4e8878c9030ba6d97049efdc56afa8f3b67f3c4354576c884a59ae82a8929dcdbe3b3549744d2d5b40735423ea123b478b19839d594c42992ff9984596e7f9e1c65e1471a0162fc40bf79bff139d5f1434e7ada41952d6f94f5566e6bb767c61f0d3f0b1f2bf59943ded3fedc74e437b791e2f063901a384a8981c656a3577910318d6edde1e35a5aef36a1c8ecf222e7c3fe2758a9eaaa3181bcd6372bea531f1bcb8f84c4f55b151e3627068713e63e5698f64a2a3acc7a721c8a083801cdbd2238ae24c15b07173d21db6301ec14d1c0adbdf0dec141885c6509de7a2e4af562b9ad4dfe65c9ca3de80529b0b6c9f5a61fd0980553ad48db7423a3e08eb815e6dda1d56743077aa5606b380da69883e5969ebf5e5c6541bcfd37a29f43a2bcfde46679ca52829c5232af29da919e70a7ade6cf13a5623de62e2c4c7d6e2a4aa46a70e308fb795a702f7b79ecab61137c8e04928398206b7abdbb3d4da54037c841ad2d409779ec4db605e8b5289ad97641c1bd03e26d348bca56bfbe87171057594db0b8fb8e0ec672562ce3fc32722053d32ad9d6e3a3c44fe345391aa67756aca6c2bcaca4055329b7a6c071ae8baadccc4f706aa117da98005b6828c2636a89b93367e41324df8e81b9d7d451ed016a4f6ca41e08c775718cf49a72b1a332589b4cc03b67a2406a59315890bffe51994c15159e4bea207b5936e8570a6680a495c0c5ce9ecd707864be83dd34a77e9c4f8fad1dab959070a4a5c2a4d81e5b72603cb924f546f0e7b1ff81372d07f57128dccb101cdd31ee1a2ae48d22b4778961bba983cbe8ac5553492b023c5b7c2c5950bf9d643e58b608b63f1b1458e42860a294cf84aeac9dea2a2eba4dc0d23c49483dc72a6acae2c065be56530384959cb8db387ea1c4253d929381bede38986f59b5153f73a92a7c516ddcc162ad4e77056ba9fe291817c123592d0fb8941722fc118c17df79bb3163ee0caa1cc16bfbcb4d79556280369dd7c627e39160f12917c4c1f6fe7a4d519fd62570cea99f30f2b5ddb24cdaa4b81669fc1c73c12feb5473bc16e38f7aabb5b5d25412d5d7376cb51c07438fc55e0cb9647294d3e1c3da8c9ea894db41f4ad6b150fed67b0716dc8b2b23e1e81f41773af4fbfdfdd0461cf9cdebfbb0fe97e74ad31022bf75b909a9a2863737be4aba8ca0b373fab0ead282a4f78bc1c4c4b878f038b24c230e0b4e3d229573258328ce306aa855f492f8a33b06e4525c5b4892e924a501c00eaafb63918d879c728b3c5793eacaf567bd192485f05abaf92dfeafa8968539b4a61002281f462fc7f211e0a6836d687c4ced54b6c2cf153237357bd678990adde482650d5eb188f061c886c049c6a31580cf5b1888c5a32fde735348cc30d2b0ac7083d407deb7f5b5455d1b3dab8316da40769231cb5c29bb727006ad107a4c12800695d0295dd967bd011042da746e9c45b4f70f246af406e61a3a048f296fcb25cbac3d163f5d34f2c3fd750896049b83ca3398fd8626a8b0c2d8bd03f48d09a7d96a3e3350574ddc46c6c9c6e4abf2a267ea15a31b8086abb921e2840e7a763e7672eaa1e306206f8bd2e1c61cfcf7fabfb63a9794299262ef111585fd78cc7750c635598a22559127bd24cf3a70081c7c96288a07b81026eb0aed32e8aa8ed02cb004c610fb1845292dd90cbfb6233d34601358b5a6729b1e9236b7b07df36b10a43dcc1969fc47e6b7d8c3901e25627318d022f33580df41f2a2750781a325e9a6a3c863b22b0dfd20dba6127dd2c1ba16249ad42b498542585677a47f02a958e62f81849ea2b82e7f0b1e5d22c8ece203a1314a651d49da7a44c1becf7b501be32405e0a42218f1917904f846d0d27321c377bcfb83de05176eff0f2ded972b38bc034adc43954c8de4d35f9320dc890f0dec004abfb5766841fa56b907e75a2343d8d2b1ebf6ccbc0d34f492dab32411f489682878ca5ea7567700e8e7668dac21b525903d16ca198217883b929e739ae22cdbfb95feb2726451633b1c43edb625979858de3f1724fa04494eeffd22fe4d299e4ce01bf3f95e529855556dcd3f7fc7e963ac2404df8391eb7b3aae6e1a3b3ad2e4a37d8ac6d1292c59fd0db48681aa8c22d4b70a17ec0501785d750429c9b061749a8ba80c591ca8bb4f6780530fb84a340ae54a6b0c50eed45432e66631a42aebbb81c87eb3ff052e78b84b7105f2b9da129cf839f9358ec39b896c3bc4cd13cd838966f1e5f6116c73058ac7d26fb6647f43bc2513c1cac92551354ff092b4cbada970880a386cbd1e26b675dc37b2d7b617853abe981160984d1bd2171bb10a864c93e871e56d6d74d34f4468d8b8d554afc30a5bdb8eb070c07c87f8cb301610c53582a12e5857ccd53254ff6195f9f0f6ec41f563b6ab14b5a7606a069999b07aba8b631955e5b1ad9ebd25a4151ade517aeca5f5887a491634244f22910eceef9bdb6c28832b6c98d43e7e862fbd588eb84c380290ffff8cc78e207c5c7d4c9a1e4940f62dc2fe15dc95723acea9e9b1bf2e520de2e4daf4a411d1d2a0795144a8cafe7cc57cf9612764ad99bc0d5d72e7954d831b18fac772e7fcf4856708a54c013420e42a9f2ab63ca24f9c8bd7614d6ca08c6fd8c8e37e9ea80ab7eb2204b67d9a5645b1e2e848c7516c9fd4b8fc2fefce2b931fb7d34be55467f2db8ca2e966efa34e015dac800e7587f574b89ce1211fa5eb36f776df618fef0763e46340ed6e5b17a95f1c85b37e14fab6c10a2c2fd4833dc87498e9e067c2e446a92388d9bfdc76f98b1239b16792ecc4613f4afdeac60e55b9ace93751e563ca447396d7586f2e6f8deaf5cdfd27fe16fd7eada8653aa59228728e3252a0750df7c2f63f98f236a4f54bf8767eb13a3f9aa01b8fa39e872d0c5ec1d9d628e4133da8820cd51dd84ded46e58cbe54f12b8c49adee831e44bbbfe883cf9f7e6fa17f19f410936377075e5131bae0a23b1b95605bf86b1d6cacfa7b24791fa9b82a9b9165cf7161a72b271ca3e97d972e0930248328376c4871f3ca62ad6a4b790c46ea793058d58d1a74dd2d86777637964b3c55038a517b8aa5d67cd1b7152d1c3d4b3bfd51ef6f739d010d5e06159ab7f1d208a71ef0e6864b8b7f3d77a3de66a2b31414ad73332f2d2fed9f2b4f67c1e9efa694f93628a643600cd4eea64bda911118a5b0b2d42cd9c923f33223293779ea3775cb2ae22157f794f8cffb7002d4e3c909e923329c8dcd2842d18ab84b31aa443bea221ac9fd1dc027b2e6ab3612bb7153c101262b245259c572e86f9de4bf450fae068c724ac91058c5a3e2bbe72bf242a63cb91befed4db0d6ab00279bcd47ac45ffba1c90c10b3ac87d9090c3c4bd7d9b69d201a44db019941ba541e5b785cdebc1d053aa383ba840170c4280c88c5910f60c1cd82ac75e8ca05e47e4ea2af4e0902d5691110ea2d8c4fc6b707c233fa9e60c028e79f91e0dd8029543a5716a93d863b318c5754ef4de468e836cda139a891a166615b043c16ded67dca0121194e4b08e23e026e5e7b28033bec4bd9320b4550585398758a12c6121f1925f58f33666ac695ec2d3cf1db0412804c58b3356befaeb8c5ea0107efbb3696f8c1d5d80b49cef964d74f6ed483702586a7fc8afee5b69c4fcac2b6f2eef0b4d5fa48cf5a27ef5003b7b80feed45ab46acdd0dd472c31f7f75f090c61ca1be29bf030300c01823720105758046b4370f8da2613e26b5ef9d2d0a0bdd577f0f8b1f6a0e399c30a7968195be3f2d9d3757644a603978e40c8bbb3402ae568057ce7a5e413ea6bac6ae29ea7b0d6958e53698ca49d1e9717380b429f63342378f100e686015751829e6075b5d4851987b52b7d4547fd8fa53a862b58c670fe19094e37080ef1da7ccd80301a7d5cce2c718761827b0e2d13a585a4a9db179706cef83cbee9f40410286514c9934a0aa83fabeb07a5e25fe46a36c44a17f428efdaa3e281e36c51e8fc5476a1f0ee4e03c97b0227900caa73af5759f84d19ff0591f542505bf60b838c08364ed0f0249a56b41c5b464e4c0692946434ee98af2d05a1d925aad51218be72fb24bfbe866f6b2844d554850374be974022f48725311c5464a32c7ad849e5b6d1ef1585b8fdc31045c0b73bae3f34142ec8b9196994e8884ca0a0ea679bae418e79051fbc320c15b52f9cad8b236f000aee3752276d420799045fdc8e0c0424e76c64ce0b33c40db1daa6c31ced38154d8f623354e34deb965ac01751aebe9ec145de4cc8de638af39f4b118bfddf3faf507513af982138c3a47bc0bf1feb1221d8a07d8da35ee06cc1756ff64570d568f6da80b56228adf819561508c27e71b2d1657a0068b02fde9eb70f3d433ebe7409665a49917cb321d79698f6b3f33f093c096a2edc509dd07118dc53ef2d54eff259b5b6f412aa5235180f5c9552bf9f33b22856962650cdd030f9519b759c05214395fd158c1f3f40cbb52269231c4dcbab7c6e9aeac75cf4925e3919184f7f5fcfa46979e82c840f27813b50299e94a2a316eb793001093addb2ee1cf7248592a25b7fd91950215c1250d4b3ce4cb3fd84ccaff8ca20b6023095c6b0194c077afe30865eeb0f1048df31ece92ca002bfed4848152940472b4074767ae95404544b27a38cc5a7522d902f19edd602dc55cd2aa082cfb5ade02bf3183601fb0a0a22d280fb0b8c76da98ac843c8037c0b80d52016f8b39ed2a1f772024047f896d25b3a24568fed3e582b4b0796a1fe905ad7b168708756c7ff365cea85d7d2313b33bbdde7fa68f08669da206c63b4b06e1482b6f1f6721628f871f5d2373df7ee9d0423e9809b49b37eab86d9f170e96d8ae1164a2a6ebdb765857b93c91c315a54b7e74e5892248b0bd0f0355d540b2d36df8c3d81eb284366a88d8771caf9a8ee67c037ca9e61e6c16e0bca7d13795562032109baebba0d9dbe4d9284fdd8255361c21c363b8dcdb1f970e9e80e49bb536acaa9f994ce05cbb8a48761ef5c12d8065493e90e817c06d09de33fb6ebbcc1e08de953230afb21a41f2dbf3a8c5072ba23723e923621e1bf389ae3d1e4ab3f74602277f353d62ff3288b609cea683a22ed3c72ab87d930228c53788b4fc87e075f7816ee028e4b870cfce0430d98e58d2e076f1bc9d94771e4a8113014b201127834ca0035a4b1d652f4924dbfd6b47cbd4922cc2dd1501b3ee58fc3ea20c07ffc6dcc9f14f0fd042042449cb140a2ab5b76d5f373826f3c77a41b0557d4a994f484893ffae8babc3312d4860481011dc1075520a751317c1b34e6b15a0176156effe2a431cac673e00cfc4698374143f987e13d1e84ba13dd7928a1598c374c6f628ab1cd6c19cb30145683453be75e12fbbfd7381da041485322976122037364138ec39ca00c27a812f4ffbbb7f66c28782a99699cd7798986c820ddd9d7a8c939fd578c416ce12c4bc5959f5c233d7a8424d6f312cd7e8db5ba9858f86c1517db65f5fde1b0b3eb4314172069ba4db7bfdb225f52c8d527d349e68b260700b27706ee6f438b651a3e29bf1fe8f2b3f5ec6436db099b9a25e3294e0852bdb98d807b7da00df15884d2599a7d4307323e0f556c981403ca95dff2684163a6982a380d8b63f321122559dd4ce3836319d712b38fe30efd93af81f842307894eef9540ffabee76cf4f4612c9683d19abbd87e044df301fbce9c97914e980b34651fd021fdaec4fe473b12af9559308815db6e956c38fcc1550b52dbf8619411848aeab288f5b038cfb952101f517a4f59fc8b04c73f001c8a696d54bc1a964af471bbb0cd93cf43f265fa2fdff82ef701e77da3851f65b21b7ec57595ffd55c4259f340791d052d4bfe867ced0edc5e6c046c1fff49377dcecdbc76c269a7a02a09de1369380493b4e8a05aa2ea34612651be4aefb5ee58f8087892188ab5ca82f428ac53a03667379a8447cbbbc7cdb6231362062eaa3d84057e28e03e1cb26ad6ef4f1f99384782c9fa0203833285d3dff0e4d221b20a6fbe3e22e6284ad0ffcf0a098734b9a9974a1591167b2389a9066b0b4d91aac540fa541122fc4009334d9d50dd53647e8d25b506a3a462ccdf138654acba3d054d21c1f4feef7616e9dd4a6ca1ccb1a9e4f475ddfa20b4c2dd8c650b7f890e6af627d40aa883a4956684626d9dcd446cfceaa9ebabd57c8a54d87c46416cc0dfe05055f80b8579d8e2f18775b32640696d636930cb3730279cad57e06235be8d414e1fb8bf2bd086c0b150cd8291c25f5a0c483908850d80697fcc5d3ba8aaecea85a172d0c8229d297a6cd91e0842edb0b36dcb69c3fc3d867f1a82aadaa0117c33ee8a912365a55406bdd678552b0af27a15884bb9ceee84467707ebf33f959d246b04719e80cabc3266bfb4c914333b55a82f41a06fad0c516472463b07d1dfdc7b10a0c4877d81f5618fb3744387ec358b914e2472024aaf7e0809620bca322f68cf6037f6d92f3f2a86282bff59c7506855ee0b152f4c3a3467e6d2a8a227600813660566ffea9984e8836bc22cebb9a8538c9da9ebb7928c9a25ef897d2873cdab7cf72db336ecf133905e4094b2ffb017d0647bfb34405c8eb7c9cd0be50142ce3890ca2239280d04a5535fe176090cd5f39d27f1a0bfd449d4d216d18482465c70d85a4b88803144172a89f1a41e1b5e2a003601c6144d53f451e03b8314fea4cb31d32054a241ef16305e529e9328e0d24ac406822b89dc0e0d8ab2431bafb29e1386523645e592f4d7b0e415cf6de487da47795730f0c25ee21f6bb3aa98f3cab8ff2785bc638d8c45f32a659ce12e59c9878dad8b06b089c5c5397a9e1d8862dc10383b40877f6bafb758f11a2aaa3a5b1dc5a7ee3a57dde7d2f559d410e85ce3d498f60807953f1703dada1dadc89060130c421edf8426137e2b814480da9c002616ea25a83e3ae33289ecc74cde910fcfeeb61810faa0c766007cdb6db44cb46968b77d2bf9764d9b5fc28c0cfea493ae2db6d779e0186eb6fa95bd03d45164dea5d0bd12288c2711a1a8119cbaedf46f2e331c969c67bdae1067317fe2a4ec52cd70659c55ab50de2812149228da2e13c6852107febd0aa54119bdf0fd156f76931645abe33dbe673d597fbcd9cc751d1740567ed7ad1d6a3891ac63f4218179e3a81318c45f582406dc07902f6e9e692dff2154bb8656e5e88df0433eb475c6231101c5a3ef4a6d1f9c903f15987ba31f77f86163ddf9f10609113b8b88a19724aa715235c2725c70851f7bb53d8d55f8963ed0dbc1858fdb05d9e08f06123f45eaccb1da46c7fdbd98ac83074ed894f2ae26d09acc9b2ba5e89ee177d7892dfd2c90885dc313f53c9e5cb8f07a4db295f9a124fbbae3fdb1e3341394f8132771153e1261b41af587c6ea43170f2b39a80b92f4c0d930fe18efc3ff5199d810769990edee71d8795720bf5e64350928a928db8602021d9331406abe5c46f563574dcb88b19cc6320203340d45985d3e72d8cde0759c9c9a3a54fb82efc26e7b42e105e48d90ad434f05f43f0882903b6223c7bf983e0c19c053f0fd817abcabeee0adec1ea282da73ef84776a7e5b05c27b33d5b63231eb646e693a9d970086e74aaffe52b739e05801767a7b5a25035132a32d402f91cce274ec03ab6ce2e806bee77495e9a0bc7ea0f4b463ffec0b436fd55c91bb17c3d897c0df8c811e1b76ce17ef9981886710fa10fccd0dd1bd381e1a67fc1c2c6c2f4e811cacac0d5f7309dd989b16e0493d7ac85a09f72e04a3c3ebc845304d6c329b0eb657e46f9eaec56d192dfd3a2951ed711d497481a7a10be1fc8a9b80b0e8a52f0c682e2ab16a38a62b16cfd2991a5436746a804ae1ba2beff73521acabfc8aa4502b4c77fc204b9f4027cece152c52c6b33bf48b141553358865390d7b7111735c062c88014eb4132629da57eda715273e5c24d8e50576d6e4f46caa8d87e958e8eea336225962932fa0922ec166ac834290924d024ddb42d8ca641a8154a1a25c5c0b0a9cd6e8a8362a0e6798e6df3f102c7b1ac4e7d78950f554b7e86ddfb8828b840f34d11ae3d2f2d85a0f2c924f65f027eb360c6f858ce9e8f1a96bbaafb28ffb4f56772538b3a3090c71fe853656b815314e24b6c0150987a44eef26629ed00f9ae8871f6a1ecfc01f177d0a47ee8a95cb909a27ebe0081a1a4b389d301e0cb592afb2845c4eeecdebcf1ea4d4f4753ffc59e4bd016a429a10ad1be42e32f55e3f14fc4f69301758a7efd50223dbc1bcdcbdc37b4ce26df7c195da07d4b951a958c84555d7ba3d38eb2112be1bb6e91e5baba4f43181cd3bb0563c7000e83a1250b8881e447f41f9c75937dac927dd2d79c9f41d2bf2bab6cc6ff7563095c1b1179fca1e3211b8c50a37aab13c831a914d2b624756317414f0b242c37576c214536f62c9bc309fc4b0b9e966d98607c9a4847cb687ad54e73b14fc3581703382813be39899b636716704c15dbf914a9fb690891a497b59eb68b0ad353859bba988c1e83109de99fe65772678d8f0355a13a489d4b2a8817bf9b63c3c52921f4eacc4f4fe3a44b4f78f28a178aad841230dfb6f994e442e1d9dbea8a93c13c4291a7153c36e0757084fb2dc6b9bd4fa3eb308e00b5ae2c776ac2d9f51852430ced5d3ab4319d25263aa0db73f8ed1ced9a21be7150817c77dd257c31538a4ac1fc6ee446f01ab5d9b900b5569123c7bd8ae4039bab444a382fb20ac192cf358996685ed82fc4e3b8d139cf86683cbc0509523d61b8dfe1f4ada2d4a879de8b723a1be5322d0328fbfa8dcc190950d25030ad7a4861e4eb6ae9a50ed4b62c4745282a2ec1ad839790838b18fb9d7dd96997edbb072b73d46d9a6156f6db77d1867fd889de8edb1e3b955df18a3c39ee20a16bcc79ecaf7c6d40f2b5e0b38aeb8c3cd39d7c207c669353e6b17f18af1d7d7b2e1ee748e3093ee3dcb4e6406580478fb7146e705a0c9741cdf7134f391d0a3f7eef917a0f0cf6919a0e27f5e1e18f47da3e25cb6f5da99213f39a65f238c46f2f2d5d94b1dbf75dbf772723f19a7a593c96a6c5fd679d88bdf3746eee0c1121485098bc1da6831ca4efee4229ed99b7e76d67e96cfa44778a960afeade722a41a14c1571c0bcfca8fde3974c080a732184304c1039db92da023a600116480c0d260acb54623933d53672159606936acbd717f0b6869e92041b6641c2b6e2227c38869290ebeebba08280644bf4849fcdc715f44995168292251ec9556045722ffa440b9cfb7a1f35c1f8c8c8e40b30b7256c5e9273f79df5e74eca680847455bb072c2c172d61aa996eb889ef9c0dac2e66e4e3cd1ae6a2d742c20d779c30fa946cc5d61b039ccfb5155ab0dd9a6857f1a664dd5c55ab19ca545db158a87db16b4fd361c374723afa1037bb8c4f803c51526e1a0d7bb520afb1196f2f83cb49913d7db5accc96dbcb3c8be172c673b3b48a14cad8594add70910926bad10f04eb6f8c0257aa3b4633c45ca9aa03f5cbc0b2a5878d1afcae751da62daef4bf3b2d2a1fcbec558b9dfd5f5e74a3e9226b72d3fef1a3bd1e680bc4da6ca938a69c261e55fc8a4c59c4f6e36da5a2f787cfc3379d06d15f4abdd7ceef3b20287654946b57ed3ea7d5861cd253bca5201b6c09723f7243f67c260b143c7aa832f05618c837869cd9320b91fb78149296b6546ce952e8864de0b87c468df59969272ec2fe77475309ec30def8b5a7342abac5f8964cd66994be7b4489c7d8fffe6976686697da29ae7ef4160f4cd55c854f910a6a2055793db7e7a5485c776c990c68517eff640a0f5888e47e87634280f25449f35fe46514338394c3b41169de598751509c903447901b410029e8abd533f4a4c2c0db0fe06714981d5e1da08d9ade0947e4f79328458489fabc8f5c89ad6343c365c3b652931882abe9a78d2ce25d5f582e1586449d724e6550e66ce99d06b54c84fd95446957bd0bb96e34fc4ce034964307c6f829272a782268a2e0c605994bca3ae8464b40dbe79b36bf961140f363c472c75c383e804ab1429ad42ed7aac54c194f6f2eb8ce1b922ffe70c1bb5116cce8d7c05c634343bd2507d12220448e5080398275e9005c50a0abf48f81c2331e17a783cd8dae2b206acda236621658d388f7f76a00f90beb8c9158e53c13c520413b1f01dcf5cf4191ae825013384c309214ff3df16203f58c99e1143f6b3fce9eec45e3b257c05121b77b09bdbacd0a124be4171d8f4c1753ed0edefa8114f2d711d50ba2d3d52527e7a92122a6ddaa2c33dc01d1f8a37a97f918f0cd8fedec89ab1007acefde14f149c8bb7d4f1c5ab7bcb81b11cbed7c91cfc834bc2400db36d078747c646df31a4e23b06eeea67a2e121061ce30d314ec8470897b022ba741f5eb2c1dbad99ead7cbd197210fb01a1451af486d402e20f6791004c2f43a41719432f2acffd1edb308824c4578a49a9d3430b94cfc76d85022bdd0d3bc60701721edcd12e85705eadee18830dabb5b32e6a6f5b05191e9fd74360280ef4e7f94efffdf54b9059947b0a459862b3b3bf29f39727a673b3a843dd4b40d756c0b108610379d11d7a0319083fc507700092f0121442b602a94758f1350c87e205499b4e8835b5dd5393689d2605c0c42ac6980fb3519c03bc1741dbf0381415d264dc39c5aa09f472ed6855be982c42b374422e1e7a64ec8aa18ab9c068dffd923858d8ea87af703f64d4b0ce03d66dfc7e37cf8c0b59ec3204e2d8f3aade5bceffaaf617d6539e438eb1672fa9925cbc82df179f3341fdc77f87a3d93396e4b85bc9ec16580fe5e3094a4eb1f158aa91635aafdb6e8099ab1941ceb01cdcd17b6fc2f1c0ef135d8f167db19ea50e42ea8697c3bd9bc433817aaf31e5d4dbe04222d42ed625dd7c723740d10f295384ce3231b16621fdc0772554e76fb8c20daf1f3411eb3e9604a866a562cdcc7b5c22e6a7fc994cc7ddb83c804fe8c0c5905728fe678ea5be34225306115a15012f9629bb596c9cb5fb8fa29ea785baaf914eb1bbc9b0c24620fd4d4bdcc81c11650c032df5978f3d242a285503cb7fbc0c55849f07ad78207bab24c35d04c9abfcc5579c51fad7f21ff68adc14373b0b8dc0475f62dc4af2003d8dde5112ebb5e8a52ff928137db8c759636f009e3dbc23d01207bbf881379025a25351738059eec038ad83d0ed780a58e683eebb33fccf990ef91983598fac0126bc560574e8cd4a25d19b07e2c57c1e8648703143db101b68ed58c7d10be0cdd3150f9129b11859706f38f5303df990daff072d2459dc86ae5d4ce876ac675100d63d067935e9b14bef61fb3310d9b8074c9916d2e89b2bc249a9b02c978c4fc102c97ae56b99d50c0190ad72dc36fa6c542cc0fad953676dd097887c2de8403c458fd93f0ee3c462d256a347c04fdbc8807aa5b0caff46349f8e3b8f9219b5092052b15f42eab8bd0b09b16a8ada02f870310d85d3a717a738332c2eff83e688a3b32dd588042b715b28a27d03a83a446f17a9cb8e2275a4948a48b4cb4aaaa8ec8b79c5f8333782b966036190b567bfbfcb6990e4b59a3a068a592ec11328bb5b6c8786f9040c09af4231339d84e738efc4d05c417f0ee8490514b6b273c0d770d71a0f38b0ac43b907c453710d5d25baae0b726d0cd966185590842a8d5fdd7928d259157247bc3c0480ad00923172580b0c51597637da177c3bfda14659f43ead26ad6beecf4365b98e7c3151eb57e8093b1a3fa7c2fcfda5cc0408fd8c422a0659f5734977ea73eddee8a872c4a8724ede1b08f9991b6183412fd25f4b97804803fd6eca628b963d400c784d58b1b7da39041b1d1abd1e706c4b01d24b41914c663e94c259bb77d195702201c43172381f665ee373a78f083b4b361a2a41bc6822b9ddb33edb658eb0afe3c66d6605b19b18ccd758611fc433a6f86fe4efb57e3000ff58e1bdacb00f07c105115670201ac03f501d834564d9692947fb2b5ca1955f91ba89c704b57eee036523b422d6334f5de08c062125d466ab4c49a264af54f9c96101a91e06e2dd0c6709a557685ac828fa8692840e82aaa77beea05a05871d52a765a5cdb692133d23bb58c75ca2365e5c96915813f92c2336687cc098c8f0c983a4d29ca6d0dc21f60b06f83c2cbeb6f46c8d9b77f8b34bdbcec821b28e1b197dc7fdfb6188ea9e48fe15e0d201a86d1d4f806d014cc411b7edd8727f9d15f50f8d61da5034ada0255598b97d26217b6b9d627b7bd38efe30dfdc64933691f9a820b524e35a1cdcf803bf5d0a422a3113a6a0cff4216c804e0f7156fb9e15a89d147157aad0a7eb317ba6e6d830d487e37a0ba49b726ffb2ff9b266841db1d0f6967efcfca7cc21630511c656b287b9e9aae5d82ebe50520480b9ff76cacd2f5bb458f876f5066dfe2594e22991be7595e55038199368a8842bf8471ac04b4afcf204cfc13f63e92b8b27dd5ecaa7f5d85ff0a1f3e2dee255b4d9c9ea2c1d81e72a2253c44f294b6d1f7e4685f08f668206d81ee72f7e88d7cffaf94dce009beb72c0e7ae1e1bbc9ca60b659fc479c1058cf98ac1ec45071a42ae86eefe94e58dc6bc5f9f222c0c506242ff8b3d988a8d9349c5f411fa9bb14217c211c1d35bb41dca23518f2a996074f356420c1e2e5309af4d374beceebec53c359a7676e5e43cac72fdf070fceaee1cccfdb827d17223a20d69a3b51e04bfc7cd057b898212cd2c0bc95f8d0238e210b2104b930e26595785af6d6000988bcce3a903a87607e8beb2c957f7cd0d803a97d69a5e866706742c16037e88c1c02b515e1d0d16ee88a3e519a76893ae3945139308a9a9b6927808d54143e8f46f48f76bfa12871f5b754ca11ced715dab65cb005d98eaef876af4925ee4eac8561dcfa8da615d77363f06799f1eff433bdbac426c7e8c5e16bcda49e4edd4b514f7fbf7d4955bf016d3ed5614a593f4108ec6310eb98168c711deb5803e6cede2edc055ce274e620a10b859872ea0257de0c1e316d43618d3f0df3543461be472611b588dc6f4d84b5de45f4d1e62168a3ca7483960c9db030119bf601546d42084089b8ae1015caaa916aef60800467edb1b593cb75848cf234c9178b300841d27c0b119e5f17ad5776894c63ed844ca759c6f5bf9eadbb08178b3d5c42e4b8f6614573cf7dba808064b78943463070bf8584a9259d5f979dae9b0227ac557d9f68a3ffcf8b48967d7ab479793c5aebcc9852773fbf1a66c7395d5fd4bc56d0591c19c185a4e1912ee6d46aa9100d6b4749864deed404decdea68ca9ecb6e8bfd37f64568e7722fed8a6267493b90b3c3518d5f43a0db14430e45ff41a1a5244f8a9f4f7a354488d420b8b01009dff0860c2283b805eda7a2453b7410936cfe34e483537fb9ad5016474b68d4b71c5b7bc2e031142ac9fb684c486e3c585c022fe2d1da533fbce0342611e8d57d8a2b85fd6a374955b97cb6cff29f581de9c4eff14ad1dbc9c3cd0f5e381739ddd2789c26bc2c9666a7126442c633960013b0b75fe1a52d4b6388d73548df7629c719fb85e1e0f07045d8e67964bd55ccb36c64c42098687ec38800eae8aea2566c350022a68666fce433c00da8e28509298749948abb38b79f371eaf5343271fa7db85af7b96a741604a8fbfc8b421d17a61a3dcc0572cf72317d71f77e62bac1f9d1f7368324571aa813638d20a86fb83481429e4edee311f16e006adc44942a93e8d73d7d752c2f4ff0766f71a1545a4365580d56529a81ae726a59d92632669315c126b09278d6c139b266a8d403ea92be30d5ed21ef9d0291edc064e1f57e2e08e90d493433da497f4c6e50356f89b8e1d2b2e972eba8b3e533e8958602c826c7edf850cbd1310e725d6badd08349d79fda9d94b4826d2e087009e16a8b9f7da6448cfc143beacc8d9affa596feff56c080d1040a36dd6c56016307d8c4eeb0ebc973265fc9530fa6aead4068a6b271488d6c081f114f48ee307f98c471f3183c2d0c7facea0a65d79a853cd7cab331ff302a51e0dee22d97da136053b5156e2ff83e7743c3ccc87af5b6a872be1d8d9eb5a2d7124b2276ec8714e2ec00edf0481fdcd1392b10eb45b461eac0cf1490a05102f9bc113c0ac2021bc0d7646370ef74bd834935786c5eff8699ae1f96be9a3cc3840b43b455396e076637c3b80e922299b5cdd8bc3ae4b3f7a129714c1aa29e5ba9492ad50b698721ebc145be9ee10e6d100c0a9caed0c815246e6f143452e55cd1105eb341fd28c487637ce52c31671ab892369b1f2be26eccd142d8c357f3574f4ae94b09f00dc598c5598d61ce9f2922b685cc16161690fda5bfeb1dfce0ac2ece38dc8416a47d068e044b1171a4764f2b23348a4515b6d842ddf193ed15f558045cd97c0415c7731733c6d27fdc404bdaf78791dd76c69a302b853a67df5bdec7427b62c71dff94cad1aaf2c121a19aeedb2c62c076bdc5de3212aa51729169368d0cf67d1bc9d8ecb58f44d5daf27047e53771daa78321cac7a93b56e822820724570e5a9d92004d54d90200063e15a651026e08ec8bd2ba25a665128cb56b771b530889d22cbe31b9e7806bec97a57f0b8dfa59d631f785a97692698777de8692a419b0f97cb7de9349be83ee4bb1369f3d18143281f86819ccc0d44aaebc54163d8184cb7ca09dc8a4b35de7523a606c369367bd150d7890c2ba8597d0112bf9c691da5901135f089864b8ef10a69a71ad8172d18af62a99cd9bdaa89d588a9a86172eecdab1c7b0e5ee0ba95d67d543459472bade74c95a270788ae35a31becaa507990b4052078620857abd106092a98f898698887e9bf9cc62f4db3be94f84eadfa3b94667411746f2d74efa3f49e683ca0539c98972c90321bdb497e986abee104205b2d04cdb0f6618cb68ba3331ffd53ca786f8aa993983c1e11aee7bd36ad95f0c5d0bcee9d7d0fb319c9dceb133e75fc2e81d9ffd005cae9cbc5c9ac57dd87731fa98434d4341d6d715e5674808bf0e0dd453a9fa150c82de004ccf3ad5404a53b5272f690a0460479e8477989db80d3e9e426f013da1dd83a9e3947ce04f379cec0ea62e2ccd11620deac36c2eef9512e87f2d3aa98b7890ebb224ccafea328446a5a704be171a805e8f64db6dd0d2dc096f32dafb04f4946045b78a01b71293ad46613bccabf44b9166a550729f6c1adc5a4a1b0a5e7fb905cbeb847726207750ea5973c1a6175900b4d6c053c121230a360dfde6ad0b91a490f9bfcac9f8060d8d7aac0942d0cc53a238341dffe4d41f0364ead6acd6b1606d92f9c716f88301ffa42e5ad3bffed55f0ed3ed17a5c75fc3d78db9ddbab59bc602241dfa6d6e6aa05287593db4ec3b9b9d4624db5553b87ca61c963d07a43f8c09e4113965bbc41021209fddbe6f8757037b272833a0c657a65aa6294bb65c5ad3388c4e5276f6364418c26843c9f9ee4a34b8d39f588bdd11f12c273dbb13684e49e2972db40a6096f29371d757085fe97b01645fc717830227a0fa11cdbf05d9079d9f5f5f2e8acd9d7079e3fe51572c62c3ab98ec477597a8ada08df7157c0561950e7d7ef830f93e8d81237e4cf5f3afa0372cfc7ae4fbcbcb675d1e72fe710aba46e0e791f879e42344cd6f7c07616934a27700757ffc10a046b5260a695beabf78f82efa1d1afdfbc64f8e75ee54b5c8956fc2fc8cbb374c2f459b946a7f001c917c769b2e331552387f727ebe1d6734811caca2f4b2534da26a34a04fbdf0269bd3e532e75e08e27b6742e1c02b533ede1ed8a043f720382e4869d9e563b00ba6f461a33ca6245796f14c1e826a0f1d4939508e54f55a5a07acb3b4ac11c161381e2811e8d5519579a7a8d9a04f729f11baa18c4490df35538bf518add1f260f7c5e4b6f5350eb7c2542be28045a9dd2e726eeee57832d5c4b82f24b0d5c6d9aeceb2a81cb4cbdc092b9630d1c7c89ea4eec1701e0e5329ac2013032219f328e5b8f03aa7464263df9470d7a37aedaa6f073fb54b4168435315292942ba204cec7ae6bcacf3d83eba879451018fb367b8606b59daf64d85e76397a3b2bdf5fd0a334072cc6aced25e60d99f26aa6b803d5f97f4a40f3e10cfd9bf97206d8f83aac687bfe243e89e0f14fb0a3e5704ceafaaeedf09ff3585f5cd41d708e46d295237307935cacbc783061ff49589aaa5894c047323effe0b7cb49da5d16052252e68f6dc1c06405d4a24797a8bb5940ea158941802e996accb9b7137904b33898ecde6e7f8ed96894eef13de47a33d41f697b95e4d822d16f69f638fbf66d46fd7f39369205d7015f7cf1e2fa051f7e2dff3a152975acd8217c31179782762f7842116cc12df38939531e96938133e330fca56cd362ab8981b002a3b75d5631c36c4183aeadb40e5adec23563f920f32d57541fd799b282b0c5088ed0f5df095f9b3a253427f65cab3772e3412448c1338b2182b4db418da200d5d80bcaaacdf92323c99d082f537639185738d1f721968826313cdff11f3d5ea00caedd3e553aa230ef9fe79bd78a6655fa8fdd7ceff2bd386660d072742b0a1496eb9a556a504ea4dce297ae15a5ac2c049a620431eda7572dff7202b92862e8480e97c02bc0414b0be1887302ee2969bf175edad88b7b6da95a198c8055d2c56c6b29008d49f4faa7852ec62104c7a45de3f0d0423994c7e10f324cb5761d2084f580f885ffbec1a04304f1ec1facece071103df4820dda8d73cc53789d0f258955cd3bf64be8d8c5564dfbf4c62fd8ca21f7821c8c0fcc9b326ac5a956274460ca416472ca065dcd9b42b7e54c72ec3b633c0b14a7458f17ceea3dfdae60584efe7547383a83dee17ef13fc098b650ea708d32d0dcad7a72f8ea2ea6a40ec4dc22fc3a786dd40c290d6832223349d43ba7a5d143d41a0dc801cd95bb2e394feebcd47e5729c576e186180955df511c04889115d768dc639dca4a51fab97e3ff29a4828250aa28c919ac409c091ffeb07c8740039bcefe659bca08dee3838956bb1f2b9b2ab632bf9c7963edd89cab2eafbf374f8c61e06c3d775ca6ec336d519cef9cd67540c8b8b8d9bfbe4522c352e873fa3f0d6bae89a74513a66058069dcced619cdc53feef43b890d55d053da137527f9c8a6200c546a941cda8933b5141a9770e93812b37ca8856cd13a9207c52a070c00a0d7586ba9355e28428848ce03192090e8703b982a1009904ac75fb1c5fa470e8c7e2dc7852f1fa0770787310f3f3a283ac149c2605e7994969b6cfaedab6c36424368d00b2ab172af7818bf47b582462412f808ab9b373756cc72ac0fe4945cf6d2406ff99efde14ee52bb13ba20e88bf287b4206ca3450f73c85ebcd9d28977a007fae347f227a7ca138757bc5eecdd340cc4c28fd9d7a89104744fe52a8649e60c1cad863c541059918cd62c330584b62253466bc3e47d8822bdc99098ca7c117745c504c6475ccea700de76ae198298e633cef3d591fe4180bf467201d2cd8dfa5a3102bc7327c5fb1cd735556b899df30c610201e334decd829745c3b6e92a38b3118b52e8642d7635392add8e827292af10650e03e1fb348e85e6970c1c668e59a7af0ef47dd77cfb7e0d41f89f87ad18a7e23a21b2f8877e1731e054dcdb87361ef87282d2ca825311134d86cb4fa2131d4cfddcb26e9b5f91f61f049c89066cb9dc7ab2ae55cd92055f317b8c0464da2353c2c281ed83a1f28e8c70f0b1e5af61dbd05adb93aab663c5654aa842b7707d9389a2c364008f9b173a4d95e76582dd281c5409fb6b80e6f40b4720178c2592e14ce7dc1c54f7ff69fac079989ff3bb2dc8c5900b90e74a2cc64b64f281cc9a3a8cd9130d7ac4d5ea7a1a48c2af62d7399d3cc1504e28dedab6c686e4ea6ddce7fbf010667ce96e0f9adc0d6fbec7fd832837af32043f0666c213a3ddf711113c1348554b148893248d8291a08f55848c5870bbb7c2f35f9a0d2a08a7f80791a32536c11606d3dff92eeb1a9ffd500651f6d024bba6ffcbeb8d233bae624b5e3792b1bceed08bcfa65f2b96997aff20e41c08885ab79cffa0605869c733aee7085d7fc8285e30a2856434fc29772356abfe6cf5962b5332e7a6f21c6b559296b8f710963deecb709367e5b9074a1114442849bde85aeb1f4990fd6813a11df3cd171dc2cf145f5e00716348b27d08dd4b9221578c1da117f9389a44cf4d18cc3efc42a11f2c67082d0bd046e126d1d1e600c9da10d0ba56010918b61016cb471bcfebefc19a3669b684aeaf0ee597ea44c9647ddce28bad9a95955cc54a0be1106bd908a0abb270843f6dd64d6947d7841a9dc2696986cb082bc49cc4a46dd40962e57a4d050ba11a1e1de43f5c99c1dc7ec552a672f10c125c88ced1650d56784a368bb45b60580182faebbcb17791f6739865e2029bad507de79e4aef51ec4cc8b8eb86e5c648042302f1bb08c33ca7581efc98410b24bd56ec02570c1890ddadcc7617b07af5849cacd69d30a567609b388ff6ca950aeba5761a75abf58cf8874fd34230dec539f374ecb62d99e087df0572675bf81f01c4ec2d1b54e1225aa89e64b4647656da7144187267f6e6208558fe741279859733ddd68693f427540e916d2e0b460722b58e01dc8e67bd18015413f14adf130823201c2765d726f654fb9b1d7edfad401ba5902e7252db510068b6d12f46fcc8cb3eef28420dd3b281ac5e59d4f245ced2448fba6778fca326157a684fae9a8682801bd249f46704e2ae4500673b4eec0d0576852c64c0cd0c68c32cb7e61fe3a9d22d91303042621902a49fea21582f9ed09dee4202cc9b613902000a84b711390c17be1f169795371e606b9b8302ae513476ae2c28eba09dba9cc7fabd1afbb831e02a9c49614923b0576d32b9e73ef09bd6fd7ac3395f1f2b9e7c42081db0c232da1de0ebdedd8a8ba8d26b1dd8118fa110f67e700e28b8f348580a0796c2ba9a554e912bdde6539366b99528cf21d0c57c292e8942a2423abe663d3acba70689f9a10bd462f4552157e8b083c4b90baf5b3438178c26681ba1b17b5aa348fdec647fb59c10637dc930cb22f9aa41781af01ca1aac5a6c4de9b894648b3fb8a3ab307874917fa48ecead8a32425cc412b8a1d5e7cdfe592875b77bf9f54dd890ae552120a4c8d1f44b57938da9332e6cf53b8707cc0891964029321bc7334e1b487c5a68cf805889ec8cbd9b625426671c83729c259637383ec73ecde2cbcf91e8eca5ff3a14ee52ef5615c6811f0788a518a82cd50881268f4ad0f7ba0abf7f644b31f46b961af663f5949621605f05b100981963d30827ff160433bfbdbfce3852a62aa85311cbe341359533118893d9a3d2a19cc0e7e203ee1c32ea1c4bf178345be4606f41414266c52aeb67e966fbf77c1f7456ef4a0ae3bd8f862d9f40233bab5e7eae9ad1925c08deec2991bc4a3ce2ac0d2145429ac266af8e096f45853ce5614629cf4c551a00114dca04c10ef9522fd27de5802fcb7e9e3a99293233814dddcf690f0f86d0d034ba629a18a3de3cabfa3b96e94b427249a058bfe00d0f669a1486b5ed187eee16f994c9903d81e83d46dad6c898e5a9d801e3e1bbd80e0a4798bac8b662808dd0542f8b170f4b0dd59acd49279b792aa8aead1cba32afc91d4b08de3519aad0824d9e6e3485e5832d642f94f484cdc88b36e8c7ad9b243b49b55f07f8494c014f076b5b02e1142443e27ae072537d29db756181a28bf13c3fb4f661aa5737ffec8bbbff3fe87990f0b6611c2339866fd7f1d140d99ab2500a398b9684ae60ca9d1fa584172d23a55c819278589d3629a834f71c74074a5b3a9fa807ceb0b164c203d669e2e01806e119348c5961b2976a133a2d52cd7842e0414086aff6e9181e3cbc5a0c878387eb9f76f5f09b94600a110b21fb37790b187365b66c9da0d5d39234546484813b8943b8266045496965e93ecd00da1512ce14d657fe5416e639b5cfea1c81df1151dfe8dfd21d4d0fa4a7f708a2baba2adf4eaaf98698177916c50d2ad2f87a74e71da8cce043b6c4624a83e9c33652bc90da050d896c5273d4ac697226431bb5adfa7cf0afe65914ebb921a7417b602c9d06c18fb1e3025590e56949112e25e4a2806926dd403b70765b0e3ddaab53747621c155b56fbb032a4fbd241b0ce7803e24cd3084a54e554ab4c289f4a49a19a922981122527d735a3b0ab924036c3390acad92795c8d7ac2c31a10b1d3078e206a34671d3c123dcf55fec32dd5d990dd934b7ed735c1e6de58be6fc121e9dc3ed69163ad74f3c8d13ba3c75414ccae2924a102a1abd74ff3f6590ac6d6d4c061c83d78072be02312ad54fc45a696640ff501958e241ecb3058a822a1a355dda9251d1f5a01e6c0410d198c341f86fb194613e2e0d5d011c2accdd17477d8780e5a4ece61e82141019cc944f1039f155411c68bc15fb64fe6cd5dab1bd3d2f268c8ce11c8e7b4464a596bac3a8ac47bba5eb1a1b77b70ad7203f02d05f00022837aee418b9588d81ab18b1eaf123db5f7cc4ee68b45018ef85932dc8554827195982c4b3dbc45756d56a4f085680b778fa300a35e439d8b54717c38304998112fba9d83d681656780cd3734577af353049d817092ebd795ca86c39f710681ec640f3328ed5505d989f61634ee6c6915a81a972475519c18434073c76b5d83f8457929fc1721b43bfbe0a475049dae37142ef64dbc63914b1a1f8ae19bde82fa64602d2e37040edea4a6ef54e94b194666a6add8e47c571eb6b9d8675362dd84e0ac3f5ec72354cdc19ab461e0b056a319aad7008ac57030ea8c5080f3420b026e9ffffffffffffffff5f1c68bea1b5c812969294d91568b58d7d4a52da49a69492617b8fdfc03d00c0d96eb6db5a7f0b02eb0e810eec0ec1308b31c376f7f5fc66a98c0023d5ed94cb7cfa943d78a4811c483327467ee17be691e2b53333b24a8f33840c0101857286902189477c81fae49fa5cf131ff70f3c0885d263881012502843840c19e945b59ec5f618d773e92c9517ec30018f33980cf72165788042211244c81823bc285d3abd9371938db27b10f90193b163c7104763053b76a4e126d831c455c0230823bb385ebe0beb1ae7ff4a427ca06144174b9b9b194c733e7f2417b970c2e3cfcafc56c2082ecebabaa7def4274da1915be02db96717ed43b65e5bec693a63df25a5c545ab6a517ad65d8be9675b1a8da1059e51c38b988e192f348bd43766de4fb9ce9e604416bc9ca59664656846b32b148a09466291cee3314e46a8d2f5c1421bf9aa2736e65caf552894347c073ed80c1f67301935187945e61bb4435433765008465ce1cd8ab0974fcb82077985421963a41549cb2df5721811237434ce60c5fdd7526bf024545b99bc42842b41d0d09155eca6e5ce2561a5a3ffaad0e23bc79bb06f598c144652f1678b0cbaa4bbb8a26fc2082a36eda67a1b646ad3a9258c9ca2d92c9786119ac15f4c8f1a4918318531beb057fb6b1f13e26d83915294593c3466590b91fd0623a4304b3a7f4eb1d02367aa50283ff8f13e0ab424479a0a5566a24107824030228a93cb59cabed52a148ab7a00214e0a1819150a4fbae3f75340ddd4f854231c10828f4ccf7ef21943c398f7cc2b4f7e09d7c455cd40a8542a10819f1c44147a8bb203b8b1945150a65a41388c6e0921665337eb8543c30c209eb424b1ee27adf4357a1503030b289fe3f8dea28422d2c2244c8901d239af0469bbba0d57ebe5c2a148a8f1e0ea4d983b840082399e8a3a670314f555a911f66fce841c68e0fec28830785d282114ce8df6da3d447a776494c18b9c4f95aceabd3b27dea2563c412f6c6d1ed6daf0ceaaa5028690c3143c81011a431a40c0a8f1a5218a944fd41f47c0cd51fd754e9e1418400f90085e2418400413c4c3042897ce37c4ea174c86ad0245232ce5c0b1fa4e8d48af8087e441277b4d37ccf9b31ca5a414538073e821c8c44026f3b13de2346fcf8150ac58c40e29821fa3c2ff4ed45d030a3081a642c238fd8cc7d44dd93dea4318e40bfcb7a2d5c0791c1462c78683725ecb6051d23963ee468dfa04ea9d08100610aa5c62f4616c17f7f6cffb01f7b3b150a654411c711b9a305711b658466fca810c1400f821084314612b1c687d82a97bdea74a5470f1f293185d2a3c80f1e52860388d4b8c508225c2df73827ebd5b7fa60e410fd95ec30aac2c4ee06326288459d16fd7ccdcd5f15e2ccd965c3c629d72ca7072384a84198148c08a202a18111407460e40fe9ec39d7d2b80d57f2033a09255d34adf0a4a5fb50ba94e7d5253fd58777d488c2081f1021eb433c77ebc96f0fe7ac61a01793b6185b84abe8688542e93183113df469dd9b838cda5d9a1746f2b01cf7d4cedcc3c33ee7b2862661d23ee60e29a5744cfa85ef1366b20362a705cfd3a753b7a70e9ebcac11e192f86f0d053ce890890d3244b5641b2b3407ce5cb5a3da5eeda987302207f33a7fd8a8758ee73c1889c3dda1524c984c4f7982439ecfdeb4de56ac89236f38963ae206b4a5b7582e5a06193e69186903eaa2b5cea569b82486c2081b8ecbf194b29b5af2ad81371fe9318a880bfd8ea8c12eb5d250973a82863ef54c5cac31cdb1e660e40cc97b693ecf4b64b8dc0ca6d0be14a54c745bb00c6797673ee7f0cc82db1f182143161b3addfec5a06af64824d8c1e38508a9518591319c632a33d88ab890d388181654bae896450b197367240ca7b58a0fdb7953554606236048b8f5c6bb690c196f91912fa456f2ee740cb2b3bf5e487feec3e3e273b47fa40ba7d6de8cb7f80c7d557161bb12ef34aafd18d9c2625bc7cfe6149b945f4818d102b22a9430bdbeb165363e8c1246b250a96b1694bc35932bab092358b85ab8b77fe1b39bcb3285912b9cb39825265b4f57c6adc08bfdb28b293dfad45c05d4cbe9a27d7f5d98b6861146a870f21417ebd34d67971a9942a35d7ced93a1aefa6961440ad708d597a63ac3d38e429925b92e967c59cc829bc60814ba96be842c154af5cc3b788461e409dbb89cac947b0b1fdd11279859f464e6e622ea4577f02042c46bb061a40928996d539f96fb0bb211262c8ff02c98e84c8f31686409db89ea2c970b65ddf1a8c18812bed1d22c9efc9632ee434692f0988e375be2d473ee150a85481a6e020a650409ffc8af48ef8fd1727e04eb836d0e71dbb9b469c408ff85a8d372e6506f8b71d069263f5a3a9dcd12e3b89b356594503ab3651895dcfa9977eba73b8561b8d4fc1cccc4c43ec1683e8fc6d829bb5b1118cc09a92fe87423a75fdcf2bba433c688baf6788c61c317cb2ebc69e75c523bfe5e147ade2a4495bd34332f0cebd16d477b5edaba8b4ccc6fd64c7ecb95ea02bd58dfdb2ef9522673e16a6b7c92c163472685600336707172fdd4fc1365ea82b730cfaf6539998ebe1bb3454a9856c7ca8c7da86a61d6e8e2c7669e5a0bfa800d5a3cd7669a47a587cb314282cce2f0f2ef27d9594509952cf6fc23de8277ced08985ddb135897bd79c9cb0f8cfb458ba714564f68a752b46898e49ee4d8b2bee70d125cfe55de2f25620eae32ffa65cbbaba614542282d48794969156a693b25f7b2a4b496aa305987813f86b8ffd8f06214bf52e1983c31974543b68aaa50f16b5dc6ce2e87fefc140bbbe562f2bed1e1ae290ed5cba0d4630cab5229b8da5342f6778f69460abf52c45e334beeba8ce2b017eb265ce7365d44817d363fd9db1c2a463403c5a00c1ba1305f7e67686fd182e78002d9f1d5cf2aced30519f389ad4356d5cbf99a614f9c3f6656c83971d9ca4ea45c5eadd3a2d57294559ce064d2275b6e5f509eb38973ea30a08dfa701df26ad6421511d8d0c429de5a1c35ed17eecfc4a6b48de9f4e4925f27c406268c2ffb6b770ea79f3b9758aace4a352dc9659856021b96286f57e4bcf89b9eee4a6cdf49d665e9d0ec9512cb8b570ba36e5a4ee2499895a6a7f4059dc5b524f1085532a952d1e2e791a8c5334c9ff4cfe94648989559e684dd8fcbd947a07d9e99e47ed62f7404ee572e6a860c1e3ddf08dd93897031fad6fdc6085f3e87f8d1a26a3eb7083f84263b314a85d09c2210d92fddda6ff0f4b1441cacc340a666fcede48e97ed061169317392ffd935356dcc218ea19a93cb63faf36386d85387013b4566d9d17bdb398642b11ad828c42d684d326cd2a93b5f08d1e88b26b318fce5b9cddcc620d02ee9412693d1e326883bb470425fc8d7b4530562b5fd19edeb21ed444058a7fc5d1c2d9ee824fe83419b68cc25fe75d35f041b7e30e6fa381d3d3ba84df601559f84f6b78de95aaa42a1244f445660830faed9c610a644c674ff1e54376f153ff92cceab07b3098d1e42c6af0a2d7940810d3ce4a9c380fb1d3e5cd05da50536ee807e8baaf94fe7977d21a2041b7658f8b42245e7474b2daa25d8a8c39dfcb5253142cb7ad1414f1d06b6965beccb73d12b7b5480021eb03107343657a6902f7a2d72e85554e79873f898b17f1b71d84f467e5435e7933138fc3622735ce6ce7b558542e131c4d39014c4c0c61b167fe34bd5eb2ddb960d379061a30d77ef288fd32f7574930d68ad8dfdb598eebd3d828d352c77f2739df3a44aeb6ab0324b61e068a2e5e4b9dad33ba622031b69d8af5b12575a1ff74468d8c50531f5fb9b133a7668ecc0c619ced561007ff9cf3a4913fdba2b144a0f1e67081992289421455860c30c56ddb7a4d36b685858030a36cae08bbe17a74fe7585b150aa50708cab04106e3a78e41dbec4c59e503790f7c74c0c61836a135e850994bc9b089a16c558f37af531fd74618d02faa849647c35d58796c0c1e1fb00106e7934853791331b7bf80388fe9c53a539bba786141a6974d9ada0eea831d28838d2eb42e65166467164db65b830d2e9c2f5cd0a0c598a594090b36b6b00935a5f2cd2e377e5a70e335abdcbb9bf69831d8c8c2a393a7b10c4fb35b9a0e6c60219d53c72a4f617f99b17185ecdfc3c5d76eff0c82c18615fcbf0e272e69e135fa62b05185b48b41b998c6921923830d2ab8ba9f2531753be9a90a8542840436a6607ab7f9ecdab55963869cc186140a3d3a0713a3ab84ce4136a2a0267d66a77f73da4e031122c40536a070322de9e84bf9234468e3098b7a61336ad0d2c72c73c186131a0d2f86cfe28b8d2654c2947b7a0c16fa5be060830987b9b9b82e8ececb611b4bf893fe90594eba417b5aa1508238100aa58810204444604309a766d21526738c9d85cdb09184938bab235747262dbbc620e1cfb2a841cb7ed559ce0c19368ef0c63f5dba363aa95bc45bc0041b46a8936951377b94b138152371d599a3e5e5ac7d29d42046592f28112be257f74eec950e0819410d232b2dea78d0ee7c8f2fa18630fa58e11d4a2d4f6733186ccb17dada3746dd91083580c16b85ace897e4064fa5a008357e91b835357d31194d86d318522448087cb18ddeecd29e4a7e877a71b4f7d3a7636e318b660835788178bcce7a974227f184506317cb3966fe7398fc0fd78e140ca9a10bdcbe4a8b496c16beb44da8910bfd6baceace67930b5728141f3908f2c305357061ce2e7796e489e8dcab42a190a0c62d728fad1f17e3f6ea57060f20356c717de67039ee93a98d5628940f94086ad4e277c1d447e529ff60522855b438cd3b5563bcfc552673841ab3584c9e68d93b7d9fdd0fecf0c08e0e5020063564e1b91c22ab477907158a85e3b265acbfdeea7581459ee37d37df09efa47c05e25d4a2b5bf7ad4d6b1ca1862b4c635a8e59dfd9d1592b0c2e6243b6ef8566fc851aacf0f25eaed9983fa6bb5661e9e85bc8ca3cbd1d0c355461fadd58a274cb92bed9851aa93026cfeda07b9309cdf1420d54f09b523bfc6d99fcdc29daf8d991994db8badc166a9862cd1feb4bbf9845fd10156a94e20db13937dd6d672d93508314be24c57ff384a96b96851aa3c845c7af8eb9ca1caa1a55a8210a2e4ddcd44df7a4684fa8118ac5dd1b175fcae025ee1ff81843dc07424e70354051e6f47b273d3c8b56e2d1353ec10b234486d0f7925e318f8d91831a9e40746a7629debd33666b20a14627fad6d3a2be295bd343410d4e70b741e74f2ba317be0a6a6ce253def226cfe14eba6a35a48626381367992a6b8398d803130d1eef2ce0c1831a99707bb3647ff6b9ad4555983079f2f5bcf9a4cac96a44a1c62552a395d1f4665dd1d412bc09f52d6f351d345b8932aea4569ae879480993fa92c9356bdedc7b125a65ccf183f6b817fb190158c7e635393a8b961ff210332f476d31d56621e9c39f7d3a45c9cb1f65e7c31a2c3556a8ab133522d9433a88396b8dd1748ef693e8413bb57d779e64165324c94325345c7ffa9a9f198dc183040fc575182dd62d6d774a7287940ee6268429cf9aa5212476b8b4fca525ddef9f47fa03923a24bb64abc8d16ecac5cf20a143df9f6e327ccd29fb0c9239f8d52ed6cf6536b9190d12399c9599848e6949c6bf5448e250caba20c654c72b977d400287b4dcb957ab93cc5792bca113d5e6c17ccdf48d246e6845888627dde28d46d286e63d99aefeea32b77b88a0033c7440c2863b4dc54bfd20246b4034455447b7070f29f28310ecd80104087f60070f0aa5061648d4607437e5e1f35f625685421922e40c1f67b019202049c39ba2fe5e9b16ba63854219e2690ca15038408286a3660da7bfb79649ad909cc11c2f35a597f4df116a81c40c070f562fc59f742b4f1948ca80aea7fd1cd3a77849130309190a2d9b8531939f2f9e46911f6e2019836f42078d5fc26ffd42038918103aed994adb17e76538908461fbb84eee1f5fd6dbed4002866c45aff35e2ecfea19245f58d01d5f30e5f1dc4aea8547e9bcea24c4e8cec703922ee423bd4e457d668c5311122e64979dc399de7f59ceb790ba6cf22c8667f0fed120d1c2da529d16b5e50eeee23f20c942a926e22fe3e6fba749b080a9cf295e4793b2d115166be3984e227499f6adb0698c31ec3e57a891a982fddd995532fa576f8c404285aafc4b279784d43add14dcd9d3f8aebd1f1b2391027262da820e1d5fe6a202491454971b99b398c5d892788881040a49f18c9d6fae51059227a0e36d6b6de824564a244e28db3be64f6e4d38fbf6a60f111f944b226182f1a3a2714b6ec830e1816409762cd372f28d3b2e79f240a284648e778ddd596a41e8788124099eac19b971bf9e3c0709e6d4aa516d4e9a8ee117488e90a6ddd42cfda93239320389114e6be5d6a5e3e2895f8c74d078bb2342b67c3131da96639c6eba8d15f261dc6daa43ef95ba982a61a0643693164f2683fe8381de1b595a90933b6d0103d91bf3e142e8c9317f81ff785053b5119d7d0e387c618eca97de4589cb31ee85e19b36c8d96a4fedd2061cbc4849331b6d423e5bd8c8806317291dea565c0c32a8fb74719ddd69376bb92f83ca802317a60c27b6e64d358587061ab8487c67870ca6f3bb87068e5b209416a565598cb1451b3ade82b4eb6cf3c901472dca5c5aaebab10a3dcd0c3868d16831b36cdcabd511cf806316a6ee90975ecc51e3595934a7a5eb8c418cba4de701472c5c1f2d6896f4c57634b901072c0e42a97678d0b9233faf405a796bd26f23c4ad37e0704552f49bcbbb20b55546038e561cb3b8f97a364e578bda01072b9693523b429aecb5fdef806315deb79c4c0b2fcd9be655619bc77062ddd6fed2a948c6533fba41a7129a46c5a6e436ac9692f52ce7140999f6b297e7e85f6f0a4c9a069329bb617757709422710def9f654285697fe02045e673a5a7848a08384671095d2edf196e7fb522e0104532f9cba36549c7387228525626ad3da8313941e1a67f8cf11b169b858780e3138d5796f5e83d1d19c7e189f643a70cb9c1eaf2d3896450a65bf3888b734269e0e004271732d5e8467d190901c72696a5d0e28d7097e44777080e4d38ffe971c3a538177b1c9938efabe9a9cbbaea15c18109de6eb3f3e698cd445a2488f7e012c99be89c675a73af0787257c9bb9ccbaf153c69c4af8eae1b222a3c7ce5062f5d07b233eeae9c149243273f68ff167448424f196f8cc9d44ef42d63822a166414fe8dc63053820917bb6ea6fcb396ece8fc0cb4a78d41c592777471cfedab6d4ec447bb4116db5acd1d28396c24d46f866f2eeab9be9fc2591a00749c0b1885a12211e43cb92788b1d87224e61150646802311e82ed9f0a7e5b2b745c47a1983a72ff34df7f328e22d48c30c336a5801c72150da99f7cb3499a6d7105fa7f2f38edb69db2dc49f840729ab73e5e91102cf3eb7ac9a97640c12048e412c85c7cffc51632b5f18e0108415a75d3c3ff7cdfc076231ccd636dc6efb9a3b00c167f62c28b171398b08c71fd2325f3ba5aad974d20f8e9f38f522ddfb5d10471f98bfca2f6dc2c45b9e0fb5a0dd1ff3c4a39fbd87cdb54f9c12b31e0c9f636bce7d3728a53c2c76301d23f6aaae85f150abbcc88e9071ebe33bdce9df354b76b697b4d8e1b1326be13cb3e793a903324b2fe698fd99438be8f0c88fdc1f17f635ad73f8e435ed2a4bb4768c1c6c51fec558fbf36db1389c64d4d196d4a6f076b9889381030e76a9aa35a5c456eccb1b963a283397a4a76c41e4867d74eecc561aee21b781cffe3da21e5eb80ad9a0efbf58f31bafe12c7772316776316b8bd450a617fc7d6ffcc2e571a461b9462bdccbcf5ed8a001e922a6264ea74b425d010ae038c3bf717f638bbf39761a8719ce21d7756aaceb05f180a30cbd28dd2c6ce94ce9211d709001a91ffa33bc20c466a931a43dbbd4262aab67c53ee010c3ad1fbfb37895afa7c4431138c2b0d8bb33325f50e23c060c68ced7314773a945d9a380e30be8aecd71eb3c777ada0b5eaad966fb0f1f5fbe0bc7e7768c372f7a8f56080e2e2c5ec5877a499e14b5d9422f09a163f6fc0ee19d1610275a62c7b3fcd759b290d222ec64e5bacb921a0b88f1162174d094f692aec0e79c6ab57f0c5a6eb142b2055f719915b1707154612fbd7bf2a30b9a4b860ab6f8d6394a08a1c5bca66069d097d53bc688eca460078552430a38a48056adbcf586d7f5320ae8aa9297c4b4fe851d0a693b99e64f888dbf88e3097f922ea7fad272aacd359080c309c81fd51644a7cbcf198e2624f45589119d5a7231d4821d65f070030e2634f2e13fd25ffc24a43896806b8eb927846b66ccf0f0010e256cdd21f4c5cec7c68e018e24586263c85caefb41b421e0408226ce65d33f2e388e70de13ffabf1d65d5a7118a1eb2bd3c2aeb8a0457ba318b98712e2aa3a73d0d2c438bfbc5f7a84cee2199dc28d61f426576f57336939ec4280b4c08c1bc2e84bbbc5f0117efaf41bc140e6cdedff2cba69d08161f664a7a5167f648729ebc62f9ed9b05a7b69e3589d831bbe40735611b2a33eda97150ae5462f98b30f25bba2a9057d05043778f1ee7e4c4259e875ff54f0c62eccf67c7d725dfa167c5d5419d79a05cd39ae5972b1695e56c60e6a3c786ee002fbd49e749673837ad02d16735dce61d23be98f0d71226880c005376cd1cb9e74be1c37bee5238d21456ed4e2a03c6e4efab3e44b322d7cd96466119fb233b93f880851c12c521a4ada7587c89b87042830e3470e6ec8c2fc1a77fa516f44cc5f881bb1f863784145e98d329999551a6e821d05861bb0d85fbafe767dcd628ba1507adc78853926bddfa3bf25d5bbe18ae42839a77bd30a4d3d77a77e109db41c569cd96d69621d84886c1599f86e519412f70faa2afc184ff3cd889026a354b86be65f4a5bceb2204645baef49bc3c473ba9d58d53747b32e44b7af83d5303374cf1bd7f96afb6b4c9124ba197d68d51d464eb662b140a29ea9c5ddcd85736aa592a144a62214028941e65f0586e8c424f51f9e9ba25a1da240ac76c73d58e7b32f555281419dc08c5a285d6a41e5a102d58e8062896fae6b6f437c5e986821b9f48945b89ec16f47abb3ab8e1093f0b632dbc742284b64170c68d4e5cebc2b9864da1b75525c80d4eb0b3a9f7f19316f37536915e9ace21cabb3fcba209e46566a78a9d93c9cc44d9362fc8857fce9ec2446aa767dafe3b73aa2f510655fd4cca367a1663097d4e7bac5ec954a25642b1f46ca93bd57447898390bd1d3b9f96733a89cd742c53d639c8ac2491fa1b134255ebfc0523618bba8b0dc2936ccc40c2ef9cf6992d5958f78f583b0bcab49c7a6d568e58ac32fd9d4c737a988d309ec589ccf28ba14565c4eedddd9a2b4f5e5d8bc86d3f5dbc33737556c4a3bf2be4d77c960b4a845963d072e87c46b70e1156cfa8b76c6d42ade8105abee8bde94de4c8c710e9f5a40529562e8aed8540a87ccebd898ce23121d417f7d4f709f5ea6283488b2184b9d87983a72788a57859ec18673768f10f845996549d78519a467b00f19a743183b0def67bffb098b922d71e542d433fac2263f29276f5c1119f3f4be6b27c580a3999e25cd4ce35efa1fd4a2b5d4d9edaa20774c5b4a4f9535e6a973cfc275c63bbc8d01c8378c8659d199775dd051ddfa1fe4d4a26f159cfa466874f7c9853e1d76296fa3af8799d25eba42553daac5028144a8f2fdca0832d8eba950d6a54cd3e6270630e7aae0b1526553924bdaf5dea5ad7ece271e83aff4b171e7dcc4e386c4affad9fdc8b2e37deb08dec8f1f329f43e1861bda72139db71bcc366c03b2d4843815fd9eb9c486646c31a6dfdefca535113ec387171112e4c61a14ad25fdad32e6b09a1a3675d9474b52a49b1c552894f7213e88f08d341cd38aeea6cedf7dda0d34145ac2d5545e0cbae58d3394a3dc4ee878598e61ede1021e428a042141de3043f5b2bc7caa132176ab50286798e1820fec3003c580c70e82fc688119280614ca1966a081851b6538e3946d5c965c860c66cd92accb73a5ade5c61890db53c24766bea876854219e38618d050daf4b667854b251f4bb811866476d12e4b9f07f7180cbe54e572a6a5c5a4e5bed0dfcaf677959a76c30b587698b899f430f1e98239338b36b976eb8a0bca5cb7a608a142985285422172630b9afea73d2d86c97cbb42a1144143880f1f5ab02535b38ee9b14ba77270230b66d50ef25e3f7e6253a1504a70030bbebcd6f2a2b61c5e5d6e5ce13826b4329957a1506e5821a97b2e6be765d6d8dca8026a1a3d7cd666e8583571830a7b9027c34f8bd864778542f11b53f8a39fa5ffbaff784a0ac8ff9c848e3f7f53a328f82fc6143e72ae4f0405cbba5ed02d9638f1623b7678e011379e7052d2fde674c8f524e38474cb62b6694b42982c6f34811bd5956e766f2b23135acf14b32a1deb345628144c11dc5802da5f4e5ab28f21427cdc50c272a1425db3f6976e2401a18350fd9e3443a87f03096ec6e6ffce2d27153b100e92821d65f0e0f1831b4740ada7e751629ac95b6e18a10faa43b75442757041ed63a418fd7bce6269064de51b62e0d63defb2b0add5f2304c721f4bc3e7df91a911861161ec214be63d46df519d0a1a6604bf1863fa0a396ef1a95fbf9bdf8d5d3e911d0441a3f20121396c6198b6b84bab52b1cf83a420472dfe3cdf255f43e7121b2d721173ba5ef492962eb3b8a4b9a0936e867e912cdacdcda5f4b645a93116e9a0ffb3ba98cef49c1cb0384e3dfebfe9e478c5c2756913b6b9ff3697c31588ce2a2af573b698660fece8008f203fb8f2010aa515a8fd76d816cda0d7b3e21cddd9e9c1cfbbd4abb0ec2525a246448be854a129a1a23164f2965573a4c2cf1cb2ef7266523b2aac2fd32333f6bea03d85ff7286d813d9147bc8113ab42cfe5a662945228487b97791b1059b14084ff51c45b463d2c951a44d877e29635b4e650e51d8193a4b1d64f36a96ca110ab4ede8732f5dba4e0714a77b39645bf4b44e56a5727c6279737a3e2dc977b9a642a1f4e8b1a3c70e3b342891c313866da7b8a7d9be3989742299a49808ef98b4b98913bcd8f2c65231e3e7c29b48a6cbc26d869a58f296c2400b7264c2fbe095e9c2d2caac1c98683d3b33d426a5d1541ec87189b253b3a4e64b17ee52a900057258e2d0f0398e957013cf313cc85189dd5d74cfe9c5faf63c2590eff6db3df9939b25018f2241d0a8b460073926d18bf0f42583e967df92b06e9436f99e2b2d9da9489cfa4a4f33274d236e485c7e1a93d6cc66f9d467e478443ab74edf5fc7f6dc7144732f8b8b7526daaae4234723beb496e4cbe2e9947964442ec8e61ce192cc2c08881011ec20018f33980c0ae50c069263117b6bcae67639c6e00e86b0193e6a3c218722f81c2acefab763ef2947227c53ba47a6155bf314f90bc6c88188b46dc61265a7469fc69022690c294303390ea188c6fcc268cb12cb0d71082d8b49c6ace62804b3b1a5aeb12d97b5e42044d62dcb497654797f07815f277d1d449d92a61704aa83fe9c94c7356927cf1188c65a648bdd0222a54743d6a6d917afc4e30939fec04b3ae88dba9f33e1fbc1743f27731c79322871551feab3595f37e975e3f301a5a552efc26a965f8c5321c71e12edb52e662cff9b5d0fbbe7245bd67f25eeec001572e46129756e4c33df795f78609486bb696dcc498539ee70b60c2b2254b6b8faf920871dbeaa0cb1591abd49af8359eaeb18c37ececf911772d0e16f39c9121bbabe99650ea6daaa8b9d2583d68e1c38df97aed23ea78cc621e9310b2745bc7c9b83e0f09cf27de154282956bfc1fc235ed69f51fdbea51c6e6894385915b575f5b90d7e6ad72cc656883e9925e46003ba329f37ddab5dcb6b384793a7f7a47323ed1d898500498355c0a30539d490cc62be9c3dd7a34769b0c396dca42d8a0647b8385f7ab367488873495c28f1f099c50cbb28e52b5a7043c0c38c1c65605cba9222b4f5fb4d3220475e3c6f1df199cc3164265aea369ece178f3162409e9a6ec74c7b979e301cd737be32f3d6dd9e420e30285ae3754b322651ff0bebc69605518f592187171a6dba4ac76cfbbe5d406b72594bdca79914b9b08707212f4dba85e7b3b979ca37a132a885353cbb985eaa16c35a593878d29e3dd78e1efdb0809bf2aab00c2edda6afa0b84be1b22c5af789ad705f9a964dbd26ede457725481976e4e08ad263da89c830a976c6f2a9d2bb5ca9b42ee419a98939b2a29b86fea2cd5654167280a0b2ed797ea7f5313550d7240c10eb2a6b5fe9932664f505cce7292ee9e34f70424871390d57216652daf2ea69a80da243b5b471f612d4ce84609ed25e3e65842b756e7a5b427b5a7120aa1c3558b50ca9184cc656b1d2193d2ea0cca8184324cfce752dd163a9de3087cf2eb0bb9b72f6f7218a154cbd24bf1d05bfd2829c6f32d97a60fb71d8452042c78018502c47730648890203fa4073c2a25c4a83bd77727a5b784893c2814223c5450328c638c19abc3f247e95f1887f37cf1fd32994e3b184b42bb2c7cd2ff5765c5a004189a865797937c915dd62f16f7575f83dde7ed961894f8e2a0b4983786320b214d150ae5c77f192410810828141f3e28e9c5b97e3b3a9aa6f8951769f89c6ee61df5acdf45ffa67e267efed3f7125da0d3f7c60fd77ff1dc0a85924a729192f1563ff6ae86ac0825b8f0ed2bf3960add02d9b9e35e74ca6dcc630425b6c03ebf187b648eb1c5960a85d2c3063d2a40011a8c51520bbcbf2c45de6e5bd27b3cfb0980004143046394d0428ddf994b88121d979e85634279bffc2736cd8b2cb0925990a6849712151189c5261a2c18bd69da45d32236fa0a85c28292571cdde4bfe8828beafc2b25ae3896b24c8da934e668a950284172f08348094a5a9152dabf99a17a35324a58e1b7adc61db1fc98738542b141c92afa2ef99419bf13aa2b51852e977e5ffdb8981a557acca0241565d5e59bce6d2d6951549c5d0c03e9f5d2631f45bdd865a5e4148fb8c8f5ae8c295c50520a6ed7b3a44576c7299114ede675965d4b77f43b0a63e91ca3c8bb1c836f860c09010ac23cd0281105427ed96f520dd7dc84a20c737bfd9f614bb8a040884f116ea95bf972854229838719259fa842a970f5dc26e4479ed85b38f9196496c2ea2de9842f55fcbdb0eb36422de1049feb5ddab02e87cd6d13a88f979fe5f95cd1b29fe14328942bd184ed52e7d0a64517ecc20a8542a424136b349de66446555f5ca150887810213e8a0441a38c1d29c8400926da7bb5d7b06bde6206a2e412073917af66f3f47daac80f0f38fa01a405457e782007259638e674d182a84c42aef7924adc22d364cc71dd91021e44f807900e0841411134c818e2454860460925d27ffdb2e0713578ae26a1fb690ef7cb7c39aa2490ee9da92d9fe6117b24ce9d5fdf63be4bd92a858283124830ee5d9f7e5e12aba30a8552f208764dbebba465b1e322679438e2defdea921fcf26fe9246a4c5d082ba5688bdb82961049b3c897a59b896f2eb457877961eef514426da2d06cd0ce2d29388b2424e0759cbd4f289083bc8fad6d8f32d7852104a0eb160a74f37bca0bffa3744257ec4b33c56a91b2d84ed39690e1a52c3c69c1088d2202e738476318e83e8433f47f5f573f317447ea7dab999e7776b8542f151128875c5e6646c59bc2b35206e1ba5e75befa5f24f8542f11d7091923f3823675b50bf5628142794f8a18eee62754cb50d4257d287cbcb6d3d66cd9cb52be103af2f85f6dcccc1bd4aa3640fff9568d1e2bb293d2b08257ab0cb8579dfba3bd1e93ca0543c6a7f3497975a4af0d0e7d97029fa3467df3b76f0f843c91d3c4d3aac657c96f53f3bd8a6d5a48a67ef26751d76cffd164665e4f45da1507c206488ef60885f091d10fae2bd7f9d2a144ac91cb6cfa265ab3215a1463a289183498b9acdd3669f69ec951d257148c4abddb4a065b17b03874c8fd8a890f35ba77bc39bbba94b870f2f4255797620439efd04140a134adc703af7787a7cdef1ec2718620619632869831dba3a6d326d39f195b021d1185a16ad41a84f75a5073f7af00304144aa5c88f21ccc34bd6907ccc5afb2eab6dde10a1440d698ffe2a17a4e6f3701ab6d1a2bfd60b4a97cca3a16b9f8f315b8c663ed2681f6900394304256730e67ee566cca13d3533787f995ffecefb829d2565f04ec6ec1e4de42a6f11949041f1d9542d89e6d093567ce04186948c21fdd51d4d7f99259f188c2e6a335bbe131d9a9230dca55368f1c4ce57e6150a65074284547c38107e00493fa0500286c5e06160af97ffa3c8a82d979fa0e40b66414b2d67319d686c312fa45cce926e413ebc074084bca0a40bb6a4749f0921444be1c285448878329744dec8a7640b28b7ba5021e3eec68d168ee9529205d34b755695d291f720528285f52e8414f9f1fb71ef40c9157ecbed0ef9d228f1a20a855262054ee6c674a9c3dc922a2c092d2174d229fa473cc48ba0d1a3840a8dd87fe9d7f1b47c062553f8e5d6c3b23c7bfa78891412daf346d45abee359a1507af4e0e1409acb5012855c181dee19d26f3d470c25503895ad7cf67a8fa3b90a8592849227e41bb3201aec37bfb7254ef0a4b8756a49950b4255a150b852d20435069d4ddb3ae32b84122620ec6ceb5a74974dc92b14ca18254b48334bba84ea69f5584a28bd9224e8f28b49085da579a32e41c2af57c254e72c86edb0e4087926e1a73a59d6e65c85424941bc053c528911302dd76e654c1767fa622ccde89896beec416324c470ff32b894dda3bfcc0a85d2c30c148314c45b6002926124bb63aaf47441e77a302011c6dd755e7b428ca7f183818e413564be0cebe2090c73906b9bb3bd4f1dfa4542364b2123bf84fabdc7085eb0c34cb0a34ce0407a0b24be407adc347f419456e6497aa107fde4a37db40b9e23e1c5628bf9ec428a888f37c80f1e92cc40b28be2e5c6e675d53a272b144a0b4874d19b75fc100ddbe120427e40920bb35533e98b35092ebeb991a9f637bbf922b985d9743f63bc132fa7aa502824b6582fc7cc457559964356a1508608f1f101925a7ccac5182ace4fcb4923a18572592bdbe2414b2f59a15076808400691f3d82a4e0033b880001d2811d3b8afc60078542328b6f6b5e5062a386f99c93c8c22ca85fbbb0415f5c8d24166fd67570fd1c45e35ba150900a4440020b4be9c858b7f1745692bc02d3a695c14e3cc9d5f0901050283cc45d40e20a6496b342c9d0a75cd290b4c2b2bd9ef192e1f627324858a19d0b4237662e745a40b28ae51644bd9c7e55f469150a650524aac8d3c3001924a9e0a48ece6930f38d0a4850719886958b9653345fc62039456aad83d66a4dda4dc714b5cbecbd14b2fd6396c297c4e5be8fa2e3612545799d937c78398a452633ad1f93aed85f146b100b139919536aa130bd18576490e9f65e71800414bd6b8c9ab4cc5328cf27f4a04c8d0821d4dcc554281407927ef80822c4812412044901854264074284546a87a1008f33483c61127a5fd41ce26446b913c6144245887e30b190138ce65223347552e20bf15121c21524d984fee20821b7f9432839043bcae0a103124df0f76b2efe7dba0e9e4cbc3995e7b42b92602257d13025f724b944ee92dad2694d96f0f54fe3c7145502f7ffe421934c89af3d9e1c0f6ea2dd2399c42b26fcd365ab8d58819048420bb53f4ab4b59884160772061a65bc83004922e167f8bb77293f957e21814b4ab5cce9bbf825534611277206c923b41cb198340c9441d2883369248c8001c9224240a288a4e677b97d3c29d7ea8024114b7de5494d85b6b37307c82b3620410496b1fdd5f5e9a76f17480e918e6aaa114a87d36b9218624d31b6d699b3c8ce2944a334b61c34885900823178901042db515372fcb4545a0cc92016e4dfc57354d307251241b82523931031d2775f924018427fdb5e6a6d6b4a0288c24cc78b287d17eb21f9c3a2018b3068fef98ab2ea0fa522d8eb58e22f4bbdf45d22fa9ce1d294a87dff1911aa87d8b47207f941c40c1d8738636c397d6e504587210cb99add3bd785f8c45ab65442b97786950ef0a8401e3cab51071d84a8b45587cc94a64acb204ca23ee5cdf7827083fa0fb75ab2629302a1b5ecf7a936fa65f906846f5a1d83aadb1c4da8e30f8b313544899d522e0b0a493afce09659cca69af79eab42a104d1d18747a3697595f8b0d755b9d6b6ac077b0f5a55460f7549859646871ef8909974522e73eae53c683ac9759e6596ffe478388487a7695fd570f93b24423fd4684b1d35633be47290793fa8673926a58e3aa8392c3a2ce650c71cca68e5f265976f69580e575d872b6dcb607fc7a117739ccdb278bef8231c7a531df231e6cc257f1074bce1b8d5a0fbfba9c93b1d6e48c9ec89cd66291dd3d10684b2300d79ad4979c90633873ad6b0990c3ab5b89d1b3a5756a0430dcbdd317fd27eef365e49417e7c0b74a4e17c1a9e6ff4c619f9c040071a6ccf27343dc6fe52df597086949dd84ceeee7184a9063acc5046d32d6b929a1b1faf30910ec440471952a736b4a0a5ccf6cbd04106d44255e81ed96f3aa3630c763017c694e84bf2b43ac460a80c7a3ac3e53467da808e307042c7ad8fa3ee77bf19de021d6038bbe84fabaaee7d272f42021eaee30b88b26ba9366b4c2f390f10e8f0025f21c4a834f7185caf10e131544717f068f529427d7039710a7470e1171da6d44a997796b4053d2713de624e1ff5e57468a1dc685db3e13ccd721d59f84e44aceb55b8e0221d58b8ab4db84ba2ad19978e2ba4f2a5ccfede1f336e337458c1a4d7f2a8f5ff2c6650150ebaae19359ca7cfb25450731635a77bd94246c7140eef2c6acc691f5aa3951e3d3cc0838c327810210185f23e887805156133aea0430ae73852d34457c545a1f03003c5c07bf010838e28581ade526be6537cae030acd866f96373c0ee878427ed265293e0b567438c138a3c3b6957431b9700f213a9a604607138e17b72fcb23630b7aafe858c26396da197353883fe950026ef6292fc7ef2c6a4f0272c3edce654147b912128ede9e23a437b30717347dead0e830c2f9b399c8a03ebd601ac268f0800885528ce67316bf42e8cc61838891d2203ac790a361b02e653e71569a747d6120429fd40ebf8d299f9360b4f7727beed25c5f11187c9d66498e5c0ffbf72f7cf7e8d9b27d4bbd094e7ce195b237d1a94cdcda8bf47d6ccd885493417620cd0e0408e7092fbc5df1d2732dbe5b2922c403444270b28bbb72cfe5d30c22a3e944170b36ffb2f4b298f387cf87a8400a27b9e05c4c8b2222b4fa0985a4324e7061bc38de8296d4e8e416c676d87ccad2f2cc63eac4164b2e57b5c05c4e6861b998324e66a16dfc07f96d39ef9bb2e0254f5d3a36099d668a45957299a592a341da0916b7a0950b4e5e8167963b47edd2152dc815e8cfa6e5aaaecf1cd4150a454f5a611223354685bea0f93961c57576be49c995cfe29eac22f1926d75aeea2c279d2a8c5d9d549a7e693ee6d3384905b2932e9f6d296bf48d0aef3e3f857daeaa594f4e8116d3a597cf6f37f604c28929fc70f11bbfe71de3884209c24929527f2f9dec28211e5563831352f84173babc3ff6a95f229c8ca20d3ab91cdfd98928989fd1d1ea3d739f2714c6f5f9d399a12973d48313509c47f35f7d47c6dcd9278ad1c96737997a49dc3960202280c1892752a5733d84527d6153428afc680aa5470f221516f0189282223f3c40a114f9d14338e9c44183eb6f9e8a0ed339e1c4629c975a54a8a8cbb889c40925fab1328c3c97134db03ae2a3cca7f9162d138568eaf0fc7f11b639010f324e309177a7b7bb24de85d38aa021240d3e81104e2e919bd418d7694f77ce2a8a468f34dc0415223cc68e379c58a20d2e7dcb41dbe70ff232227052895df6243d8eacde721125d062504f9bd6c5d6cd5428949349a03ac8d7b0fb37322975226347193b4460821d63f0f00008c8e0c18213497cd24ed3d637dd5f8f84a5614e83b920c472ab50281500c10e0af038c3092418ed9cdf31ba9c3c622f8f793667cb591df71f43ca48407e543ee0831347a42d5ef69c674f66a71ad1c97f4ed5f0a12766469cd3a6cf0cca7cffba4ae56411d9060d4abe271dd646830891223f78c0e044118cd233e5b94aea76ec2411f77bd9b61c84307d414458b2652e978ba6269d43e06771f5929654b4ac1a2261a2f7ea547b5288f3aec6cff46d524c27842537834b272e3cfde9638890324e0661f9081532366aab4195119c08e274c9b31cc4bdff431e084397fe76ca00c2524a667b59ec6e49fb0a855224889b31c6c91f3c4d8f597f4abc5f7e406c96b34bcf85cfe5f5c1a04e9de68c9b5ffed4091ffed0eff8f3fae1c1933db0359a6ae553277a30c893a75c9468bc1c2c83470f4ef25066594a1953291ef4cdd95d787533cfffc91d0eb93efe99c5dbac49214f44880a2a457ec0400627765830dbf052a6eda40e07f5fc9b3246f58dc9133a946ae92e8bd5a269ec2a14ca1cbcccdeb93c35a1abad50283fd0891c10ba2e897cd01e7ce43d869841829338d4bee9bb4c2bfc420b87bf7410eaebc525cfe9324ede70d2a94a9d4abb0c32ad5028163871c3a7c9e514e23c63b60711ef81244eda70b9746ee7722a1dd9c07fdd759ecbd6f07f6acf31a67408590d8ed8f55dbf7561749e866dd7e57c2ebdccbce9040d7a2ed1e269fd85d3e5c91910ad7ff539eef9e7d80ce7b0d6781f5721d53a29c331fe99b624a65df43a21c3044ec6d0277d719ad4a7cdee9f88c1c78f331c7012061444c8024ec0d09f0617d6c34abea9abcad861aa0c0af0584ebed087dca44ea77917bdc4c18917d0fb7f555717a737da853ae7720f1d45ed7be5c23e967135dd3eb3b52d2ce0440b6f0ea7347df563fce7240b86cd52f726dd6ab32d27583088b5aa5c2d352f5f5758b4ab4d5a9261234dd6821d64ec2883c7084eac3080932a68426ed0129dd1bcb2d2c37330c4c9a0503c07437c0c1ee8840a6b8ee69b2cf3a82973328593d072a8eda04bc75e4fa4803271ab399a9059a34486a0817c08910b9c446159d8f3245d32f516a20a85628603711f453c0727d831060f1e29e0220c02169041068532c40c334eb083043bcad8d18b1328984106014e9e50c489f8f87146070a70e284069c3461d9fc49762e3e6fe6542894139c30e1d02d06a15b2c8da7ef25b42ddddd8b7efd31149c2881481abe83079c24e1cab825b4a6cfe286ce09127e9cd181079c1ce19c18010226c510800931ce4165a99cf7ce570fa30e2d7f0c91b33082e1230126c0c075747e79a3b92cf2fbc5a13c35fc32a6dbb6bef0f1e38c0e78b3070860d28bb346a8d28234152fdd26bcd852633435cb3e9da50742869c0102935d787b7aad3bc9fe1ce6fbf01e65f0f01f43cac841101398e86241e634e3f95cca4f2e2660820b744eba83c98f06198246111fe223c8fb308308fbc0870f21453460728bae3363e9e7e71a311a135ba8492d0e60420b22fee3c7190c3099852c62018b84d062b9a4651b5b4a935708790498b8627153c3bb9833b6f3df8aa3ecefe9c77a2d65b262153b4c54c16ccb82eb68f68fd224153e1660828a08989c420226a6988049294c4df2a327a15dfa9509298e36b29db3dfaa641e85034c4441840126a12032440811216318c004148b3232f3e35a446ff289640c17fe225a25e263e289637f6a2a148a492730cfbf49bcd4b2695860c28905d32f632342957b02934df8f871460760f000134df82da650b3994cf3a92b2f30c9c43ab7e6f109f2a35b6082891ce480cbb080c9253a2f21f7c36746f32b128411bf8005269648d58bef9a74bc8db93302934a10a144e3e3e2fa9a18e92e5c41144a0f4f3f7a60059349d8a6ee25ddb7d19c2c1349247a544b9aa4e83e97ae5028424c2241c40126904880c923fa72c934650e8308f901071347f8508049230260c2084d5f4fc8cfccfc24adf8a814f9e183333c21934510c044118cca38b3579f6a4a9808eb73e3ce7e129a5f2a26881080c92134a5254fefde9270d12a14ca182686008049211e9d5a50f320f74b2749c18410c8b1cd16eca57c0890e6327cc02ce080c920ee0ebed14ad5a990c90a084c04515ce79e6d87f693195e8404144a8f3478c8900e7480078f14c48bfc2004140a0fe42fa05078f8c02410465ff36bbf172f73b2925c4811370104177aac5bf6d4494dcb10213e3cc80f20417efcc1a02db8fb7dd2ffe2ba267e78f48ccbdb52c8a4dfab50282dd851068f22de820a111e634dfa50dfe7fbfad2cf92a8f890fd5fbd9aeb76e82bc88f1098ec41391d5cd44eaa4693eba118a1de1ba666c4cba6c0240ff86d85c9dc524679711f3d4cf070ce9866e4fafa8c0bfa8f216594617287e4a3877491d7825c267658379b6bd4fca57c774f42506052876cb3a810ddc1c570ba272128a0433fc22f4d6796b394c64de6c027b962bf9b9f1a3e1513399c450da14bfd67203ece10322405a981491ceaf04ca663085bd1470ac23e7a207f010a820c3181c3e667fd39665dbcd20a85d2a30528c081c91bccf2fd243698743927090932060f9484a08042f17106111ec8c40defc69bf6f81b5dee3807148aa3c1030741084cdab08ff8a6f2ab5262e3950aea71021e45d020c30320f01f43cae8d4a903266cc04fe73be584f0ffdf640de7a65411257a35e82f6abe7a9c4e1ee78a491adab0a34e6fc7b94c1e3434a3d38d9c8da5aea633a8dba6d15f8ed3161333983ff5a626a1fd49f53264dbde1994d4d7fe8c0919f0da9673be75c780345f91d5d4440c0b67d9f2fab987671286435ef650f1d93568bf42a1f4f02167f828828610a6507a78c2040ca5d6e8cbd28a4c9ec40a8522a4880f1f265f284f282d07f5eb15625628942b9878e1bd11be214747bf2d2b148a9a7401f7eb24ca638e932fe5e30c34ac60c2859378265bc0c433d142b7beb1e15265927ba95028144a8f34fec71037c942259e09163eb18e295e9eddceb90286053bcc0a761815ec3029d86150b0c390b1c39c80023ea860720573f79c6a119bf105132b9469571a5a12f522af1c9854a1dd9793d041646e393423d821821d21d801821d3830a1822da25cf29894779a7b0aeea8d32bbd31d7ba6c220573fc282db1eba3273389c2a75b70b9057db92a642878ae39fbcae6b7cbda1378a9baf7c5143be19cc205f3cd9e292fdb05932624b3e6667f77b1112d13ea9805978410a745b97109a98ca7f61ab712963fd98b61bcfc378992b0e9f14ea337a9ce929a20e115794163b53539c269763463b72c9ad6bc8911f8f89bc2b3b8184d7cc5c07eeef6a5518990831885fcca2c9b349d8c9d6318c966e8d03b1aea7be321e483e41006aba76994b6b81d9aac502839827187192f974d7d20073052213489502f35caaf0a85f26348911cbf408d6b8bdda872f86299d1d973b896d7e2a542a1ac20472f2e3deaef41ed1e5c8441b0e30c2623b92c72f0826f753126a172e745b80b4bd69d69917fa7a49b43178e576759be4cbdd7631372e4e24d3b9765d1f26cf9d1420e5c5432abff7232904da82452d368240e05438130180c0080418eb76e00531108204844261508c401a95ce0e6031480013f382a5c4a222e2a2016209085e2903028100544814018100a0383810c84921810e354f6dd215fcadef591a52fbe9fce4b0fd0ccf3506184b1511efe76371239cda16fc7bdfdcb70b1403c8e0459b523af618b14e19f3e18ec2b11ee09a816d2c32b70499648b9e245aa47edcc32b651e260da1433c62d6f29af5a2a9233f53ef3465d36ee26fca4b0b711be1dd36e8dcb16d33522fb51199a66a761b8d6963a2374e0b987aa3182044305cbd05f5ad8c156a50476bca58d4195acff6f37bc951cb5ccb6687a4544ac31fe60ff1efdeffc6d859ddf4e24129bbbaa92498b4dbce1005f7b1fdfcc44f66b6bc685d9c86681d66a801610741cb72458a72684191a240d19245916574c1ab0b780289290b15598e193cd2808b63b52503880d78a3422578ca86de259b6bdd9a2fd79bc32f5043f9af0479756d3b7ef19ef1c82e85eeabe9a67881b0d0a56d842d3509f815ef1b1bff5fa0787cb78d4a2f1b11b3fd5413bae30c345ce0e7b40950312a334c9d34c467c2048bcc8f0c186e50656e1cb42edc8a3b6c11f0c2c62d443e020d4440f3040dc7510d4b7811f928e69f78c01386104094fb24b74cabe7017a304e06ed466477a78e8f0ad3fb07897abc177c3e12f16c748af4970393a58035416a080feb80c72e9a4eeb380a08668ba0723ead37fe15290e18b83e0333bbf3ac86271349640c9f682972c333aef607151c0d6a564401e8fa524133e04fbbdbe1d1cf30e919d0d0084be85ab2f5281cf50efdc0ad24c986058df0cce0b4250dd305093d2e77e296f77942ce2009033910ec693b07df50dadc488d06391452998ba296e5b96ebb98b9ca111299a3ea8c4f1d9fb27600b0997d4c76fbb26965b93f0135263d9b896cb548911bf63138083a687c055dbaae8664ed66ccb2d0b6e8da6511dc737751f794a952d07e5315381ac3d14338a860e9bf0a80d53b9891a964693bfb7327f7a3355dc1ea3b8177a1f0a71f1ea82d5ecbd60356aff95ea008018e92a5e5e78c0178a2dc0666baa007d3d7b41750aa5fb338052318e3d64eccd1e3017b1a18f273b909d966c8df36272701527d348b6222e8ef3c446c9089110cd41203f41aaf918fe6c3945665a88a81caf6f2b7abb1eda402f8f3f884a8705ef8643274142e9e40d9377a21fd46fd8ec4f2f8460cc1fd24e7df326f7981b7209853d69b5d730e338f09a7bb49dfa8bc5d659b509e954b22a4625867b13d4704ac3feb37d0368b7b0d71c1bccf1df55ba0116093d9b11b0492c38624a0f3534e03601d231fbd43ceb13e31e70ea0358e796a78816cee47a0563370b1a8513b8446ed2ac73097b231fa562bd44ed1a56e89a51cef1f993233065e131fc2abe40eb821a8031c059c52252450c465cdfe21d1c8ccc5e729d488c3129beff26ebfb8d5ca617b8997158e43df74318ef6c049ff3d1a733f74c6a9283fbc24e0b7ef2e8ee9fc369cbf96e28edead5bc7e27f117dd34b5c69223a0fe6681defbdbfe8ec2eb85410ef052de99ccfc8ecd373adbcd8b6c91f36661cd08cc5928a2457dd8746e2033fd184793e04ead26c0fc13bb96533837aa85fda5a0d24b467e9b2110f2ac919cfae71d5df690cb55b7d71816baf584b1312b169ca6af38680a44fe5c93107b4649fccb117407e76ce18673b090f5184ccb04e949e5d1b048083f5462e2653582a3e3eb4228cc9e2a644c625936c73fd8217f74fa2a28108a49a5f8b2d4197143af9535671cf774fd9c5e3ceb79221615a047fdfbfddf090956288d42d33051a7ddf9949384456d04756d041c48f47249e107200ccc185be60793c4dee010f153e0d2f3d0fba9c09433ea1e744f36f94a4a6b07d53553c469ed077b286f6acb5a2136a1feb0ab43524fbdb97345a2d9a0360b9d79e3a8670de948a522dc18caaead358425492f5ca911156ae0822b0e62caad328009138e2abd23e08afa1ff279bf571b696a009d7f82e725c2fee01f4fb171ea16ae24fd0ef2c6de56191f1c21860dc6068f7b1698fb08aeed164f15647aca7d7435013f8907a78c57db7da1ee6f9b8de91f218550f6d890dde39e7c98fb240888374cefecf3f5190f83893c892f3ca078e85cb9475c29a3df719115dbd9469f728f7cf3b709a8503dd3f728eb178ee1b2d44136e1a42f17410596c7e00a0d200d0ca275a21dfb055c9e65d55b579022df263b6f17cfb12de3f16799e17c9e38298e79632a17e8f23220762cd52b48b516e84655115a7824bacca9059a9e213689a7a0f4efb9cfe9839317526cc37b5c5c3c2ba950a96f2dda03c40a54d0c07adc36efaf7871e305644408a052e3a6245e392dbaf50eb03f414fa908df950af725c896f607d8c67c3fc8d22d54476062b53c22ca95f98d5a6814a94c78d707eacb8a7f1f72fbb33e58e8997947f7b244052c68bf6b59a83ba64ccdd3e4cd377a7906b31de4bed4de66ae85e0cede8a177268909898207d6afc85d3b9ba5149bdc8630132f5e56a1c36fe528e525aa57f8ea0d90fe372e7fb780bbcc6950c202c45137a3043884edffba31268b643eaf4a23b228f5d55c7e838dda1fb4da836d17030714858b1e3b8a2ea46f14e91d7ac40a0290bcccff6c804ebd67baab41e41955e0673bfa49a75f8385282d8cba42abb9c77a4f4d31258f2ab31822517e9f3fe639da434a911ee263540aff53f68c3ef4b2a70b79e3a80d0c401cd993b8562d37b051902e4b90ee44923555dbb8f5dc0291b11534049126a846da04bf8e7140440db12b06824997c8a38077189ae41d341e7a20da8a02773888a879b0d284bf052e60d2c8e6d7a48251be8b0170a60601e9211136478a2506cc52f788d67ff725219d33838c9ed86c2701516960d8d1962a9a8bd233a330b8155d2c046e2e6600c28bb9bef028abcbcb892078a587282420bc221f968a3a131091ed8e0695dc863778126de27454fb35298ec02da67ad9077fd19beb5edd073b42eb22e7b944c814e766a3f90151540b9d868e76920749be47f0124dfc15578e54dd56ea15632c234a8b97adb6eea87f2e5e1ba81aa2ffadc5c3f719d2da5215051a242b389a2ae7b40e750089df38bff4401ab5ec533c0466c26519440abeceaf25b3209e8391bd6ad233801f822c1f13d2aa5ac6b65fa093923e680a071d67f2d4d5977c6a3c256b38278116d22026a4cc0b7cb62de3c468648fe6d98796fa66cfccb7a13c9e41912d40c46147a260801f6a0ce3fe85983805524b6f10e348822b44141c30b812eef3f76c9f1be67260923f39535a223a969eeb2ae8b642ee9b6be911af42b2c6e007a2c442d99167ab896024534fa450eae0d2a65761e40cf80ebfa79b65e92e10f7e52515494a0b93dc8a113aecb517d932f3989fe044dc3ec5c78e9b0c3fd37d0188ff9e5025fb1b08d4365513e40c7747751dfa80900c27da0f68088f8482bd918875971684667341b5197d390e9e43d4498d3314501c762a084e82c19bfa99b00c56f2298b474f78bede41f19238309610b2efa391a8fedea3ea7828266a0032983acc11e1ddd0ccfbb113ae592065c7283367c6865f7bf01a1636ab6a439b335588ff91df3427223e57263d01c3a3abc1f8b7e0ee0fecc8d0a9dc33ef6df22e5655f09d37e6acf9e71e037b7f61a842813de002436059ab36a0f9bb2b3ab88d7322b26f530c3482d3187a36eead2082f5c24e4281ab3065445f317a8ec2f066ad266fd00b99408174428f700005e94c172670e0746fb288a46fee501bcdd96fb406dfaec607cc3e9881c4a9801a4a3033a7ed9ea35907b32399a5cdb525aa028579740dfe80ae585d5544473f1634b992d4e353cb52caf44c15e0c6eb15b36b75155f015b940c871020911a668e510f5a28757c86a974eb137fa2946e3ed53a15f680cb2939457e6294868af864846af896722e2c978bf06fe7732e3c4f2b06b54241b5dc66cb570797c6c0861ceda2b8f02e3725da7efe18ccca6d1595637a9e240efdd9b84d3915e327220631a4b312128c60ee47e9a64277f3b474641dfe386767ffcdcc9e66d09ab106e09e37de658c1158b39fd2210a24f19451caec8f9a18091a4da2c2858e2c2528fb90e59b1f8bc38b42450e0908b69e003ed6206e88cf77ddeb1c55e52f940283e6c38d35625d9f684c8e46ce80d8f7bf703e2a2a6f4b276dbd5d54d88a455f2aa7048ca4666396cafe809a04223310de710e4aee4390e9a15086b6bddf19b7d8490fae8414bfe66a289ab13a480bb25c82dc5e1fe1d63c59bac953af2eb0175dc29c05d3ccabed281733e508bad34fb9b54804053a637616fa31dce1d81596c00e07d09ff534f4189b182b5f8f66c96844fee81af7d3109e868d1cf22adf4cd0aeedc2e274f5711d23e12dc2e88e836b71a49fdc51c0eb35d939438a9f0b73af56ab674403eab3db9b4adee070f9d69905873c6d63fb100b9c7b1fabbef5ebb848f0476c6fc90b5877d9e99d4786cad181aeacd3fcb782d5345cd5e6e008a00eef460c07a9981230258dab0dcc8c0f7ab5cbbc411f5b76fc53a7cc3d05f9a4a74e09980b10b91f3ddc42c84a2add92792cf8b69b2c2b3392a7da4a1a5fa438bad61e03c58bb0d755463f729b2f9085b741924cf6006718b5ffac65dd2c79666b6c76ae5b6254a9efd02652917268cc28087c837ae32926663f275f86e8e92458d63dbf3129fead7cd51486e20a2789361ded203045ff47d529f8489dfb61edfccfe6fc7c83b2c910291b84752b6005cd45c3bf3368c3d03994da746258cc7489dc27fec8aadfa4845bb3d7f311b117aba7a7e29b24a617aeb504b0001f04200107189af5fb8e4efc0fcff38602fd60b5269245de7e81cee8585ddc6ff267dc91316c3cf1c40f1400866104cbbae854b136b655c7fca1175f159b5bbd4d5662ae039a7223e682588e0a98ef2eef3f3d110fe6972f36ea84a19934a16c64a026bd5e808d26ea40a9208f3392c2bb7ce3a01ead15bdb4313232746bc61525b3aee8582b877074c0ba6961f8925e1bf528960a77d74e0582ac1101bc2b2eac586ae4f04148b01d3146337bfca387cd26239474550c28977bc3b3d26a21e39241c2b15983d2a2ca81c3785766337c72593bbc3cec80bd0967f60e776350a05e8033e05abdb883c11ede9ee973567c9da6745561ede6757060e6091e04173b91fe7d5d55852c3e7e867b9be4d049efc5167e614380e5fb8cce515294b95ff3858dae94710690ae5d7145eeffeda29db2e748a5df038cd2a0ed92165a2fa3f939461502d0cbb0c6366a452d2107483e132a049c6101d74502b299495ddfaacdce9fcaf61b450b6eb1153a862ee4afdcbddf994d61a40f4e01e866f9b4ffbd969288a5b849227c71790cd1dc44f605c8150cb414c5bb9b33bcd4613d4676008f48821d7b55261eb4005263d71dd5452e6ccf2992d393e17afbdf9a1a2bca211026359944db00cdf0ba1f6641fe94016aa89e82934d2da8172722a958ba1e5fc27a839b3a8d8065ba10825b6bc41aeb58d7fb5718473e6e38fbbd04850d54d2b4b204ce7dbc7c60798d46939cf0b79b58b97202083d4c011d5de6a7a1df9274f98e25a0deba74e7a4a4af902b5f5665a14986c6cd8974bbcfa9f2306dcbd0ce8c1e1728d153138aa64dc2de084f32a4815653e41ce81842ea74db5f25dd2688662a0802c01444651c62ee81bbc49f3c06957a056c14a260996427d2980fe4bf69e73a63065b532206f01f79f41a2e16d12ec2a169f7417931bf0ca869da5cc459fc0df93cb4dc971f544efc8d0a301bbb0cd9ba8bb38853855c34dbfb2539543158dab5edca2b61e98e9efac5b0a4338e11c0e4ad889c2492dcc85cb78d58afbcb1564d14a112dc61da124b91d0eeb4316695e730b28214cae50df9d5aae609b15671f3fac6dac3c724126beb77c94c6b917e972375cb51b984f8748c1950a507b36c73928dbed97d91cecc80b963a03aee5718422f5839d0eee6d428da4d967e4834b292eb4d126a96addc557c069f86070353df6b71e7a1af61098b11e5afc078c44b715342649a6b71f3494789081b8c0a4fa7bb110283c9ed176258904d07d3822e37e1baca29d7f2b288784033ec40f8b69cda58784e5c3fc78e910a1c8d11fbf90cfdb9e97e5f52ac9b4b0a19718711e167dfb6404dce138fd57614085923975f5f2fc17ab4dabb2967c1ab377dc81039fe01082b6671937de5cd56345a4863ae82b5039e705ea05269e306088cd98969fdf82a7e9aff6dc0e49754ab847b6af6c2c99dff143d106caebfc548aeb929523f2096250d6b846ba2d4ba5c784299952da4bed9b91406e92a348e8c322b53d3fab501966dab5a952e1a394254e670df286091275d1765f2b1ca1b14273a9f7407e38645e4e3044236045ed057f120881e815d25d83746a4d5d830fed92692a05b7e5c73fdc5601aed661b34ec9ac561a54183a98e3f75ae125fc43ebc6a5c1a8285e143a0cdeb6119f40383eb6fcf7f5c6c5e2bc181acb7a994c9f3b1f7c4daab9a67011f00c3495817d0b3158d4b83d58a4fee5279ac5690d1f3aa8fb6ca931be2d4b6232c7ed84d358b9c2f2055e42173ed965a864b670a417ad374a7d44e6d308f04b30f8bdc25e3ded770d6f139c0b79dced781e0c46058876864abcad751fda023aa15daaf670386b82101e2e7c22511fa5822b170c787cdee52ce64707e88b86d01ff7667dcb5dd4f4ccfde87dffb61cb65f1c1844745e4e4aa0bcbb66281e16a849b35e1d62cdc3324961caa1b86c788ba911ff2c7de3a1ba9e1cf08a4a051b95ea6facf25bdff72ff3d08a3b9b2af15d2997e770c9257751493e944ff06636b4274c9ff77d7bfe06325b9ebfa94c2a316843f9c4908679d30fad0d8688ccb516785d163437b82bfd6e424cd1d280eed7c4e639c57486c9ea750aad921e04478af7c12b52c71956e53bca048f05659149bcff8860bc33ad1f9f9e902fdb9d51c5851fcbdeebe4a185fd4b84badcfb62c9bd98de8b70dba4eeaf55541e3ab7c66922aef88f8925c85963c1bfba3122d652f2879907ac3d6780e62ea1337d8f5f5a95bd2ce85e987d94e111e342972a7e89e26f6d6233a0fdc0b4a0a37c1a9bd3ea790bd6f861445f1f176696b3223625b0570a645ae3d011002994dd6daca8db06e67e7f40e8708f4f8f31aff4100ca77c8e1dbb336f2169e795b65b5dcd617c5ffa651dccae9b3e1ff327e49059f9113160881db74663345288c3f86140b223f56ee5dcbce200144d85cb3cb7d48e50e4070208dc81d13c32bbf0cf2ce05752380327786d8635478909a594e86f8ccd8886c4f0f35dab543ff2981f97c1e08c54356115fdc985f085e0a733a7d368972a4b548add1b33867e8af28e1a4d4c48240829da23952ab89e97f2259a1817269aa22354e061063616825d4032fee5515fad861069c5c241550e361f3db63db20b0fb35f635098617d2554cd91c86b152a98382ff4716d2e7d41c39731050a64918212a0fd9d392160efb5f2c13d49904a0131807c1f148641849bd6f009280738febca1d4d84213b5e3cff4cd1956aff6aa634395567dacfaa02b03ce8f46bbf72beca442965ddf5d480e9586ef7a1ad9f23e38631fe258b6fb5f05590ef04167647e0c2a3c6a7c955e6b319e15eb7c5713222e869937063643864b10b6fee2dc14e0e58868780c70363639a9d7a48307eff1aa0aee218b37012c406601080179e2c1478c04ac6fe4d13e0bc4c188f288370708787b27cb7e7904eb364c7301c8a13288417ab287b3d97519360bf4b3da1194dd6f609a8fe03c5f978a778cc73df6f06ded9150ccf3f725f1ca563fa35f0513dfda7f383cf954f7e273e8537ab69882eaed78f6f9b08a39324ced4d4501922a91450f4f77fa109d38781a446663e4a65d59982e51cb0f8448b3c144235ab5a2b0faa30182d98734a425768c0c0a1acaa08a38eae4854a6d22a8e92f7249eb9df21e9156b71fd829cbb45ddc5e8669a9cddb4e06c53449d0c564e07c4efe10399334eeb9e79f2abccd55489677b53870bdead329812d7cd5fe655ead58af058ec5f201cd32f0a656096823626b297599cb10aa68fa844daddf2ddf96ecdf3bc39493f857433e3075916d83eba87dc2981626d43b9aa2d2153ae246c7039dd97545c57ba21a74067e97f98b5e5514e40ab861919cfc03b694e4ccde82d31f4b1e64dda9804d75cbd689fffb9d07f4b93f0b757245ac6b66c0ab78e0d8111198e36abb2702469f65bb46d6ca92b3cb0a5cd7dbe39528ac23f84325c64e7a823cfa1fce6edcaf2feb12c767a0df3295226dadba4cb55577d079ee54fc8776c01b32e29937900984885c51176ebaca7f1ac57a3353f157c8d70227a10054570c4e8660cb0d47361e857690b26a2cee57e9e7d36f5333ff2753f16d553ccbbf0e8ccfad7c9cbe305c9af1df6ed7eb497b7b303a39ec2eb769c136a54e099d419cbf5c08ab39341b4684b63c4f62ffd705300c4baa12b03ec5322485f1a106d62df8f3ceb66ed52aa1a64563c0d6349098f96497cfe2f6f7faa8658b6bfaf73905b738e64574c3d8285723c8b4622bd36f02a752dced7bd64d22bd0c2d52eb96abf76db0d08de679157b2a223ee43ab85d712f49389ed5fc45305468f348ac960aa7a906032c4f9fa0180e490dca3c66f7b29a791bd793c5d211e356c2c16dff29b0d8ec7b6019f4a60433cde13db2d48eb8945c6f7c5a103af523c1d5eefa2e2fa54dee0c283cd427640ed5b55d21e2aab7178975e021f72182881045e4c292b0266e15ea81239091f85a3ec399ae5d8cb5d71b0ee3c81eab871f9d0404001e3db6927d676bd251b9b4b0e7806038805d6b1990b2f0d235db8149c0f015e1439e6d98d0ef3b8ebdbafd7339476ab5a4125386fd3f44ca29a82059c5a1c455dc60f952769a823dfb08485f3b218a6b046cf4fe4a0b50665bb524c0f7f181bcca1c609e4d6930b9292c305f656abb7e53a32058aaead6a247135418b7beaffdfb3995173ac04150f007c4123aa0a48c95d8568b4498f528cde72683da4c48956a19f586751a432ffd87bf0deeb5d727dae3986b8ac4a5413b60047e29223dee30e700e32565b36d88d2f97010d85d2ac02acbc719bee45164dffe3a6311a688fb50f6ceac860fced2cec6822065006c18c84fb4246f1136e8cd29c211bec931900c1f3d05d75a3d6e497eb222eea57925a071061596132db9129ee3c037e7949b1b0cb866bdd95a56353b933800efa02c66ba832dc98b86f193cc570d25ddb0a3f518b28098f7c54a2d108b19dcb6bc56a5cbf05a42421063a5aa8bf076fa43a95a72d8298e6ce1622b230e833458cc3a0c2cffac42b472d4acb07565606fdd241424458245c057f54e49940a9e50921cf49a923ccf691e107b29ae97a05329f2f218b2d75e62de5b6f229a4d905d0fad03993275aeab7549d9692fa0bdb3ef81601720fd488e0f7b351fb95860bafd1dc12eb6b4c7cfd463a5a3e1e061a6a1468002f3daf162472d0450609e1e2d7734e1488002ede3067327fb96a11e987dbd1b821d8e9db0135181c23e0124ee3b48838f15404716424a95c840a119bdf5ab5d0391d31a5938ba90602ced12cf0f12583290090f4ec7b4bbe7b5a101b2a5d041d13563036e7ca6ee6350a43f2f3ebec879a8f1484b4585b4f56cd139b770e9a0fd0a9d7673fc159e338fe9348f023d171aa1a4fd7cb3e91870badcf0ee7882f64dffa7a905d6c3f8eabbd0c8e3417327623eef737fa352dceee9115570ff394b6038f41573d53a779c646b09a7aa59be159a4dfc39006f90e6380baa47cb9dc1d6b030c95c0950d32c58592e79a069ec97832f56c13564dfff83addf3782032e73cd934941c7f77ed5a48c6cea91a363190b32e55fe719179c4d6c18010bf5c4a23ee86a09afe937e7e09e12513f632a0f583972309264375e0119be7c30548d8a7ef6e0ca880fda623325589e9dc6e5bc5b68e6c9d6bd1a65d301649a3b4220aa5c69f45e177a15182d0e4033b9babc2ac099229d77c7c291dd42a409fba63dee5b2b6c83d345277d825914008bf87aa17c000b9d0249afba9283cc108144f57ba92aa5a5349898febdd665f18c1e60c3ab11b8ebdd328b4c5f3aff480c487417e40d828c643089632fa788947318f4c304f0e9a3c4a790beff8fff7ae4cbfe162e443b64a44bac41c559a77070f5023a66852201703f05c1dad0fcc5b07ffb10c30d465439960b70281489a6f48c5221ec004312f429842d9bbd6fdfd2943c12be69ae146ab6a1429ebdd301566f38fef8ae4c03bbc0c6f115bbc6eb919754eaa94a2441257fb8583b47be773e08a14caf75dc32b2fcbe9b6ba38e1cc074d76408392d108eff52fa1c5e1f81afd1eed1ccb73c05f26843b68c44f61c923dcd0a7b918488b0158e8221ff02797a29e76ca0eff257ba65807bd2efe214248edb06ed50b5611e702f4941cfb9b78c16787d1fb0d775b5535e59907c75c232021851dcbe083d9b5d3906ac0e94cc573d68458009e54ca2fedc807afa95c22db991c553662c0be3d3fe038ad3e076aa4df4a1e89db699c3ab75db7814bb8ccbc79619e4fa0a9e1caad22b2ccb590d8206cef89eb22a7c52af24cfe4a64716eb2e0c0ed5b2301e901dd02ceb91e22350893d559f22950bb44e30fb02206409db20b665f7815dd1f4092ab69f3f8b2bcf0a17ba1954474e5a035b7b281b9508af0c0e2127aed54c8df5e133ae0f1bd64df5179a0dbe64b0d382342cd51240915ee5d93649196a6e3e5ccc6170195fb1a07273f9d5fcf2c765f46a6400959429caea9e573881b2526fe8552c4851a457fb4525ea767f3b70dcc2d48f4a1ae394975c7493c57ba9c64091dd39faef4658f8b74070096fc8948e902acf146ffef145c04515b72df03838bb589b9c3215df715e98d0ed3face597c0402c502d3b6cf60d7403e845065002b4571260ffb2507ecac8f05db8ec293be54769c9ee5b268718a08532d8624d43e4f498297e556e89ef909e1f1bca706709d3e227a9d4b59600144477f300f9e6e7e0713a88c7bcadf47e6801be025a0bbcb5e504ffbdfe26e362a4a06d74ac92bfe8787ccb38f0a3fe434b035a45124aea0cc5a99d2b11da9085673c05b99af87cc99843052787b009a0cb6549e2a2ba64d6964ac6351acf996d24ab274f0ad04a9a72224da8a7bf172c7314883b868548faca72435438884828d78b6a7bf406cc607de33b48be016f28fc100d5ef922a455644390fe19c28c6309eed7a98d4fac88038bf7e88ab7ed0930f09ddd8ba7534bb021ca653407dafb235ffb9dd6ed69622755fd0490e699f85aa06a7370a71a3bb3bc30916c4fcfd89d2643454d7d09c34f37d933509e6708ff9c3d93367efc6b0826361528fbcc198c45eeabcf1811f2857325e4dfa221dba0947b6406d50646960d8a46af45903bcd88106609dae3d4d0d890300390acf1e7f8bfae1c5efe035ba49a2755aa1c70ba43b1e655db8bdd49338fb6fbe49f33090a3a64f94fea6cd8d38d0a5ab54fdcfb209120180382b4b737cd0b3bc96a83ba252048505acfb1ada4ed15e18b32f41216e68e87dc68c542b9bf014fd55ae2c707fd23d1af12832aadd24e6147c8a5a28cf03a0b39005cc058ba2a9f75bbb933631d7ada85b85a2941e87d9228ccb4b3227b93d4e5e675dbc1b6ad4634bcecdaa7ac844d14a4ec099c61917d7c90dfc5ed4378aee450d5315ac28f81e58b8be5b64c9c5538e6e2600d8fb8ef3321a2fe2b1577efb4209ce1de7e7f29f5284e19747afd2846e63d7f40259b52b3225ba98a6e95bd77dc7d5d79a21d57a887cab3ad403ad7770a6641041b838b6eb0b203dfb1417150ba9b7b9b310d1ea7504f857153aa17a00211805c0261f13e53825f5099806ebe0fc5ef473451ee27d27b62e99db83513d031d13148fc3ec5b84c51fd2a426b62574c9cfe09c47aa2ef4ddcddc4f49928da13593bb13a4f5c6c13b835d1ee27de7f62689ea87513d135b1314cdcfd09b89d09905533d6ca2db14ee635a4c6138fb1c4dcab285713e93fb1f4276ee509e843026451aed704598a871ce60816b2dc8a3cd480818d08a1e5235959c412bb0a15f3aea8600778d893ce8bbb26afac1504bf218d2c5082d9fe6f6c0d36b2e4a788b6b2762a037c6c7b0bac143cad8a3501109297b67ddc74bf1795d326c8b225244875823925426f8e48cd5e6d8a52cbdc6be871b4492a48b35a21a9e8191113338394ea6c9c8a72571be917419d04294ccb2a49fc1c1cb1ce802fc564cc9248d38b186eea171715345fdea9e7acc242be042a46bfc7b9c9090b79132c0807c8e8c2d396a7fc757f70e86bb54058a918f1e6c4aacb356f8b27caa9c02fca4efcae8ce29cef0dc21a07b1f70df682223294df995fd763c4b89734db501294a0255dd7a41f6a85bd85f880bd14c5729c6ba6616784a49174ebe1ec13a934fc7325a25977dd93e2a2940ee9df7ac29de3376ce787a338d98c04be61b44bd1a35cead8126a97a20c030881ccf243c3044c1c39c36982b274e13199bc446aefe3d17645e8514816bc7d55e03b9f28cf8f2f029f4e3ccc544b5b4acdb2224fa381cc63174b70115f33be471dc891b0fa8f52309f1ee51924dcda7b5d99d5dc362b785af5ee6dba6d0be3d01c59566406c6a404e39481a36bace38b5f2faf12227fce1e42d2ceb7f45d45e7af003b9f382ce7cd6dfec375c9fbc81fdfff240318b13b1684f0b483c9feb8ba90ca79683435ac1aaac9709fc4b13a49d45d708aea61453ae8c55d09062adaed170883cf84431606f619916b34a7bc28a1e7888b2204c1c55272fa87e16a73560b39bc597625da842728b38fd4968867f82b714607d7a8ed4fb5a960068a6d67d022ff68bf9be1e5139cf84339b4615d1450e971062ba9bdb517e601f84f008980c33e8a57b980122b31cfcebbcf0803078a04d0f096e35db00260d1c342c17704f7e5e8749f1f35bb1cf01a21e2abee5fb66738bf6f41d25bc51a048df4ca21da52f4d5d471cdea5691119f3463b9e5778903b4a3be7aee39e92bf33d46b953a84b0082e9491267c9016ab3776345a21c6412ddb1ad69d127301d5f654171665054c831618db1fa79288f2b61e668e7179461eacfd01862d8e8fcdd0f6838496caa43c1aa106991bd26518a251d048b77fa1ef1c052b699a12f3db5b3f3dce800aacd2da210a477f8118b20d79d18591ae38364979b595be98330fe3a4bc61e8f80398b8092170e327499aed608aab332f22278024ed4bab17211d9499cdb6c961e3edb7d3c956dd8c0bdcf8b2c735547abf58d91c2e125cec5a4439d8e3ec0ef3cbfb22878b6761d636ec952a15b06fb16486c45e1e202113560116615cbccfe7f92452ce52f47f19e21c628440ce38d4f8de63c771b38fce5754964406344c40837fcda21f5f171f2a34d5604f56c228c2500392ad62c977383d4d23e59e1661c586370dacaecbb7703fffece401e01fde91c4964faa45e73c930539e66d2edfbf3082318b4749afb47351614dc4bd28718bc47819238f57f98ab6c18f39ea18f3b45a27d1fa099b9513248421330b27d67033dc12a6e49ee7409b262eadd17f3f9345e131451fe96496d88febeced56eaef16806c6352706da52a470c01c954d6094b62ffb6633721711d3bc33110cba15252663cd81beeabd310a98734b11d5c3189786621277392f2c8a65fa2f714c2a28c476104583cd812fea599bc3b50b7b32c8c381684ba395c2f66bffd9f576eb60c986dd49589dfa1718094cf804065786c4f0f47dded110d7151ffd178a72c3ff0f8c8e4324b9067b649eb81df35caa20995642391330c5e99f7407f17d250d9e76bcdc0eb039a1fe8ea471ac21dc9400bcaf2bbecfdbfc20aa133933b1eecca0e8419f977dc718d508292e8ae4c655c4cc7513703c026334255a199c05935df8d9657949494af68d9488e59b5bf05fcc0a3114014941e053fdf83e5ae988fbe534cd373f6be27e1d8193c8c6b40bb178d01379fcb5baea355ea354f85e3d6292f5909ec7eaac388e73c2eb773a3c8b8e6df02055f51a7d5a2a2ce1fcc94530051283121f4b0dab0aeff1a8596aed1a2e8733e82731d75e0de5d5613237e1885ad7f28d4307a082b6bbeced3df0c2021bba579c695d65d15cc22dd734e0c38344e91c933038d4e3fd001490ece920e6e50a18bc0815848dd2fe847d7f308a3a8825a5749c2f98b5d83882fa5c814d7ae8c54f92df34fe61a49a1b866dec4b1de165ef1b9bab92ae1c6e82aa6fafa1b9667b9634f8da0931ea9a8f957ad0f4c536390e9f8f0378b8f270613626697336ae5f52fdcf75841095a0cd9155f92e43ec617e82bf517532a32f49617dcc1c6ad8346cb3fc44b76c0d7c8bb3193c5813c9d024295f14b0b86827b24716d5a84c643683ac9da9dcbbd01285261b785d2e1be07d335e0441992ed68065f2fcf7abd5a8c432844c730321303ee17c3948d6b4bd5b06126f23f85802a879b8c92c421c668ba64d6a5a856145ba8cf5a649663940c238f1ccce74e07adc03d1208621842e5a5c94c959038d5aa685c81b86fef8e1fa511b0ee3cbe1e84b06117014829d1d7a146eb4c596e8a817844924e7c03476610903c031e4c1dbba438684285b11c39539012f59ef4b14fb7040fd80313fe4d1ec8495f02da16af9ecda72e25f4ecc160b30b74cdf6699070e66e7f9994827c3d411ff226b6ebc24947d6b4c2b186e609081bc54bebae0d924ea708dbefd8716c6450fe7b9a31ea95c7d0bfe0f02480b882c350432a4d394c37dfdd22b30d3b83e42ab043b25dd6f424dd5220b1ce036c0e61ab6b3b7b995bed64494d0f8af5a32f93f6d564718f47bd20824b2a0c9cb184b8eacc9e33b4bf9859d49e43933731e5ba1cb26ac413a86dd8c58e9abe3b6105069b79e41fb37c7907d097df27fe3ff10efe1db718634e219e3d14f5e3366b991fcc89cf800e2c8bfb08bb05c9dd2a83848b1e27158a6a18e29e207fad8a5d29be17ccdfb08ddcc45f4096c9d9cd905efa129320d752a82c9b138c73e1c0fa6741bb6a050101f7217924be55a3b0fcbdabe37aa2189b4865b2a312d36cc23ba73cd514391411a8b05c7e2ac7494c3d7e1771543a79f30565a9c9a5f206066ccd012e5c7925c3406394996b7e7c5060cb96aaf08d2d71561840de280eeed2b3adc11cf0001f86c4f15580a5f49a59a3609032896c673a614e70bb52c30da45c1d9ac4b5bf1a98ea21d8964a7538e9e0b08e7c58e330e71dfc192686be8aec2872cb585512e45e1cd8b5eadbecd73a8988bed3c750084e87af29243da2b767752c330e0d399e6a0a9a42e263518904ded3fcbfb9ac40cc1440ff7662aac62e50be68b9f475aea5d60b3ac4c1839d3fb4299a00aff9cddf12f46bcd87840529f3784ad082e832a3d75299bb2d9b80a7906e66e8e36d0335f7b6ec2625aa50c652bfdfa6d4e22bf91b1dbec4133cede58cd31e938450a28f5511c23c23fe40a8f2a0f069b6b18355c4c4d1095bf22fa21a21d862e624f28ef8a86b5c733a0d26f8812386754d889cb9ff57eb887e5dc2cc20da0f37d09c62be6c588df130a8b4f0544648ac6ca94698556c8c878671d95f5ad931b89992c39ed565ead42addd298259831ad19a453792cf296176d9defb20c9ec3a20134ada3a5fe2b8dc396e1b7a2756b7c7802ee83428a6edcc95bcfac2ee2b21c65b33cb54a9f8507e83ae2ec65f29c0d58b6d30451d25a2e5b65fbd1afca1479125eb0457edc9d224cdea957012cb7a0be7b3ae736a10d3973733f17238385cb41905f18defbb64994f4b0ce83a401e1f9ad1076f127f21b9ec405418f8ad20a8dd0e8846c30efc18abecb0413aae728be178a29ee8d8d083c39eb1465a5a877f4e431f114b8b4c522d251f5f02e80028f30cce854080ada2abddd811db5d3e356dab8a03ece5c0425ca94dcdc5e97d63ab4eb87d8fbd9d46ccc474df2bbcb61a9156f230d0c37c5836adf67987279a178e4c084aaf6089eab084bbc13e8187545966447a67f0a59c006acb061944152befe3c2a78708c2f6c471581111e29a33762a9626bad6ae557ec977b8a22fce73d02d7bdd744177368200074bf6e76a7724cc1930838e9d772f77978281ff2eb0998e73bc0ee37a6c5c32734316232ba3fdb18a4497dc4f8ed14485d3aa96a83ce5111d1876ca2b73b49d940ff46fa5e68287ab45677fbd0deea5ac9da310c7823530a143b7cb01511e833d9d04165869581d2a43965f41bc1b7cb7630ed84909607ebc2428be101816ca55b55b85b31820ba17b054fc284e8a2d2f2355111dc9ff764a75825c51a06ec4dcecf6b226eb1c9954cb650629f61c0787ea8201f6feedd60ad579f9972a79b3d058151680839fe1bcc22c863e89215a3a3865a1b006d29d9cec88ff2f6bee90826ab221fec8b1e45a59cd1841788c51812eea8af5b9a5a4b75ba8ec5536e0067e02deeb673393ff055d0cf69ad4f90eb18f0e47ed09453f5819e5523ce6219fd0a36869c637cb176d2adb3e89fd5046cf0db3652e0bf6b4cbc6fdec0f20f0ff8389db4d5a1ed309daa80d87255b45eea6704e0385d834063483962a7fb9d40e8dc5466d441ca2213cbc95696ac31b0a7c43e99dc79f3a2ef2330edf34e181542b85720d8dd004283527d5c41156984e73998a3e076c9f1383cbf1fbafdf9c290b49d1d23e9515d0feaf73882a2b098de1ba41c57bdf821377774cbf9b546f819b2ff5c3a7f2dcb670cf7d70b8acfedec14a7c584f435b0ece65813ff526e5a24dda1f197fa4db5fed342ddc6c27567d1a1cc85dc87994076e569ce1460103d404450d060f452317013de6005a8ee1403c50f024c301f3ffffff5af5ffffffff6e0dbf6dad9bf5b7dd8a2636a52413c665af85cc18b4a6494a32252965d2f225c19d1a050000000000d9cb8c3c0104d803ea03b6c92fd3d0505b913c61d79c533ac60fa3e39538e14a21c3cc555776e366b0488d137ca0049226e0510913eea86409e7e891288119e56dfea94248d3199224244ca5142a48b7f8a12241022a69af51365ffd1e9780e408a9106a83a6ed7edf981b1223a055ea7793ec395d4d52843ae69c7afc2c2298e1d29a77a5cfffcf488f1d22922114e32baaf9a5b58544085a58fc58d22fab941007244140edb3bcae985cc7b74600b22001c2a9bff142c5be69aafc20992e7245eb7d2711f2c139af860e32a65116bfdf10b9b1ce63870818377af01761d8e8016244ceac724ccdddad40c2833b7b8eb6155eef2d33229243b283aaa49cc6d0e965651b43a28366742e8ef01eed41264202490eeca8040765d5198b495c96068f16921b282e429afce7f5b7a09114864a6c604ab14c98f6f08d9a5483e2d5b4777fd05fe193d0a08fd12b961ced926d181e90cce071fdcde223c68344069bfe24234e4ca46b6b01490cde92b2959af341e55ed17abcd5edfd14d4c85a2c60020ba0d1c5872bce9f229fcc43ee82f7d18a5bb37a6e28351a333f82639d43423cf0c18a47d62ed3b6fcb40547b4a0a1c3b938c2c72aeed37f6f6f29d5773538406387172342870f55a0362b5a1ee27ad71412a2c5472abeed94eeed93f03eed484808163c746041e38c0f54689e2cf4924c399476ec80c0c7293459e2fb99fdc3a6e8c31497ccf95eba4ebc6ab8f82805c23a9fa9a827a3ec1da9d13abac0c00729d8ef0d7923c4d56e35f818454a95e7787ae6a9d4178517a6d3baeda2875aa1703ea7e86e41a539f5f70314e9b1d87cb9ea5ddffff8849afad36f487324246487c8161f9ea8a3278b8f4e1cc49b95acd8e0e283137c0e42887fc87051c98f4d20bedf35c4dfc6325313654f4d6a5cbf4ca43234e8ac1c3e99ea60e2da97fbddf678f1181e1252638c0a74202424078e14828f4b687277632a8b9642c6125b69b98cbacb2996fda8c4bd5df7619a44cbfc2321212ef8a0443a6df688138d7b2a9f4465af1db7e6f7758392308751f9f2199f36cb9148af465f1d53cb5961482cba3779a918c4e6dd1e9125ef0dd9c9e208f91de1cf9c6ef3a021e5b5469c722fd39f1cfd6c950eef0f46e0964c939f68bc5df26311a8183c59aaf29c4fa628623759b7b193772766221821f4759c69cc69424428b3311bb3581c2bcb214cabe7b9b3780895c42b7c18a21c2c08fdea58d22ba51057c920f46acc84869310f5e9f552d7cc223a1f041e34c4de26b51f5505e1ff6e674fc994a9d7035150a7e346261d3cd3f50188ee3ef3dc2ff887c732934e9669a4ddc80fc85dd9ccacdb29aa7d58cb74b48f8d49dba97c5877ec92bafaeca1b25025f542d3ef2c7a389d5e53b9d4ca8332da41b3ea744cdde1e1a4821077d9b22ed1ce48cd72e709d70af2e91dbca4757325d72d314f8e26cbec658ef511092bd21db395efcab535ba8a65adff54cec6ce13a9625591de6233f2659a1c485261182def7fb33f57413d24a870fd35d43ac6d48fab059253684964a6c892a84a8125519142f7cf3467aa1764344946710af2b772da51f96e9488225d427cd2b69945e96405982009c57bbb7ec1fe4e75a780e268499eccdef1bb54f78984fe25950d71fe999678c2a85a3164b685fa5127544dd3db35eb1417e644e9bdbad5fd43cdd24d14439c768ccf41452c174834c17f929daca46dfa94cb849d92aed9b830269cd3d65e3163fe4c74896f6db4fb5513915822997334f5f7994afca33ca5dc3b1a53ef269050c2f9bcaab5935f6b9749b429b24d3fea2629f64a2461eaddf7cef172b75991282ce68cfacc9e363a9040d667513d11fb1cbde4117b5af1dccb6529c449e2886b2de5cf5be51d0d37028d9e4f76af84ac5e19f12865797173089552bb887d469325cf5fb6f761814411251bd38df14cc913912411ae9a7b560abf69d508438208649031888ab193b40e490ed17d5f90cf4e2989214a6396298b9ae76b37121292024921ccf4f36a1d0fa52b891066fdb48c2ddb49c63688ea845ee7e8693e620a22b56f1e6a673cf45d81b064ced95fdf02885472f9ccfb794f298de40fb5458d41644d3190f8c1fc49c6fab75f02491fcc381554569eb64d7a49f8f0c8d19636293b254b2aa243b20776535ce50fa2b474120b1c7ea3023446128f9d8008247a50d3c9fefba4ea634892875f2c7eaa65a9f2f8bf408287decadc828c4772c662dadb56d1b48ede4090dc218d317c949a6bb456edb06c075196543ca6664280457341c30c491d3e131fe4d2c9facd183aa0c1e5aa84f69a3ca5640ea8168bbd0c2653634a2207cc43feb956300ea6d5faf4494dfc55140e97e7d89c672db506ed0dbb8fda5f2571cb3addc086e6a063e3cd553c6d2868f554973baf5a336ca82dfd27ad9e25ae37c91aca9a651fcb2a5ce592a80191b5cf7ccd18923498528fcafee315426b341c3faf99274a437fb84372863f75765cd706061233f4d9e5c492d0246528f57ba9f1cf4ac8a007f9f4586e1e94501ac341fe667a8ee9426a522286e4d3627c4a6a97cf14066fdf53f435db0c0c9ffe76ee5ecb4dd57dc1ec49b56a6b4f0615f7c272eea12937051dde77a16859848666f4ccb1b9d078ac935aa3dee2be5b4006f39c9fc3e5d85d9921d182622b1bdb15b6e422c9021bcb4afa654dead7536548b0c047392d2a357fbe792557f0cd845cbab015bc3e197eaedec164525285d4994c93a1fe7a557581840a88582c0b94994e19cbad3c463385b35ccc75aebea9faf222478ff62d74209102679553492d0f523ca686240a5c2c0bf6f5f13a2c09141805581aa976314144755b294bec6ec9ccddf0627288773fb8fbb83e323144b946a809536b3a746652883ece4acc2da8586126441b6d3c657d5ecb9c9f0c62590d27be4c347cb688c1230c2eca9808c2a4353486cc9b573b2781d84d8f76e74c5a4a3513401834d347a734f5d7493976d0d062f287fe4fc5e2aa6bbe7efd50bcadad338dd1f55e1fb6a435cd67f0d261a3133e5437321b7fdb640f7cc765b98d17bd7b4df4806a4f4f614ee63edd51c1240f45d19643a63ead371e19133c18ca53b4a0ea62feb8a5c91969105eba4ee3bf537387748c79ce7c276dda01f99f92ae647e51842582491d0ebf999449fd78bd29ae43644207fbd544667fbefb9c339903e2a2c6aecaa636a3692287644cb2e265bbe2f069b61c3fc71461752f1c5231fb85ba51da62f206ff93c811d54144ca3d7080e00b1b13080941133720c494b6158b6a57511d3e9274ac7b61c68a408c323e1012f280491b3a65aef7595e6e7399b021a5ec4608d1eb50f935fc265bd3c674d5a0584a325ae5ade48b2669f83ba899a5d46723731b98a0c14b9d199438a12254ed000d1e366ee4f082060a266728e5755df8142ee2723398bdf93d68b9d327721998bba062cc4efca9870c6b6ab2acdc7f5ad31e03de5a318647510c66ac7f0e6329554e3261c8f2ef2ae66d68901d180c6affc1c35cd6780a0a265f287c7bfef12b5997a35e50eb42dab109174ab236bac688c6f86b0bb89f5ead69a8a5785a48473fa12aa9da0c31b3a0f88c8d7df6bd09e1040be5f4a1746eabfcb9c257c054752e71d1b5829a725c724dc974b453855a6c93343d3b6a979e5061af4fb24353574e6e4fe16829ffdd5b16d3734be14e42ef6509dd49c76c1410d27afbba3db8c50e0ad68ea7cffc5bbe95e1617060f2842d599cc9585c8da277c2263694c7fcbf0d93263c9fab4c5f663615222618bfcede766cf6dc25689a2ed58df4d1a534232121ef3a44788c3151c2bf3178968fab6efa4b429ac1b2375aee9ca38c0437d6dca652a1ad64cae408ccfa45379dbf89114c7b37d1ddd11b2dc2a2b1b594aacbce9b89e0c5f1bfa0628e657d4f8650d29d73f5b82995d57b2284c2f544473da929773a08f9eaf55bfb95e77681907dfeecb814622ac93f4883c64c29aa65e283d62c482ff94e7a900aed59435ff3ecd63cb092f4263bc0355b3689b33022ed890ef08fab7e1dc7724c7e0926396035ab7ef5ecc9b0e1090e36cdf41dfbeea4c46e82c90df82445e6539c6a4ed2890d107e79f4071da2efac490d506ebabb363223150809e96242834c34c7bbf4b92c99d2c064065b695cd2518dc1af890c58fb8aaf217cf6779fc4e0fe8dd70a233d45cfbfa2d0d164de126f24248486c415e924bbcec7352321213b44c058d7c147d28a6ea3c5139d0dd072809603ac544900031260c60d1e235fd808c3019505ba2c4c0104088019ec00090078ece8e1810104c0bfd81e5f84b1370e20801d3a1000020018910380a0c1d8e0a16364c70d111104809c21078e64061ebea30c4e86183870380e038090c18c1c0987e32800c8188c0d1e374676ac188c0d1e64d8e830181b3c5a0c1c3d4444100002064c4ce3cfa78be8108e64b11e2121385c870819365a6447183678e8d000c817cae961745fa7bc703e257457ce21de291b7130f6031a00e9822122cb02840b99dab0f4d85a9f947e04640bd76887c75cce717ad542712a546add6016b4d678b1944794aa110b7eab87ad38a7e45ef40aa6cb9c08f1e9649b02102bf0f39a45c45f76b86a2424e40b1d8ea341aab067e96b0f9700840aea5727df0cadbe910186c8afdf10a95123041908011619c082478f0dbc7bc05b0c0e08600b205330291cefadd975b451782f7e9c598d6f397ba080554a513e35cf88d38f60514c0f0660d100062c20813ca19041968531eef5eb26e1080a409c60f97bdc7071345eae9126a0ca378912997261f4204c70c366e6a45205ad276406c812be0f3a87ae4fb19b62204ad8b64ffb6c8c7233224812144d53ff23b251942048408dcad2b0499e8936418e604e9ace94ce5eea2b48078811f80ca5fccf432b0029c27da1dc42295399f1418890ce5976b37df0022043f832d54478ae9c55fb0c8008015d57736963e305481056f5b89af47720e8371b424b755d4ef30f102d7a499a4aba19a33ed07be672501f7b50de243627b9330f12aff4e15565846abe8336ad2a66ce900efed3d0dca1d2a91d25901cecaa374209f97ed14f1c9c925e9edd57b9ef6f700c21f4fe3a36387fc86f4d4aac411b222d9606d9212ca441294253d734c951dade026406261933c8aa8cc900912164faf4141919031203b6940abab4df685339af3877ba8aa1657145e15395bdc5542b4a3ab5b5725c543061051a2c7389937f29fe5b85c13ae690b927aac83669a84d253a28218f60928a645619bdf29a296f898b092a8e7a5fdaf4fb7696fc145a129a9bd49b9fcab129ca57ea323bf9a7b094023f9d97f2e89c435e458afcbf772e08cdff3e47a1e75e6976d29de7c58928d21b3dabf4b062298722d94189bdd2f6e976501c4be5d6e9d3153eccaa4f98f3e7946b0e16432c38269ea892e526cff1469f92a91c934e1432ea9a74e99863f59c38d6b646e9321d7f429bf884304b1edfa3ed569a28e75ce78ca922c624137e509bf36dc4c7662130c1841533a9bc1cf56a77b3c0e412dfbf7b89f68d537562094df4925af79e9183b13c42422230a944b27df6328667cce0a184a163771efbb78bc924fa8a9fe3e39d32b12490f13b850c7315e735658841011d3f89c4ab498ce7312f0b5142a252f76542c996b1e8993ca2309f9b3f541c61b08f0db2698d4c1a6192775a9a30a23421c459886bb8145dc4e12f938d5ad2f63153041feadde40895637d2e11297d62a9b9058445a893c8288ca32886822008214010c46f3a7311483058481a8c0624c2b890b4ca0f13808088e3409138108c44616118844114c3201002210cc220104d198390618c727633f3e95239b3d807b4a614e881d4dcb93e1874c15280c10d48ba69c2bd4075052e59ef0a74369576e0dfa6a935e049e2b8c9c2fa2446b67cacb8275a3994e6b7b16d83682c474bbec82b54c0c7a64f90f23f2d94876f2c811b98e93773cb79f1590e93110f121f3554f70fd2c8a2e681f98caed9db462af52419bf216c6e20ab25f6a766533504678d292f1af5f39b69ae04e00f841814504e8b7f710966c5c29392d8ce5b2fd01a4949702562172d99d471eef6c9e51540bc918e639b7381e482a7d447c23594001940fe388c17ec43e19284c6e4fb6c890f89840937de26aee98789c798004ea026042e43cb229a0465a54971e75fe1c1099dcbe67480c24334b0e02f09a63291e6a7a73aa167b3f747d997dec4ac60a14258d5a30561298abc7c7ca2e4d0014d5d3488d4ac76ec0cc9e4471948bb492ab39ddecfdfa52169d70d24c08c5770191f2da124906f8723fc08dac0414059e3af515bc900059e6442f66897f77469758479a90533213789a164324e12330e3c8e3a5eeabe023218c06554a7f3b984e87e7d8bc52ab054a507589f1024ebb48d6484c411a515231f0400d9bf234b4e324191c14bc1905447321d18f615ed490275de9380ebfbb24765bc55696e9552408c4acbe6391219e19f7f49cd7bf1dd3248b1404ed943d1ca1bc1a6173a2ab3273a36086320f79f55b408b75ac8e18e8baa10d67dae0da6c38018985ec74a2d67bc6a2c92f4a32fca3ecc138fb1b0570b5f0635d6cb2895761def4320d04572c86537fc616289d859f7e20eaf491e804ec6aea85699ea2b2868be09848b4a62283c148564dcb7faafc8e6cc1be219ab4154fee04ff164b82147f8e57d53813ec6fa459e3ce0ad9c7e907216c9bede1060109557d3050b14363ab659080121bd8292ef01bcfe5c4aeecad02eb6a58296ed599dd3828524e0491448e239ce73859bed8b881ca6dfbdbc8142172a1e6986314f39c8f785160fd971d2dffb684a9390e0ed429b8e3a64356e55ba23ff3070b6335bb5b1436cd1748c133b16d1b934f75362a52cd27d41ec20541f1595b1a8bf8e891c704db8c9e16584142a29fda0aee97c20b22be63a3fc7ca2e7ca658249ff729407bc5331e939d33fd36f4522737c9391e8c9d9ad3a4c41a4a1c621751c9ebb39685c99fa6b4dcb860d361f717862a4cd7f5a436f6f5ffe1065a1718ef06046bad3165759cb2977c7b36b324f0abeabbd42f923390899db6627784dd43cf299f26da7262c3e4adbfd9e0e2dec122674eae192a526dda704f32651d80c7991a204d467501030c80064020eed4292e71844e1301a3294794a1b17e942613dc8c529157e3acb7ee82fcd0b0d9e4268fba8fdc083fad35e496893240f667482fe0a2f117ad44e9d99966f293cd2cad181b469e339548a820acb8a0612919b017f8c0e9ea302890e19f6fa9f94b4bd5b8e3a8290b1f82861bfa38900d2e8832cb056f43c4f7c7ed7b01ebd6411355ebebe2d0c76f81b46cb1026205ea9d1086f50bd0313a305a2b950a8738976aa902bf948476299fe8650991a30f716b6f8894de4a94047c5a63a4450f2fb7673168eaca8ec3bfdfed2c64c11496974f26d1dc7a99da6e0f662ed8f596df0924cd41b170f12c3fd80db256fa98e04216795eeca4762601d4bc8d96e4945265b94108c8fe8005c91f7e90845a9e2362c4b008d63aa65e097b9017d7cbd96f80dc0eac9247491bc8ecab7dc7003070eb52c0155f823bae1a6ce7bffa2d6b8e35ac28ee445a51fa81f5cbdbe308200a3b5543e171c7c491d84f857474c88bf28b19c00853656294fdf3f79d441187b721e5793c19e62abb219ce5f42518ddb099abf32e659993aa03a3e452f8b33dfc71c7e5df7fcb7986d3049261db981b5f5d31481de6488792410755bbf0c1ab41cb3661a7878b229bf0848a59b5fdd86f74e387877eeb530e0b6d7db5bf04cc6254a4482c67770226ee594d2bc8d1442a1f16387bdeced8e6ebe503303fb0de3639d0d707251f51cce827c0f30a9d5224037e602e03f6f690b2a38efd9027b017322a12f058c9023085497b64ff71665108aa4d44c8159a9f2fce72164d2ded2fda4fbf8cc3d63f8468c20bea0d932d5f86c6df29de575af76105723eb264b061a7118a2d1cd50a8732b73ff9dd639d0d72fb8dfa15d1d050ff0dabd3e69d796c97ef325d7ecf9ea6f387b41ea12230b7af6ef8a4d9b70166d2d2e38cec3280fc1e72ffe5519e2013e39565f755f2a2e9c39b37c464902620f8ad5710f68021a84d90ccfe225684507709a28a53f22c195c5996c4ce10ef432e80aacaed6ddb1326e13cfb75f2630813801e130658421d0499d1a8e4e27e209459dd67dd81adf6ab460c3da1859107ec2d9ecad5250192ce1e87c9fcfae26b5cb91267a3d877211e755622da1658c4a801e1c1238c6739a17d66bf9c64a536ee518567bbd62c2eba37c7e83e52fe6d8f356dc244711a754702ffd18634c4f3057e7d17fc3d815fa5beae5c173ea083b01568eaf1f4ced963975f1d35b69e5608189a28d44e386503abda1684b4a71d7ec30739b2637ceaaedd4cf4b3d778f5d3ce85cf517e4338cd50d9d43a1bfe139abc3345e9050b20d71044d76083a6ea1f1a237e9d5488fa2848aa9351367c6628f2c2fef8e1c4a5be220c6e2a7f13c186a4255d08a707068055211726611a35211be3ed96c6bded4b074f33ba961a52252705e07ede8d60d1ea2fdec6f902d60eb7a256e819e587a43bef8c23eca3dfa8158a19bc1158f42f1ad4efbd33b296bf535adfba2dfa4a6aeeb114d47b75eca42052baca7b9a58a3367f10fe099f04fe1bbe3d06ef0cfaac98f52f54508ec2a9b4e5cd504a795d8f585e53de5caa0198a97642b7ae38b1eb69d03bf3c8a5106c5c56dbe710e170b2f649f3f58ceb45206a1b67cfae6738926145355193353962cfb4dad15af002418d06a1bf8d2c5524398e588af641d609c1543d8c4c8256fcc196efb30556678ad5fe407234ee11038e49ab24faa1e3172546c159eb7f2d4e642735a470a004589c44516a41eecae55f80b1aa872b5b5601d687998211741cd161517f28f12ca6e199a0e720dad0e6ac0b92fae6e5c35e35817c86c983562bf24c47629872a95c9665da613c4b2b762753beda118b84450e5161afe34b563d03a9de173216ca94f8ccd8024fb56a7681e5a289c2f83aa83eef7d8171aba851f59df96894abfc844eea3c490ac04a6b27f1cd7f7a1e71b9dcccb0c7ac6b2ff78cf667a90c3940fd48731e6cb44ba18b2a1a8c25505679680effd00f800f815b32aa4eae3a3d76e8463130f9167639484a24bc6df9e05854892828497f4d93ff175398b30cb058ed23db3bda2faea210b40861144ee862b2465ee47611888120560ea5363a560b77085efa7334d662c207fc157666bbf26a411b695cdea5a1bd7c5e3d54e249ac6592c91b16734208673bc355a64f5fa550e8cab996f54b22d3efd1a9c9d9796dbe71eb0da8f8757da36eca8a21452f3496482dd291d6989837d8fe0c71031cc7895d284648a3a6b99a964e3c6d8c78f83a91e70bb4b4752eb2d78121cecf89229324803408a217f39f99a8a0ac208e98cb775743878afcdc8125217cb2a84a7a38757d1fa405f26cd007bba6a5a9119397f6912e33a361316ffa2148b8125d59784c57890c0aa9f854085d908c807d34ad92819814e8367a8ff03e1d40a12fbc91adb7c27e76e070910188c92966c466510a1e2952a2c90c67922dbbe3fd3820eb7b46970c3f3a5a23b24a934b98a2958bc3df07a690e7a205599bc91c55b491e173d938e1b919975dfb17111f61525b640925543e9122d80a165260ce5c63338800106df9b0cb29422b1f0de5cfbf7a895e2a930e71b4f4d990c3b8bfde4a5519f5774eb03914887733100c7168f3fbdd7dde455db9a9a434c81a638f5db6d2376b05d66188bb2fff590d14b4ca8aa5facf6c2b5b274020e005865a36895446a8a987ff5315b4046829c5224d8033a40d2c4145a6a04342a80eb22654ed2ab83d9ce10cde48f9229252c5b7d2098ca6e5467cd97232f2825e494ac9e55e983df8c7c8e5dc3cf861a40959e4c19e5ad98f949453aa778859e43439328e914422f0a5b4fe234b03c5612d9080b745ad2333a2c4c874e6f68b512e7d1d7336e94707e810650da4a0a60d8d515d99d956dedda9a521a49141f332f21bbf03e9fe52fc0021ff79ed3fec5fd93fccbf6880fd5c9cfdc06c86ca4b0d47d7fc919f809ae03537ca962ee628c6015905d72db79027ebd116e367e0b9567c99e362edcd45cb354f1d76e361d69ff0f6008370a08b6c995c8180a76b187ba4698d99c1ac8319c2845960389884db891559f0d0cdb89dab77bcaafb9320753e98e0316b36f50cd6218e0f859f8a58af3ecdf885301b6a2409", - "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3a65787472696e7369635f696e646578": "0x00000000" + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a" }, "childrenDefault": {} } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 2f7bc9ffbc28..d4f3ce524087 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -104,9 +104,9 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); /// Runtime version (Rococo). pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("rococo"), - impl_name: create_runtime_str!("parity-rococo-v1.8"), + impl_name: create_runtime_str!("parity-rococo-v2.0"), authoring_version: 0, - spec_version: 9106, + spec_version: 9130, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From 5a6b4ef714fb971b19c130731f90c754a970b841 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Nov 2021 22:34:14 +0100 Subject: [PATCH 41/71] Bump dlmalloc from 0.2.1 to 0.2.2 (#4205) Bumps [dlmalloc](https://github.com/alexcrichton/dlmalloc-rs) from 0.2.1 to 0.2.2. - [Release notes](https://github.com/alexcrichton/dlmalloc-rs/releases) - [Commits](https://github.com/alexcrichton/dlmalloc-rs/compare/0.2.1...0.2.2) --- updated-dependencies: - dependency-name: dlmalloc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- parachain/test-parachains/adder/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5be48f7b6271..98a553030a9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1565,9 +1565,9 @@ dependencies = [ [[package]] name = "dlmalloc" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332570860c2edf2d57914987bf9e24835425f75825086b6ba7d1e6a3e4f1f254" +checksum = "96d075454d918d7358fcd2290dcb4c3ae7bc735388dd1b31ccee1426c1106d8a" dependencies = [ "libc", ] diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml index 52e9da3a5536..93e0057ba5d3 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -11,7 +11,7 @@ parachain = { package = "polkadot-parachain", path = "../../", default-features parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } tiny-keccak = { version = "2.0.2", features = ["keccak"] } -dlmalloc = { version = "0.2.1", features = [ "global" ] } +dlmalloc = { version = "0.2.2", features = [ "global" ] } # We need to make sure the global allocator is disabled until we have support of full substrate externalities sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, features = [ "disable_allocator" ] } From 4fe4d3f9e6efd6607f570094c6872516f54b9549 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Tue, 2 Nov 2021 22:34:49 +0100 Subject: [PATCH 42/71] Update GHA to s3krit/matrix-message-action@v0.0.3 + doc (#4030) --- .github/workflows/check-labels.yml | 3 ++- .../extrinsic-ordering-check-from-bin.yml | 3 ++- .github/workflows/publish-docker-release.yml | 3 ++- .github/workflows/publish-draft-release.yml | 14 +++++++++----- .github/workflows/release-bot.yml | 3 ++- .github/workflows/release-candidate.yml | 6 ++++-- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check-labels.yml b/.github/workflows/check-labels.yml index e70bfddfd3e3..f1500542024e 100644 --- a/.github/workflows/check-labels.yml +++ b/.github/workflows/check-labels.yml @@ -8,7 +8,8 @@ jobs: check-labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 199b3be6fe66..3a67aeb9a432 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -27,7 +27,8 @@ jobs: REF_URL: ${{github.event.inputs.reference_url}} steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 - name: Fetch binary run: | diff --git a/.github/workflows/publish-docker-release.yml b/.github/workflows/publish-docker-release.yml index 1c5ae13caaa3..5576bbd9904f 100644 --- a/.github/workflows/publish-docker-release.yml +++ b/.github/workflows/publish-docker-release.yml @@ -9,7 +9,8 @@ jobs: main: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Cache Docker layers diff --git a/.github/workflows/publish-draft-release.yml b/.github/workflows/publish-draft-release.yml index e3c995e9bce1..83a1699e8ac3 100644 --- a/.github/workflows/publish-draft-release.yml +++ b/.github/workflows/publish-draft-release.yml @@ -26,7 +26,8 @@ jobs: matrix: runtime: ["polkadot", "kusama", "westend"] steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 - name: Cache target dir uses: actions/cache@v2 with: @@ -64,7 +65,8 @@ jobs: release_url: ${{ steps.create-release.outputs.html_url }} asset_upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 with: fetch-depth: 0 path: polkadot @@ -100,8 +102,10 @@ jobs: matrix: runtime: ["polkadot", "kusama", "westend"] steps: - - uses: actions/checkout@v2 - - uses: actions/download-artifact@v2 + - name: Checkout sources + uses: actions/checkout@v2 + - name: Download artifacts + uses: actions/download-artifact@v2 - name: Set up Ruby 2.7 uses: actions/setup-ruby@v1 with: @@ -128,7 +132,7 @@ jobs: needs: publish-draft-release steps: - name: Internal polkadot channel - uses: s3krit/matrix-message-action@v0.0.2 + uses: s3krit/matrix-message-action@v0.0.3 with: room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }} access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} diff --git a/.github/workflows/release-bot.yml b/.github/workflows/release-bot.yml index 20c6474cc3f5..a2b83fd82efd 100644 --- a/.github/workflows/release-bot.yml +++ b/.github/workflows/release-bot.yml @@ -15,7 +15,8 @@ jobs: - '!NTogofoetwjbTwOoPi:matrix.parity.io' # Internal release-notes channel runs-on: ubuntu-latest steps: - - uses: s3krit/matrix-message-action@v0.0.3 + - name: Send Matrix message + uses: s3krit/matrix-message-action@v0.0.3 with: room_id: ${{ matrix.channel }} # heh access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index 515d9a143b4f..4c3cd3aff76f 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -7,7 +7,8 @@ jobs: tag_rc: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout sources + uses: actions/checkout@v2 with: fetch-depth: 0 - id: compute_tag @@ -48,7 +49,8 @@ jobs: VERSION: ${{ steps.compute_tag.outputs.version }} with: filename: .github/ISSUE_TEMPLATE/release.md - - uses: s3krit/matrix-message-action@v0.0.2 + - name: Send Matrix message + uses: s3krit/matrix-message-action@v0.0.3 if: steps.create-issue.outputs.url != '' with: room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }} From dc9a1bbe3872ee04e178d533f3f35bc56edfe715 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Nov 2021 00:01:02 +0100 Subject: [PATCH 43/71] Bump libc from 0.2.105 to 0.2.106 (#4194) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.105 to 0.2.106. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.105...0.2.106) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98a553030a9e..55c1826d0424 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3279,9 +3279,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869d572136620d55835903746bcb5cdc54cb2851fd0aeec53220b4bb65ef3013" +checksum = "a60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index a235fcb6d032..074862690642 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.105" +libc = "0.2.106" slotmap = "1.0" tracing = "0.1.29" pin-project = "1.0.8" From 60d3305e170b8529232ed56e668819ed5ee2f9ab Mon Sep 17 00:00:00 2001 From: radupopa2010 Date: Wed, 3 Nov 2021 11:34:26 +0100 Subject: [PATCH 44/71] Update SimNet test to the new format (#4051) * simnet-v10 update simnet image version * update config * update path to js scripts * use current branch to download config for tests * use current branch to download config for tests * temp use simnet-v10 * update also the toml file * Rework test according to CIHelper format * Call cihelper script for running tests * Switch to v12 * Version 13 * simnet v14 * Readme extended Co-authored-by: Anton Gavrilov Co-authored-by: Denis Pisarev --- .gitlab-ci.yml | 30 ++++-- simnet_tests/README.md | 79 +++++++++++--- .../{ => parachains}/configs/adder.json | 0 .../configs/simple_rococo_testnet.toml | 10 +- .../parachains/test_suit_description.toml | 13 +++ .../parachains/tests/parachains.feature | 6 ++ simnet_tests/run_tests.sh | 102 ------------------ simnet_tests/tests/parachains.feature | 6 -- 8 files changed, 108 insertions(+), 138 deletions(-) rename simnet_tests/{ => parachains}/configs/adder.json (100%) rename simnet_tests/{ => parachains}/configs/simple_rococo_testnet.toml (76%) create mode 100644 simnet_tests/parachains/test_suit_description.toml create mode 100644 simnet_tests/parachains/tests/parachains.feature delete mode 100755 simnet_tests/run_tests.sh delete mode 100644 simnet_tests/tests/parachains.feature diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52c31b4d2fe5..a8c429aa0d78 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,6 +31,8 @@ variables: VAULT_SERVER_URL: "https://vault.parity-mgmt-vault.parity.io" VAULT_AUTH_PATH: "gitlab-parity-io-jwt" VAULT_AUTH_ROLE: "cicd_gitlab_parity_${CI_PROJECT_NAME}" + SIMNET_IMAGE: "europe-west3-docker.pkg.dev/parity-simnet/simnet-images/simnet:v14" + PIPELINE_SCRIPTS_TAG: "v0.1" default: cache: {} @@ -566,8 +568,12 @@ deploy-polkasync-kusama: simnet-tests: stage: deploy - image: "docker.io/paritytech/simnet:${SIMNET_REF}" + image: "${SIMNET_IMAGE}" <<: *kubernetes-env + variables: + # FIXME: change branch to "master" after merging this PR + # GH_DIR: "https://github.com/paritytech/polkadot/tree/master/simnet_tests" + GH_DIR: "https://github.com/paritytech/polkadot/tree/simnet-v10/simnet_tests" rules: - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_COMMIT_REF_NAME == "master" @@ -584,17 +590,19 @@ simnet-tests: # SIMNET_REF is a gitlab variable before_script: - - echo "Simnet Tests Config - ${SIMNET_IMAGE_NAME} ${SIMNET_REF} - ${PARACHAINS_IMAGE_NAME} ${PARACHAINS_IMAGE_TAG} - ${COLLATOR_IMAGE_NAME} ${COLLATOR_IMAGE_TAG}" + - echo "Simnet Tests Config" + - echo "${SIMNET_IMAGE}" + - echo "${PARACHAINS_IMAGE_NAME} ${PARACHAINS_IMAGE_TAG}" + - echo "${COLLATOR_IMAGE_NAME} ${COLLATOR_IMAGE_TAG}" + - echo "${GH_DIR}" script: - - /home/nonroot/simnet/gurke/scripts/run-test-environment-manager.sh - --github-remote-dir="https://github.com/paritytech/polkadot/tree/master/simnet_tests" - --config="simnet_tests/configs/simple_rococo_testnet.toml" - --image="${PARACHAINS_IMAGE_NAME}:${PARACHAINS_IMAGE_TAG}" - --image-2="${COLLATOR_IMAGE_NAME}:${COLLATOR_IMAGE_TAG}" - --image-simnet="docker.io/paritytech/simnet:${SIMNET_REF}" + - /home/nonroot/simnet/scripts/run-test-environment-manager-v2.sh + --github-remote-dir="${GH_DIR}" + --tag=smoketest + --image="PARACHAINSIMAGE=${PARACHAINS_IMAGE_NAME}:${PARACHAINS_IMAGE_TAG}" + --image="SYNTHIMAGE=${PARACHAINS_IMAGE_NAME}:${PARACHAINS_IMAGE_TAG}" + --image="COLIMAGE=${COLLATOR_IMAGE_NAME}:${COLLATOR_IMAGE_TAG}" + --image="SCRIPTSIMAGE=${SIMNET_IMAGE}" allow_failure: true retry: 2 tags: diff --git a/simnet_tests/README.md b/simnet_tests/README.md index 2a32a1e28d5c..3bd7ae8ee0bc 100644 --- a/simnet_tests/README.md +++ b/simnet_tests/README.md @@ -1,4 +1,4 @@ -# Simulation tests, or high level integration tests +# Simulation tests, or end-to-end tests _The content of this directory is meant to be used by Parity's private CI/CD infrastructure with private tools. At the moment those tools are still early @@ -7,32 +7,77 @@ public use._ ## Contents of this directory -`configs` directory contains config files in toml format that describe how to -configure the simulation network that you want to launch. +This directory contains different test suits, everyone one of them contains the set of test cases. +Every test suits is defined by its definition file test_suit_description.toml. More information about +structure of test suits and test cases may be found in [SimNet repository](https://gitlab.parity.io/parity/simnet/-/tree/master/ci_helper). -`tests` directory contains [Cucumber](https://cucumber.io/) files. Those are -Behavior-Driven Development test files that describe tests in plain English. -Under the hood there are assertions that specific metrics should have specific -values. +Every test case deploys a test network, using toml config file, and runs the test, +using a test scenario, written in [Cucumber](https://cucumber.io/). -At the moment we have only one test for parachains: `/parachains.features` -This test uses a JS script that we added to Simnet image and it's launched -by this step in the cucumber file: -`Then launch 'node' with parameters '--unhandled-rejections=strict /usr/local/bin/simnet_scripts test_parachain ./configs/adder.json ws://localhost:11222 100 10'` +These test suits are run by Polkadot CI in different pipelines, for every commit in PR, for commit into master etc. +It's the responsibility of the test's developer to provide the correct tag for their test, in order to let CI know, when +this test case should be run. For the baseline the existing tags from the existing tests may be used. If these tags are not +sufficient, the new tag may be created. But CI team should be aware of this tag and condition, when this test case should be run. -`run_test.sh` is an entry point for running all tests in the folder. -Any setup required for tests (but cannot be done in configs) is performed -here. The main script's responsibility is to run [Gurke](https://github.com/paritytech/gurke) -with passed parameters. -In order to use this script locally, you need to install +In order to run a test case locally, you need to install [Gurke](https://github.com/paritytech/gurke) Once you have access to a kubernetes cluster (meaning you can do `kubectl get pods`) -you can run this script with no arguments, like `./run_test.sh` and tests should run. +you can use Gurke in order to deploy a chain and run the test (see gurke's manual for the commands). Kubernetes cluster can be local, spawned with [kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) or an instance living in the [cloud](https://github.com/paritytech/gurke/blob/main/docs/How-to-setup-access-to-gke-k8s-cluster.md) +## How to add new test cases +New test case may be added either into the existing test suit or with creation of the new test suit. +In any case it's better to create the test and run it locally first, using Gurke (see above). +- In order to add the test case into the existing test suit, the new element (test case) should be added into [[test-cases]] array in test_suit_description.toml of this test suit. The example: + +``` +# The existing test case +[[test-cases]] +tags = ["all", "smoketest"] +chain-config = "configs/default_local_testnet.toml" +scenarios = ["tests/001-smoketest.feature"] + +# The new test case +[[test-cases]] +tags = ["all", "load"] +allowed-to-fail = true +chain-config = "configs/default_local_testnet.toml" +scenarios = ["tests/002-loadtest.feature"] +``` +(See note about test case's tags above). + +- In order to create a new test suit for the test case, new folder with test suit description file (test_suit_description.toml) should be created. The exact name is mandatory, CI traverses all subfolfders of simnet_tests directory and looks for this file, in order to build the list of test suits. In this description file the general information about the test suit and array of the test cases should be specified. The example of test_suit_description.toml file with some verbose comments: +``` +name = "Name of the test suit" +description = "General information about the suit" +# It is the path to the setup script, that may be needed for the test suit. +# You can perform in this script the actions, that are required for the chain deployment, but have to be performed before +# spawing the chain. Like pre-generation of seeds. This script is run by CI before spawing the chain in the cluster +setup-script="setup_script.sh" +# If the config of the test case requires some custom Docker images, the names for these images should be listed in this section +# CI has to provide all these images in the format image_name = some_value in order to run test cases from this suit +# Obviosuly CI should be aware, if the new custom image is added. +required-images = [ + "SYNTHIMAGE", + "COLIMAGE", + "SCRIPTSIMAGE", + "PARACHAINSIMAGE" +] + +# Array of the test cases +# Every elements should be started with [[test-cases]] +[[test-cases]] +# See tags information above +tags = ["all", "smoketest"] +# The config, that will be used in order to spawn the chain +chain-config = "configs/simple_rococo_testnet.toml" +# The array of the scenarios, that will be run on the deployed chain +scenarios = ["tests/parachains.feature"] +``` + ### [Here is link to barcamp presentation of Simnet](https://www.crowdcast.io/e/ph49xu01) ### [Here is link to the Simnet repo, hosted on private gitlab](https://gitlab.parity.io/parity/simnet/-/tree/master) diff --git a/simnet_tests/configs/adder.json b/simnet_tests/parachains/configs/adder.json similarity index 100% rename from simnet_tests/configs/adder.json rename to simnet_tests/parachains/configs/adder.json diff --git a/simnet_tests/configs/simple_rococo_testnet.toml b/simnet_tests/parachains/configs/simple_rococo_testnet.toml similarity index 76% rename from simnet_tests/configs/simple_rococo_testnet.toml rename to simnet_tests/parachains/configs/simple_rococo_testnet.toml index 945bd4306f96..c27768f4718d 100644 --- a/simnet_tests/configs/simple_rococo_testnet.toml +++ b/simnet_tests/parachains/configs/simple_rococo_testnet.toml @@ -2,8 +2,10 @@ timeout = 300 [settings.defaults] -command = "/usr/local/bin/polkadot" +image = "{{get_env(name="SYNTHIMAGE") | safe }}" +command = "polkadot" chain-spec = "rococo-local.json" +chain-name = "rococo-local" timeout = 300 [init_nodes.chainspec] @@ -23,10 +25,14 @@ timeout = 300 [nodes.alice] validator = true +image = "{{get_env(name="PARACHAINSIMAGE") | safe }}" +command = "polkadot" extra-args = ["--alice"] [nodes.bob] validator = true +image = "{{get_env(name="PARACHAINSIMAGE") | safe }}" +command = "polkadot" extra-args = ["--bob"] [nodes.collator01] @@ -38,7 +44,7 @@ image = "{{get_env(name="SCRIPTSIMAGE") | safe }}" command-with-args = """ cd simnet_scripts; npm run build; -node /usr/local/bin/simnet_scripts register_parachain /cfg/genesis-wasm /cfg/genesis-state 100 true ws://bootnode:9944; +node /usr/local/bin/simnet_scripts/dist/index.js register_parachain /cfg/genesis-wasm /cfg/genesis-state 100 true ws://bootnode:9944; tail -f /dev/null """ copy-files = [ diff --git a/simnet_tests/parachains/test_suit_description.toml b/simnet_tests/parachains/test_suit_description.toml new file mode 100644 index 000000000000..2597ab574776 --- /dev/null +++ b/simnet_tests/parachains/test_suit_description.toml @@ -0,0 +1,13 @@ +name = "Parachains test" +description = "Smoke test for parachains, that deploy a simple collator and register parachain" +required-images = [ + "SYNTHIMAGE", + "COLIMAGE", + "SCRIPTSIMAGE", + "PARACHAINSIMAGE" +] + +[[test-cases]] +tags = ["all", "smoketest"] +chain-config = "configs/simple_rococo_testnet.toml" +scenarios = ["tests/parachains.feature"] diff --git a/simnet_tests/parachains/tests/parachains.feature b/simnet_tests/parachains/tests/parachains.feature new file mode 100644 index 000000000000..73ebb744e6ba --- /dev/null +++ b/simnet_tests/parachains/tests/parachains.feature @@ -0,0 +1,6 @@ +Feature: ParaTesting + + Scenario: spawn parachains network and check parachains + Given a test network + Then sleep 200 seconds + Then launch 'node' with parameters '/usr/local/bin/simnet_scripts/dist/index.js test_parachain /usr/local/bin/simnet_scripts/type_defs/adder.json ws://localhost:11222 100 10' diff --git a/simnet_tests/run_tests.sh b/simnet_tests/run_tests.sh deleted file mode 100755 index 0717d99db7b3..000000000000 --- a/simnet_tests/run_tests.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash - -### ARGS FOR THIS SCRIPT ### -# ./${SCRIPT_NAME} NAMESPACE IMAGE LOG_PATH -# All args have default values, specify args to override -# e.g: ./${SCRIPT_NAME} radu-test parity/substrate:some_feature /var/log/gurke - -set -eou pipefail -SCRIPT_NAME="$0" -SCRIPT_PATH=$(dirname "${SCRIPT_NAME}") # relative -SCRIPT_PATH=$(cd "${SCRIPT_PATH}" && pwd) # absolutized and normalized - -function random_string { - head -1 <(fold -w 30 <(tr -dc 'a-z0-9' < /dev/urandom)) - } - -NAMESPACE=${1:-gurke-"$(random_string)"-runtest} -IMAGE=${2:-"docker.io/paritypr/synth-wave:master"} -LOG_PATH=${3:-"${SCRIPT_PATH}/logs"} -COLIMAGE=${4:-"docker.io/paritypr/colander:master"} -SCRIPTSIMAGE=${5:-"docker.io/paritytech/simnet:latest"} - -mkdir -p "${SCRIPT_PATH}"/logs - -echo "Running tests in namespace: ${NAMESPACE}" -echo "Testing image: ${IMAGE}" -echo "Storing scripts logs to: ${LOG_PATH}" -echo "Colator image is ${COLIMAGE}" -echo "SCRIPTSIMAGE image is ${SCRIPTSIMAGE}" - - -function forward_port { - - # RUN_IN_CONTAINER is env var that is set in the dockerfile - # use the -v operator to explicitly test if a variable is set - if [[ ! -v RUN_IN_CONTAINER ]] ; then - if is_port_forward_running ; then - kill_previous_job - fi - fi - start_forwading_job -} - -FORWARD_GREP_FILTER='kubectl.*[p]ort-forward.*svc/rpc.*11222' - -function is_port_forward_running { - # shellcheck disable=SC2009 - ps aux | grep -qE "${FORWARD_GREP_FILTER}" -} - -function kill_previous_job { - # shellcheck disable=SC2009 - job_pid=$(ps aux | grep -E "${FORWARD_GREP_FILTER}" | awk '{ print $2 }') - echo "INFO Killed forwading port 9944 into bootnode" - kill "${job_pid}" -} - -function start_forwading_job { - kubectl -n "${NAMESPACE}" \ - expose pod bootnode \ - --name=rpc \ - --type=NodePort \ - --target-port=9944 \ - --port=9944 - kubectl -n "${NAMESPACE}" \ - port-forward svc/rpc 11222:9944 &> "${LOG_PATH}/forward-${NAMESPACE}.log" & - sleep 2 - echo "INFO Started forwading port 9944 into bootnode" -} - -function update_api { - pwd - cd "${SCRIPT_PATH}"/../../simnet_scripts/ - npm run build - cd - - pwd -} - -echo "INFO: Checking if namespace has no pods" -kubectl -n "${NAMESPACE}" get pods - -export NAMESPACE="${NAMESPACE}" -export COLIMAGE="${COLIMAGE}" -export SYNTHIMAGE="${IMAGE}" -export SCRIPTSIMAGE="${SCRIPTSIMAGE}" - -cd "${SCRIPT_PATH}" - -set -x # echo the commands to stdout -gurke spawn --config "${SCRIPT_PATH}"/configs/simple_rococo_testnet.toml \ - -n "${NAMESPACE}" \ - --image "${IMAGE}" - -echo "INFO: Checking if pods launched correctly" -kubectl -n "${NAMESPACE}" get pods -o wide -echo "INFO: Updating Polkadot JS API" -update_api -forward_port - -# Run tests -gurke test "${NAMESPACE}" "${SCRIPT_PATH}"/tests --log-path "${LOG_PATH}" - diff --git a/simnet_tests/tests/parachains.feature b/simnet_tests/tests/parachains.feature deleted file mode 100644 index 220c323566d7..000000000000 --- a/simnet_tests/tests/parachains.feature +++ /dev/null @@ -1,6 +0,0 @@ -Feature: ParaTesting - - Scenario: spawn parachains network and check parachains - Given a test network - Then sleep 200 seconds - Then launch 'node' with parameters '--unhandled-rejections=strict /usr/local/bin/simnet_scripts test_parachain ./configs/adder.json ws://localhost:11222 100 10' From 9ee52bd49b206fa0c56b3125c07c9ef69b490f82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Wed, 3 Nov 2021 12:03:00 +0100 Subject: [PATCH 45/71] Offchain: Disable http requests (#4188) We don't use any http requests in the polkadot offchain workers. --- Cargo.lock | 332 +++++++++++++++++++++------------------- node/service/Cargo.toml | 1 + node/service/src/lib.rs | 18 ++- 3 files changed, 186 insertions(+), 165 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55c1826d0424..6fe2ada798d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -1910,7 +1910,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", ] @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "Inflector", "chrono", @@ -1974,7 +1974,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -1988,7 +1988,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -2016,7 +2016,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "bitflags", "frame-metadata", @@ -2038,12 +2038,13 @@ dependencies = [ "sp-state-machine", "sp-std", "sp-tracing", + "tt-call", ] [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2055,7 +2056,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2067,7 +2068,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro2", "quote", @@ -2077,7 +2078,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2100,7 +2101,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -2111,7 +2112,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "log", @@ -2128,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2144,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2153,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "sp-api", @@ -2365,7 +2366,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "chrono", "frame-election-provider-support", @@ -4606,7 +4607,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4620,7 +4621,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -4636,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -4651,7 +4652,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4675,7 +4676,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4695,7 +4696,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4710,7 +4711,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "beefy-primitives", "frame-support", @@ -4726,7 +4727,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4751,7 +4752,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4836,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4853,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4870,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4893,7 +4894,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4911,7 +4912,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4926,7 +4927,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4949,7 +4950,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4965,7 +4966,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4986,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5002,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5019,7 +5020,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5037,7 +5038,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5053,7 +5054,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5070,7 +5071,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5085,7 +5086,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5099,7 +5100,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5116,7 +5117,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5139,7 +5140,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5154,7 +5155,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5168,7 +5169,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5184,7 +5185,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5205,7 +5206,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5221,7 +5222,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5236,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5258,7 +5259,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5269,7 +5270,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "sp-arithmetic", @@ -5278,7 +5279,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5292,7 +5293,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5310,7 +5311,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5329,7 +5330,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-support", "frame-system", @@ -5346,7 +5347,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5363,7 +5364,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5374,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5391,7 +5392,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -5407,7 +5408,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-benchmarking", "frame-support", @@ -6904,6 +6905,7 @@ dependencies = [ "sc-finality-grandpa", "sc-keystore", "sc-network", + "sc-offchain", "sc-service", "sc-sync-state-rpc", "sc-telemetry", @@ -7779,7 +7781,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8042,7 +8044,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "sp-core", @@ -8053,7 +8055,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "derive_more", @@ -8080,7 +8082,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8103,7 +8105,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8119,7 +8121,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8135,7 +8137,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8146,7 +8148,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "chrono", "fdlimit", @@ -8184,7 +8186,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "fnv", "futures 0.3.17", @@ -8212,7 +8214,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "hash-db", "kvdb", @@ -8237,7 +8239,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "futures 0.3.17", @@ -8261,7 +8263,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "derive_more", @@ -8304,7 +8306,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "derive_more", "futures 0.3.17", @@ -8328,7 +8330,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8341,7 +8343,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "assert_matches", "async-trait", @@ -8375,7 +8377,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "futures 0.3.17", @@ -8401,7 +8403,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "sc-client-api", "sp-authorship", @@ -8412,7 +8414,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8438,7 +8440,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "derive_more", "environmental", @@ -8456,7 +8458,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "parity-scale-codec", @@ -8472,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8490,7 +8492,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "derive_more", @@ -8527,7 +8529,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "derive_more", "finality-grandpa", @@ -8551,7 +8553,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8568,7 +8570,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "derive_more", @@ -8583,7 +8585,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "hash-db", "parity-scale-codec", @@ -8601,7 +8603,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-std", "async-trait", @@ -8652,7 +8654,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8668,7 +8670,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "bytes 1.0.1", "fnv", @@ -8679,6 +8681,7 @@ dependencies = [ "hyper-rustls", "log", "num_cpus", + "once_cell", "parity-scale-codec", "parking_lot", "rand 0.7.3", @@ -8695,7 +8698,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "libp2p", @@ -8708,7 +8711,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8717,7 +8720,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "hash-db", @@ -8748,7 +8751,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8773,7 +8776,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8790,7 +8793,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "directories", @@ -8854,7 +8857,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "parity-scale-codec", @@ -8868,7 +8871,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8890,7 +8893,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "chrono", "futures 0.3.17", @@ -8908,7 +8911,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8939,7 +8942,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8950,7 +8953,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "intervalier", @@ -8977,7 +8980,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "derive_more", "futures 0.3.17", @@ -8991,7 +8994,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9414,7 +9417,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "hash-db", "log", @@ -9431,7 +9434,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9443,7 +9446,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9456,7 +9459,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "integer-sqrt", "num-traits", @@ -9471,7 +9474,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9484,7 +9487,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "parity-scale-codec", @@ -9496,7 +9499,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "sp-api", @@ -9508,7 +9511,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "log", @@ -9526,7 +9529,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "futures 0.3.17", @@ -9545,7 +9548,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "merlin", @@ -9568,7 +9571,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9579,7 +9582,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9591,9 +9594,10 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "base58", + "bitflags", "blake2-rfc", "byteorder", "dyn-clonable", @@ -9637,7 +9641,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "kvdb", "parking_lot", @@ -9646,7 +9650,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro2", "quote", @@ -9656,7 +9660,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "environmental", "parity-scale-codec", @@ -9667,7 +9671,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "finality-grandpa", "log", @@ -9685,7 +9689,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9699,7 +9703,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "hash-db", @@ -9723,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "lazy_static", "sp-core", @@ -9734,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "derive_more", @@ -9751,7 +9755,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "zstd", ] @@ -9759,7 +9763,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9774,7 +9778,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9785,7 +9789,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "sp-api", "sp-core", @@ -9795,7 +9799,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "backtrace", ] @@ -9803,7 +9807,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "rustc-hash", "serde", @@ -9813,7 +9817,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "either", "hash256-std-hasher", @@ -9835,7 +9839,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9852,7 +9856,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9864,7 +9868,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "serde", "serde_json", @@ -9873,7 +9877,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9887,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "scale-info", @@ -9898,7 +9902,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "hash-db", "log", @@ -9921,12 +9925,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9939,7 +9943,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "log", "sp-core", @@ -9952,7 +9956,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9968,7 +9972,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "sp-std", @@ -9980,7 +9984,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "sp-api", "sp-runtime", @@ -9989,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "log", @@ -10005,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "hash-db", "memory-db", @@ -10020,7 +10024,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10036,7 +10040,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10047,7 +10051,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10275,7 +10279,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "platforms", ] @@ -10283,7 +10287,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10305,7 +10309,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-std", "derive_more", @@ -10319,7 +10323,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "async-trait", "futures 0.3.17", @@ -10346,7 +10350,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10356,7 +10360,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10367,7 +10371,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10520,7 +10524,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "frame-system", "futures 0.3.17", @@ -10962,7 +10966,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#1d818f38a3198f21b4ae68bac3dc98219fccc669" +source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" dependencies = [ "jsonrpsee-ws-client", "log", @@ -10997,6 +11001,12 @@ dependencies = [ "toml", ] +[[package]] +name = "tt-call" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" + [[package]] name = "twox-hash" version = "1.6.1" diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 0c71830a07b8..8fc69296c2ae 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -24,6 +24,7 @@ sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch sc-sync-state-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" } service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 2fa529eaa8ef..f4e453b63340 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -797,11 +797,21 @@ where })?; if config.offchain_worker.enabled { - let _ = service::build_offchain_workers( - &config, - task_manager.spawn_handle(), + let offchain_workers = Arc::new(sc_offchain::OffchainWorkers::new_with_options( client.clone(), - network.clone(), + sc_offchain::OffchainWorkerOptions { enable_http_requests: false }, + )); + + // Start the offchain workers to have + task_manager.spawn_handle().spawn( + "offchain-notifications", + sc_offchain::notification_future( + config.role.is_authority(), + client.clone(), + offchain_workers, + task_manager.spawn_handle().clone(), + network.clone(), + ), ); } From 4fdec8348ed275088f9d31dce8d212addea8ef5b Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Wed, 3 Nov 2021 12:15:15 +0100 Subject: [PATCH 46/71] Update CI image to use the latest rustc (#4200) * Update CI image to use the latest rustc * Warning is ok about empty enum when no messages * revert ci image to production Co-authored-by: gilescope --- node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs index 08744e6c520d..bfe3150f551b 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs @@ -56,6 +56,7 @@ pub(crate) fn impl_channels_out_struct(info: &OverseerInfo) -> Result Date: Wed, 3 Nov 2021 12:42:56 +0000 Subject: [PATCH 47/71] More remote tests for bags-list pallet (#4065) * Remote test for bags-list in westend * new tests * REVAMPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP * reset cargo.lock changes * revert lock file * fix * cargo update -p sp-io --- Cargo.lock | 523 +++++++++++------- Cargo.toml | 2 +- .../{voter-bags => generate-bags}/Cargo.toml | 0 .../{voter-bags => generate-bags}/src/main.rs | 0 utils/remote-ext-tests/bags-list/Cargo.toml | 16 +- utils/remote-ext-tests/bags-list/src/main.rs | 116 +++- 6 files changed, 424 insertions(+), 233 deletions(-) rename utils/{voter-bags => generate-bags}/Cargo.toml (100%) rename utils/{voter-bags => generate-bags}/src/main.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 6fe2ada798d1..7f8a7f43c4f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -1888,6 +1888,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +[[package]] +name = "fixedbitset" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e" + [[package]] name = "flate2" version = "1.0.16" @@ -1910,7 +1916,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", ] @@ -1928,7 +1934,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -1948,7 +1954,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "Inflector", "chrono", @@ -1974,7 +1980,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -1988,7 +1994,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -2016,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "bitflags", "frame-metadata", @@ -2031,6 +2037,7 @@ dependencies = [ "smallvec", "sp-arithmetic", "sp-core", + "sp-core-hashing-proc-macro", "sp-inherents", "sp-io", "sp-runtime", @@ -2044,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2056,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2068,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro2", "quote", @@ -2078,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2101,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -2112,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "log", @@ -2129,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -2144,7 +2151,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "sp-api", @@ -2153,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "sp-api", @@ -2366,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "chrono", "frame-election-provider-support", @@ -3382,8 +3389,8 @@ dependencies = [ "multistream-select", "parking_lot", "pin-project 1.0.8", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.7.3", "ring", "rw-stream-sink", @@ -3432,8 +3439,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.7.3", "smallvec", ] @@ -3454,8 +3461,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.7.3", "regex", "sha2 0.9.8", @@ -3474,8 +3481,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "smallvec", "wasm-timer", ] @@ -3495,8 +3502,8 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.7.3", "sha2 0.9.8", "smallvec", @@ -3557,8 +3564,8 @@ dependencies = [ "lazy_static", "libp2p-core", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.8.4", "sha2 0.9.8", "snow", @@ -3593,8 +3600,8 @@ dependencies = [ "futures 0.3.17", "libp2p-core", "log", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "unsigned-varint 0.7.0", "void", ] @@ -3627,8 +3634,8 @@ dependencies = [ "libp2p-swarm", "log", "pin-project 1.0.8", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.8.0", "rand 0.7.3", "smallvec", "unsigned-varint 0.7.0", @@ -4075,6 +4082,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4647a11b578fead29cdbb34d4adef8dd3dc35b876c9c6d5240d83f205abfe96e" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.5.5" @@ -4607,7 +4623,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4621,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -4637,7 +4653,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -4652,7 +4668,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4676,7 +4692,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4693,10 +4709,32 @@ dependencies = [ "sp-tracing", ] +[[package]] +name = "pallet-bags-list-remote-tests" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +dependencies = [ + "clap", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-bags-list", + "pallet-staking", + "remote-externalities", + "sp-core", + "sp-runtime", + "sp-std", + "sp-storage", + "sp-tracing", + "structopt", + "tokio", +] + [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4711,7 +4749,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "beefy-primitives", "frame-support", @@ -4727,7 +4765,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4752,7 +4790,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4837,7 +4875,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4870,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4894,7 +4932,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4912,7 +4950,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4927,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4950,7 +4988,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4966,7 +5004,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -4986,7 +5024,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5003,7 +5041,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5020,7 +5058,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5038,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5054,7 +5092,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5071,7 +5109,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5086,7 +5124,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5100,7 +5138,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5117,7 +5155,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5140,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5155,7 +5193,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5169,7 +5207,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5185,7 +5223,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5206,7 +5244,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5222,7 +5260,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5236,7 +5274,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5259,7 +5297,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5270,7 +5308,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "sp-arithmetic", @@ -5279,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5293,7 +5331,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5311,7 +5349,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5330,7 +5368,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-support", "frame-system", @@ -5347,7 +5385,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5364,7 +5402,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5375,7 +5413,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5392,7 +5430,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5408,7 +5446,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-benchmarking", "frame-support", @@ -5469,9 +5507,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b679c6acc14fac74382942e2b73bea441686a33430b951ea03b5aeb6a7f254" +checksum = "e7ccc4a8687027deb53d45c5434a1f1b330c9d1069a59cfe80a62aa9a1da25ae" dependencies = [ "blake2-rfc", "crc32fast", @@ -5480,7 +5518,7 @@ dependencies = [ "libc", "log", "lz4", - "memmap2", + "memmap2 0.2.0", "parking_lot", "rand 0.8.4", "snap", @@ -5720,7 +5758,17 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" dependencies = [ - "fixedbitset", + "fixedbitset 0.2.0", + "indexmap", +] + +[[package]] +name = "petgraph" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" +dependencies = [ + "fixedbitset 0.4.0", "indexmap", ] @@ -7408,7 +7456,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" dependencies = [ "bytes 1.0.1", - "prost-derive", + "prost-derive 0.8.0", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes 1.0.1", + "prost-derive 0.9.0", ] [[package]] @@ -7422,9 +7480,29 @@ dependencies = [ "itertools", "log", "multimap", - "petgraph", - "prost", - "prost-types", + "petgraph 0.5.1", + "prost 0.8.0", + "prost-types 0.8.0", + "tempfile", + "which", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes 1.0.1", + "heck", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph 0.6.0", + "prost 0.9.0", + "prost-types 0.9.0", + "regex", "tempfile", "which", ] @@ -7442,6 +7520,19 @@ dependencies = [ "syn", ] +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "prost-types" version = "0.8.0" @@ -7449,7 +7540,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" dependencies = [ "bytes 1.0.1", - "prost", + "prost 0.8.0", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes 1.0.1", + "prost 0.9.0", ] [[package]] @@ -7760,28 +7861,23 @@ dependencies = [ name = "remote-ext-tests-bags-list" version = "0.9.12" dependencies = [ - "frame-election-provider-support", - "frame-support", + "clap", + "frame-system", "kusama-runtime", "log", - "pallet-bags-list", - "pallet-election-provider-multi-phase", - "pallet-staking", + "pallet-bags-list-remote-tests", "polkadot-runtime", - "remote-externalities", "sp-core", - "sp-runtime", - "sp-std", - "sp-storage", "sp-tracing", "structopt", "tokio", + "westend-runtime", ] [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8044,7 +8140,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "sp-core", @@ -8055,7 +8151,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "derive_more", @@ -8065,8 +8161,8 @@ dependencies = [ "libp2p", "log", "parity-scale-codec", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.9.0", "rand 0.7.3", "sc-client-api", "sc-network", @@ -8082,7 +8178,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8105,7 +8201,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8121,9 +8217,10 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "impl-trait-for-tuples", + "memmap2 0.5.0", "parity-scale-codec", "sc-chain-spec-derive", "sc-network", @@ -8137,7 +8234,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8148,7 +8245,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "chrono", "fdlimit", @@ -8186,7 +8283,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "fnv", "futures 0.3.17", @@ -8214,7 +8311,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "hash-db", "kvdb", @@ -8239,7 +8336,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "futures 0.3.17", @@ -8263,7 +8360,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "derive_more", @@ -8306,7 +8403,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "derive_more", "futures 0.3.17", @@ -8330,7 +8427,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8343,7 +8440,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "assert_matches", "async-trait", @@ -8377,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "futures 0.3.17", @@ -8403,7 +8500,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "sc-client-api", "sp-authorship", @@ -8414,7 +8511,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8426,6 +8523,7 @@ dependencies = [ "sc-executor-wasmtime", "sp-api", "sp-core", + "sp-core-hashing-proc-macro", "sp-externalities", "sp-io", "sp-panic-handler", @@ -8440,7 +8538,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "derive_more", "environmental", @@ -8458,7 +8556,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "parity-scale-codec", @@ -8474,7 +8572,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8492,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "derive_more", @@ -8529,7 +8627,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "derive_more", "finality-grandpa", @@ -8553,7 +8651,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8570,7 +8668,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "derive_more", @@ -8585,7 +8683,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "hash-db", "parity-scale-codec", @@ -8603,7 +8701,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-std", "async-trait", @@ -8627,8 +8725,8 @@ dependencies = [ "parity-scale-codec", "parking_lot", "pin-project 1.0.8", - "prost", - "prost-build", + "prost 0.8.0", + "prost-build 0.9.0", "rand 0.7.3", "sc-block-builder", "sc-client-api", @@ -8654,7 +8752,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8670,7 +8768,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "bytes 1.0.1", "fnv", @@ -8698,7 +8796,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "libp2p", @@ -8711,7 +8809,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8720,7 +8818,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "hash-db", @@ -8751,7 +8849,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8776,7 +8874,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8793,7 +8891,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "directories", @@ -8857,7 +8955,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "parity-scale-codec", @@ -8871,7 +8969,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8893,7 +8991,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "chrono", "futures 0.3.17", @@ -8911,7 +9009,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8942,7 +9040,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8953,7 +9051,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "intervalier", @@ -8980,7 +9078,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "derive_more", "futures 0.3.17", @@ -8994,7 +9092,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9417,7 +9515,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "hash-db", "log", @@ -9434,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9446,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9459,7 +9557,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "integer-sqrt", "num-traits", @@ -9474,7 +9572,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9487,7 +9585,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "parity-scale-codec", @@ -9499,7 +9597,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "sp-api", @@ -9511,7 +9609,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "log", @@ -9529,7 +9627,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "futures 0.3.17", @@ -9548,7 +9646,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "merlin", @@ -9571,7 +9669,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9582,7 +9680,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9594,7 +9692,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "base58", "bitflags", @@ -9623,6 +9721,7 @@ dependencies = [ "secrecy", "serde", "sha2 0.9.8", + "sp-core-hashing", "sp-debug-derive", "sp-externalities", "sp-runtime-interface", @@ -9638,10 +9737,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +dependencies = [ + "blake2-rfc", + "byteorder", + "sha2 0.9.8", + "sp-std", + "tiny-keccak", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +dependencies = [ + "proc-macro2", + "quote", + "sp-core-hashing", + "syn", +] + [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "kvdb", "parking_lot", @@ -9650,7 +9773,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro2", "quote", @@ -9660,7 +9783,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "environmental", "parity-scale-codec", @@ -9671,7 +9794,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "finality-grandpa", "log", @@ -9689,7 +9812,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9703,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "hash-db", @@ -9727,7 +9850,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "lazy_static", "sp-core", @@ -9738,7 +9861,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "derive_more", @@ -9755,7 +9878,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "zstd", ] @@ -9763,7 +9886,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9778,7 +9901,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9789,7 +9912,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "sp-api", "sp-core", @@ -9799,15 +9922,17 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "backtrace", + "lazy_static", + "regex", ] [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "rustc-hash", "serde", @@ -9817,7 +9942,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "either", "hash256-std-hasher", @@ -9839,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9856,7 +9981,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9868,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "serde", "serde_json", @@ -9877,7 +10002,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9891,7 +10016,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "scale-info", @@ -9902,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "hash-db", "log", @@ -9925,12 +10050,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9943,7 +10068,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "log", "sp-core", @@ -9956,7 +10081,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9972,7 +10097,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "sp-std", @@ -9984,7 +10109,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "sp-api", "sp-runtime", @@ -9993,7 +10118,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "log", @@ -10009,7 +10134,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "hash-db", "memory-db", @@ -10024,7 +10149,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10040,7 +10165,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10051,7 +10176,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10279,7 +10404,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "platforms", ] @@ -10287,7 +10412,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10309,7 +10434,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-std", "derive_more", @@ -10323,7 +10448,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "async-trait", "futures 0.3.17", @@ -10350,7 +10475,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10360,7 +10485,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10371,7 +10496,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10524,7 +10649,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "frame-system", "futures 0.3.17", @@ -10966,7 +11091,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b63e1c525baa33097ceccbd2ca828acbd36b0262" +source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/Cargo.toml b/Cargo.toml index 8ab176c69b13..0d1f909851cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ members = [ "parachain/test-parachains/adder/collator", "utils/staking-miner", "utils/remote-ext-tests/bags-list", - "utils/voter-bags", + "utils/generate-bags", ] # We want to be able to build the bridge relayer without pulling it (and all of its diff --git a/utils/voter-bags/Cargo.toml b/utils/generate-bags/Cargo.toml similarity index 100% rename from utils/voter-bags/Cargo.toml rename to utils/generate-bags/Cargo.toml diff --git a/utils/voter-bags/src/main.rs b/utils/generate-bags/src/main.rs similarity index 100% rename from utils/voter-bags/src/main.rs rename to utils/generate-bags/src/main.rs diff --git a/utils/remote-ext-tests/bags-list/Cargo.toml b/utils/remote-ext-tests/bags-list/Cargo.toml index 1421a78b1249..35c16507fc58 100644 --- a/utils/remote-ext-tests/bags-list/Cargo.toml +++ b/utils/remote-ext-tests/bags-list/Cargo.toml @@ -7,18 +7,14 @@ edition = "2018" [dependencies] polkadot-runtime = { version = "0.9.8", path = "../../../runtime/polkadot" } kusama-runtime = { version = "0.9.8", path = "../../../runtime/kusama" } +westend-runtime = { version = "0.9.8", path = "../../../runtime/westend" } -pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master" } -pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-bags-list-remote-tests = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } -remote-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } + tokio = { version = "1", features = ["macros"] } log = { version = "0.4.14" } structopt = {version = "0.3.25" } +clap = { version = "2.33.3" } diff --git a/utils/remote-ext-tests/bags-list/src/main.rs b/utils/remote-ext-tests/bags-list/src/main.rs index c7ef5cc62791..af51d5188862 100644 --- a/utils/remote-ext-tests/bags-list/src/main.rs +++ b/utils/remote-ext-tests/bags-list/src/main.rs @@ -14,53 +14,123 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Remote tests. +//! Remote tests for bags-list pallet. +use clap::arg_enum; +use std::convert::TryInto; use structopt::StructOpt; -mod voter_bags; - -#[derive(StructOpt)] -enum Runtime { - Kusama, - Polkadot, +arg_enum! { + #[derive(Debug)] + enum Command { + CheckMigration, + SanityCheck, + Snapshot, + } } -impl std::str::FromStr for Runtime { - type Err = &'static str; - fn from_str(s: &str) -> Result { - match s.to_lowercase().as_str() { - "kusama" => Ok(Runtime::Kusama), - "polkadot" => Ok(Runtime::Polkadot), - _ => Err("wrong Runtime: can be 'polkadot' or 'kusama'."), - } +arg_enum! { + #[derive(Debug)] + enum Runtime { + Polkadot, + Kusama, + Westend, } } #[derive(StructOpt)] struct Cli { - #[structopt(long, default_value = "wss://rpc.polkadot.io")] + #[structopt(long, short, default_value = "wss://kusama-rpc.polkadot.io")] uri: String, - #[structopt(long, short, default_value = "polkadot")] + #[structopt(long, short, case_insensitive = true, possible_values = &Runtime::variants(), default_value = "kusama")] runtime: Runtime, + #[structopt(long, short, case_insensitive = true, possible_values = &Command::variants(), default_value = "SanityCheck")] + command: Command, + #[structopt(long, short)] + snapshot_limit: Option, } #[tokio::main] async fn main() { let options = Cli::from_args(); + sp_tracing::try_init_simple(); + + log::info!( + target: "remote-ext-tests", + "using runtime {:?} / command: {:?}", + options.runtime, + options.command + ); + + use pallet_bags_list_remote_tests::*; match options.runtime { - Runtime::Kusama => { + Runtime::Polkadot => sp_core::crypto::set_default_ss58_version( + ::SS58Prefix::get() + .try_into() + .unwrap(), + ), + Runtime::Kusama => sp_core::crypto::set_default_ss58_version( + ::SS58Prefix::get() + .try_into() + .unwrap(), + ), + Runtime::Westend => sp_core::crypto::set_default_ss58_version( + ::SS58Prefix::get() + .try_into() + .unwrap(), + ), + }; + + match (options.runtime, options.command) { + (Runtime::Kusama, Command::CheckMigration) => { use kusama_runtime::{constants::currency::UNITS, Block, Runtime}; - voter_bags::test_voter_bags_migration::( - UNITS as u64, + migration::execute::(UNITS as u64, "KSM", options.uri.clone()).await; + }, + (Runtime::Kusama, Command::SanityCheck) => { + use kusama_runtime::{constants::currency::UNITS, Block, Runtime}; + sanity_check::execute::(UNITS as u64, "KSM", options.uri.clone()).await; + }, + (Runtime::Kusama, Command::Snapshot) => { + use kusama_runtime::{constants::currency::UNITS, Block, Runtime}; + snapshot::execute::( + options.snapshot_limit, + UNITS.try_into().unwrap(), + options.uri.clone(), + ) + .await; + }, + + (Runtime::Westend, Command::CheckMigration) => { + use westend_runtime::{constants::currency::UNITS, Block, Runtime}; + migration::execute::(UNITS as u64, "WND", options.uri.clone()).await; + }, + (Runtime::Westend, Command::SanityCheck) => { + use westend_runtime::{constants::currency::UNITS, Block, Runtime}; + sanity_check::execute::(UNITS as u64, "WND", options.uri.clone()).await; + }, + (Runtime::Westend, Command::Snapshot) => { + use westend_runtime::{constants::currency::UNITS, Block, Runtime}; + snapshot::execute::( + options.snapshot_limit, + UNITS.try_into().unwrap(), options.uri.clone(), ) .await; }, - Runtime::Polkadot => { + + (Runtime::Polkadot, Command::CheckMigration) => { + use polkadot_runtime::{constants::currency::UNITS, Block, Runtime}; + migration::execute::(UNITS as u64, "DOT", options.uri.clone()).await; + }, + (Runtime::Polkadot, Command::SanityCheck) => { + use polkadot_runtime::{constants::currency::UNITS, Block, Runtime}; + sanity_check::execute::(UNITS as u64, "DOT", options.uri.clone()).await; + }, + (Runtime::Polkadot, Command::Snapshot) => { use polkadot_runtime::{constants::currency::UNITS, Block, Runtime}; - voter_bags::test_voter_bags_migration::( - UNITS as u64, + snapshot::execute::( + options.snapshot_limit, + UNITS.try_into().unwrap(), options.uri.clone(), ) .await; From 94243bb83a668a3f8ee014c8551a3603cb3b250d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Nov 2021 21:18:10 +0100 Subject: [PATCH 48/71] Bump tokio from 1.12.0 to 1.13.0 (#4193) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.12.0 to 1.13.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.12.0...tokio-1.13.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/test/service/Cargo.toml | 4 ++-- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f8a7f43c4f0..2e9094a95c86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10844,9 +10844,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2c2416fdedca8443ae44b4527de1ea633af61d8f7169ffa6e72c5b53d24efcc" +checksum = "588b2d10a336da58d877567cd8fb8a14b463e2104910f8132cd054b4b96e29ee" dependencies = [ "autocfg", "bytes 1.0.1", diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index bfd478797df3..ff13e378b665 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -11,7 +11,7 @@ hex = "0.4.3" tracing = "0.1.29" rand = "0.8.3" tempfile = "3.2.0" -tokio = "1.12.0" +tokio = "1.13.0" # Polkadot dependencies polkadot-overseer = { path = "../../overseer" } @@ -60,4 +60,4 @@ substrate-test-client = { git = "https://github.com/paritytech/substrate", branc pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } serde_json = "1.0.67" substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -tokio = { version = "1.12", features = ["macros"] } +tokio = { version = "1.13", features = ["macros"] } diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index eb3840bf5d6e..a6d6fd921e43 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -44,4 +44,4 @@ substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -tokio = { version = "1.12", features = ["macros"] } +tokio = { version = "1.13", features = ["macros"] } diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 042f7da98594..eb6fb463a412 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } -tokio = { version = "1.12", features = ["macros"] } +tokio = { version = "1.13", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" structopt = "0.3.25" From 4685b251590d1487ce1e561e514990c45f6e8785 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Thu, 4 Nov 2021 12:34:17 +0100 Subject: [PATCH 49/71] Fix misleading logs in collator protocol. (#4201) * Fix misleading logs in collator protocol. * Make logs debug again. Co-authored-by: Andronik Ordian --- node/network/collator-protocol/src/validator_side/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/node/network/collator-protocol/src/validator_side/mod.rs b/node/network/collator-protocol/src/validator_side/mod.rs index 0b050d3c5e19..f7672d932dcd 100644 --- a/node/network/collator-protocol/src/validator_side/mod.rs +++ b/node/network/collator-protocol/src/validator_side/mod.rs @@ -1213,7 +1213,8 @@ where tracing::debug!( target: LOG_TARGET, ?relay_parent, - "Fetch for collation took too long, starting parallel download for next collator as well." + ?collator_id, + "Timeout hit - already seconded?" ); dequeue_next_collation_and_fetch(&mut ctx, &mut state, relay_parent, collator_id).await; } @@ -1272,6 +1273,12 @@ async fn dequeue_next_collation_and_fetch( .get_mut(&relay_parent) .and_then(|c| c.get_next_collation_to_fetch(Some(previous_fetch))) { + tracing::debug!( + target: LOG_TARGET, + ?relay_parent, + ?id, + "Successfully dequeued next advertisement - fetching ..." + ); fetch_collation(ctx, state, next, id).await; } } From 6841b721b60fdd9256976378fa29f7795697e9c9 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Thu, 4 Nov 2021 13:53:09 +0100 Subject: [PATCH 50/71] minor doc chores (#4219) * fix/warn: name is unused, only in debug would be used and but nobody does * chore: Add better docs to `expansion` and why it exists * chore: fmt * Revert "chore: fmt" This reverts commit 94d39bab5d1553d082a032ab6e31f579316dfa40. --- node/metered-channel/src/oneshot.rs | 5 ++--- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- .../overseer-gen/proc-macro/src/impl_channels_out.rs | 3 ++- node/overseer/overseer-gen/proc-macro/src/lib.rs | 2 ++ 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/node/metered-channel/src/oneshot.rs b/node/metered-channel/src/oneshot.rs index 5f2c72cb701e..af162c267f77 100644 --- a/node/metered-channel/src/oneshot.rs +++ b/node/metered-channel/src/oneshot.rs @@ -78,7 +78,7 @@ pub fn channel( let (tx, rx) = oneshot::channel(); ( - MeteredSender { name, inner: tx }, + MeteredSender { inner: tx }, MeteredReceiver { name, inner: rx, @@ -113,14 +113,13 @@ impl Measurable for Error { /// Oneshot sender, created by [`channel`]. #[derive(Debug)] pub struct MeteredSender { - name: &'static str, inner: oneshot::Sender<(Instant, T)>, } impl MeteredSender { /// Send a value. pub fn send(self, t: T) -> Result<(), T> { - let Self { inner, name: _ } = self; + let Self { inner } = self; inner.send((Instant::now(), t)).map_err(|(_, t)| t) } diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 97ca4214760a..80140f455b17 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -23,5 +23,5 @@ assert_matches = "1.5.0" [features] default = [] # write the expanded version to a `overlord-expansion.rs` -# in the `cwd` +# in the `OUT_DIR` as defined by `cargo`. expansion = [] diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs index bfe3150f551b..e2ec1752ce78 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs @@ -56,7 +56,8 @@ pub(crate) fn impl_channels_out_struct(info: &OverseerInfo) -> Result Date: Fri, 5 Nov 2021 05:11:27 +1300 Subject: [PATCH 51/71] implement dispatch_as (#4075) * support dispatch_as * add weight * Update Cargo.lock Co-authored-by: Shawn Tabrizi --- Cargo.lock | 336 +++++++++--------- runtime/kusama/src/lib.rs | 1 + runtime/kusama/src/weights/pallet_utility.rs | 3 + runtime/polkadot/src/lib.rs | 1 + .../polkadot/src/weights/pallet_utility.rs | 3 + runtime/rococo/src/lib.rs | 1 + runtime/westend/src/lib.rs | 1 + runtime/westend/src/weights/pallet_utility.rs | 3 + 8 files changed, 181 insertions(+), 168 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e9094a95c86..9cbb9a40c2d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -1524,9 +1524,9 @@ dependencies = [ [[package]] name = "directories" -version = "3.0.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69600ff1703123957937708eb27f7a564e48885c537782722ed0ba3189ce1d7" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" dependencies = [ "dirs-sys", ] @@ -1916,7 +1916,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", ] @@ -1934,7 +1934,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -1954,7 +1954,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "Inflector", "chrono", @@ -1980,7 +1980,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -1994,7 +1994,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,7 +2151,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "chrono", "frame-election-provider-support", @@ -3919,9 +3919,9 @@ dependencies = [ [[package]] name = "linregress" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6e407dadb4ca4b31bc69c27aff00e7ca4534fdcee855159b039a7cebb5f395" +checksum = "d6c601a85f5ecd1aba625247bca0031585fb1c446461b142878a16f8245ddeb8" dependencies = [ "nalgebra", "statrs", @@ -4623,7 +4623,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -4653,7 +4653,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -4668,7 +4668,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4692,7 +4692,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4712,7 +4712,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "clap", "frame-election-provider-support", @@ -4734,7 +4734,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4749,7 +4749,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "beefy-primitives", "frame-support", @@ -4765,7 +4765,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4790,7 +4790,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4875,7 +4875,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4932,7 +4932,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4950,7 +4950,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -4988,7 +4988,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5004,7 +5004,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5024,7 +5024,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5041,7 +5041,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5058,7 +5058,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5076,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5092,7 +5092,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5109,7 +5109,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5124,7 +5124,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5138,7 +5138,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5155,7 +5155,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5193,7 +5193,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5207,7 +5207,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5223,7 +5223,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5244,7 +5244,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5260,7 +5260,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5274,7 +5274,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5297,7 +5297,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5308,7 +5308,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "sp-arithmetic", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5331,7 +5331,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5349,7 +5349,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5368,7 +5368,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-support", "frame-system", @@ -5385,7 +5385,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5402,7 +5402,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5413,7 +5413,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5430,7 +5430,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -5446,7 +5446,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-benchmarking", "frame-support", @@ -7877,7 +7877,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8140,7 +8140,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "sp-core", @@ -8151,7 +8151,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "derive_more", @@ -8178,7 +8178,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8201,7 +8201,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8217,7 +8217,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8234,7 +8234,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8245,7 +8245,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "chrono", "fdlimit", @@ -8283,7 +8283,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "fnv", "futures 0.3.17", @@ -8311,7 +8311,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "hash-db", "kvdb", @@ -8336,7 +8336,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "futures 0.3.17", @@ -8360,7 +8360,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "derive_more", @@ -8403,7 +8403,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "derive_more", "futures 0.3.17", @@ -8427,7 +8427,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8440,7 +8440,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "assert_matches", "async-trait", @@ -8474,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "futures 0.3.17", @@ -8500,7 +8500,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "sc-client-api", "sp-authorship", @@ -8511,7 +8511,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8538,7 +8538,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "derive_more", "environmental", @@ -8556,7 +8556,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "parity-scale-codec", @@ -8572,7 +8572,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8590,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "derive_more", @@ -8627,7 +8627,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "derive_more", "finality-grandpa", @@ -8651,7 +8651,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8668,7 +8668,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "derive_more", @@ -8683,7 +8683,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "hash-db", "parity-scale-codec", @@ -8701,7 +8701,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-std", "async-trait", @@ -8752,7 +8752,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8768,7 +8768,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "bytes 1.0.1", "fnv", @@ -8796,7 +8796,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "libp2p", @@ -8809,7 +8809,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8818,7 +8818,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "hash-db", @@ -8849,7 +8849,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8874,7 +8874,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8891,7 +8891,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "directories", @@ -8955,7 +8955,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "parity-scale-codec", @@ -8969,7 +8969,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8991,7 +8991,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "chrono", "futures 0.3.17", @@ -9009,7 +9009,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9040,7 +9040,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9051,7 +9051,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "intervalier", @@ -9078,7 +9078,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "derive_more", "futures 0.3.17", @@ -9092,7 +9092,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9515,7 +9515,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "hash-db", "log", @@ -9532,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9557,7 +9557,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "integer-sqrt", "num-traits", @@ -9572,7 +9572,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9585,7 +9585,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "parity-scale-codec", @@ -9597,7 +9597,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "sp-api", @@ -9609,7 +9609,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "log", @@ -9627,7 +9627,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "futures 0.3.17", @@ -9646,7 +9646,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "merlin", @@ -9669,7 +9669,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9680,7 +9680,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9692,7 +9692,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "base58", "bitflags", @@ -9740,7 +9740,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "blake2-rfc", "byteorder", @@ -9753,7 +9753,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro2", "quote", @@ -9764,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "kvdb", "parking_lot", @@ -9773,7 +9773,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro2", "quote", @@ -9783,7 +9783,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "environmental", "parity-scale-codec", @@ -9794,7 +9794,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "finality-grandpa", "log", @@ -9812,7 +9812,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "hash-db", @@ -9850,7 +9850,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "lazy_static", "sp-core", @@ -9861,7 +9861,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "derive_more", @@ -9878,7 +9878,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "zstd", ] @@ -9886,7 +9886,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9901,7 +9901,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9912,7 +9912,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "sp-api", "sp-core", @@ -9922,7 +9922,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "backtrace", "lazy_static", @@ -9932,7 +9932,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "rustc-hash", "serde", @@ -9942,7 +9942,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "either", "hash256-std-hasher", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9981,7 +9981,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9993,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "serde", "serde_json", @@ -10002,7 +10002,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10016,7 +10016,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10027,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "hash-db", "log", @@ -10050,12 +10050,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10068,7 +10068,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "log", "sp-core", @@ -10081,7 +10081,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10097,7 +10097,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "sp-std", @@ -10109,7 +10109,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "sp-api", "sp-runtime", @@ -10118,7 +10118,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "log", @@ -10134,7 +10134,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "hash-db", "memory-db", @@ -10149,7 +10149,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10165,7 +10165,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10176,7 +10176,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10404,7 +10404,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "platforms", ] @@ -10412,7 +10412,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10434,7 +10434,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-std", "derive_more", @@ -10448,7 +10448,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "async-trait", "futures 0.3.17", @@ -10475,7 +10475,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10485,7 +10485,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10496,7 +10496,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10649,7 +10649,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "frame-system", "futures 0.3.17", @@ -11091,7 +11091,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#26e5f5f526ced19dfe649010e8f19e2c3f957b12" +source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 4afe8488f93d..d924bd603064 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -934,6 +934,7 @@ impl pallet_identity::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = weights::pallet_utility::WeightInfo; } diff --git a/runtime/kusama/src/weights/pallet_utility.rs b/runtime/kusama/src/weights/pallet_utility.rs index b7fe894b072b..8cf16eb0ac0a 100644 --- a/runtime/kusama/src/weights/pallet_utility.rs +++ b/runtime/kusama/src/weights/pallet_utility.rs @@ -55,4 +55,7 @@ impl pallet_utility::WeightInfo for WeightInfo { // Standard Error: 0 .saturating_add((3_292_000 as Weight).saturating_mul(c as Weight)) } + fn dispatch_as() -> Weight { + (14_340_000 as Weight) + } } diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 88e8820c5803..2b1c53c9a771 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -952,6 +952,7 @@ impl pallet_vesting::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = weights::pallet_utility::WeightInfo; } diff --git a/runtime/polkadot/src/weights/pallet_utility.rs b/runtime/polkadot/src/weights/pallet_utility.rs index 947ed1bcb46b..69f64ddddd09 100644 --- a/runtime/polkadot/src/weights/pallet_utility.rs +++ b/runtime/polkadot/src/weights/pallet_utility.rs @@ -55,4 +55,7 @@ impl pallet_utility::WeightInfo for WeightInfo { // Standard Error: 0 .saturating_add((1_014_000 as Weight).saturating_mul(c as Weight)) } + fn dispatch_as() -> Weight { + (14_340_000 as Weight) + } } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index d4f3ce524087..750850ba5f3f 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -1041,6 +1041,7 @@ impl validator_manager::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = (); } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 646a4a18f351..8ff636abf51e 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -616,6 +616,7 @@ impl pallet_identity::Config for Runtime { impl pallet_utility::Config for Runtime { type Event = Event; type Call = Call; + type PalletsOrigin = OriginCaller; type WeightInfo = weights::pallet_utility::WeightInfo; } diff --git a/runtime/westend/src/weights/pallet_utility.rs b/runtime/westend/src/weights/pallet_utility.rs index f0d8871e2dee..bdedab5422c8 100644 --- a/runtime/westend/src/weights/pallet_utility.rs +++ b/runtime/westend/src/weights/pallet_utility.rs @@ -55,4 +55,7 @@ impl pallet_utility::WeightInfo for WeightInfo { // Standard Error: 0 .saturating_add((3_091_000 as Weight).saturating_mul(c as Weight)) } + fn dispatch_as() -> Weight { + (14_340_000 as Weight) + } } From 81013bec9d8acbfe3f643aa9aa4fc4ee0fcd4a08 Mon Sep 17 00:00:00 2001 From: Anton Gavrilov Date: Thu, 4 Nov 2021 19:41:59 +0100 Subject: [PATCH 52/71] Change path for the tests to master (#4223) --- .gitlab-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a8c429aa0d78..92f1fbdce2fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -571,9 +571,7 @@ simnet-tests: image: "${SIMNET_IMAGE}" <<: *kubernetes-env variables: - # FIXME: change branch to "master" after merging this PR - # GH_DIR: "https://github.com/paritytech/polkadot/tree/master/simnet_tests" - GH_DIR: "https://github.com/paritytech/polkadot/tree/simnet-v10/simnet_tests" + GH_DIR: "https://github.com/paritytech/polkadot/tree/master/simnet_tests" rules: - if: $CI_PIPELINE_SOURCE == "schedule" - if: $CI_COMMIT_REF_NAME == "master" From d985794802145cfa93674e96677cc3d0b7b1707e Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Sat, 6 Nov 2021 08:16:00 +0100 Subject: [PATCH 53/71] fix(staking miner): use `StorageKey` in getStorage (#4231) Use `StorageKey` in the rpc call `getStorage` instead of `[u8;32]` --- utils/staking-miner/src/monitor.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/staking-miner/src/monitor.rs b/utils/staking-miner/src/monitor.rs index 6bd90666f7ca..e603706e2fcb 100644 --- a/utils/staking-miner/src/monitor.rs +++ b/utils/staking-miner/src/monitor.rs @@ -25,13 +25,14 @@ use jsonrpsee_ws_client::{ WsClient, }; use sc_transaction_pool_api::TransactionStatus; +use sp_core::storage::StorageKey; /// Ensure that now is the signed phase. async fn ensure_signed_phase( client: &WsClient, at: B::Hash, ) -> Result<(), Error> { - let key = sp_core::storage::StorageKey(EPM::CurrentPhase::::hashed_key().to_vec()); + let key = StorageKey(EPM::CurrentPhase::::hashed_key().to_vec()); let phase = get_storage::>(client, params! {key, at}) .await .map_err::, _>(Into::into)? @@ -156,7 +157,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { TransactionStatus::Ready | TransactionStatus::Broadcast(_) | TransactionStatus::Future => continue, TransactionStatus::InBlock(hash) => { log::info!(target: LOG_TARGET, "included at {:?}", hash); - let key = frame_support::storage::storage_prefix(b"System", b"Events"); + let key = StorageKey(frame_support::storage::storage_prefix(b"System",b"Events").to_vec()); let events = get_storage::::Hash>>, >(client, params!{ key, hash }).await?.unwrap_or_default(); log::info!(target: LOG_TARGET, "events at inclusion {:?}", events); From e5530856ce5b85f2f43217ea335525f1fd28e932 Mon Sep 17 00:00:00 2001 From: Hernando Castano Date: Mon, 8 Nov 2021 12:21:14 +0100 Subject: [PATCH 54/71] Update `bridge/` codeowners (#4222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update `bridge/` codeowners * Adding Andreas to the party Co-authored-by: Tomasz DrwiÄ™ga --- .github/CODEOWNERS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a1501907266a..a2e5a5ab9204 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,2 @@ -bridges/ @tomusdrw @svyatonik @hcastano +bridges/ @tomusdrw @svyatonik @adoerr @acatangiu @antonio-dropulic + From 547bc8a114c09ea70613123417ef20f87d8f378f Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Mon, 8 Nov 2021 14:43:23 +0100 Subject: [PATCH 55/71] availability recovery type name clarifications (#4203) * minor changes * fmt * rename to expressive types * chore: fixup * chore: remove `Data` prefixes * address review comments * guide items * sourcer -> source, add `FromValdiators` suffix --- node/core/av-store/src/lib.rs | 136 +--------------- node/core/av-store/src/metrics.rs | 153 ++++++++++++++++++ node/network/availability-recovery/src/lib.rs | 110 +++++++------ .../availability-recovery/src/tests.rs | 2 +- .../availability/availability-recovery.md | 62 ++++--- 5 files changed, 246 insertions(+), 217 deletions(-) create mode 100644 node/core/av-store/src/metrics.rs diff --git a/node/core/av-store/src/lib.rs b/node/core/av-store/src/lib.rs index 2227442eb9ac..6dc2684847cf 100644 --- a/node/core/av-store/src/lib.rs +++ b/node/core/av-store/src/lib.rs @@ -33,10 +33,7 @@ use parity_scale_codec::{Decode, Encode, Error as CodecError, Input}; use bitvec::{order::Lsb0 as BitOrderLsb0, vec::BitVec}; use polkadot_node_primitives::{AvailableData, ErasureChunk}; -use polkadot_node_subsystem_util::{ - self as util, - metrics::{self, prometheus}, -}; +use polkadot_node_subsystem_util as util; use polkadot_primitives::v1::{ BlockNumber, CandidateEvent, CandidateHash, CandidateReceipt, Hash, Header, ValidatorIndex, }; @@ -47,6 +44,9 @@ use polkadot_subsystem::{ SubsystemError, }; +mod metrics; +pub use self::metrics::*; + #[cfg(test)] mod tests; @@ -1273,131 +1273,3 @@ fn prune_all(db: &Arc, config: &Config, clock: &dyn Clock) -> Re db.write(tx)?; Ok(()) } - -#[derive(Clone)] -struct MetricsInner { - received_availability_chunks_total: prometheus::Counter, - pruning: prometheus::Histogram, - process_block_finalized: prometheus::Histogram, - block_activated: prometheus::Histogram, - process_message: prometheus::Histogram, - store_available_data: prometheus::Histogram, - store_chunk: prometheus::Histogram, - get_chunk: prometheus::Histogram, -} - -/// Availability metrics. -#[derive(Default, Clone)] -pub struct Metrics(Option); - -impl Metrics { - fn on_chunks_received(&self, count: usize) { - if let Some(metrics) = &self.0 { - use core::convert::TryFrom as _; - // assume usize fits into u64 - let by = u64::try_from(count).unwrap_or_default(); - metrics.received_availability_chunks_total.inc_by(by); - } - } - - /// Provide a timer for `prune_povs` which observes on drop. - fn time_pruning(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.pruning.start_timer()) - } - - /// Provide a timer for `process_block_finalized` which observes on drop. - fn time_process_block_finalized( - &self, - ) -> Option { - self.0.as_ref().map(|metrics| metrics.process_block_finalized.start_timer()) - } - - /// Provide a timer for `block_activated` which observes on drop. - fn time_block_activated(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.block_activated.start_timer()) - } - - /// Provide a timer for `process_message` which observes on drop. - fn time_process_message(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.process_message.start_timer()) - } - - /// Provide a timer for `store_available_data` which observes on drop. - fn time_store_available_data(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.store_available_data.start_timer()) - } - - /// Provide a timer for `store_chunk` which observes on drop. - fn time_store_chunk(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.store_chunk.start_timer()) - } - - /// Provide a timer for `get_chunk` which observes on drop. - fn time_get_chunk(&self) -> Option { - self.0.as_ref().map(|metrics| metrics.get_chunk.start_timer()) - } -} - -impl metrics::Metrics for Metrics { - fn try_register(registry: &prometheus::Registry) -> Result { - let metrics = MetricsInner { - received_availability_chunks_total: prometheus::register( - prometheus::Counter::new( - "parachain_received_availability_chunks_total", - "Number of availability chunks received.", - )?, - registry, - )?, - pruning: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_pruning", - "Time spent within `av_store::prune_all`", - ))?, - registry, - )?, - process_block_finalized: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_process_block_finalized", - "Time spent within `av_store::process_block_finalized`", - ))?, - registry, - )?, - block_activated: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_block_activated", - "Time spent within `av_store::process_block_activated`", - ))?, - registry, - )?, - process_message: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_process_message", - "Time spent within `av_store::process_message`", - ))?, - registry, - )?, - store_available_data: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_store_available_data", - "Time spent within `av_store::store_available_data`", - ))?, - registry, - )?, - store_chunk: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_store_chunk", - "Time spent within `av_store::store_chunk`", - ))?, - registry, - )?, - get_chunk: prometheus::register( - prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( - "parachain_av_store_get_chunk", - "Time spent fetching requested chunks.`", - ))?, - registry, - )?, - }; - Ok(Metrics(Some(metrics))) - } -} diff --git a/node/core/av-store/src/metrics.rs b/node/core/av-store/src/metrics.rs new file mode 100644 index 000000000000..fddacca6626e --- /dev/null +++ b/node/core/av-store/src/metrics.rs @@ -0,0 +1,153 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use polkadot_node_subsystem_util::metrics::{self, prometheus}; + +#[derive(Clone)] +pub(crate) struct MetricsInner { + received_availability_chunks_total: prometheus::Counter, + pruning: prometheus::Histogram, + process_block_finalized: prometheus::Histogram, + block_activated: prometheus::Histogram, + process_message: prometheus::Histogram, + store_available_data: prometheus::Histogram, + store_chunk: prometheus::Histogram, + get_chunk: prometheus::Histogram, +} + +/// Availability metrics. +#[derive(Default, Clone)] +pub struct Metrics(Option); + +impl Metrics { + pub(crate) fn on_chunks_received(&self, count: usize) { + if let Some(metrics) = &self.0 { + use core::convert::TryFrom as _; + // assume usize fits into u64 + let by = u64::try_from(count).unwrap_or_default(); + metrics.received_availability_chunks_total.inc_by(by); + } + } + + /// Provide a timer for `prune_povs` which observes on drop. + pub(crate) fn time_pruning(&self) -> Option { + self.0.as_ref().map(|metrics| metrics.pruning.start_timer()) + } + + /// Provide a timer for `process_block_finalized` which observes on drop. + pub(crate) fn time_process_block_finalized( + &self, + ) -> Option { + self.0.as_ref().map(|metrics| metrics.process_block_finalized.start_timer()) + } + + /// Provide a timer for `block_activated` which observes on drop. + pub(crate) fn time_block_activated( + &self, + ) -> Option { + self.0.as_ref().map(|metrics| metrics.block_activated.start_timer()) + } + + /// Provide a timer for `process_message` which observes on drop. + pub(crate) fn time_process_message( + &self, + ) -> Option { + self.0.as_ref().map(|metrics| metrics.process_message.start_timer()) + } + + /// Provide a timer for `store_available_data` which observes on drop. + pub(crate) fn time_store_available_data( + &self, + ) -> Option { + self.0.as_ref().map(|metrics| metrics.store_available_data.start_timer()) + } + + /// Provide a timer for `store_chunk` which observes on drop. + pub(crate) fn time_store_chunk( + &self, + ) -> Option { + self.0.as_ref().map(|metrics| metrics.store_chunk.start_timer()) + } + + /// Provide a timer for `get_chunk` which observes on drop. + pub(crate) fn time_get_chunk(&self) -> Option { + self.0.as_ref().map(|metrics| metrics.get_chunk.start_timer()) + } +} + +impl metrics::Metrics for Metrics { + fn try_register(registry: &prometheus::Registry) -> Result { + let metrics = MetricsInner { + received_availability_chunks_total: prometheus::register( + prometheus::Counter::new( + "parachain_received_availability_chunks_total", + "Number of availability chunks received.", + )?, + registry, + )?, + pruning: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_pruning", + "Time spent within `av_store::prune_all`", + ))?, + registry, + )?, + process_block_finalized: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_process_block_finalized", + "Time spent within `av_store::process_block_finalized`", + ))?, + registry, + )?, + block_activated: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_block_activated", + "Time spent within `av_store::process_block_activated`", + ))?, + registry, + )?, + process_message: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_process_message", + "Time spent within `av_store::process_message`", + ))?, + registry, + )?, + store_available_data: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_store_available_data", + "Time spent within `av_store::store_available_data`", + ))?, + registry, + )?, + store_chunk: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_store_chunk", + "Time spent within `av_store::store_chunk`", + ))?, + registry, + )?, + get_chunk: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_av_store_get_chunk", + "Time spent fetching requested chunks.`", + ))?, + registry, + )?, + }; + Ok(Metrics(Some(metrics))) + } +} diff --git a/node/network/availability-recovery/src/lib.rs b/node/network/availability-recovery/src/lib.rs index 0b973e03bd72..98785b6d39ea 100644 --- a/node/network/availability-recovery/src/lib.rs +++ b/node/network/availability-recovery/src/lib.rs @@ -73,7 +73,7 @@ mod tests; const LOG_TARGET: &str = "parachain::availability-recovery"; -// How many parallel requests interaction should have going at once. +// How many parallel recovery tasks should be running at once. const N_PARALLEL: usize = 50; // Size of the LRU cache where we keep recovered data. @@ -104,13 +104,13 @@ pub struct AvailabilityRecoverySubsystem { metrics: Metrics, } -struct RequestFromBackersPhase { +struct RequestFromBackers { // a random shuffling of the validators from the backing group which indicates the order // in which we connect to them and request the chunk. shuffled_backers: Vec, } -struct RequestChunksPhase { +struct RequestChunksFromValidators { /// How many request have been unsuccessful so far. error_count: usize, /// Total number of responses that have been received. @@ -125,11 +125,11 @@ struct RequestChunksPhase { requesting_chunks: FuturesUndead, (ValidatorIndex, RequestError)>>, } -struct InteractionParams { +struct RecoveryParams { /// Discovery ids of `validators`. validator_authority_keys: Vec, - /// Validators relevant to this `Interaction`. + /// Validators relevant to this `RecoveryTask`. validators: Vec, /// The number of pieces needed. @@ -145,33 +145,37 @@ struct InteractionParams { metrics: Metrics, } -enum InteractionPhase { - RequestFromBackers(RequestFromBackersPhase), - RequestChunks(RequestChunksPhase), +/// Source the availability data either by means +/// of direct request response protocol to +/// backers (a.k.a. fast-path), or recover from chunks. +enum Source { + RequestFromBackers(RequestFromBackers), + RequestChunks(RequestChunksFromValidators), } -/// A state of a single interaction reconstructing an available data. -struct Interaction { +/// A stateful reconstruction of availability data in reference to +/// a candidate hash. +struct RecoveryTask { sender: S, - /// The parameters of the interaction. - params: InteractionParams, + /// The parameters of the recovery process. + params: RecoveryParams, - /// The phase of the interaction. - phase: InteractionPhase, + /// The source to obtain the availability data from. + source: Source, } -impl RequestFromBackersPhase { +impl RequestFromBackers { fn new(mut backers: Vec) -> Self { backers.shuffle(&mut rand::thread_rng()); - RequestFromBackersPhase { shuffled_backers: backers } + RequestFromBackers { shuffled_backers: backers } } // Run this phase to completion. async fn run( &mut self, - params: &InteractionParams, + params: &RecoveryParams, sender: &mut impl SubsystemSender, ) -> Result { tracing::trace!( @@ -186,7 +190,7 @@ impl RequestFromBackersPhase { self.shuffled_backers.pop().ok_or_else(|| RecoveryError::Unavailable)?; // Request data. - let (req, res) = OutgoingRequest::new( + let (req, response) = OutgoingRequest::new( Recipient::Authority( params.validator_authority_keys[validator_index.0 as usize].clone(), ), @@ -203,7 +207,7 @@ impl RequestFromBackersPhase { ) .await; - match res.await { + match response.await { Ok(req_res::v1::AvailableDataFetchingResponse::AvailableData(data)) => { if reconstructed_data_matches_root( params.validators.len(), @@ -241,12 +245,12 @@ impl RequestFromBackersPhase { } } -impl RequestChunksPhase { +impl RequestChunksFromValidators { fn new(n_validators: u32) -> Self { let mut shuffling: Vec<_> = (0..n_validators).map(ValidatorIndex).collect(); shuffling.shuffle(&mut rand::thread_rng()); - RequestChunksPhase { + RequestChunksFromValidators { error_count: 0, total_received_responses: 0, shuffling: shuffling.into(), @@ -255,7 +259,7 @@ impl RequestChunksPhase { } } - fn is_unavailable(&self, params: &InteractionParams) -> bool { + fn is_unavailable(&self, params: &RecoveryParams) -> bool { is_unavailable( self.received_chunks.len(), self.requesting_chunks.total_len(), @@ -264,7 +268,7 @@ impl RequestChunksPhase { ) } - fn can_conclude(&self, params: &InteractionParams) -> bool { + fn can_conclude(&self, params: &RecoveryParams) -> bool { self.received_chunks.len() >= params.threshold || self.is_unavailable(params) } @@ -295,7 +299,7 @@ impl RequestChunksPhase { async fn launch_parallel_requests( &mut self, - params: &InteractionParams, + params: &RecoveryParams, sender: &mut impl SubsystemSender, ) { let num_requests = self.get_desired_request_count(params.threshold); @@ -346,7 +350,8 @@ impl RequestChunksPhase { .await; } - async fn wait_for_chunks(&mut self, params: &InteractionParams) { + /// Wait for a sufficient amount of chunks to reconstruct according to the provided `params`. + async fn wait_for_chunks(&mut self, params: &RecoveryParams) { let metrics = ¶ms.metrics; // Wait for all current requests to conclude or time-out, or until we reach enough chunks. @@ -448,7 +453,7 @@ impl RequestChunksPhase { async fn run( &mut self, - params: &InteractionParams, + params: &RecoveryParams, sender: &mut impl SubsystemSender, ) -> Result { // First query the store for any chunks we've got. @@ -559,6 +564,9 @@ const fn is_unavailable( received_chunks + requesting_chunks + unrequested_validators < threshold } +/// Re-encode the data into erasure chunks in order to verify +/// the root hash of the provided merkle tree, which is built +/// on-top of the encoded chunks. fn reconstructed_data_matches_root( n_validators: usize, expected_root: &Hash, @@ -581,7 +589,7 @@ fn reconstructed_data_matches_root( branches.root() == *expected_root } -impl Interaction { +impl RecoveryTask { async fn run(mut self) -> Result { // First just see if we have the data available locally. { @@ -609,18 +617,18 @@ impl Interaction { loop { // These only fail if we cannot reach the underlying subsystem, which case there is nothing // meaningful we can do. - match self.phase { - InteractionPhase::RequestFromBackers(ref mut from_backers) => { + match self.source { + Source::RequestFromBackers(ref mut from_backers) => { match from_backers.run(&self.params, &mut self.sender).await { Ok(data) => break Ok(data), Err(RecoveryError::Invalid) => break Err(RecoveryError::Invalid), Err(RecoveryError::Unavailable) => - self.phase = InteractionPhase::RequestChunks(RequestChunksPhase::new( + self.source = Source::RequestChunks(RequestChunksFromValidators::new( self.params.validators.len() as _, )), } }, - InteractionPhase::RequestChunks(ref mut from_all) => + Source::RequestChunks(ref mut from_all) => break from_all.run(&self.params, &mut self.sender).await, } } @@ -628,13 +636,13 @@ impl Interaction { } /// Accumulate all awaiting sides for some particular `AvailableData`. -struct InteractionHandle { +struct RecoveryHandle { candidate_hash: CandidateHash, remote: RemoteHandle>, awaiting: Vec>>, } -impl Future for InteractionHandle { +impl Future for RecoveryHandle { type Output = Option<(CandidateHash, Result)>; fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { @@ -679,9 +687,9 @@ impl Future for InteractionHandle { } struct State { - /// Each interaction is implemented as its own async task, + /// Each recovery task is implemented as its own async task, /// and these handles are for communicating with them. - interactions: FuturesUnordered, + ongoing_recoveries: FuturesUnordered, /// A recent block hash for which state should be available. live_block: (BlockNumber, Hash), @@ -693,7 +701,7 @@ struct State { impl Default for State { fn default() -> Self { Self { - interactions: FuturesUnordered::new(), + ongoing_recoveries: FuturesUnordered::new(), live_block: (0, Hash::default()), availability_lru: LruCache::new(LRU_SIZE), } @@ -732,8 +740,8 @@ async fn handle_signal(state: &mut State, signal: OverseerSignal) -> SubsystemRe } } -/// Machinery around launching interactions into the background. -async fn launch_interaction( +/// Machinery around launching recovery tasks into the background. +async fn launch_recovery_task( state: &mut State, ctx: &mut Context, session_info: SessionInfo, @@ -748,7 +756,7 @@ where { let candidate_hash = receipt.hash(); - let params = InteractionParams { + let params = RecoveryParams { validator_authority_keys: session_info.discovery_keys.clone(), validators: session_info.validators.clone(), threshold: recovery_threshold(session_info.validators.len())?, @@ -759,28 +767,26 @@ where let phase = backing_group .and_then(|g| session_info.validator_groups.get(g.0 as usize)) - .map(|group| { - InteractionPhase::RequestFromBackers(RequestFromBackersPhase::new(group.clone())) - }) + .map(|group| Source::RequestFromBackers(RequestFromBackers::new(group.clone()))) .unwrap_or_else(|| { - InteractionPhase::RequestChunks(RequestChunksPhase::new(params.validators.len() as _)) + Source::RequestChunks(RequestChunksFromValidators::new(params.validators.len() as _)) }); - let interaction = Interaction { sender: ctx.sender().clone(), params, phase }; + let recovery_task = RecoveryTask { sender: ctx.sender().clone(), params, source: phase }; - let (remote, remote_handle) = interaction.run().remote_handle(); + let (remote, remote_handle) = recovery_task.run().remote_handle(); - state.interactions.push(InteractionHandle { + state.ongoing_recoveries.push(RecoveryHandle { candidate_hash, remote: remote_handle, awaiting: vec![response_sender], }); - if let Err(e) = ctx.spawn("recovery interaction", Box::pin(remote)) { + if let Err(e) = ctx.spawn("recovery task", Box::pin(remote)) { tracing::warn!( target: LOG_TARGET, err = ?e, - "Failed to spawn a recovery interaction task", + "Failed to spawn a recovery task", ); } @@ -817,7 +823,9 @@ where return Ok(()) } - if let Some(i) = state.interactions.iter_mut().find(|i| i.candidate_hash == candidate_hash) { + if let Some(i) = + state.ongoing_recoveries.iter_mut().find(|i| i.candidate_hash == candidate_hash) + { i.awaiting.push(response_sender); return Ok(()) } @@ -831,7 +839,7 @@ where let _span = span.child("session-info-ctx-received"); match session_info { Some(session_info) => - launch_interaction( + launch_recovery_task( state, ctx, session_info, @@ -962,7 +970,7 @@ impl AvailabilityRecoverySubsystem { } } } - output = state.interactions.select_next_some() => { + output = state.ongoing_recoveries.select_next_some() => { if let Some((candidate_hash, result)) = output { state.availability_lru.put(candidate_hash, result); } diff --git a/node/network/availability-recovery/src/tests.rs b/node/network/availability-recovery/src/tests.rs index a918b8c615d8..190507ae4d0e 100644 --- a/node/network/availability-recovery/src/tests.rs +++ b/node/network/availability-recovery/src/tests.rs @@ -1273,7 +1273,7 @@ fn does_not_query_local_validator() { fn parallel_request_calculation_works_as_expected() { let num_validators = 100; let threshold = recovery_threshold(num_validators).unwrap(); - let mut phase = RequestChunksPhase::new(100); + let mut phase = RequestChunksFromValidators::new(100); assert_eq!(phase.get_desired_request_count(threshold), threshold); phase.error_count = 1; phase.total_received_responses = 1; diff --git a/roadmap/implementers-guide/src/node/availability/availability-recovery.md b/roadmap/implementers-guide/src/node/availability/availability-recovery.md index 2c9da3fbb5f8..d7d822188ccb 100644 --- a/roadmap/implementers-guide/src/node/availability/availability-recovery.md +++ b/roadmap/implementers-guide/src/node/availability/availability-recovery.md @@ -21,24 +21,21 @@ Output: ## Functionality -We hold a state which tracks the current recovery interactions we have live, as well as which request IDs correspond to which interactions. An interaction is a structure encapsulating all interaction with the network necessary to recover the available data. +We hold a state which tracks the currently ongoing recovery tasks, as well as which request IDs correspond to which task. A recovery task is a structure encapsulating all recovery tasks with the network necessary to recover the available data in respect to one candidate. ```rust struct State { - /// Each interaction is implemented as its own remote async task, and these handles are remote - /// for it. - interactions: FuturesUnordered, - /// A multiplexer over receivers from live interactions. - interaction_receivers: FuturesUnordered>, + /// Each recovery is implemented as an independent async task, and the handles only supply information about the result. + ongoing_recoveries: FuturesUnordered, /// A recent block hash for which state should be available. live_block_hash: Hash, // An LRU cache of recently recovered data. availability_lru: LruCache>, } -/// This is a future, which concludes either when a response is received from the interaction, +/// This is a future, which concludes either when a response is received from the recovery tasks, /// or all the `awaiting` channels have closed. -struct InteractionHandle { +struct RecoveryHandle { candidate_hash: CandidateHash, interaction_response: RemoteHandle, awaiting: Vec>>, @@ -47,7 +44,7 @@ struct InteractionHandle { struct Unavailable; struct Concluded(CandidateHash, Result); -struct InteractionParams { +struct RecoveryTaskParams { validator_authority_keys: Vec, validators: Vec, // The number of pieces needed. @@ -56,13 +53,13 @@ struct InteractionParams { erasure_root: Hash, } -enum InteractionPhase { +enum RecoveryTask { RequestFromBackers { // a random shuffling of the validators from the backing group which indicates the order // in which we connect to them and request the chunk. shuffled_backers: Vec, } - RequestChunks { + RequestChunksFromValidators { // a random shuffling of the validators which indicates the order in which we connect to the validators and // request the chunk from them. shuffling: Vec, @@ -71,10 +68,10 @@ enum InteractionPhase { } } -struct Interaction { +struct RecoveryTask { to_subsystems: SubsystemSender, - params: InteractionParams, - phase: InteractionPhase, + params: RecoveryTaskParams, + source: Source, } ``` @@ -89,31 +86,24 @@ On `Conclude`, shut down the subsystem. #### `AvailabilityRecoveryMessage::RecoverAvailableData(receipt, session, Option, response)` 1. Check the `availability_lru` for the candidate and return the data if so. -1. Check if there is already an interaction handle for the request. If so, add the response handle to it. -1. Otherwise, load the session info for the given session under the state of `live_block_hash`, and initiate an interaction with *`launch_interaction`*. Add an interaction handle to the state and add the response channel to it. +1. Check if there is already an recovery handle for the request. If so, add the response handle to it. +1. Otherwise, load the session info for the given session under the state of `live_block_hash`, and initiate a recovery task with *`launch_recovery_task`*. Add a recovery handle to the state and add the response channel to it. 1. If the session info is not available, return `RecoveryError::Unavailable` on the response channel. -### From-interaction logic +### Recovery logic -#### `FromInteraction::Concluded` - -1. Load the entry from the `interactions` map. It should always exist, if not for logic errors. Send the result to each member of `awaiting`. -1. Add the entry to the `availability_lru`. - -### Interaction logic - -#### `launch_interaction(session_index, session_info, candidate_receipt, candidate_hash, Option)` +#### `launch_recovery_task(session_index, session_info, candidate_receipt, candidate_hash, Option)` 1. Compute the threshold from the session info. It should be `f + 1`, where `n = 3f + k`, where `k in {1, 2, 3}`, and `n` is the number of validators. -1. Set the various fields of `InteractionParams` based on the validator lists in `session_info` and information about the candidate. +1. Set the various fields of `RecoveryParams` based on the validator lists in `session_info` and information about the candidate. 1. If the `backing_group_index` is `Some`, start in the `RequestFromBackers` phase with a shuffling of the backing group validator indices and a `None` requesting value. -1. Otherwise, start in the `RequestChunks` phase with `received_chunks`,`requesting_chunks`, and `next_shuffling` all empty. +1. Otherwise, start in the `RequestChunksFromValidators` source with `received_chunks`,`requesting_chunks`, and `next_shuffling` all empty. 1. Set the `to_subsystems` sender to be equal to a clone of the `SubsystemContext`'s sender. 1. Initialize `received_chunks` to an empty set, as well as `requesting_chunks`. -Launch the interaction as a background task running `interaction_loop(interaction)`. +Launch the source as a background task running `run(recovery_task)`. -#### `interaction_loop(interaction) -> Result` +#### `run(recovery_task) -> Result` ```rust // How many parallel requests to have going at once. @@ -121,7 +111,7 @@ const N_PARALLEL: usize = 50; ``` * Request `AvailabilityStoreMessage::QueryAvailableData`. If it exists, return that. -* If the phase is `InteractionPhase::RequestFromBackers` +* If the task contains `RequestFromBackers` * Loop: * If the `requesting_pov` is `Some`, poll for updates on it. If it concludes, set `requesting_pov` to `None`. * If the `requesting_pov` is `None`, take the next backer off the `shuffled_backers`. @@ -130,14 +120,20 @@ const N_PARALLEL: usize = 50; * If it concludes with available data, attempt a re-encoding. * If it has the correct erasure-root, break and issue a `Ok(available_data)`. * If it has an incorrect erasure-root, return to beginning. - * If the backer is `None`, set the phase to `InteractionPhase::RequestChunks` with a random shuffling of validators and empty `next_shuffling`, `received_chunks`, and `requesting_chunks` and break the loop. + * Send the result to each member of `awaiting`. + * If the backer is `None`, set the source to `RequestChunksFromValidators` with a random shuffling of validators and empty `received_chunks`, and `requesting_chunks` and break the loop. -* If the phase is `InteractionPhase::RequestChunks`: +* If the task contains `RequestChunksFromValidators`: * Request `AvailabilityStoreMessage::QueryAllChunks`. For each chunk that exists, add it to `received_chunks` and remote the validator from `shuffling`. * Loop: * If `received_chunks + requesting_chunks + shuffling` lengths are less than the threshold, break and return `Err(Unavailable)`. * Poll for new updates from `requesting_chunks`. Check merkle proofs of any received chunks. If the request simply fails due to network issues, insert into the front of `shuffling` to be retried. - * If `received_chunks` has more than `threshold` entries, attempt to recover the data. If that fails, or a re-encoding produces an incorrect erasure-root, break and issue a `Err(RecoveryError::Invalid)`. If correct, break and issue `Ok(available_data)`. + * If `received_chunks` has more than `threshold` entries, attempt to recover the data. + * If that fails, return `Err(RecoveryError::Invalid)` + * If correct: + * If re-encoding produces an incorrect erasure-root, break and issue a `Err(RecoveryError::Invalid)`. + * break and issue `Ok(available_data)` + * Send the result to each member of `awaiting`. * While there are fewer than `N_PARALLEL` entries in `requesting_chunks`, * Pop the next item from `shuffling`. If it's empty and `requesting_chunks` is empty, return `Err(RecoveryError::Unavailable)`. * Issue a `NetworkBridgeMessage::Requests` and wait for the response in `requesting_chunks`. From e91b9d09d70c7acd317a13efcebebc8b1b670a18 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Tue, 9 Nov 2021 01:00:40 +0100 Subject: [PATCH 56/71] Increase maximum chunk size to adjust for small networks. (#4220) * Increase maximum chunk size to adjust for small networks. * Issue warning on invalid merkle proofs. * warn -> debug on invalid merkle proof. --- node/network/protocol/src/request_response/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/network/protocol/src/request_response/mod.rs b/node/network/protocol/src/request_response/mod.rs index 3d5e445e26ae..f8d414cd3528 100644 --- a/node/network/protocol/src/request_response/mod.rs +++ b/node/network/protocol/src/request_response/mod.rs @@ -133,7 +133,7 @@ impl Protocol { Protocol::ChunkFetching => RequestResponseConfig { name: p_name, max_request_size: 1_000, - max_response_size: POV_RESPONSE_SIZE as u64 / 10, + max_response_size: POV_RESPONSE_SIZE as u64 * 3, // We are connected to all validators: request_timeout: CHUNK_REQUEST_TIMEOUT, inbound_queue: Some(tx), From 174f339923517d8edd6b1e2d80a007ad3e0476aa Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Nov 2021 11:46:50 +0100 Subject: [PATCH 57/71] update cargo lock to unbreak dep of a dep (#4245) --- Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9cbb9a40c2d1..0146a4f3d174 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2658,9 +2658,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" @@ -2685,9 +2685,9 @@ checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a" [[package]] name = "hyper" -version = "0.14.11" +version = "0.14.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" +checksum = "2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26b" dependencies = [ "bytes 1.0.1", "futures-channel", @@ -11138,7 +11138,7 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "rand 0.8.4", "static_assertions", ] From 35d93c33c0131a42532e6b7c23d8409ed6f64c66 Mon Sep 17 00:00:00 2001 From: Koute Date: Tue, 9 Nov 2021 22:12:57 +0900 Subject: [PATCH 58/71] Update `wasmtime` and related dependencies (companion for Substrate#10149) (#4210) * Update `wasmtime` and related dependencies * Update `substrate` to 7adee13ddc48a9d715eb2f9caa37d99713fa0102 --- Cargo.lock | 546 +++++++++++++++++++++++++++-------------------------- 1 file changed, 283 insertions(+), 263 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0146a4f3d174..7ad3a9f7747a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -414,7 +414,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "miniz_oxide", - "object", + "object 0.26.2", "rustc-demangle", ] @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -979,9 +979,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.67" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" dependencies = [ "jobserver", ] @@ -1195,18 +1195,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15013642ddda44eebcf61365b2052a23fd8b7314f90ba44aa059ec02643c5139" +checksum = "cc0cb7df82c8cf8f2e6a8dd394a0932a71369c160cc9b027dca414fced242513" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298f2a7ed5fdcb062d8e78b7496b0f4b95265d20245f2d0ca88f846dd192a3a3" +checksum = "fe4463c15fa42eee909e61e5eac4866b7c6d22d0d8c621e57a0c5380753bfa8c" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", @@ -1221,9 +1221,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf504261ac62dfaf4ffb3f41d88fd885e81aba947c1241275043885bc5f0bac" +checksum = "793f6a94a053a55404ea16e1700202a88101672b8cd6b4df63e13cde950852bf" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1231,24 +1231,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd2a72db4301dbe7e5a4499035eedc1e82720009fb60603e20504d8691fa9cd" +checksum = "44aa1846df275bce5eb30379d65964c7afc63c05a117076e62a119c25fe174be" [[package]] name = "cranelift-entity" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48868faa07cacf948dc4a1773648813c0e453ff9467e800ff10f6a78c021b546" +checksum = "a3a45d8d6318bf8fc518154d9298eab2a8154ec068a8885ff113f6db8d69bb3a" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351c9d13b4ecd1a536215ec2fd1c3ee9ee8bc31af172abf1e45ed0adb7a931df" +checksum = "e07339bd461766deb7605169de039e01954768ff730fa1254e149001884a8525" dependencies = [ "cranelift-codegen", "log", @@ -1258,9 +1258,9 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df8b556663d7611b137b24db7f6c8d9a8a27d7f29c7ea7835795152c94c1b75" +checksum = "03e2fca76ff57e0532936a71e3fc267eae6a19a86656716479c66e7f912e3d7b" dependencies = [ "cranelift-codegen", "libc", @@ -1269,9 +1269,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a69816d90db694fa79aa39b89dda7208a4ac74b6f2b8f3c4da26ee1c8bdfc5e" +checksum = "1f46fec547a1f8a32c54ea61c28be4f4ad234ad95342b718a9a9adcaadb0c778" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1727,9 +1727,9 @@ checksum = "68b91989ae21441195d7d9b9993a2f9295c7e1a8c96255d8b729accddc124797" [[package]] name = "errno" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b480f641ccf0faf324e20c1d3e53d81b7484c698b42ea677f6907ae4db195371" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ "errno-dragonfly", "libc", @@ -1916,7 +1916,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", ] @@ -1934,7 +1934,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -1954,7 +1954,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "Inflector", "chrono", @@ -1980,7 +1980,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -1994,7 +1994,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,7 +2151,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "chrono", "frame-election-provider-support", @@ -2865,6 +2865,16 @@ dependencies = [ "futures-timer 2.0.2", ] +[[package]] +name = "io-lifetimes" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47f5ce4afb9bf504b9f496a3307676bc232122f91a93c4da6d540aa99a0a0e0b" +dependencies = [ + "rustc_version 0.4.0", + "winapi 0.3.9", +] + [[package]] name = "iovec" version = "0.1.4" @@ -2909,9 +2919,9 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "jobserver" @@ -3927,6 +3937,12 @@ dependencies = [ "statrs", ] +[[package]] +name = "linux-raw-sys" +version = "0.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687387ff42ec7ea4f2149035a5675fedb675d26f98db90a1846ac63d3addb5f5" + [[package]] name = "lock_api" version = "0.4.1" @@ -4557,6 +4573,15 @@ name = "object" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ "crc32fast", "indexmap", @@ -4623,7 +4648,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4662,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -4653,7 +4678,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -4668,7 +4693,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4692,7 +4717,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4712,7 +4737,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "clap", "frame-election-provider-support", @@ -4734,7 +4759,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4749,7 +4774,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "beefy-primitives", "frame-support", @@ -4765,7 +4790,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4790,7 +4815,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4875,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4917,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4908,7 +4933,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4925,14 +4950,14 @@ dependencies = [ "sp-runtime", "sp-std", "static_assertions", - "strum 0.21.0", - "strum_macros 0.21.1", + "strum", + "strum_macros", ] [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4950,7 +4975,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4965,7 +4990,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -4988,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5004,7 +5029,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5024,7 +5049,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5041,7 +5066,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5058,7 +5083,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5076,7 +5101,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5092,7 +5117,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5109,7 +5134,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5124,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5138,7 +5163,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5155,7 +5180,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5178,7 +5203,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5193,7 +5218,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5207,7 +5232,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5223,7 +5248,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5244,7 +5269,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5260,7 +5285,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5274,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5297,7 +5322,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5308,7 +5333,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "sp-arithmetic", @@ -5317,7 +5342,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5331,7 +5356,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5349,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5368,7 +5393,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-support", "frame-system", @@ -5385,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5402,7 +5427,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5413,7 +5438,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5430,7 +5455,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5446,7 +5471,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-benchmarking", "frame-support", @@ -5507,9 +5532,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ccc4a8687027deb53d45c5434a1f1b330c9d1069a59cfe80a62aa9a1da25ae" +checksum = "7cb5195cb862b13055cf7f7a76c55073dc73885c2a61511e322b8c1666be7332" dependencies = [ "blake2-rfc", "crc32fast", @@ -6477,7 +6502,7 @@ dependencies = [ "polkadot-primitives", "sc-authority-discovery", "sc-network", - "strum 0.22.0", + "strum", "thiserror", ] @@ -7809,9 +7834,9 @@ dependencies = [ [[package]] name = "regalloc" -version = "0.0.31" +version = "0.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +checksum = "a6304468554ed921da3d32c355ea107b8d13d7b8996c3adfb7aab48d3bc321f4" dependencies = [ "log", "rustc-hash", @@ -7877,7 +7902,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8035,6 +8060,23 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rsix" +version = "0.23.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f64c5788d5aab8b75441499d99576a24eb09f76fb267b36fec7e3d970c66431" +dependencies = [ + "bitflags", + "cc", + "errno", + "io-lifetimes", + "itoa", + "libc", + "linux-raw-sys", + "once_cell", + "rustc_version 0.4.0", +] + [[package]] name = "rustc-demangle" version = "0.1.16" @@ -8071,6 +8113,15 @@ dependencies = [ "semver 0.11.0", ] +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.4", +] + [[package]] name = "rustls" version = "0.19.1" @@ -8140,7 +8191,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "sp-core", @@ -8151,7 +8202,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "derive_more", @@ -8178,7 +8229,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8201,7 +8252,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8217,7 +8268,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8234,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8245,7 +8296,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "chrono", "fdlimit", @@ -8283,7 +8334,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "fnv", "futures 0.3.17", @@ -8311,7 +8362,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "hash-db", "kvdb", @@ -8336,7 +8387,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "futures 0.3.17", @@ -8360,7 +8411,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "derive_more", @@ -8403,7 +8454,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "derive_more", "futures 0.3.17", @@ -8427,7 +8478,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8440,7 +8491,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "assert_matches", "async-trait", @@ -8474,7 +8525,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "futures 0.3.17", @@ -8500,7 +8551,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "sc-client-api", "sp-authorship", @@ -8511,7 +8562,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8538,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "derive_more", "environmental", @@ -8556,7 +8607,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "parity-scale-codec", @@ -8572,7 +8623,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8590,7 +8641,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "derive_more", @@ -8627,7 +8678,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "derive_more", "finality-grandpa", @@ -8651,7 +8702,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8668,7 +8719,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "derive_more", @@ -8683,7 +8734,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "hash-db", "parity-scale-codec", @@ -8701,7 +8752,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-std", "async-trait", @@ -8721,7 +8772,7 @@ dependencies = [ "linked-hash-map", "linked_hash_set", "log", - "lru 0.6.6", + "lru 0.7.0", "parity-scale-codec", "parking_lot", "pin-project 1.0.8", @@ -8752,13 +8803,13 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", "libp2p", "log", - "lru 0.6.6", + "lru 0.7.0", "sc-network", "sp-runtime", "substrate-prometheus-endpoint", @@ -8768,7 +8819,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "bytes 1.0.1", "fnv", @@ -8796,7 +8847,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "libp2p", @@ -8809,7 +8860,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8818,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "hash-db", @@ -8849,7 +8900,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8874,7 +8925,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8891,7 +8942,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "directories", @@ -8955,7 +9006,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "parity-scale-codec", @@ -8969,7 +9020,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8991,7 +9042,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "chrono", "futures 0.3.17", @@ -9009,7 +9060,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9040,7 +9091,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9051,7 +9102,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "intervalier", @@ -9078,7 +9129,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "derive_more", "futures 0.3.17", @@ -9092,7 +9143,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9236,6 +9287,12 @@ dependencies = [ "serde", ] +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" + [[package]] name = "semver-parser" version = "0.7.0" @@ -9515,7 +9572,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "hash-db", "log", @@ -9532,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9544,7 +9601,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -9557,7 +9614,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "integer-sqrt", "num-traits", @@ -9572,7 +9629,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -9585,7 +9642,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "parity-scale-codec", @@ -9597,7 +9654,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "sp-api", @@ -9609,11 +9666,11 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "log", - "lru 0.6.6", + "lru 0.7.0", "parity-scale-codec", "parking_lot", "sp-api", @@ -9627,7 +9684,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "futures 0.3.17", @@ -9646,7 +9703,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "merlin", @@ -9669,10 +9726,11 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", + "serde", "sp-arithmetic", "sp-runtime", ] @@ -9680,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9692,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "base58", "bitflags", @@ -9740,7 +9798,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "blake2-rfc", "byteorder", @@ -9753,7 +9811,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro2", "quote", @@ -9764,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "kvdb", "parking_lot", @@ -9773,7 +9831,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro2", "quote", @@ -9783,7 +9841,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "environmental", "parity-scale-codec", @@ -9794,7 +9852,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "finality-grandpa", "log", @@ -9812,7 +9870,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9826,7 +9884,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "hash-db", @@ -9850,18 +9908,18 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "lazy_static", "sp-core", "sp-runtime", - "strum 0.20.0", + "strum", ] [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "derive_more", @@ -9878,7 +9936,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "zstd", ] @@ -9886,7 +9944,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -9901,7 +9959,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9912,7 +9970,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "sp-api", "sp-core", @@ -9922,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "backtrace", "lazy_static", @@ -9932,7 +9990,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "rustc-hash", "serde", @@ -9942,7 +10000,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "either", "hash256-std-hasher", @@ -9964,7 +10022,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9981,7 +10039,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9993,7 +10051,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "serde", "serde_json", @@ -10002,7 +10060,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -10016,7 +10074,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "scale-info", @@ -10027,7 +10085,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "hash-db", "log", @@ -10050,12 +10108,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10068,7 +10126,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "log", "sp-core", @@ -10081,7 +10139,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10097,7 +10155,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "sp-std", @@ -10109,7 +10167,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "sp-api", "sp-runtime", @@ -10118,7 +10176,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "log", @@ -10134,7 +10192,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "hash-db", "memory-db", @@ -10149,7 +10207,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10165,7 +10223,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10176,7 +10234,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10320,52 +10378,13 @@ dependencies = [ "syn", ] -[[package]] -name = "strum" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" -dependencies = [ - "strum_macros 0.20.1", -] - -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - [[package]] name = "strum" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" dependencies = [ - "strum_macros 0.22.0", -] - -[[package]] -name = "strum_macros" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", + "strum_macros", ] [[package]] @@ -10404,7 +10423,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "platforms", ] @@ -10412,7 +10431,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10434,7 +10453,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-std", "derive_more", @@ -10448,7 +10467,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "async-trait", "futures 0.3.17", @@ -10475,7 +10494,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10485,7 +10504,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10496,7 +10515,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10649,7 +10668,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "frame-system", "futures 0.3.17", @@ -11091,7 +11110,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#a9465729e2c5d2ef8d87ac404da27e5e10adde8a" +source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" dependencies = [ "jsonrpsee-ws-client", "log", @@ -11464,9 +11483,9 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ee05bba3d1d994652079893941a2ef9324d2b58a63c31b40678fb7eddd7a5a" +checksum = "ca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795d" dependencies = [ "downcast-rs", "libc", @@ -11488,15 +11507,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.80.2" +version = "0.81.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" +checksum = "98930446519f63d00a836efdc22f67766ceae8dbcc1571379f2bcabc6b2b9abc" [[package]] name = "wasmtime" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899b1e5261e3d3420860dacfb952871ace9d7ba9f953b314f67aaf9f8e2a4d89" +checksum = "311d06b0c49346d1fbf48a17052e844036b95a7753c1afb34e8c0af3f6b5bb13" dependencies = [ "anyhow", "backtrace", @@ -11507,7 +11526,7 @@ dependencies = [ "lazy_static", "libc", "log", - "object", + "object 0.27.1", "paste", "psm", "rayon", @@ -11526,18 +11545,17 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2493b81d7a9935f7af15e06beec806f256bc974a90a843685f3d61f2fc97058" +checksum = "36147930a4995137dc096e5b17a573b446799be2bbaea433e821ce6a80abe2c5" dependencies = [ "anyhow", "base64 0.13.0", "bincode", "directories-next", - "errno", "file-per-thread-logger", - "libc", "log", + "rsix", "serde", "sha2 0.9.8", "toml", @@ -11547,9 +11565,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99706bacdf5143f7f967d417f0437cce83a724cf4518cb1a3ff40e519d793021" +checksum = "ab3083a47e1ede38aac06a1d9831640d673f9aeda0b82a64e4ce002f3432e2e7" dependencies = [ "anyhow", "cranelift-codegen", @@ -11558,8 +11576,9 @@ dependencies = [ "cranelift-native", "cranelift-wasm", "gimli", + "log", "more-asserts", - "object", + "object 0.27.1", "target-lexicon", "thiserror", "wasmparser", @@ -11568,9 +11587,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac42cb562a2f98163857605f02581d719a410c5abe93606128c59a10e84de85b" +checksum = "1c2d194b655321053bc4111a1aa4ead552655c8a17d17264bc97766e70073510" dependencies = [ "anyhow", "cfg-if 1.0.0", @@ -11579,7 +11598,7 @@ dependencies = [ "indexmap", "log", "more-asserts", - "object", + "object 0.27.1", "serde", "target-lexicon", "thiserror", @@ -11589,20 +11608,20 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f46dd757225f29a419be415ea6fb8558df9b0194f07e3a6a9c99d0e14dd534" +checksum = "864ac8dfe4ce310ac59f16fdbd560c257389cb009ee5d030ac6e30523b023d11" dependencies = [ "addr2line", "anyhow", "bincode", "cfg-if 1.0.0", "gimli", - "libc", "log", "more-asserts", - "object", + "object 0.27.1", "region", + "rsix", "serde", "target-lexicon", "thiserror", @@ -11614,9 +11633,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122215a44923f395487048cb0a1d60b5b32c73aab15cf9364b798dbaff0996f" +checksum = "ab97da813a26b98c9abfd3b0c2d99e42f6b78b749c0646344e2e262d212d8c8b" dependencies = [ "anyhow", "backtrace", @@ -11631,6 +11650,7 @@ dependencies = [ "more-asserts", "rand 0.8.4", "region", + "rsix", "thiserror", "wasmtime-environ", "winapi 0.3.9", @@ -11638,9 +11658,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b01caf8a204ef634ebac99700e77ba716d3ebbb68a1abbc2ceb6b16dbec9e4" +checksum = "ff94409cc3557bfbbcce6b14520ccd6bd3727e965c0fe68d63ef2c185bf379c6" dependencies = [ "cranelift-entity", "serde", From ca8c968e03deabd1d003e4bf432caeda1b5bf32a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:24:26 +0100 Subject: [PATCH 59/71] Bump serde_json from 1.0.68 to 1.0.69 (#4236) Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.68 to 1.0.69. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.68...v1.0.69) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 6 +++--- node/test/service/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ad3a9f7747a..21ed2e4c6866 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9336,9 +9336,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" +checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8" dependencies = [ "itoa", "ryu", @@ -11157,7 +11157,7 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "rand 0.8.4", "static_assertions", ] diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index ff13e378b665..641251b30210 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -58,6 +58,6 @@ substrate-test-client = { git = "https://github.com/paritytech/substrate", branc [dev-dependencies] pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -serde_json = "1.0.67" +serde_json = "1.0.69" substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } tokio = { version = "1.13", features = ["macros"] } diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 38b4092c6fe4..e76cbee17311 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -57,7 +57,7 @@ frame-support-test = { git = "https://github.com/paritytech/substrate", branch = pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.67" +serde_json = "1.0.69" libsecp256k1 = "0.7.0" [features] diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 57657b817d0e..cf1936303d1d 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -96,7 +96,7 @@ tiny-keccak = "2.0.2" keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } separator = "0.4.1" -serde_json = "1.0.67" +serde_json = "1.0.69" [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 0217cc334428..e263e4f4e668 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -87,7 +87,7 @@ tiny-keccak = "2.0.2" keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } trie-db = "0.22.3" -serde_json = "1.0.67" +serde_json = "1.0.69" separator = "0.4.1" [build-dependencies] diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 8c303041bdf9..5feebb17728d 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -68,7 +68,7 @@ hex-literal = "0.3.3" tiny-keccak = "2.0.2" keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.67" +serde_json = "1.0.69" [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index 65a43599440d..f7e29f5cb70e 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -93,7 +93,7 @@ hex-literal = "0.3.3" tiny-keccak = "2.0.2" keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } -serde_json = "1.0.67" +serde_json = "1.0.69" [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } From 5085341d253cc2999181053f2c6827424bc0a0e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:28:19 +0100 Subject: [PATCH 60/71] Bump paste from 1.0.5 to 1.0.6 (#4244) Bumps [paste](https://github.com/dtolnay/paste) from 1.0.5 to 1.0.6. - [Release notes](https://github.com/dtolnay/paste/releases) - [Commits](https://github.com/dtolnay/paste/compare/1.0.5...1.0.6) --- updated-dependencies: - dependency-name: paste dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- utils/staking-miner/Cargo.toml | 2 +- xcm/xcm-simulator/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 21ed2e4c6866..ddc1150efab3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5693,9 +5693,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" +checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" [[package]] name = "pbkdf2" diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index eb6fb463a412..463fe135d4cd 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -13,7 +13,7 @@ structopt = "0.3.25" jsonrpsee-ws-client = { version = "0.3.1", default-features = false, features = ["tokio1"] } serde_json = "1.0" serde = "1.0.130" -paste = "1.0.5" +paste = "1.0.6" thiserror = "1.0.30" remote-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/xcm/xcm-simulator/Cargo.toml b/xcm/xcm-simulator/Cargo.toml index a583851d1573..3599e7427749 100644 --- a/xcm/xcm-simulator/Cargo.toml +++ b/xcm/xcm-simulator/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } -paste = "1.0.5" +paste = "1.0.6" frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } From 002936b73ba17d5894d124482c1d6752380ebfae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:34:54 +0100 Subject: [PATCH 61/71] Bump libc from 0.2.106 to 0.2.107 (#4235) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.106 to 0.2.107. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.106...0.2.107) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ddc1150efab3..2867a2aff4f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3297,9 +3297,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.106" +version = "0.2.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673" +checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 074862690642..daeae7e55923 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.106" +libc = "0.2.107" slotmap = "1.0" tracing = "0.1.29" pin-project = "1.0.8" From 56d4cde1bb7ec38b01e6cff70f5b387679c066a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:31:59 +0000 Subject: [PATCH 62/71] Bump dlmalloc from 0.2.2 to 0.2.3 (#4250) Bumps [dlmalloc](https://github.com/alexcrichton/dlmalloc-rs) from 0.2.2 to 0.2.3. - [Release notes](https://github.com/alexcrichton/dlmalloc-rs/releases) - [Commits](https://github.com/alexcrichton/dlmalloc-rs/compare/0.2.2...0.2.3) --- updated-dependencies: - dependency-name: dlmalloc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- parachain/test-parachains/adder/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2867a2aff4f5..fa43db02455f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1565,9 +1565,9 @@ dependencies = [ [[package]] name = "dlmalloc" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d075454d918d7358fcd2290dcb4c3ae7bc735388dd1b31ccee1426c1106d8a" +checksum = "a6fe28e0bf9357092740362502f5cc7955d8dc125ebda71dec72336c2e15c62e" dependencies = [ "libc", ] diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml index 93e0057ba5d3..9e8d42e7d12b 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -11,7 +11,7 @@ parachain = { package = "polkadot-parachain", path = "../../", default-features parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } tiny-keccak = { version = "2.0.2", features = ["keccak"] } -dlmalloc = { version = "0.2.2", features = [ "global" ] } +dlmalloc = { version = "0.2.3", features = [ "global" ] } # We need to make sure the global allocator is disabled until we have support of full substrate externalities sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, features = [ "disable_allocator" ] } From f26e523a1335cf2fdb4bae37dd89fa5220b3619e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Nov 2021 09:05:10 +0100 Subject: [PATCH 63/71] Bump mick-jaeger from 0.1.4 to 0.1.6 (#4249) Bumps [mick-jaeger](https://github.com/tomaka/mick-jaeger) from 0.1.4 to 0.1.6. - [Release notes](https://github.com/tomaka/mick-jaeger/releases) - [Commits](https://github.com/tomaka/mick-jaeger/commits) --- updated-dependencies: - dependency-name: mick-jaeger dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/jaeger/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa43db02455f..fc73d96dbd15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4179,9 +4179,9 @@ dependencies = [ [[package]] name = "mick-jaeger" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c023c3f16109e7f33aa451f773fd61070e265b4977d0b6e344a51049296dd7df" +checksum = "eaa77fad8461bb1e0d01be11299e24c6e544007715ed442bfec29f165dc487ae" dependencies = [ "futures 0.3.17", "rand 0.7.3", diff --git a/node/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 059043ed6318..110287f252a7 100644 --- a/node/jaeger/Cargo.toml +++ b/node/jaeger/Cargo.toml @@ -7,7 +7,7 @@ description = "Polkadot Jaeger primitives" [dependencies] async-std = "1.8.0" -mick-jaeger = "0.1.4" +mick-jaeger = "0.1.6" lazy_static = "1.4" parking_lot = "0.11.1" polkadot-primitives = { path = "../../primitives" } From 2d583c1ef29e510dae78f75cd8f223c064e8e7fc Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 10 Nov 2021 18:16:18 +0100 Subject: [PATCH 64/71] Update dependencies for latest substrate master (#4258) --- Cargo.lock | 352 ++++++++++++++++++++++++++--------------------------- 1 file changed, 176 insertions(+), 176 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fc73d96dbd15..e89fac19ef4d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,7 +467,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +495,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +515,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -1916,7 +1916,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", ] @@ -1934,7 +1934,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -1954,7 +1954,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "Inflector", "chrono", @@ -1980,7 +1980,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -1994,7 +1994,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,7 +2151,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "sp-api", @@ -2372,8 +2372,8 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "chrono", "frame-election-provider-support", @@ -4648,7 +4648,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4662,7 +4662,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -4678,7 +4678,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -4693,7 +4693,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4717,7 +4717,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4737,7 +4737,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "clap", "frame-election-provider-support", @@ -4759,7 +4759,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4774,7 +4774,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "beefy-primitives", "frame-support", @@ -4790,7 +4790,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4815,7 +4815,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4900,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4917,7 +4917,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4933,7 +4933,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4957,7 +4957,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4975,7 +4975,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4990,7 +4990,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5029,7 +5029,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5049,7 +5049,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5066,7 +5066,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5083,7 +5083,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5101,7 +5101,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5117,7 +5117,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5134,7 +5134,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5149,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5163,7 +5163,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5180,7 +5180,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5203,7 +5203,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5218,7 +5218,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5232,7 +5232,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5248,7 +5248,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5269,7 +5269,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5285,7 +5285,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5299,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5322,7 +5322,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5333,7 +5333,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "sp-arithmetic", @@ -5342,7 +5342,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5356,7 +5356,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5393,7 +5393,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-support", "frame-system", @@ -5410,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5427,7 +5427,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5455,7 +5455,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5471,7 +5471,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-benchmarking", "frame-support", @@ -7462,9 +7462,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5986aa8d62380092d2f50f8b1cdba9cb9b6731ffd4b25b51fd126b6c3e05b99c" +checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" dependencies = [ "cfg-if 1.0.0", "fnv", @@ -7902,7 +7902,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8190,8 +8190,8 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "sp-core", @@ -8202,7 +8202,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "derive_more", @@ -8229,7 +8229,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8252,7 +8252,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8268,7 +8268,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8296,7 +8296,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "chrono", "fdlimit", @@ -8334,7 +8334,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "fnv", "futures 0.3.17", @@ -8362,7 +8362,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "hash-db", "kvdb", @@ -8387,7 +8387,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "futures 0.3.17", @@ -8411,7 +8411,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "derive_more", @@ -8454,7 +8454,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "derive_more", "futures 0.3.17", @@ -8478,7 +8478,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8491,7 +8491,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "assert_matches", "async-trait", @@ -8525,7 +8525,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "futures 0.3.17", @@ -8551,7 +8551,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "sc-client-api", "sp-authorship", @@ -8562,7 +8562,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8589,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "derive_more", "environmental", @@ -8607,7 +8607,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "parity-scale-codec", @@ -8623,7 +8623,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8641,7 +8641,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "derive_more", @@ -8678,7 +8678,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "derive_more", "finality-grandpa", @@ -8702,7 +8702,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8719,7 +8719,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "derive_more", @@ -8734,7 +8734,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "hash-db", "parity-scale-codec", @@ -8752,7 +8752,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-std", "async-trait", @@ -8803,7 +8803,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8819,7 +8819,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "bytes 1.0.1", "fnv", @@ -8847,7 +8847,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "libp2p", @@ -8859,8 +8859,8 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "hash-db", @@ -8900,7 +8900,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8925,7 +8925,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8942,7 +8942,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "directories", @@ -9006,7 +9006,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "parity-scale-codec", @@ -9020,7 +9020,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -9042,7 +9042,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "chrono", "futures 0.3.17", @@ -9060,7 +9060,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9091,7 +9091,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9102,7 +9102,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "intervalier", @@ -9129,7 +9129,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "derive_more", "futures 0.3.17", @@ -9143,7 +9143,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9572,7 +9572,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "hash-db", "log", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9601,7 +9601,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9614,7 +9614,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "integer-sqrt", "num-traits", @@ -9629,7 +9629,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9642,7 +9642,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "parity-scale-codec", @@ -9654,7 +9654,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "sp-api", @@ -9666,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "log", @@ -9684,7 +9684,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "futures 0.3.17", @@ -9703,7 +9703,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "merlin", @@ -9726,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9750,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "base58", "bitflags", @@ -9798,7 +9798,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "blake2-rfc", "byteorder", @@ -9811,7 +9811,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro2", "quote", @@ -9822,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "kvdb", "parking_lot", @@ -9830,8 +9830,8 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro2", "quote", @@ -9841,7 +9841,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "environmental", "parity-scale-codec", @@ -9852,7 +9852,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "finality-grandpa", "log", @@ -9870,7 +9870,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9884,7 +9884,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "hash-db", @@ -9908,7 +9908,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "lazy_static", "sp-core", @@ -9919,7 +9919,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "derive_more", @@ -9935,8 +9935,8 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.1.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "zstd", ] @@ -9944,7 +9944,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9959,7 +9959,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9970,7 +9970,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "sp-api", "sp-core", @@ -9979,8 +9979,8 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "backtrace", "lazy_static", @@ -9990,7 +9990,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "rustc-hash", "serde", @@ -10000,7 +10000,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "either", "hash256-std-hasher", @@ -10022,7 +10022,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10039,7 +10039,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -10050,8 +10050,8 @@ dependencies = [ [[package]] name = "sp-serializer" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "serde", "serde_json", @@ -10060,7 +10060,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10074,7 +10074,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "scale-info", @@ -10085,7 +10085,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "hash-db", "log", @@ -10108,12 +10108,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10126,7 +10126,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "log", "sp-core", @@ -10139,7 +10139,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10155,7 +10155,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "sp-std", @@ -10167,7 +10167,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "sp-api", "sp-runtime", @@ -10176,7 +10176,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "log", @@ -10192,7 +10192,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "hash-db", "memory-db", @@ -10207,7 +10207,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10223,7 +10223,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10234,7 +10234,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10250,9 +10250,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "ss58-registry" -version = "1.0.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2413ecc7946ca99368862851dc1359f1477bc654ecfb135cf3efcb85ceca5f" +checksum = "c66cd4c4bb7ee41dc5b0c13d600574ae825d3a02e8f31326b17ac71558f2c836" dependencies = [ "Inflector", "proc-macro2", @@ -10423,7 +10423,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "platforms", ] @@ -10431,7 +10431,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10452,8 +10452,8 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-std", "derive_more", @@ -10467,7 +10467,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "async-trait", "futures 0.3.17", @@ -10494,7 +10494,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10504,7 +10504,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10515,7 +10515,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10668,7 +10668,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "frame-system", "futures 0.3.17", @@ -11110,7 +11110,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7adee13ddc48a9d715eb2f9caa37d99713fa0102" +source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" dependencies = [ "jsonrpsee-ws-client", "log", From 55872676fae63399eb111a60ba27cb735cbaead6 Mon Sep 17 00:00:00 2001 From: Alexander Popiak Date: Thu, 11 Nov 2021 09:42:35 +0100 Subject: [PATCH 65/71] Add more XCM tracing (#4211) * add more logging to currency adapter * add more logging to barriers * reformat currency adapter trace logs * add tracing logs for filter asset location * add tracing logs to fungibles adapter * add tracing to origin conversion * add tracing logs for xcm weight trading * fix compile errors * add more tracing logs to xcm executor * formatting and compile fixes * add some tracing logs to pallet-xcm * adjust log target in executor to debug * fix closure args --- xcm/pallet-xcm/src/lib.rs | 14 +++++- xcm/xcm-builder/src/barriers.rs | 25 +++++++++++ xcm/xcm-builder/src/currency_adapter.rs | 6 ++- xcm/xcm-builder/src/filter_asset_location.rs | 2 + xcm/xcm-builder/src/fungibles_adapter.rs | 30 +++++++++++++ xcm/xcm-builder/src/origin_conversion.rs | 47 +++++++++++++++++--- xcm/xcm-builder/src/weight.rs | 16 +++++++ xcm/xcm-executor/src/lib.rs | 39 ++++++++++++++-- 8 files changed, 168 insertions(+), 11 deletions(-) diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 393d015d6592..f9d3bc05e08c 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -1192,6 +1192,11 @@ pub mod pallet { /// Note that a particular destination to whom we would like to send a message is unknown /// and queue it for version discovery. fn note_unknown_version(dest: &MultiLocation) { + log::trace!( + target: "xcm::pallet_xcm::note_unknown_version", + "XCM version is unknown for destination: {:?}", + dest, + ); let versioned_dest = VersionedMultiLocation::from(dest.clone()); VersionDiscoveryQueue::::mutate(|q| { if let Some(index) = q.iter().position(|i| &i.0 == &versioned_dest) { @@ -1214,7 +1219,14 @@ pub mod pallet { Self::note_unknown_version(dest); SafeXcmVersion::::get() }) - .ok_or(()) + .ok_or_else(|| { + log::trace!( + target: "xcm::pallet_xcm::wrap_version", + "Could not determine a version to wrap XCM for destination: {:?}", + dest, + ); + () + }) .and_then(|v| xcm.into().into_version(v.min(XCM_VERSION))) } } diff --git a/xcm/xcm-builder/src/barriers.rs b/xcm/xcm-builder/src/barriers.rs index b1305666fa09..ef7333e6d140 100644 --- a/xcm/xcm-builder/src/barriers.rs +++ b/xcm/xcm-builder/src/barriers.rs @@ -35,6 +35,11 @@ impl ShouldExecute for TakeWeightCredit { max_weight: Weight, weight_credit: &mut Weight, ) -> Result<(), ()> { + log::trace!( + target: "xcm::barriers", + "TakeWeightCredit origin: {:?}, message: {:?}, max_weight: {:?}, weight_credit: {:?}", + _origin, _message, max_weight, weight_credit, + ); *weight_credit = weight_credit.checked_sub(max_weight).ok_or(())?; Ok(()) } @@ -53,6 +58,11 @@ impl> ShouldExecute for AllowTopLevelPaidExecutionFro max_weight: Weight, _weight_credit: &mut Weight, ) -> Result<(), ()> { + log::trace!( + target: "xcm::barriers", + "AllowTopLevelPaidExecutionFrom origin: {:?}, message: {:?}, max_weight: {:?}, weight_credit: {:?}", + origin, message, max_weight, _weight_credit, + ); ensure!(T::contains(origin), ()); let mut iter = message.0.iter_mut(); let i = iter.next().ok_or(())?; @@ -91,6 +101,11 @@ impl> ShouldExecute for AllowUnpaidExecutionFrom { _max_weight: Weight, _weight_credit: &mut Weight, ) -> Result<(), ()> { + log::trace!( + target: "xcm::barriers", + "AllowUnpaidExecutionFrom origin: {:?}, message: {:?}, max_weight: {:?}, weight_credit: {:?}", + origin, _message, _max_weight, _weight_credit, + ); ensure!(T::contains(origin), ()); Ok(()) } @@ -117,6 +132,11 @@ impl ShouldExecute for AllowKnownQueryResponses Result<(), ()> { + log::trace!( + target: "xcm::barriers", + "AllowKnownQueryResponses origin: {:?}, message: {:?}, max_weight: {:?}, weight_credit: {:?}", + origin, message, _max_weight, _weight_credit, + ); match message.0.first() { Some(QueryResponse { query_id, .. }) if ResponseHandler::expecting_response(origin, *query_id) => @@ -136,6 +156,11 @@ impl> ShouldExecute for AllowSubscriptionsFrom { _max_weight: Weight, _weight_credit: &mut Weight, ) -> Result<(), ()> { + log::trace!( + target: "xcm::barriers", + "AllowSubscriptionsFrom origin: {:?}, message: {:?}, max_weight: {:?}, weight_credit: {:?}", + origin, message, _max_weight, _weight_credit, + ); ensure!(T::contains(origin), ()); match (message.0.len(), message.0.first()) { (1, Some(SubscribeVersion { .. })) | (1, Some(UnsubscribeVersion)) => Ok(()), diff --git a/xcm/xcm-builder/src/currency_adapter.rs b/xcm/xcm-builder/src/currency_adapter.rs index 164720e24a9a..23da4fcfc8a4 100644 --- a/xcm/xcm-builder/src/currency_adapter.rs +++ b/xcm/xcm-builder/src/currency_adapter.rs @@ -97,6 +97,7 @@ impl< for CurrencyAdapter { fn can_check_in(_origin: &MultiLocation, what: &MultiAsset) -> Result { + log::trace!(target: "xcm::currency_adapter", "can_check_in origin: {:?}, what: {:?}", _origin, what); // Check we handle this asset. let amount: Currency::Balance = Matcher::matches_fungible(what).ok_or(Error::AssetNotFound)?; @@ -116,6 +117,7 @@ impl< } fn check_in(_origin: &MultiLocation, what: &MultiAsset) { + log::trace!(target: "xcm::currency_adapter", "check_in origin: {:?}, what: {:?}", _origin, what); if let Some(amount) = Matcher::matches_fungible(what) { if let Some(checked_account) = CheckedAccount::get() { let ok = Currency::withdraw( @@ -134,6 +136,7 @@ impl< } fn check_out(_dest: &MultiLocation, what: &MultiAsset) { + log::trace!(target: "xcm::currency_adapter", "check_out dest: {:?}, what: {:?}", _dest, what); if let Some(amount) = Matcher::matches_fungible(what) { if let Some(checked_account) = CheckedAccount::get() { Currency::deposit_creating(&checked_account, amount); @@ -142,7 +145,7 @@ impl< } fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { - log::trace!("xcm::currency_adapter deposit_asset {:?} {:?}", what, who); + log::trace!(target: "xcm::currency_adapter", "deposit_asset what: {:?}, who: {:?}", what, who); // Check we handle this asset. let amount: u128 = Matcher::matches_fungible(&what).ok_or(Error::AssetNotFound)?.saturated_into(); @@ -155,6 +158,7 @@ impl< } fn withdraw_asset(what: &MultiAsset, who: &MultiLocation) -> result::Result { + log::trace!(target: "xcm::currency_adapter", "withdraw_asset what: {:?}, who: {:?}", what, who); // Check we handle this asset. let amount: u128 = Matcher::matches_fungible(what).ok_or(Error::AssetNotFound)?.saturated_into(); diff --git a/xcm/xcm-builder/src/filter_asset_location.rs b/xcm/xcm-builder/src/filter_asset_location.rs index 9794c2f44f5b..a1e1763d0e40 100644 --- a/xcm/xcm-builder/src/filter_asset_location.rs +++ b/xcm/xcm-builder/src/filter_asset_location.rs @@ -25,6 +25,7 @@ use xcm_executor::traits::FilterAssetLocation; pub struct NativeAsset; impl FilterAssetLocation for NativeAsset { fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { + log::trace!(target: "xcm::filter_asset_location", "NativeAsset asset: {:?}, origin: {:?}", asset, origin); matches!(asset.id, Concrete(ref id) if id == origin) } } @@ -33,6 +34,7 @@ impl FilterAssetLocation for NativeAsset { pub struct Case(PhantomData); impl> FilterAssetLocation for Case { fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { + log::trace!(target: "xcm::filter_asset_location", "Case asset: {:?}, origin: {:?}", asset, origin); let (a, o) = T::get(); a.contains(asset) && &o == origin } diff --git a/xcm/xcm-builder/src/fungibles_adapter.rs b/xcm/xcm-builder/src/fungibles_adapter.rs index d63703368a8c..082e3b6955df 100644 --- a/xcm/xcm-builder/src/fungibles_adapter.rs +++ b/xcm/xcm-builder/src/fungibles_adapter.rs @@ -123,6 +123,11 @@ impl< from: &MultiLocation, to: &MultiLocation, ) -> result::Result { + log::trace!( + target: "xcm::fungibles_adapter", + "transfer_asset what: {:?}, from: {:?}, to: {:?}", + what, from, to + ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; let source = AccountIdConverter::convert_ref(from) @@ -161,6 +166,11 @@ impl< > { fn can_check_in(_origin: &MultiLocation, what: &MultiAsset) -> Result { + log::trace!( + target: "xcm::fungibles_adapter", + "can_check_in origin: {:?}, what: {:?}", + _origin, what + ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; if CheckAsset::contains(&asset_id) { @@ -174,6 +184,11 @@ impl< } fn check_in(_origin: &MultiLocation, what: &MultiAsset) { + log::trace!( + target: "xcm::fungibles_adapter", + "check_in origin: {:?}, what: {:?}", + _origin, what + ); if let Ok((asset_id, amount)) = Matcher::matches_fungibles(what) { if CheckAsset::contains(&asset_id) { let checking_account = CheckingAccount::get(); @@ -187,6 +202,11 @@ impl< } fn check_out(_dest: &MultiLocation, what: &MultiAsset) { + log::trace!( + target: "xcm::fungibles_adapter", + "check_out dest: {:?}, what: {:?}", + _dest, what + ); if let Ok((asset_id, amount)) = Matcher::matches_fungibles(what) { if CheckAsset::contains(&asset_id) { let checking_account = CheckingAccount::get(); @@ -197,6 +217,11 @@ impl< } fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { + log::trace!( + target: "xcm::fungibles_adapter", + "deposit_asset what: {:?}, who: {:?}", + what, who, + ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; let who = AccountIdConverter::convert_ref(who) @@ -209,6 +234,11 @@ impl< what: &MultiAsset, who: &MultiLocation, ) -> result::Result { + log::trace!( + target: "xcm::fungibles_adapter", + "withdraw_asset what: {:?}, who: {:?}", + what, who, + ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; let who = AccountIdConverter::convert_ref(who) diff --git a/xcm/xcm-builder/src/origin_conversion.rs b/xcm/xcm-builder/src/origin_conversion.rs index 9f33347e378d..b42c8fcff9ef 100644 --- a/xcm/xcm-builder/src/origin_conversion.rs +++ b/xcm/xcm-builder/src/origin_conversion.rs @@ -37,6 +37,11 @@ where kind: OriginKind, ) -> Result { let origin = origin.into(); + log::trace!( + target: "xcm::origin_conversion", + "SovereignSignedViaLocation origin: {:?}, kind: {:?}", + origin, kind, + ); if let OriginKind::SovereignAccount = kind { let location = LocationConverter::convert(origin)?; Ok(Origin::signed(location).into()) @@ -53,6 +58,7 @@ impl ConvertOrigin for ParentAsSuperuser { kind: OriginKind, ) -> Result { let origin = origin.into(); + log::trace!(target: "xcm::origin_conversion", "ParentAsSuperuser origin: {:?}, kind: {:?}", origin, kind); if kind == OriginKind::Superuser && origin.contains_parents_only(1) { Ok(Origin::root()) } else { @@ -69,7 +75,9 @@ impl, Origin: OriginTrait> ConvertOrigin origin: impl Into, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!(target: "xcm::origin_conversion", "ChildSystemParachainAsSuperuser origin: {:?}, kind: {:?}", origin, kind); + match (kind, origin) { ( OriginKind::Superuser, MultiLocation { parents: 0, interior: X1(Junction::Parachain(id)) }, @@ -87,7 +95,13 @@ impl, Origin: OriginTrait> ConvertOrigin origin: impl Into, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!( + target: "xcm::origin_conversion", + "SiblingSystemParachainAsSuperuser origin: {:?}, kind: {:?}", + origin, kind, + ); + match (kind, origin) { ( OriginKind::Superuser, MultiLocation { parents: 1, interior: X1(Junction::Parachain(id)) }, @@ -105,7 +119,9 @@ impl, Origin: From> ConvertOrigin, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!(target: "xcm::origin_conversion", "ChildParachainAsNative origin: {:?}, kind: {:?}", origin, kind); + match (kind, origin) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::Parachain(id)) }, @@ -125,7 +141,13 @@ impl, Origin: From> ConvertOrigin, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!( + target: "xcm::origin_conversion", + "SiblingParachainAsNative origin: {:?}, kind: {:?}", + origin, kind, + ); + match (kind, origin) { ( OriginKind::Native, MultiLocation { parents: 1, interior: X1(Junction::Parachain(id)) }, @@ -145,6 +167,7 @@ impl, Origin> ConvertOrigin kind: OriginKind, ) -> Result { let origin = origin.into(); + log::trace!(target: "xcm::origin_conversion", "RelayChainAsNative origin: {:?}, kind: {:?}", origin, kind); if kind == OriginKind::Native && origin.contains_parents_only(1) { Ok(RelayOrigin::get()) } else { @@ -163,7 +186,13 @@ where origin: impl Into, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!( + target: "xcm::origin_conversion", + "SignedAccountId32AsNative origin: {:?}, kind: {:?}", + origin, kind, + ); + match (kind, origin) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::AccountId32 { id, network }) }, @@ -184,7 +213,13 @@ where origin: impl Into, kind: OriginKind, ) -> Result { - match (kind, origin.into()) { + let origin = origin.into(); + log::trace!( + target: "xcm::origin_conversion", + "SignedAccountKey20AsNative origin: {:?}, kind: {:?}", + origin, kind, + ); + match (kind, origin) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::AccountKey20 { key, network }) }, diff --git a/xcm/xcm-builder/src/weight.rs b/xcm/xcm-builder/src/weight.rs index 92d26ebef157..755b6acf2844 100644 --- a/xcm/xcm-builder/src/weight.rs +++ b/xcm/xcm-builder/src/weight.rs @@ -32,6 +32,7 @@ impl, C: Decode + GetDispatchInfo, M: Get> WeightBounds for FixedWeightBounds { fn weight(message: &mut Xcm) -> Result { + log::trace!(target: "xcm::weight", "FixedWeightBounds message: {:?}", message); let mut instructions_left = M::get(); Self::weight_with_limit(message, &mut instructions_left) } @@ -73,6 +74,7 @@ where Instruction: xcm::GetWeight, { fn weight(message: &mut Xcm) -> Result { + log::trace!(target: "xcm::weight", "WeightInfoBounds message: {:?}", message); let mut instructions_left = M::get(); Self::weight_with_limit(message, &mut instructions_left) } @@ -144,6 +146,11 @@ impl, R: TakeRevenue> WeightTrader } fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result { + log::trace!( + target: "xcm::weight", + "FixedRateOfConcreteFungible::buy_weight weight: {:?}, payment: {:?}", + weight, payment, + ); let (id, units_per_second) = T::get(); let amount = units_per_second * (weight as u128) / (WEIGHT_PER_SECOND as u128); let unused = @@ -154,6 +161,7 @@ impl, R: TakeRevenue> WeightTrader } fn refund_weight(&mut self, weight: Weight) -> Option { + log::trace!(target: "xcm::weight", "FixedRateOfConcreteFungible::refund_weight weight: {:?}", weight); let (id, units_per_second) = T::get(); let weight = weight.min(self.0); let amount = units_per_second * (weight as u128) / (WEIGHT_PER_SECOND as u128); @@ -190,6 +198,11 @@ impl, R: TakeRevenue> WeightTrader for FixedRateOfFungib } fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result { + log::trace!( + target: "xcm::weight", + "FixedRateOfFungible::buy_weight weight: {:?}, payment: {:?}", + weight, payment, + ); let (id, units_per_second) = T::get(); let amount = units_per_second * (weight as u128) / (WEIGHT_PER_SECOND as u128); if amount == 0 { @@ -203,6 +216,7 @@ impl, R: TakeRevenue> WeightTrader for FixedRateOfFungib } fn refund_weight(&mut self, weight: Weight) -> Option { + log::trace!(target: "xcm::weight", "FixedRateOfFungible::refund_weight weight: {:?}", weight); let (id, units_per_second) = T::get(); let weight = weight.min(self.0); let amount = units_per_second * (weight as u128) / (WEIGHT_PER_SECOND as u128); @@ -250,6 +264,7 @@ impl< } fn buy_weight(&mut self, weight: Weight, payment: Assets) -> Result { + log::trace!(target: "xcm::weight", "UsingComponents::buy_weight weight: {:?}, payment: {:?}", weight, payment); let amount = WeightToFee::calc(&weight); let u128_amount: u128 = amount.try_into().map_err(|_| XcmError::Overflow)?; let required = (Concrete(AssetId::get()), u128_amount).into(); @@ -260,6 +275,7 @@ impl< } fn refund_weight(&mut self, weight: Weight) -> Option { + log::trace!(target: "xcm::weight", "UsingComponents::refund_weight weight: {:?}", weight); let weight = weight.min(self.0); let amount = WeightToFee::calc(&weight); self.0 -= weight; diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs index f252b2e7e3a3..bc6bb3246cd0 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -83,15 +83,44 @@ impl ExecuteXcm for XcmExecutor { ); let xcm_weight = match Config::Weigher::weight(&mut message) { Ok(x) => x, - Err(()) => return Outcome::Error(XcmError::WeightNotComputable), + Err(()) => { + log::debug!( + target: "xcm::execute_xcm_in_credit", + "Weight not computable! (origin: {:?}, message: {:?}, weight_limit: {:?}, weight_credit: {:?})", + origin, + message, + weight_limit, + weight_credit, + ); + return Outcome::Error(XcmError::WeightNotComputable) + }, }; if xcm_weight > weight_limit { + log::debug!( + target: "xcm::execute_xcm_in_credit", + "Weight limit reached! weight > weight_limit: {:?} > {:?}. (origin: {:?}, message: {:?}, weight_limit: {:?}, weight_credit: {:?})", + xcm_weight, + weight_limit, + origin, + message, + weight_limit, + weight_credit, + ); return Outcome::Error(XcmError::WeightLimitReached(xcm_weight)) } - if let Err(_) = + if let Err(e) = Config::Barrier::should_execute(&origin, &mut message, xcm_weight, &mut weight_credit) { + log::debug!( + target: "xcm::execute_xcm_in_credit", + "Barrier blocked execution! Error: {:?}. (origin: {:?}, message: {:?}, weight_limit: {:?}, weight_credit: {:?})", + e, + origin, + message, + weight_limit, + weight_credit, + ); return Outcome::Error(XcmError::Barrier) } @@ -116,6 +145,7 @@ impl ExecuteXcm for XcmExecutor { let mut weight_used = xcm_weight.saturating_sub(vm.total_surplus); if !vm.holding.is_empty() { + log::trace!(target: "xcm::execute_xcm_in_credit", "Trapping assets in holding register: {:?} (original_origin: {:?})", vm.holding, vm.original_origin); let trap_weight = Config::AssetTrap::drop_assets(&vm.original_origin, vm.holding); weight_used.saturating_accrue(trap_weight); }; @@ -124,7 +154,10 @@ impl ExecuteXcm for XcmExecutor { None => Outcome::Complete(weight_used), // TODO: #2841 #REALWEIGHT We should deduct the cost of any instructions following // the error which didn't end up being executed. - Some((_, e)) => Outcome::Incomplete(weight_used, e), + Some((_i, e)) => { + log::debug!(target: "xcm::execute_xcm_in_credit", "Execution errored at {:?}: {:?} (original_origin: {:?})", _i, e, vm.original_origin); + Outcome::Incomplete(weight_used, e) + }, } } } From 0a86997fba66211fe75d53146a67b58cb399901b Mon Sep 17 00:00:00 2001 From: David Date: Thu, 11 Nov 2021 14:00:58 +0100 Subject: [PATCH 66/71] =?UTF-8?q?Companion=20=E2=80=93=20Update=20jsonrpse?= =?UTF-8?q?e=20to=200.4.1=20(#4256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update staking-miner * fmt * lockfile * Point to substrate companion branch * Revert "Point to substrate companion branch" This reverts commit 3f8afc5d3137614776f54c7dac3c9077268c5fe5. * Revert 3f8afc5d3137614776f54c7dac3c9077268c5fe5 * Remove `params` macro in favour of `rpc_macro` from jsonrpsee * update Cargo.lock * remove unused import Co-authored-by: Andronik Ordian --- Cargo.lock | 452 ++++++++++++------------- utils/staking-miner/Cargo.toml | 2 +- utils/staking-miner/src/dry_run.rs | 7 +- utils/staking-miner/src/main.rs | 21 +- utils/staking-miner/src/monitor.rs | 18 +- utils/staking-miner/src/rpc_helpers.rs | 28 +- utils/staking-miner/src/signer.rs | 2 +- 7 files changed, 242 insertions(+), 288 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e89fac19ef4d..e36892ff13c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,9 +150,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a2f58b0bb10c380af2b26e57212856b8c9a59e0925b4c20f4a174a49734eaf7" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "asn1_der" @@ -418,19 +418,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "bae" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107f431ee3d8a8e45e6dd117adab769556ef463959e77bf6a4888d5fd500cf" -dependencies = [ - "heck", - "proc-macro-error 0.4.12", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "base-x" version = "0.2.8" @@ -457,9 +444,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "beef" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6736e2428df2ca2848d846c43e88745121a6654696e349ce0054a420815a7409" +checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" dependencies = [ "serde", ] @@ -467,7 +454,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "beefy-primitives", "fnv", @@ -495,7 +482,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -515,12 +502,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -1916,7 +1903,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", ] @@ -1934,7 +1921,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -1954,7 +1941,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "Inflector", "chrono", @@ -1980,7 +1967,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -1994,7 +1981,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -2022,7 +2009,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2038,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2050,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2062,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2106,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "log", @@ -2136,7 +2123,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,7 +2138,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2147,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2360,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "chrono", "frame-election-provider-support", @@ -3073,14 +3060,25 @@ dependencies = [ "slab", ] +[[package]] +name = "jsonrpsee" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373a33d987866ccfe1af4bc11b089dce941764313f9fd8b7cf13fcb51b72dc5" +dependencies = [ + "jsonrpsee-proc-macros", + "jsonrpsee-types", + "jsonrpsee-utils", + "jsonrpsee-ws-client", +] + [[package]] name = "jsonrpsee-proc-macros" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8edb341d35279b59c79d7fe9e060a51aec29d45af99cc7c72ea7caa350fa71a4" +checksum = "d802063f7a3c867456955f9d2f15eb3ee0edb5ec9ec2b5526324756759221c0f" dependencies = [ - "Inflector", - "bae", + "log", "proc-macro-crate 1.1.0", "proc-macro2", "quote", @@ -3089,10 +3087,11 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498" +checksum = "62f778cf245158fbd8f5d50823a2e9e4c708a40be164766bd35e9fb1d86715b2" dependencies = [ + "anyhow", "async-trait", "beef", "futures-channel", @@ -3101,32 +3100,43 @@ dependencies = [ "log", "serde", "serde_json", - "soketto 0.6.0", + "soketto 0.7.1", "thiserror", ] +[[package]] +name = "jsonrpsee-utils" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0109c4f972058f3b1925b73a17210aff7b63b65967264d0045d15ee88fe84f0c" +dependencies = [ + "arrayvec 0.7.2", + "beef", + "jsonrpsee-types", +] + [[package]] name = "jsonrpsee-ws-client" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30" +checksum = "559aa56fc402af206c00fc913dc2be1d9d788dcde045d14df141a535245d35ef" dependencies = [ + "arrayvec 0.7.2", "async-trait", "fnv", "futures 0.3.17", + "http", "jsonrpsee-types", "log", "pin-project 1.0.8", - "rustls", "rustls-native-certs", "serde", "serde_json", - "soketto 0.6.0", + "soketto 0.7.1", "thiserror", "tokio", "tokio-rustls", "tokio-util", - "url 2.2.0", ] [[package]] @@ -4354,7 +4364,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ "proc-macro-crate 1.1.0", - "proc-macro-error 1.0.4", + "proc-macro-error", "proc-macro2", "quote", "syn", @@ -4648,7 +4658,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4662,7 +4672,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -4678,7 +4688,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -4693,7 +4703,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4717,7 +4727,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4737,7 +4747,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "clap", "frame-election-provider-support", @@ -4759,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4774,7 +4784,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "beefy-primitives", "frame-support", @@ -4790,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4815,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4900,7 +4910,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4917,7 +4927,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4933,7 +4943,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4957,7 +4967,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4975,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4990,7 +5000,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5013,7 +5023,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5029,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5049,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5066,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5083,7 +5093,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5101,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5117,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5134,7 +5144,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5149,7 +5159,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5163,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5180,7 +5190,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5203,7 +5213,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5218,7 +5228,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5232,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5248,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5269,7 +5279,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5285,7 +5295,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5299,7 +5309,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5322,7 +5332,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5333,7 +5343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "sp-arithmetic", @@ -5342,7 +5352,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5356,7 +5366,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5374,7 +5384,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5393,7 +5403,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-support", "frame-system", @@ -5410,7 +5420,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5427,7 +5437,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5438,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5455,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5471,7 +5481,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5555,7 +5565,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.0", + "arrayvec 0.7.2", "bitvec 0.20.1", "byte-slice-cast", "impl-trait-for-tuples", @@ -7389,42 +7399,16 @@ dependencies = [ "toml", ] -[[package]] -name = "proc-macro-error" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7" -dependencies = [ - "proc-macro-error-attr 0.4.12", - "proc-macro2", - "quote", - "syn", - "version_check", -] - [[package]] name = "proc-macro-error" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "proc-macro-error-attr 1.0.4", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" -dependencies = [ + "proc-macro-error-attr", "proc-macro2", "quote", "syn", - "syn-mid", "version_check", ] @@ -7902,11 +7886,10 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "env_logger 0.9.0", - "jsonrpsee-proc-macros", - "jsonrpsee-ws-client", + "jsonrpsee", "log", "parity-scale-codec", "serde", @@ -8191,7 +8174,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "sp-core", @@ -8202,7 +8185,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "derive_more", @@ -8229,7 +8212,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8252,7 +8235,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8268,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8285,7 +8268,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8296,7 +8279,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "chrono", "fdlimit", @@ -8334,7 +8317,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "fnv", "futures 0.3.17", @@ -8362,7 +8345,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "hash-db", "kvdb", @@ -8387,7 +8370,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "futures 0.3.17", @@ -8411,7 +8394,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "derive_more", @@ -8454,7 +8437,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "derive_more", "futures 0.3.17", @@ -8478,7 +8461,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8491,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "assert_matches", "async-trait", @@ -8525,7 +8508,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "futures 0.3.17", @@ -8551,7 +8534,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "sc-client-api", "sp-authorship", @@ -8562,7 +8545,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8589,7 +8572,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "derive_more", "environmental", @@ -8607,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "parity-scale-codec", @@ -8623,7 +8606,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8641,7 +8624,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "derive_more", @@ -8678,7 +8661,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "derive_more", "finality-grandpa", @@ -8702,7 +8685,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8719,7 +8702,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "derive_more", @@ -8734,7 +8717,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "hash-db", "parity-scale-codec", @@ -8752,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-std", "async-trait", @@ -8803,7 +8786,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8819,7 +8802,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "bytes 1.0.1", "fnv", @@ -8847,7 +8830,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "libp2p", @@ -8860,7 +8843,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8869,7 +8852,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "hash-db", @@ -8900,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8925,7 +8908,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8942,7 +8925,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "directories", @@ -9006,7 +8989,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "parity-scale-codec", @@ -9020,7 +9003,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -9042,7 +9025,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "chrono", "futures 0.3.17", @@ -9060,7 +9043,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9091,7 +9074,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9102,7 +9085,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "intervalier", @@ -9129,7 +9112,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "derive_more", "futures 0.3.17", @@ -9143,7 +9126,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9556,9 +9539,9 @@ dependencies = [ [[package]] name = "soketto" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74e48087dbeed4833785c2f3352b59140095dc192dce966a3bfc155020a439f" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.0", "bytes 1.0.1", @@ -9572,7 +9555,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "hash-db", "log", @@ -9589,7 +9572,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9601,7 +9584,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -9614,7 +9597,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "integer-sqrt", "num-traits", @@ -9629,7 +9612,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -9642,7 +9625,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "parity-scale-codec", @@ -9654,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "sp-api", @@ -9666,7 +9649,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "log", @@ -9684,7 +9667,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "futures 0.3.17", @@ -9703,7 +9686,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "merlin", @@ -9726,7 +9709,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -9738,7 +9721,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9750,7 +9733,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "base58", "bitflags", @@ -9798,7 +9781,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "blake2-rfc", "byteorder", @@ -9811,7 +9794,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro2", "quote", @@ -9822,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "kvdb", "parking_lot", @@ -9831,7 +9814,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro2", "quote", @@ -9841,7 +9824,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "environmental", "parity-scale-codec", @@ -9852,7 +9835,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "finality-grandpa", "log", @@ -9870,7 +9853,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9884,7 +9867,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "hash-db", @@ -9908,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "lazy_static", "sp-core", @@ -9919,7 +9902,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "derive_more", @@ -9936,7 +9919,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "zstd", ] @@ -9944,7 +9927,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -9959,7 +9942,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9970,7 +9953,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "sp-api", "sp-core", @@ -9980,7 +9963,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "backtrace", "lazy_static", @@ -9990,7 +9973,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "rustc-hash", "serde", @@ -10000,7 +9983,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "either", "hash256-std-hasher", @@ -10022,7 +10005,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10039,7 +10022,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -10051,7 +10034,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "serde", "serde_json", @@ -10060,7 +10043,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10074,7 +10057,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "scale-info", @@ -10085,7 +10068,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "hash-db", "log", @@ -10108,12 +10091,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10126,7 +10109,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "log", "sp-core", @@ -10139,7 +10122,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10155,7 +10138,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "sp-std", @@ -10167,7 +10150,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "sp-api", "sp-runtime", @@ -10176,7 +10159,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "log", @@ -10192,7 +10175,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "hash-db", "memory-db", @@ -10207,7 +10190,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10223,7 +10206,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10234,7 +10217,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10276,7 +10259,7 @@ dependencies = [ "frame-election-provider-support", "frame-support", "frame-system", - "jsonrpsee-ws-client", + "jsonrpsee", "kusama-runtime", "log", "pallet-balances", @@ -10372,7 +10355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck", - "proc-macro-error 1.0.4", + "proc-macro-error", "proc-macro2", "quote", "syn", @@ -10423,7 +10406,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "platforms", ] @@ -10431,7 +10414,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10453,7 +10436,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-std", "derive_more", @@ -10467,7 +10450,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "async-trait", "futures 0.3.17", @@ -10494,7 +10477,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10504,7 +10487,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10515,7 +10498,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10550,17 +10533,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "syn-mid" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "synstructure" version = "0.12.4" @@ -10668,7 +10640,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ "frame-system", "futures 0.3.17", @@ -11110,9 +11082,9 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#3374a73c9824638b8270062b104906a714ea14f9" +source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" dependencies = [ - "jsonrpsee-ws-client", + "jsonrpsee", "log", "parity-scale-codec", "remote-externalities", diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 463fe135d4cd..c77ec2502615 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -10,7 +10,7 @@ tokio = { version = "1.13", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" structopt = "0.3.25" -jsonrpsee-ws-client = { version = "0.3.1", default-features = false, features = ["tokio1"] } +jsonrpsee = { version = "0.4.1", default-features = false, features = ["ws-client"] } serde_json = "1.0" serde = "1.0.130" paste = "1.0.6" diff --git a/utils/staking-miner/src/dry_run.rs b/utils/staking-miner/src/dry_run.rs index 9501adb96fab..81d17a21ae33 100644 --- a/utils/staking-miner/src/dry_run.rs +++ b/utils/staking-miner/src/dry_run.rs @@ -17,10 +17,11 @@ //! The dry-run command. use crate::{ - params, prelude::*, rpc_helpers::*, signer::Signer, DryRunConfig, Error, SharedConfig, WsClient, + prelude::*, rpc_helpers::*, signer::Signer, DryRunConfig, Error, SharedConfig, WsClient, }; use codec::Encode; use frame_support::traits::Currency; +use jsonrpsee::rpc_params; /// Forcefully create the snapshot. This can be used to compute the election at anytime. fn force_create_snapshot(ext: &mut Ext) -> Result<(), Error> { @@ -74,7 +75,7 @@ async fn print_info( let info = rpc::>( client, "payment_queryInfo", - params! { extrinsic }, + rpc_params! { extrinsic }, ) .await; log::info!( @@ -149,7 +150,7 @@ macro_rules! dry_run_cmd_for { ($runtime:ident) => { paste::paste! { }); log::info!(target: LOG_TARGET, "dispatch result is {:?}", dispatch_result); - let outcome = rpc_decode::(client, "system_dryRun", params!{ bytes }) + let outcome = rpc_decode::(client, "system_dryRun", rpc_params!{ bytes }) .await .map_err::, _>(Into::into)?; log::info!(target: LOG_TARGET, "dry-run outcome is {:?}", outcome); diff --git a/utils/staking-miner/src/main.rs b/utils/staking-miner/src/main.rs index 5692d991e23e..95319f9e24a4 100644 --- a/utils/staking-miner/src/main.rs +++ b/utils/staking-miner/src/main.rs @@ -40,10 +40,10 @@ pub(crate) use signer::get_account_info; use frame_election_provider_support::NposSolver; use frame_support::traits::Get; -use jsonrpsee_ws_client::{WsClient, WsClientBuilder}; +use jsonrpsee::ws_client::{WsClient, WsClientBuilder}; use remote_externalities::{Builder, Mode, OnlineConfig}; use sp_npos_elections::ExtendedBalance; -use sp_runtime::traits::Block as BlockT; +use sp_runtime::{traits::Block as BlockT, DeserializeOwned}; use structopt::StructOpt; pub(crate) enum AnyRuntime { @@ -225,7 +225,7 @@ macro_rules! any_runtime_unit { #[derive(frame_support::DebugNoBound, thiserror::Error)] enum Error { Io(#[from] std::io::Error), - JsonRpsee(#[from] jsonrpsee_ws_client::types::Error), + JsonRpsee(#[from] jsonrpsee::types::Error), RpcHelperError(#[from] rpc_helpers::RpcHelperError), Codec(#[from] codec::Error), Crypto(sp_core::crypto::SecretStringError), @@ -364,7 +364,7 @@ struct Opt { /// Build the Ext at hash with all the data of `ElectionProviderMultiPhase` and any additional /// pallets. -async fn create_election_ext( +async fn create_election_ext( uri: String, at: Option, additional: Vec, @@ -493,13 +493,10 @@ pub(crate) async fn check_versions( client: &WsClient, ) -> Result<(), Error> { let linked_version = T::Version::get(); - let on_chain_version = rpc_helpers::rpc::( - client, - "state_getRuntimeVersion", - params! {}, - ) - .await - .expect("runtime version RPC should always work; qed"); + let on_chain_version = + rpc_helpers::rpc::(client, "state_getRuntimeVersion", None) + .await + .expect("runtime version RPC should always work; qed"); log::debug!(target: LOG_TARGET, "linked version {:?}", linked_version); log::debug!(target: LOG_TARGET, "on-chain version {:?}", on_chain_version); @@ -543,7 +540,7 @@ async fn main() { } }; - let chain = rpc_helpers::rpc::(&client, "system_chain", params! {}) + let chain = rpc_helpers::rpc::(&client, "system_chain", None) .await .expect("system_chain infallible; qed."); match chain.to_lowercase().as_str() { diff --git a/utils/staking-miner/src/monitor.rs b/utils/staking-miner/src/monitor.rs index e603706e2fcb..19259098df53 100644 --- a/utils/staking-miner/src/monitor.rs +++ b/utils/staking-miner/src/monitor.rs @@ -16,14 +16,14 @@ //! The monitor command. -use crate::{ - params, prelude::*, rpc_helpers::*, signer::Signer, Error, MonitorConfig, SharedConfig, -}; +use crate::{prelude::*, rpc_helpers::*, signer::Signer, Error, MonitorConfig, SharedConfig}; use codec::Encode; -use jsonrpsee_ws_client::{ +use jsonrpsee::{ + rpc_params, types::{traits::SubscriptionClient, Subscription}, - WsClient, + ws_client::WsClient, }; + use sc_transaction_pool_api::TransactionStatus; use sp_core::storage::StorageKey; @@ -33,7 +33,7 @@ async fn ensure_signed_phase( at: B::Hash, ) -> Result<(), Error> { let key = StorageKey(EPM::CurrentPhase::::hashed_key().to_vec()); - let phase = get_storage::>(client, params! {key, at}) + let phase = get_storage::>(client, rpc_params! {key, at}) .await .map_err::, _>(Into::into)? .unwrap_or_default(); @@ -82,7 +82,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { loop { log::info!(target: LOG_TARGET, "subscribing to {:?} / {:?}", sub, unsub); let mut subscription: Subscription
= client - .subscribe(&sub, params! {}, &unsub) + .subscribe(&sub, None, &unsub) .await .unwrap(); @@ -134,7 +134,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { let mut tx_subscription: Subscription< TransactionStatus<::Hash, ::Hash> > = match client - .subscribe(&"author_submitAndWatchExtrinsic", params! { bytes }, "author_unwatchExtrinsic") + .subscribe(&"author_submitAndWatchExtrinsic", rpc_params! { bytes }, "author_unwatchExtrinsic") .await { Ok(sub) => sub, @@ -159,7 +159,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { log::info!(target: LOG_TARGET, "included at {:?}", hash); let key = StorageKey(frame_support::storage::storage_prefix(b"System",b"Events").to_vec()); let events = get_storage::::Hash>>, - >(client, params!{ key, hash }).await?.unwrap_or_default(); + >(client, rpc_params!{ key, hash }).await?.unwrap_or_default(); log::info!(target: LOG_TARGET, "events at inclusion {:?}", events); } TransactionStatus::Retracted(hash) => { diff --git a/utils/staking-miner/src/rpc_helpers.rs b/utils/staking-miner/src/rpc_helpers.rs index 8cb7330bf0de..1277564ebd93 100644 --- a/utils/staking-miner/src/rpc_helpers.rs +++ b/utils/staking-miner/src/rpc_helpers.rs @@ -17,12 +17,12 @@ //! Helper method for RPC. use super::*; -use jsonrpsee_ws_client::types::traits::Client; -pub(crate) use jsonrpsee_ws_client::types::v2::params::JsonRpcParams; +use jsonrpsee::types::traits::Client; +pub(crate) use jsonrpsee::types::v2::ParamsSer; #[derive(frame_support::DebugNoBound, thiserror::Error)] pub(crate) enum RpcHelperError { - JsonRpsee(#[from] jsonrpsee_ws_client::types::Error), + JsonRpsee(#[from] jsonrpsee::types::Error), Codec(#[from] codec::Error), } @@ -32,27 +32,11 @@ impl std::fmt::Display for RpcHelperError { } } -#[macro_export] -macro_rules! params { - ($($param:expr),*) => { - { - let mut __params = vec![]; - $( - __params.push(serde_json::to_value($param).expect("json serialization infallible; qed.")); - )* - $crate::rpc_helpers::JsonRpcParams::Array(__params) - } - }; - () => { - $crate::rpc::JsonRpcParams::NoParams, - } -} - /// Make the rpc request, returning `Ret`. pub(crate) async fn rpc<'a, Ret: serde::de::DeserializeOwned>( client: &WsClient, method: &'a str, - params: JsonRpcParams<'a>, + params: Option>, ) -> Result { client .request::(method, params) @@ -65,7 +49,7 @@ pub(crate) async fn rpc<'a, Ret: serde::de::DeserializeOwned>( pub(crate) async fn rpc_decode<'a, Dec: codec::Decode>( client: &WsClient, method: &'a str, - params: JsonRpcParams<'a>, + params: Option>, ) -> Result { let bytes = rpc::(client, method, params) .await @@ -76,7 +60,7 @@ pub(crate) async fn rpc_decode<'a, Dec: codec::Decode>( /// Get the storage item. pub(crate) async fn get_storage<'a, T: codec::Decode>( client: &WsClient, - params: JsonRpcParams<'a>, + params: Option>, ) -> Result, RpcHelperError> { let maybe_bytes = rpc::>(client, "state_getStorage", params) .await diff --git a/utils/staking-miner/src/signer.rs b/utils/staking-miner/src/signer.rs index bc996ef351de..e976cb8f24aa 100644 --- a/utils/staking-miner/src/signer.rs +++ b/utils/staking-miner/src/signer.rs @@ -41,7 +41,7 @@ pub(crate) async fn get_account_info( ) -> Result>, Error> { rpc_helpers::get_storage::>( client, - crate::params! { + jsonrpsee::rpc_params! { sp_core::storage::StorageKey(>::hashed_key_for(&who)), maybe_at }, From 83e5955b83870c0b107af37934d9f8a4ecf2c63d Mon Sep 17 00:00:00 2001 From: Denis Pisarev Date: Thu, 11 Nov 2021 17:38:05 +0100 Subject: [PATCH 67/71] CI: chore (#3957) * CI: chore * CI: lsof and jq are installed * CI: generate docs with deps * CI: remove check width, fmt checks it * CI: simplify rules * CI: make CI image variable * CI: more chore * rm check_line_width.sh * CI: fix spellcheck; fix check-transaction * CI: return installing jq * lint: remove dupes --- .gitlab-ci.yml | 79 +++++++++++------------------- CONTRIBUTING.md | 22 +++------ README.md | 8 +-- doc/shell-completion.md | 9 ++-- doc/testing.md | 67 +++++++++++++------------ scripts/gitlab/check_line_width.sh | 51 ------------------- scripts/gitlab/lingua.dic | 27 +++++----- 7 files changed, 94 insertions(+), 169 deletions(-) delete mode 100755 scripts/gitlab/check_line_width.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 92f1fbdce2fb..0c810359b7aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ # setting DEPLOY_TAG will only deploy the tagged image # # please do not add new jobs without "rules:" and "*-env". There are &rules-test for everything, -# &rules-pr-only preset. And "kubernetes-env" with "docker-env" to set a runner +# &rules-test-and-rococo preset. And "kubernetes-env" with "docker-env" to set a runner # which executes the job. stages: @@ -15,8 +15,6 @@ stages: - publish - deploy -image: paritytech/ci-linux:production - workflow: rules: - if: $CI_COMMIT_TAG @@ -26,6 +24,7 @@ variables: GIT_STRATEGY: fetch GIT_DEPTH: 100 CI_SERVER_NAME: "GitLab CI" + CI_IMAGE: "paritytech/ci-linux:production" DOCKER_OS: "debian:stretch" ARCH: "x86_64" VAULT_SERVER_URL: "https://vault.parity-mgmt-vault.parity.io" @@ -57,6 +56,7 @@ default: - kubernetes-parity-build .docker-env: &docker-env + image: "${CI_IMAGE}" retry: max: 2 when: @@ -78,16 +78,16 @@ default: rules: - if: $CI_COMMIT_REF_NAME == "rococo-v1" when: never - - when: always + - if: $CI_PIPELINE_SOURCE == "schedule" + - if: $CI_COMMIT_REF_NAME == "master" + - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs -.pr-only: &rules-pr-only - # these jobs run only on PRs +.rules-test-and-rococo: &rules-test-and-rococo rules: - - if: $CI_COMMIT_REF_NAME == "rococo-v1" - when: never - if: $CI_PIPELINE_SOURCE == "schedule" - when: never + - if: $CI_COMMIT_REF_NAME == "master" - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs + - if: $CI_COMMIT_REF_NAME == "rococo-v1" #### Vault secrets .vault-secrets: &vault-secrets @@ -144,7 +144,7 @@ check-runtime: stage: test image: paritytech/tools:latest <<: *kubernetes-env - <<: *rules-pr-only + <<: *rules-test <<: *vault-secrets variables: GITLAB_API: "https://gitlab.parity.io/api/v4" @@ -153,19 +153,10 @@ check-runtime: - ./scripts/gitlab/check_runtime.sh allow_failure: true -check-line-width: - stage: test - image: paritytech/tools:latest - <<: *kubernetes-env - <<: *rules-pr-only - script: - - ./scripts/gitlab/check_line_width.sh - allow_failure: true - cargo-fmt: stage: test - <<: *kubernetes-env - <<: *rules-pr-only + <<: *docker-env + <<: *rules-test script: - cargo +nightly fmt --all -- --check allow_failure: true @@ -239,11 +230,12 @@ check-no-default-features: spellcheck: stage: test <<: *docker-env - <<: *rules-pr-only + <<: *rules-test script: - cargo spellcheck --version # compare with the commit parent to the PR, given it's from a default branch - git fetch origin +${CI_DEFAULT_BRANCH}:${CI_DEFAULT_BRANCH} + - echo "___Spellcheck is going to check your diff___" - cargo spellcheck list-files -vvv $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH} -- :^bridges)) - time cargo spellcheck check -vvv --cfg=scripts/gitlab/spellcheck.toml --checkers hunspell --code 1 $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH} -- :^bridges)) @@ -254,11 +246,7 @@ build-adder-collator: <<: *collect-artifacts <<: *docker-env <<: *compiler-info - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" + <<: *rules-test-and-rococo script: - time cargo build --release --verbose -p test-parachain-adder-collator - sccache -s @@ -294,18 +282,19 @@ check-dependent-cumulus: DEPENDENT_REPO: cumulus check-transaction-versions: - # image must be ubuntu:20.04 based to match the linkers, this image has npm installed - image: paritytech/contracts-ci-linux:production stage: build <<: *rules-test <<: *docker-env <<: *vault-secrets + image: node:15 needs: - job: test-build-linux-stable artifacts: true before_script: - apt-get -y update; apt-get -y install jq lsof - npm install --ignore-scripts -g @polkadot/metadata-cmp + # Set git config + - git config remote.origin.url "https://github.com/paritytech/polkadot.git" - git fetch origin release script: - scripts/gitlab/check_extrinsics_ordering.sh @@ -334,7 +323,7 @@ build-rustdoc: - ./crate-docs/ script: # FIXME: it fails with `RUSTDOCFLAGS="-Dwarnings"` and `--all-features` - - time cargo doc --no-deps --workspace --verbose + - time cargo doc --workspace --verbose - rm -f ./target/doc/.lock - mv ./target/doc ./crate-docs # FIXME: remove me after CI image gets nonroot @@ -416,16 +405,12 @@ publish-adder-collator-image: # service image for Simnet stage: build <<: *build-push-image + <<: *rules-test-and-rococo variables: <<: *image-variables # scripts/dockerfiles/collator_injected.Dockerfile DOCKERFILE: dockerfiles/collator_injected.Dockerfile IMAGE_NAME: docker.io/paritypr/colander - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" needs: - job: build-adder-collator artifacts: true @@ -439,22 +424,20 @@ publish-adder-collator-image: # this artifact is used in simnet-tests job dotenv: ./artifacts/collator.env -.update_weights: &update-weights +update_polkadot_weights: &update-weights stage: build when: manual - tags: - - weights variables: RUNTIME: polkadot artifacts: paths: - ${RUNTIME}_weights_${CI_COMMIT_SHORT_SHA}.patch - script: | - ./scripts/run_benches_for_runtime.sh $RUNTIME - git diff -P > ${RUNTIME}_weights_${CI_COMMIT_SHORT_SHA}.patch - -update_polkadot_weights: - <<: *update-weights + script: + - ./scripts/run_benches_for_runtime.sh $RUNTIME + - git diff -P > ${RUNTIME}_weights_${CI_COMMIT_SHORT_SHA}.patch + # uses the "shell" executors + tags: + - weights update_kusama_weights: <<: *update-weights @@ -547,6 +530,7 @@ publish-rustdoc: - git commit -m "Updated docs for ${CI_COMMIT_REF_NAME}" || echo "___Nothing to commit___" - git push origin gh-pages --force + - echo "___Rustdoc was successfully published to https://paritytech.github.io/polkadot/___" after_script: - rm -rf .git/ ./* @@ -555,7 +539,6 @@ publish-rustdoc: deploy-polkasync-kusama: stage: deploy rules: - # former .rules-build - if: $CI_COMMIT_REF_NAME == "rococo-v1" when: never - if: $CI_PIPELINE_SOURCE == "schedule" @@ -570,13 +553,9 @@ simnet-tests: stage: deploy image: "${SIMNET_IMAGE}" <<: *kubernetes-env + <<: *rules-test-and-rococo variables: GH_DIR: "https://github.com/paritytech/polkadot/tree/master/simnet_tests" - rules: - - if: $CI_PIPELINE_SOURCE == "schedule" - - if: $CI_COMMIT_REF_NAME == "master" - - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs - - if: $CI_COMMIT_REF_NAME == "rococo-v1" needs: - job: publish-polkadot-image - job: publish-adder-collator-image diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 47ae56b90caa..47c14240e7cd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,5 @@ # Contributing -`Substrate` projects is a **OPENISH Open Source Project** - -## What? - -Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit. A project is more like an open wiki than a standard guarded open source project. - ## Rules There are a few basic ground-rules for contributors (including the maintainer(s) of the project): @@ -16,25 +10,25 @@ There are a few basic ground-rules for contributors (including the maintainer(s) - A pull-request _must not be merged until CI_ has finished successfully. - Contributors should adhere to the [house coding style](https://github.com/paritytech/polkadot/wiki/Style-Guide). -#### Merging pull requests once CI is successful: +### Merging pull requests once CI is successful -- A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged [`insubstantial`](https://github.com/paritytech/substrate/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial) and merged by its author. +- A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged [`insubstantial`](https://github.com/paritytech/polkadot/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial) and merged by its author. - A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well. -- All other PRs should sit for 48 hours with the [`pleasereview`](https://github.com/paritytech/substrate/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview) tag in order to garner feedback. +- All other PRs should sit for 48 hours with the [`pleasereview`](https://github.com/paritytech/polkadot/pulls?q=is:pr+is:open+label:A0-pleasereview) tag in order to garner feedback. - No PR should be merged until all reviews' comments are addressed. -#### Reviewing pull requests: +### Reviewing pull requests When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in: -- Buggy behaviour. +- Buggy behavior. - Undue maintenance burden. - Breaking with house coding style. -- Pessimisation (i.e. reduction of speed as measured in the projects benchmarks). +- Pessimization (i.e. reduction of speed as measured in the projects benchmarks). - Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on). - Uselessness (i.e. it does not strictly add a feature or fix a known issue). -#### Reviews may not be used as an effective veto for a PR because: +### Reviews may not be used as an effective veto for a PR because - There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix. - It does not fit well with some other contributors' longer-term vision for the project. @@ -49,4 +43,4 @@ This is an experiment and feedback is welcome! This document may also be subject ## Heritage -These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: https://github.com/Level/community/blob/master/CONTRIBUTING.md +These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: diff --git a/README.md b/README.md index 5ea7ac433562..34e3a7bd75a6 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ the command-line. Currently supports Debian 10 (Buster) and Ubuntu 20.04 (Focal), and derivatives. Run the following commands as the `root` user. -``` +```bash # Import the security@parity.io GPG key gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798 gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg @@ -52,7 +52,7 @@ apt install polkadot Currently supports Fedora 32 and CentOS 8, and derivatives. -``` +```bash # Install dnf-plugins-core (This might already be installed) dnf install dnf-plugins-core # Add the repository and enable it @@ -67,7 +67,7 @@ dnf install polkadot ### Install via Cargo -Make sure you have the support software installed from the **Build from Source** section +Make sure you have the support software installed from the **Build from Source** section below this section. If you want to install Polkadot in your PATH, you can do so with with: @@ -244,9 +244,11 @@ polkadot --chain=polkadot-local --bob -d /tmp/bob --port 30334 --bootnodes '/ip4 Ensure you replace `ALICE_BOOTNODE_ID_HERE` with the node ID from the output of the first terminal. ### Using Docker + [Using Docker](doc/docker.md) ### Shell Completion + [Shell Completion](doc/shell-completion.md) ## Contributing diff --git a/doc/shell-completion.md b/doc/shell-completion.md index 986609392e34..9c53cf43a10f 100644 --- a/doc/shell-completion.md +++ b/doc/shell-completion.md @@ -1,7 +1,6 @@ +# Shell completion -## Shell completion - -The Polkadot cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system. +The Polkadot CLI command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system. Assuming you built a release version using `cargo build --release` and use `bash` run the following: @@ -19,7 +18,7 @@ You can find completion scripts for: To make this change persistent, you can proceed as follow: -### First install +## First install ```bash COMPL_DIR=$HOME/.completion @@ -29,7 +28,7 @@ echo "source $COMPL_DIR/polkadot.bash" >> $HOME/.bash_profile source $HOME/.bash_profile ``` -### Update +## Update When you build a new version of Polkadot, the following will ensure you auto-completion script matches the current binary: diff --git a/doc/testing.md b/doc/testing.md index 6709d1b9bdeb..363085ab4694 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -183,51 +183,50 @@ The implementation is yet to be completed, see the [implementation PR](https://g struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { - fn generate<'a, Spawner, RuntimeClient>( - &self, - connector: OverseerConnector, - args: OverseerGenArgs<'a, Spawner, RuntimeClient>, - ) -> Result<(Overseer>, OverseerHandler), Error> - where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, - { - let spawner = args.spawner.clone(); - let leaves = args.leaves.clone(); - let runtime_client = args.runtime_client.clone(); - let registry = args.registry.clone(); - let candidate_validation_config = args.candidate_validation_config.clone(); - // modify the subsystem(s) as needed: - let all_subsystems = create_default_subsystems(args)?. + fn generate<'a, Spawner, RuntimeClient>( + &self, + args: OverseerGenArgs<'a, Spawner, RuntimeClient>, + ) -> Result<(Overseer>, OverseerHandler), Error> + where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, + { + let spawner = args.spawner.clone(); + let leaves = args.leaves.clone(); + let runtime_client = args.runtime_client.clone(); + let registry = args.registry.clone(); + let candidate_validation_config = args.candidate_validation_config.clone(); + // modify the subsystem(s) as needed: + let all_subsystems = create_default_subsystems(args)?. // or spawn an entirely new set replace_candidate_validation( - // create the filtered subsystem - FilteredSubsystem::new( - CandidateValidationSubsystem::with_config( - candidate_validation_config, - Metrics::register(registry)?, - ), + // create the filtered subsystem + FilteredSubsystem::new( + CandidateValidationSubsystem::with_config( + candidate_validation_config, + Metrics::register(registry)?, + ), // an implementation of - Skippy::default(), - ), - ); + Skippy::default(), + ), + ); - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner, connector) - .map_err(|e| e.into()) + Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) + .map_err(|e| e.into()) // A builder pattern will simplify this further // WIP https://github.com/paritytech/polkadot/pull/2962 - } + } } fn main() -> eyre::Result<()> { - color_eyre::install()?; - let cli = Cli::from_args(); - assert_matches::assert_matches!(cli.subcommand, None); - polkadot_cli::run_node(cli, BehaveMaleficient)?; - Ok(()) + color_eyre::install()?; + let cli = Cli::from_args(); + assert_matches::assert_matches!(cli.subcommand, None); + polkadot_cli::run_node(cli, BehaveMaleficient)?; + Ok(()) } ``` diff --git a/scripts/gitlab/check_line_width.sh b/scripts/gitlab/check_line_width.sh deleted file mode 100755 index b147488d92db..000000000000 --- a/scripts/gitlab/check_line_width.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -# -# check if line width of rust source files is not beyond x characters -# -set -e - -BASE_BRANCH="origin/master" -LINE_WIDTH="121" -GOOD_LINE_WIDTH="101" - -git diff --name-only "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- \*.rs :^bridges | ( while read -r file -do - if [ ! -f "${file}" ]; - then - echo "Skipping removed file." - elif git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" | grep -q "^+.\{${LINE_WIDTH}\}" - then - if [ -z "${FAIL}" ] - then - echo "| warning!" - echo "| Lines should not be longer than 120 characters." - echo "| " - echo "| see more https://wiki.parity.io/Substrate-Style-Guide" - echo "|" - FAIL="true" - fi - echo "| file: ${file}" - git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" \ - | grep -n "^+.\{${LINE_WIDTH}\}" - echo "|" - else - if git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" | grep -q "^+.\{${GOOD_LINE_WIDTH}\}" - then - if [ -z "${FAIL}" ] - then - echo "| warning!" - echo "| Lines should be longer than 100 characters only in exceptional circumstances!" - echo "| " - echo "| see more https://wiki.parity.io/Substrate-Style-Guide" - echo "|" - fi - echo "| file: ${file}" - git diff "${BASE_BRANCH}...${CI_COMMIT_SHA}" -- "${file}" \ - | grep -n "^+.\{${LINE_WIDTH}\}" - echo "|" - fi - fi -done - -test -z "${FAIL}" -) diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 3d65a40c8187..9c5a29d8ba67 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -1,4 +1,5 @@ 150 +A&V accessor/MS AccountId activations @@ -15,7 +16,6 @@ assignee/SM async asynchrony autogenerated -A&V backable backend/MS benchmark/DSMG @@ -47,6 +47,7 @@ customizable/B DDoS Debian/M decodable/MS +decrement deduplicated deinitializing dequeue/SD @@ -56,6 +57,7 @@ DHT disincentivize/D dispatchable/SM DLEQ +DM DMP/SM DMQ DoS @@ -78,6 +80,7 @@ fedora/M finalize/B FRAME/MS FSMs +functor fungibility gameable getter/MS @@ -156,21 +159,24 @@ mutex natively NFA NFT/SM +no_std nonces NPoS -no_std NTB offboard/DMSG onboard/DMSG oneshot/MS onwards OOM/S +OPENISH others' ourself overseer/MS ownerless +p2p parablock/MS parachain/MS +ParaId parameterization parameterize/D parathread/MS @@ -178,6 +184,7 @@ passthrough PDK peerset/MS permission/D +pessimization phragmen picosecond/SM PoA/MS @@ -201,7 +208,6 @@ proxy/G proxying PRs PVF/S -p2p README/MS redhat/M register/CD @@ -217,10 +223,9 @@ rpc RPC/MS runtime/MS rustc/MS -sybil SAFT -scalable scalability +scalable Schnorr schnorrkel SDF @@ -230,8 +235,8 @@ shareable Simnet/MS spawn/SR spawner -SS58 sr25519 +SS58 SSL startup/MS stateful @@ -243,18 +248,19 @@ subsystem/MS subsystems' supermajority SURI +sybil systemwide taskmanager/MS TCP teleport/D teleport/RG -teleports teleportation/SM teleporter/SM teleporters +teleports testnet/MS -timestamp/MS timeframe +timestamp/MS tradeoff transitionary trie/MS @@ -309,7 +315,4 @@ XCM/S XCMP/M yeet yml -decrement -DM -ParaId -functor +zsh From 9e8b26fe41771ee35a4b63e488e0a9f785fa61bf Mon Sep 17 00:00:00 2001 From: sandreim <54316454+sandreim@users.noreply.github.com> Date: Thu, 11 Nov 2021 20:53:37 +0200 Subject: [PATCH 68/71] Per subsystem CPU usage tracking (#4239) * SubsystemContext: add subsystem name str Signed-off-by: Andrei Sandu * Overseer builder proc macro changes * initilize SubsystemContext name field. * Add subsystem name in TaskKind::launch_task() Signed-off-by: Andrei Sandu * Update ToOverseer enum Signed-off-by: Andrei Sandu * Assign subsystem names to orphan tasks Signed-off-by: Andrei Sandu * cargo fmt Signed-off-by: Andrei Sandu * SubsystemContext: add subsystem name str Signed-off-by: Andrei Sandu * Overseer builder proc macro changes * initilize SubsystemContext name field. * Add subsystem name in TaskKind::launch_task() Signed-off-by: Andrei Sandu * Update ToOverseer enum Signed-off-by: Andrei Sandu * Assign subsystem names to orphan tasks Signed-off-by: Andrei Sandu * cargo fmt Signed-off-by: Andrei Sandu * Rebase changes for new spawn() group param Signed-off-by: Andrei Sandu * Add subsystem constat in JobTrait Signed-off-by: Andrei Sandu * Add subsystem string Signed-off-by: Andrei Sandu * Fix tests Signed-off-by: Andrei Sandu * Fix spawn() calls Signed-off-by: Andrei Sandu * cargo fmt Signed-off-by: Andrei Sandu * Fix Signed-off-by: Andrei Sandu * Fix tests Signed-off-by: Andrei Sandu * fix Signed-off-by: Andrei Sandu * Fix more tests Signed-off-by: Andrei Sandu * Address PR review feedback #1 Signed-off-by: Andrei Sandu * Address PR review round 2 Signed-off-by: Andrei Sandu * Fixes - remove JobTrait::Subsystem - fix tests Signed-off-by: Andrei Sandu * update Cargo.lock Co-authored-by: Andronik Ordian --- Cargo.lock | 401 +++++++++--------- node/collation-generation/src/lib.rs | 2 +- node/core/av-store/src/lib.rs | 5 +- node/core/backing/src/lib.rs | 14 +- node/core/bitfield-signing/src/lib.rs | 2 +- node/core/provisioner/src/lib.rs | 2 +- node/core/pvf/src/executor_intf.rs | 14 +- node/core/runtime-api/src/lib.rs | 6 +- node/jaeger/src/lib.rs | 1 + .../src/tests/state.rs | 6 +- node/network/availability-recovery/src/lib.rs | 2 +- node/overseer/overseer-gen/examples/dummy.rs | 18 +- .../proc-macro/src/impl_builder.rs | 23 +- .../overseer-gen/proc-macro/src/impl_misc.rs | 9 + node/overseer/overseer-gen/src/lib.rs | 12 +- node/overseer/src/lib.rs | 31 +- node/overseer/src/tests.rs | 1 + node/service/src/lib.rs | 30 +- node/subsystem-test-helpers/src/lib.rs | 6 +- node/subsystem-util/src/lib.rs | 10 +- node/subsystem-util/src/tests.rs | 4 +- .../test-parachains/adder/collator/src/lib.rs | 1 + 22 files changed, 340 insertions(+), 260 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e36892ff13c2..5da35b89120f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,7 +59,7 @@ dependencies = [ "cipher", "ctr", "ghash", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -454,7 +454,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "beefy-primitives", "fnv", @@ -482,7 +482,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -502,12 +502,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -1346,22 +1346,22 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.12.3", - "subtle 1.0.0", + "generic-array 0.14.4", + "subtle", ] [[package]] name = "crypto-mac" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -1412,7 +1412,7 @@ dependencies = [ "byteorder", "digest 0.8.1", "rand_core 0.5.1", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -1425,7 +1425,7 @@ dependencies = [ "byteorder", "digest 0.9.0", "rand_core 0.5.1", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -1903,7 +1903,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", ] @@ -1921,7 +1921,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -1941,7 +1941,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "Inflector", "chrono", @@ -1967,7 +1967,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -1981,7 +1981,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -2009,7 +2009,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "bitflags", "frame-metadata", @@ -2038,7 +2038,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2050,7 +2050,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2062,7 +2062,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro2", "quote", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -2106,7 +2106,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "log", @@ -2123,7 +2123,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -2138,7 +2138,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "sp-api", @@ -2147,7 +2147,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "sp-api", @@ -2360,7 +2360,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "chrono", "frame-election-provider-support", @@ -2570,21 +2570,21 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" [[package]] name = "hmac" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.7.0", - "digest 0.8.1", + "crypto-mac 0.8.0", + "digest 0.9.0", ] [[package]] name = "hmac" -version = "0.8.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac 0.11.1", "digest 0.9.0", ] @@ -3860,7 +3860,7 @@ checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" dependencies = [ "crunchy", "digest 0.9.0", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -3871,7 +3871,7 @@ checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" dependencies = [ "crunchy", "digest 0.9.0", - "subtle 2.4.1", + "subtle", ] [[package]] @@ -4658,7 +4658,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4672,7 +4672,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -4688,7 +4688,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -4703,7 +4703,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4727,7 +4727,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4747,7 +4747,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "clap", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4784,7 +4784,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "beefy-primitives", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4910,7 +4910,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4927,7 +4927,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4943,7 +4943,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4967,7 +4967,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5000,7 +5000,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5023,7 +5023,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5039,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5076,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5093,7 +5093,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5144,7 +5144,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5159,7 +5159,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5173,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5213,7 +5213,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5228,7 +5228,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5242,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5279,7 +5279,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5295,7 +5295,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5309,7 +5309,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5332,7 +5332,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5343,7 +5343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "sp-arithmetic", @@ -5352,7 +5352,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5366,7 +5366,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5384,7 +5384,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5403,7 +5403,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-support", "frame-system", @@ -5420,7 +5420,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5437,7 +5437,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5465,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5481,7 +5481,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-benchmarking", "frame-support", @@ -5709,21 +5709,20 @@ checksum = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5" [[package]] name = "pbkdf2" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" dependencies = [ - "byteorder", - "crypto-mac 0.7.0", + "crypto-mac 0.8.0", ] [[package]] name = "pbkdf2" -version = "0.4.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac 0.11.1", ] [[package]] @@ -7886,7 +7885,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8174,7 +8173,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "sp-core", @@ -8185,7 +8184,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "derive_more", @@ -8212,7 +8211,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8235,7 +8234,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8251,7 +8250,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8268,7 +8267,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8279,7 +8278,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "chrono", "fdlimit", @@ -8317,7 +8316,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "fnv", "futures 0.3.17", @@ -8345,7 +8344,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "hash-db", "kvdb", @@ -8370,7 +8369,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "futures 0.3.17", @@ -8394,7 +8393,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "derive_more", @@ -8437,7 +8436,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "derive_more", "futures 0.3.17", @@ -8461,7 +8460,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8474,7 +8473,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "assert_matches", "async-trait", @@ -8508,7 +8507,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "futures 0.3.17", @@ -8534,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "sc-client-api", "sp-authorship", @@ -8545,7 +8544,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8572,7 +8571,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "derive_more", "environmental", @@ -8590,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "parity-scale-codec", @@ -8606,7 +8605,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8624,7 +8623,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "derive_more", @@ -8661,7 +8660,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "derive_more", "finality-grandpa", @@ -8685,7 +8684,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8702,7 +8701,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "derive_more", @@ -8717,7 +8716,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "hash-db", "parity-scale-codec", @@ -8735,7 +8734,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-std", "async-trait", @@ -8786,7 +8785,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8802,7 +8801,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "bytes 1.0.1", "fnv", @@ -8830,7 +8829,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "libp2p", @@ -8843,7 +8842,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8852,7 +8851,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "hash-db", @@ -8883,7 +8882,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8908,7 +8907,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8925,7 +8924,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "directories", @@ -8989,7 +8988,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "parity-scale-codec", @@ -9003,7 +9002,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -9025,7 +9024,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "chrono", "futures 0.3.17", @@ -9043,7 +9042,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9074,7 +9073,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9085,7 +9084,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "intervalier", @@ -9112,7 +9111,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "derive_more", "futures 0.3.17", @@ -9126,7 +9125,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9184,7 +9183,7 @@ dependencies = [ "rand 0.7.3", "rand_core 0.5.1", "sha2 0.8.2", - "subtle 2.4.1", + "subtle", "zeroize", ] @@ -9495,7 +9494,7 @@ dependencies = [ "ring", "rustc_version 0.3.3", "sha2 0.9.8", - "subtle 2.4.1", + "subtle", "x25519-dalek", ] @@ -9555,7 +9554,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "hash-db", "log", @@ -9572,7 +9571,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9584,7 +9583,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -9597,7 +9596,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "integer-sqrt", "num-traits", @@ -9612,7 +9611,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -9625,7 +9624,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "parity-scale-codec", @@ -9637,7 +9636,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "sp-api", @@ -9649,7 +9648,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "log", @@ -9667,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "futures 0.3.17", @@ -9686,7 +9685,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "merlin", @@ -9709,7 +9708,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -9721,7 +9720,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9733,7 +9732,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "base58", "bitflags", @@ -9781,7 +9780,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "blake2-rfc", "byteorder", @@ -9794,7 +9793,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro2", "quote", @@ -9805,7 +9804,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "kvdb", "parking_lot", @@ -9814,7 +9813,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro2", "quote", @@ -9824,7 +9823,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "environmental", "parity-scale-codec", @@ -9835,7 +9834,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "finality-grandpa", "log", @@ -9853,7 +9852,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9867,7 +9866,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "hash-db", @@ -9891,7 +9890,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "lazy_static", "sp-core", @@ -9902,7 +9901,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "derive_more", @@ -9919,7 +9918,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "zstd", ] @@ -9927,7 +9926,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -9942,7 +9941,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9953,7 +9952,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "sp-api", "sp-core", @@ -9963,7 +9962,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "backtrace", "lazy_static", @@ -9973,7 +9972,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "rustc-hash", "serde", @@ -9983,7 +9982,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "either", "hash256-std-hasher", @@ -10005,7 +10004,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10022,7 +10021,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -10034,7 +10033,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "serde", "serde_json", @@ -10043,7 +10042,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -10057,7 +10056,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "scale-info", @@ -10068,7 +10067,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "hash-db", "log", @@ -10091,12 +10090,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10109,7 +10108,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "log", "sp-core", @@ -10122,7 +10121,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10138,7 +10137,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "sp-std", @@ -10150,7 +10149,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "sp-api", "sp-runtime", @@ -10159,7 +10158,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "log", @@ -10175,7 +10174,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "hash-db", "memory-db", @@ -10190,7 +10189,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10206,7 +10205,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10217,7 +10216,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10392,21 +10391,21 @@ dependencies = [ [[package]] name = "substrate-bip39" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236" +checksum = "49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733c" dependencies = [ - "hmac 0.7.1", - "pbkdf2 0.3.0", + "hmac 0.11.0", + "pbkdf2 0.8.0", "schnorrkel", - "sha2 0.8.2", + "sha2 0.9.8", "zeroize", ] [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "platforms", ] @@ -10414,7 +10413,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10436,7 +10435,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-std", "derive_more", @@ -10450,7 +10449,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "async-trait", "futures 0.3.17", @@ -10477,7 +10476,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10487,7 +10486,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10498,7 +10497,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10510,12 +10509,6 @@ dependencies = [ "wasm-gc-api", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "subtle" version = "2.4.1" @@ -10640,7 +10633,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "frame-system", "futures 0.3.17", @@ -11082,7 +11075,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#7b1c81f5b4966548fc281d3d164e317e338ef2d6" +source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" dependencies = [ "jsonrpsee", "log", @@ -11210,7 +11203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" dependencies = [ "generic-array 0.14.4", - "subtle 2.4.1", + "subtle", ] [[package]] diff --git a/node/collation-generation/src/lib.rs b/node/collation-generation/src/lib.rs index 2d6ef8e6b5e0..e112fca1f6c4 100644 --- a/node/collation-generation/src/lib.rs +++ b/node/collation-generation/src/lib.rs @@ -291,7 +291,7 @@ async fn handle_new_activations( let mut task_sender = sender.clone(); let metrics = metrics.clone(); ctx.spawn( - "collation generation collation builder", + "collation-builder", Box::pin(async move { let persisted_validation_data_hash = validation_data.hash(); diff --git a/node/core/av-store/src/lib.rs b/node/core/av-store/src/lib.rs index 6dc2684847cf..74f14a9ceb5f 100644 --- a/node/core/av-store/src/lib.rs +++ b/node/core/av-store/src/lib.rs @@ -383,8 +383,9 @@ impl Error { fn trace(&self) { match self { // don't spam the log with spurious errors - Self::RuntimeApi(_) | Self::Oneshot(_) => - tracing::debug!(target: LOG_TARGET, err = ?self), + Self::RuntimeApi(_) | Self::Oneshot(_) => { + tracing::debug!(target: LOG_TARGET, err = ?self) + }, // it's worth reporting otherwise _ => tracing::warn!(target: LOG_TARGET, err = ?self), } diff --git a/node/core/backing/src/lib.rs b/node/core/backing/src/lib.rs index 38fab2d791c2..81c778f85dd2 100644 --- a/node/core/backing/src/lib.rs +++ b/node/core/backing/src/lib.rs @@ -659,7 +659,7 @@ impl CandidateBackingJob { } }; sender - .send_command(FromJobCommand::Spawn("Backing Validation", bg.boxed())) + .send_command(FromJobCommand::Spawn("backing-validation", bg.boxed())) .await?; } @@ -900,11 +900,13 @@ impl CandidateBackingJob { .await; match confirmation_rx.await { - Err(oneshot::Canceled) => - tracing::debug!(target: LOG_TARGET, "Dispute coordinator confirmation lost",), + Err(oneshot::Canceled) => { + tracing::debug!(target: LOG_TARGET, "Dispute coordinator confirmation lost",) + }, Ok(ImportStatementsResult::ValidImport) => {}, - Ok(ImportStatementsResult::InvalidImport) => - tracing::warn!(target: LOG_TARGET, "Failed to import statements of validity",), + Ok(ImportStatementsResult::InvalidImport) => { + tracing::warn!(target: LOG_TARGET, "Failed to import statements of validity",) + }, } } @@ -1168,7 +1170,7 @@ impl util::JobTrait for CandidateBackingJob { type RunArgs = SyncCryptoStorePtr; type Metrics = Metrics; - const NAME: &'static str = "CandidateBackingJob"; + const NAME: &'static str = "candidate-backing-job"; fn run( parent: Hash, diff --git a/node/core/bitfield-signing/src/lib.rs b/node/core/bitfield-signing/src/lib.rs index 4d322fffb7cd..160efa406229 100644 --- a/node/core/bitfield-signing/src/lib.rs +++ b/node/core/bitfield-signing/src/lib.rs @@ -233,7 +233,7 @@ impl JobTrait for BitfieldSigningJob { type RunArgs = SyncCryptoStorePtr; type Metrics = Metrics; - const NAME: &'static str = "BitfieldSigningJob"; + const NAME: &'static str = "bitfield-signing-job"; /// Run a job for the parent block indicated fn run( diff --git a/node/core/provisioner/src/lib.rs b/node/core/provisioner/src/lib.rs index 21a2fb5fba29..a4b0e42db54a 100644 --- a/node/core/provisioner/src/lib.rs +++ b/node/core/provisioner/src/lib.rs @@ -148,7 +148,7 @@ impl JobTrait for ProvisioningJob { type RunArgs = (); type Metrics = Metrics; - const NAME: &'static str = "ProvisioningJob"; + const NAME: &'static str = "provisioner-job"; /// Run a job for the parent block indicated // diff --git a/node/core/pvf/src/executor_intf.rs b/node/core/pvf/src/executor_intf.rs index 0cdfd40e6414..66f8b62eee69 100644 --- a/node/core/pvf/src/executor_intf.rs +++ b/node/core/pvf/src/executor_intf.rs @@ -278,11 +278,21 @@ impl TaskExecutor { } impl sp_core::traits::SpawnNamed for TaskExecutor { - fn spawn_blocking(&self, _: &'static str, future: futures::future::BoxFuture<'static, ()>) { + fn spawn_blocking( + &self, + _task_name: &'static str, + _subsystem_name: Option<&'static str>, + future: futures::future::BoxFuture<'static, ()>, + ) { self.0.spawn_ok(future); } - fn spawn(&self, _: &'static str, future: futures::future::BoxFuture<'static, ()>) { + fn spawn( + &self, + _task_name: &'static str, + _subsystem_name: Option<&'static str>, + future: futures::future::BoxFuture<'static, ()>, + ) { self.0.spawn_ok(future); } } diff --git a/node/core/runtime-api/src/lib.rs b/node/core/runtime-api/src/lib.rs index 4aadae4cfa5f..a3e7de12db4b 100644 --- a/node/core/runtime-api/src/lib.rs +++ b/node/core/runtime-api/src/lib.rs @@ -270,7 +270,8 @@ where ) } } else { - self.spawn_handle.spawn_blocking(API_REQUEST_TASK_NAME, request); + self.spawn_handle + .spawn_blocking(API_REQUEST_TASK_NAME, Some("runtime-api"), request); self.active_requests.push(receiver); } } @@ -288,7 +289,8 @@ where } if let Some((req, recv)) = self.waiting_requests.pop_front() { - self.spawn_handle.spawn_blocking(API_REQUEST_TASK_NAME, req); + self.spawn_handle + .spawn_blocking(API_REQUEST_TASK_NAME, Some("runtime-api"), req); self.active_requests.push(recv); } } diff --git a/node/jaeger/src/lib.rs b/node/jaeger/src/lib.rs index eef8f17d53cc..4423b8bc6639 100644 --- a/node/jaeger/src/lib.rs +++ b/node/jaeger/src/lib.rs @@ -112,6 +112,7 @@ impl Jaeger { // Spawn a background task that pulls span information and sends them on the network. spawner.spawn( "jaeger-collector", + Some("jaeger"), Box::pin(async move { match async_std::net::UdpSocket::bind("0.0.0.0:0").await { Ok(udp_socket) => loop { diff --git a/node/network/availability-distribution/src/tests/state.rs b/node/network/availability-distribution/src/tests/state.rs index 77a973473b64..8d2bec62bfce 100644 --- a/node/network/availability-distribution/src/tests/state.rs +++ b/node/network/availability-distribution/src/tests/state.rs @@ -197,7 +197,8 @@ impl TestState { // lock ;-) let update_tx = tx.clone(); harness.pool.spawn( - "Sending active leaves updates", + "sending-active-leaves-updates", + None, async move { for update in updates { overseer_signal(update_tx.clone(), OverseerSignal::ActiveLeaves(update)).await; @@ -308,7 +309,8 @@ fn to_incoming_req( let (tx, rx): (oneshot::Sender, oneshot::Receiver<_>) = oneshot::channel(); executor.spawn( - "Message forwarding", + "message-forwarding", + None, async { let response = rx.await; let payload = response.expect("Unexpected canceled request").result; diff --git a/node/network/availability-recovery/src/lib.rs b/node/network/availability-recovery/src/lib.rs index 98785b6d39ea..23dde7495a19 100644 --- a/node/network/availability-recovery/src/lib.rs +++ b/node/network/availability-recovery/src/lib.rs @@ -782,7 +782,7 @@ where awaiting: vec![response_sender], }); - if let Err(e) = ctx.spawn("recovery task", Box::pin(remote)) { + if let Err(e) = ctx.spawn("recovery-task", Box::pin(remote)) { tracing::warn!( target: LOG_TARGET, err = ?e, diff --git a/node/overseer/overseer-gen/examples/dummy.rs b/node/overseer/overseer-gen/examples/dummy.rs index 600e874a0046..a6ed1dd2aff9 100644 --- a/node/overseer/overseer-gen/examples/dummy.rs +++ b/node/overseer/overseer-gen/examples/dummy.rs @@ -102,12 +102,22 @@ struct Xxx { struct DummySpawner; impl SpawnNamed for DummySpawner { - fn spawn_blocking(&self, name: &'static str, _future: futures::future::BoxFuture<'static, ()>) { - unimplemented!("spawn blocking {}", name) + fn spawn_blocking( + &self, + task_name: &'static str, + subsystem_name: Option<&'static str>, + _future: futures::future::BoxFuture<'static, ()>, + ) { + unimplemented!("spawn blocking {} {}", task_name, subsystem_name.unwrap_or("default")) } - fn spawn(&self, name: &'static str, _future: futures::future::BoxFuture<'static, ()>) { - unimplemented!("spawn {}", name) + fn spawn( + &self, + task_name: &'static str, + subsystem_name: Option<&'static str>, + _future: futures::future::BoxFuture<'static, ()>, + ) { + unimplemented!("spawn {} {}", task_name, subsystem_name.unwrap_or("default")) } } diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs index 94074ceb93f8..c631eef3697c 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs @@ -337,7 +337,7 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { // TODO generate a builder pattern that ensures this // TODO https://github.com/paritytech/polkadot/issues/3427 let #subsystem_name = match self. #subsystem_name { - FieldInitMethod::Fn(func) => func(handle.clone())?, + FieldInitMethod::Fn(func) => func(handle.clone())?, FieldInitMethod::Value(val) => val, FieldInitMethod::Uninitialized => panic!("All subsystems must exist with the builder pattern."), @@ -349,11 +349,18 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { #channel_name_rx, #channel_name_unbounded_rx ); let (signal_tx, signal_rx) = #support_crate ::metered::channel(SIGNAL_CHANNEL_CAPACITY); + + // Generate subsystem name based on overseer field name. + let mut subsystem_string = String::from(stringify!(#subsystem_name)); + // Convert owned `snake case` string to a `kebab case` static str. + let subsystem_static_str = Box::leak(subsystem_string.replace("_", "-").into_boxed_str()); + let ctx = #subsyste_ctx_name::< #consumes >::new( signal_rx, message_rx, channels_out.clone(), to_overseer_tx.clone(), + subsystem_static_str ); let #subsystem_name: OverseenSubsystem< #consumes > = @@ -364,6 +371,7 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { unbounded_meter, ctx, #subsystem_name, + subsystem_static_str, &mut running_subsystems, )?; )* @@ -489,22 +497,22 @@ pub(crate) fn impl_task_kind(info: &OverseerInfo) -> proc_macro2::TokenStream { /// Task kind to launch. pub trait TaskKind { /// Spawn a task, it depends on the implementer if this is blocking or not. - fn launch_task(spawner: &mut S, name: &'static str, future: BoxFuture<'static, ()>); + fn launch_task(spawner: &mut S, task_name: &'static str, subsystem_name: &'static str, future: BoxFuture<'static, ()>); } #[allow(missing_docs)] struct Regular; impl TaskKind for Regular { - fn launch_task(spawner: &mut S, name: &'static str, future: BoxFuture<'static, ()>) { - spawner.spawn(name, future) + fn launch_task(spawner: &mut S, task_name: &'static str, subsystem_name: &'static str, future: BoxFuture<'static, ()>) { + spawner.spawn(task_name, Some(subsystem_name), future) } } #[allow(missing_docs)] struct Blocking; impl TaskKind for Blocking { - fn launch_task(spawner: &mut S, name: &'static str, future: BoxFuture<'static, ()>) { - spawner.spawn_blocking(name, future) + fn launch_task(spawner: &mut S, task_name: &'static str, subsystem_name: &'static str, future: BoxFuture<'static, ()>) { + spawner.spawn(task_name, Some(subsystem_name), future) } } @@ -517,6 +525,7 @@ pub(crate) fn impl_task_kind(info: &OverseerInfo) -> proc_macro2::TokenStream { unbounded_meter: #support_crate ::metered::Meter, ctx: Ctx, s: SubSys, + subsystem_name: &'static str, futures: &mut #support_crate ::FuturesUnordered >>, ) -> ::std::result::Result, #error_ty > where @@ -540,7 +549,7 @@ pub(crate) fn impl_task_kind(info: &OverseerInfo) -> proc_macro2::TokenStream { let _ = tx.send(()); }); - ::launch_task(spawner, name, fut); + ::launch_task(spawner, name, subsystem_name, fut); futures.push(Box::pin( rx.map(|e| { diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_misc.rs b/node/overseer/overseer-gen/proc-macro/src/impl_misc.rs index e720f357442d..4cc3dc6a974f 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_misc.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_misc.rs @@ -112,6 +112,7 @@ pub(crate) fn impl_misc(info: &OverseerInfo) -> proc_macro2::TokenStream { >, signals_received: SignalsReceived, pending_incoming: Option<(usize, M)>, + name: &'static str } impl #subsystem_ctx_name { @@ -121,6 +122,7 @@ pub(crate) fn impl_misc(info: &OverseerInfo) -> proc_macro2::TokenStream { messages: SubsystemIncomingMessages, to_subsystems: ChannelsOut, to_overseer: #support_crate ::metered::UnboundedMeteredSender<#support_crate:: ToOverseer>, + name: &'static str ) -> Self { let signals_received = SignalsReceived::default(); #subsystem_ctx_name { @@ -133,8 +135,13 @@ pub(crate) fn impl_misc(info: &OverseerInfo) -> proc_macro2::TokenStream { to_overseer, signals_received, pending_incoming: None, + name } } + + fn name(&self) -> &'static str { + self.name + } } #[#support_crate ::async_trait] @@ -229,6 +236,7 @@ pub(crate) fn impl_misc(info: &OverseerInfo) -> proc_macro2::TokenStream { { self.to_overseer.unbounded_send(#support_crate ::ToOverseer::SpawnJob { name, + subsystem: Some(self.name()), s, }).map_err(|_| #support_crate ::OverseerError::TaskSpawn(name))?; Ok(()) @@ -239,6 +247,7 @@ pub(crate) fn impl_misc(info: &OverseerInfo) -> proc_macro2::TokenStream { { self.to_overseer.unbounded_send(#support_crate ::ToOverseer::SpawnBlockingJob { name, + subsystem: Some(self.name()), s, }).map_err(|_| #support_crate ::OverseerError::TaskSpawn(name))?; Ok(()) diff --git a/node/overseer/overseer-gen/src/lib.rs b/node/overseer/overseer-gen/src/lib.rs index f039a970d53f..c233f20d0e26 100644 --- a/node/overseer/overseer-gen/src/lib.rs +++ b/node/overseer/overseer-gen/src/lib.rs @@ -111,6 +111,8 @@ pub enum ToOverseer { SpawnJob { /// Name of the task to spawn which be shown in jaeger and tracing logs. name: &'static str, + /// Subsystem of the task to spawn which be shown in jaeger and tracing logs. + subsystem: Option<&'static str>, /// The future to execute. s: BoxFuture<'static, ()>, }, @@ -120,6 +122,8 @@ pub enum ToOverseer { SpawnBlockingJob { /// Name of the task to spawn which be shown in jaeger and tracing logs. name: &'static str, + /// Subsystem of the task to spawn which be shown in jaeger and tracing logs. + subsystem: Option<&'static str>, /// The future to execute. s: BoxFuture<'static, ()>, }, @@ -128,8 +132,12 @@ pub enum ToOverseer { impl fmt::Debug for ToOverseer { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { - Self::SpawnJob { name, .. } => writeln!(f, "SpawnJob{{ {}, ..}}", name), - Self::SpawnBlockingJob { name, .. } => writeln!(f, "SpawnBlockingJob{{ {}, ..}}", name), + Self::SpawnJob { name, subsystem, .. } => { + writeln!(f, "SpawnJob{{ {}, {} ..}}", name, subsystem.unwrap_or("default")) + }, + Self::SpawnBlockingJob { name, subsystem, .. } => { + writeln!(f, "SpawnBlockingJob{{ {}, {} ..}}", name, subsystem.unwrap_or("default")) + }, } } } diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 3a1e5a31458d..cd64539dbafb 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -562,7 +562,10 @@ where futures::future::ready(()) }); - overseer.spawner().spawn("metrics_metronome", Box::pin(metronome)); + overseer + .spawner() + .spawn("metrics-metronome", Some("overseer"), Box::pin(metronome)); + Ok(()) } @@ -616,11 +619,11 @@ where }, msg = self.to_overseer_rx.select_next_some() => { match msg { - ToOverseer::SpawnJob { name, s } => { - self.spawn_job(name, s); + ToOverseer::SpawnJob { name, subsystem, s } => { + self.spawn_job(name, subsystem, s); } - ToOverseer::SpawnBlockingJob { name, s } => { - self.spawn_blocking_job(name, s); + ToOverseer::SpawnBlockingJob { name, subsystem, s } => { + self.spawn_blocking_job(name, subsystem, s); } } }, @@ -772,11 +775,21 @@ where } } - fn spawn_job(&mut self, name: &'static str, j: BoxFuture<'static, ()>) { - self.spawner.spawn(name, j); + fn spawn_job( + &mut self, + task_name: &'static str, + subsystem_name: Option<&'static str>, + j: BoxFuture<'static, ()>, + ) { + self.spawner.spawn(task_name, subsystem_name, j); } - fn spawn_blocking_job(&mut self, name: &'static str, j: BoxFuture<'static, ()>) { - self.spawner.spawn_blocking(name, j); + fn spawn_blocking_job( + &mut self, + task_name: &'static str, + subsystem_name: Option<&'static str>, + j: BoxFuture<'static, ()>, + ) { + self.spawner.spawn_blocking(task_name, subsystem_name, j); } } diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 7fe1ed701a83..9d4fb116ab47 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -1151,6 +1151,7 @@ fn context_holds_onto_message_until_enough_signals_received() { stream::select(bounded_rx, unbounded_rx), channels_out, to_overseer_tx, + "test", ); assert_eq!(ctx.signals_received.load(), 0); diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index f4e453b63340..a6eb791e42fe 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -380,7 +380,11 @@ where let telemetry = telemetry.map(|(worker, telemetry)| { if let Some(worker) = worker { - task_manager.spawn_handle().spawn("telemetry", worker.run()); + task_manager.spawn_handle().spawn( + "telemetry", + Some("telemetry"), + Box::pin(worker.run()), + ); } telemetry }); @@ -805,6 +809,7 @@ where // Start the offchain workers to have task_manager.spawn_handle().spawn( "offchain-notifications", + None, sc_offchain::notification_future( config.role.is_authority(), client.clone(), @@ -904,7 +909,11 @@ where prometheus_registry.clone(), ); - task_manager.spawn_handle().spawn("authority-discovery-worker", worker.run()); + task_manager.spawn_handle().spawn( + "authority-discovery-worker", + Some("authority-discovery"), + Box::pin(worker.run()), + ); Some(service) } else { None @@ -950,6 +959,7 @@ where let handle = handle.clone(); task_manager.spawn_essential_handle().spawn_blocking( "overseer", + None, Box::pin(async move { use futures::{pin_mut, select, FutureExt}; @@ -1038,7 +1048,7 @@ where }; let babe = babe::start_babe(babe_config)?; - task_manager.spawn_essential_handle().spawn_blocking("babe", babe); + task_manager.spawn_essential_handle().spawn_blocking("babe", None, babe); } // if the node isn't actively participating in consensus then it doesn't @@ -1063,9 +1073,11 @@ where // Wococo's purpose is to be a testbed for BEEFY, so if it fails we'll // bring the node down with it to make sure it is noticed. if chain_spec.is_wococo() { - task_manager.spawn_essential_handle().spawn_blocking("beefy-gadget", gadget); + task_manager + .spawn_essential_handle() + .spawn_blocking("beefy-gadget", None, gadget); } else { - task_manager.spawn_handle().spawn_blocking("beefy-gadget", gadget); + task_manager.spawn_handle().spawn_blocking("beefy-gadget", None, gadget); } } @@ -1119,9 +1131,11 @@ where telemetry: telemetry.as_ref().map(|x| x.handle()), }; - task_manager - .spawn_essential_handle() - .spawn_blocking("grandpa-voter", grandpa::run_grandpa_voter(grandpa_config)?); + task_manager.spawn_essential_handle().spawn_blocking( + "grandpa-voter", + None, + grandpa::run_grandpa_voter(grandpa_config)?, + ); } network_starter.start_network(); diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index 0d155dc1384e..b69760743def 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -212,7 +212,7 @@ where name: &'static str, s: Pin + Send>>, ) -> SubsystemResult<()> { - self.spawn.spawn(name, s); + self.spawn.spawn(name, None, s); Ok(()) } @@ -221,7 +221,7 @@ where name: &'static str, s: Pin + Send>>, ) -> SubsystemResult<()> { - self.spawn.spawn_blocking(name, s); + self.spawn.spawn_blocking(name, None, s); Ok(()) } @@ -396,7 +396,7 @@ mod tests { let mut handle = Handle::new(handle); - spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); + spawner.spawn("overseer", None, overseer.run().then(|_| async { () }).boxed()); block_on(handle.send_msg_anon(CollatorProtocolMessage::CollateOn(Default::default()))); assert!(matches!( diff --git a/node/subsystem-util/src/lib.rs b/node/subsystem-util/src/lib.rs index 7ef0fccffc4e..bf3652a04454 100644 --- a/node/subsystem-util/src/lib.rs +++ b/node/subsystem-util/src/lib.rs @@ -485,7 +485,7 @@ pub trait JobTrait: Unpin + Sized { /// The `delegate_subsystem!` macro should take care of this. type Metrics: 'static + metrics::Metrics + Send; - /// Name of the job, i.e. `CandidateBackingJob` + /// Name of the job, i.e. `candidate-backing-job` const NAME: &'static str; /// Run a job for the given relay `parent`. @@ -577,7 +577,11 @@ where Ok(()) }); - self.spawner.spawn(Job::NAME, future.map(drop).boxed()); + self.spawner.spawn( + Job::NAME, + Some(Job::NAME.strip_suffix("-job").unwrap_or(Job::NAME)), + future.map(drop).boxed(), + ); self.outgoing_msgs.push(from_job_rx); let handle = JobHandle { _abort_handle: AbortOnDrop(abort_handle), to_job: to_job_tx }; @@ -750,6 +754,6 @@ where Ok(()) }); - SpawnedSubsystem { name: Job::NAME.strip_suffix("Job").unwrap_or(Job::NAME), future } + SpawnedSubsystem { name: Job::NAME.strip_suffix("-job").unwrap_or(Job::NAME), future } } } diff --git a/node/subsystem-util/src/tests.rs b/node/subsystem-util/src/tests.rs index 83cd18c3f2e8..27a531427e25 100644 --- a/node/subsystem-util/src/tests.rs +++ b/node/subsystem-util/src/tests.rs @@ -62,7 +62,7 @@ impl JobTrait for FakeCollatorProtocolJob { type RunArgs = bool; type Metrics = (); - const NAME: &'static str = "FakeCollatorProtocolJob"; + const NAME: &'static str = "fake-collator-protocol-job"; /// Run a job for the parent block indicated // @@ -199,7 +199,7 @@ fn test_subsystem_impl_and_name_derivation() { let SpawnedSubsystem { name, .. } = FakeCollatorProtocolSubsystem::new(pool, false, ()).start(context); - assert_eq!(name, "FakeCollatorProtocol"); + assert_eq!(name, "fake-collator-protocol"); } #[test] diff --git a/parachain/test-parachains/adder/collator/src/lib.rs b/parachain/test-parachains/adder/collator/src/lib.rs index 95e54a534488..ae7c68c2557a 100644 --- a/parachain/test-parachains/adder/collator/src/lib.rs +++ b/parachain/test-parachains/adder/collator/src/lib.rs @@ -186,6 +186,7 @@ impl Collator { let seconded_collations = seconded_collations.clone(); spawner.spawn( "adder-collator-seconded", + None, async move { if let Ok(res) = recv.await { if !matches!( From a2244b66a8e2cc87a2bafca1c8a48306c77d231d Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 11 Nov 2021 22:38:41 +0100 Subject: [PATCH 69/71] collator-protocol: do not connect to the next group (#4261) * collator-protocol: do not connect to the next group * fmt --- .../src/collator_side/mod.rs | 34 ++++-------- .../src/validator_side/mod.rs | 53 +++---------------- .../src/validator_side/tests.rs | 20 ++++--- .../src/node/collators/collator-protocol.md | 6 +-- 4 files changed, 31 insertions(+), 82 deletions(-) diff --git a/node/network/collator-protocol/src/collator_side/mod.rs b/node/network/collator-protocol/src/collator_side/mod.rs index 49eb2ed86391..2784bc37c9b8 100644 --- a/node/network/collator-protocol/src/collator_side/mod.rs +++ b/node/network/collator-protocol/src/collator_side/mod.rs @@ -379,11 +379,11 @@ where }, }; - // Determine the group on that core and the next group on that core. - let (current_validators, next_validators) = + // Determine the group on that core. + let current_validators = determine_our_validators(ctx, runtime, our_core, num_cores, relay_parent).await?; - if current_validators.validators.is_empty() && next_validators.validators.is_empty() { + if current_validators.validators.is_empty() { tracing::warn!( target: LOG_TARGET, core = ?our_core, @@ -401,23 +401,14 @@ where pov_hash = ?pov.hash(), core = ?our_core, ?current_validators, - ?next_validators, "Accepted collation, connecting to validators." ); let validator_group: HashSet<_> = current_validators.validators.iter().map(Clone::clone).collect(); - // Issue a discovery request for the validators of the current group and the next group: - connect_to_validators( - ctx, - current_validators - .validators - .into_iter() - .chain(next_validators.validators.into_iter()) - .collect(), - ) - .await; + // Issue a discovery request for the validators of the current group: + connect_to_validators(ctx, current_validators.validators.into_iter().collect()).await; state.our_validators_groups.insert(relay_parent, validator_group.into()); @@ -471,16 +462,16 @@ struct GroupValidators { validators: Vec, } -/// Figure out current and next group of validators assigned to the para being collated on. +/// Figure out current group of validators assigned to the para being collated on. /// -/// Returns [`ValidatorId`]'s of current and next group as determined based on the `relay_parent`. +/// Returns [`ValidatorId`]'s of current group as determined based on the `relay_parent`. async fn determine_our_validators( ctx: &mut Context, runtime: &mut RuntimeInfo, core_index: CoreIndex, cores: usize, relay_parent: Hash, -) -> Result<(GroupValidators, GroupValidators)> +) -> Result where Context: SubsystemContext, Context: overseer::SubsystemContext, @@ -500,22 +491,15 @@ where .map(|v| v.as_slice()) .unwrap_or_default(); - let next_group_idx = (current_group_index.0 as usize + 1) % groups.len(); - let next_validators = groups.get(next_group_idx).map(|v| v.as_slice()).unwrap_or_default(); - let validators = &info.discovery_keys; let current_validators = current_validators.iter().map(|i| validators[i.0 as usize].clone()).collect(); - let next_validators = - next_validators.iter().map(|i| validators[i.0 as usize].clone()).collect(); let current_validators = GroupValidators { group: current_group_index, validators: current_validators }; - let next_validators = - GroupValidators { group: GroupIndex(next_group_idx as u32), validators: next_validators }; - Ok((current_validators, next_validators)) + Ok(current_validators) } /// Issue a `Declare` collation message to the given `peer`. diff --git a/node/network/collator-protocol/src/validator_side/mod.rs b/node/network/collator-protocol/src/validator_side/mod.rs index f7672d932dcd..1778c56f5324 100644 --- a/node/network/collator-protocol/src/validator_side/mod.rs +++ b/node/network/collator-protocol/src/validator_side/mod.rs @@ -332,14 +332,12 @@ impl Default for PeerData { struct GroupAssignments { current: Option, - next: Option, } #[derive(Default)] struct ActiveParas { relay_parent_assignments: HashMap, current_assignments: HashMap, - next_assignments: HashMap, } impl ActiveParas { @@ -384,22 +382,16 @@ impl ActiveParas { }, }; - let (para_now, para_next) = + let para_now = match polkadot_node_subsystem_util::signing_key_and_index(&validators, keystore) .await .and_then(|(_, index)| { polkadot_node_subsystem_util::find_validator_group(&groups, index) }) { Some(group) => { - let next_rotation_info = rotation_info.bump_rotation(); - let core_now = rotation_info.core_for_group(group, cores.len()); - let core_next = next_rotation_info.core_for_group(group, cores.len()); - ( - cores.get(core_now.0 as usize).and_then(|c| c.para_id()), - cores.get(core_next.0 as usize).and_then(|c| c.para_id()), - ) + cores.get(core_now.0 as usize).and_then(|c| c.para_id()) }, None => { tracing::trace!(target: LOG_TARGET, ?relay_parent, "Not a validator"); @@ -429,19 +421,15 @@ impl ActiveParas { } } - if let Some(para_next) = para_next { - *self.next_assignments.entry(para_next).or_default() += 1; - } - self.relay_parent_assignments - .insert(relay_parent, GroupAssignments { current: para_now, next: para_next }); + .insert(relay_parent, GroupAssignments { current: para_now }); } } fn remove_outgoing(&mut self, old_relay_parents: impl IntoIterator) { for old_relay_parent in old_relay_parents { if let Some(assignments) = self.relay_parent_assignments.remove(&old_relay_parent) { - let GroupAssignments { current, next } = assignments; + let GroupAssignments { current } = assignments; if let Some(cur) = current { if let Entry::Occupied(mut occupied) = self.current_assignments.entry(cur) { @@ -456,23 +444,10 @@ impl ActiveParas { } } } - - if let Some(next) = next { - if let Entry::Occupied(mut occupied) = self.next_assignments.entry(next) { - *occupied.get_mut() -= 1; - if *occupied.get() == 0 { - occupied.remove_entry(); - } - } - } } } } - fn is_current_or_next(&self, id: ParaId) -> bool { - self.current_assignments.contains_key(&id) || self.next_assignments.contains_key(&id) - } - fn is_current(&self, id: &ParaId) -> bool { self.current_assignments.contains_key(id) } @@ -846,13 +821,13 @@ async fn process_incoming_peer_message( return } - if state.active_paras.is_current_or_next(para_id) { + if state.active_paras.is_current(¶_id) { tracing::debug!( target: LOG_TARGET, peer_id = ?origin, ?collator_id, ?para_id, - "Declared as collator for current or next para", + "Declared as collator for current para", ); peer_data.set_collating(collator_id, para_id); @@ -895,20 +870,6 @@ async fn process_incoming_peer_message( Some(p) => p, }; - if let PeerState::Collating(ref collating_state) = peer_data.state { - let para_id = collating_state.para_id; - if !state.active_paras.is_current(¶_id) { - tracing::debug!( - target: LOG_TARGET, - peer_id = ?origin, - %para_id, - ?relay_parent, - "Received advertise collation, but we are assigned to the next group", - ); - return - } - } - match peer_data.insert_advertisement(relay_parent, &state.view) { Ok((id, para_id)) => { tracing::debug!( @@ -1015,7 +976,7 @@ where // If the peer hasn't declared yet, they will be disconnected if they do not // declare. if let Some(para_id) = peer_data.collating_para() { - if !state.active_paras.is_current_or_next(para_id) { + if !state.active_paras.is_current(¶_id) { tracing::trace!(target: LOG_TARGET, "Disconnecting peer on view change"); disconnect_peer(ctx, peer_id.clone()).await; } diff --git a/node/network/collator-protocol/src/validator_side/tests.rs b/node/network/collator-protocol/src/validator_side/tests.rs index 7c110d67feed..4e92f2eff0cf 100644 --- a/node/network/collator-protocol/src/validator_side/tests.rs +++ b/node/network/collator-protocol/src/validator_side/tests.rs @@ -675,7 +675,7 @@ fn fetch_collations_works() { } #[test] -fn dont_fetch_collation_if_assigned_to_next_group() { +fn reject_connection_to_next_group() { let test_state = TestState::default(); test_harness(|test_harness| async move { @@ -701,15 +701,19 @@ fn dont_fetch_collation_if_assigned_to_next_group() { ) .await; - advertise_collation(&mut virtual_overseer, peer_b.clone(), test_state.relay_parent).await; - - assert!( - overseer_recv_with_timeout(&mut &mut virtual_overseer, Duration::from_millis(30)) - .await - .is_none(), - "There should be no PoV fetching request.", + assert_matches!( + overseer_recv(&mut virtual_overseer).await, + AllMessages::NetworkBridge(NetworkBridgeMessage::ReportPeer( + peer, + rep, + )) => { + assert_eq!(peer, peer_b); + assert_eq!(rep, COST_UNNEEDED_COLLATOR); + } ); + assert_collator_disconnect(&mut virtual_overseer, peer_b).await; + virtual_overseer }) } diff --git a/roadmap/implementers-guide/src/node/collators/collator-protocol.md b/roadmap/implementers-guide/src/node/collators/collator-protocol.md index ec5ab72fc49f..ae4858aa243e 100644 --- a/roadmap/implementers-guide/src/node/collators/collator-protocol.md +++ b/roadmap/implementers-guide/src/node/collators/collator-protocol.md @@ -47,7 +47,7 @@ digraph { ### Collators -It is assumed that collators are only collating on a single parachain. Collations are generated by the [Collation Generation][CG] subsystem. We will keep up to one local collation per relay-parent, based on `DistributeCollation` messages. If the para is not scheduled or next up on any core, at the relay-parent, or the relay-parent isn't in the active-leaves set, we ignore the message as it must be invalid in that case - although this indicates a logic error elsewhere in the node. +It is assumed that collators are only collating on a single parachain. Collations are generated by the [Collation Generation][CG] subsystem. We will keep up to one local collation per relay-parent, based on `DistributeCollation` messages. If the para is not scheduled on any core, at the relay-parent, or the relay-parent isn't in the active-leaves set, we ignore the message as it must be invalid in that case - although this indicates a logic error elsewhere in the node. We keep track of the Para ID we are collating on as a collator. This starts as `None`, and is updated with each `CollateOn` message received. If the `ParaId` of a collation requested to be distributed does not match the one we expect, we ignore the message. @@ -57,8 +57,8 @@ For the purposes of actually distributing a collation, we need to be connected t As seen in the [Scheduler Module][SCH] of the runtime, validator groups are fixed for an entire session and their rotations across cores are predictable. Collators will want to do these things when attempting to distribute collations at a given relay-parent: * Determine which core the para collated-on is assigned to. - * Determine the group on that core and the next group on that core. - * Issue a discovery request for the validators of the current group and the next group with[`NetworkBridgeMessage`][NBM]`::ConnectToValidators`. + * Determine the group on that core. + * Issue a discovery request for the validators of the current group with[`NetworkBridgeMessage`][NBM]`::ConnectToValidators`. Once connected to the relevant peers for the current group assigned to the core (transitively, the para), advertise the collation to any of them which advertise the relay-parent in their view (as provided by the [Network Bridge][NB]). If any respond with a request for the full collation, provide it. However, we only send one collation at a time per relay parent, other requests need to wait. This is done to reduce the bandwidth requirements of a collator and also increases the chance to fully send the collation to at least one validator. From the point where one validator has received the collation and seconded it, it will also start to share this collation with other validators in its backing group. Upon receiving a view update from any of these peers which includes a relay-parent for which we have a collation that they will find relevant, advertise the collation to them if we haven't already. From dfc0167b436d3b2f9ff699c479921fe3c0c5d35c Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Fri, 12 Nov 2021 13:13:53 +0000 Subject: [PATCH 70/71] Enable full use of pallet-bags-list in westend and kusama runtimes (#4195) --- runtime/kusama/src/lib.rs | 2 +- runtime/westend/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index d924bd603064..d0a26e42cd90 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -554,7 +554,7 @@ impl pallet_staking::Config for Runtime { type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; // Use the nominators map to iter voters, but also keep bags-list up-to-date. - type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; + type SortedListProvider = BagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 8ff636abf51e..9f50253e6344 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -456,7 +456,7 @@ impl pallet_staking::Config for Runtime { type ElectionProvider = ElectionProviderMultiPhase; type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; // Use the nominators map to iter voters, but also keep bags-list up-to-date. - type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; + type SortedListProvider = BagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } From 14be5d5ecd44dd3aee71c11ff8c4722fdbefd078 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Fri, 12 Nov 2021 15:07:33 +0100 Subject: [PATCH 71/71] Remove light client companion (#4191) * Remove light client companion * Update substrate * cargo fmt * Fixed benches * fmt --- Cargo.lock | 353 +++++++++--------- bridges/modules/grandpa/src/lib.rs | 10 +- bridges/modules/grandpa/src/mock.rs | 1 - node/client/src/lib.rs | 32 +- node/core/pvf/src/executor_intf.rs | 4 - node/service/src/chain_spec.rs | 40 +- node/service/src/lib.rs | 6 +- primitives/src/v1/mod.rs | 8 +- rpc/src/lib.rs | 41 +- .../src/initializer/benchmarking.rs | 5 +- 10 files changed, 190 insertions(+), 310 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5da35b89120f..57855e435f17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -454,7 +454,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "beefy-primitives", "fnv", @@ -482,7 +482,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -502,12 +502,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -1903,7 +1903,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", ] @@ -1921,7 +1921,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -1941,7 +1941,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "Inflector", "chrono", @@ -1967,7 +1967,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -1981,7 +1981,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -2009,7 +2009,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "bitflags", "frame-metadata", @@ -2038,7 +2038,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2050,7 +2050,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2062,7 +2062,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro2", "quote", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -2106,7 +2106,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "log", @@ -2123,7 +2123,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -2138,7 +2138,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "sp-api", @@ -2147,7 +2147,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "sp-api", @@ -2360,7 +2360,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "chrono", "frame-election-provider-support", @@ -2451,9 +2451,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.13.22" +version = "0.13.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1cbbfc9a1996c6af82c2b4caf828d2c653af4fcdbb0e5674cc966eee5a4197" +checksum = "2a8057932925d3a9d9e4434ea016570d37420ddb1ceed45a174d577f24ed6700" dependencies = [ "bitflags", "libc", @@ -3313,9 +3313,9 @@ checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" [[package]] name = "libgit2-sys" -version = "0.12.23+1.2.0" +version = "0.12.24+1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29730a445bae719db3107078b46808cc45a5b7a6bae3f31272923af969453356" +checksum = "ddbd6021eef06fb289a8f54b3c2acfdd85ff2a585dfbb24b8576325373d2152c" dependencies = [ "cc", "libc", @@ -4658,7 +4658,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4672,7 +4672,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -4688,7 +4688,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -4703,7 +4703,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4727,7 +4727,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4747,7 +4747,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "clap", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4784,7 +4784,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "beefy-primitives", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4910,7 +4910,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4927,7 +4927,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4943,7 +4943,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4967,7 +4967,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5000,7 +5000,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5023,7 +5023,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5039,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5076,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5093,7 +5093,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5144,7 +5144,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5159,7 +5159,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5173,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5213,7 +5213,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5228,7 +5228,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5242,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5279,7 +5279,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5295,7 +5295,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5309,7 +5309,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5332,7 +5332,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5343,7 +5343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "sp-arithmetic", @@ -5352,7 +5352,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5366,7 +5366,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5384,7 +5384,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5403,7 +5403,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-support", "frame-system", @@ -5420,7 +5420,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5437,7 +5437,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5465,7 +5465,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -5481,7 +5481,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-benchmarking", "frame-support", @@ -7885,7 +7885,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "env_logger 0.9.0", "jsonrpsee", @@ -8173,7 +8173,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "sp-core", @@ -8184,7 +8184,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "derive_more", @@ -8211,7 +8211,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8234,7 +8234,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8250,7 +8250,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "impl-trait-for-tuples", "memmap2 0.5.0", @@ -8267,7 +8267,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8278,7 +8278,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "chrono", "fdlimit", @@ -8316,7 +8316,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "fnv", "futures 0.3.17", @@ -8344,7 +8344,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "hash-db", "kvdb", @@ -8369,7 +8369,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "futures 0.3.17", @@ -8393,7 +8393,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "derive_more", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "derive_more", "futures 0.3.17", @@ -8460,7 +8460,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8473,7 +8473,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "assert_matches", "async-trait", @@ -8507,7 +8507,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "futures 0.3.17", @@ -8533,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "sc-client-api", "sp-authorship", @@ -8544,7 +8544,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8571,7 +8571,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "derive_more", "environmental", @@ -8589,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "parity-scale-codec", @@ -8605,7 +8605,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8623,7 +8623,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "derive_more", @@ -8660,7 +8660,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "derive_more", "finality-grandpa", @@ -8684,7 +8684,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8701,7 +8701,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "derive_more", @@ -8713,28 +8713,10 @@ dependencies = [ "sp-keystore", ] -[[package]] -name = "sc-light" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" -dependencies = [ - "hash-db", - "parity-scale-codec", - "parking_lot", - "sc-client-api", - "sc-executor", - "sp-api", - "sp-blockchain", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-state-machine", -] - [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-std", "async-trait", @@ -8785,7 +8767,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8801,7 +8783,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "bytes 1.0.1", "fnv", @@ -8829,7 +8811,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "libp2p", @@ -8842,7 +8824,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8851,7 +8833,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "hash-db", @@ -8882,7 +8864,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8907,7 +8889,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8924,7 +8906,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "directories", @@ -8988,7 +8970,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "parity-scale-codec", @@ -9002,7 +8984,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -9024,7 +9006,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "chrono", "futures 0.3.17", @@ -9042,7 +9024,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "ansi_term 0.12.1", "atty", @@ -9073,7 +9055,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9084,7 +9066,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "intervalier", @@ -9111,7 +9093,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "derive_more", "futures 0.3.17", @@ -9125,7 +9107,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9554,7 +9536,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "hash-db", "log", @@ -9571,7 +9553,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9583,7 +9565,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -9596,7 +9578,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "integer-sqrt", "num-traits", @@ -9611,7 +9593,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -9624,7 +9606,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "parity-scale-codec", @@ -9636,7 +9618,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "sp-api", @@ -9648,7 +9630,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "log", @@ -9666,7 +9648,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "futures 0.3.17", @@ -9685,7 +9667,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "merlin", @@ -9708,7 +9690,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -9720,7 +9702,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9732,7 +9714,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "base58", "bitflags", @@ -9780,7 +9762,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "blake2-rfc", "byteorder", @@ -9793,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro2", "quote", @@ -9804,7 +9786,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "kvdb", "parking_lot", @@ -9813,7 +9795,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro2", "quote", @@ -9823,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "environmental", "parity-scale-codec", @@ -9834,7 +9816,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "finality-grandpa", "log", @@ -9852,7 +9834,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9866,7 +9848,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "hash-db", @@ -9890,7 +9872,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "lazy_static", "sp-core", @@ -9901,7 +9883,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "derive_more", @@ -9918,7 +9900,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "zstd", ] @@ -9926,7 +9908,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -9941,7 +9923,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9952,7 +9934,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "sp-api", "sp-core", @@ -9962,7 +9944,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "backtrace", "lazy_static", @@ -9972,7 +9954,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "rustc-hash", "serde", @@ -9982,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "either", "hash256-std-hasher", @@ -10004,7 +9986,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10021,7 +10003,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -10033,7 +10015,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "serde", "serde_json", @@ -10042,7 +10024,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10056,7 +10038,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "scale-info", @@ -10067,7 +10049,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "hash-db", "log", @@ -10090,12 +10072,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10108,7 +10090,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "log", "sp-core", @@ -10121,7 +10103,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10137,7 +10119,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "sp-std", @@ -10149,7 +10131,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "sp-api", "sp-runtime", @@ -10158,7 +10140,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "log", @@ -10174,7 +10156,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "hash-db", "memory-db", @@ -10189,7 +10171,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10205,7 +10187,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10216,7 +10198,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10405,7 +10387,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "platforms", ] @@ -10413,7 +10395,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10435,7 +10417,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-std", "derive_more", @@ -10449,7 +10431,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "async-trait", "futures 0.3.17", @@ -10459,7 +10441,6 @@ dependencies = [ "sc-client-db", "sc-consensus", "sc-executor", - "sc-light", "sc-offchain", "sc-service", "serde", @@ -10476,7 +10457,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10486,7 +10467,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10497,7 +10478,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10633,7 +10614,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "frame-system", "futures 0.3.17", @@ -11075,7 +11056,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f78549161b9827ddde2519a12d1a279b83634f41" +source = "git+https://github.com/paritytech/substrate?branch=master#c45c1cbfde0037e6ef650146789a0aa0190fdefb" dependencies = [ "jsonrpsee", "log", diff --git a/bridges/modules/grandpa/src/lib.rs b/bridges/modules/grandpa/src/lib.rs index 118cfc1f6233..700df5b84690 100644 --- a/bridges/modules/grandpa/src/lib.rs +++ b/bridges/modules/grandpa/src/lib.rs @@ -600,7 +600,7 @@ pub fn initialize_for_benchmarks, I: 'static>(header: BridgedHeader #[cfg(test)] mod tests { use super::*; - use crate::mock::{run_test, test_header, Origin, TestHash, TestHeader, TestNumber, TestRuntime}; + use crate::mock::{run_test, test_header, Origin, TestHeader, TestNumber, TestRuntime}; use bp_test_utils::{ authority_list, make_default_justification, make_justification_for_header, JustificationGeneratorParams, ALICE, BOB, @@ -644,18 +644,18 @@ mod tests { let _ = Pallet::::on_initialize(current_number); } - fn change_log(delay: u64) -> Digest { + fn change_log(delay: u64) -> Digest { let consensus_log = ConsensusLog::::ScheduledChange(sp_finality_grandpa::ScheduledChange { next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], delay, }); - Digest:: { + Digest { logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())], } } - fn forced_change_log(delay: u64) -> Digest { + fn forced_change_log(delay: u64) -> Digest { let consensus_log = ConsensusLog::::ForcedChange( delay, sp_finality_grandpa::ScheduledChange { @@ -664,7 +664,7 @@ mod tests { }, ); - Digest:: { + Digest { logs: vec![DigestItem::Consensus(GRANDPA_ENGINE_ID, consensus_log.encode())], } } diff --git a/bridges/modules/grandpa/src/mock.rs b/bridges/modules/grandpa/src/mock.rs index fc9970c8cfd1..8851dbb041a6 100644 --- a/bridges/modules/grandpa/src/mock.rs +++ b/bridges/modules/grandpa/src/mock.rs @@ -28,7 +28,6 @@ use sp_runtime::{ pub type AccountId = u64; pub type TestHeader = crate::BridgedHeader; pub type TestNumber = crate::BridgedBlockNumber; -pub type TestHash = crate::BridgedBlockHash; type Block = frame_system::mocking::MockBlock; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; diff --git a/node/client/src/lib.rs b/node/client/src/lib.rs index d9166bb50c60..c358523ef1bf 100644 --- a/node/client/src/lib.rs +++ b/node/client/src/lib.rs @@ -32,7 +32,7 @@ use sp_runtime::{ traits::{BlakeTwo256, Block as BlockT}, Justifications, }; -use sp_storage::{ChildInfo, PrefixedStorageKey, StorageData, StorageKey}; +use sp_storage::{ChildInfo, StorageData, StorageKey}; use std::sync::Arc; pub type FullBackend = sc_service::TFullBackend; @@ -514,36 +514,6 @@ impl sc_client_api::StorageProvider for Client { } } } - - fn max_key_changes_range( - &self, - first: NumberFor, - last: BlockId, - ) -> sp_blockchain::Result, BlockId)>> { - with_client! { - self, - client, - { - client.max_key_changes_range(first, last) - } - } - } - - fn key_changes( - &self, - first: NumberFor, - last: BlockId, - storage_key: Option<&PrefixedStorageKey>, - key: &StorageKey, - ) -> sp_blockchain::Result, u32)>> { - with_client! { - self, - client, - { - client.key_changes(first, last, storage_key, key) - } - } - } } impl sp_blockchain::HeaderBackend for Client { diff --git a/node/core/pvf/src/executor_intf.rs b/node/core/pvf/src/executor_intf.rs index 66f8b62eee69..abf9f42ee287 100644 --- a/node/core/pvf/src/executor_intf.rs +++ b/node/core/pvf/src/executor_intf.rs @@ -174,10 +174,6 @@ impl sp_externalities::Externalities for ValidationExternalities { panic!("child_storage_root: unsupported feature for parachain validation") } - fn storage_changes_root(&mut self, _: &[u8]) -> Result>, ()> { - panic!("storage_changes_root: unsupported feature for parachain validation") - } - fn next_child_storage_key(&self, _: &ChildInfo, _: &[u8]) -> Option> { panic!("next_child_storage_key: unsupported feature for parachain validation") } diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 75a4e721f3c0..3c4c24eab332 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -303,10 +303,7 @@ fn polkadot_staging_testnet_config_genesis(wasm_binary: &[u8]) -> polkadot::Gene const STASH: u128 = 100 * DOT; polkadot::GenesisConfig { - system: polkadot::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: polkadot::SystemConfig { code: wasm_binary.to_vec() }, balances: polkadot::BalancesConfig { balances: endowed_accounts .iter() @@ -494,10 +491,7 @@ fn westend_staging_testnet_config_genesis(wasm_binary: &[u8]) -> westend::Genesi const STASH: u128 = 100 * WND; westend::GenesisConfig { - system: westend::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: westend::SystemConfig { code: wasm_binary.to_vec() }, balances: westend::BalancesConfig { balances: endowed_accounts .iter() @@ -685,10 +679,7 @@ fn kusama_staging_testnet_config_genesis(wasm_binary: &[u8]) -> kusama::GenesisC const STASH: u128 = 100 * KSM; kusama::GenesisConfig { - system: kusama::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: kusama::SystemConfig { code: wasm_binary.to_vec() }, balances: kusama::BalancesConfig { balances: endowed_accounts .iter() @@ -1000,10 +991,7 @@ fn rococo_staging_testnet_config_genesis(wasm_binary: &[u8]) -> rococo_runtime:: const STASH: u128 = 100 * ROC; rococo_runtime::GenesisConfig { - system: rococo_runtime::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: rococo_runtime::SystemConfig { code: wasm_binary.to_vec() }, balances: rococo_runtime::BalancesConfig { balances: endowed_accounts .iter() @@ -1260,10 +1248,7 @@ pub fn polkadot_testnet_genesis( const STASH: u128 = 100 * DOT; polkadot::GenesisConfig { - system: polkadot::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: polkadot::SystemConfig { code: wasm_binary.to_vec() }, indices: polkadot::IndicesConfig { indices: vec![] }, balances: polkadot::BalancesConfig { balances: endowed_accounts.iter().map(|k| (k.clone(), ENDOWMENT)).collect(), @@ -1347,10 +1332,7 @@ pub fn kusama_testnet_genesis( const STASH: u128 = 100 * KSM; kusama::GenesisConfig { - system: kusama::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: kusama::SystemConfig { code: wasm_binary.to_vec() }, indices: kusama::IndicesConfig { indices: vec![] }, balances: kusama::BalancesConfig { balances: endowed_accounts.iter().map(|k| (k.clone(), ENDOWMENT)).collect(), @@ -1436,10 +1418,7 @@ pub fn westend_testnet_genesis( const STASH: u128 = 100 * DOT; westend::GenesisConfig { - system: westend::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: westend::SystemConfig { code: wasm_binary.to_vec() }, indices: westend::IndicesConfig { indices: vec![] }, balances: westend::BalancesConfig { balances: endowed_accounts.iter().map(|k| (k.clone(), ENDOWMENT)).collect(), @@ -1518,10 +1497,7 @@ pub fn rococo_testnet_genesis( const ENDOWMENT: u128 = 1_000_000 * DOT; rococo_runtime::GenesisConfig { - system: rococo_runtime::SystemConfig { - code: wasm_binary.to_vec(), - changes_trie_config: Default::default(), - }, + system: rococo_runtime::SystemConfig { code: wasm_binary.to_vec() }, beefy: Default::default(), indices: rococo_runtime::IndicesConfig { indices: vec![] }, balances: rococo_runtime::BalancesConfig { diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index a6eb791e42fe..686d04bb84c7 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -107,8 +107,7 @@ pub use sp_api::{ApiRef, ConstructRuntimeApi, Core as CoreApi, ProvideRuntimeApi pub use sp_runtime::{ generic, traits::{ - self as runtime_traits, BlakeTwo256, Block as BlockT, DigestFor, HashFor, - Header as HeaderT, NumberFor, + self as runtime_traits, BlakeTwo256, Block as BlockT, HashFor, Header as HeaderT, NumberFor, }, }; @@ -795,7 +794,6 @@ where transaction_pool: transaction_pool.clone(), spawn_handle: task_manager.spawn_handle(), import_queue, - on_demand: None, block_announce_validator_builder: None, warp_sync: Some(warp_sync), })?; @@ -865,8 +863,6 @@ where rpc_extensions_builder: Box::new(rpc_extensions_builder), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, - on_demand: None, - remote_blockchain: None, system_rpc_tx, telemetry: telemetry.as_mut(), })?; diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs index a4b598dd6c6a..97f717dac75b 100644 --- a/primitives/src/v1/mod.rs +++ b/primitives/src/v1/mod.rs @@ -1188,8 +1188,8 @@ pub enum ConsensusLog { impl ConsensusLog { /// Attempt to convert a reference to a generic digest item into a consensus log. - pub fn from_digest_item( - digest_item: &runtime_primitives::DigestItem, + pub fn from_digest_item( + digest_item: &runtime_primitives::DigestItem, ) -> Result, parity_scale_codec::Error> { match digest_item { runtime_primitives::DigestItem::Consensus(id, encoded) if id == &POLKADOT_ENGINE_ID => @@ -1199,8 +1199,8 @@ impl ConsensusLog { } } -impl From for runtime_primitives::DigestItem { - fn from(c: ConsensusLog) -> runtime_primitives::DigestItem { +impl From for runtime_primitives::DigestItem { + fn from(c: ConsensusLog) -> runtime_primitives::DigestItem { Self::Consensus(POLKADOT_ENGINE_ID, c.encode()) } } diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs index 659565e323ca..bc99dae1b3a9 100644 --- a/rpc/src/lib.rs +++ b/rpc/src/lib.rs @@ -21,10 +21,7 @@ use std::sync::Arc; use polkadot_primitives::v0::{AccountId, Balance, Block, BlockNumber, Hash, Nonce}; -use sc_client_api::{ - light::{Fetcher, RemoteBlockchain}, - AuxStore, -}; +use sc_client_api::AuxStore; use sc_consensus_babe::Epoch; use sc_finality_grandpa::FinalityProofProvider; pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; @@ -40,18 +37,6 @@ use txpool_api::TransactionPool; /// A type representing all RPC extensions. pub type RpcExtension = jsonrpc_core::IoHandler; -/// Light client extra dependencies. -pub struct LightDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// Remote access to the blockchain (async). - pub remote_blockchain: Arc>, - /// Fetcher instance. - pub fetcher: Arc, -} - /// Extra dependencies for BABE. pub struct BabeDeps { /// BABE protocol config. @@ -179,27 +164,3 @@ where Ok(io) } - -/// Instantiate all RPC extensions for light node. -pub fn create_light(deps: LightDeps) -> RpcExtension -where - C: ProvideRuntimeApi, - C: HeaderBackend, - C: Send + Sync + 'static, - C::Api: frame_rpc_system::AccountNonceApi, - C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, - P: TransactionPool + Sync + Send + 'static, - F: Fetcher + 'static, -{ - use frame_rpc_system::{LightSystem, SystemApi}; - - let LightDeps { client, pool, remote_blockchain, fetcher } = deps; - let mut io = jsonrpc_core::IoHandler::default(); - io.extend_with(SystemApi::::to_delegate(LightSystem::new( - client, - remote_blockchain, - fetcher, - pool, - ))); - io -} diff --git a/runtime/parachains/src/initializer/benchmarking.rs b/runtime/parachains/src/initializer/benchmarking.rs index c6fb38d68f86..761097dbf624 100644 --- a/runtime/parachains/src/initializer/benchmarking.rs +++ b/runtime/parachains/src/initializer/benchmarking.rs @@ -16,8 +16,9 @@ use super::*; use frame_benchmarking::benchmarks; -use frame_system::{DigestItemOf, RawOrigin}; +use frame_system::RawOrigin; use primitives::v1::ConsensusLog; +use sp_runtime::DigestItem; // Random large number for the digest const DIGEST_MAX_LEN: u32 = 65536; @@ -32,7 +33,7 @@ benchmarks! { verify { assert_eq!( >::digest().logs.last().unwrap(), - &>::from(ConsensusLog::ForceApprove(d + 1)), + &DigestItem::from(ConsensusLog::ForceApprove(d + 1)), ); }