From d048798f1a1055c3a155c9d7fd67da58c57a1f98 Mon Sep 17 00:00:00 2001 From: Jason Frame Date: Fri, 17 Feb 2023 18:17:32 +1000 Subject: [PATCH] Release 23.1.1 rc1 (#5106) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Prepare for version 23.1.1-SNAPSHOT (#5067) Signed-off-by: Simon Dudley * Add getPayloadBodiesByRangeV1 and getPayloadBodiesByHash engine methods (#4980) * Add engine get payload body methods and test Signed-off-by: Zhenyang Shi Signed-off-by: Gabriel Fukushima * Add header Signed-off-by: Zhenyang Shi * Update result struct & add test Signed-off-by: Zhenyang Shi * Change constant to use upper case Signed-off-by: Gabriel Fukushima * Add PayloadBody class and withdrawals to response of methods Signed-off-by: Gabriel Fukushima * Add unit tests Signed-off-by: Gabriel Fukushima * Add changelog Signed-off-by: Gabriel Fukushima * spotless Signed-off-by: Gabriel Fukushima * Add check to prevent returning trailing null results past the head Signed-off-by: Gabriel Fukushima * Add test to check trailing null post head scenario Signed-off-by: Gabriel Fukushima * Split tests into pre and post shanghai Signed-off-by: Gabriel Fukushima * spotless Signed-off-by: Gabriel Fukushima * Rename methods Signed-off-by: Gabriel Fukushima * Use getName() to log method name Signed-off-by: Gabriel Fukushima * spotless Signed-off-by: Gabriel Fukushima * Rename variable Signed-off-by: Gabriel Fukushima * Call constructor directly Signed-off-by: Gabriel Fukushima * Fix ByHash json parsing Signed-off-by: Simon Dudley * Fix json parsing again Signed-off-by: Simon Dudley * Add check to prevent unnecessary queries Signed-off-by: Gabriel Fukushima * Refactor method Signed-off-by: Gabriel Fukushima * Add new error code for EngineGetPayloadBodies methods Signed-off-by: Gabriel Fukushima * Add return error for request above the API limit Signed-off-by: Gabriel Fukushima * Add constructor for empty response Signed-off-by: Gabriel Fukushima * add check for number of blocks requested and for requests of post head Signed-off-by: Gabriel Fukushima * Add test to check error code when request exceeds API limits Signed-off-by: Gabriel Fukushima * add constant for max blocks allowed per request Signed-off-by: Gabriel Fukushima * spotless Signed-off-by: Gabriel Fukushima * Fix some nits Signed-off-by: Gabriel Fukushima * Add invalid params check Signed-off-by: Gabriel Fukushima * Add tests for invalid params check Signed-off-by: Gabriel Fukushima * Fix test and spotless Signed-off-by: Gabriel Fukushima * Revert "Fix json parsing again" This reverts commit 558d325bf3dad474392a1c1f6b459a6d8178fb6c. Signed-off-by: Gabriel Fukushima * Revert "Fix ByHash json parsing Signed-off-by: Simon Dudley " This reverts commit 663e11e2 Signed-off-by: Gabriel Fukushima * Use UnsignedLongParameter to cast params of the request Signed-off-by: Gabriel Fukushima * Add optional withdrawals to the NewPayload log (#5021) Signed-off-by: Simon Dudley * kubernetes and errorprone - update versions (#5013) * update errorprone and kubernetes versions * fixed errorprone issues in prod cod * fixed errorprone issues in test code --------- Signed-off-by: Sally MacFarlane * Rename JsonRpcService to EngineJsonRpcService (#5036) * rename JsonRpcService to EngineJsonRpcService Signed-off-by: Daniel Lehrner * Params should be single item of array type, not outer array of strings (#5037) Signed-off-by: Simon Dudley * Add EIP-2537 (BLS12-381 curve precompiles) to Cancun (#5017) Add the BLS curve precompiles into the registry for cancun. All of the curve precompiles have been here since berlin, so this is just wiring them in. Signed-off-by: Danno Ferrin Co-authored-by: Sally MacFarlane * Use UnsignedLongParameter to cast params of the request Signed-off-by: Gabriel Fukushima * Add optional withdrawals to the NewPayload log (#5021) Signed-off-by: Simon Dudley * kubernetes and errorprone - update versions (#5013) * update errorprone and kubernetes versions * fixed errorprone issues in prod cod * fixed errorprone issues in test code --------- Signed-off-by: Sally MacFarlane * Rename JsonRpcService to EngineJsonRpcService (#5036) * rename JsonRpcService to EngineJsonRpcService Signed-off-by: Daniel Lehrner * Params should be single item of array type, not outer array of strings (#5037) Signed-off-by: Simon Dudley * Add EIP-2537 (BLS12-381 curve precompiles) to Cancun (#5017) Add the BLS curve precompiles into the registry for cancun. All of the curve precompiles have been here since berlin, so this is just wiring them in. Signed-off-by: Danno Ferrin Co-authored-by: Sally MacFarlane * Convert start and count from hex to match JSON-RPC Spec standard Signed-off-by: Gabriel Fukushima --------- Signed-off-by: Zhenyang Shi Signed-off-by: Gabriel Fukushima Signed-off-by: Simon Dudley Signed-off-by: Sally MacFarlane Signed-off-by: Daniel Lehrner Signed-off-by: Danno Ferrin Co-authored-by: Zhenyang Shi Co-authored-by: Simon Dudley Co-authored-by: Sally MacFarlane Co-authored-by: Daniel Lehrner Co-authored-by: Danno Ferrin * Revert "Keep Worldstate Storage open for Bonsai archive latest layer (#5039)" (#5073) This reverts commit e7150102ea208165ac29bd10986fe26bc9e176d0. Signed-off-by: Simon Dudley * Support post merge forks at genesis for hive tests (#5019) Signed-off-by: Jason Frame * Fix manifest docker not skipping interim builds for RCs (#5068) Signed-off-by: Jason Frame * Fix PoS checkpoint validation (#5081) * change validation to lessThan Signed-off-by: Gabriel Fukushima * Change exception message to PoS instead of Near head Signed-off-by: Gabriel Fukushima * Add unit test and fix message of existing unit test Signed-off-by: Gabriel Fukushima --------- Signed-off-by: Gabriel Fukushima * moves check for init code length before balance check (#5077) Signed-off-by: Justin Florentine * bump revision for 23.1.x release branch Signed-off-by: garyschulte * Burn in build of 23.1.0 (#5093) * rebase off of burn-in release, remove unreleased 23.1.0-RC2 from CHANGELOG Signed-off-by: garyschulte Signed-off-by: Simon Dudley Signed-off-by: Ameziane H Signed-off-by: Karim TAAM * re-default global max rpc batch size to 1k (#5104) (#5105) * default global max rpc batch size to 1000 for now Signed-off-by: garyschulte * Fix Layered World State issue (#5076) * Use the copy during prepareTrieLog instead of saveTrieLog * add final flag on BonsaiWorldStateUpdater * Use a copy of BonsaiInMemoryWorldState inside prepareTrieLog * add link to persisted worldstate storage * fix tests * Make a copy of the worldstate after committing changes to the trielog * spotless + remove maybeUnSubscribe in setNextWorldView * subscribe storage on layered worldstate * fix null issue * not close layered worldstate during getAccount * clean code * Add changelog entry --------- Signed-off-by: ahamlat Signed-off-by: Karim TAAM Co-authored-by: Karim TAAM * Add shanghaiTime to sepolia (#5088) Update and fix forkId tests Move timestamp forks from getForkBlockNumbers to getForkBlockTimestamps in JsonGenesisConfigOptions - this ultimately gets used to popoulate the ForkIdManager which handles lists of blocks and timestamps the same way so this hasn't changed any actual behaviour, but rather supports the test fixes. Implement TransitionProtocolSchedule.streamMilestoneBlocks as a concatenation of blockNumbers++blockTimestamps. This may have been a latent bug since it's used to update the node record when a fork transition occurs. Signed-off-by: Simon Dudley * If a PoS block creation repetition takes less than a configurable dur… (#5048) * If a PoS block creation repetition takes less than a configurable duration, then waits before next repetition Signed-off-by: Fabio Di Fabio * Update CHANGELOG Signed-off-by: Fabio Di Fabio * Add unit test Signed-off-by: Fabio Di Fabio * Update besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java Co-authored-by: Sally MacFarlane Signed-off-by: Fabio Di Fabio * Update besu/src/main/java/org/hyperledger/besu/cli/options/unstable/MiningOptions.java Co-authored-by: Sally MacFarlane Signed-off-by: Fabio Di Fabio --------- Signed-off-by: Fabio Di Fabio Co-authored-by: Sally MacFarlane * Allow dashes in ethstats password (#5090) Signed-off-by: Simon Dudley * reintroduce checking of block height for certain tasks when we are not PoS (Revert PR#3911) (#5083) * reintroduce checking of block height for certain tasks when we are not PoS (Revert PR#3911) Signed-off-by: Stefan Pingel <16143240+pinges@users.noreply.github.com> * Allow other users to read the /opt/besu dir when using docker (#5092) Signed-off-by: Rafael Matias Co-authored-by: Sally MacFarlane * Only use MAINNET version of KZG (#5095) Signed-off-by: Fabio Di Fabio * add more context to exception messages and debug logging (#5066) Signed-off-by: Sally MacFarlane * Fix block value calculation (#5100) * Add gasUsed calculation Signed-off-by: Gabriel Fukushima * Fix unit test Signed-off-by: Gabriel Fukushima * Fix typo Signed-off-by: Gabriel Fukushima --------- Signed-off-by: Gabriel Fukushima * Add 23.1.1-RC1 changelog Signed-off-by: Jason Frame * Change version to 23.1.1-RC1 Signed-off-by: Jason Frame --------- Signed-off-by: Simon Dudley Signed-off-by: Zhenyang Shi Signed-off-by: Gabriel Fukushima Signed-off-by: Sally MacFarlane Signed-off-by: Daniel Lehrner Signed-off-by: Danno Ferrin Signed-off-by: Jason Frame Signed-off-by: Justin Florentine Signed-off-by: garyschulte Signed-off-by: Ameziane H Signed-off-by: Karim TAAM Signed-off-by: ahamlat Signed-off-by: Fabio Di Fabio Signed-off-by: Stefan Pingel <16143240+pinges@users.noreply.github.com> Signed-off-by: Rafael Matias Co-authored-by: Simon Dudley Co-authored-by: Gabriel Fukushima Co-authored-by: Zhenyang Shi Co-authored-by: Sally MacFarlane Co-authored-by: Daniel Lehrner Co-authored-by: Danno Ferrin Co-authored-by: Justin Florentine Co-authored-by: garyschulte Co-authored-by: ahamlat Co-authored-by: Karim TAAM Co-authored-by: Fabio Di Fabio Co-authored-by: Stefan Pingel <16143240+pinges@users.noreply.github.com> Co-authored-by: Rafael Matias --- CHANGELOG.md | 10 + .../jsonrpc/EthSendRawTransactionTest.java | 6 + .../org/hyperledger/besu/cli/BesuCommand.java | 19 +- .../cli/options/unstable/MiningOptions.java | 19 + .../controller/BesuControllerBuilder.java | 4 + .../MergeBesuControllerBuilder.java | 16 +- .../besu/ForkIdsNetworkConfigTest.java | 14 +- .../hyperledger/besu/cli/BesuCommandTest.java | 25 +- ...alid_pos_checkpoint_pos_TD_equals_TTD.json | 56 + build.gradle | 13 +- .../besu/config/JsonGenesisConfigOptions.java | 8 +- .../besu/config/StubGenesisConfigOptions.java | 12 +- config/src/main/resources/sepolia.json | 1 + .../Istanbul99ProtocolManagerTest.java | 1 + .../besu/consensus/merge/MergeContext.java | 7 + .../consensus/merge/PostMergeContext.java | 17 + .../consensus/merge/TransitionContext.java | 5 + .../merge/TransitionProtocolSchedule.java | 32 +- .../besu/consensus/merge/TransitionUtils.java | 10 +- .../merge/blockcreation/MergeCoordinator.java | 14 +- .../blockcreation/MergeCoordinatorTest.java | 54 +- docker/graalvm/Dockerfile | 3 +- docker/openjdk-17-debug/Dockerfile | 3 +- docker/openjdk-17/Dockerfile | 3 +- docker/openjdk-latest/Dockerfile | 3 +- .../besu/ethereum/api/jsonrpc/RpcMethod.java | 2 + .../methods/EthSendRawTransaction.java | 15 +- .../AbstractEngineForkchoiceUpdated.java | 1 + .../engine/AbstractEngineNewPayload.java | 1 + .../EngineGetPayloadBodiesByHashV1.java | 85 + .../EngineGetPayloadBodiesByRangeV1.java | 113 + .../internal/response/JsonRpcError.java | 2 +- .../internal/results/BlockResultFactory.java | 12 + .../EngineGetPayloadBodiesResultV1.java | 79 + .../ExecutionEngineJsonRpcMethods.java | 6 + .../api/util/DomainObjectDecodeUtils.java | 4 +- .../methods/EthGetTransactionReceiptTest.java | 6 +- .../EngineGetPayloadBodiesByHashV1Test.java | 267 + .../EngineGetPayloadBodiesByRangeV1Test.java | 352 + .../besu/ethereum/chain/Blockchain.java | 5 + .../ethereum/core/BlockValueCalculator.java | 8 +- .../besu/ethereum/core/MiningParameters.java | 34 +- .../mainnet/DefaultTimestampSchedule.java | 6 + .../mainnet/HeaderBasedProtocolSchedule.java | 3 + .../mainnet/MainnetProtocolSpecs.java | 3 +- .../ethereum/mainnet/ProtocolSchedule.java | 4 - .../besu/ethereum/mainnet/ProtocolSpec.java | 15 +- .../ethereum/mainnet/ProtocolSpecBuilder.java | 9 +- .../core/BlockValueCalculatorTest.java | 4 +- .../besu/ethereum/forkid/ForkIdTest.java | 13 +- .../besu/ethereum/forkid/ForkIdTestUtil.java | 11 +- .../mainnet/TimestampScheduleBuilderTest.java | 11 + .../besu/ethereum/eth/manager/EthPeers.java | 25 +- .../manager/task/AbstractPeerRequestTask.java | 4 - .../manager/task/GetBlockFromPeerTask.java | 2 +- .../manager/task/GetBodiesFromPeerTask.java | 4 +- .../task/GetHeadersFromPeerByHashTask.java | 39 +- .../task/GetHeadersFromPeerByNumberTask.java | 3 +- ...gGetHeadersEndingAtFromPeerByHashTask.java | 19 +- .../ethereum/eth/sync/ChainHeadTracker.java | 1 + .../eth/sync/DownloadHeadersStep.java | 1 + .../sync/backwardsync/BackwardSyncStep.java | 1 + .../eth/sync/fastsync/FastSyncActions.java | 6 +- .../fastsync/PivotSelectorFromSafeBlock.java | 2 +- .../eth/sync/range/RangeHeadersFetcher.java | 1 + .../tasks/DownloadHeaderSequenceTask.java | 7 +- .../RetryingGetHeaderFromPeerByHashTask.java | 11 +- .../eth/manager/EthProtocolManagerTest.java | 26 + .../manager/EthProtocolManagerTestUtil.java | 22 +- .../ethtaskutils/AbstractMessageTaskTest.java | 1 + .../GetHeadersFromPeerByHashTaskTest.java | 29 +- .../AbstractBlockPropagationManagerTest.java | 3 + .../eth/sync/RangeHeadersFetcherTest.java | 1 + .../CheckPointSyncChainDownloaderTest.java | 4 +- .../fastsync/DownloadReceiptsStepTest.java | 2 + .../sync/fastsync/FastSyncActionsTest.java | 2 + .../fastsync/FastSyncChainDownloaderTest.java | 4 +- .../fastsync/PivotBlockConfirmerTest.java | 1 + .../fastsync/PivotBlockRetrieverTest.java | 1 + .../FullSyncChainDownloaderForkTest.java | 1 + .../fullsync/FullSyncChainDownloaderTest.java | 1 + ...DownloaderTotalTerminalDifficultyTest.java | 1 + .../sync/fullsync/FullSyncDownloaderTest.java | 1 + .../fullsync/FullSyncTargetManagerTest.java | 1 + ...neCommonAncestorTaskParameterizedTest.java | 1 + .../DetermineCommonAncestorTaskTest.java | 1 + .../ethereum/eth/transactions/TestNode.java | 1 + .../TransactionPoolFactoryTest.java | 3 + .../besu/ethstats/util/NetstatsUrl.java | 2 +- .../besu/ethstats/util/NetstatsUrlTest.java | 4 +- .../src/reference-test/external-resources | 2 +- .../NoRewardProtocolScheduleWrapper.java | 3 +- .../ethereum/retesteth/RetestethContext.java | 4 + .../operation/AbstractCreateOperation.java | 12 +- .../KZGPointEvalPrecompiledContract.java | 84 +- .../KZGPointEvalPrecompileContractTest.java | 92 +- .../evm/precompile/fail_pointEvaluation.json | 1474 --- .../precompile/pointEvaluationPrecompile.json | 170 + .../besu/evm/precompile/trusted_setup_4.txt | 71 - .../evm/precompile/trusted_setup_4096.txt | 8318 ++++++++--------- gradle.properties | 2 +- 101 files changed, 5983 insertions(+), 5914 deletions(-) create mode 100644 besu/src/test/resources/valid_pos_checkpoint_pos_TD_equals_TTD.json create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1.java create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1.java create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/EngineGetPayloadBodiesResultV1.java create mode 100644 ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1Test.java create mode 100644 ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1Test.java delete mode 100644 evm/src/test/resources/org/hyperledger/besu/evm/precompile/fail_pointEvaluation.json create mode 100644 evm/src/test/resources/org/hyperledger/besu/evm/precompile/pointEvaluationPrecompile.json delete mode 100644 evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 42947fbfffc..ca50bce2eca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 23.1.1-RC1 +Besu 23.1.1-RC is a required update only for users who want to test Shanghai on Sepolia. + +### Additions and Improvements +- Add implementation for engine_exchangeCapabilities [#4997](https://github.com/hyperledger/besu/pull/4997) +- Add implementation for engine_getPayloadBodiesByRangeV1 and engine_getPayloadBodiesByHashV1 [#4980](https://github.com/hyperledger/besu/pull/4980) +- If a PoS block creation repetition takes less than a configurable duration, then waits before next repetition [#5048](https://github.com/hyperledger/besu/pull/5048) +- Fix engine_getPayloadV2 block value calculation [#5040](https://github.com/hyperledger/besu/issues/5040) +- Add support for Shanghai in Sepolia [#5088](https://github.com/hyperledger/besu/pull/5088) + ## 23.1.0 Besu 23.1.0 is a recommended update for Mainnet users. Thank you all for your patience as we crafted this quarterly release. diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/jsonrpc/EthSendRawTransactionTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/jsonrpc/EthSendRawTransactionTest.java index 53c7d96f0d0..c16ce22e493 100644 --- a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/jsonrpc/EthSendRawTransactionTest.java +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/jsonrpc/EthSendRawTransactionTest.java @@ -65,6 +65,12 @@ public void shouldFailToSendToToStrictNodeWithoutChainId() { strictNode.verify(eth.expectEthSendRawTransactionException(rawTx, "ChainId is required")); } + @Test + public void shouldFailToSendWithInvalidRlp() { + final String invalidRawTx = "0x5555"; + strictNode.verify(eth.expectEthSendRawTransactionException(invalidRawTx, "Invalid params")); + } + @Test public void shouldSendSuccessfullyWithChainId_lenientNode() { final TransferTransaction tx = createTransactionWithChainId(); diff --git a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java index 49fe22131a2..58cd31ffc4b 100644 --- a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java +++ b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java @@ -1891,6 +1891,13 @@ private void validateMiningParams() { throw new ParameterException( this.commandLine, "--Xpos-block-creation-max-time must be positive and ≤ 12000"); } + + if (unstableMiningOptions.getPosBlockCreationRepetitionMinDuration() <= 0 + || unstableMiningOptions.getPosBlockCreationRepetitionMinDuration() > 2000) { + throw new ParameterException( + this.commandLine, + "--Xpos-block-creation-repetition-min-duration must be positive and ≤ 2000"); + } } /** @@ -2271,6 +2278,8 @@ public BesuControllerBuilder getControllerBuilder() { .powJobTimeToLive(unstableMiningOptions.getPowJobTimeToLive()) .maxOmmerDepth(unstableMiningOptions.getMaxOmmersDepth()) .posBlockCreationMaxTime(unstableMiningOptions.getPosBlockCreationMaxTime()) + .posBlockCreationRepetitionMinDuration( + unstableMiningOptions.getPosBlockCreationRepetitionMinDuration()) .build()) .transactionPoolConfiguration(buildTransactionPoolConfiguration()) .nodeKey(new NodeKey(securityModule())) @@ -3510,7 +3519,7 @@ private void validatePostMergeCheckpointBlockRequirements() { if (synchronizerConfiguration.isCheckpointPostMergeEnabled()) { if (!checkpointConfigOptions.isValid()) { throw new InvalidConfigurationException( - "Near head checkpoint sync requires a checkpoint block configured in the genesis file"); + "PoS checkpoint sync requires a checkpoint block configured in the genesis file"); } terminalTotalDifficulty.ifPresentOrElse( ttd -> { @@ -3519,18 +3528,18 @@ private void validatePostMergeCheckpointBlockRequirements() { .equals(UInt256.ZERO) && ttd.equals(UInt256.ZERO)) { throw new InvalidConfigurationException( - "Post Merge checkpoint sync can't be used with TTD = 0 and checkpoint totalDifficulty = 0"); + "PoS checkpoint sync can't be used with TTD = 0 and checkpoint totalDifficulty = 0"); } if (UInt256.fromHexString( genesisOptions.getCheckpointOptions().getTotalDifficulty().get()) - .lessOrEqualThan(ttd)) { + .lessThan(ttd)) { throw new InvalidConfigurationException( - "Near head checkpoint sync requires a block with total difficulty greater than the TTD"); + "PoS checkpoint sync requires a block with total difficulty greater or equal than the TTD"); } }, () -> { throw new InvalidConfigurationException( - "Near head checkpoint sync requires TTD in the genesis file"); + "PoS checkpoint sync requires TTD in the genesis file"); }); } } diff --git a/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/MiningOptions.java b/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/MiningOptions.java index 926174de166..232554722e2 100644 --- a/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/MiningOptions.java +++ b/besu/src/main/java/org/hyperledger/besu/cli/options/unstable/MiningOptions.java @@ -16,6 +16,7 @@ import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_MAX_OMMERS_DEPTH; import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_POS_BLOCK_CREATION_MAX_TIME; +import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_POS_BLOCK_CREATION_REPETITION_MIN_DURATION; import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_POW_JOB_TTL; import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_REMOTE_SEALERS_LIMIT; import static org.hyperledger.besu.ethereum.core.MiningParameters.DEFAULT_REMOTE_SEALERS_TTL; @@ -67,6 +68,15 @@ public class MiningOptions { "Specifies the maximum time, in milliseconds, a PoS block creation jobs is allowed to run. Must be positive and ≤ 12000 (default: ${DEFAULT-VALUE} milliseconds)") private final Long posBlockCreationMaxTime = DEFAULT_POS_BLOCK_CREATION_MAX_TIME; + @CommandLine.Option( + hidden = true, + names = {"--Xpos-block-creation-repetition-min-duration"}, + description = + "If a PoS block creation repetition takes less than this duration, in milliseconds," + + " then it waits before next repetition. Must be positive and ≤ 2000 (default: ${DEFAULT-VALUE} milliseconds)") + private final Long posBlockCreationRepetitionMinDuration = + DEFAULT_POS_BLOCK_CREATION_REPETITION_MIN_DURATION; + /** * Create mining options. * @@ -129,4 +139,13 @@ public int getMaxOmmersDepth() { public Long getPosBlockCreationMaxTime() { return posBlockCreationMaxTime; } + + /** + * Gets pos block creation repetition min duration. + * + * @return the pos block creation repetition min duration. + */ + public Long getPosBlockCreationRepetitionMinDuration() { + return posBlockCreationRepetitionMinDuration; + } } diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java index 6ac5ed7037e..db700e21260 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java @@ -75,6 +75,7 @@ import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration; import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolFactory; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.p2p.config.SubProtocolConfiguration; import org.hyperledger.besu.ethereum.storage.StorageProvider; import org.hyperledger.besu.ethereum.storage.keyvalue.KeyValueSegmentIdentifier; @@ -548,9 +549,12 @@ public BesuController build() { } } final int maxMessageSize = ethereumWireProtocolConfiguration.getMaxMessageSize(); + final Supplier currentProtocolSpecSupplier = + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()); final EthPeers ethPeers = new EthPeers( getSupportedProtocol(), + currentProtocolSpecSupplier, clock, metricsSystem, maxPeers, diff --git a/besu/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java index cf68059763c..ad382d795fc 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.controller; +import org.hyperledger.besu.config.GenesisConfigOptions; import org.hyperledger.besu.consensus.merge.MergeContext; import org.hyperledger.besu.consensus.merge.MergeProtocolSchedule; import org.hyperledger.besu.consensus.merge.PostMergeContext; @@ -186,19 +187,24 @@ protected MergeContext createConsensusContext( final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule) { - OptionalLong terminalBlockNumber = configOptionsSupplier.get().getTerminalBlockNumber(); - Optional terminalBlockHash = configOptionsSupplier.get().getTerminalBlockHash(); + final GenesisConfigOptions genesisConfigOptions = configOptionsSupplier.get(); + final OptionalLong terminalBlockNumber = genesisConfigOptions.getTerminalBlockNumber(); + final Optional terminalBlockHash = genesisConfigOptions.getTerminalBlockHash(); + final boolean isPostMergeAtGenesis = + genesisConfigOptions.getTerminalTotalDifficulty().isPresent() + && genesisConfigOptions.getTerminalTotalDifficulty().get().isZero() + && blockchain.getGenesisBlockHeader().getDifficulty().isZero(); final MergeContext mergeContext = PostMergeContext.get() .setSyncState(syncState.get()) .setTerminalTotalDifficulty( - configOptionsSupplier - .get() + genesisConfigOptions .getTerminalTotalDifficulty() .map(Difficulty::of) .orElse(Difficulty.ZERO)) - .setCheckpointPostMergeSync(syncConfig.isCheckpointPostMergeEnabled()); + .setCheckpointPostMergeSync(syncConfig.isCheckpointPostMergeEnabled()) + .setPostMergeAtGenesis(isPostMergeAtGenesis); blockchain .getFinalized() diff --git a/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java b/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java index 32518e2410c..2938088a40d 100644 --- a/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java +++ b/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java @@ -24,14 +24,13 @@ import org.hyperledger.besu.cli.config.NetworkName; import org.hyperledger.besu.config.GenesisConfigFile; import org.hyperledger.besu.config.GenesisConfigOptions; +import org.hyperledger.besu.consensus.merge.TransitionProtocolSchedule; import org.hyperledger.besu.ethereum.chain.Blockchain; import org.hyperledger.besu.ethereum.chain.GenesisState; import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.forkid.ForkId; import org.hyperledger.besu.ethereum.forkid.ForkIdManager; -import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; -import org.hyperledger.besu.evm.internal.EvmConfiguration; import java.util.Collection; import java.util.List; @@ -73,8 +72,9 @@ public static Collection parameters() { NetworkName.SEPOLIA, List.of( new ForkId(Bytes.ofUnsignedInt(0xfe3366e7L), 1735371L), - new ForkId(Bytes.ofUnsignedInt(0xb96cbd13L), 0L), - new ForkId(Bytes.ofUnsignedInt(0xb96cbd13L), 0L)) + new ForkId(Bytes.ofUnsignedInt(0xb96cbd13L), 1677557088L), + new ForkId(Bytes.ofUnsignedInt(0xf7f9bc08L), 0L), + new ForkId(Bytes.ofUnsignedInt(0xf7f9bc08L), 0L)) }, new Object[] { NetworkName.RINKEBY, @@ -168,8 +168,7 @@ public void testForkId() { final GenesisConfigFile genesisConfigFile = GenesisConfigFile.fromConfig(EthNetworkConfig.jsonConfig(chainName)); final GenesisConfigOptions configOptions = genesisConfigFile.getConfigOptions(); - final ProtocolSchedule schedule = - MainnetProtocolSchedule.fromConfig(configOptions, EvmConfiguration.DEFAULT); + final ProtocolSchedule schedule = TransitionProtocolSchedule.fromConfig(configOptions); final GenesisState genesisState = GenesisState.fromConfig(genesisConfigFile, schedule); final Blockchain mockBlockchain = mock(Blockchain.class); final BlockHeader mockBlockHeader = mock(BlockHeader.class); @@ -179,6 +178,7 @@ public void testForkId() { final AtomicLong blockNumber = new AtomicLong(); when(mockBlockchain.getChainHeadHeader()).thenReturn(mockBlockHeader); when(mockBlockHeader.getNumber()).thenAnswer(o -> blockNumber.get()); + when(mockBlockHeader.getTimestamp()).thenAnswer(o -> blockNumber.get()); final ForkIdManager forkIdManager = new ForkIdManager( @@ -187,7 +187,7 @@ public void testForkId() { genesisConfigFile.getForkTimestamps(), false); - final var actualForkIds = + final List actualForkIds = Streams.concat(schedule.streamMilestoneBlocks(), Stream.of(Long.MAX_VALUE)) .map( block -> { diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index f1ea5aabe22..99c376ceaa2 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -5518,7 +5518,7 @@ public void checkpointPostMergeShouldFailWhenGenesisHasNoTTD() throws IOExceptio assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)) - .contains("Near head checkpoint sync requires TTD in the genesis file"); + .contains("PoS checkpoint sync requires TTD in the genesis file"); } @Test @@ -5529,7 +5529,7 @@ public void checkpointPostMergeShouldFailWhenGenesisUsesCheckpointFromPreMerge() assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)) .contains( - "Near head checkpoint sync requires a block with total difficulty greater than the TTD"); + "PoS checkpoint sync requires a block with total difficulty greater or equal than the TTD"); } @Test @@ -5559,6 +5559,25 @@ public void checkpointPostMergeWithPostMergeBlockSucceeds() throws IOException { assertThat(commandErrorOutput.toString(UTF_8)).isEmpty(); } + @Test + public void checkpointPostMergeWithPostMergeBlockTDEqualsTTDSucceeds() throws IOException { + final String configText = + Resources.toString( + Resources.getResource("valid_pos_checkpoint_pos_TD_equals_TTD.json"), + StandardCharsets.UTF_8); + final Path genesisFile = createFakeGenesisFile(new JsonObject(configText)); + + parseCommand( + "--genesis-file", + genesisFile.toString(), + "--sync-mode", + "X_CHECKPOINT", + "--Xcheckpoint-post-merge-enabled"); + + assertThat(commandOutput.toString(UTF_8)).isEmpty(); + assertThat(commandErrorOutput.toString(UTF_8)).isEmpty(); + } + @Test public void checkpointMergeAtGenesisWithGenesisBlockDifficultyZeroFails() throws IOException { final String configText = @@ -5577,6 +5596,6 @@ public void checkpointMergeAtGenesisWithGenesisBlockDifficultyZeroFails() throws assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)) .contains( - "Post Merge checkpoint sync can't be used with TTD = 0 and checkpoint totalDifficulty = 0"); + "PoS checkpoint sync can't be used with TTD = 0 and checkpoint totalDifficulty = 0"); } } diff --git a/besu/src/test/resources/valid_pos_checkpoint_pos_TD_equals_TTD.json b/besu/src/test/resources/valid_pos_checkpoint_pos_TD_equals_TTD.json new file mode 100644 index 00000000000..eb7c419fed9 --- /dev/null +++ b/besu/src/test/resources/valid_pos_checkpoint_pos_TD_equals_TTD.json @@ -0,0 +1,56 @@ +{ + "config": { + "chainId": 1337, + "homesteadBlock": 0, + "daoForkBlock": 0, + "eip150Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "muirGlacierBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, + "terminalTotalDifficulty": 10, + "ethash": { + }, + "discovery": { + "dns": "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.mainnet.ethdisco.net", + "bootnodes": [ + "enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303", + "enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303", + "enode://8499da03c47d637b20eee24eec3c356c9a2e6148d6fe25ca195c7949ab8ec2c03e3556126b0d7ed644675e78c4318b08691b7b57de10e5f0d40d05b09238fa0a@52.187.207.27:30303", + "enode://103858bdb88756c71f15e9b5e09b56dc1be52f0a5021d46301dbbfb7e130029cc9d0d6f73f693bc29b665770fff7da4d34f3c6379fe12721b5d7a0bcb5ca1fc1@191.234.162.198:30303", + "enode://715171f50508aba88aecd1250af392a45a330af91d7b90701c436b618c86aaa1589c9184561907bebbb56439b8f8787bc01f49a7c77276c58c1b09822d75e8e8@52.231.165.108:30303", + "enode://5d6d7cd20d6da4bb83a1d28cadb5d409b64edf314c0335df658c1a54e32c7c4a7ab7823d57c39b6a757556e68ff1df17c748b698544a55cb488b52479a92b60f@104.42.217.25:30303", + "enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303", + "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303", + "enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303", + "enode://3f1d12044546b76342d59d4a05532c14b85aa669704bfe1f864fe079415aa2c02d743e03218e57a33fb94523adb54032871a6c51b2cc5514cb7c7e35b3ed0a99@13.93.211.84:30303", + "enode://78de8a0916848093c73790ead81d1928bec737d565119932b98c6b100d944b7a95e94f847f689fc723399d2e31129d182f7ef3863f2b4c820abbf3ab2722344d@191.235.84.50:30303", + "enode://158f8aab45f6d19c6cbf4a089c2670541a8da11978a2f90dbf6a502a4a3bab80d288afdbeb7ec0ef6d92de563767f3b1ea9e8e334ca711e9f8e2df5a0385e8e6@13.75.154.138:30303", + "enode://1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082@52.74.57.123:30303", + "enode://979b7fa28feeb35a4741660a16076f1943202cb72b6af70d327f053e248bab9ba81760f39d0701ef1d8f89cc1fbd2cacba0710a12cd5314d5e0c9021aa3637f9@5.1.83.226:30303" + ] + }, + "checkpoint": { + "hash": "0x186642d6084eb7799cb01c7eb69c1a7f3b2c32cd141e62d309f30081a1ea3c91", + "number": 3, + "totalDifficulty": "0x0a" + } + }, + "nonce": "0x42", + "timestamp": "0x0", + "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", + "gasLimit": "0x1388", + "difficulty": "0x400000000", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "alloc": { + "000d836201318ec6899a67540690382780743280": { + "balance": "0xad78ebc5ac6200000" + } + } +} diff --git a/build.gradle b/build.gradle index ae516109e8b..713d7ab4b9c 100644 --- a/build.gradle +++ b/build.gradle @@ -715,10 +715,7 @@ task dockerUpload { additionalTags.add('develop') } - def isInterimBuild = (dockerBuildVersion ==~ /.*-SNAPSHOT/) || (dockerBuildVersion ==~ /.*-alpha/) - || (dockerBuildVersion ==~ /.*-beta/) || (dockerBuildVersion ==~ /.*-RC.*/) - - if (!isInterimBuild) { + if (!isInterimBuild(dockerBuildVersion)) { additionalTags.add(dockerBuildVersion.split(/\./)[0..1].join('.')) } @@ -778,7 +775,7 @@ task manifestDocker { tags.add("${dockerImageName}:develop") } - if (!(dockerBuildVersion ==~ /.*-SNAPSHOT/)) { + if (!isInterimBuild(dockerBuildVersion)) { tags.add("${dockerImageName}:" + dockerBuildVersion.split(/\./)[0..1].join('.')) } @@ -929,6 +926,12 @@ def getCheckedOutGitCommitHash(length = 8) { } } +// Takes the version and if it contains SNAPSHOT, alpha, beta or RC in version then return true indicating an interim build +def isInterimBuild(dockerBuildVersion) { + return (dockerBuildVersion ==~ /.*-SNAPSHOT/) || (dockerBuildVersion ==~ /.*-alpha/) + || (dockerBuildVersion ==~ /.*-beta/) || (dockerBuildVersion ==~ /.*-RC.*/) +} + tasks.register("verifyDistributions") { dependsOn distTar dependsOn distZip diff --git a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java index 94d5330ac19..2f66ab343bd 100644 --- a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java @@ -596,10 +596,6 @@ public List getForkBlockNumbers() { getArrowGlacierBlockNumber(), getGrayGlacierBlockNumber(), getMergeNetSplitBlockNumber(), - getShanghaiTime(), - getCancunTime(), - getFutureEipsTime(), - getExperimentalEipsTime(), getEcip1015BlockNumber(), getDieHardBlockNumber(), getGothamBlockNumber(), @@ -623,7 +619,9 @@ public List getForkBlockNumbers() { @Override public List getForkBlockTimestamps() { - Stream forkBlockTimestamps = Stream.of(getShanghaiTime(), getCancunTime()); + Stream forkBlockTimestamps = + Stream.of( + getShanghaiTime(), getCancunTime(), getFutureEipsTime(), getExperimentalEipsTime()); // when adding forks add an entry to ${REPO_ROOT}/config/src/test/resources/all_forks.json return forkBlockTimestamps diff --git a/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java index 468a78a83bb..381602f901a 100644 --- a/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java @@ -622,22 +622,22 @@ public StubGenesisConfigOptions cancunTime(final long timestamp) { /** * Future EIPs Time block. * - * @param blockNumber the block number + * @param timestamp the block timestamp * @return the stub genesis config options */ - public StubGenesisConfigOptions futureEipsTime(final long blockNumber) { - futureEipsTime = OptionalLong.of(blockNumber); + public StubGenesisConfigOptions futureEipsTime(final long timestamp) { + futureEipsTime = OptionalLong.of(timestamp); return this; } /** * Experimental EIPs Time block. * - * @param blockNumber the block number + * @param timestamp the block timestamp * @return the stub genesis config options */ - public StubGenesisConfigOptions experimentalEipsTime(final long blockNumber) { - experimentalEipsTime = OptionalLong.of(blockNumber); + public StubGenesisConfigOptions experimentalEipsTime(final long timestamp) { + experimentalEipsTime = OptionalLong.of(timestamp); return this; } diff --git a/config/src/main/resources/sepolia.json b/config/src/main/resources/sepolia.json index b1751b86e9d..7bf96fb7f42 100644 --- a/config/src/main/resources/sepolia.json +++ b/config/src/main/resources/sepolia.json @@ -13,6 +13,7 @@ "londonBlock":0, "mergeNetSplitBlock": 1735371, "terminalTotalDifficulty": 17000000000000000, + "shanghaiTime": 1677557088, "ethash":{}, "discovery": { "dns": "enrtree://AKA3AM6LPBYEUDMVNU3BSVQJ5AD45Y7YPOHJLEF6W26QOE4VTUDPE@all.sepolia.ethdisco.net", diff --git a/consensus/ibftlegacy/src/test/java/org/hyperledger/besu/consensus/ibftlegacy/protocol/Istanbul99ProtocolManagerTest.java b/consensus/ibftlegacy/src/test/java/org/hyperledger/besu/consensus/ibftlegacy/protocol/Istanbul99ProtocolManagerTest.java index c8d9e16bcf4..aba56818181 100644 --- a/consensus/ibftlegacy/src/test/java/org/hyperledger/besu/consensus/ibftlegacy/protocol/Istanbul99ProtocolManagerTest.java +++ b/consensus/ibftlegacy/src/test/java/org/hyperledger/besu/consensus/ibftlegacy/protocol/Istanbul99ProtocolManagerTest.java @@ -111,6 +111,7 @@ public void respondToEth65GetHeadersUsingIstanbul99() EthPeers peers = new EthPeers( Istanbul99Protocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), new NoOpMetricsSystem(), 25, diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeContext.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeContext.java index 6e87f855bb2..d23fff04414 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeContext.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeContext.java @@ -192,4 +192,11 @@ default boolean isChainPruningEnabled() { * @return the boolean */ boolean isCheckpointPostMergeSync(); + + /** + * Is configured for a post-merge from genesis. + * + * @return the boolean + */ + boolean isPostMergeAtGenesis(); } diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/PostMergeContext.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/PostMergeContext.java index 12ac368c310..6ab2de612e9 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/PostMergeContext.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/PostMergeContext.java @@ -70,6 +70,7 @@ public class PostMergeContext implements MergeContext { private final AtomicReference> terminalPoWBlock = new AtomicReference<>(Optional.empty()); private boolean isCheckpointPostMergeSync; + private boolean isPostMergeAtGenesis; // TODO: cleanup - isChainPruningEnabled will not be required after // https://github.com/hyperledger/besu/pull/4703 is merged. @@ -329,4 +330,20 @@ public PostMergeContext setCheckpointPostMergeSync(final boolean isCheckpointPos public boolean isCheckpointPostMergeSync() { return this.isCheckpointPostMergeSync; } + + @Override + public boolean isPostMergeAtGenesis() { + return this.isPostMergeAtGenesis; + } + + /** + * Sets whether it is post merge at genesis + * + * @param isPostMergeAtGenesis the is post merge at genesis state + * @return the post merge context + */ + public PostMergeContext setPostMergeAtGenesis(final boolean isPostMergeAtGenesis) { + this.isPostMergeAtGenesis = isPostMergeAtGenesis; + return this; + } } diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionContext.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionContext.java index c408186af88..69183cb0c53 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionContext.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionContext.java @@ -154,4 +154,9 @@ public Optional retrieveBlockById(final PayloadIdentifier pay public boolean isCheckpointPostMergeSync() { return false; } + + @Override + public boolean isPostMergeAtGenesis() { + return postMergeContext.isPostMergeAtGenesis(); + } } diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java index 2859fc590e6..5a2ab0a567a 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java @@ -16,11 +16,14 @@ import static org.hyperledger.besu.util.Slf4jLambdaHelper.debugLambda; +import org.hyperledger.besu.config.GenesisConfigOptions; import org.hyperledger.besu.ethereum.ProtocolContext; import org.hyperledger.besu.ethereum.core.Difficulty; +import org.hyperledger.besu.ethereum.core.PrivacyParameters; import org.hyperledger.besu.ethereum.core.ProcessableBlockHeader; import org.hyperledger.besu.ethereum.core.TransactionFilter; import org.hyperledger.besu.ethereum.mainnet.HeaderBasedProtocolSchedule; +import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.mainnet.TimestampSchedule; @@ -60,6 +63,29 @@ public TransitionProtocolSchedule( new TransitionUtils<>(preMergeProtocolSchedule, postMergeProtocolSchedule, mergeContext); } + /** + * Create a Proof-of-Stake protocol schedule from a config object + * + * @param genesisConfigOptions {@link GenesisConfigOptions} containing the config options for the + * milestone starting points + * @return an initialised TransitionProtocolSchedule using post-merge defaults + */ + public static TransitionProtocolSchedule fromConfig( + final GenesisConfigOptions genesisConfigOptions) { + ProtocolSchedule preMergeProtocolSchedule = + MainnetProtocolSchedule.fromConfig(genesisConfigOptions); + ProtocolSchedule postMergeProtocolSchedule = + MergeProtocolSchedule.create(genesisConfigOptions, false); + TimestampSchedule timestampSchedule = + MergeProtocolSchedule.createTimestamp( + genesisConfigOptions, PrivacyParameters.DEFAULT, false); + return new TransitionProtocolSchedule( + preMergeProtocolSchedule, + postMergeProtocolSchedule, + PostMergeContext.get(), + timestampSchedule); + } + /** * Gets pre merge schedule. * @@ -162,8 +188,10 @@ public ProtocolSpec getByBlockNumber(final long number) { */ @Override public Stream streamMilestoneBlocks() { - return transitionUtils.dispatchFunctionAccordingToMergeState( - ProtocolSchedule::streamMilestoneBlocks); + Stream milestoneBlockNumbers = + transitionUtils.dispatchFunctionAccordingToMergeState( + ProtocolSchedule::streamMilestoneBlocks); + return Stream.concat(milestoneBlockNumbers, timestampSchedule.streamMilestoneBlocks()); } /** diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionUtils.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionUtils.java index 5f75f0012f2..c36e30b3000 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionUtils.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionUtils.java @@ -116,6 +116,13 @@ public static boolean isTerminalProofOfWorkBlock( // if we cannot find difficulty or are merge-at-genesis .orElse(Difficulty.ZERO); + final MergeContext consensusContext = context.getConsensusContext(MergeContext.class); + + // Genesis is configured for post-merge we will never have a terminal pow block + if (consensusContext.isPostMergeAtGenesis()) { + return false; + } + if (currentChainTotalDifficulty.isZero()) { warnLambda( LOG, @@ -123,8 +130,7 @@ public static boolean isTerminalProofOfWorkBlock( header::toLogString, header::getParentHash); } - Difficulty configuredTotalTerminalDifficulty = - context.getConsensusContext(MergeContext.class).getTerminalTotalDifficulty(); + Difficulty configuredTotalTerminalDifficulty = consensusContext.getTerminalTotalDifficulty(); if (currentChainTotalDifficulty .add(headerDifficulty) diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinator.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinator.java index ac1e25b0254..56030131ea1 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinator.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinator.java @@ -344,10 +344,20 @@ private void tryToBuildBetterBlock( private Void retryBlockCreationUntilUseful( final PayloadIdentifier payloadIdentifier, final Supplier blockCreator) { + long lastStartAt; + while (!isBlockCreationCancelled(payloadIdentifier)) { try { - recoverableBlockCreation(payloadIdentifier, blockCreator, System.currentTimeMillis()); - } catch (final CancellationException ce) { + lastStartAt = System.currentTimeMillis(); + recoverableBlockCreation(payloadIdentifier, blockCreator, lastStartAt); + final long lastDuration = System.currentTimeMillis() - lastStartAt; + final long waitBeforeRepetition = + miningParameters.getPosBlockCreationRepetitionMinDuration() - lastDuration; + if (waitBeforeRepetition > 0) { + LOG.debug("Waiting {}ms before repeating block creation", waitBeforeRepetition); + Thread.sleep(waitBeforeRepetition); + } + } catch (final CancellationException | InterruptedException ce) { debugLambda( LOG, "Block creation for payload id {} has been cancelled, reason {}", diff --git a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java index 4f7a5a16e62..12d8afd673e 100644 --- a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java +++ b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java @@ -75,6 +75,7 @@ import org.hyperledger.besu.testutil.TestClock; import java.time.ZoneId; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -114,6 +115,8 @@ public class MergeCoordinatorTest implements MergeGenesisConfigHelper { private static final KeyPair KEYS1 = new KeyPair(PRIVATE_KEY1, SIGNATURE_ALGORITHM.get().createPublicKey(PRIVATE_KEY1)); private static final Optional> EMPTY_WITHDRAWALS = Optional.empty(); + + private static final long REPETITION_MIN_DURATION = 100; @Mock MergeContext mergeContext; @Mock BackwardSyncContext backwardSyncContext; @@ -121,7 +124,11 @@ public class MergeCoordinatorTest implements MergeGenesisConfigHelper { private final Address coinbase = genesisAllocations(getPosGenesisConfigFile()).findFirst().get(); @Spy - MiningParameters miningParameters = new MiningParameters.Builder().coinbase(coinbase).build(); + MiningParameters miningParameters = + new MiningParameters.Builder() + .coinbase(coinbase) + .posBlockCreationRepetitionMinDuration(REPETITION_MIN_DURATION) + .build(); private MergeCoordinator coordinator; private ProtocolContext protocolContext; @@ -353,6 +360,51 @@ public void shouldContinueBuildingBlocksUntilFinalizeIsCalled() } } + @Test + public void blockCreationRepetitionShouldTakeNotLessThanRepetitionMinDuration() + throws InterruptedException, ExecutionException { + final AtomicLong retries = new AtomicLong(0); + final AtomicLong lastPutAt = new AtomicLong(); + final List repetitionDurations = new ArrayList<>(); + + doAnswer( + invocation -> { + final long r = retries.getAndIncrement(); + if (r == 0) { + // ignore first one, that is the empty block + } else if (r < 5) { + if (lastPutAt.get() > 0) { + // each repetition should take >= REPETITION_MIN_DURATION + repetitionDurations.add(System.currentTimeMillis() - lastPutAt.get()); + } + lastPutAt.set(System.currentTimeMillis()); + } else { + // finalize after 5 repetitions + coordinator.finalizeProposalById( + invocation.getArgument(0, PayloadIdentifier.class)); + } + return null; + }) + .when(mergeContext) + .putPayloadById(any(), any()); + + var payloadId = + coordinator.preparePayload( + genesisState.getBlock().getHeader(), + System.currentTimeMillis() / 1000, + Bytes32.ZERO, + suggestedFeeRecipient, + Optional.empty()); + + blockCreationTask.get(); + + verify(mergeContext, times(retries.intValue())).putPayloadById(eq(payloadId), any()); + + // check with a tolerance + assertThat(repetitionDurations) + .allSatisfy(d -> assertThat(d).isGreaterThanOrEqualTo(REPETITION_MIN_DURATION - 10)); + } + @Test public void shouldRetryBlockCreationOnRecoverableError() throws InterruptedException, ExecutionException { diff --git a/docker/graalvm/Dockerfile b/docker/graalvm/Dockerfile index 1b656ff3a7d..d4009b9c929 100644 --- a/docker/graalvm/Dockerfile +++ b/docker/graalvm/Dockerfile @@ -3,7 +3,8 @@ FROM ghcr.io/graalvm/graalvm-ce:ol9-java17 ARG VERSION="dev" RUN adduser --home /opt/besu besu && \ - chown besu:besu /opt/besu + chown besu:besu /opt/besu && \ + chmod 0755 /opt/besu USER besu WORKDIR /opt/besu diff --git a/docker/openjdk-17-debug/Dockerfile b/docker/openjdk-17-debug/Dockerfile index adf0e88669c..e938677b428 100644 --- a/docker/openjdk-17-debug/Dockerfile +++ b/docker/openjdk-17-debug/Dockerfile @@ -7,7 +7,8 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --gecos "" --home /opt/besu besu && \ - chown besu:besu /opt/besu + chown besu:besu /opt/besu && \ + chmod 0755 /opt/besu USER besu WORKDIR /opt/besu diff --git a/docker/openjdk-17/Dockerfile b/docker/openjdk-17/Dockerfile index 1eeac94cd8a..dbc30e7dbb0 100644 --- a/docker/openjdk-17/Dockerfile +++ b/docker/openjdk-17/Dockerfile @@ -7,7 +7,8 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --gecos "" --home /opt/besu besu && \ - chown besu:besu /opt/besu + chown besu:besu /opt/besu && \ + chmod 0755 /opt/besu USER besu WORKDIR /opt/besu diff --git a/docker/openjdk-latest/Dockerfile b/docker/openjdk-latest/Dockerfile index e2081facc5d..0736ab4a324 100644 --- a/docker/openjdk-latest/Dockerfile +++ b/docker/openjdk-latest/Dockerfile @@ -7,7 +7,8 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --gecos "" --home /opt/besu besu && \ - chown besu:besu /opt/besu + chown besu:besu /opt/besu && \ + chmod 0755 /opt/besu USER besu WORKDIR /opt/besu diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java index cb20677899b..25e1786b1d9 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java @@ -56,6 +56,8 @@ public enum RpcMethod { ENGINE_FORKCHOICE_UPDATED_V1("engine_forkchoiceUpdatedV1"), ENGINE_FORKCHOICE_UPDATED_V2("engine_forkchoiceUpdatedV2"), ENGINE_EXCHANGE_TRANSITION_CONFIGURATION("engine_exchangeTransitionConfigurationV1"), + ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1("engine_getPayloadBodiesByHashV1"), + ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1("engine_getPayloadBodiesByRangeV1"), ENGINE_EXCHANGE_CAPABILITIES("engine_exchangeCapabilities"), GOQUORUM_ETH_GET_QUORUM_PAYLOAD("eth_getQuorumPayload"), diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSendRawTransaction.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSendRawTransaction.java index 847d019bb4b..0282bbeeaab 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSendRawTransaction.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSendRawTransaction.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.JsonRpcErrorConverter; import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.exception.InvalidJsonRpcRequestException; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse; @@ -68,13 +69,21 @@ public JsonRpcResponse response(final JsonRpcRequestContext requestContext) { final Transaction transaction; try { transaction = DomainObjectDecodeUtils.decodeRawTransaction(rawTransaction); - } catch (final RLPException | IllegalArgumentException e) { + LOG.trace("Received local transaction {}", transaction); + } catch (final RLPException e) { + LOG.debug("RLPException: {} caused by {}", e.getMessage(), e.getCause()); + return new JsonRpcErrorResponse( + requestContext.getRequest().getId(), JsonRpcError.INVALID_PARAMS); + } catch (final InvalidJsonRpcRequestException i) { + LOG.debug("InvalidJsonRpcRequestException: {} caused by {}", i.getMessage(), i.getCause()); + return new JsonRpcErrorResponse( + requestContext.getRequest().getId(), JsonRpcError.INVALID_PARAMS); + } catch (final IllegalArgumentException ill) { + LOG.debug("IllegalArgumentException: {} caused by {}", ill.getMessage(), ill.getCause()); return new JsonRpcErrorResponse( requestContext.getRequest().getId(), JsonRpcError.INVALID_PARAMS); } - LOG.trace("Received local transaction {}", transaction); - final ValidationResult validationResult = transactionPool.get().addLocalTransaction(transaction); return validationResult.either( diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineForkchoiceUpdated.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineForkchoiceUpdated.java index 14a01f11f8b..265857af1fa 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineForkchoiceUpdated.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineForkchoiceUpdated.java @@ -121,6 +121,7 @@ public JsonRpcResponse syncResponse(final JsonRpcRequestContext requestContext) // TODO: post-merge cleanup, this should be unnecessary after merge if (requireTerminalPoWBlockValidation() && !mergeContext.get().isCheckpointPostMergeSync() + && !mergeContext.get().isPostMergeAtGenesis() && !mergeCoordinator.latestValidAncestorDescendsFromTerminal(newHead) && !mergeContext.get().isChainPruningEnabled()) { logForkchoiceUpdatedCall(INVALID, forkChoice); diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java index de4b2a12f6c..e4800bf3620 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java @@ -213,6 +213,7 @@ public JsonRpcResponse syncResponse(final JsonRpcRequestContext requestContext) // TODO: post-merge cleanup if (requireTerminalPoWBlockValidation() && !mergeContext.get().isCheckpointPostMergeSync() + && !mergeContext.get().isPostMergeAtGenesis() && !mergeCoordinator.latestValidAncestorDescendsFromTerminal(newBlockHeader) && !mergeContext.get().isChainPruningEnabled()) { mergeCoordinator.addBadBlock(block, Optional.empty()); diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1.java new file mode 100644 index 00000000000..4c1f451403f --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1.java @@ -0,0 +1,85 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine; + +import static org.hyperledger.besu.util.Slf4jLambdaHelper.traceLambda; + +import org.hyperledger.besu.datatypes.Hash; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.ExecutionEngineJsonRpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.BlockResultFactory; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineGetPayloadBodiesResultV1; +import org.hyperledger.besu.ethereum.chain.Blockchain; + +import java.util.Arrays; +import java.util.stream.Collectors; + +import io.vertx.core.Vertx; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EngineGetPayloadBodiesByHashV1 extends ExecutionEngineJsonRpcMethod { + + private static final int MAX_REQUEST_BLOCKS = 1024; + private static final Logger LOG = LoggerFactory.getLogger(EngineGetPayloadBodiesByHashV1.class); + private final BlockResultFactory blockResultFactory; + + public EngineGetPayloadBodiesByHashV1( + final Vertx vertx, + final ProtocolContext protocolContext, + final BlockResultFactory blockResultFactory, + final EngineCallListener engineCallListener) { + super(vertx, protocolContext, engineCallListener); + this.blockResultFactory = blockResultFactory; + } + + @Override + public String getName() { + return RpcMethod.ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1.getMethodName(); + } + + @Override + public JsonRpcResponse syncResponse(final JsonRpcRequestContext request) { + engineCallListener.executionEngineCalled(); + + final Object reqId = request.getRequest().getId(); + + final Hash[] blockHashes = request.getRequiredParameter(0, Hash[].class); + + traceLambda(LOG, "{} parameters: blockHashes {}", () -> getName(), () -> blockHashes); + + if (blockHashes.length > getMaxRequestBlocks()) { + return new JsonRpcErrorResponse(reqId, JsonRpcError.INVALID_RANGE_REQUEST_TOO_LARGE); + } + + final Blockchain blockchain = protocolContext.getBlockchain(); + + final EngineGetPayloadBodiesResultV1 engineGetPayloadBodiesResultV1 = + blockResultFactory.payloadBodiesCompleteV1( + Arrays.stream(blockHashes).map(blockchain::getBlockBody).collect(Collectors.toList())); + + return new JsonRpcSuccessResponse(reqId, engineGetPayloadBodiesResultV1); + } + + protected int getMaxRequestBlocks() { + return MAX_REQUEST_BLOCKS; + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1.java new file mode 100644 index 00000000000..a9d1a120a83 --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1.java @@ -0,0 +1,113 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine; + +import static org.hyperledger.besu.util.Slf4jLambdaHelper.traceLambda; + +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.ExecutionEngineJsonRpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.UnsignedLongParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.BlockResultFactory; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineGetPayloadBodiesResultV1; +import org.hyperledger.besu.ethereum.chain.Blockchain; + +import java.util.stream.Collectors; +import java.util.stream.LongStream; + +import io.vertx.core.Vertx; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EngineGetPayloadBodiesByRangeV1 extends ExecutionEngineJsonRpcMethod { + private static final Logger LOG = LoggerFactory.getLogger(EngineGetPayloadBodiesByRangeV1.class); + private static final int MAX_REQUEST_BLOCKS = 1024; + private final BlockResultFactory blockResultFactory; + + public EngineGetPayloadBodiesByRangeV1( + final Vertx vertx, + final ProtocolContext protocolContext, + final BlockResultFactory blockResultFactory, + final EngineCallListener engineCallListener) { + super(vertx, protocolContext, engineCallListener); + this.blockResultFactory = blockResultFactory; + } + + @Override + public String getName() { + return RpcMethod.ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1.getMethodName(); + } + + @Override + public JsonRpcResponse syncResponse(final JsonRpcRequestContext request) { + engineCallListener.executionEngineCalled(); + + final long startBlockNumber = + request.getRequiredParameter(0, UnsignedLongParameter.class).getValue(); + final long count = request.getRequiredParameter(1, UnsignedLongParameter.class).getValue(); + final Object reqId = request.getRequest().getId(); + + traceLambda( + LOG, + "{} parameters: start block number {} count {}", + () -> getName(), + () -> startBlockNumber, + () -> count); + + if (startBlockNumber < 1 || count < 1) { + return new JsonRpcErrorResponse(reqId, JsonRpcError.INVALID_PARAMS); + } + + if (count > getMaxRequestBlocks()) { + return new JsonRpcErrorResponse(reqId, JsonRpcError.INVALID_RANGE_REQUEST_TOO_LARGE); + } + + final Blockchain blockchain = protocolContext.getBlockchain(); + final long chainHeadBlockNumber = blockchain.getChainHeadBlockNumber(); + + // request startBlockNumber is beyond head of chain + if (chainHeadBlockNumber < startBlockNumber) { + // Empty List of payloadBodies + return new JsonRpcSuccessResponse(reqId, new EngineGetPayloadBodiesResultV1()); + } + + final long upperBound = startBlockNumber + count; + + // if we've received request from blocks beyond the head we exclude those from the query + final long endExclusiveBlockNumber = + chainHeadBlockNumber < upperBound ? chainHeadBlockNumber + 1 : upperBound; + + EngineGetPayloadBodiesResultV1 engineGetPayloadBodiesResultV1 = + blockResultFactory.payloadBodiesCompleteV1( + LongStream.range(startBlockNumber, endExclusiveBlockNumber) + .mapToObj( + blockNumber -> + blockchain + .getBlockHashByNumber(blockNumber) + .flatMap(blockchain::getBlockBody)) + .collect(Collectors.toList())); + + return new JsonRpcSuccessResponse(reqId, engineGetPayloadBodiesResultV1); + } + + protected int getMaxRequestBlocks() { + return MAX_REQUEST_BLOCKS; + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/response/JsonRpcError.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/response/JsonRpcError.java index 7321375db57..8349f93afd6 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/response/JsonRpcError.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/response/JsonRpcError.java @@ -83,7 +83,7 @@ public enum JsonRpcError { INVALID_TERMINAL_BLOCK(-32002, "Terminal block doesn't satisfy terminal block conditions"), INVALID_FORKCHOICE_STATE(-38002, "Invalid forkchoice state"), INVALID_PAYLOAD_ATTRIBUTES(-38003, "Invalid payload attributes"), - + INVALID_RANGE_REQUEST_TOO_LARGE(-38004, "Too large request"), // Miner failures COINBASE_NOT_SET(-32010, "Coinbase not set. Unable to start mining without a coinbase"), NO_HASHES_PER_SECOND(-32011, "No hashes being generated by the current node"), diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/BlockResultFactory.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/BlockResultFactory.java index 1ad670d5ce1..2685f888a37 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/BlockResultFactory.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/BlockResultFactory.java @@ -16,9 +16,11 @@ import org.hyperledger.besu.datatypes.Hash; import org.hyperledger.besu.datatypes.Wei; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineGetPayloadBodiesResultV1.PayloadBody; import org.hyperledger.besu.ethereum.api.query.BlockWithMetadata; import org.hyperledger.besu.ethereum.api.query.TransactionWithMetadata; import org.hyperledger.besu.ethereum.core.Block; +import org.hyperledger.besu.ethereum.core.BlockBody; import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.BlockValueCalculator; import org.hyperledger.besu.ethereum.core.BlockWithReceipts; @@ -26,6 +28,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import com.fasterxml.jackson.databind.JsonNode; @@ -115,6 +118,15 @@ public EngineGetPayloadResultV2 payloadTransactionCompleteV2( Quantity.create(blockValue)); } + public EngineGetPayloadBodiesResultV1 payloadBodiesCompleteV1( + final List> blockBodies) { + final List payloadBodies = + blockBodies.stream() + .map(maybeBody -> maybeBody.map(PayloadBody::new).orElse(null)) + .collect(Collectors.toList()); + return new EngineGetPayloadBodiesResultV1(payloadBodies); + } + public BlockResult transactionHash(final BlockWithMetadata blockWithMetadata) { return transactionHash(blockWithMetadata, false); } diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/EngineGetPayloadBodiesResultV1.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/EngineGetPayloadBodiesResultV1.java new file mode 100644 index 00000000000..4358230ee09 --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/EngineGetPayloadBodiesResultV1.java @@ -0,0 +1,79 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.results; + +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.WithdrawalParameter; +import org.hyperledger.besu.ethereum.core.BlockBody; +import org.hyperledger.besu.ethereum.core.encoding.TransactionEncoder; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import com.fasterxml.jackson.annotation.JsonGetter; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonValue; +import org.apache.tuweni.bytes.Bytes; + +@JsonPropertyOrder({"payloadBodies"}) +public class EngineGetPayloadBodiesResultV1 { + + private final List payloadBodies; + + public EngineGetPayloadBodiesResultV1() { + this.payloadBodies = Collections.emptyList(); + } + + public EngineGetPayloadBodiesResultV1(final List payloadBody) { + this.payloadBodies = payloadBody; + } + + @JsonValue + public List getPayloadBodies() { + return payloadBodies; + } + + public static class PayloadBody { + private final List transactions; + private final List withdrawals; + + public PayloadBody(final BlockBody blockBody) { + this.transactions = + blockBody.getTransactions().stream() + .map(TransactionEncoder::encodeOpaqueBytes) + .map(Bytes::toHexString) + .collect(Collectors.toList()); + this.withdrawals = + blockBody + .getWithdrawals() + .map( + ws -> + ws.stream() + .map(WithdrawalParameter::fromWithdrawal) + .collect(Collectors.toList())) + .orElse(null); + } + + @JsonGetter(value = "transactions") + public List getTransactions() { + return transactions; + } + + @JsonGetter(value = "withdrawals") + public List getWithdrawals() { + return withdrawals; + } + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java index 0de76d5b620..ccf50334784 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java @@ -22,6 +22,8 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineExchangeTransitionConfiguration; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineForkchoiceUpdatedV1; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineForkchoiceUpdatedV2; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineGetPayloadBodiesByHashV1; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineGetPayloadBodiesByRangeV1; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineGetPayloadV1; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineGetPayloadV2; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineNewPayloadV1; @@ -114,6 +116,10 @@ protected Map create() { engineQosTimer), new EngineExchangeTransitionConfiguration( consensusEngineServer, protocolContext, engineQosTimer), + new EngineGetPayloadBodiesByHashV1( + consensusEngineServer, protocolContext, blockResultFactory, engineQosTimer), + new EngineGetPayloadBodiesByRangeV1( + consensusEngineServer, protocolContext, blockResultFactory, engineQosTimer), new EngineExchangeCapabilities(consensusEngineServer, protocolContext, engineQosTimer)); } else { return mapOf( diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/util/DomainObjectDecodeUtils.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/util/DomainObjectDecodeUtils.java index 5d3d1bb752b..31e4abebb9e 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/util/DomainObjectDecodeUtils.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/util/DomainObjectDecodeUtils.java @@ -30,8 +30,10 @@ public static Transaction decodeRawTransaction(final String rawTransaction) Bytes txnBytes = Bytes.fromHexString(rawTransaction); final boolean isGoQuorumCompatibilityMode = GoQuorumOptions.getGoQuorumCompatibilityMode(); return TransactionDecoder.decodeOpaqueBytes(txnBytes, isGoQuorumCompatibilityMode); - } catch (final IllegalArgumentException | RLPException e) { + } catch (final IllegalArgumentException e) { throw new InvalidJsonRpcRequestException("Invalid raw transaction hex", e); + } catch (final RLPException r) { + throw new InvalidJsonRpcRequestException("Invalid RLP in raw transaction hex", r); } } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetTransactionReceiptTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetTransactionReceiptTest.java index 55bde158abf..615bf3edefe 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetTransactionReceiptTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetTransactionReceiptTest.java @@ -113,7 +113,8 @@ public class EthGetTransactionReceiptTest { null, Optional.of(PoWHasher.ETHASH_LIGHT), null, - Optional.empty()); + Optional.empty(), + true); private final ProtocolSpec statusTransactionTypeSpec = new ProtocolSpec( "status", @@ -140,7 +141,8 @@ public class EthGetTransactionReceiptTest { null, Optional.of(PoWHasher.ETHASH_LIGHT), null, - Optional.empty()); + Optional.empty(), + true); @SuppressWarnings("unchecked") private final ProtocolSchedule protocolSchedule = mock(ProtocolSchedule.class); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1Test.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1Test.java new file mode 100644 index 00000000000..03493d7f05e --- /dev/null +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByHashV1Test.java @@ -0,0 +1,267 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError.INVALID_RANGE_REQUEST_TOO_LARGE; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import org.hyperledger.besu.crypto.SignatureAlgorithm; +import org.hyperledger.besu.crypto.SignatureAlgorithmFactory; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.datatypes.GWei; +import org.hyperledger.besu.datatypes.Hash; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponseType; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.BlockResultFactory; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineGetPayloadBodiesResultV1; +import org.hyperledger.besu.ethereum.chain.MutableBlockchain; +import org.hyperledger.besu.ethereum.core.BlockBody; +import org.hyperledger.besu.ethereum.core.TransactionTestFixture; +import org.hyperledger.besu.ethereum.core.Withdrawal; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import io.vertx.core.Vertx; +import org.apache.tuweni.bytes.Bytes32; +import org.apache.tuweni.units.bigints.UInt64; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class EngineGetPayloadBodiesByHashV1Test { + private EngineGetPayloadBodiesByHashV1 method; + private static final Vertx vertx = Vertx.vertx(); + private static final BlockResultFactory blockResultFactory = new BlockResultFactory(); + @Mock private ProtocolContext protocolContext; + @Mock private EngineCallListener engineCallListener; + @Mock private MutableBlockchain blockchain; + + @Before + public void before() { + when(protocolContext.getBlockchain()).thenReturn(blockchain); + this.method = + spy( + new EngineGetPayloadBodiesByHashV1( + vertx, protocolContext, blockResultFactory, engineCallListener)); + } + + @Test + public void shouldReturnExpectedMethodName() { + assertThat(method.getName()).isEqualTo("engine_getPayloadBodiesByHashV1"); + } + + @Test + public void shouldReturnEmptyPayloadBodiesWithEmptyHash() { + final var resp = resp(new Hash[] {}); + final EngineGetPayloadBodiesResultV1 result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().isEmpty()).isTrue(); + } + + @Test + public void shouldReturnPayloadForKnownHashes() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final BlockBody blockBody1 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody2 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody3 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(blockBody1)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(blockBody2)); + when(blockchain.getBlockBody(blockHash3)).thenReturn(Optional.of(blockBody3)); + + final var resp = resp(new Hash[] {blockHash1, blockHash2, blockHash3}); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(2).getTransactions().size()).isEqualTo(3); + } + + @Test + public void shouldReturnNullForUnknownHashes() { + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final var resp = resp(new Hash[] {blockHash1, blockHash2, blockHash3}); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0)).isNull(); + assertThat(result.getPayloadBodies().get(1)).isNull(); + assertThat(result.getPayloadBodies().get(2)).isNull(); + } + + @Test + public void shouldReturnNullForUnknownHashAndPayloadForKnownHash() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final BlockBody blockBody1 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody3 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(blockBody1)); + when(blockchain.getBlockBody(blockHash3)).thenReturn(Optional.of(blockBody3)); + + final var resp = resp(new Hash[] {blockHash1, blockHash2, blockHash3}); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1)).isNull(); + assertThat(result.getPayloadBodies().get(2).getTransactions().size()).isEqualTo(3); + } + + @Test + public void shouldReturnWithdrawalNullWhenBlockIsPreShanghai() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final BlockBody preShanghaiBlockBody = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + + final BlockBody preShanghaiBlockBody2 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.empty()); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(preShanghaiBlockBody)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(preShanghaiBlockBody2)); + + final var resp = resp(new Hash[] {blockHash1, blockHash2}); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getWithdrawals()).isNull(); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getWithdrawals()).isNull(); + } + + @Test + public void shouldReturnWithdrawalsWhenBlockIsPostShanghai() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Withdrawal withdrawal = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x1"), GWei.ONE); + final Withdrawal withdrawal2 = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x2"), GWei.ONE); + + final BlockBody shanghaiBlockBody = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + + final BlockBody shanghaiBlockBody2 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal2))); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(shanghaiBlockBody)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(shanghaiBlockBody2)); + + final var resp = resp(new Hash[] {blockHash1, blockHash2}); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getWithdrawals().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getWithdrawals().size()).isEqualTo(1); + } + + @Test + public void shouldReturnErrorWhenRequestExceedsPermittedNumberOfBlocks() { + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash[] hashes = new Hash[] {blockHash1, blockHash2}; + + doReturn(1).when(method).getMaxRequestBlocks(); + + final JsonRpcResponse resp = resp(hashes); + final var result = fromErrorResp(resp); + assertThat(result.getCode()).isEqualTo(INVALID_RANGE_REQUEST_TOO_LARGE.getCode()); + } + + private JsonRpcResponse resp(final Hash[] hashes) { + return method.response( + new JsonRpcRequestContext( + new JsonRpcRequest( + "2.0", + RpcMethod.ENGINE_GET_PAYLOAD_BODIES_BY_HASH_V1.getMethodName(), + new Object[] {hashes}))); + } + + private EngineGetPayloadBodiesResultV1 fromSuccessResp(final JsonRpcResponse resp) { + assertThat(resp.getType()).isEqualTo(JsonRpcResponseType.SUCCESS); + return Optional.of(resp) + .map(JsonRpcSuccessResponse.class::cast) + .map(JsonRpcSuccessResponse::getResult) + .map(EngineGetPayloadBodiesResultV1.class::cast) + .get(); + } + + private JsonRpcError fromErrorResp(final JsonRpcResponse resp) { + assertThat(resp.getType()).isEqualTo(JsonRpcResponseType.ERROR); + return Optional.of(resp) + .map(JsonRpcErrorResponse.class::cast) + .map(JsonRpcErrorResponse::getError) + .get(); + } +} diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1Test.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1Test.java new file mode 100644 index 00000000000..5711d05d27f --- /dev/null +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineGetPayloadBodiesByRangeV1Test.java @@ -0,0 +1,352 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError.INVALID_PARAMS; +import static org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError.INVALID_RANGE_REQUEST_TOO_LARGE; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import org.hyperledger.besu.crypto.SignatureAlgorithm; +import org.hyperledger.besu.crypto.SignatureAlgorithmFactory; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.datatypes.GWei; +import org.hyperledger.besu.datatypes.Hash; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponseType; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.BlockResultFactory; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineGetPayloadBodiesResultV1; +import org.hyperledger.besu.ethereum.chain.MutableBlockchain; +import org.hyperledger.besu.ethereum.core.BlockBody; +import org.hyperledger.besu.ethereum.core.TransactionTestFixture; +import org.hyperledger.besu.ethereum.core.Withdrawal; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import io.vertx.core.Vertx; +import org.apache.tuweni.bytes.Bytes32; +import org.apache.tuweni.units.bigints.UInt64; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class EngineGetPayloadBodiesByRangeV1Test { + private EngineGetPayloadBodiesByRangeV1 method; + private static final Vertx vertx = Vertx.vertx(); + private static final BlockResultFactory blockResultFactory = new BlockResultFactory(); + @Mock private ProtocolContext protocolContext; + @Mock private EngineCallListener engineCallListener; + @Mock private MutableBlockchain blockchain; + + @Before + public void before() { + when(protocolContext.getBlockchain()).thenReturn(blockchain); + this.method = + spy( + new EngineGetPayloadBodiesByRangeV1( + vertx, protocolContext, blockResultFactory, engineCallListener)); + } + + @Test + public void shouldReturnExpectedMethodName() { + assertThat(method.getName()).isEqualTo("engine_getPayloadBodiesByRangeV1"); + } + + @Test + public void shouldReturnPayloadForKnownNumber() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final BlockBody blockBody1 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody2 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody3 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(130)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(blockBody1)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(blockBody2)); + when(blockchain.getBlockBody(blockHash3)).thenReturn(Optional.of(blockBody3)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + when(blockchain.getBlockHashByNumber(124)).thenReturn(Optional.of(blockHash2)); + when(blockchain.getBlockHashByNumber(125)).thenReturn(Optional.of(blockHash3)); + + final var resp = resp("0x7b", "0x3"); + final EngineGetPayloadBodiesResultV1 result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(2).getTransactions().size()).isEqualTo(3); + } + + @Test + public void shouldReturnNullForUnknownNumber() { + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(130)); + final var resp = resp("0x7b", "0x3"); + final EngineGetPayloadBodiesResultV1 result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0)).isNull(); + assertThat(result.getPayloadBodies().get(1)).isNull(); + assertThat(result.getPayloadBodies().get(2)).isNull(); + } + + @Test + public void shouldReturnNullForUnknownNumberAndPayloadForKnownNumber() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final BlockBody blockBody1 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + final BlockBody blockBody3 = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(130)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(blockBody1)); + when(blockchain.getBlockBody(blockHash3)).thenReturn(Optional.of(blockBody3)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + when(blockchain.getBlockHashByNumber(125)).thenReturn(Optional.of(blockHash3)); + + final var resp = resp("0x7b", "0x3"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1)).isNull(); + assertThat(result.getPayloadBodies().get(2).getTransactions().size()).isEqualTo(3); + } + + @Test + public void shouldReturnNullForWithdrawalsWhenBlockIsPreShanghai() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + + final BlockBody preShanghaiBlockBody = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList()); + + final BlockBody preShanghaiBlockBody2 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.empty()); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(130)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(preShanghaiBlockBody)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(preShanghaiBlockBody2)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + when(blockchain.getBlockHashByNumber(124)).thenReturn(Optional.of(blockHash2)); + + final var resp = resp("0x7b", "0x2"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getWithdrawals()).isNull(); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getWithdrawals()).isNull(); + ; + } + + @Test + public void shouldReturnWithdrawalsWhenBlockIsPostShanghai() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Withdrawal withdrawal = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x1"), GWei.ONE); + final Withdrawal withdrawal2 = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x2"), GWei.ONE); + + final BlockBody shanghaiBlockBody = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + + final BlockBody shanghaiBlockBody2 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal2))); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(130)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(shanghaiBlockBody)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(shanghaiBlockBody2)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + when(blockchain.getBlockHashByNumber(124)).thenReturn(Optional.of(blockHash2)); + + final var resp = resp("0x7b", "0x2"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(2); + assertThat(result.getPayloadBodies().get(0).getTransactions().size()).isEqualTo(3); + assertThat(result.getPayloadBodies().get(0).getWithdrawals().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getTransactions().size()).isEqualTo(1); + assertThat(result.getPayloadBodies().get(1).getWithdrawals().size()).isEqualTo(1); + } + + @Test + public void shouldNotContainTrailingNullForBlocksPastTheCurrentHead() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Withdrawal withdrawal = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x1"), GWei.ONE); + + final BlockBody shanghaiBlockBody = + new BlockBody( + List.of( + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair()), + new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(123)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(shanghaiBlockBody)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + + final var resp = resp("0x7b", "0x3"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(1); + } + + @Test + public void shouldReturnUpUntilHeadWhenStartBlockPlusCountEqualsHeadNumber() { + final SignatureAlgorithm sig = SignatureAlgorithmFactory.getInstance(); + final Hash blockHash1 = Hash.wrap(Bytes32.random()); + final Hash blockHash2 = Hash.wrap(Bytes32.random()); + final Hash blockHash3 = Hash.wrap(Bytes32.random()); + final Withdrawal withdrawal = + new Withdrawal(UInt64.ONE, UInt64.ONE, Address.fromHexString("0x1"), GWei.ONE); + + final BlockBody shanghaiBlockBody = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + final BlockBody shanghaiBlockBody2 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + final BlockBody shanghaiBlockBody3 = + new BlockBody( + List.of(new TransactionTestFixture().createTransaction(sig.generateKeyPair())), + Collections.emptyList(), + Optional.of(List.of(withdrawal))); + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(125)); + when(blockchain.getBlockBody(blockHash1)).thenReturn(Optional.of(shanghaiBlockBody)); + when(blockchain.getBlockBody(blockHash2)).thenReturn(Optional.of(shanghaiBlockBody2)); + when(blockchain.getBlockBody(blockHash3)).thenReturn(Optional.of(shanghaiBlockBody3)); + when(blockchain.getBlockHashByNumber(123)).thenReturn(Optional.of(blockHash1)); + when(blockchain.getBlockHashByNumber(124)).thenReturn(Optional.of(blockHash2)); + when(blockchain.getBlockHashByNumber(125)).thenReturn(Optional.of(blockHash3)); + + final var resp = resp("0x7b", "0x3"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies().size()).isEqualTo(3); + } + + @Test + public void ShouldReturnEmptyPayloadForRequestsPastCurrentHead() { + + when(blockchain.getChainHeadBlockNumber()).thenReturn(Long.valueOf(123)); + final JsonRpcResponse resp = resp("0x7d", "0x3"); + final var result = fromSuccessResp(resp); + assertThat(result.getPayloadBodies()).isEqualTo(Collections.EMPTY_LIST); + } + + @Test + public void shouldReturnErrorWhenRequestExceedsPermittedNumberOfBlocks() { + doReturn(3).when(method).getMaxRequestBlocks(); + final JsonRpcResponse resp = resp("0x539", "0x4"); + final var result = fromErrorResp(resp); + assertThat(result.getCode()).isEqualTo(INVALID_RANGE_REQUEST_TOO_LARGE.getCode()); + } + + @Test + public void shouldReturnInvalidParamsIfStartIsZero() { + final JsonRpcResponse resp = resp("0x0", "0x539"); + final var result = fromErrorResp(resp); + assertThat(result.getCode()).isEqualTo(INVALID_PARAMS.getCode()); + } + + @Test + public void shouldReturnInvalidParamsIfCountIsZero() { + final JsonRpcResponse resp = resp("0x539", "0x0"); + final var result = fromErrorResp(resp); + assertThat(result.getCode()).isEqualTo(INVALID_PARAMS.getCode()); + } + + private JsonRpcResponse resp(final String startBlockNumber, final String range) { + return method.response( + new JsonRpcRequestContext( + new JsonRpcRequest( + "2.0", + RpcMethod.ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1.getMethodName(), + new Object[] {startBlockNumber, range}))); + } + + private EngineGetPayloadBodiesResultV1 fromSuccessResp(final JsonRpcResponse resp) { + assertThat(resp.getType()).isEqualTo(JsonRpcResponseType.SUCCESS); + return Optional.of(resp) + .map(JsonRpcSuccessResponse.class::cast) + .map(JsonRpcSuccessResponse::getResult) + .map(EngineGetPayloadBodiesResultV1.class::cast) + .get(); + } + + private JsonRpcError fromErrorResp(final JsonRpcResponse resp) { + assertThat(resp.getType()).isEqualTo(JsonRpcResponseType.ERROR); + return Optional.of(resp) + .map(JsonRpcErrorResponse.class::cast) + .map(JsonRpcErrorResponse::getError) + .get(); + } +} diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/Blockchain.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/Blockchain.java index 0bd09a8e36f..17a9a57743c 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/Blockchain.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/Blockchain.java @@ -94,6 +94,11 @@ default Block getGenesisBlock() { .orElseThrow(() -> new IllegalStateException("Missing genesis block.")); } + default BlockHeader getGenesisBlockHeader() { + return getBlockHeader(BlockHeader.GENESIS_BLOCK_NUMBER) + .orElseThrow(() -> new IllegalStateException("Missing genesis block header.")); + } + default Optional getBlockByHash(final Hash blockHash) { return getBlockHeader(blockHash) .flatMap(header -> getBlockBody(blockHash).map(body -> new Block(header, body))); diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockValueCalculator.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockValueCalculator.java index c8cd8c5039c..cbf6a7c6941 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockValueCalculator.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockValueCalculator.java @@ -27,7 +27,13 @@ public Wei calculateBlockValue(final BlockWithReceipts blockWithReceipts) { Wei totalFee = Wei.ZERO; for (int i = 0; i < txs.size(); i++) { final Wei minerFee = txs.get(i).getEffectivePriorityFeePerGas(block.getHeader().getBaseFee()); - totalFee = totalFee.add(minerFee.multiply(receipts.get(i).getCumulativeGasUsed())); + // we don't store gasUsed and need to calculate that on the fly + // receipts are fetched in ascending sorted by cumulativeGasUsed + long gasUsed = receipts.get(i).getCumulativeGasUsed(); + if (i > 0) { + gasUsed = gasUsed - receipts.get(i - 1).getCumulativeGasUsed(); + } + totalFee = totalFee.add(minerFee.multiply(gasUsed)); } return totalFee; } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/MiningParameters.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/MiningParameters.java index e5dba01bf59..e90efaba5b9 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/MiningParameters.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/MiningParameters.java @@ -36,6 +36,9 @@ public class MiningParameters { public static final long DEFAULT_POS_BLOCK_CREATION_MAX_TIME = Duration.ofSeconds(12).toMillis(); + public static final long DEFAULT_POS_BLOCK_CREATION_REPETITION_MIN_DURATION = + Duration.ofMillis(500).toMillis(); + private final Optional
coinbase; private final Optional targetGasLimit; private final Wei minTransactionGasPrice; @@ -52,6 +55,7 @@ public class MiningParameters { private final long powJobTimeToLive; private final int maxOmmerDepth; private final long posBlockCreationMaxTime; + private final long posBlockCreationRepetitionMinDuration; private MiningParameters( final Address coinbase, @@ -69,7 +73,8 @@ private MiningParameters( final long remoteSealersTimeToLive, final long powJobTimeToLive, final int maxOmmerDepth, - final long posBlockCreationMaxTime) { + final long posBlockCreationMaxTime, + final long posBlockCreationRepetitionMinDuration) { this.coinbase = Optional.ofNullable(coinbase); this.targetGasLimit = Optional.ofNullable(targetGasLimit).map(AtomicLong::new); this.minTransactionGasPrice = minTransactionGasPrice; @@ -86,6 +91,7 @@ private MiningParameters( this.powJobTimeToLive = powJobTimeToLive; this.maxOmmerDepth = maxOmmerDepth; this.posBlockCreationMaxTime = posBlockCreationMaxTime; + this.posBlockCreationRepetitionMinDuration = posBlockCreationRepetitionMinDuration; } public Optional
getCoinbase() { @@ -152,6 +158,10 @@ public long getPosBlockCreationMaxTime() { return posBlockCreationMaxTime; } + public long getPosBlockCreationRepetitionMinDuration() { + return posBlockCreationRepetitionMinDuration; + } + @Override public boolean equals(final Object o) { if (this == o) return true; @@ -170,7 +180,8 @@ public boolean equals(final Object o) { && remoteSealersTimeToLive == that.remoteSealersTimeToLive && remoteSealersLimit == that.remoteSealersLimit && powJobTimeToLive == that.powJobTimeToLive - && posBlockCreationMaxTime == that.posBlockCreationMaxTime; + && posBlockCreationMaxTime == that.posBlockCreationMaxTime + && posBlockCreationRepetitionMinDuration == that.posBlockCreationRepetitionMinDuration; } @Override @@ -189,7 +200,8 @@ public int hashCode() { remoteSealersLimit, remoteSealersTimeToLive, powJobTimeToLive, - posBlockCreationMaxTime); + posBlockCreationMaxTime, + posBlockCreationRepetitionMinDuration); } @Override @@ -227,6 +239,8 @@ public String toString() { + powJobTimeToLive + ", posBlockCreationMaxTime=" + posBlockCreationMaxTime + + ", posBlockCreationRepetitionMinDuration=" + + posBlockCreationRepetitionMinDuration + '}'; } @@ -249,6 +263,9 @@ public static class Builder { private int maxOmmerDepth = DEFAULT_MAX_OMMERS_DEPTH; private long posBlockCreationMaxTime = DEFAULT_POS_BLOCK_CREATION_MAX_TIME; + private long posBlockCreationRepetitionMinDuration = + DEFAULT_POS_BLOCK_CREATION_REPETITION_MIN_DURATION; + public Builder() { // zero arg } @@ -273,6 +290,8 @@ public Builder(final MiningParameters existing) { this.powJobTimeToLive = existing.getPowJobTimeToLive(); this.maxOmmerDepth = existing.getMaxOmmerDepth(); this.posBlockCreationMaxTime = existing.getPosBlockCreationMaxTime(); + this.posBlockCreationRepetitionMinDuration = + existing.getPosBlockCreationRepetitionMinDuration(); } public Builder coinbase(final Address address) { @@ -355,6 +374,12 @@ public Builder posBlockCreationMaxTime(final long posBlockCreationMaxTime) { return this; } + public Builder posBlockCreationRepetitionMinDuration( + final long posBlockCreationRepetitionMinDuration) { + this.posBlockCreationRepetitionMinDuration = posBlockCreationRepetitionMinDuration; + return this; + } + public MiningParameters build() { return new MiningParameters( coinbase, @@ -372,7 +397,8 @@ public MiningParameters build() { remoteSealersTimeToLive, powJobTimeToLive, maxOmmerDepth, - posBlockCreationMaxTime); + posBlockCreationMaxTime, + posBlockCreationRepetitionMinDuration); } } } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/DefaultTimestampSchedule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/DefaultTimestampSchedule.java index 15677eb5537..307339abd77 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/DefaultTimestampSchedule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/DefaultTimestampSchedule.java @@ -26,6 +26,7 @@ import java.util.Optional; import java.util.TreeSet; import java.util.stream.Collectors; +import java.util.stream.Stream; public class DefaultTimestampSchedule implements TimestampSchedule { private final NavigableSet protocolSpecs = @@ -46,6 +47,11 @@ public Optional getByTimestamp(final long timestamp) { return Optional.empty(); } + @Override + public Stream streamMilestoneBlocks() { + return protocolSpecs.stream().map(TimedProtocolSpec::getTimestamp).sorted(); + } + @Override public Optional getChainId() { return chainId; diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/HeaderBasedProtocolSchedule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/HeaderBasedProtocolSchedule.java index 697abfc0b7c..05f72726fe1 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/HeaderBasedProtocolSchedule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/HeaderBasedProtocolSchedule.java @@ -21,6 +21,7 @@ import java.math.BigInteger; import java.util.Optional; +import java.util.stream.Stream; public interface HeaderBasedProtocolSchedule { @@ -31,4 +32,6 @@ public interface HeaderBasedProtocolSchedule { void putMilestone(final long blockOrTimestamp, final ProtocolSpec protocolSpec); String listMilestones(); + + Stream streamMilestoneBlocks(); } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java index 874b73afb17..068713d5e2b 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java @@ -638,7 +638,8 @@ static ProtocolSpecBuilder parisDefinition( .difficultyCalculator(MainnetDifficultyCalculators.PROOF_OF_STAKE_DIFFICULTY) .blockHeaderValidatorBuilder(MainnetBlockHeaderValidator::mergeBlockHeaderValidator) .blockReward(Wei.ZERO) - .name("ParisFork"); + .name("ParisFork") + .isPoS(true); } static ProtocolSpecBuilder shanghaiDefinition( diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSchedule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSchedule.java index 7cef6b7696f..30686f84eec 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSchedule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSchedule.java @@ -16,15 +16,11 @@ import org.hyperledger.besu.ethereum.core.ProcessableBlockHeader; -import java.util.stream.Stream; - public interface ProtocolSchedule extends HeaderBasedProtocolSchedule, PrivacySupportingProtocolSchedule { ProtocolSpec getByBlockNumber(long number); - Stream streamMilestoneBlocks(); - @Override default ProtocolSpec getByBlockHeader(final ProcessableBlockHeader blockHeader) { return getByBlockNumber(blockHeader.getNumber()); diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpec.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpec.java index 3022181b49d..6777f5e7f66 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpec.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpec.java @@ -80,6 +80,7 @@ public class ProtocolSpec { private final Optional withdrawalsProcessor; + private final boolean isPoS; /** * Creates a new protocol specification instance. * @@ -108,6 +109,7 @@ public class ProtocolSpec { * @param powHasher the proof-of-work hasher * @param withdrawalsValidator the withdrawals validator to use * @param withdrawalsProcessor the Withdrawals processor to use + * @param isPoS indicates whether the current spec is PoS */ public ProtocolSpec( final String name, @@ -134,7 +136,8 @@ public ProtocolSpec( final BadBlockManager badBlockManager, final Optional powHasher, final WithdrawalsValidator withdrawalsValidator, - final Optional withdrawalsProcessor) { + final Optional withdrawalsProcessor, + final boolean isPoS) { this.name = name; this.evm = evm; this.transactionValidator = transactionValidator; @@ -160,6 +163,7 @@ public ProtocolSpec( this.powHasher = powHasher; this.withdrawalsValidator = withdrawalsValidator; this.withdrawalsProcessor = withdrawalsProcessor; + this.isPoS = isPoS; } /** @@ -367,4 +371,13 @@ public WithdrawalsValidator getWithdrawalsValidator() { public Optional getWithdrawalsProcessor() { return withdrawalsProcessor; } + + /** + * Returns true if the network is running Proof of Stake + * + * @return true if the network is running Proof of Stake + */ + public boolean isPoS() { + return isPoS; + } } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpecBuilder.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpecBuilder.java index 043155dc932..0882196aadb 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpecBuilder.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolSpecBuilder.java @@ -79,6 +79,7 @@ public class ProtocolSpecBuilder { private FeeMarket feeMarket = FeeMarket.legacy(); private BadBlockManager badBlockManager; private PoWHasher powHasher = PoWHasher.ETHASH_LIGHT; + private boolean isPoS = false; public ProtocolSpecBuilder gasCalculator(final Supplier gasCalculatorBuilder) { this.gasCalculatorBuilder = gasCalculatorBuilder; @@ -257,6 +258,11 @@ public ProtocolSpecBuilder withdrawalsProcessor(final WithdrawalsProcessor withd return this; } + public ProtocolSpecBuilder isPoS(final boolean isPoS) { + this.isPoS = isPoS; + return this; + } + public ProtocolSpec build(final HeaderBasedProtocolSchedule protocolSchedule) { checkNotNull(gasCalculatorBuilder, "Missing gasCalculator"); checkNotNull(gasLimitCalculator, "Missing gasLimitCalculator"); @@ -363,7 +369,8 @@ public ProtocolSpec build(final HeaderBasedProtocolSchedule protocolSchedule) { badBlockManager, Optional.ofNullable(powHasher), withdrawalsValidator, - Optional.ofNullable(withdrawalsProcessor)); + Optional.ofNullable(withdrawalsProcessor), + isPoS); } private PrivateTransactionProcessor createPrivateTransactionProcessor( diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/BlockValueCalculatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/BlockValueCalculatorTest.java index 3116d3181b0..2d2b4c75f2b 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/BlockValueCalculatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/BlockValueCalculatorTest.java @@ -88,8 +88,8 @@ public void shouldCalculateCorrectBlockValue() { new BlockValueCalculator() .calculateBlockValue( new BlockWithReceipts(block, List.of(receipt1, receipt2, receipt3))); - // Block value = 71 * 1 + 143 * 2 + 214 * 5 = 1427 - assertThat(blockValue).isEqualTo(Wei.of(1427L)); + // Block value = 71 * 1 + (143-71) * 2 + (214-143) * 5 = 1427 + assertThat(blockValue).isEqualTo(Wei.of(570L)); } @Test diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTest.java index ac49d588053..ba9837e01dd 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTest.java @@ -313,11 +313,20 @@ public static Collection data() { empty() }, { - "Sepolia // Future", + "Sepolia // Shanghai", Network.SEPOLIA, 1735371L, 0L, - ForkIdTestUtil.wantForkId("0xb96cbd13", 0L), + ForkIdTestUtil.wantForkId("0xb96cbd13", 1677557088L), + Optional.of(ForkIds.SEPOLIA), + empty() + }, + { + "Sepolia // Future", + Network.SEPOLIA, + 1735372L, + 1677557088L, + ForkIdTestUtil.wantForkId("0xf7f9bc08", 0L), Optional.of(ForkIds.SEPOLIA), empty() }, diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTestUtil.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTestUtil.java index f0da68e5bec..62503177b08 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTestUtil.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdTestUtil.java @@ -73,8 +73,11 @@ public static class Forks { Arrays.asList( 1920000L, 1150000L, 2463000L, 2675000L, 2675000L, 4370000L, 7280000L, 7280000L, 9069000L, 9200000L, 12244000L, 12965000L, 13773000L, 15050000L); - public static final List SEPOLIA = + public static final List SEPOLIA_BLOCKNUMBERS = Arrays.asList(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1735371L); + + public static final List SEPOLIA_TIMESTAMPS = Arrays.asList(1677557088L); + public static final List RINKEBY = Arrays.asList(1L, 2L, 3L, 3L, 1035301L, 3660663L, 4321234L, 5435345L); public static final List GOERLI = Arrays.asList(0L, 0L, 0L, 0L, 0L, 0L, 0L, 1561651L); @@ -106,7 +109,8 @@ public static class ForkIds { public static final List SEPOLIA = Arrays.asList( new ForkId(Bytes.fromHexString("0xfe3366e7"), 1735371L), - new ForkId(Bytes.fromHexString("0xb96cbd13"), 0L)); + new ForkId(Bytes.fromHexString("0xb96cbd13"), 1677557088L), + new ForkId(Bytes.fromHexString("0xf7f9bc08"), 0L)); // First Shanghai block (timestamp) public static final List RINKEBY = Arrays.asList( new ForkId(Bytes.fromHexString("0x3b8e0691"), 1L), @@ -145,7 +149,8 @@ public static class ForkIds { public static class Network { public static final Network MAINNET = network(GenesisHash.MAINNET, Forks.MAINNET, emptyList()); - public static final Network SEPOLIA = network(GenesisHash.SEPOLIA, Forks.SEPOLIA, emptyList()); + public static final Network SEPOLIA = + network(GenesisHash.SEPOLIA, Forks.SEPOLIA_BLOCKNUMBERS, Forks.SEPOLIA_TIMESTAMPS); public static final Network RINKEBY = network(GenesisHash.RINKEBY, Forks.RINKEBY, emptyList()); public static final Network GOERLI = network(GenesisHash.GOERLI, Forks.GOERLI, emptyList()); public static final Network PRIVATE = network(GenesisHash.PRIVATE, Forks.PRIVATE, emptyList()); diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/TimestampScheduleBuilderTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/TimestampScheduleBuilderTest.java index 035f3ae6fc4..ab220f3ecbd 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/TimestampScheduleBuilderTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/TimestampScheduleBuilderTest.java @@ -138,4 +138,15 @@ public void getByBlockHeader_whenSpecNotFoundReturnsNull() { assertThat(schedule.getByBlockHeader(BLOCK_HEADER)).isNull(); } + + @Test + public void streamMilestoneBlocksReturnTimestampsInOrder() { + config.shanghaiTime(FIRST_TIMESTAMP_FORK); + config.cancunTime(2L); + config.experimentalEipsTime(5L); + config.futureEipsTime(3L); + final TimestampSchedule schedule = builder.createTimestampSchedule(); + + assertThat(schedule.streamMilestoneBlocks()).containsExactly(FIRST_TIMESTAMP_FORK, 2L, 3L, 5L); + } } diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java index 5ae869830ec..44016a2985e 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.ethereum.eth.manager.EthPeer.DisconnectCallback; import org.hyperledger.besu.ethereum.eth.peervalidation.PeerValidator; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.p2p.rlpx.connections.PeerConnection; import org.hyperledger.besu.ethereum.p2p.rlpx.wire.messages.DisconnectMessage; import org.hyperledger.besu.metrics.BesuMetricCategory; @@ -36,6 +37,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -67,26 +69,37 @@ public class EthPeers { private final Subscribers connectCallbacks = Subscribers.create(); private final Subscribers disconnectCallbacks = Subscribers.create(); private final Collection pendingRequests = new CopyOnWriteArrayList<>(); + private final Supplier currentProtocolSpecSupplier; private Comparator bestPeerComparator; public EthPeers( final String protocolName, + final Supplier currentProtocolSpecSupplier, final Clock clock, final MetricsSystem metricsSystem, final int maxPeers, final int maxMessageSize) { - this(protocolName, clock, metricsSystem, maxPeers, maxMessageSize, Collections.emptyList()); + this( + protocolName, + currentProtocolSpecSupplier, + clock, + metricsSystem, + maxPeers, + maxMessageSize, + Collections.emptyList()); } public EthPeers( final String protocolName, + final Supplier currentProtocolSpecSupplier, final Clock clock, final MetricsSystem metricsSystem, final int maxPeers, final int maxMessageSize, final List permissioningProviders) { this.protocolName = protocolName; + this.currentProtocolSpecSupplier = currentProtocolSpecSupplier; this.clock = clock; this.permissioningProviders = permissioningProviders; this.maxPeers = maxPeers; @@ -148,8 +161,16 @@ public EthPeer peer(final PeerConnection peerConnection) { public PendingPeerRequest executePeerRequest( final PeerRequest request, final long minimumBlockNumber, final Optional peer) { + final long actualMinBlockNumber; + if (minimumBlockNumber > 0 && currentProtocolSpecSupplier.get().isPoS()) { + // if on PoS do not enforce a min block number, since the estimated chain height of the remote + // peer is not updated anymore. + actualMinBlockNumber = 0; + } else { + actualMinBlockNumber = minimumBlockNumber; + } final PendingPeerRequest pendingPeerRequest = - new PendingPeerRequest(this, request, minimumBlockNumber, peer); + new PendingPeerRequest(this, request, actualMinBlockNumber, peer); synchronized (this) { if (!pendingPeerRequest.attemptExecution()) { pendingRequests.add(pendingPeerRequest); diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractPeerRequestTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractPeerRequestTask.java index 6dd87ae3b7a..b66a8a3b8de 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractPeerRequestTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/AbstractPeerRequestTask.java @@ -85,10 +85,6 @@ protected final void executeTask() { }); } - public PendingPeerRequest sendRequestToPeer(final PeerRequest request) { - return sendRequestToPeer(request, 0L); - } - public PendingPeerRequest sendRequestToPeer( final PeerRequest request, final long minimumBlockNumber) { return ethContext.getEthPeers().executePeerRequest(request, minimumBlockNumber, assignedPeer); diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBlockFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBlockFromPeerTask.java index 6dc20710667..c352fbc3009 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBlockFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBlockFromPeerTask.java @@ -103,7 +103,7 @@ private CompletableFuture>> downloadHeader() { hash.map( value -> GetHeadersFromPeerByHashTask.forSingleHash( - protocolSchedule, ethContext, value, metricsSystem)) + protocolSchedule, ethContext, value, blockNumber, metricsSystem)) .orElseGet( () -> GetHeadersFromPeerByNumberTask.forSingleNumber( diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBodiesFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBodiesFromPeerTask.java index 82e7902b579..58a8786d0ac 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBodiesFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetBodiesFromPeerTask.java @@ -83,12 +83,14 @@ public static GetBodiesFromPeerTask forHeaders( protected PendingPeerRequest sendRequest() { final List blockHashes = headers.stream().map(BlockHeader::getHash).collect(Collectors.toList()); + final long minimumRequiredBlockNumber = headers.get(headers.size() - 1).getNumber(); return sendRequestToPeer( peer -> { LOG.debug("Requesting {} bodies from peer {}.", blockHashes.size(), peer); return peer.getBodies(blockHashes); - }); + }, + minimumRequiredBlockNumber); } @Override diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTask.java index 1f8d76865d2..521d7fd398c 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTask.java @@ -32,17 +32,20 @@ public class GetHeadersFromPeerByHashTask extends AbstractGetHeadersFromPeerTask private static final Logger LOG = LoggerFactory.getLogger(GetHeadersFromPeerByHashTask.class); private final Hash referenceHash; + private final long minimumRequiredBlockNumber; @VisibleForTesting GetHeadersFromPeerByHashTask( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash referenceHash, + final long minimumRequiredBlockNumber, final int count, final int skip, final boolean reverse, final MetricsSystem metricsSystem) { super(protocolSchedule, ethContext, count, skip, reverse, metricsSystem); + this.minimumRequiredBlockNumber = minimumRequiredBlockNumber; checkNotNull(referenceHash); this.referenceHash = referenceHash; } @@ -51,40 +54,65 @@ public static AbstractGetHeadersFromPeerTask startingAtHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash firstHash, + final long firstBlockNumber, final int segmentLength, final MetricsSystem metricsSystem) { return new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, firstHash, segmentLength, 0, false, metricsSystem); + protocolSchedule, + ethContext, + firstHash, + firstBlockNumber, + segmentLength, + 0, + false, + metricsSystem); } public static AbstractGetHeadersFromPeerTask startingAtHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash firstHash, + final long firstBlockNumber, final int segmentLength, final int skip, final MetricsSystem metricsSystem) { return new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, firstHash, segmentLength, skip, false, metricsSystem); + protocolSchedule, + ethContext, + firstHash, + firstBlockNumber, + segmentLength, + skip, + false, + metricsSystem); } public static AbstractGetHeadersFromPeerTask endingAtHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash lastHash, + final long lastBlockNumber, final int segmentLength, final MetricsSystem metricsSystem) { return new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, lastHash, segmentLength, 0, true, metricsSystem); + protocolSchedule, + ethContext, + lastHash, + lastBlockNumber, + segmentLength, + 0, + true, + metricsSystem); } public static AbstractGetHeadersFromPeerTask forSingleHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash hash, + final long minimumRequiredBlockNumber, final MetricsSystem metricsSystem) { return new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, hash, 1, 0, false, metricsSystem); + protocolSchedule, ethContext, hash, minimumRequiredBlockNumber, 1, 0, false, metricsSystem); } @Override @@ -97,7 +125,8 @@ protected PendingPeerRequest sendRequest() { referenceHash.slice(0, 6), peer); return peer.getHeadersByHash(referenceHash, count, skip, reverse); - }); + }, + minimumRequiredBlockNumber); } @Override diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByNumberTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByNumberTask.java index 1a1cd8db23b..3ad01aa34a9 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByNumberTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByNumberTask.java @@ -80,7 +80,8 @@ protected PendingPeerRequest sendRequest() { LOG.debug( "Requesting {} headers (blockNumber {}) from peer {}.", count, blockNumber, peer); return peer.getHeadersByNumber(blockNumber, count, skip, reverse); - }); + }, + blockNumber); } @Override diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/RetryingGetHeadersEndingAtFromPeerByHashTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/RetryingGetHeadersEndingAtFromPeerByHashTask.java index 2d1119c4aca..e467bfba119 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/RetryingGetHeadersEndingAtFromPeerByHashTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/task/RetryingGetHeadersEndingAtFromPeerByHashTask.java @@ -39,6 +39,7 @@ public class RetryingGetHeadersEndingAtFromPeerByHashTask private final Hash referenceHash; private final ProtocolSchedule protocolSchedule; + private final long minimumRequiredBlockNumber; private final int count; @VisibleForTesting @@ -46,11 +47,13 @@ public class RetryingGetHeadersEndingAtFromPeerByHashTask final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash referenceHash, + final long minimumRequiredBlockNumber, final int count, final MetricsSystem metricsSystem, final int maxRetries) { super(ethContext, metricsSystem, List::isEmpty, maxRetries); this.protocolSchedule = protocolSchedule; + this.minimumRequiredBlockNumber = minimumRequiredBlockNumber; this.count = count; checkNotNull(referenceHash); this.referenceHash = referenceHash; @@ -60,11 +63,18 @@ public static RetryingGetHeadersEndingAtFromPeerByHashTask endingAtHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash referenceHash, + final long minimumRequiredBlockNumber, final int count, final MetricsSystem metricsSystem, final int maxRetries) { return new RetryingGetHeadersEndingAtFromPeerByHashTask( - protocolSchedule, ethContext, referenceHash, count, metricsSystem, maxRetries); + protocolSchedule, + ethContext, + referenceHash, + minimumRequiredBlockNumber, + count, + metricsSystem, + maxRetries); } @Override @@ -72,7 +82,12 @@ protected CompletableFuture> executeTaskOnCurrentPeer( final EthPeer currentPeer) { final AbstractGetHeadersFromPeerTask task = GetHeadersFromPeerByHashTask.endingAtHash( - protocolSchedule, getEthContext(), referenceHash, count, getMetricsSystem()); + protocolSchedule, + getEthContext(), + referenceHash, + minimumRequiredBlockNumber, + count, + getMetricsSystem()); task.assignPeer(currentPeer); return executeSubTask(task::run) .thenApply( diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTracker.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTracker.java index 547a0abc555..d3d893482a8 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTracker.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTracker.java @@ -73,6 +73,7 @@ public void onPeerConnected(final EthPeer peer) { protocolSchedule, ethContext, Hash.wrap(peer.chainState().getBestBlock().getHash()), + 0, metricsSystem) .assignPeer(peer) .run() diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java index 8ec836bde0d..6e404305823 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DownloadHeadersStep.java @@ -96,6 +96,7 @@ private CompletableFuture> downloadHeaders(final SyncTargetRan protocolSchedule, ethContext, range.getStart().getHash(), + range.getStart().getNumber(), headerRequestSize, metricsSystem) .assignPeer(range.getSyncTarget()) diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStep.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStep.java index d00f979b773..dd68b5b0f4b 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStep.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStep.java @@ -76,6 +76,7 @@ protected CompletableFuture> requestHeaders(final Hash hash) { context.getProtocolSchedule(), context.getEthContext(), hash, + 0, batchSize, context.getMetricsSystem(), context.getEthContext().getEthPeers().peerCount()); diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActions.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActions.java index f3bc4860f5f..6a799e0fa00 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActions.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActions.java @@ -171,7 +171,11 @@ public ChainDownloader createChainDownloader(final FastSyncState currentState) { private CompletableFuture downloadPivotBlockHeader(final Hash hash) { LOG.debug("Downloading pivot block header by hash {}", hash); return RetryingGetHeaderFromPeerByHashTask.byHash( - protocolSchedule, ethContext, hash, metricsSystem) + protocolSchedule, + ethContext, + hash, + pivotBlockSelector.getMinRequiredBlockNumber(), + metricsSystem) .getHeader() .whenComplete( (blockHeader, throwable) -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotSelectorFromSafeBlock.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotSelectorFromSafeBlock.java index e107437a9d2..5389ca22288 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotSelectorFromSafeBlock.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotSelectorFromSafeBlock.java @@ -137,7 +137,7 @@ public long getBestChainHeight() { private CompletableFuture downloadBlockHeader(final Hash hash) { return RetryingGetHeaderFromPeerByHashTask.byHash( - protocolSchedule, ethContext, hash, metricsSystem) + protocolSchedule, ethContext, hash, 0, metricsSystem) .getHeader() .whenComplete( (blockHeader, throwable) -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/range/RangeHeadersFetcher.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/range/RangeHeadersFetcher.java index a2723a10d46..68e7d193b99 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/range/RangeHeadersFetcher.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/range/RangeHeadersFetcher.java @@ -106,6 +106,7 @@ private CompletableFuture> requestHeaders( protocolSchedule, ethContext, referenceHeader.getHash(), + referenceHeader.getNumber(), // + 1 because lastHeader will be returned as well. headerCount + 1, skip, diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DownloadHeaderSequenceTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DownloadHeaderSequenceTask.java index 8e6cac0b485..474257c3cd2 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DownloadHeaderSequenceTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DownloadHeaderSequenceTask.java @@ -166,7 +166,12 @@ private CompletableFuture>> downloadHeaders( // Ask for count + 1 because we'll retrieve the previous header as well final AbstractGetHeadersFromPeerTask headersTask = GetHeadersFromPeerByHashTask.endingAtHash( - protocolSchedule, ethContext, referenceHash, count + 1, metricsSystem); + protocolSchedule, + ethContext, + referenceHash, + referenceHeaderForNextRequest.getNumber(), + count + 1, + metricsSystem); assignedPeer.ifPresent(headersTask::assignPeer); return headersTask.run(); }); diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/RetryingGetHeaderFromPeerByHashTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/RetryingGetHeaderFromPeerByHashTask.java index 18f9d0951d3..c36599e6354 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/RetryingGetHeaderFromPeerByHashTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/tasks/RetryingGetHeaderFromPeerByHashTask.java @@ -40,16 +40,19 @@ public class RetryingGetHeaderFromPeerByHashTask LoggerFactory.getLogger(RetryingGetHeaderFromPeerByHashTask.class); private final Hash referenceHash; private final ProtocolSchedule protocolSchedule; + private final long minimumRequiredBlockNumber; @VisibleForTesting RetryingGetHeaderFromPeerByHashTask( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash referenceHash, + final long minimumRequiredBlockNumber, final MetricsSystem metricsSystem, final int maxRetries) { super(ethContext, metricsSystem, List::isEmpty, maxRetries); this.protocolSchedule = protocolSchedule; + this.minimumRequiredBlockNumber = minimumRequiredBlockNumber; checkNotNull(referenceHash); this.referenceHash = referenceHash; } @@ -58,11 +61,13 @@ public static RetryingGetHeaderFromPeerByHashTask byHash( final ProtocolSchedule protocolSchedule, final EthContext ethContext, final Hash referenceHash, + final long minimumRequiredBlockNumber, final MetricsSystem metricsSystem) { return new RetryingGetHeaderFromPeerByHashTask( protocolSchedule, ethContext, referenceHash, + minimumRequiredBlockNumber, metricsSystem, ethContext.getEthPeers().peerCount()); } @@ -71,7 +76,11 @@ public static RetryingGetHeaderFromPeerByHashTask byHash( protected CompletableFuture> executeTaskOnCurrentPeer(final EthPeer peer) { final AbstractGetHeadersFromPeerTask task = GetHeadersFromPeerByHashTask.forSingleHash( - protocolSchedule, getEthContext(), referenceHash, getMetricsSystem()); + protocolSchedule, + getEthContext(), + referenceHash, + minimumRequiredBlockNumber, + getMetricsSystem()); task.assignPeer(peer); return executeSubTask(task::run) .thenApply( diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTest.java index 1c781339bbd..803871d69d2 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTest.java @@ -131,6 +131,7 @@ public static void setup() { public void handleMalformedRequestIdMessage() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -149,6 +150,7 @@ public void handleMalformedRequestIdMessage() { public void disconnectOnUnsolicitedMessage() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -166,6 +168,7 @@ public void disconnectOnUnsolicitedMessage() { public void disconnectOnFailureToSendStatusMessage() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -184,6 +187,7 @@ public void disconnectOnFailureToSendStatusMessage() { public void disconnectOnWrongChainId() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -214,6 +218,7 @@ public void disconnectNewPoWPeers() { final MergePeerFilter mergePeerFilter = new MergePeerFilter(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, protocolContext.getWorldStateArchive(), transactionPool, @@ -262,6 +267,7 @@ public void disconnectNewPoWPeers() { public void doNotDisconnectOnLargeMessageWithinLimits() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -281,6 +287,7 @@ public void doNotDisconnectOnLargeMessageWithinLimits() { public void disconnectOnWrongGenesisHash() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -310,6 +317,7 @@ public void disconnectOnWrongGenesisHash() { public void doNotDisconnectOnValidMessage() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -331,6 +339,7 @@ public void respondToGetHeaders() throws ExecutionException, InterruptedExceptio final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -370,6 +379,7 @@ public void respondToGetHeadersWithinLimits() throws ExecutionException, Interru EthProtocolConfiguration.builder().maxGetBlockHeaders(limit).build(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -406,6 +416,7 @@ public void respondToGetHeadersReversed() throws ExecutionException, Interrupted final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -442,6 +453,7 @@ public void respondToGetHeadersWithSkip() throws ExecutionException, Interrupted final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -481,6 +493,7 @@ public void respondToGetHeadersReversedWithSkip() final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -541,6 +554,7 @@ public void respondToGetHeadersPartial() throws ExecutionException, InterruptedE final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -578,6 +592,7 @@ public void respondToGetHeadersEmpty() throws ExecutionException, InterruptedExc final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -612,6 +627,7 @@ public void respondToGetBodies() throws ExecutionException, InterruptedException final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -664,6 +680,7 @@ public void respondToGetBodiesWithinLimits() throws ExecutionException, Interrup EthProtocolConfiguration.builder().maxGetBlockBodies(limit).build(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -712,6 +729,7 @@ public void respondToGetBodiesPartial() throws ExecutionException, InterruptedEx final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -754,6 +772,7 @@ public void respondToGetReceipts() throws ExecutionException, InterruptedExcepti final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -804,6 +823,7 @@ public void respondToGetReceiptsWithinLimits() throws ExecutionException, Interr EthProtocolConfiguration.builder().maxGetReceipts(limit).build(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -851,6 +871,7 @@ public void respondToGetReceiptsPartial() throws ExecutionException, Interrupted final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -895,6 +916,7 @@ public void respondToGetNodeData() throws Exception { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -942,6 +964,7 @@ public void respondToGetNodeData() throws Exception { public void newBlockMinedSendsNewBlockMessageToAllPeers() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -1012,6 +1035,7 @@ public void shouldSuccessfullyRespondToGetHeadersRequestLessThanZero() final CompletableFuture done = new CompletableFuture<>(); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), @@ -1077,6 +1101,7 @@ public void transactionMessagesGoToTheCorrectExecutor() { try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, ethScheduler, protocolContext.getWorldStateArchive(), @@ -1110,6 +1135,7 @@ public void forkIdForChainHeadMayBeNull() { final EthScheduler ethScheduler = mock(EthScheduler.class); try (final EthProtocolManager ethManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, ethScheduler, protocolContext.getWorldStateArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTestUtil.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTestUtil.java index 447910b4bb9..b3b4b850645 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTestUtil.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManagerTestUtil.java @@ -48,12 +48,14 @@ public class EthProtocolManagerTestUtil { public static EthProtocolManager create( + final ProtocolSchedule protocolSchedule, final Blockchain blockchain, final TimeoutPolicy timeoutPolicy, final WorldStateArchive worldStateArchive, final TransactionPool transactionPool, final EthProtocolConfiguration ethereumWireProtocolConfiguration) { return create( + protocolSchedule, blockchain, new DeterministicEthScheduler(timeoutPolicy), worldStateArchive, @@ -62,6 +64,7 @@ public static EthProtocolManager create( } public static EthProtocolManager create( + final ProtocolSchedule protocolSchedule, final Blockchain blockchain, final WorldStateArchive worldStateArchive, final TransactionPool transactionPool, @@ -71,6 +74,7 @@ public static EthProtocolManager create( EthPeers peers = new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), new NoOpMetricsSystem(), 25, @@ -145,15 +149,20 @@ public static EthProtocolManager create( } public static EthProtocolManager create(final Blockchain blockchain) { - return create(blockchain, new DeterministicEthScheduler(TimeoutPolicy.NEVER_TIMEOUT)); + return create( + ProtocolScheduleFixture.MAINNET, + blockchain, + new DeterministicEthScheduler(TimeoutPolicy.NEVER_TIMEOUT)); } public static EthProtocolManager create( + final ProtocolSchedule protocolSchedule, final Blockchain blockchain, final WorldStateArchive worldStateArchive, final TransactionPool transactionPool, final EthProtocolConfiguration ethProtocolConfiguration) { return create( + protocolSchedule, blockchain, new DeterministicEthScheduler(TimeoutPolicy.NEVER_TIMEOUT), worldStateArchive, @@ -166,10 +175,11 @@ public static EthProtocolManager create(final EthScheduler ethScheduler) { final GenesisConfigFile config = GenesisConfigFile.mainnet(); final GenesisState genesisState = GenesisState.fromConfig(config, protocolSchedule); final Blockchain blockchain = createInMemoryBlockchain(genesisState.getBlock()); - return create(blockchain, ethScheduler); + return create(protocolSchedule, blockchain, ethScheduler); } public static EthProtocolManager create( + final ProtocolSchedule protocolSchedule, final Blockchain blockchain, final EthScheduler ethScheduler, final WorldStateArchive worldStateArchive, @@ -178,6 +188,7 @@ public static EthProtocolManager create( EthPeers peers = new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), new NoOpMetricsSystem(), 25, @@ -196,6 +207,7 @@ public static EthProtocolManager create( } public static EthProtocolManager create( + final ProtocolSchedule protocolSchedule, final Blockchain blockchain, final EthScheduler ethScheduler, final WorldStateArchive worldStateArchive, @@ -205,6 +217,7 @@ public static EthProtocolManager create( EthPeers peers = new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), new NoOpMetricsSystem(), 25, @@ -224,10 +237,13 @@ public static EthProtocolManager create( } public static EthProtocolManager create( - final Blockchain blockchain, final EthScheduler ethScheduler) { + final ProtocolSchedule protocolSchedule, + final Blockchain blockchain, + final EthScheduler ethScheduler) { EthPeers peers = new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), new NoOpMetricsSystem(), 25, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/ethtaskutils/AbstractMessageTaskTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/ethtaskutils/AbstractMessageTaskTest.java index 9ab9b1eef29..d7bcfd6f97e 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/ethtaskutils/AbstractMessageTaskTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/ethtaskutils/AbstractMessageTaskTest.java @@ -90,6 +90,7 @@ public void setupTest() { spy( new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), metricsSystem, MAX_PEERS, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTaskTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTaskTest.java index 5bea199ccad..6d6881c01ff 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTaskTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/manager/task/GetHeadersFromPeerByHashTaskTest.java @@ -69,7 +69,12 @@ protected EthTask>> createTask final List requestedData) { final BlockHeader firstHeader = requestedData.get(0); return GetHeadersFromPeerByHashTask.startingAtHash( - protocolSchedule, ethContext, firstHeader.getHash(), requestedData.size(), metricsSystem); + protocolSchedule, + ethContext, + firstHeader.getHash(), + firstHeader.getNumber(), + requestedData.size(), + metricsSystem); } @Test @@ -113,6 +118,7 @@ private void getHeadersFromHash(final int skip, final boolean reverse) { protocolSchedule, ethContext, blockchain.getBlockHashByNumber(startNumber).get(), + startNumber, count, skip, reverse, @@ -135,6 +141,8 @@ private void getHeadersFromHash(final int skip, final boolean reverse) { @Test public void checkThatSequentialHeadersFormingAChainWorks() { + final int startNumber = 1; + final BlockHeader block1 = new BlockHeaderTestFixture().number(1).parentHash(generateTestBlockHash(0)).buildHeader(); final BlockHeader block2 = @@ -145,7 +153,14 @@ public void checkThatSequentialHeadersFormingAChainWorks() { final AbstractGetHeadersFromPeerTask task = new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, block1.getHash(), 2, 0, false, metricsSystem); + protocolSchedule, + ethContext, + block1.getHash(), + startNumber, + 2, + 0, + false, + metricsSystem); final Optional> optionalBlockHeaders = task.processResponse(false, BlockHeadersMessage.create(headers), peer); assertThat(optionalBlockHeaders).isNotNull(); @@ -158,6 +173,7 @@ public void checkThatSequentialHeadersFormingAChainWorks() { @Test public void checkThatSequentialHeadersNotFormingAChainFails() { + final int startNumber = 1; final BlockHeader block1 = new BlockHeaderTestFixture().number(1).parentHash(generateTestBlockHash(0)).buildHeader(); final BlockHeader block2 = @@ -168,7 +184,14 @@ public void checkThatSequentialHeadersNotFormingAChainFails() { final AbstractGetHeadersFromPeerTask task = new GetHeadersFromPeerByHashTask( - protocolSchedule, ethContext, block1.getHash(), 2, 0, false, metricsSystem); + protocolSchedule, + ethContext, + block1.getHash(), + startNumber, + 2, + 0, + false, + metricsSystem); final Optional> optionalBlockHeaders = task.processResponse(false, BlockHeadersMessage.create(headers), peer); assertThat(optionalBlockHeaders).isNotNull(); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java index e332e4aeb97..57256334f20 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java @@ -106,6 +106,7 @@ protected void setup(final DataStorageFormat dataStorageFormat) { tempProtocolContext.getConsensusContext(ConsensusContext.class)); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, blockchainUtil.getWorldArchive(), blockchainUtil.getTransactionPool(), @@ -617,6 +618,7 @@ public void shouldNotImportBlocksThatAreAlreadyBeingImported() { new EthContext( new EthPeers( "eth", + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), metricsSystem, 25, @@ -749,6 +751,7 @@ public Object answer(final InvocationOnMock invocation) throws Throwable { new EthContext( new EthPeers( "eth", + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), metricsSystem, 25, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/RangeHeadersFetcherTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/RangeHeadersFetcherTest.java index 0a0570b8a54..503d59c910a 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/RangeHeadersFetcherTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/RangeHeadersFetcherTest.java @@ -74,6 +74,7 @@ public static void setUpClass() { public void setUpTest() { ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, () -> false, protocolContext.getWorldStateArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java index 6b61831cced..ddb15422559 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java @@ -90,7 +90,9 @@ public void setup() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( - localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem())); + protocolSchedule, + localBlockchain, + new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem())); ethContext = ethProtocolManager.ethContext(); final int blockNumber = 10; diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/DownloadReceiptsStepTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/DownloadReceiptsStepTest.java index b5657ab4f97..ec9313ed907 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/DownloadReceiptsStepTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/DownloadReceiptsStepTest.java @@ -24,6 +24,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.BlockWithReceipts; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; +import org.hyperledger.besu.ethereum.core.ProtocolScheduleFixture; import org.hyperledger.besu.ethereum.core.TransactionReceipt; import org.hyperledger.besu.ethereum.eth.EthProtocolConfiguration; import org.hyperledger.besu.ethereum.eth.manager.EthProtocolManager; @@ -61,6 +62,7 @@ public void setUp() { TransactionPool transactionPool = mock(TransactionPool.class); ethProtocolManager = EthProtocolManagerTestUtil.create( + ProtocolScheduleFixture.MAINNET, blockchain, () -> false, protocolContext.getWorldStateArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java index b5bc8168dae..7fdab1e0d3c 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java @@ -26,6 +26,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeaderTestFixture; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.ethereum.core.Difficulty; +import org.hyperledger.besu.ethereum.core.ProtocolScheduleFixture; import org.hyperledger.besu.ethereum.eth.EthProtocolConfiguration; import org.hyperledger.besu.ethereum.eth.manager.EthContext; import org.hyperledger.besu.ethereum.eth.manager.EthPeer; @@ -94,6 +95,7 @@ public void setUp() { blockchain = blockchainSetupUtil.getBlockchain(); ethProtocolManager = EthProtocolManagerTestUtil.create( + ProtocolScheduleFixture.MAINNET, blockchain, () -> timeoutCount.getAndDecrement() > 0, blockchainSetupUtil.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java index efe523322c7..9f3031ab65d 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java @@ -89,7 +89,9 @@ public void setup() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( - localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem())); + protocolSchedule, + localBlockchain, + new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem())); ethContext = ethProtocolManager.ethContext(); syncState = new SyncState(protocolContext.getBlockchain(), ethContext.getEthPeers()); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java index 11b4e1d249b..741334643cb 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java @@ -85,6 +85,7 @@ public void setUp() { protocolContext = blockchainSetupUtil.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, timeout::get, blockchainSetupUtil.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java index e25293634ce..80bc2b9d2a4 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java @@ -88,6 +88,7 @@ public void setUp() { transactionPool = blockchainSetupUtil.getTransactionPool(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, blockchain, timeout::get, blockchainSetupUtil.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderForkTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderForkTest.java index 3c877bd2309..cda6e900932 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderForkTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderForkTest.java @@ -64,6 +64,7 @@ public void setupTest() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem()), localBlockchainSetup.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java index 24d9fa2e305..f9c4cb1e9fa 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java @@ -101,6 +101,7 @@ public void setupTest() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem()), localBlockchainSetup.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java index b80e94450d5..1ec29f6994f 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java @@ -84,6 +84,7 @@ public void setupTest() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem()), localBlockchainSetup.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java index 1214c5da1e6..65e81aafe32 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java @@ -76,6 +76,7 @@ public void setupTest() { protocolContext = localBlockchainSetup.getProtocolContext(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem()), localBlockchainSetup.getWorldArchive(), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java index 4a766c5d288..495cbfd203d 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java @@ -83,6 +83,7 @@ public void setup() { new ProtocolContext(localBlockchain, localWorldState, null); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, new EthScheduler(1, 1, 1, 1, new NoOpMetricsSystem()), localWorldState, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java index e5f31408a26..b3abf90364a 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java @@ -144,6 +144,7 @@ public void searchesAgainstNetwork() { final WorldStateArchive worldStateArchive = createInMemoryWorldStateArchive(); final EthProtocolManager ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, worldStateArchive, mock(TransactionPool.class), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java index f8523b3c557..2976facbe6c 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java @@ -80,6 +80,7 @@ public void setup() { final WorldStateArchive worldStateArchive = createInMemoryWorldStateArchive(); ethProtocolManager = EthProtocolManagerTestUtil.create( + protocolSchedule, localBlockchain, worldStateArchive, mock(TransactionPool.class), diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java index 22a6840f413..63493da4bfa 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java @@ -132,6 +132,7 @@ public TestNode( final EthPeers ethPeers = new EthPeers( EthProtocol.NAME, + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()), TestClock.fixed(), metricsSystem, 25, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java index cd17fd07adf..b8295945878 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java @@ -40,6 +40,7 @@ import org.hyperledger.besu.ethereum.eth.transactions.sorter.GasPricePendingTransactionsSorter; import org.hyperledger.besu.ethereum.forkid.ForkIdManager; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.testutil.TestClock; @@ -60,6 +61,7 @@ public class TransactionPoolFactoryTest { @Mock ProtocolSchedule schedule; @Mock ProtocolContext context; + @Mock ProtocolSpec protocolSpec; @Mock MutableBlockchain blockchain; @Mock EthContext ethContext; @Mock EthMessages ethMessages; @@ -85,6 +87,7 @@ public void setup() { ethPeers = new EthPeers( "ETH", + () -> protocolSpec, TestClock.fixed(), new NoOpMetricsSystem(), 25, diff --git a/ethereum/ethstats/src/main/java/org/hyperledger/besu/ethstats/util/NetstatsUrl.java b/ethereum/ethstats/src/main/java/org/hyperledger/besu/ethstats/util/NetstatsUrl.java index 00f6d9bba7f..7ff46e0f67c 100644 --- a/ethereum/ethstats/src/main/java/org/hyperledger/besu/ethstats/util/NetstatsUrl.java +++ b/ethereum/ethstats/src/main/java/org/hyperledger/besu/ethstats/util/NetstatsUrl.java @@ -26,7 +26,7 @@ @Value.Immutable public interface NetstatsUrl { - Pattern NETSTATS_URL_REGEX = Pattern.compile("([-\\w]+):([\\w]+)?@([-.\\w]+)(:([\\d]+))?"); + Pattern NETSTATS_URL_REGEX = Pattern.compile("([-\\w]+):([-\\w]+)?@([-.\\w]+)(:([\\d]+))?"); String getNodeName(); diff --git a/ethereum/ethstats/src/test/java/org/hyperledger/besu/ethstats/util/NetstatsUrlTest.java b/ethereum/ethstats/src/test/java/org/hyperledger/besu/ethstats/util/NetstatsUrlTest.java index 4d0a8c6aa06..a59f4fd872a 100644 --- a/ethereum/ethstats/src/test/java/org/hyperledger/besu/ethstats/util/NetstatsUrlTest.java +++ b/ethereum/ethstats/src/test/java/org/hyperledger/besu/ethstats/util/NetstatsUrlTest.java @@ -21,7 +21,7 @@ public class NetstatsUrlTest { - private final String VALID_NETSTATS_URL = "Dev-Node-1:secret@127.0.0.1:3001"; + private final String VALID_NETSTATS_URL = "Dev-Node-1:secret-with-dashes@127.0.0.1:3001"; private final String CONTACT = "contact@mail.fr"; @@ -34,7 +34,7 @@ public void buildWithValidParams() { assertThat(netstatsUrl.getHost()).isEqualTo("127.0.0.1"); assertThat(netstatsUrl.getNodeName()).isEqualTo("Dev-Node-1"); assertThat(netstatsUrl.getPort()).isEqualTo(3001); - assertThat(netstatsUrl.getSecret()).isEqualTo("secret"); + assertThat(netstatsUrl.getSecret()).isEqualTo("secret-with-dashes"); assertThat(netstatsUrl.getContact()).isEqualTo(CONTACT); } diff --git a/ethereum/referencetests/src/reference-test/external-resources b/ethereum/referencetests/src/reference-test/external-resources index 69c4c2a98dc..638da7ca7b2 160000 --- a/ethereum/referencetests/src/reference-test/external-resources +++ b/ethereum/referencetests/src/reference-test/external-resources @@ -1 +1 @@ -Subproject commit 69c4c2a98dc8a712d4c6f5a817da4f21ff719006 +Subproject commit 638da7ca7b2ca371ebb33d7d7d2562981aafd9b2 diff --git a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/NoRewardProtocolScheduleWrapper.java b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/NoRewardProtocolScheduleWrapper.java index cee9cdf1293..e072101d2f6 100644 --- a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/NoRewardProtocolScheduleWrapper.java +++ b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/NoRewardProtocolScheduleWrapper.java @@ -82,7 +82,8 @@ public ProtocolSpec getByBlockNumber(final long number) { original.getBadBlocksManager(), Optional.empty(), original.getWithdrawalsValidator(), - original.getWithdrawalsProcessor()); + original.getWithdrawalsProcessor(), + original.isPoS()); } @Override diff --git a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java index 6ae8d70b81d..c0608943ab6 100644 --- a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java +++ b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java @@ -67,6 +67,7 @@ import java.util.Optional; import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Supplier; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.tuweni.bytes.Bytes; @@ -191,9 +192,12 @@ private boolean buildContext( // mining support + final Supplier currentProtocolSpecSupplier = + () -> protocolSchedule.getByBlockHeader(blockchain.getChainHeadHeader()); final EthPeers ethPeers = new EthPeers( "reteseth", + currentProtocolSpecSupplier, retestethClock, metricsSystem, 0, diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java index ca28eecdb62..a2ebcf472df 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java @@ -80,6 +80,12 @@ public OperationResult execute(final MessageFrame frame, final EVM evm) { final MutableAccount account = frame.getWorldUpdater().getAccount(address).getMutable(); frame.clearReturnData(); + final long inputOffset = clampedToLong(frame.getStackItem(1)); + final long inputSize = clampedToLong(frame.getStackItem(2)); + if (inputSize > maxInitcodeSize) { + frame.popStackItems(getStackItemsConsumed()); + return new OperationResult(cost, ExceptionalHaltReason.CODE_TOO_LARGE); + } if (value.compareTo(account.getBalance()) > 0 || frame.getMessageStackDepth() >= 1024 @@ -88,12 +94,6 @@ public OperationResult execute(final MessageFrame frame, final EVM evm) { } else { account.incrementNonce(); - final long inputOffset = clampedToLong(frame.getStackItem(1)); - final long inputSize = clampedToLong(frame.getStackItem(2)); - if (inputSize > maxInitcodeSize) { - frame.popStackItems(getStackItemsConsumed()); - return new OperationResult(cost, ExceptionalHaltReason.CODE_TOO_LARGE); - } final Bytes inputData = frame.readMemory(inputOffset, inputSize); // Never cache CREATEx initcode. The amount of reuse is very low, and caching mostly // addresses disk loading delay, and we already have the code. diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompiledContract.java index 802eb6d184f..1771a3b1a79 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompiledContract.java @@ -19,15 +19,13 @@ import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; import org.hyperledger.besu.evm.frame.MessageFrame; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; import com.google.common.annotations.VisibleForTesting; import ethereum.ckzg4844.CKZG4844JNI; @@ -37,6 +35,9 @@ /** The KZGPointEval precompile contract. */ public class KZGPointEvalPrecompiledContract implements PrecompiledContract { + private static final AtomicBoolean loaded = new AtomicBoolean(false); + + private final Bytes successResult; /** Instantiates a new KZGPointEval precompile contract. */ public KZGPointEvalPrecompiledContract() { @@ -49,53 +50,41 @@ public KZGPointEvalPrecompiledContract() { * @param pathToTrustedSetup the trusted setup path */ public KZGPointEvalPrecompiledContract(final Optional pathToTrustedSetup) { - - String absolutePathToSetup; - CKZG4844JNI.Preset bitLength; - if (pathToTrustedSetup.isPresent()) { - Path pathToSetup = pathToTrustedSetup.get(); - absolutePathToSetup = pathToSetup.toAbsolutePath().toString(); - } else { - InputStream is = - KZGPointEvalPrecompiledContract.class.getResourceAsStream( - "mainnet_kzg_trusted_setup_4096.txt"); - try { - File jniWillLoadFrom = File.createTempFile("kzgTrustedSetup", "txt"); - jniWillLoadFrom.deleteOnExit(); - Files.copy(is, jniWillLoadFrom.toPath(), REPLACE_EXISTING); - is.close(); - absolutePathToSetup = jniWillLoadFrom.getAbsolutePath(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - try (BufferedReader setupFile = - Files.newBufferedReader(Paths.get(absolutePathToSetup), Charset.defaultCharset())) { - String firstLine = setupFile.readLine(); - if ("4".equals(firstLine)) { - bitLength = CKZG4844JNI.Preset.MINIMAL; - } else if ("4096".equals(firstLine)) { - bitLength = CKZG4844JNI.Preset.MAINNET; + if (loaded.compareAndSet(false, true)) { + String absolutePathToSetup; + if (pathToTrustedSetup.isPresent()) { + Path pathToSetup = pathToTrustedSetup.get(); + absolutePathToSetup = pathToSetup.toAbsolutePath().toString(); } else { - throw new IllegalArgumentException("provided file not a setup for either 4 or 4096 bits"); - } - CKZG4844JNI.loadNativeLibrary(bitLength); - try { - CKZG4844JNI.loadTrustedSetup(absolutePathToSetup); - } catch (RuntimeException mightBeAlreadyLoaded) { - if (!mightBeAlreadyLoaded.getMessage().contains("Trusted Setup is already loaded")) { - throw mightBeAlreadyLoaded; + InputStream is = + KZGPointEvalPrecompiledContract.class.getResourceAsStream( + "mainnet_kzg_trusted_setup_4096.txt"); + try { + File jniWillLoadFrom = File.createTempFile("kzgTrustedSetup", "txt"); + jniWillLoadFrom.deleteOnExit(); + Files.copy(is, jniWillLoadFrom.toPath(), REPLACE_EXISTING); + is.close(); + absolutePathToSetup = jniWillLoadFrom.getAbsolutePath(); + } catch (IOException e) { + throw new RuntimeException(e); } } - } catch (IOException e) { - throw new RuntimeException(e); + CKZG4844JNI.loadNativeLibrary(CKZG4844JNI.Preset.MAINNET); + CKZG4844JNI.loadTrustedSetup(absolutePathToSetup); } + Bytes fieldElementsPerBlob = + Bytes32.wrap(Bytes.ofUnsignedInt(CKZG4844JNI.getFieldElementsPerBlob()).xor(Bytes32.ZERO)); + Bytes blsModulus = + Bytes32.wrap(Bytes.of(CKZG4844JNI.BLS_MODULUS.toByteArray()).xor(Bytes32.ZERO)); + + successResult = Bytes.concatenate(fieldElementsPerBlob, blsModulus); } /** free up resources. */ @VisibleForTesting public void tearDown() { CKZG4844JNI.freeTrustedSetup(); + loaded.set(false); } @Override @@ -126,7 +115,6 @@ public PrecompileContractResult computePrecompile( Bytes commitment = input.slice(96, 48); Bytes proof = input.slice(144, 48); - Bytes output = Bytes.EMPTY; PrecompileContractResult result; try { boolean proved = @@ -134,21 +122,13 @@ public PrecompileContractResult computePrecompile( commitment.toArray(), z.toArray(), y.toArray(), proof.toArray()); if (proved) { - Bytes fieldElementsPerBlob = - Bytes32.wrap( - Bytes.of(CKZG4844JNI.getFieldElementsPerBlob()).xor(Bytes32.ZERO)); // usually 4096 - Bytes blsModulus = - Bytes32.wrap(Bytes.of(CKZG4844JNI.BLS_MODULUS.toByteArray()).xor(Bytes32.ZERO)); - - output = Bytes.concatenate(fieldElementsPerBlob, blsModulus); - result = new PrecompileContractResult( - output, false, MessageFrame.State.COMPLETED_SUCCESS, Optional.empty()); + successResult, false, MessageFrame.State.COMPLETED_SUCCESS, Optional.empty()); } else { result = new PrecompileContractResult( - output, + Bytes.EMPTY, false, MessageFrame.State.COMPLETED_FAILED, Optional.of(ExceptionalHaltReason.PRECOMPILE_ERROR)); @@ -158,7 +138,7 @@ public PrecompileContractResult computePrecompile( System.out.println(kzgFailed.getMessage()); result = new PrecompileContractResult( - output, + Bytes.EMPTY, false, MessageFrame.State.COMPLETED_FAILED, Optional.of(ExceptionalHaltReason.PRECOMPILE_ERROR)); diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java index c6d06224ff8..8eaf942619f 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java @@ -15,77 +15,79 @@ package org.hyperledger.besu.evm.precompile; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.fail; import static org.mockito.Mockito.mock; -import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; import org.hyperledger.besu.evm.frame.MessageFrame; import java.io.IOException; import java.io.InputStream; import java.nio.file.Path; +import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import ethereum.ckzg4844.CKZG4844JNI; +import com.fasterxml.jackson.databind.node.ArrayNode; import org.apache.tuweni.bytes.Bytes; -import org.apache.tuweni.bytes.Bytes32; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class KZGPointEvalPrecompileContractTest { - private static KZGPointEvalPrecompiledContract contract; private final MessageFrame toRun = mock(MessageFrame.class); - @BeforeClass + @BeforeAll public static void init() { Path testSetupAbsolutePath = Path.of( - KZGPointEvalPrecompileContractTest.class.getResource("trusted_setup_4.txt").getPath()); + KZGPointEvalPrecompileContractTest.class + .getResource("trusted_setup_4096.txt") + .getPath()); contract = new KZGPointEvalPrecompiledContract(Optional.of(testSetupAbsolutePath)); } - @Test - public void happyPath() { - Bytes input = - Bytes.fromHexString( - "013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc420000000000000000000000000000000000000000000000000000000000000031e5a2356cbc2ef6a733eae8d54bf48719ae3d990017ca787c419c7d369f8e3c83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba"); - - Bytes fieldElementsPerBlob = - Bytes32.wrap(Bytes.ofUnsignedInt(CKZG4844JNI.getFieldElementsPerBlob()).xor(Bytes32.ZERO)); - Bytes blsModulus = - Bytes32.wrap(Bytes.of(CKZG4844JNI.BLS_MODULUS.toByteArray()).xor(Bytes32.ZERO)); - Bytes expectedOutput = Bytes.concatenate(fieldElementsPerBlob, blsModulus); - // contract input is encoded as follows: versioned_hash | z | y | commitment | proof | - PrecompiledContract.PrecompileContractResult result = contract.computePrecompile(input, toRun); - assertThat(result.getOutput()).isEqualTo(expectedOutput); - MessageFrame.State endState = result.getState(); - assertThat(endState).isEqualTo(MessageFrame.State.COMPLETED_SUCCESS); + @AfterAll + public static void tearDown() { + contract.tearDown(); } - @Test - public void sadPaths() { - try (InputStream failVectors = - KZGPointEvalPrecompileContractTest.class.getResourceAsStream("fail_pointEvaluation.json")) { - - ObjectMapper jsonMapper = new ObjectMapper(); - JsonNode failJson = jsonMapper.readTree(failVectors); - - for (JsonNode testCase : failJson) { - - Bytes input = Bytes.fromHexString(testCase.get("Input").asText()); + @ParameterizedTest(name = "{index}") + @MethodSource("getPointEvaluationPrecompileTestVectors") + public void testComputePrecompile(final PrecompileTestParameters parameters) { + PrecompiledContract.PrecompileContractResult result = + contract.computePrecompile(parameters.input, toRun); + if (parameters.valid) { + assertThat(result.getState()).isEqualTo(MessageFrame.State.COMPLETED_SUCCESS); + assertThat(result.getOutput()).isEqualTo(parameters.returnValue); + } else { + assertThat(result.getState()).isNotEqualTo(MessageFrame.State.COMPLETED_SUCCESS); + } + } - PrecompiledContract.PrecompileContractResult result = - contract.computePrecompile(input, toRun); - MessageFrame.State endState = result.getState(); - assertThat(endState).isEqualTo(MessageFrame.State.COMPLETED_FAILED); - assertThat(result.getHaltReason()).isPresent(); - assertThat(result.getHaltReason().get()).isEqualTo(ExceptionalHaltReason.PRECOMPILE_ERROR); - } - } catch (IOException ioe) { - fail("couldn't load test vectors", ioe); + public static List getPointEvaluationPrecompileTestVectors() + throws IOException { + final JsonNode jsonNode; + try (final InputStream testVectors = + KZGPointEvalPrecompileContractTest.class.getResourceAsStream( + "pointEvaluationPrecompile.json")) { + jsonNode = new ObjectMapper().readTree(testVectors); } + final ArrayNode testCases = (ArrayNode) jsonNode.get("TestCases"); + final Bytes returnValue = Bytes.fromHexString(jsonNode.get("PrecompileReturnValue").asText()); + return IntStream.range(0, testCases.size()) + .mapToObj( + i -> { + final JsonNode testCase = testCases.get(i); + final Bytes input = Bytes.fromHexString(testCase.get("Input").asText()); + final boolean valid = testCase.get("Valid").asBoolean(); + return new PrecompileTestParameters(input, valid, returnValue); + }) + .collect(Collectors.toList()); } + + record PrecompileTestParameters(Bytes input, boolean valid, Bytes returnValue) {} } diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/fail_pointEvaluation.json b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/fail_pointEvaluation.json deleted file mode 100644 index b206e64308c..00000000000 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/fail_pointEvaluation.json +++ /dev/null @@ -1,1474 +0,0 @@ -[ - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373040013932a1205a312a30385a633030324131633261313732397a32223228413139613130257842203938313738", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-0", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030300000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030305931383030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-1", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23131303131393031323031323030313030303030303030303030303030303937313032303231323030303130303131", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-2", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030300000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-3", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303230300000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-4", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "mismatched versioned hash", - "Name": "fuzzcorp-5", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030320000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-6", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000000000000000000000000000000000000030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-7", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-8", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030313030305a30303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-9", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-10", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325f48719ae3d99e269", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-11", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e05821ee972ebc472d029412b415f3844a74f5c6243e14052e105131b70b7a5faf85ad3a494325e269fa", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-12", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030783030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-13", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303130303030303030303051235c303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-14", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc420000000000000000000000000000000000000000000000000000000000000031592479313731592338ea433862266919203d994117217838413961622a8e3c83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-15", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030308030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373831385a12e6a0b2a4b592a471ee3a5b3ae2333f064f737dbe815f717beabfef2f3bf23030325a303032303030373031303037304130373131303031313030303132373038303039303030303032", - "Expected": "", - "ExpectedError": "invalid input length", - "Name": "fuzzcorp-16", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030580000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-17", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c03030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-18", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23738313830303227303032303030373031303005304130373131303051053a63e53130303130313237313830303938", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-19", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373032303932a1205a312a30385a633030324131633261313732397a32223228413139613130257842203938313738", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-20", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303730303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-21", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303032303030253030303000000100303942303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-22", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0000000000000000000000000000000000000000000000000000000000000000303031303130313131303130303231313230303230303038303031303030303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-23", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030304131617a30303030303030302030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-24", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000003030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-25", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0000000021000000000000000000000000000000000000000000000000000000303031303130313131303130303231313230303230303038303031303030303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-26", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-27", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030300000000000000000303030303030303030303030303030303030303030303030303030303030307883fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: invalid expected output", - "Name": "fuzzcorp-28", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: compression flag must be set", - "Name": "fuzzcorp-29", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303032303000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-30", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373831383030320237aded5cd127303032303730303031303037304130373131303031313030303132373138303039", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-31", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "invalid input length", - "Name": "fuzzcorp-32", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030300000000000200000000000000000002a38000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-33", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373831383030322730303230303037303130303730413037313130303131303030edededededededed313237313830", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-34", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-35", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030373030310000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-36", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2312e3031312b3031323031323030373030303030013030383132303030303937313032303231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-37", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0600000000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-38", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030300030303031300000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-39", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030d8670a313030303030303030303030303030303030303030303030303030383030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-40", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23131303131394331323031323030313030303030303030383132303030303937313032303231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-41", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303024303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-42", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000003030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-43", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030302030000000303030393024305861000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-44", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030305800000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-45", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030383030303030303030302430303030393083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-46", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2784143382a373921634338312a318f3743392d2830385832795841746232244358394332373143217a5a2830416130", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-47", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373032303932a1305a312a303a5a630400324131633261313732327a32223225413139613130257842203938313738", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-48", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-49", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383636363636363636323030303730313030373041303731313030313130303031ffffff7f303039383931323032", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-50", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc420000000000000000000000000000000000000000000000000000000000000031592479313731592338ea433862262719203d99c117217838413961622a8e3c83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-51", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030313131313131303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-52", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965801921ee972ebc472d02944a74f5c6243e14052e105141b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-53", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303042303030303030303020303730303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-54", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-55", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030393820312061303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-56", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030000000303030303043305861000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-57", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23738313830303230303032303030373031303037304130373131303031313030303132373138303039383931323032", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on curve", - "Name": "fuzzcorp-58", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030313030303030303030303030303030300000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-59", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303032025baded5cd127303032303030373031303037304130373131303031313030303132373138303039", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-60", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303021303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-61", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-62", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030313030303030303030303030303000010000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-63", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23738313830303227303032303030373031303037304130373131303031313030303132373138303039383931323032", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-64", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303046303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-65", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030473030320000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-66", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-67", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303043303030303030303020303730303030303030303030303030303030303030303030303030302770303231000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-68", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0100000000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-69", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030383061303030303030302230303030393083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-70", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x30", - "Expected": "", - "ExpectedError": "invalid input length", - "Name": "fuzzcorp-71", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000003030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-72", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030307883fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: invalid expected output", - "Name": "fuzzcorp-73", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0000000000000000000000000000000000000000000000000000000000000000303031303130313131303130303231313230303230303038303031302530303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-74", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-75", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030307883fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: invalid expected output", - "Name": "fuzzcorp-76", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e01921ee972ebc302d02944a43f5c6243e3705245a5124b70bf65faf85ad3a494325e269fad038842c32", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-77", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b22031303131393031323031323030373030303030303030383132303030303837313030a53231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-78", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23738313830303227303032303030373031303005304130373131303051053a63e53131303030313237313830303938", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-79", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303130303030303030303020000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-80", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303032303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-81", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303032303030253030303000000100303942303030303230303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-82", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-83", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030c5885b303030375a42583200000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-84", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030302430303030303030303030303030303030303030303030303030303030303030303030303a303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-85", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373831383030325a303032303030373031303037304130373131303031313030303132373038303039303030303032", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-86", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030d332d3d3d3d339d3d3303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-87", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303001000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-88", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23131303131393031323031323030313030307fff303030303030303030303937313030303231323030303130303131", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-89", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373831d127303032303030373031303037304130373131303037304130373131303031313030303732313138303039", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-90", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc30303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302e3030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-91", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0000000021e2ffffff0000000000000000000000000000000000000000000000303031303130313131303130303231313230303230303038303031303030303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-92", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030302030303030303030303030303030303030473030320000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-93", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030313130300083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-94", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030300000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-95", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030020000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-96", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030613030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-97", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc30303030303030303030303030e8303030304131617a30303030303030302030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-98", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc000000000e000000000000000000000000000000000000000000000000000000303031303130313131303130303231313230303230303038303031303030303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-99", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030633030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-100", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303032023759ed5cb5b5b5b5b5b5d179303032303730303031303037304130373131303031313030303132", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-101", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b22031303131393031323031323030373030303030303030383132303030303837303030a53231323130303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-102", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030ee30303030303030303030303030303030303030303025303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-103", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303011023759ed5cb5b5b5b5b5b5d17930303230373030303137301630000004003130303131013c036130", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-104", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: invalid evaluation point", - "Name": "fuzzcorp-105", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303931413259392800000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-106", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030bebebebe30303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-107", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc2400000000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-108", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303000000030000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-109", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030313030303031303030303030303000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-110", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030300000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23131303131393031323031323030373030303030303030383132303030303937313032303231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on curve", - "Name": "fuzzcorp-111", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-112", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303058303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-113", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303032623030323030303730313030373041303731313030313130303031ffffff7f303039383931323032", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-114", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-115", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303032623030323030303730313030373041303731313030313130303031ffffff7f303039382a7e223931", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-116", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030375a42583200000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-117", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc0000000000000000000000000000000100000000000000000000000000000000303031303130313131303130303231313230303230303038303031303030303183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-118", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: compression flag must be set", - "Name": "fuzzcorp-119", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303130000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-120", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303161303030303030303030ff30303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-121", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030313030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-122", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303139200000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-123", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303032303030303030313030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-124", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030300000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-125", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303053303030303030303020303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-126", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-127", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303042303030303030303020303730303030303030303030303030303030303030303030303030303030303231000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-128", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303130303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-129", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303730303030303030303030303030303030303030303025303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-130", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-131", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303032303030303030303030303030303030473030320000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-132", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303000303030303030303030303030303030303037303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-133", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-134", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303032303030303030303030303030303942303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-135", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030db0000000000000031000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-136", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030300030303000000030000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-137", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030233030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-138", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030ff30303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-139", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303037323130613030c130303030303030303030303130303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-140", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030000000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303e30303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-141", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030000000000000000000000000000000000000000000000000303030303030303000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: compression flag must be set", - "Name": "fuzzcorp-142", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-143", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030313141303030303030303030303030303030303030303030303030303030303030314183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-144", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030113030303030ff30303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-145", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-146", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373040303932a1205a312a30385a633030324131633261313732397a32223228413139613130257842203938313738", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-147", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2312e3031312b3031323031323030373030303030303030383132303030303937313032303231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-148", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030380000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-149", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c00000000000000030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-150", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2373032303932a1205a312a303a5a630400324131633261313732327a32223225413139613130257842203938313738", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-151", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030a731303030303030303030303030302e83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-152", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303000000040000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-153", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-154", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303037253030303030303030303030303030303030303030303030303030303030383030303030303030302430303030393083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-155", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030300030303030300000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-156", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b237383138303032023759ed5cb5b5b5b5b5b5d179303032303730303031373037303041303131303031313030303132", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-157", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302300000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-158", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030302030303130303030313030303030303042303030303030303020303730303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-159", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030000000000000000030ffffff000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-160", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303000303030303030303030303030303030303030303030303030303030303030300083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: compression flag must be set", - "Name": "fuzzcorp-161", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303023000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-162", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030300000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-163", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030305930303030303030303043253000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-164", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030323030303000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-165", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e01921ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-166", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303059303030303030303030473030320000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-167", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304230373000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-168", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030430000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-169", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "invalid input length", - "Name": "fuzzcorp-170", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763c23030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: input string must be zero when infinity flag is set", - "Name": "fuzzcorp-171", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030304300000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-172", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303031000000003030300000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-173", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030000000000000000000000000000000000000000000000000000000000000303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-174", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302e83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-175", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc420000000000000000000000000000000000000000000000000000000000000031592479313731592338ea433862262719203d994117217838413961622a8e3c83fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b2a99adff965e0a121ee972ebc472d02944a74f5c6243e14052e105124b70bf65faf85ad3a494325e269fad097842cba", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-176", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030300030003030303030000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-177", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030305a30303046303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-178", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763b23131303131394331323031323030313030303030303030383132303030303030303030303231323030303130303231", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: point is not on correct subgroup", - "Name": "fuzzcorp-179", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be7639d3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", - "Expected": "", - "ExpectedError": "verify_kzg_proof error: failed to decode kzgProof: must be less than modulus", - "Name": "fuzzcorp-180", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303041303030303030303030303030303030303030303030303030303030303030304183fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-181", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030300000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-182", - "Gas": 50000, - "NoBenchmark": false - }, - { - "Input": "0x013c03613f6fc558fb7e61e75602241ed9a2f04e36d8670aadd286e71b5ca9cc3030303030303030303030303030303030303030303030303030303030303030010000000000000000000000000000000000000000000000000000000000000083fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be76383fac17c3f237fc51f90e2c660eb202a438bc2025baded5cd193c1a018c5885bc9281ba704d5566082e851235c7be763", - "Expected": "", - "ExpectedError": "invalid kzg proof", - "Name": "fuzzcorp-183", - "Gas": 50000, - "NoBenchmark": false - } -] \ No newline at end of file diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pointEvaluationPrecompile.json b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pointEvaluationPrecompile.json new file mode 100644 index 00000000000..b3f920acd77 --- /dev/null +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pointEvaluationPrecompile.json @@ -0,0 +1,170 @@ +{ + "PrecompileReturnValue": "000000000000000000000000000000000000000000000000000000000000100073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", + "TestCases": [ + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "", + "Valid": true + }, + { + "Input": "012801238108394529333e45adfaff59edde33727fa766ee99752921b472893611f5bc1101693a3a77098f71ec13c7ccaf4542a037b9397dd4ebe522e05d9d47629f4dddbcf4a5c28f5b09c9bee1895d3de14ea9312df7cf607d09517eb7863dabb6bcbe313530ce7779abdf633d5a3594a41fbad9a79f4a9b46b89c0cfe78f6a15948dec92c4404aedac8b5e7dd60598a963e56a55c2659c306beeb49ac79b7bd375fad150619b2fb5d835ee8f8305c3aac541ca6adad9be851b4f6dca5cd73", + "FailureMode": "", + "Valid": true + }, + { + "Input": "0116f63b849a1a5704c55538e61f3576b09fe82fe038a39c96a3cd97986777a97ca4870f96b96f3c0ccef8ebccb186d1df0eccad55374fcf2262bc32e224763f5ac3abbe48a5c2f3731087f86bbf567910fe098f6183a2be6c1bd97ed2e1c562a4429aefed1de5145c9426c68b2fa5dc9ac0bd0c7d0420e0763824849abf47ff9be8942d481525d54dbf8d2508490e42a5e6166b8755b63c54b54802049c01c4a79b6c55b3cf3b7a22e9382cf4960f703b339622aa530e0961ef6747faf3ebf3", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01aebaf22aa7b4019a4917f97176f9c0e79513f1e297b4daef1158fbed94f8afe753520d2b0aa53ea1926266ad4f46d60fd855bb73b5642171d89242e4eb4e3735096476da0d660f9e2913bbe7d29301fa96a178d02349323fac041d6ac1070d934abbb7ff0028c06ce8d27accbf0312fd4bfd55e58e6d8920aaf9d7d51f1a59ac00b34e7eedf5464ddf69b3c6e3e8d1b577b30ec9d82eb5e56827c875fb33892e29b504198fa7a6b196ac7cd6d64838ca452d94adeb57f1ae4b5d894d26d616", + "FailureMode": "", + "Valid": true + }, + { + "Input": "016ee58067bdbc41ad3978fb379e8fe3ab0bc4cda0f131ee9baf2db213cd4dc552031d0bc05ada403657cce08ded05db3fa1dfc891337a73bf4e6952e6b2272f02b04885539a8052bd8e104f6f894fca92355da265a04fc5a16b2fca2e016252a90cf079520942b69d207a57445406dc1f539f60467cf2bcd805814190ea87280103f02e68e50a314b25dea197c2543488e5992ffd5e03890ef5c362569a670b955cb11d923b176b152750e853190ee7dd6b56074f009580e191d79e3888bc26", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01bbbb1a74e35dd8cb8faec442693b1355f40ab9d0b44c47a9ec8ff197987929bdb2e70855ab0f43cb1b365b6e8bc5df6f6a69d6afb18fc50dc53f62e879002728aa2577ad9b59293956d5d76783b1e54c1777d3ebc2ac5dea349f10a66735399913a98b55d225411649847f9cf0c5afedf4f30623392cea17ed509864d8e0d87ecfa303e0f9c9c083456d9125a3a8d5b723e9a64edda406fc74ab8685039dd6039b6d2f8ed8d15887776860d7ea57a3767410a4eb46bba045f925b41e2fa299", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01792bd31013b362e1383652ea9c6d7d0f6c7880f4478eab785923d2a24417fe2862b206eafb444560e09fd54e2985e49f33f3e3cd2fa5175c3b1672ea40d91e808310a87ca1c24a2b2258c38e495d0df51d1cea6c11431679cc04a8468c9f5a86bdcd35acafb637235ccb8c908332cea2ca9e4efa5afc66c24f9f3ea0281ff3c588b147d90844248b36b79cbae7d016b6c46951710384a5fc425bfc89f804b9bfe0148805c54162a4ec091e5bf063db88577b12b9839def3fb15ab4b15e46e8", + "FailureMode": "", + "Valid": true + }, + { + "Input": "0111c228100fd51f22a0be9e86211f971ab6c7a5dfe6988b5b45e159c77d937b93117d047f4c7a47f5a409502fc744e9cffc7cf1ebadba69aab1ec81ec07b2166770490221efc59c136280d4152adcfee9dbd2d17b6b727a4838373258054631b416564857a5239934c918dd7ce1585016082ca9bb79a0626d1ccb00afcd458910d69b36e69752791ff49736af318707855231b9ecc3cd8ed8f52eb31673482ad804ccaeeadb91fda7104f90b483d609fefa5b677efe9ceb772a4d80decbf404", + "FailureMode": "", + "Valid": true + }, + { + "Input": "016d0d27b2a1b5266e1f6fe2f987bff57bd67157222831d9260f782dbf85e957fec04702149daf498a6973ca0f6504eeffc506ff092cd0bbf827c391eece8a0e004ddc8a839cd6c7d381795dd08e8ef23e97f59e7c34457f3aa802b5edbba35a94c3f402eb91cf43a4f502d486f22f0f04bd99c1a8180353d93e6c612ddb22c7838d3e03c471b4289bd2fd5060a615379172bbbf1f4606d3c777886412b18c5e551b098d9373cec1957dc333e9b83d0306941c61a7a0fdf031f243c4e2fc0919", + "FailureMode": "", + "Valid": true + }, + { + "Input": "011459b168df56c35b2a1712329aabd7f904735dfb7e948b12869a4396d7cb9e69701200a9ede44b1f2edd44f002c4f22f8f900c28aae50d479e99a1f0956306740e0b40715e2d1d5b32c1960253f8a2b2c32db833279863237e1da14867b24b840eedd5e97ba21d82aaa67583b8f9b8936b1d0e11e69c77ab9f8381cf47f3013dc258944bf04fd91fe5663aa33b5397a05bcb8545682fbdc37663bbf01010c13164a422915a9c8961efe82825fb68302a3435ed2cf7e01bbac059a420277f05", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01dc43cf428476b6fde56262f081988eeeb5ae6e665a2fcbcd667f93b474ebc9d51fddfd3c3e1a4eb34e45bfd344414b6530bc234e003593dd910ddb45042a72c1f4fd101b80df1af58a2d77804c711e999d09a90f2e379ef18c752dd3866e34ac51bce1515c3df45ee85b5342c88291288a171f8799d31b1e77ff2d692f3f1f6880e2fd0262132fdaac0e4245958fafaaed1182c6af9f27f01e9e0c47dd3278496c3d3b4126c9f62a6fb81542d3223a480323fa09fb524ad4f70c83f46150f1", + "FailureMode": "", + "Valid": true + }, + { + "Input": "0111c36a6aa83254e02e96995ac0ac766f5edadd8044fd0170d4e459df72267a40cfa7fbd18e4f504813af39b4e2005095f945316c7e4ae52b08e4ea47cb026a43dfedc72048fbe7a9107e8abcdca472f722cd3327c78a6a1dd475d556e1063f8a6775af1fb1d442d7fef688d3e34aa7055e131fa13be05528cde77479d33ffd2f21708b479d3e36fabff48ccaceec19acbd62bfac28c7f29f62e0e3b8587fb50abd49370c1e164f3555abbe9199aabacf170d7c39beafb36506ec73847a6729", + "FailureMode": "", + "Valid": true + }, + { + "Input": "014adbe3d78e1a41777dc899baa9597dc97bcffa2bc6d8f79fe9de417078d8f8ab7e72f966df8452ddd718b49480c054c5c2cf3e8afc5f377a7ebafa4992db617d7ec99ffb7dac5dd4d5dc011447816b11b46094b584d5070fb620ef71edb114a8d63144a4ed21007c816a63e56701ad142dd4a26feaf9249040246b1b290450fac06edfc3f223e98aca2b7c758c459884b90ccabd00e842e492ffdea7495f3732dd2cfe142892400089b121bcac3dd21ab347d0f6dc092f23710354ea071438", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01cbb255a9e362102497d90841b3099aa812f281980b20c12951fdfdc30204c7162e3df7fb2fba54729c822e751e8059f58b594ca87a7589c8f4900a4c59b45904ec35e25ea7595f7e7352abbe50d6c1fa57c612b43cf77d17ab598ffa0f023f8a20f1cbae3472de159c30b66bcec852689326c449720ffeaa87d5b86629489ce1a5c660bb06c2a2539dcf1438d2c960a246002bcfe66adb8f9463c873b855ade410313c5128a8adfab5492da5e662cc556999ee653b697a449a21628c1585c7", + "FailureMode": "", + "Valid": true + }, + { + "Input": "0103a676648fcc81830d61b0b07937aaf48690aeda04d5b02b5a251bd5ca5c4f81dd07f59080ef560761eca855bc3f5e2555e359c6f88adb166b671a4e208d51e6ecb876da33438c5cf8fe1463008e14d012cda7365474e61148e2eb76d3910a852f33ed26a17a7a6b9db96b03c110d5709251a5377d0e86d4349bce0610d01ae2d6c4e2a45aea1d20822988bcbca345b17fca68d1b4024f157d9b81f57ff2917d0101f8e02cc05ae8c6655102b4dd55d8461c6f971f5111f1f0b82338837cb5", + "FailureMode": "", + "Valid": true + }, + { + "Input": "01e7ab7a7aaea9ee3e2fc8d17bde6badc12e2bf824bfe8db0eafc43dd0762bf1ec8cd2f225d124599c255623365aff62551e6d67e476a02d65e13d2a50e76549efae7b3b28a8d235894e618237f4abaffaa500fff7cb926e9309a7d4fe7eb53cab1484ed8e82a622d2647871e0e784fc676e55047dde4cf156b2036f937562dfff92102fd993352513fb75913935b47e89dc14149659b5d999abd29d2fc33f76b287b0140434c6c26c214fb0aa3f1ac27369ea89f4b2ab79aa03040720d32c67", + "FailureMode": "", + "Valid": true + }, + { + "Input": "010b73d38034466a538f1acaf463f7575d3d3f4baa23dcf6d559700e8fb5fd82573c9df0ba215a5b31eabf9d16f8be6785e7f67402f5b57fb357143a52ae3e4144abb69b6b607cce5f1830f05ad98f8c184d39a1c76d860876fffb5852fc450fa372cb9c0a5b0c14406f59e4926acde14f737d69d4a926906fbabad357e743f2ecab5a7da7e5384dca593697eaeaf58aa1b8b02d82fac14d98121dae7e04d9f3e38a5fc4164e0d0dd6692ba0b55b8063d4aee0987a0f811396617f4045609a71", + "FailureMode": "", + "Valid": true + }, + { + "Input": "013e3ff78fc9bb6c6564d205fe1064aa6e11eddef9f0e985d8f364005d03c22fc2eb67ee4f728f5dc6ae2918f7957e6cb5b080822073cbd101ceea4954751739e3e04001d6c2037a831ff7ad639fbdb277264edd75b50d025eb183120464f940a86e11eedc9683475153b147c8ce10ae29495aed6cf2e58c5c3385f1be4d2162696d0488a94b4a2a552eeb0502eae3cc80049aaaf808839090c40d57463ffb5b56228d88f2329b5811ac7f5931085fa7360876a58893cc049debf820bc7ab88b", + "FailureMode": "", + "Valid": true + }, + { + "Input": "019f4cc64584a59f7d924fb921ede13a7a04c1d595bdd96ba66722baeb145e862d9b32ece4c2c45f5b739392d7333e71e5790a903ef1e0235044c159563cf0309ae1b4c885a4afeb472ccf74b3ec7d68044ab28890a647d76939d31097645025817785fe342e0354ee0845753542d0eaff5c0acb9a7c2206de60c930a57c81b6db2e2b414ba3ab2730f3364f7d35dfdfa4df917a3c7c9e3457871234e6bf9a35ad025f0e40ef2a2502a5024c7f0ce709cc27c3bd2399c9a1ec02238d38124c9e", + "FailureMode": "", + "Valid": true + }, + { + "Input": "0128f689b5b1121319a69abacd871979a1075506bd04ac7f08399a1996626201984afde97913fa61f037fd0cb8d1fd751543949d5c6ff6759eba97695803c9284b3b9280d5b4d8f18181f4a0d199bd69e63463b75a2722835b23fe5145711a5997885c37b0edb98b1569af211135fa3b2ec29871005ef58bd429533bbabb70275840fec04fdd4fc327c730d0919fb0d08bd1b47fac65f7874afc7d394b5873c48c82a70e67c5c4dac616896fcec24df35f7e1ac5a6236927671d11aaa0a25c71", + "FailureMode": "", + "Valid": true + }, + { + "Input": "", + "FailureMode": "incorrectPrecompileLength", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac5", + "FailureMode": "incorrectPrecompileLength", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "incorrectPrecompileLength", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682c3b23e313cacf2ce5e5e13219c5a54851bc51a0ef723a0e13805186b13f245a7ebbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "nonCanonicalInputPoint", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44f98b392451fdc18899c205e8b9f9286daf331b974cba0af44e3343dc307b3baeca97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "nonCanonicalOutputPoint", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "cannotDeserialiseCommitment", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "cannotDeserialiseCommitment", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "FailureMode": "cannotDeserialiseProof", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "FailureMode": "cannotDeserialiseProof", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea84676820000000000000000000000000000000000000000000000000000000000000000ebbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "invalidOpening", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44f0000000000000000000000000000000000000000000000000000000000000000a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "invalidOpening", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cd9ff4ff4f98ba4ea89e80747cfdc694ac9969b841c8d558dc41bceb3c8f97c8c48c1409304ec70176c4e24fc7f6fa", + "FailureMode": "invalidOpening", + "Valid": false + }, + { + "Input": "01c357eb79e30f84b7f1b78e2dc064d5e889714a94a879218ffe6ffea8467682a645f2136c180538e24425f70b7607c87f7cb892193b242b86750f13de96c44febbab307c43d34e34553a2cb7115749fd5aef0958386e668419b3ef6f1eac524a97456b8097baed6e90ce381d2b21c970a3f9ad4f6c92b1bb26337f919bd639dd43bd470839153db09115e2862051f33c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "FailureMode": "invalidOpening", + "Valid": false + } + ] +} \ No newline at end of file diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4.txt b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4.txt deleted file mode 100644 index ae2e20a9edb..00000000000 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4.txt +++ /dev/null @@ -1,71 +0,0 @@ -4 -65 -97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb -854262641262cb9e056a8512808ea6864d903dbcad713fd6da8dddfa5ce40d85612c912063ace060ed8c4bf005bab839 -86f708eee5ae0cf40be36993e760d9cb3b2371f22db3209947c5d21ea68e55186b30871c50bf11ef29e5248bf42d5678 -94f9c0bafb23cbbf34a93a64243e3e0f934b57593651f3464de7dc174468123d9698f1b9dfa22bb5b6eb96eae002f29f -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d -88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 -a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 -93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 \ No newline at end of file diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4096.txt b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4096.txt index 92f11f0286f..c22cfff7515 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4096.txt +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/trusted_setup_4096.txt @@ -1,4163 +1,4163 @@ 4096 65 97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb -92a72fc2d2d7888d95bd8b479fd66555908ef365b31d181c6aae60b1cbbcc21110f057dd13f9b694b2b260cda1bcb516 -934c3d60d8a31e9cd617427b842dbd49d7dcc5c8949d932773f0a0d752786f229d7017c592b3303dc5f631d2c01d5c08 -a895d8f7f4f160ab3837d80b5f6aa743b28d22ed22116269f3857130709df107867ba7e0db0d5e171492fab0db2a635f -82d3d5a542a525646953cf68517013508bf9aec3cd7faf0a311fb0970f07697c8efc6943fb7fb8e9ff208a30ce4e8027 -95e3d50c2686c92568f46c8aa3a0e7cb3d456cc532c4ea0d07d47dbbed678fca2976b0b28009a360a2fa3dcd2716a7dd -b7b60fc315983545150f0b6545509ffe3f38b5562574e640dd9c61d1a5db441855df9b0cab10096fbca09024fe076602 -86836a32ca078c51b9e9012fd37cf6647bc4bc2b8331b8c51f0958aed321de1fe44c2ff374d34eba13fcac18f3061a63 -b50bd23db7116d7cdf19bb3bbf38d946f345c2b80e31bd3ac566efcb302561d3727df398ba913d7f3436b82003337c0c -83298b2de8fc1e36765903cb94d1b3e45ea5a09f5e0468dd4978ccd9577f81e2985f98f7294a3233d822f54d8d3f35e7 -89c74ab72d45bce23aa7b71d063f0e24e03353909570ce9459e8da7f872880c0267774699a10e88ca8d169b7f906da30 -a6bafa458bad96b879b771a1173aadf9a6ab07b62525642554a9e8c62587af476925e0bbc853d745fde3c77433cc05fb -8ef8070be49300c4a428b0cf1383608d4bbd0d7831e47cc210ae00f16193c4768b01c630dad6029f760fb8e22d1863ef -972bc1b58ee7f483c768fbb64af19c87cc69c5f14f9268dd4cc6ff99c8f1a49e872030d840f46b8c18d39395693d1ef2 -a1243cd5fa37c1ac9c8a5ce77357f99a190204ba8a87acda038efd7a5e298afe7c645f88d38d2d52f56c85afebbac06e -8f7e3506cb4608555759e84094654a7b725057b737efd9553c4a00531d54bfde9fa0dbed7bed84b20d34b88b3eb59112 -994b2a83f893d793c942781188ad76518beacce4a77cae5d9ed7f7dd47d12721f8c799ba8180e16acb3da06aa3788dbf -b63d24f3dd00314b4d58ea119d1ea3e10303827e23f90dec00aa3723e8380bf8d16450cffb16631c887741834e3e9f3f -8ab4e03e2d86abbe5dd0401744ca4bbc915b787a8a11b2ba0ad580b53f04d47809948c47345439c3cdc5ea47bcf705cb -a505e73b25aee781f49df4b0d8f8e2456d6da95cf30eb58ec1e8bfcfebc80221ea2f988b7a7087bb6ceef6c96fbb294e -9185b078e755a7ec66f503484bd8e75680670f99be8bfc0dd5f05ef50bd1f3da15c23671bd7146ba2919e6fa62b3f423 -a4b4eabf6621d9db591ab635bb50f60c54cac033eea827f2d3b0e5e6b60479127edcd07ee797e6eaf6135353b28ce5b1 -979230aa42f260e1993189932d93bc47d3d775283689492cee54c115ff7109f5362466040508de3dba2c9bfa1d08b216 -84793398dd6643bb8cfd62c14eb52aa6e1fd7735fedeb4ea49fb42fbdcf804f0b9d26e89a6ce4b0e4e70e8578b779be1 -b5af00da65a02da4791954598b465cd68d14a3e31b788b0e4d6cf63231c52d57f06781ab24390685c8f3e2690394ff97 -82a8cf6a5b252ba991b216b83138c7a2a473234fdbcfc8b9d630969e3beae91c3021e61184019ace7f0ca7171e33b589 -b58678c9a81684d9c88a8c639a98aba71e994543737e4fe6fc882641194f1190105358aa2294d61a7a610e03d4c9e72b -97ebca7442c1328d8cd839aed48de80e10e41eaa482ea00351302cce0a29f8a8e70b75495ed43e041eb5c6829afec3a8 -91f3ef06c5be53d9fb26792c60390216493129a332a845fe58227627f67971fcb8b4bb6b8de3cd31fbe5fd63fe144721 -b2b42d9c7069f4cbb6b084c9088aa0025c4d7badeda1ca753e4a132641740bcb4728c7a4b61a1ea6fb6af67062b74bf3 -965fb54d9133351fcacf688195092c8c3507de2087f17e122c4ff778a1e6097ef754316f1591188ca1185b83a02877db -8e9285aa4b559558f147c74e8aa491faffa7d09ef9d63ca928a0e1a1a0d1613c5e9fd4961a775333e89acf6a1d9d60e2 -969a42314a9c871f409a04d9260c160644df40ec3eae18c839dafb6b58afce77c869d6f88cbc0ff10513219ef16475e2 -a42b1d86ba0d0e09301fd6939540e01d5cd45a9c10a9220e4779dd93cf9a0b3618fccb81f6a27f56e437fcf3df493ea0 -96da42f72efc3cf2539cdfacb1feeedc0ddf2e739d00a07df341b0112a11ca76235f9bb9e317225fbe3c062da7eed1bd -ae40e5146b9a3b1cd0b459043b3b438794b74acff9862fd00ae34324b1c7b6958763dc22f20dcdb0b5f6886aa5244a2e -a3a9c0cc707cfd6586e8aa10fb4d3165686d8e63ce4ac8ca1e64879913870e7514fee5665d10b84e9b9aae01a96726cb -8111811dc2ec713a14cfebff119b14dde24af1b2c2b0fddcb49542fa4a8e6b7cb0bcc31c81ed91d6c1da7738566881e0 -953ca02b2c059bb62138ba7f7134503a26e429f539a2854209c68d5507bc6574d71ba82cb34008175c88793feb981ea1 -a4c45e01365a5d601adf202d27c0a1ef61bfe6d6623847976f128c8f2a5d27a0931a5ba24980c186a6df24096733aff7 -85115bdeb44d8fc4b85607565169be934d4e7a5ed13e67f47ab4fab11dc99f1e5710601b76271a25af6c045b3cfcbe02 -871a84023c11a5f2f3bd6e7a40b41601e8aabbd8fd07b9a08a7dcd84d31875bc35e8e7c26505b5f829c1bef47fae2396 -977b3104c766bea6ef33075a7ce162c717fca7125eab518b83f9ab0d400d1fb9bd59a588a458ea9f7743c07409499a7f -b80c65a8bf253c75e1d13e57252e941a3ba241d1ed8b560c0a8ebd89cf00192befdd0c3c23cae5eb1f26cfa6d17ff358 -aeed5438dffbc3af5dc6be921bc7a32af72a796e34719f4b376d797a127e5ccc500ca0e7e8eefc6568d6187f09bbfd08 -b67c9a8d0c1d38e40d7f5f84a80ca3d87532751de8527a2e99ce88c4b46b504f8b01b25f16e2816099497fcb13d3aeca -8a285c6492874e340018a8d526eaac3be7e7e901be26206012ee88ce6b5d14ad3e6dd1949ffb10ce80da0b9ee18b71c2 -a29db630a03d4d2aa3d9d6f7484b027ad6c8426636c5b90bd15f333c33d7efcd306f794085154d5419aafc194c21ca74 -a8dd50311e524b87ca522b8cf2b008245736fc6f1f12ccb68bcf42e7e00b87658d858cdf005153574c424b945372213c -b1da29d2978a5edb2c7db84e6848a63c311601f4a3c0597cffdb51aa59f8d0dad04965159bf5cc05e5d19ee0f1f51b4d -b7f7ea74eb18c6434bd2d4a23ac5ae276299e6c6ecae09cc65c0baffadd79be32f34c1745b9fc89fb41e9a0b2f7f6c43 -81194eb94fe80325534f48058ecc85beb3d8ca45e4a17c03d513fcb3ef73e2ba9edeca47037bbe4b8a16bbe0be0b1ab2 -a8d7dd39a1122c6b7219af94fa818aec1a320b46c7d46595a97c786181302b362cf9a69ec019851b908ca637e4a9eb7d -a0aa50fe56a96db810d7f757df69e77e9a60e805840f484635c96438711cf0092f344cc5c7615b32da036b639182a546 -ac0b94c25058d3eb5c1d1dfee8cda07d6f124840464f6571ecf6fba2604d95c16b6abc54f67d41265d534d67b39b3648 -a9c64c88c1413d1e7275fe769c77f0b5ef4ee80341a945839e029c3f96e8aab8b027008e0cb51d9cc5be28c2d1c6ff29 -a05dcbb9ead38d761a7f5e30e561e71d94d386333656b696e4b46c828db0c50c5c048621666fba4df562d3f915dcad1d -894c40bb12acb7d45f3d38bc3f200b7dcaba14e804f0d3671e84b64dd650ba6a7928066f168c87334eb3c220d98b823a -877179a5eb49cdffcf99afa0d39bae5b0d1b248580817f03c0440cd9ffb0a4c6388af364d2ec4d552996f85eadf8c80e -a8760e2ac3a45072aea6000507cdd59fa51a9c60c29666d400db9219d72a2ea3123b7585f2e743fc2ed6777d63576d60 -8752882dab9f576f497504721e5f28e7153cf913d5acd4a22b831b43717bff078ea1b0dc3b2c0b53a169f6406dd2a77c -b2e8c488b91d70df1423ad48b17af13d2ec4158ecb88f54ab7307d9b31dbb0f3152bce30c0b0879bf503e8fcafe41f2f -81ac4644e831620ebea149a4e4fbc1e89c4868fa5e616467415c5557872f872336045e1fc230269469e19b36e4855c17 -a6a234e1f9299913a05146e2d4e09b00bf2ef91246c4a8232f65bac5b202991eefe1aa227af6b5f5bbd0a666363b88d4 -b0869efd9ce419e4c9cdcdbd81f62764a4e84f83628b06a74ff554b7f812695f52d9b2253f1e476919f515ceaa046be0 -91f374e120a16e21bc3b18d390d798a13194f7e7fc63a13853a7986fdeb1c67d6300f925d4251dfb81fce7ed3a5fdf36 -aec7525b13f52580e10d5dbbf08903f14f369a713e2f59e77ed21ce659965351c50dafdd0f3928b8ba4d21a0dd8e5b49 -b47e08d8c07f6cb4f1f0ee4c6e118d3d4d873b7140e0416654f0861a4dc011346af708db29280d15d2ee994a95557bd7 -8360037c6cf909812189421e61bf320a254485756434ce48e7c6bf681c9e0d52dcdb6027d3565892a4ffca5d8dd6c4bb -b4a3b391f471228de19e589f478bbc6f6f6889a457679980d58575f8899120c94cce7db00253060979741924dbfd042f -8852803515447255d950af8e74768c0786eea5b6404517ce600ba35a759728c3d257eca22507b1c2b4e42d220dee5617 -977292fe648a6166a85e57f1bc91b7ccc7d28cd3642715572db31c4efd1850b937fb7854d0d66aa925b930a072d2fe7f -b56905a1da8011043bd759a61d0052b738bba0b6985c0b6e73e4055b72a6d704bcf2a496d410f999483c6c46d1aaac4b -adc7ca377682ae3eb10338bac5fef01f5f99b31d2af06c7e03f0c10d3de464ba2f7a470803d73650a2a070d733344645 -a99c017f93ddc02e829b59ea6835b80604784f5c8caf32d28532abc67c7f8a13abf7eff8fca5a41fb176037c3b1e169a -836eb0850e6b06f2ce31d0d6a5f48f7ec7ad926c3b69af797b1931001d5478b39d806fafc3e2c0a36e560fae0fcf6612 -8323c7d361d89635f2e61474fd9bdb43c79e140e0d196a80088740372382a6b7812930baf481a47e2336ada828ad3ae6 -8b2e185d19a44f666015898544fa48744d1352decebbf987605378cda0a31a21f45ac86897510e348572b62d44363858 -9865078f2d46334b99fdfe228f9c54236af4feb2ddc27597814e3e6ee217f668ada24ee3cf4de87866e67f23def4ee4d -969e3ff317524ac96ba5de1b50d6c5933ab6cffbf7e9ceeb62ab58fc6a032a07dfd34b3f174b0aa8ad9a96513a9315a3 -a58c7cdc0912f6a78ca9660b3e44c8b19f36931fc4228ff04e5402ba468a64323126917cdb9eb65d9564e3eb101d0b87 -b97200d4fdda197a209a85243f530d92a0a8bd1da7f338a3c9f8f58f2b0a20330aa7e5671f48356b41076cf3207b508b -ad3c167108b7254b25c5c28349ada82a134d333eeab895b226ecf1b66da637ea6143d5e97be4023efe02b7eeadf2db42 -ad96a77f490429faf562082e46372eeb9fb4688e4b1e2ae7086d338b51e03ca5ad3985800e9e123c99ad9912b76cd3d7 -90ba6dd740c76f7a98846e9ed4bddc3f85a34539d962a78f10e84bd322145a84e6cd3fb92afdd3dd4adb16b25b342786 -a7085652d463810b040163d775a90a911c2945b0b142b457c22e6be8b89b4840980572b271c8547eca317ff52282c491 -a92cf28cfa29dd9c803527daf06c23ed9e91bf8b5c3926879c4c9a80967ac418d1382ce21a06ceb684466bf856bab304 -8c0626c19b6d8bd9d56f2b038c6200083976da0cd4ae5d3c3a71d73cd789fbd99b3ef414657079e6d7365ba968c43ef8 -ae212cfe8f5927dc7441d4ce5e2b72182aeea2857c35c42f8a370d0aecc2a1c718d47d1130e3ef10ae1c917d1cd752e0 -a5280d4b30cc1989ceecab7bf81acaa39bffaada1bf5f41ed0def755840e929c2fa3e2b83640dc5d0d86e8670aab37ba -93d4685a00d9f9d2023af38efae02ffe55291dff5506334bbc98399223891880b58d037c205f7768ea3d53b7de23ea26 -a0fd5e9691551ac479f91d496373940d0ddcf3563468c1be35722f746de52d1c9b9397fdde2eec33ccdbe39dc93c1027 -90d2a08f2a23a3455f73a2c3f9c8d686143e01d1b0c7cf833768efd936cd6a49d292aa1207aaefc42b75f00b70ac67a1 -b1a55052b853c1169006f8f81a3210f8d2096d483475c1ba4d641d960c0a63265d6db88037dd025bf683fd4555ac81bc -ae1724431b6d0439e0b44168b1f62278ce7e21e3b2e7da664d0cef67a246b090afcc35244fdf50ff1cee87e406cb0c35 -a029df7b00a2b57d7bf6791000333c5bb2e416a06e019394617e92055e7c78d8bf29777143765ad6b389dbb0cd53a6a1 -a7fb942f2b95eefd7986e08f7a59c6f45f0a1c51be0e3f6e33ad67cf8dbf1e243632d001c52f7b441447b1fd03b51a63 -a76f84feba16773b55f23d2d66037e5c1a9c85647c8986a98200585ec2f9cb28158ef842fa61beb4c86a85c229692c20 -b5e605081999c80ce61b53408d71a892ac1d6f1b177ab2dc7a18b03ab612d14c51bd990e5f4826f2ba4c0310e332a9d3 -98e3d5a7bad4eb817838cadb18a7c2efc5d586a402f0b54b894366855018f316518eb2d0744e439ea0f40a83176eaf46 -93dd180318c952ea846f2e9f8eb780ce5549f03b7b17de14c6d59be19419969bec74b472e34eed67f57c32be0b8c12db -963396aee89d4d7c5d54d0277a6763f8e1edd9dd608112afe9644d17b3c8c033f6c81b162dfc474c3c0a5adabb449f73 -8bf25f8b181f5f7fdaf6eaeb7016bd4e4680a011b244bdb717ceb8a99ea5f18479cf98ee247bcc76402760280b116248 -85084d95ae492f26c7b1fedb9077e9e65964e5ead9bb13bc7f1aa8cd7b8c0ee2b9c0663840c1702fdd27742ac462d5a0 -b78657254e839f00d4a9353470b2a83a782f7d8df5575e7fb9fcce85e4c8d7cde72419bacf874c57ec124dce174bcbe2 -87f2adf781f2f57c37be008947baf78d22d9daa228ea61369cf52c5f03b4e7f4d994b1269f77d315a0de3cc54f8dde14 -8b6ee9d824109ca2196e3061c821d2026c8b839d58993745076de76ed960132715678f226b289d20018fc4200d5330ad -8d76f7a41c492e403de6bfd36e44fdd564606b6ffc9a6b90ec45c0dc5594860dbfeb20b07562ad14902363e121351417 -93d86f0a70396da3daf76da707d0373378082242bff6cafd9a0e36475745896c30ca40a03e5833cca69ed76d203429f6 -b443d71684a8d105d6504637a4bf93089154e713cd54553723665a9d5c15c460976c108f79b0200c90d55edaebd4294f -a577dcb11f615cf70444675d4745dc5fa800334730c86112c05c525948e4106481b743b4b36ab12fa3144a245e9ac7ea -b16116160db122d39f939485aac8070bd63be9750ce989fbed075163af12b5570f918009037dbf71800708a8d16ef3e3 -9245e9f5da5118c404b8bdaa9f9f158bd29d38f8b7ce5d67e9ad970aaf147cacc2487a2ff07cb2f3bbcc29f8492a7fc7 -b170d0caeb6a6a29d4157e058d077518b74cde13d0c918d5d2ee76914a483e77deba9ff4d298b14af64f53b6c8883cbc -810f6c955d025d9d4b19b122e3616feb42565b8ccd914f9e91807a7d172ba3bbe4771f5ffea065d84c9200e62b9151a8 -902d496e263e8894c59493706b3d83b241040cdd4da44884872585658db410256b2f082b870cfa90c1a82bd70495707e -80c1b7cc6d570b620edbdc7c0a4583b1f4dee1669bf56bf460bddbf8e653e25c835a935c464e5cdf29a81c58c943518f -a9aa69f94b15bc7e128f9dde1632f02cf95258b99daa93b73d8c2afc060a55e9636e767b6b99efe262ae915ffd57b455 -b9b61931f1543db289aa5adab4234e48524de52e0227bc926d4365624d50a5001af70d9bd35b5a04ee57e764852684fe -901be2ac33470af7876834faad7c7474399296a9c81787b49998d6216edb4686f4acf57d15d1626edc1e5e675911e577 -8a780304feff9563014aeeb51221fb88c75b22b8facb45718bb6d249610d19101b73e48ec8f77a243429aa9cbb4a4300 -9274a29e25b0a504ed37f894838859a0687883919a9c8c966989ff651207e6f4b98c27bf397e0cf4ee63846569904f38 -acd56e40a1e25a363144a5bdd04a2d68c411ef0d992023cc8270cef5ffb3a80219af80fd2926472846f5a7f68245d9e0 -9505c0985abf67e40c7dd2bd707ff9bc3fc9d26302bc25b61c21c0cf0e52299253176ebd73b754b496410805767ffb04 -8f827fe86bfdb18e698c96f2127841ac3a20b65fafa0c7c62a9195570e6e36dbd0fe29b70313b8a9818dcb9faf95b9ce -b4289e96bd8426bba9ad67266d12e804d1452f013765db9134645d8cc2ed6979e57bb73069886e3cf688b0c294a2cf4e -926163b50d645b27e75ffcea90a733207005457de284461d9bb8e6e4a5f7042fb02553175e33b5fcfe5da906b60a9edf -ad634ee62af65d073e32662de6ca0f3d296904048ee07205100808faa1abd0bf29f53a69dcec076ddbd322bfb14c9816 -ad77be98757851ebba0c35a9be67333394819e9a65493f039e75c4c9705a88064fa3842f35441362f0d3d8002eb4b3df -b281fbbb165a7ad0d4707d219ca4806f781a2b185a09a0f649cd68cf5533e4a5d205bb36a669ee51e831a4706af3f1ed -b7834ffbe76ec1177f4dd72c5032998260c85b110f5b57a699301fa47eadc94a564075472770bb06ae2b98b973b20a07 -a5f402ea96f21ea35deb2907501f1157a649cd80a76e5a42e6c2e22b2f273098aa694cdd9fa24280c2dea82dc43efb51 -81cf72ade9fe586f7fb4f8389cc416fe691452fc2bf1cde708052f005572c098a8494c86edaca29abe456cc75d97362e -aa3a68cb71acd5c501795201daaa21a35e3b8ad5c5cc4cc9c6d19279c439985caf25c29012915a9828b47844aa5c32f2 -ad7a6d1e27d888b4de3cf74893066fffa0b7028b9cad86caa0ab9dbebfc0b28a169ca3f6ea5e247266b1377746402bab -b8cd1f7b160e8f018566c7b2bd42658dabc213004bece6ce2ebd6241882115a1a9d92db2e7ea5be85505c7054e493b80 -b040e163e22bd8f09e1aee245bc752266788b0a1d4bd731663a747286a5bea9813e9ca5d18acf50246738f130d488e21 -92780fd0e0866d4d88c809b344017e76110a2a94e6b83f885205db0634668a880cf589010e51394f16aa571e474def9a -81ff76c79855652e4a4fe8edd473e65e3b0a3ab54917db2c520ae2f43d36fb02fdb32c7e06303490f167171e58a3a9de -ad76067d73f590d68b6ed37388378b05ab5c052fee76c5832cf0cd7d12c150ecd225bdc0075c1fd98c1689c9bcb0e286 -836d5606167c62ef0bd7867d4d52c289e6bcba3d663d50d6749768edb0115be8a62168ac4e961904d7cbac8341b3c736 -b765e7d00c489029d8cc4206c4636a26fb011d28fc045875aaf81672678f8c9ec7ee27a98e5e181407a135f9d494d336 -ab782b686a3c7c8e66331ddaebf426ce649b11fb52569255ec8dbf5b6e1155208a34bd6376fa5413302b367eb9ea36c1 -a579e2d93b17576fad3a9607d40b92150d2ca88209724184aff9ebb524938f1d7889ea3b7a7e927519e3430b4bd04aed -89e1db4b574e3b4493319f4ab3cc1d2a81d130f0c7aad00b70adfe2eaa8eec90eb5133561ce3202ff6bd3f718e68c67e -b317b29982a28e865dbcd5076f0b70fbb6a389990dee3b2bbdbf2aaaaef07c363a56f263a77f6dbf180bc9610fc6afbe -a8e36630d5836a7677bb537e2765c0a97087de716b26882e83c7329412bd9b4211f3a3d317f6af06d7aa9b9305c3c936 -935e77c8a17a99766bca67aca48e4f856e402f747f42678f092ed4a954858a21b8f478c9a9e0bbc9516fe5ab63a527b2 -a4aa13a9225a61df7096c3de4c38a525e5f8daa2e9f76adffb9634e69d995fe2869cb3a322073be9d1ba15eb70684437 -b9927830424ddc42769ef94377c7643e3168eedd7944bd27d4b95cd741e159cde1799200fa33d86484d54a6e1ea2a03b -b315e14dd739b242855d7cd16b2bc98c669f51b91e387747ea1a612ebf481fb1b6aed8a0837ce27b9c9408a815f9322b -a9be82a9e77e1c101330aaee739266e6ea30249d1d294bdba30d3921681acfe48ff0405d2596f1d323951420333a5aae -97b46484207597cb28dbaa73605ea9c3c7397bff15c06176674cc2ad92746a32199e345cd21ec2d7a54f7a134d29505e -859ec9284ddcd80f711fcd43d7d91614b435c85cfc500753c5ad0cc4ed4229258c1c2c45ded6771949f02ac0558faca1 -916e6a36204e3645e524b830839e2f0cb3ff277cc49102f446b6f46c3ae29a4b003824012d2c5513d07cc402a4a737e7 -8d2bd263d30b15a9c2c3eafea17d85502c6618c5f37496dc91728f09ed2dcbc616c6936281536077522858123ed8ed0f -873272487ceab7dd687676352ca2f9da14d5ed453cf4c8c92f8bbd85341b77ea19230f78ae80b04712d53985b6f234c4 -88cc85af6d12f937078497df03c70abdca11d73a5421b9416f2a67ced7591d70b5a0e7ad562e55e0e337354bcd9818dd -b01cdc53d317c93a4b504a33fa467f5def6a681ec1d5b98f94f0ba7fa9984d568cc859d0595b65049be3b127e7197ebe -b352ad93c95e956388f33ec43e45b626f959f67d915e00c96bbb887a65a7abaefe462f9e90e4691bb71d22213a5da4b8 -b81fb507deb084d4392cbd8e527ef580d4281d462a2e46ab73d4bd9b8ca9579d2df7faf93aaf9008280a4c6a7cd0a56d -ab4a6c890d9df128c68078a55eb5aff7047455923842d9e97dd62fcf24934749ca426929a0bce4e19830bccbc569936e -8a7bd53db8401f92bf6a7633efffd0be80f92efa4845d7d1c3903fd63e54d71219cc8641f5f046267b045c584a53d934 -a8ea87452ead85ab9434a2d8ea7e47c56bdc6fe6246786cb048a5720da4274fcf007b9a35821bd2471ffe2cfd255a01e -9355bce0ea787beb264148b9a0fc51e6bec0d392ffcf21ea580ad20ef0c60fa7fbb7e045f056ac16d2f0bfcd04e140cd -ae8d7acb166734ca9ef8613222f4f0720a235a1559d77568fd4a449ad6b3b924b38b0c5852f144adea348bfdc9662450 -8e001807f943401cf12ec6d57a30c73cc7883a6a3f4bd16ee7298bb53f1187c6f45d2381ff321d57e993f339b4ba96cf -912807db0e7fcf1a1adc594c3c6b283f219e835baaef2165928e3a3dfa73d3ea520ccd978efaf73dd685659493435914 -8530a95089ec2f2b86ba752f11bef5bbf62b29ee5735f6ae6a2ee4d64d75072089d17a27966a3648baddcb70b7aa7a95 -b15b3bd6d3a5c5ac39dede41ba2c86c99237c5711126ad184b90588d95cec3d39d8ef7b1049480817d7b4bd4e3c4c8f9 -a1ee1d1c8e7a9db20ce9394a297af7f70012aea33e85e0f33dc99d83a86c72f682c93b19e8bb645d741d18b3e9ac7d27 -b3e02bc2f4f1eb39dc18978b6d6c842a5e2d4aace2b39565b4178ff250053085a1d71af33c38704a9d16b68eadbdae4c -989e460723c841a43563e12a62f16c7c8b1e59f961aebd1948df513654171dc321d72db988db819d4c5446cbb2b87279 -b3966e52b48072cdb4e9cb3392f2bb8e5b688f96f1d6782b937b3eb59c86023726090b2c33a6495071ed2f410e4a4b84 -86cf60512976a04efe244bad0c1882f94436afe1c0dc05fc2752947b413f33766556452fb7389cf80177183a4025a17d -98e79f4c3ec507e0ac6d2366abb1b26e58cbd6c10bfd7bcc92c88a46684944a6d49f530f255682383ee9c294016a80f3 -95360d1a2d224271bea707dc27322e01ab38f1b2c396dd65d30a2397d89a80b74ab19fd99171732be64d1b0838314b16 -adf86841174a64726e7fb2bf576e3be5c57c1429c26ee8b7686543f9a09dc377b8db4a95e3d0ff5acb8335d039c003b5 -a6f36d08de9c01cd8ff59c9f78bbd2a09712116d6733e2a8397dea86b3dc5612b83386ed375a2291ce5a29e579ce5d68 -a81de0c93cc8459f75391bd05b217b26673f9f3126706f2f4d863f0550284092470224f61d78cdb2c744f527f874938c -8a717a43e341495e244a4f33320cdbba4042f1e379db93394f1e6bbcd5bac41b873444ac466b75330e2f8f3b17db0a08 -b190346b2f98da03629ad3972971f9c7210474bcc48bbe76c75062c19e1fe12727596dcc2d5f921692644e99d1e2d3bd -8c64dd862c70f72c80deb4ef0a000d7b2af2840a655ad466b62cadb9254b36b985dfec22888ea8ec4a19f4075ff2c584 -b428b84394436c48e511bfde561b8d9414429b0905e1450daf0ed4c75459be3acd321fc616f3c7d4b21207274ce9af38 -96037562c455863af9447f366cd0bc2fbc10aa95eef21cbf93c8b5bb3c7c62e88c8316a857322f7de2aa17328f98bb68 -81bec7f699758d6b762f2ad1bfb5520af698f052e8c0e43c48744dd8a7d125a563ffa1f1daafd50df6da03fc0d369222 -90ec28210b98edc7c2b108646a2b207bb710779564b528dce4caab378fd67a03173696439e512daa0f4fb0e2f5036af1 -b9a1b0f959f0126dcca0c526f1f778ffad81e9725747d24f05afc5673ff02ebdb1d58c85be3141a2e02699a582ed5875 -97cb98c9b00c4143807053bb1de5cfd21e5980fbc0f6f6901fd7191f97e3a5c1cb0687ff624f97b2e4a3a90808683406 -9097c23078c3cb4dd0ea432d0790ce9adf1e7dfe23b6121ed5126f0be62c4eff59e6d58dc955c95809d97fd9938f2553 -a1e43c5a9b046b5ebde6a0c45b947319079f5d23b2b7272dd8bbf2f40c16c8b238a7c7296b63d929f069a571c1d7ca6b -8ae773c22c585927b7f29e2779463302859ad28a485dacca2cd40ab866313e73d6b6de08ef7476fc3c56941a34200d19 -8ffa098e8ef62e056508d144792b1faec04e869836375a78e1f62c5a39842507a62667984ca748c7a503d3f471372966 -83eccf75345f5d162aae2af1abc0f12a048484743f79675ec16d1146b85495ce3664ca9d88d8c8d9e8b90add6521aea3 -94ccd346b8f9e431cc0dc9b7996e24c3bec7270716cd46cde7b0ea86469809695089a39cc72ca25c33f77803b9d87529 -83b55069f117ce178400db1af5974696350a1be374934487ee28b311ce9052ad4ad8f9979931a7b36c71af00dec6b7c9 -960b626529f3c455acd5b9cf092bee0a39aba03cd09d8687d22c1c304fd27e6e28c25f030639ef75ae7e3f152b28fce0 -8d3c5247b21bb6d5af2631bf2d595343521192e8545f057e02a7a2c3e49a8e3fc752047f69eec04db386ed60002e1f44 -8d4fe310440cc3a9e7bfe60e060eaa5782b08d71619e7f2680142c95dd5353388b58ede30545f386ab16b3756bc412be -927a2afbc50ac10466e917665a63d4d6d24e642b1869502c06d4dce3f5e6acdd7c0c0f1ee8d4e6789140ad4189356543 -a0ed782c624d7420509abd6103ff44417b7e29f991a38141068dc2c1bfe6568640854f2ec847e5bb8e5393fe83ede2ee -a3ff9f2e62d86b3b82955efb19f8f1d617c2077b22e9d055bf2383499ed666a33e57148a4817448eb2e50b18cc8cb1bb -ae219dc824129eb4ed674e59511d84f66b461ef77abd45ee752a8eadbef865c1243505a24a1bf6f73863340d2c69a121 -8327b02b7729afaa54b39cc12581a5324a0a14ee47a696cea2e8b8164f22cd8fb4385bfd00256dde2c32f89f0ef47c41 -abaac567c0235bc0feaba0665255ef120d6138bec713f1eab9812c8daf37b5ff97d4c4e4138c4052cb37a26b0becded8 -9110b96093c679df191daaf092187a937864e59c885c4814d08ea9fe0d5c5d2ef5bf29a5e821a4f95e7f27f9d1867662 -8e4e5e3448be3be0b22ee1b0b561d9031c836b6292ebdfa6785fe78a8f97a8e5f38e0388e932fe05cbacddbed3fe1a46 -a55d6708f2f2854a5f95fb9fad7c14a43ffb8b48b5e1051a954a5ca7ef229637532762f0db30f2e1da88f994f412e0a5 -a6f23f2f52228c46ab79acca79ac440ed895c8a1d0924b14c2ecc65cc61684847dad75e26534d57539452e128f22fa7b -b0e1e5def6fc240556325ca345aa31f05515670b3bad6745cc9f19b109e16bdbcfa4b008e4aec200c56e093db1097c10 -8c0392a11e7109dad2358a5e034b1bac37066b50a34eaff7d2e692419feb9ef40a01909cce984d862c96c1460b474340 -a224ed90684d79d3496197aaf6430b8ae215ce56bf98f199f365daac20cfba59196ee9959665b18c5236d40b993940ad -b955fbd63a3ccd1efa7bdefbe01ebf1e3e3cb44fbd04c5c6f25459ec8f4ff679bee4de9dd6806d29964a4ba053df6e86 -acffc3f12f69bea09afc14cfb5f63d44c2ae4143977d2aaa06ff74d0ed5c137443caf98bbb1691b49bad1e4522a118be -959546657e459049397eabe338b7fcda8603f2f9e717c60cfcfa6af0cf5774d192b3687da34838bc7ef8cd0c5c59ed88 -a46d7ac7808410e35b3603662a9a8d2bd0de24150bed7c28df86bc137ae9f3711727f1178a0d20558f1e39e3c3698fef -b156f79f65296e5efea35234c68b776f8eb0d1ccb79b7c951b57bc22712f72e8aea0ffe30d2a97ea8aae0f62e2e4a3d8 -8f816ce4e779207dba556f9b5fee19407ce873ed6d0a856b9ad472c183cbaf43243caed57e0065ac10869fde15ac84ef -b5cc4b1870d4125307c7e1354243bd4c6aef88a268037208e1d1cf207fd16864486b1ca9b58bb5ec1152b62672afcf47 -88fe2321bb635558ac9f712566ac3297579aea00b67e2c2b6857e82f8c092886b3b11d1787acc19de14f393dafebc273 -8fe0ddd4f9c5a5cbb8d1120cbb698a8da1ea36179f87c8933146ddee1b2a635e0e54e45cda841645dafa55a242e6f33a -b15837b03d304d324507776a5030a5f3d3b6b69c771a7e144763c2432df9acd1f2d3dc9936f59961d49be5117484820a -9136b21549b7919c8575c90e8339f0ba2b6997a858a450194aa296e3cec838049b52270aa97506f872958427dace6a74 -acfcb0b69264e8800f7b8f00e0b8498fcb36f95122c7087f0e5f5ea8d6371248c68ce610d0b66c464759291fc603516c -904f6dc6a143a40102d89557c6211e60a28d7a423c25e54033552b83ff68bfc93a384e66f771c4ac640a5de3070fcd72 -8e1c87da2af5c01302723dc7091f4d11c715ebcba43d038659a99a12d54e03a08b2868c1e837c1d60c3431603a879ef0 -9336bcee2029ab84b889eebf3cbf3e52ddf22482f4cc069d40796ac849167b18479d79642afb6df09fbb12be85a2e4b1 -b2679f9e7d2f5cd62aca4f123106e39d8aa0ee5ef5136d1c194491ad0a4e8257ca55b53fafeda9c1508a85863d2ad395 -b092d8e72d338e9d0b9c3776479223b0788325f60ec7f561faf637e604f6ce29342e7520765797b52793333dac9d04eb -8a7aaf02d9e702b894a65c22e7440590d1739aee7f2ac967cfbf3ca950fe0c4ec04a0eb8e445547239605c0998f5564b -b90b3f7eb407464cec7dcee507e1b3f361de225d0f5326c61a11e94a173f345debaa12e01784252aa1996d4700d1cfbe -88664ecf12b67cf1d584e7b8b878cdc4ead8eb81b213dfe6914055a422563ea149626080f0ea1898308f466eeb4373c2 -9455063fc9535ec9feb3f05c282d5ef3da39ecd4b7a38a0983d1546e007a47ee3c23b6c8635192bb866cf92af60fb592 -99898733e4218076a729232fed49646275e08647b7b441aa84e019703f4fc18fb656b356fbbf97548d6f293a763317be -99b5cee4527b689d6513e4a05ffa4ed78817645df53f4a0849e8162ed867c412e47208eba5489a1065cd5c73f14ebe78 -a90800759a3270d577d4159be6dcf08021586434bf931d88fbcc26ddbb0bde0ce402241cad87cf0eee35d4fc846d3dfb -8e9466a5e11b611ca0edc0e6af0eeb77b2eed9e570fb0ec2692654de90d1d73c2dcf42f281128c9ade0473fe87543b69 -817607875e14440d1f7ee44a9987ceab26e47eecb8960f0ab2e3a98505bdeb3afbf2c92346a5f2564f32611af35eea20 -a497c02335c02b2527a0314da2ffb15d24df06ee396de5d9921ac6557d9f0acbb19c4bac457bd0ab3941b2881ce3e536 -86da85c393f8f291d7d7f5d0b8d98bc7179a951f79d7cd6fd0067383a002dcedeaa71264849284132f9fd69592f59f95 -b602c85dd940c1bff27b3ab7b93cc1981a1ee74966910baf698fe6f1c6be86f3d824cb5e4a8959df223e674738e71e03 -b4786f67b8f7799422fdeb4b4a6d649cc0bdc877487670056fedd8836c298984863986ba1365bcf9acaf29ef1eff990c -afd123e4d2cebaa8319fe0f4e2f7b80432d58c164e1247228285d30d8bb47ddd610bd57e4ed2d54a287764cb3ee90cb8 -b988cee812c7c6387a814298bb3b39be19f793bfd0deadde4bf47e7ab7dc1db1d55c56fb19ce034f466e1fee6cebf084 -9993e7e2629b7d9ed90b169a8cc41cd7f153356b92a1527eb7b9518138898980c090bfb4d0938bf57f2af519b7fd51bf -9096ef9a2ce7d5e94d62fd736a3743ecd8ddb9c5152975141714a263bb71ff57b9f8f39c6b15b968c920a53e2039683e -85462eb8184f23b1d89c24b7d222905bccaba3c2665545d57548173abb60ae2c317b26de99fbf7a576e771566fb3531c -87cc549572b2287b78c5a28c77ce42cd1eb46ba7413f827403efb8bf554d735f5366a49c1d146cd8398a123144b52ee6 -a6f0a427b8ec9cbc3cfa7cbf5b3f98ad5eec34824620c9215ff6ab7b933231ba1534a53141aaa59031470a3a994e75f3 -91c8bd19b39190f4b8916eec2d33b13f6b3605da7b511d41ed3dd5cf790caa755565224308b266c237999ed396699ffb -b2614c5953e37f613a1489bc7745bed65264377758de39239b27372018b52d45ddaa174be167781908b59c0f389f9bfd -8453d03b0a7f7d092354c51901c35fb09bc9c3a1d13a64d944ffaf309d1a8c453e586b481c25037e711976207073e89d -86126ac6b68429356547d340cc9bf5225e851540eb4e59d2823a753129c1c98a14a89cf497af8cafbe6f233b59494193 -b526157f26068a35af48f3b182d5b04cc3ad352b33e19797dc9f9baed69a71140e1638b639a376ccac978e8be297a04a -b7f97c6355782783a0df6c9a751d2a06fefd0dc0380deaed494393d559178355558ab10630dd4c23fdcf31455504eacf -86cb6421bf1e4ab8bce161a6eaac0981506b1089ac537ceeb5d3f6926f5ff45e75cc9b7dbf3c2d01de97635096c3b909 -aa70c056a180509e9b02c5224f63a61abb87f649e28ef4cd33890ff2e49d76acecd0628c4b7edae410ce100d8cd3db7a -839cfe9ea5543611c1218233dec1c0fb85499b5d9bc5dda58889bd6ab67defe96a66466185a33de8afa4d9340c01741f -96f908d55d5d249822f9338018b4bb610e01fdb98f690d6dc886a238fff034b534c04e3da28565fcd785c42f127cc792 -b702a0775554e716dc53dc2c2001ce8d69df29dca24ecba72a31f3b76ba6e03cae7a57a359b21d56d2b1fa3a034d24bd -acb79273bd0b0814c017894dedfca3bf1136754cfcdcbbca4490ad24c034f4f12d48318c33add943b4057036fb7242e9 -8e6ac189af56c52fc3b0bbc1f62b98904769d0bdca1c7d8895653f68ed0e3da7556ee691fe1196bcf9f944a2f2795f97 -ac21009993cb2e327dba835b714356db25199c7892b49f9b764db494e8c079f96d7c5d6b751fb75767eae6f87b7696cd -b14365e06ebf557eb184c7146f7df72f07674419e31839f995c3c655c326ce886ee909a60a922f3e6d468f446a798eb8 -94d33c2a087c7e33a7bd25fc3bfec4990c8872c897ccc77bd324a4cd7efa87c9611e8005452ad101e3350f9de9dd4c35 -962d7a29f61eb82ef4444f6e114fd4d52b3b9bcd7ad8a96bd0fe5f4483530479a037852b8a34c6702a298d6d76d78d35 -84017833344df747ee5791266abf96431b678c8820dc01cbdbda980db0b314ea581af095d7971db6d7d0867002533d2b -a45f6d37885e268172dcf59aea6dc997f261184e6acea2135d2a89d7b4646392238993a124da7432b22c801b6e847fb3 -96317db6195d8ab076203f9457db5f38359c5221ad365b31838139add58038893308742ba74cdca5160e00659da5985e -91c35ac95b6ac02e9b900da3ab881fd98ad0df5f95da23d61a2833c79d9d49af29c511faa02ff6d3bcafc001e9d02282 -83da2069734885b03b6ee13d001f9ff59d7e98cce7e996b5e6abdc7991d99b6578b0ef47b72d676e311424f942d21d3d -b4c04bec1e45e4e8e33fc447bd08ab55dc9b7cc8b5b0e8ae4fddb80adffa44467628f14a8b0afb9de6ee62b5a5324da1 -81854bc7236732ed97b8743dc2791ca0fc8c93478732832d3a3881cd1173350953cd194bd72885eeffd409d43795c962 -a9534d30a2f9d2b445049cd78c54db5443b4249ebdc45454f3d3508765f7d5419af696fc335a1ecefde473c63309c9bc -a495a716801e2c7bcdaaf5358db667502ba41e4e82c236574cd4a093f694ee3749b968bfe150cf77e4189af052f6c0aa -833b994fe58b52a9b3790bd0eecefcd77f146b5d8b5d29c84ec92b578450da8af63b1c02c94fa5b272d6e4c9c17be911 -904bcd0853ae8d33f58c208655d08d3d7788cc732012324d7108436e4201d6e02e86ef1681b013e18089e2cba8b0f955 -a67ed5e0c20d6a599c6acd1507d6921522e461a61fe80af4917ca653a2d71ac4cb63fcd37dd30df9344e79943ed07194 -8639af3e148c36fb0a47f89a5f1cacd8620cad81e0b506f4376af406e0ee86d59698c207ef1fe3eb0ff3f7930d92fff9 -93b85275f836797f4415321affc642614c2545c25589cf2250390fde618174a9fbb7b9f71c2fcfeb2c467c96b4a20fd2 -b653c967b7902b87cecc877a5743e546e599ff287571f92c07c29ed3399573eeec51d34bb9792c37e24d4e9ada810ce1 -b37842a364a50583b2b3dedaf06849c325dc4af676e974b923df3183725549fbf653713945376d67fb87a5f338a05c1f -94f9122fbbe19ece712ac29a992adebce028f98c63f7d6f6e25e0f0971b301246f0282fafb6f586726776e8b00856e4b -b3138d0a2cc2a902e6bf9eec98f2981c9257dfb53d9c8f31a0797706d3181a4ccd9b9e777792af1226e41c1ada736f76 -8774a599a9ff5b5e16d4bd807fadbba136f1c8705753163481dbe2ebd12eb298e200acab03a9a72358b8ff462ae17d92 -aa802d6e9dbbc659af0c3319310cde2d28d2a7244f11e10c4cb6290ffb75975d5ca05e6ee0504ca11b8b11c4e926f24e -90132466d59ce7321c81d21428b573926fd5e1d29abd1808ead82504cc1507ab2d4346adf74280f828a5b8451eab0224 -b9d4104865f1e1b6bf694c3139f623597ccb17a97f75ef029d4ce26aae8704be3351e0363d23f77ad592227bcc64eec6 -885b0dae9c1a051b6b056a4b2ba10b49ea7e141685e63c7bf6423e1b2bf733e88caef28799a29e5d193fd0cb3c5081e6 -819f3a31608f7d5fdcf2987670ad635c3dc0c4807ba28cad9a1c04ee4ea04890bd261a52b0e07b0b7044a4ad008cbc98 -8e710bc738938aedb8defdecac2f92369ee32c0bd54354111b29924b8eeac56422812639a83d6b3187de14b406c88d5b -86e8af697ae305e0d422c6529d343d7ff251b7730127d5461b9bd015f3837ddacaf58dac220d8b1e3c80c1b7e9cee747 -aa2e8338e14d36082225b81a816d225cc68b6e2e8cfdebcd98815b45f9569b2e7f2b43737205956a110b20dc22dce6ae -88a2441e958fe2d2f45da8ada6e04781e06cab662385cc0cee0dbc50e9c0a4c47df6dd89b59036c394e0a5a209b18484 -a6eaf0ec69d2b2f2f907759ab1e5e99c35c69a7a1614646478d82e25956af1cf0a347c150a4f963adfb8215e9b296c2e -a04d223e9733544b08e6ce1a80d7f276d825396b97e87423a808e1b80c1c08b02a4425a766e5e30a156207bad583e225 -b35f6e3d218833156f84746f7e5254a22be8f2cb57df5a518fb24c9c5d232ceea2a2037fa38da923f32ac43c5e6a70a6 -b3034ba8a0a28b967e53acf96ed8b3839c3f4f29e87a42506cb3c797e4e43ab6f67c78220925b063302b25e4b8c0a7cd -90067fa4ac5813d8f9f4e21efaeba0492b4c1709a0aa9e83095437d77bc5f506c8823f6e659acb68a1a3c9dc13046040 -b4e12f0e4f85e27546b5e534bcea5754fa943aaea35a5658d9c810cdb4808e0a824a902fba89dfeb0af86220c3b4f6d4 -a7dbf474a2e82c9289e850fac5a5e6c95e1888067521ada0995d472c79581fc04665e2ea98ff1d47d704974a52578920 -a01a417c5da6f036c89c1e797d5cf1fe985cfeb16171c629dfa65feb0030894f3799dda25fde4f7c2d9ac260c4a62f34 -93d3a10c0db4c82c18321a2e68dddbd93b92884a27feb756b09d382fe30707df2605d12f8a938dfc84be45876a8e702b -83a5e28541109205f9934f43ae640e4d363c677583cec6f5e1e3211fc82233f2fc33c8ed4c661d66bcfccaa822b65159 -80c9285c0b12dc605392e883d49376d87186b221a0b0247d1a4cc259fd15783b2c62d7fa7bf996fdc72779fa8bfcb56e -91e838584d27c75c15a3af2465abb57b3b208f36e2e3b62ab6cc3e7a1d2a1924c3d35cb0a3ef76c86824efc6a0257d46 -85606ae7e00e8425365714b4d443e478256454402662de71b270b94eed43d9ed734b15f615fe6d2747afe0325771d89d -a4c0337b50a3152198b00b0dcbc76ecff544b86932a4ceec981639bebaead6fa2422457950b9d81bf0865f8c735cd7b2 -a976f5d40d82658ba686aad9a4d139ecafc13c45e5256aba224f6fc3971e5bb63d3337f837eb23dde4af92244da3f4d4 -8ec5174814056e77d82b353e51036305bc35e42b5185d6c621e1e19ec6b3d8bad74695622f7fa04d86785cb8e11c5e15 -947f2505f807e6293b991880602960b459b7ff602cc1ee73ec9ed343ad353758d09bde973f2247a8bb4ead425db191cf -b509b1d00ab53d57b6229e97cb5d5c426931560ae7f3dda8686f31974f7236833dba7e9aae014ddb1ca70f8a841fa0ad -81776e3655bea83556ba387494230539ec5514aa460c66a75391e6bcae251e4a4855d466b5100dc611f638487b56e43b -8dd0a988409285fca7913c1a503a304cdae2cf5d1d6577f907501b7fe7f6bc3794cad18620bcf8de071f6c78e6f76536 -b74538e28f5f74eded6a402adac2d4fadabc5a7ca0ef6580ee8663794c204b4496a634460087c53412627525063fc31b -b43a027b5421058910b178f47f00846161d054007d771a224941e170ee07c2fff7415aa15b3ab76f0769dd09a09ab48f -88fadf53da7b8ced103186d76be327d7f18a7e81078cba8ed0b509dc03be4f6c68a94315c4192a88ec4b568de67801aa -8522ffce27b6ccef18c7cc2d2ee34c3cd584592e8a60df8f22a4bde6b8376ed56d42686e279701ba71e9e6f342abfea1 -b38d2f77014acaf060385d151e6c6a9abca0a30d0200bbec8a4da3ad33b7b4cbbb02f245ed8811779ad1472492a82b50 -8beaae22fc5a8d6d097250da9f2a71ae415a441dc7d2a90d2a34c2cf395b15016fba401c8badba7423bdd52328b96047 -824740663edcdd144c828ccea625122c10f2607bc7a1dac8fc1aa22d21feb635adc509cec6ca4f511dba89a48dc7812e -8b108e890f01db768ce75f281fca63c2d0ad51a93a12cd5b224c5669db87c960c409bbe563b419134279f5bf218623d9 -8ee995ec787f81681001808d54bc0f4b59c43acc8582448f44ef8e6532c1679ddeaeb9a59471a32b068de3039f3cf1e4 -84913420e365aa1ea5d6bddaa0529efdafda33da30e53ad453057bec865780f0e8e7f710cec7d82922885e36458f5ce2 -a8c198ed2794f4478595bcb26ea008cd586118dfe618aac0d9066b6554d01a40aa80ceb6f26c87990d5cf1fc4eee577e -85dd4cc4688242e1e2096ae5d1ea3316ad3b2a866e77a079f52b194bd5adcd21cd24dc29cc29996831d4c73cd2978322 -a01f2dab073ee2c94e2a93d6132fcd9a11f4a7ead2a77198415a6fd2f3acf6f72c7c049c8241a5367fdd41dbb4e8b16c -99e5d15bd8d4e01621472cdc813b864014edcdecbf2d50236cfb27d8033c014e38e0ee86d55356879b941a5074b2d2dd -b4fe24fbf81158136be6db8e32c326b4710045c36b2b360c1e1cdf9b7f3e3224591d88c7556ac34f1cf3648b45e0023e -a30c202b71b6d441f684fa7ef3f9cb582ec916f9e2c3f06f214c989153978f4fb3c131bea4fec793c3cb6b8a0316ff5e -8c0966533478e5d416cc7ac1f7e071122d66cca29ca7283da8d8f8fa2d42483798a7b45df8a2f9a0b976b77ec861220c -8bffc2bb9a5b14f466b12b2620b31de959ac758799e8ccde00134ad91d037a582170b69231e4a6f349624e110a8914a6 -84a3ef37749eabe783283dc905b641ca3acd9651a0b7358ae212566329765fe8a0eb3d7d02c8cf84ac9f89cc7c1f092f -a2dd434b8a2cde06e5acfe45734588b4fcb7d8a8ad7dd20101e6a96ad7621ab42a943c7fbf6151f3ec8082bdcbea1056 -a38a4c9a144770338a976b81ea5dc8782228a25064024e5fdb8a6ee0b79aaaea9a45cccf8f2776e731f69cc0bcb53a9d -b382264fd466a88db982d8b83d8c6a21807c10afc213735d9a06bb5a08bfe9404613cd9c036deef03b65453dfa1b598a -855cd6bdb77f86aa9e04aa8c93bc4c898d217314f850d0e55e2e435d213871fd4e2b73e46321b4373872678671a2efd2 -b00a43842982205eddf499473deefc3645ba52bf8e606d02c5a2b0528d1ad76f0c18f4c733acf301e05f5854e8cf1cd6 -a791723e8e9d2469077870cc29b096c9bb1afeb9c6d55f0fd0ef41eb4bce532dc2e10cf13c3fcab3ff7f1f22fff5515c -98f26fa5ff80441af2abef79b9ee3d9785152088bc6212bba7f2aa500a5377839a307e3c42cc34a1966bfb5cdab90968 -a3d28d62217d1b8b5474af055a7605a2cf60d512f85d3ae70b34a31096d58868b110451636ab15707a8cf0078a7591c7 -8cffa106eebc653ee9e35a184035c130e52c1d9a72fb8b1af014075c327ad16f0110f7d1f5a146935565449ea9e61d34 -939cdc45529672571f6eb942855c156a4cb95252bd12fe16e082cee8bd4b8b33aef1307648c340420c013125366ac52f -a0ef4b5f97a4f7e0ad95e6fc765584a18400be9bc71896772e304e7fc12b2a8ce89dedbfe3a3094f6a9b622216ddf909 -8e040266960e5629f8673314b93646990ddd95467d95a440087199930956594027c952e18cda1ab61205dd4c39da47f4 -98cc4fba2d6375589d6062e19f82f79a5d34d420edf626f512ddc68fc715381e675bb13ee30e3b9d9d810a246b6c8aeb -97c72db6b896d1e5ada574515813fc6b1833e7b5bc8aa2b853cc580de0829d2bb87322f8becfe42c346f6faa8de9690f -82e8d494f4b75ece8b882d2bb25fed514571b98971b87ac240f7d6d748477cfab2aee904e796c45502c04053da9cfef6 -a0d1699bb87bd6733fcd510e1e028640109fc389d7581685889e9521b9e5ee3ad25136025b23e783820a86743cb38db5 -8666c2200deef3b6b9330e21b2e342740264b069c58e46bee95984992e632c94723a53624bb30a0681acff0417e2f6a0 -aae412abf586079adc9025f7deceba6cb15cd85830b25fe568144fa6f4e6ae6ba3562f6c6e6c60b4cfb7c7873dbe7d4e -86b796f30c0447bd08a6d01dba09801e480059fde0c53607d786ecae07beb18a560dcbb0676bc193ee3b69126f7b3de5 -a886596045fde66b9910e9fe065451ae635bf65b2ffa4bb6569d14e06eee48fb3806765188f4ab3cabc18eae2595f6ae -84fdb7c6f688fb8f1d0f078aef13c448683562dcae1aac49d4b8cb691c96984fe4c47c44802e973e8a59014eee657f17 -8145d34f2bf14596a435469536210ad92c309dd5dc25550c27b4cc4e699b4456eecd95e28319486f36af2f3c77804804 -a07e27baee9073962df0cf1788da98775d98baa274dcd976e301f8706c97332280b525dda993208e35dfe834ee048bec -aaedc7e5448a2b4ae0ba18c3946c4055b5026516f10b4cc245d9e9109d48ad097c4897fdee3ab394cb64fa1659056cae -8a66b3e259ff237a619af1f5f04606475a5d02cb0435fd4cbc76326ff0c882e2e22212a261f07ae169ca454fcaaa433e -a4840bdb2d5a23fdad5ea27ab2e80a5bfedde1a203a45c6e0babb6d417e7434a320aba2058c7bc80f98690e0ce147d77 -922114ecb80b6b7dbf568f92f4d1c3df5bb3247565830f7e5237572ce4f297b907d22cb934743ea8a6f709dd77239429 -82f979e27bd6586fbad02178f74698f30c60d938f55c10efc8a6108c1d231ecaa4077e31f783e2d87e7c125c6ba95827 -a3d7526008816caeed32cc4910834757bcc2a26b6d0edb21eb23c951cf096cd7cbfa0aee0c4837e26310352d755ce37f -897369d1414d1809c676ec821fb1ac02a4b31c2a7a2b70117bfcda241288fe3c237866c4133fe362299ef902669cad7e -b60af88a59213d0d649be2851d43babd85745c8c0326980459905d7d448752dc62b092df1b1de6640d578dcedaf21b49 -a1ae360b6111efa07d49dca10943d31e1754490306f9d0e5f1015a1c943a882176014bc2acd8d0cb5494ca92fdbaebad -aea9be1f403daabdb0166cdb5f24444375a6523ad829d7cf3af3d95d0bd68b93e10bac514518c82aea1377e7fafe1930 -b88a4d22ebc820baaf83559f12a0bb19a0fff4bd9d7832abd3285ec5574095f44f84f1c9ba88931d2db94870f7a1aebe -abed568d06b6a4364c1e1351ae89cc2918908d99a4462894e8b23f5bcc19fd1300228643b88645e536190e70a271f069 -8f21c94582b716227d120a7c39f3601e8d2b97821fc55ed8c757cdc5929300dbd06a0f41ac6ac2ff2580d797da569e0b -8f37e8cfede6496384ddb09610c716097f26a601f42efc62456aa18939eb51eddffdc36a8b613a05df2982b68d5a9a5a -aac43a69bab717ba1f2f9614797d79680bebf6910d682d1e548f67b086fa4b9e3dddc8d600e7846f2aa196721386d6ee -915503f707c16759f12c953668cb3e6767d05a690f8fdaf717f5ad845f587f4e6e5b8ef1c1db905c7c490ec3c93f4925 -8d9f6b0761f045b69d110f533c6cc358c98237787e6e52997210e16089d3bfa03371421a40e524a003412e2a58166e27 -a8e602ffb00c2cfca33467ba5e63abec1ea4e7a037822173444362a1bc62317b23ce1ac37bd7e66bc7fb65fddb7430d0 -8f498b87a637f7064b0fb3ccf08cdfafd4ebb497c60bd1ef77440da832f9ff54cf7f8cad2c4147a86d4135ae50fcb2ef -b0993bf9679567b3a1b554274b6b21c24404da8a0b4f38cbe864b4e1980d334919d3bea6b4446569f86a89853b1b1387 -a19026f8e776b678cd359d8b7815575685e654e01d7ad867edb7a001f6cd6d8e3d058088942a1a4aea0654d600d44306 -b4ad341f90c8285b2806e51efff2f6d957f8665605e0aa9c0a3e178864bb1f39e41c07d0397dcd6a058d4d78e8a46973 -97e740c4f9e48c16cdaa1360e5c36110438418b4c4b0ca433660f3e6d0e155470b09d11803ade72eaed5f56aef8f3ad8 -a7845ee3cbe37e88cb1da48d8c0fff7e60b26d9a31af3319abc51975d8df9db4cebb2e4c25716a9ac0729fe31fa36071 -b75df19efd2630425cb696ce8d12915b929922a97d5504c2ccf14d2f80c33c75aea0662fd41f0829ad54a1c3dce26f26 -88b9f09e41dd9db76a136031ed51e60a8eaf07546ccf394696bf9be77d323fbc85de55a435a453905f50d179385c37af -a592c37bcdc9588c2c0442a8e04f7e396b169cc611b04f140754a5bfbd6feb5ab9d58c262ae0e7e1fbf2d019186565df -94961f4255df80792cdb9e714f5ff2d57496d50d1542584f29c058a3b53883d0dc7cdb61c9b1dcc6ab4aa58062fbbc23 -a66404ced470420ebc6c6129e32b2cf40181c6e985cbe75a0c958c6b4cce246d9c02142d1a4cdb71b73273ee82e7d32b -aa76b3bea6f14e21adea4b4e19ef905d2789e51e98425b7ed72c22d9011add2142789e4e86a758cd53ec884f4e861052 -91251420ec91bea38dd63418d3a395605b8929b3ef0c09eda606bd47b6dd9b8b5d99d18d5b99a2031e8c31fd01a184a6 -9887afcfff36dd9ac5aa45911b1513ad9d38d903eef6e43101df9d85e88a6d1b18c95834c5214151eee459d9f57cc7e7 -841e9ac3ab1a2042b91d9bc4b1ce36cada72d9e6196c097272306593696e74977ff7f07f9786e8ccc7e47b964428719a -8f81c9bb13c6d3ea5927e187a78eea9bfa3f8bef55b821e476eea8a244fb54e4c8e6cddd7a5072bf4072a05375160ce1 -877a822a1bede0a012b15437c12e8e930429a325ea837579bc865443cecc7abcdbe2412d3a9fa22701460c7bb03879e8 -868b5bb9bed16a705f54bbba34316929e30ce6902031b1cb498d846e7a00887a662d2f17ee5e303ac80d4656e67af0ac -97d5a1841f5ee52b3d09cbfc3a43d7e0606ad94fa81172577a7f5ad5d453bb2bac41e5266894b37e66fb3d157d1bfb3b -b566a622e5b07c19fed347e55beede22ef5400c1928ee54298288919230e991f217cffc4701b314b9f48b7a5a447cad8 -87cfc897472cca7a8bf04f24e796b688cb2680a20b408113a1a0e7bb4bc2645f1a3e1c68c784a043244dfc0f08933763 -99b8cda2633b72d2277bc157abcd43b80db3895dff3a109c4e1c795a8eccc5ac47030d89500a1fec17474a893ed1dd65 -afda6bedfd1786c738b38f6934f9bd0bcc9717c008b854fca68827cb72691ed8e39e00ebab284595ca7af86b5ec6a032 -b4927edbdeaa0441dce64ad8650fed09ff2e32053f7f71df2da3550d5d8889745c1c11834f6436dba76c6799c681c40a -94d1c187d7bab9738219f986994fed546ff6fb3e26bc1acdb2bbc76107defb06dee1b04ecf2d32cd71161919e05dde0e -80d7f3b7be748695b607767640e65955376b79d1188fafedf866c0b98ad7f49a9cae34678513d523467194c89f3c4d3d -a6c1503ec3208f573fa9a4589bda0bc533678f6d127af369248c4468ff2717278e5aa2ebd1eb570d303cee34a7119df3 -8ce7b9340ea4f0220ba13b5d75c0489f1c5f5f5f5ac9b5b0b546b4bbf191aa77ca7693b6e5fe2000ac9a530d863f356b -b9ad6de16e650e06b23163fbdacf92badb1f74922492481c3da21699d38e3effc6cbcccbdff3085dd7f81c99366a7c51 -a3a4ad6425ecce4b3274aa107de052195b39dca47c771c128717fab88333d21bce6c96ee4c08f6abb3a2bac21eb24c02 -b8c7f52d9aeb9b60e9f465206f1b1fd6fb031f1724fd54aa95ea5e983311cf0b137db1e59453458ec36ea07302737c0e -a282d4756e5dbbbbeca8e28dd419d31a9df41368ccf638caa285533318f593fda941a4c5871af05f7f6c65183c89e14b -8763ee2cd57012aa44f787642bdca5045cea22ddc0b0bbed4e61473b58b1a5c7726121539d6766b32ee1428057da8b0d -a89939dcb2c05e5fe223deec52f422965184698da2748874b5bb564b5c2eed3e7a5f7a78e76b44e2cf4ab670dac1494c -a05f25876987243fdd2736902a268c122f2a7047320165d6003e6ca7c68ca828507e7bb9505e691ad2f83967c0a8e9e0 -b934f865aede261b639d63d6765cf9bcc4d85cf8cb84391930a4c2ddd6de0eb03a24b4c90b061694e9fad2aba38e6f61 -92cec5861d7fafdf3c9273a072835114d6e4a0331e13f7af88145f2bb523f30106361be3f46064284cbd4cc1b2f40c6c -adac0093eea20db8eba318a3bf55f9b87164532c81aa9214a8d897a9e7a7e9cd232d97fd9ca7e30efd5932576ed96686 -a31eb8031d0f068339f3caeb1a6d845d3ecbcc0bdfb8986467e96d0a16d5c9491661dc8b07b7c8c378b84c153138bc98 -b485a3bd930e39eb4e5d0dc572114fea50150148541d10dd927618389c5a2da6da3353922354a7b908707a7f2b09d5bf -91d1a5ff047845bf25aed4c11f33e02b4bb9041e856f1df75484be24d853f6db663c4a72157eac8575b337d589407dfc -b4780a9d0eb818571953c1579b4c93532c7fbc63adbc736f5279cf10d42badde0c06c2b1a9afe6bf1e0052839e611154 -8868dc369edb68fe200d3287112775c88e9fff005b143da172b4e3536c06cb90b6b425f78b59d9fda2bb157ffdba3955 -997c280d7bde64752488f7d06fc3f5a887ec7b05504763cd087970f2ecddfc46635b7c6ee03779583092a0f999e9fb39 -aa2c842bfa8658eb65add3bd92bad2c1382162cb648819390b2c9d64d3c0e62d559a20e6ffb30bd77cbff2db202ee75c -b3b6048daf1a92f85cf037638dc8a2efab333eadd1acccfb2ced33dfca0e85b522b0c5fd27c49ed56012f7aac20c7829 -a568b95e286c7cf960592feaef01956bf8836397e2c707eaf8efd6b4c2027bfa1b0dc7f25ba7b9697255e44fe46f5648 -abb3f268fe89490dde4ae1e62b8855d55a99404aa94c666477c57a64ddca6907bd8b90541979248dc1fbec33a0ad3248 -82ed0c36ae784b264c4e0cab543daa1b1bd8a3f733f409ac19099683a0fd82239f566f3e0cf884505ef9fe89352244e5 -8afade0bf744472146e48d1f9a8b5e9e1cb7b4dd6adad865bbdb5fd486be40c403d9776f29e0e955000aa799e1d5da6e -8ee8d222245bd33e7bb7b08066a4161e4fdae131247b8227fbf5cdf25cea9dd9f06ced44a9b402b1cd55b36575eebdc1 -a3f166bfd953d398febe9330e7949d8cea96655dc89e435a7eabb77f6e574c62f7900b5184b99c8afb370e9e70b5ad08 -a3e7aa63d063f2e85e3fc69222c50ea247ca003f2f2ff3a68eb740c8d5fc520e423af63bc406db568a48f54b9a4c3d2a -98baa3a8a39229c25eafcb621ec7621345f744cd4278a148bf871bfc4033c56554f519e658c2076bb5656f9b77011899 -94713808a25efc5dc1e2769836da6af30809f9a1bb084de0747365af029d614d01a0881966ecd7d694ed782bb4508246 -b1145e097d1ad7a8d304688dcdd593599285854142bc797a27f44a43ce544c5321c01f790c07976d29e8160f47b2886f -989af1d1c28396a2f23aec1437c23350d8c406a6106ad7dea0268430c333375b772cd71665025ecc44265b993197a8cf -a27c1730483212902364b627f84dfde5c4edbaf8e27673f73b053cdd03a44b1d9f0a62c3770bf12b1c6c999a44f647c9 -865fa094ae0dbc4da9a959cb9d0124469cabb80d2cae2cbd4f59674db08fcb2cca2c28f5cb1a0965eae6281f82392fed -a285815f6f9b38f2fe0ae3d5783cab60757598a84a6a8691a3f22da6dfdb00ab7b65a162c2714acf370ab45784ebdd5c -8736bd2c51fd32a3a45d6fa12b5a48c23753a8efa58056217ae3ae8d7d925cc4735286134f4fc9c45b647f2f31d828b1 -b4a8f5469337ffbbc4960f2b02afe25127b27aa2ac073b3d94f1d0b7e6fa1ef141f2713069c5934995f8e37eba5d148b -a1dc3f7483b170e92edcd14234afbd0405eaec19150b64d0987d128d7c436eee8d353fdec7b784b179d74dc5e6bc1f26 -b8fda1dfe383756dc96383705f95d8573514c6395e0dc6b675ae9df4e58a8fcf42a1cfeec9d13b4c17ca511e49a4bb3e -a8e52ba9f89dfb4c4d6c6e006376c1e3af2067101414c0d4770614115a16bca52b09b1615a5c9491e498fa692adbf1bc -b04bc497383a3ee06109278c4ec584e5377da2b16773d84d5196e550fbda1a15d78b2b99c8163334714d2ff834445a08 -8a6b259f9ebee71ccdf673a6a8775bd088f6b2054f3d91819c7271272a684a16f51140a48bc62f86167b8c403c8909f1 -85f4142236cfa3b2957d064c31c5401a14d09474a85144429700efddf0c50b8729e322bd8f61ed4b44d09afe1cdab23c -85c470febd2a084e5b14c2b339b40b1ee767e9f04e862ea16470d170d1d9bf429dfed415cec0e931df3787412ada3773 -9603f798791ef0365e334c6418f40a18e8d2b0c53ce1fa214d42212c223c583a75edba8e7e15aa74dc492256b695b700 -a2e348bf2a2b84a560318a67717d9c33dbe5a465c131ec804a051fa482d089352bd74aa37873b00e3509651ce7a9f44c -b26d61fa3b9eada68ecd44fc338fe04eb7adad1066919da6c0ac1147b5f9b4e38d4314fc73f35701452127161880d367 -865a0c480fbf8154a1a4170be713e5d26deeeee6b2858a8095f3e3f2e613dfb7d01486097f9262663c381e2183dae367 -90e3a891f089e7c131a0e3ba2ac506e165bac8581e9b56043714c019798db2a9c10100768eb3be3b10d0c99ca1edf69a -900dcbde25b6258b82ec686e2b046037e3b8db16c0bac92c14da5653e3fac2f6b78206584a8beca3b4a39a49a4c8c3b1 -8d0b05a7342f8ab9e80f6b4e532d1d12a805194fe3e06d54962b264e77e71cd52ed8f500e6febb8967b8fdfbd2577754 -b4d0b53897f983b87ae22f4fd32a27dfb15768170053188fbc1f27cd300ed425af46ee522eec54ec9fa9feee6cb07133 -94196112213d65ecd4996bab0cf14916959db441b73f033c88b9f477f130ad845f468f932d781a2a357d9ee25121d914 -99e8c44e69076500b0a0318d23c0edd3f6d4a43edfa93b7d3bba5bfe7aeecd3ee12b19be71a5731ecfad4843f5dd68e3 -b702798904d7f271576d2295dbf90a6d2a45848eb6ac703eefde92b0c303089e5294e35129fa15c157d023ea4a3cd52e -8428458b24892c6ed694a8f8876ecb2c2db05419d6e7040cff3518989db12a49c20bd08a97a67a0376f8f05e0c9ceaa6 -90fbf15dcd3ba8ee1693392ef8796bea18170a887bd212650f9804b3b0f4dbf0b723269bb16a5d78244e0974b5c68a21 -a723cc2375f0728f38d8fa1a8784f41ea4210616e3ec0dbc1b236dfd8ba6f24911fb558dfd3220b8f1c5da2c5151e2fa -916b2f94f6f4f4a9a0211d87acd7e4dc712701e78d8e45e100e2f955059d0f882a246e766722135bfb377b17e0b46478 -92726d28ddd3da02d9e88fbc622efda082a7c5e60e6c0ad83679517e83b5b58497fa1c6208748bdbe2b9751c30a6bf18 -82e2c93e563f097dcb52966743cd052b96ccea9ca2b831878416128688caf7dd92dce67a17f89f9ef7bc1e2a65d99f04 -837a9c2d03f5071410c274da522044d2e655cbdcec3d300270590029da6e7d6879390247ed595400492421767caca7a4 -8660f329f70b3dd6e08a212e0ec91be5a05e8c92316b5ac875fcc008bb9aa343887a98257e7fac99737a7ea027bc0449 -aabcd1baae69dfc37bc8550657e554ab68c92c9daf4a6f56ce0c9d7c388dbf83dbcfd911b64d51dfae0758346451eb3e -96856362d4974ddea8195d03ed6b3fe7949930882e2943b38f828d959105a1e87de41f793dc5fcdce12a0e2209ef8bb6 -b39ff1047058b29823f824aa3dba5fbeaf5ea11576114c0c843db8ee3382df1092c11779104aa2c9d203f87b0ad46cfc -a792d491221238f7b3c0ab5fad58a408f5e991738ed5b3be2864f2c5f638c32b8d44a9ad13816cd80a67c64143ca2bd8 -8a3b31488835be700004ac8acd6b680cf3704277e5ca781dbb72efca2e65f33fdc9ace3444334c85f206f3c162ee81b8 -945dbcddce9c048f9e6f1a2ec8f9564d77e9b4dfb21475cf6c535bcd1cdf5ccace63e3efaed1006cbb49f0717c2ff272 -816380ced8d65af4ba614b3bb6012d00bc2cf7cc1e990a4188a4f0003d93227aaae6ee75ac3202f828f8255030ff8a25 -ac844b97083ea7c4cd4a9a4998698c85ee21fc8fa5fea6e57a0bfb5e4bcb592585529ba4e2a95309eca8e1d644e56eb8 -b44ac2e0e07f64916ee0334f57a9b1bf0599cf4b75e17cf0e83832cf375aabad761ed06e8fd887f8e479c80a033e9174 -a6fca2bb2075f9cf375632d20618b830268ad55ba5c7235b039cd1030a7a7291e68d78bc0d7b847de53ecd7de9aff204 -8407f91ae41c93e9a2f7a5fd5f7db8723522f55bf95ebc53281b08c592fa832a893da65b8319a46a8683d75a9a9f8103 -8d16b3202958f22d26488194bf93f861d0b87e3bb29f2e0d05ae3863634df19338bd38945f81b6dd0bdd2a10a5a5971e -94e3caee1c0fc176a3818a55f80e80fb1cab6fef21fad6c46dfb766a925749f9f4e3fa5c697c05d53efad50782059f9b -8076e3edfdb34f679ef0fe178b1b1f1cc855753d9e60ad005f000a9ddf34e314e7b16863a9b52a1c8c234368e1afbe93 -94e1bcbf57598bc3eb0c392dd1293be99d0dce2f4c929228f5f2000096e1f2f3217ab28c0812c7f5b27f477b1ad2bc42 -87b120c919d9cd0ee1965479a8b4e63deb5f3a63e6a7665485fafdc77bf4f7f8862687b18aaa985409897a545765bb09 -a4b57758925e89fa455d8e145ba5cc28d2a5779b0aaac06d789c9d7ed31e91f6992cb9fac2b41949e3897ed21ac85423 -b0f7bde0fcff1ed5db0952e90de209991a1df965a838259eceb1ac38c93bb8fe37fe8b5c0758fbd3822e32354b4d12f4 -b499c556930cca080076b49d83aa0068d23aa18a0f6c8c5e5cf575c33e9e6d53253d728fd60c90d39e01625e40549a9d -a4bc31a9b9e3530621183b3c0fd85b097999e7d278259cb1c71258d517b33ddd0a5f04e9ab70a854cc5b64308ebd08f2 -b5049a4787992f6a4b23d31ca07265d19f0e0dd1cfb814db01945eccd14eff717d9d7824089b3578c09e13d11e69bf19 -918051ff8e2635cd6a82f348463eb2bdfccfd83497d86418d59ad5843d3e5e6ee162682f67388de70f8096552c9bcf5d -b35d2b22f74fdec716a5256296047aba7ea84b56ba3de0b3d276e48b6a980cf7beb296daca7bd9666f9c69d41793401c -8da84fba90af2039006970d2f6f7d8f59e1bb4d714b3986951eda33c2b4c9154cdd7ce1861e3572da435a2b3307566fd -898e0017c6ec8d2794ba2891f27e84917482e8db68a4ce3b4383b7fa1518ca38995d8e4e5c53712632058e9c7bf2e2ca -a11853fe3ac63a7cd7c07876508cdb98ef6db35fe4b30a5e6a262a80d663ba5241c3e12d6b5cc904b6eaf9dbd3cb8f7b -97b14c124f78711080c6b960478832cd87652464b36c30688676c03291783dc48f22399aaedf1d221149f8da5e036033 -8b547b1a9aa8735d902a7d7c92990101f4bd7c67839f6baab60b27447743fb739b62bd57cbf6c082e008a2eeaca025a9 -95ea9ced78849aa2c5eff42ec9ce6dc2a66c943e7b5d84d57e4b2ff29cd3711cfc86e5469590c46c33028f7767dfc0ce -b6bdbd5f65ad8554632d89d367dec89acbdea3f58edccb8cad3cf5fd0bbe4c16639665b72bfdc7840a1e0fd254b8e482 -abfaf074f570631962a9ff24fcd844250e462d4eae858436c30fea63e59f7f3d36e038896d6cf3d5814c214709082c2f -b1b9d5f71d924470b94da6f0f9ca122c1035b06bb8e0ae446061a0a5b831a5d6014094cf1577bf18c9e9fe5968d043b7 -89e6855457dc0d9c5df64a85d44fc9c4470def8bbd8b8b8da609f3b9ff8c1bbd248831a8da6900895158153ac9679a92 -8a178ca8bea61e15e3342777be250e23d7f55ce098203a75bb8e9f494adddf28bc3f39cbdd415d3be2812653e7a6427f -8dccccd65fe3629a0e8d022b85259eab4ae0acb62b8d4513469960d5f035e46dbe47d2759a42b0f734636dfd4c7d0d57 -b4baeb5d03c45f2526201fc336d092f54b5d15288dd0be2b100ab09ca0e64a26f3da98a1e4b0a7c1218a65341dc8728a -b89fa0ddb60aaa0bd07cb2ffdf50b1b150791cfdbf9f8dfb0a8726c330736ae8c3efc0032032513e3fa3d19f8e337129 -934ba52ebbef233b103377837141729d5382e62055bd58bc466908ac7597e97ae3be5418393ccb73e40602862f738281 -ae08ce01c61fee7237727945423851b57d056b7af398828d22c5108eca4ca66d0852493c0d8cdfa9aaed0d94d0e9307b -ae793d07a722ec96ca96b95fe60499ab439b7af941a2ee3d8320570a27a226e42d80edb4d333704e82762ef7b97771a6 -889e34367f6bf78fa313ca8dd158a6aafc8c87ce12c72d804e3629d58bd26c4a78852d33544004c10637a45ed4f3be11 -af17544ed8d986d2ceb6600ca01c9f4cc46e974933cae13b6c2498c003f2b8a719a328332845bce498deef3b6fb31ee7 -8a8dff10b65e9b6941c368313398c1e83b0afc77e98dd5928367158aa288cbd970be7923a676ca190f55fe4cf50e901e -b70b32577846656e156b7043155c460f7afcde96d0ffe527eb114a11e4e403e86c0e2f1f93f8a3fd23ebccfa8fc3f749 -98538a16e4955721765f1182d20d9866096d5161d361774f22ff18f01663a1eb4adf76073959cf2c8d26387d4d555047 -aac37c44436b1f356ab11d85a74da9804fc541bc8efcbad92c285723fa67c25f5a3f00e857b100c297d4f6249dcb788a -a0fe9caa24c3b4a2324dbfeffaf1ff20dd58bc817b0298cfd45df1b724e7d6c6197e72ba3c7c5c8293005bdaf9524b0d -a4afe4c7863120653a4c5b86a6827e05f33b6069a02416ccc985eb155c8f719b2a455ade7cd0e2aeddbe22070fac59d6 -b5912a91226464c3887e77f9fc3d3b4ee648c693fdb43174d877f0dd23dba87b79c4fcb06986e85e169248e7aaa6eff3 -a47f4fe084cd3524befe88347df98ca67996866081a0779dd46ba5f7118ed02217d533ccefc330e1d7f61b26004ed828 -aae526538a297fd939d4a2e0e0d98125c1c41cfdde376a9adc23a93073cd4b5148e40140f0ca15f767e5b63791bc923c -b9f13b35604dfc07ed24895ab35ad68fbed971966926ca2149640d332b71489000f614db6cc1323be508364e6d66fbe3 -b0d1708df1b2b85493de242571f32086a1720192ccffd40431e6445b0b846c0dc3374d41a9eb15f127fe998d5eff15c3 -b38374d96539b82380073117d7de43dde45931aa2ef83b18fa8103b98d364869c8d71f08f325cf4839f75ad874f8e108 -af40b95922b72182751ac0f7b3587b5c8bb374347f03f55980861d2f0ae18251732712bece56ef4589e4473ff9cf43c3 -8a674ef81fbd4bedfc4ade661edea0350be4c2eb3b7c9a42964c9ebcf42f33b92351248c9adca894cc4bf8b77559b39c -8a4783f35ee15be0f025ccb668559066b946d65bd756fe90c7a1252b9a80dad8357aee6668c1f0444f47e7739b459a9b -a772693d76b6f4257890215c018511f9384c112097e51cdf44af40b47a02ebc88d83e93abc0977ba6a6c1afa901af088 -8d0919756ba58fca2747aebd729a817b7243cdc68ebb76137cb76734024e50e7544016f9483f2de15c4729d09b179ae2 -94b3a4d8188d2ce221734431af354ba133daf747cc75f59cb7baf819d50c45758eabee3aee178c9aea425028f938dcbf -a31198be2203ec2a2eae7ab96116606ad6d1c6fd3ee180246f222bc308ac7dcceb60fbe55481c6594fd432932b210aa6 -885071ebb57c819740bb28b6c004d41a2d415373c174a5b952761888130a4e387aed90a8fd149ab1bb677cb550134ae7 -a8c100deaab7b7dc042ae6fbb3643eb2d3b6bda5803b69904d22f031d6ccbbd36836eb6ed650822cb2c4cda3d9408f57 -ae9c2ef68353eba0cbb39bea6de0e3ae4423d1abbb8c44739e1f1676fab8c8a2b45ae1a223526e6e46469575d1cc4900 -8dd30843f14a20ef1d3ceca1c3292186d53c7062eba073f4c38a6eed505b2786fc83ffab0211b76a8e06ac79616588d0 -92f6593f4043e5a15a2dc28a5359b5f3b8e51e02d66236907b00a30847b1b52a968cad17da1e83cc8154557a2e12879f -b3c0daa751dcd9fdfdbd604ddc3a0767ce094c1226f325c8658b6d8d2af878bbc9551718ea96ecab3d7400ed553d963c -900d9d5581dba88569d271c909424b4c9b6ad0246c1b0197c1aed58d04be4c8cc84fbbdc43f0ba2e48442ac2772e6280 -85031027b897b6308bdc22c22637f6cbf4b1e10771ae62d530038025249ebd2f777cf55399ce483ad59f31b65270c319 -912933196c27a5a5d5a5c99284369cd8bc9dc6ef2331c2c0e07d77c096aab0e231ea7c569e581550ee79d1377280e4a0 -a9642d96638270ff5c2699f8a0e3fd68dba37ec7528e892fc423da2e45d145d116b9ddb8c8c0fa034e1d5c062127ac43 -b7072eae6cb69bad41246ce431a8871fdd2b2042d28e116bdc2d37c233f17f4a7f08e199b190e2708d3742c2bcaa3050 -822c2bea46dc6aef170728e3d090af0f5106652865e4b7538c8aeec23cbd24b6a19712e46a729d3a49dedf41e42b782d -b35bfe75f420d966822ee379f204c075f7ef97501f657a3b674dc639ac6fc70fdf70ceebc7953e5853fdcaa39b47666a -98c9dd539bd14dcf639812ad0ca1a410d2394077fcb9cac3de65da9df0217d635f319de4c7bdff161ec58ffdaae17599 -8913516fd792a83819dd6cf54ab6c5754cc48a1b280a0c1f4854db02a690de4ae11c4b3c7ea74f8d4cbe373ee24742c3 -b7c84396e9f09e225e28f3b5484223f75372d38610a5f9801e09d5a7f41da29f0cf8a0ec075ad82aca9049b610289307 -a3eff696057ea98e56250a4b97c8cdd9acf68e44a96429d405fc60857e417c9ecbf4256abaa282c0cde17c3262eaafa3 -967314e8888eb67be45271336bf0976c77fa43c6dab2bbf8d0520ca5f85d0fcadd411e3c75d239c76585d4c4d6074b77 -80d7881e09b7b2637410145a604a07508e8bc03731372790095a5f0619c99a04e5e60753609c9a8eb431db1162737990 -8d4915d0c384060db69a956b13dff66ed4b5e4807eab322682994cd13f6f04e7e821cf05e4e6ca8c95fa15f91c70364a -8aff910ad97099ece8b9df612794bb4a36953c8650ac70b97b1f0f4a57e5444fb9f830c4f794335c262afb0eeb88a68f -8d51cfa1739d7e2342c63c43e950d1d929e42a777859aa5f01b2da6d440c4f656535f65113bd5aecfda8ba91999c41fc -82f958a1e5a90d0372bda16a08a3b9dcf229d1da6943ca824781dd7d9d30e870510c027b8f6ed3a4cd09f19995ac5c5f -ae0bdbb5f00915163a17908eddceedace34a14d6448f03f5910e6525a81c2f052642cf022740073d3b7a9950c53d6623 -8edbb4a5dc20cb3098af25edacb904d1f8104be53bd8c4eaa5f914ad71f9a3db1eb372ceda55f14a0067f92e20ff736a -a342cc738143533f8f42982d517eba9d4a7a835def785a7fd1570cdfb5b36485e48d1ff425709a857a0cfe7f20f43a53 -90a5454dd703e8fbe88d28e7eb13807bfdbfd4bc9ec22b6658826018b244f17f58fcd8658614570b6e987447a569e7df -a0e5aa66ef2c1ff33da963432f5effba31c9193573f860ddd36228e4a29e3b465dd44cf5ced67ce0e93eb3189120187d -a19d00adf091a680e3dc91b9b7db02d3e027bf100acc28c08b931afac704d4117f5a9d37187e91b5258cca1040c51470 -88e5c4092929262568216ce66bec60adbaacabd367394fb43c8ff06b572ae7933536303323083837e54381d32ea3ce10 -8afa2df203defe6515f63a00ff80fc2264830aaea02cdbe34292d83f516d4af9e5945f43eb2e6d25445cb6a63037e6f4 -8114179272947f23fa4f6a5a4871561c03f3ed3f6ded5451c8a04ecd2deb987bf35773338c579090e54225d0718859e1 -aa9321f29a00330a5ef053126c84d9ebfb2130dd58617816edb3b8db91414872fd919357260bece160c74240cc2daae9 -8f75fa14ffc34b507113c3a0b8fa540a68ea9f39e900d11b75446038ea331fafdad76ac0dee3a453cce49ac826361187 -a4cebe77db731bc145e6b7023ea66b84b257725e38852e9e445a5214f7d0fc6e6d1129a696d0fc93f72718e904e686c7 -a016c639d479fa0cba5ffceb95635dd5ad22f793dd75e96fd98afe77a549dbef728920013f223c3985e5aa85e736d917 -ada22fa02e2aa41df77ac4f0b59efc6dfd7d23228d172587f8493ce5971d5c39840095a15add87fbb440145cde005286 -b08724f88274b73b3436b055c34a36fd62e4b853aaa28064054705f5eee192e863dd8882e500201b2a5ac0b3d265bf27 -af68227287a7016c3eb8379bd6cc689014c05f24b6a2fd80be48fe2cd295fea3adf597e983a4f2f8672eb536ca3eafde -8f9d34524ed5588359d8eb4701748684568d6a5a385606fc2765fc622697bcaabb26ed06a574c4dd994855ba31d6853c -91ff3dbc0ebc0209dec4a37cc9a4078cc3747ff380814e328a0e783d9a30a7add848011f64d706a962300c82d902d09e -84e4e93ea0822c09f7fd2ab20fdb0d9ee2212df51fb54f79c0c04e510165f6674f4e061a8293edbbe357e72d2a74d44b -a3ef6b1dcb6c81f3413a9606f64f71bcead3da1621cab8c4de702cff3ea8bc6968a966519311fb3b04f6898ffaa2b934 -85baed0c58533216eea5d8fb00ead2c3d7b7705621e3aa3273aa169dc48030fd17d4147d7ef012ad8c6e78742e2e6736 -83670e8adef8197743aab750dca036619b2332f605408a03e02cb5ea77676d53dee0ffbf55d9d1376a16d1380499902b -964ae3ed47a75becdf6642d92d814087f354a6fdf302237b3d4ed377fb0e2861da71fe3870d69ec2cc288447dfc92cbe -85e91aa028f1e3dcfb313bf270411db2fa781fdb47f6f7048641f33e6a7d6d4550ad9a55023fee330814799f6313694f -a65c1db81b36d3dde2827c25dc165fcc0acbd2888de3fffad30c7ced8cfe52b22e4206e16e81962d23f88da231d1f4f4 -b8cf40de6932ab573ae728f1370d25aa6704ff4ff9a30df7318254c8afdc43d015d55245feb4b8948fcac6dcc26987b5 -ad264d25fd1305d9e2d1f05ac38e04aa4b0081ed51282011b886ffc1077adb13f8a2962a24010243a3e387a3c3547bac -aceee86acadf975924ba28d3b39d2e5f36abcfe2e8ff7537df93a712f97274bbc081e35653d42c14ed9cde17f5866e23 -a7488f97a965156ecc45be6e65a17acff20404cf33c42b50b020b40e8487fb3c5adb23539d88425bdd8992e3608e6b9f -839edd6319ed8f0bd1a7dd16662f8cdf0e10edb20a2a3b25778c697406a0dbb0f6d4ee3deede368c69c12538180b5815 -a0160015f24a154d2ba89b51da15c7c6ba2b3b7fd5921b6361d7be19c8500dfffa7069cf1554b6ddc06f13d6454b0b76 -a0d616f8c67a8d34f5d78ac4c4cb82018e994dea1fb87bef4b958f7e00f98080849e210b20a0b3751d7e1edc2f90144d -ad2101804832725c535830c911d170d81ab5eb95b77a5a3e9647b55ff22714299195a79ca9ce0b9fcfef2ff235c40149 -a396e9fb081f58d7d87dfdacfd1aaa485b0cbffcdd73dc343f08722fd2b78a1d9886d69e3c2e46b337d0f2d113b266e3 -8a63c45dbe602e94eadcdcc480da8c19f3f3805c070d1288ce61ed42636553ddb788a2829640b95da796a31baf1610db -b81dffff1861bd705bff21841d25a7e6b928665b0240db599dd5acedea06d5baed4438c13567d2e317b0b2a7289a7182 -a433432a9e7527ea1fbe58462dab5a2caded53d73faaa94ad5a8fc9c6ba82371d2e76560037fc3ab71cfc3d6a892487c -909697ce08dd4a271dfdce06ebaf14434d14620a357507f1ebb684827b00aecaae087438aa12f0baf4ad50bd23f859a1 -8128edaf0df52d4f591daafdb224e489ffa48cfdd178f95e4d8249567ab33af5f43723880a9c2348e264e41b57852a57 -8f258d0d6688d7ce9a9c48a8d60723124299d83fa63a5293f470f4eb525f231518b2fd2eba019a85b54a85663d33696f -8ab4d3e7fab2dc269f17c1e7999333414a068ee6cb7b5cba89a3913fec37a534c2174e91cc2e3a32d37c1d5a68d080b5 -81f5e9b2caae23d80578cdd80a157b194c1e526dbd46cfaa492396a1c99212c37d3fbe31a6f10bb9d46aca43a0e8de40 -b0ce70a0ac711fbd8a4eb3c4b54255e270fb06b182854b8f43ff6396bd231f53a0871ea4eb50a0ec334383a24c1fadcc -a96b58cc5c0b0200064fbaff39e67671417a62a9f61b3879abc31e4ec7244ac76bddca1c71c1717754d5281da5c3dec7 -97545dbdb887352d72240ebcaa41f280db98b636f5669892562be259073fa44c91ed3cbe082846791ecc360f30f1ec1b -b0ee85fbe4a4719534c6b4773c2689097c0649a3656b2f9424ff26857a31528b7426c93342f70312599781b908a83a59 -a6c6f6ea6f9c5de477fade06571ccc12020e17cd663d5288ea7ba45cc2208dd05bd2bb5ec1b6c6249cf0b90b82190100 -97ff89ad97fc129be2766e0218221b0db246aa8c2f639b2f2ea76ef66c68f77cef4e3415b0228aa5b42aad241bc0617b -b2d806e6b614f3894cdb3fa247074d353843225991c4f719b3224393866c6e026c32e507825a7b8b1caf100bcc47356d -a348a178e1aa5d07be48e34232b516347f92e1eaa4351fedaad438e1f10231c9f757530c00dac590dd18a51ef48caf4d -9743734ff71182dae33e372ac979aada54453ccaabb4d3000636bf850b4a27bd1e45f415d472355594b7634c7b01951d -b1971874c6d1e2ba49743581e95be50e4eb46c1168901692edbc361c706002fc840d58709a43dc05fe00348598f3a1e7 -863f56b08c5c70f3c4bf734a1920671f030dca9d6c960a30e021071dabfd63832ec50ce2438acda20c91fb8561fa76d7 -80eb19d134bfdf4aac1a71c05ca3a465fd138a7eb573d7cfc7005c14fa6b7d3a7ff2db6a27dd34acb2017bcc87356200 -af6d6c0c96fe7f079b467d12e96b9ee673fb44b094f5f98ae456346d987a86f969bb75e67aafd6ac9b08acd120631db5 -8b8abc499cf059826318274ae43fa4d20d3890aa4d5a4345b4837812628a88e42ffb0bb03c74f0f9a8178e222368395b -a2569780b48343d1842da870be7d49f6362186479ed449a4e4a142f374eb962eb887e21a8c33100ac70281a5ea6710d1 -a91cb368416a31559e5e6fac21074efc194664081dae2766b5c1799356be760a88a6349d431935f50f7bcb5fbd7fcf2f -a71dd9ef0f35c5ef0e3f5d7b1228b7abf3c626b8f944d9bb3572297b73f5a468d1f7f61425b2ea30f59e3dfa06d432be -84f3d175ba62894daa9257cc1120eed5cd6a9a3eed9219dd5ffe0efad3e1b5db8e9aa4cc40f66390c6287ce71604639b -b1db0256b3d835246fa5a101b403b1955c9676cc0fc6a6c8a18d1b8264c5319ffd1475f9ac09a7ffd425b7c00079bd20 -97cad8e1e0e402a989036c10d1afe0bf3f37f6bc5b80ba9a76503ed73c37a711119de53661a24879a8140f046db0b10e -b2f1c8298ea24a9544c1b3a9aae5bf401aedb2be7ec18a4f838824db529ee42be375f150bb19839a574efb6101312d9a -9366386ef6259c0b03af3250f4b47214f426b8da47fc21f8649f4bf987d3181611fcd15d4f9aed355786e3e795a136ba -aeb85d2f5cdc6fd73cfbac9c05462895c15b76b440b9f70bd419d2cf13314327918582bb97ba488722defe1fc4f3f6f4 -939f3e6ff3fc4b725b738a5146c472b9b05bf25f4943a5a40bdbbe4dbc1e2c8fde6b23f591086797eb3fa645b9a51f4d -96cc6a8fb32262ba66f77e2a3503806a37dc845ac708cc0ebab5a117ddcbf1db639ce5b286965d32fe5528e935c16c3f -b9c29ab963a1fe07c91d31c69e96b33561a154b06ad2e200347bd4b45da8a92e88f2399bb16b709ad9bad79eb4526d64 -b371d0bd32750c6861ffc8508b56a6ec5da2089aab387b54865bfc995a1c26fce3e72487c1260814bebfcd0faac4965d -a512416ed09e0cf4b6ec2d26c32c24f9f466153610d9cdc2d9d589fc8998cdfe5fa78dfb64095b3aac731b97dcd91c99 -a065ef8f4ed7549d4d0da4b0d34467427ea2f75830e7eda916ea009589c936da326fc14e8650831baebc8e8fe4e30f1e -a6b5778203729b5b088eb3eb4221335c01e9bfb86e9b9c36b411a9a93527279fb9ee0bd38d8332d7d27f4dc5bde5c014 -8d861e128c2ed021944d0a1b3c2464cd09dd5fd0d3dbdd904451940a67500c1ac0eb5a9be0bc70abed64c9a0a834db3a -abaa203eb2e0a933c37b5afb4c87f2f13017ff45be2d31d6eedf1ddab06b0220f2855f19d0661d7f85f9f26e24b564b2 -87fbc271212889afe590a9beb89347a3eefbb6e26017fe86d84b5fd3853f122e0d337a0116ceb6a4638905138385f4a3 -938808e973a6659029bb687b59eaa43fbcae2a2e74bb016ee8d72d8613405d42ac70feca852de0f893d4bb4adc1863a3 -aa8218cbe96b0bdc34cbb8a2db83cbb89cbcedef8732dc7a0e96518d5b26944085a25175568df6e764761309f0307b5b -a72d58e059451683dbe879550df0414548a71ebb09afa92c611bff46255b3264c1a08f80b73f43295ff20f2cd985afba -8d31705592483aeb390c6dbbe954cfadba4b3c7bfdd41c96fe37cff15e5f05529c55c4c7931f19a8c5726a8a93d4b74e -830402323573567e4eebd3a45cb4d920bc4aae9ea8d6729aaeb98a92d408a24ff6398cc8b8f45f7260f409d5f168fddd -a2ae9b856cb0bd4e07a55f3e6cbec869d5301b3594ef788d0ee9bb16b2a51feeb4f0b2c0ebeb2d7567732af68a545c11 -a37f593131b6eeea297a8b4137d4d7d7f76104f6e389bf506b1d0dc5f3decd3ac47b641ee105d52fe93a482bd8969505 -a596432e4085e7465d033818f362c01ec0e0f1489beb44032e8e2a7b22c9eb75781a814d22910bc00f23c4945997e2fa -8317aa4eb78107316e5923ce628b0ded12736ec1a4b99a06911736e32194c14707be570811790a053278bcb58e4a640d -b42002173f15971db599190ba89c890ab06d0f1f812ae56054b4ced4037c71cd44d3b4a05e0b9da6140df6b3ffe37037 -900ae3558cfca95fb570140550b75560adaa3a8c6a2bba0fef52e6a0858f30fc8110e8be24b07b1677d8482e443d368d -a03d4c296e6b318b1be1929294803e95eab0ceca89d6edd7a3ac0eb599f63ff61512545d2f2e833fc4330ade64c6f367 -a370791b7037f9272847ed51674d7359f085dcf3be4f3e257cb58b33ffd61241b634092dba99778e5b7afd45d4169503 -ac158ca0e8e52e03a0ce1cd71aa6d5a1c523450f1946a7387723026e62537209a90523be7a3e0fdb0e56dc0f587c3a97 -a4e58e394382ae1f54c2ab3a26264d3b9eedb3b719ca9b67614f0c71ae6852e07c662f55dd89955b1513ec24c30d57f6 -96240c606e1373734cff4537cd35ea3b872e10db50e6c1844292e8f2dfc13011c02bd1fde7b3cadfe0b0365300879b01 -aca2f4b0b4cb842361db3fea6732c5abc7c86b35c8e17808821ffe46601bf837d4ad9bd4e2d63096728ef6abd197f660 -aa5db011966b34121f6e646ecff340037b8418e8fe8e5b3fbeb5d41768f131ad9094c894c570f5610e61d1a7fa0bbb22 -8ac096b615435701dc7f5909a750df7fce6d9c5e729f64f5f87cfb983382c908bd82084d07a86cdf159945015a619d4b -82a45567195020377eb7f6997ab38a50b3b0cfe015bdde35755e1f82b190a6d7658180b541e5b372f5fcf5013c223e91 -b4b380fd0166d4b149132d5e03c77348d3c24de2ab1d6ad58e290e0d1a64366acb631254c19d40f38acd6287adfa24d7 -93004a44b6d837b2ba30e6722806a6f9a135e1bd08e7002f1b1e00e3f167039e0f9a4caa657ff5338db1a3d42b7c51da -b34996beefac26556fda7e841c80a0c5b773b7058e1dce5d24a6f8a9ef676077725f8ae042cd43bd6316972fcc74284b -a2f361d240f71b79bdc9d6c2e4a91e9c0acd2e8c30c06b3361bbda2cdb2e8399435487716ab4b3347f03ee169bc292c7 -9840e4e8aa479b156871048c4efefaf9f76e4b74f563050ce27072b0355ef8d2ead55fae908b5f5907e66fd851501078 -b58988544eaf6432b60fe4962dd107baf1d7ab49c30d73f8fef9bb30ce97c2208bd60c6fa38be450ed2f33e6aac7a2d1 -a59fe4a4d54760e6e4ab783a9c06c589a5733ac7b2a91fe55f3b70f9c61c93e705b1381750e714ef21a6c62af8bf28de -8f9fd78d6827a073ec3689ee4868e98d4cb9fc11826950b858d6d97e9133cb24c1bc9cd19f80251301c5387b72bd498f -b769d64a58f3b33fc90df5596be30d34eab62dc82d371cc859b1c457fc2c394456eb78be1aec2f3c5168ba7dcf556519 -898a6dd63488a5b79a2cf5a814216860699907ac8c97aadc2c11f81694250b88628e88c24a34dac5d2247993615f8b71 -8763629cbfd47e64d1717999075a6098cff2fa31e21cfdab855cc22929d339516d289e1af042be47e7d9bc07022bbfd3 -95c023e3fb832014861419394da3b9752ad27198df056f56410bf1c2af3ec260d3f156bdf63868203f70aef6a4d69615 -a0c265ff406c8e52058353d33c0e6b51ffe352254d8162fff65dd71bbd6d408d4e9c07e9ffd4c6cc789a734f8aab73a7 -918403559dcd9d1d571bad020550d123b4c6771f02d64720be3e7890946cec25e5537b62d905ebae3fb51c70033c1cf4 -a5590edceddcfa32f0b83ec20923c5fc29bb8351741fadbf0e2b33e0cdbd7164fcc457b1582f924a58b0cd14b2625a4f -91a3d228f5449c6179c7b5cc7fae5a84cf5f9e633cbc7bd67cca33fd9358e7119a9d6d497622d0a8ba1978906cc570a9 -a896ccd7d373ff4eca5915e957b9fcb9f1f81b86a3b815466dbd684931a0fb7dcf77a335ca1605e6b3f40f8dc6133048 -aa4eeecda69ae4b8dfa4577d576f9c8504598b2554b918b6607040d3e2551bfa3acb513544e910a563bcb3eed0f6bdf1 -b5fd9607e0a18daf2a6cf189df03ccbdf380609d4ac93e7bd6a41b68737dbdd1da22c0855f0f2b86763307baef3620b3 -a881f02800149e2d0722510e8bf649e20cd95b848a6bac7c51424404f65e9dab08a76dd171d60459ad8a19766120db41 -8ba340aad01fa1db841eab78ccceb0a307a9075e73fbb942e3a3105d56cbd5f397882e58754312d3d5d677134b22b11a -acd41901b371e3d6e5be2ea974f5c28a85b2745dab4a45bbe1a1fd5b257a1249c266a27a8d72613d93a27a305318d86a -81a335cd393d400fc048e9776237783f330594393eae51003abbe6088e310897b2a2cef8ab41d53b9d1f035a2822b587 -93d3023e4901b3a7afbc80a5df6bb68037eede3a24da9526a5dff7a0343376f9ce37a791836d5aedebabba1e168f2b92 -afc6eab7d3be7f840f84cd377ce3e727232cb7e84f09b5b5c958da7f58f85dbfbf53fb86df0c63b49faea485484b2f29 -afbc391cd89945d65f8fbb9fae653d7eaa34922af6e50febc4b9f4c1dae93aaeab58f3fb7b24771c05cd86920f313f12 -803ca45299970982d5e8ae7667f90b5ec942b8537bbf947c4693411c2be55e9a013e8d304110739f00a3ceb66b382293 -94bbdd9d1d137d37fad717977445c2b47cdab7545827faef98767c6c8a3981e6e265f743f6211e69acc2daa02bd54def -b8437af291342dac15736f6316e1a416619c948706f43a35a2246f447de2231b1aad10a6b201548f3b3af5d2b69251e7 -a54d969fec830635497d3e5796d9240d1cae0fb0c4cc64499836a8699be55721a2b14312b307ea82de6683f049b5aa3d -b05e974e8b46cdbf532df990eb2d5b63a7706fb9bed3e36937675330289cbff5151a227c8602ce6dcb3dc2c1e066e4f6 -b5db56d1aff8e5edc041ee7dcd5f38ff5c40069c1c2ff4319d9df24bfcd0013161cf3cfc1c768128fa75ff3627f44eaa -b222d049daaa343c282f65294122689fd672d67ec589016acbf13d21cb996bf6be0ce02915b373c1b8a7e5ff84d57410 -83dbffc0fbb585179c4a7c3986b67e7fd6eec0db319e9f3f41b22110bed89d89e30349363135e9c45e99fe326a6db175 -ae9b64c78e620d89ccedfb152f67c373e23df79650c334325f1c9d465cdeee6b9a7d181e409289b86c3dd863eaa01b2b -a244db98b50b6ae80725964ce432b8f117004a1cc50cc7af5cd8d03d4f53095d6ed5515e63dc2a53d9b5c0bdcf0c6f06 -b7b62e68e502bcbd66b4bd40c8cbf96b7e97b4388169b72e0da7c162d89130e244a0b22e74873a73176d182f4401074a -a984c5a1960b4bd4fa6d215f9d7a10154d95596b4a919841fad48b5de0a8921aeb7140326240b3a61b6d82a02915ed9e -8ef36c5e37422c43616ce746983a4052018ef98af3370c629b2c7d6a01c2826a99a1f44bc6a8edceb5eed1770e4b2a96 -87ae3161cf5453e3d4e51fb335b3e576a6ae7e5a681641268e4ea1dcca24757a311b31f2381cc55b58320e4c56854237 -aef4349a3e2bd6e9248dfb1b2020833a81f7b29a615a928c3629f5a4e6e47fa2aa502756798b90799b3d12cdebc40c5f -8e8aa1c55aaaa5437e92681968208f2f0c809982811fe0e7a6a7457c5cb453a2678b3b74e898ddcb0c77689b3cb3faae -838bdd057cf0f8535a73bf5309c4c2e9a2239b44aca7b7fd00eda5a485ddc8078709e64f5445b27baa0f9e7a67f01875 -8fccc1ddbc0735a9b64fe55934301adc6abe9d3558555861b5984ebced26c69e477672db0ca32e0c6addbdc106735b7f -b3a19ff36301280020886757f811fc507bc994a9031544c17ec672fab9e85e179572345c6b39e8aea2c180371d198b44 -96859072913f540253b25b4355c23c2fddcec3b3282abe5f3d02e0a759cfeab4120e0dde4e5c734a26bd4efa91e90ad1 -8dbd8e8ef11d529a346da1da3395accdc57937721935b69e45efe632fc7fca5ce1e03113a5dbaf7a1794067154eabd03 -b4a5782b4db5b5f2d1fd431472ea60ca8d1ede74f87fb0d247b7ea312ca316c0cbc8389b3cc2b0ca6f0a80d0f39f4f56 -99923e21d180d6f17b9f10b4d8875b0197031ac75457c1296839498e8fb3c787d12da2c78f4502bb2f9f6d251a2a5ba0 -810058558422ad6f0ad8dc189f623d167734215b88d1e092bd2e49d8d2d4fed870f6b7695345798abff7e1acd87e25a1 -b665fd7132875c917a0fa7bc8179764f3df02b8d2a7df539ada02d4ff8e75377f3db4a3435055b6e0d660deecde1ab08 -b02e3abb9175ebdad4f1ed140695612b67e8634d58dc8f8c3e87ef7c96a741e7c8d1c1136a1b2574fd91a77afee77ed8 -ae2d87c2ad90ea25aeeb850cd98ffc1c5e8c2b9a16377f1e2198fbc510193a23d53848b39ecf64dd46a6cd435011ccd6 -8e6216bd7ea092137f8ca97fa126c92e8d5b660b92bd47ed1166ed7a01babcba7db11f77c15914b81fec9ba3a92e8c97 -8aa232629118b0b945699e402f4e56e65eac6f2ecc4f7547d3537e2e83e36a8a57b3c55080d22d2a5e3a1433b67e5530 -854f384c7ff7323b7bc78400f0f23fad2ccfdbc583f173f7250099335d209bf95fb88c106f24d094c59025158b41141e -8420368b4221d0fdcc1b855728446055d636c0e7ab2c41ed72c4ed44171cec300bc9d07c42d6b00dc2933f18933964a6 -8f917e6ac546cb79a13a25edb71de01afc8c6ef6339c0ed2bd99c45ad2ead42207ae5298d25921c55649e42643242429 -b841a412f2198d6a55ec27b8fbf5a7b63f6aaf66d18afb8a2edb93e4d1c03505a785739a0fcfeced96e30af988a6ad9d -a39d2f86ea3df6c0a71e61803f6a1611b4a126f1f2ec986948c34771429a90399c1c9f6495e8c97acbc0c1df56ee2242 -a0289d0c001e9dd9d324e856ffaed6412fabf056a093ee2bccb7ecab7ad8bb4d0468a717f119c889a5fd0a0ae4079e77 -98063963c1fa5ef09bb3947040b1ebbf2fa47847c3e306f11aaeaf77e13cb7d4c6892e166ff20a88d4378875710d4d48 -8b1443a196869252784c26ed092841222af89c4d36f6517e33df0169137d4b0e0b27e5fb3ccf16fdb0d4c77f77e5ec44 -b37cfb13bcef2b83014be5e895205260dbc328bfa1e0d5661c89f017fe84757d95379d9015eb65fada510d8b766941a4 -b51a9e91a25a24b7e4f61de78e54c3313f0ca5f2b62b1625cdedb784bcbaf383d2ac38a8e0d2828d8431183a8b476b2a -8e120c604ddec61675cf699ba9a59d435f8392588ec9ead4253734b489c0d3b065804579c3e3ef36e502cb0db834c352 -89a87bad33d3147e610dad3c0bb9eed97d46c062d3a62574eb0cde05cead09e4cf943b171303e0de7521677b299474a1 -a125a6c741156e635a9bb84226de5fd128e43b67a3250b69a760f8c05a2fa08c14bab843a08a72496480527c14683197 -8c32ef72c985d6d0b6aca2d18f6588e910a1f6b6d69c707bdac51d6a7c796108ca8cdad3695d9640c8560d1f9ce9c571 -b95ef06fe08e01d86af5003dbf5e2d3f633d3421d5531c4a6c769da958163bcfb4d2940615fb37e9474b047b7d541a03 -91a4934bebab72f7090cc3dd94fd6f9114b0f17bb8149f218e18680cc22887bd22adf3d6acb983fe03b87bb68dbd53ab -81b450896aca89332a0bb3365314d29aa228bc39e8ed3288a58b6a7468db3915ea5e2be0ae8332863bd5a97c062b7be4 -8de03113af62b9fc128aae45fc29bd49f8137742be455814cb0351f43cf316df313ce33d6963ddab9d5511316201434a -8c431605c0e09a583125d6be08b3475d9cef5d78e83ed5d8d74f6957c474412deb2bf18957b41b447538a147a75d96ef -b698b1033b4b7677a6404c1f91d6d71afe48e85ccdcfcae75c92ea119bc7e166a92fe0a89dc4df83d8d73a10b285e980 -aaabad329717f3a0899098e750f4272acfbaef68db41e3af3ee3ebb24021233660cfede0c0f4308b0059d0a222bb6b41 -b88107f155f1e996ed859b7dd9571e784f62ffd4f93e420fde4df5128222a2ee995ab634089904aabcf9bb9e1e1759ba -a094e712a8671963d54fdc10c97c3f2c3dba58f58c8a375a174242293ed7ba50069000d8871d3fc08527e20ee46976f5 -927030dfdfe56634aa8003811ec409ab1edf7436d01bcaaad7d17bc7de55bca29ceaca4a556bd20ba9aa8089efb846ed -94d43222a32cb90424d81a31e61ef3b0ee624efecca23a64d68ef79238d36e8e3942d96dbb70cc9efaad313fcb79c6ba -aa225dd0b39ace4be104a0f2fb73973eaae7de46992e529ad7476e7415924fb936ade4b9f5a341bc9542380bf48332ef -876a08d3201ce8753e03d11ffdd6128f9b7503689f82ecaf7cf49096f0cf49f1c4020976c77eceb5037041daf1a88533 -a3db02726d73d8c2d85d9e5a740548885098151b85b4ad566b1168db4c008fefe39c8c19c47ab8e2e98d29cf2e0ca6db -938e606ab19e3cb6c4356326c80a06477b639e4c999a0c8a2af339d45029e73273416bd681bff963d58eb0d51f6de2ad -97151d15179031d52346f0ce34a20bc25fbf4bce2f22ffba3ba3afb94d546d9104c3abbe5a9dad056b73dbb92196a552 -aad246d39111771450cf05e0dcecd3c157d708f48b12c3939541ac67159dfe5526542b0fc47ceab2348014b6463462ab -95dc539b8402b15501407cf6bbaf7980a1d5e5b3d1956f3207b41a88205657e2d68f79678740e8882ef42027a291cad1 -a15a0e7d2196e546ebb0814cd655334c5cb31ecd63b5cdf3e25e57f4a349424cc9b18d4bebdb4b6ce3dd5bda40afaf99 -a2516e8bc63c912fc2e1b5120de4eeb8881ff79e3e76069871a97850efdccd98ccc33700a4f45f4df5fb1b7ab48708bc -8b3d59585cb65e7cc14d2305a339855bce49197490fe011d6c3d7e53d08261c9cdd500956872ac795feb7a8069db5589 -a2b38ba575e4035b6667f42365895cf623ad0deb8f9034d1a5152a0a0f92bc82a088aa6df531de59d2896f17ba107542 -b40407709905d2bf57072f48d97bf616e40761cfe063a4cf46083ffbcb5bb7b4f03365dd5ae3154c1b03e45c41eb0188 -8616fa00c0157abc75b34106fbab547890bacd79f2f6c3dd0cc57d1778234e98a6cde96876b40d2b1b5f41abfa1828e8 -8f4166998dc11be96d00067284b17c5fd5955612bfa778e27136e59e2f50e617d1350f5f71ee1e4fc1267d1312a67482 -b1cc89014ff795080e2eef431f3ecfd4996c91221ed9b2162a9ddf6bbf080d676d00445ef0ff8ad638a5fddf089bd760 -b449e34036924ff051b5632c65bd17e86063c684825df23792a11fc86cee34c04b7f4df1e7c03e626310e7fcbd1f93da -b9c43a3ba4b3be883879f6edd1c5d7042152aa41350e588339093423d4efb4e3bea017269439809498ac87f2794edefb -a7af51fd781c16cc82669c814327bc9b27f730b21c774aead773832b39721d3589a5d16acc302875e706bfac404c3ea7 -981af4e16aed2074d7efa032826e6e795d41a3814b59ce2b08011e26b72332d5259f50c796e1bb6a9d00e3cb74cafb85 -8bb3b5d865cca60631534122b2af336f85b422d802e237b68ff32954856be165d4aca1e9524e15001e20773d93dd6b4b -8e3507b98cdc1f764222a9a3a2b1f1c5629134b9927813b63f541660894d12ba6c7125cedbe2df65506ce5613735af83 -8455432e4e96d5c66f4511d7a8f9354bbea9cedd5e841bc6ec59c8366941ac9653b54fc1e8f0054c1bee8a845f8a6a2b -91c392d9edb2005daf49189446ed05a06da86f5a8f98019afd0e7265ef56e21917cc5dad39a2974f538b465008bf1c8a -b04e185eedacb0058fa60261d0c6eda38799b57e26af75865ff986537bbd71af40279fd3ddbed5784e9c8516c46750f6 -b8d711015205854b9c9e132168920da8d305d832f8605b624d6928584b6b129b479825632beaa14aee0470265030ae50 -ab46f74d8cd5eb76b9692e9dc17d766fb9cdb1d4b5150ca2a12104e571eef22589adf6cb8f36bdcbc197c34e0fcc1669 -a64868b7d4b989dfc4b203fa11452c1508dc2c5c3ab70b05553053177a4bd6911f514f654c8538032ed5f27eae289328 -a06eb8f5cecdb2f22c51ae4d116b24b2ba3d1ae5ca78d9b6e68c1236771638a14c6f658451a82e0308ba18c944008b2b -a062c1078055b84e7d6667ae319ee53d5775780b53ac6d0e14935726969bae506d4cac567d61c85c8fc7ee49fd15ea0e -af25d65ac72963d2cd704315b2a2644a28c9babd8556b336ec92c2b3858a68a6d9287a169aae0beb3c1b3dd823457dff -a299af91ca6a99d4b18589977a187c60f77a3969a02b198aeffa37e2c31d97da221ed2c118312c7fa4a59896d3f4355f -ac3a2bc16a57e9c31287ae506eda9a33da5f6d2d332c3c11e76348b4a88d6ecd8180c23c46b5bd2f3b6131ffdd9a89e8 -9513ab2308945d5663dd78b7947cd7b1af4069aa8ee91e78ffbc59761bf5addd9d175527ad071613b7309727db6ee230 -a6caa49518386cf727a4807441142f0d4cfbe1b5af65b1a481db3a8567ffca87592989c8524e6fc9bb17d152fee1ba98 -aeb5732d108aae10e7001e3975572a7011b3dfed7896bac60ca20fdcb6987ebe28029b4cb88c0c0e089b51a9958a8077 -aa8bdc59089a268ceeba2f1ae72d417721ba7db13831f3f8459f5bfedcb13cd4215db8e95ad6bbbdaf6dfeb22957ba93 -871b8fbe47c39f588b39a83be5bb638ca40d8b67f28c86b736198063116bb21ae7307d074c8bee09af5bf8cdc715099f -a0a63df7079f4c8b1ab6f03f6aa2dccb66814ad0dd8aeb9bbceff49f8d7f128aaadff1ba9423789609145b0d8c30ee0c -a37cb4b8a4ac21b98e96c2e6fcff89b858375ed343b84fcc84686bdd34325a94f694ac778b04b2d1e47d8823c50c62de -b66b6b21fe5b8c2770eab015b9fa68755f9ecf191b71601abfa93b086a39c2519d2699b27b972ee387b189217b4aa20f -803b6fe1e211e81ed598bb6bb71708c232c4ce30819176d1f0871865d2bc2ecdd910a67aade9b90dd43c4b093f7d3539 -94e82e2b330709ef5a227130d8303b9d8dec46ce62c7bb98cfb32f6237532ffc779388651cf9225b15fa9d7ae0d0cc1d -ab6c97a5cefef3b9cf3c24dea3606e2a6a779781d8844c01ddb84bfa170dfc17b9a1e8d3d9a94b785a45d869be6f6be9 -b44c2a73ef924d9026b9671ce54eaa18ed04a31d4e208cb72e781c6c6ca33bf3d0719d9783eb98e185854a3c1845b646 -a1102427966a4c31d79eee110307913c1474abcec8792dac7beaf00c7d1b8b9a9c4a1b6839c59a4662c17aa74a9ff978 -8103081fb9da8266acc1389a192819788b617482b5bad78a4ceecd9d61eb7d6d422b9fb96a7701650135cf53b7b02edd -aa70eec19373a104684f75a2f0ab9e04a11758e7d8d084ae7c581d24eb8de4e730ce602233e39e6985dbac46b5b31d7c -83ad5dd2b8f2d40a40747fecbb43f3acebafc401b9152c1fd4d6dca191feac67e772a3255af530d6c077166f87095129 -9612d53e783404194122b28814c30692848a8df340e8861219a7ba3a68d48135ff3a17f16745c4072edcb398100932f3 -859b45780538ee93ce7190bf44fed0ba3ac9404126825b5df7205f751734338f2dbf67ce77ad44f8cad2feb3198a29ce -b4d08630a1824e38ff9d2c7945224dbfd06846724631706a44e0308128f8b32f848094fcbe0d666ed0b68b8877e9768d -b7024a8522e7b1304e664ff4d994078d6b27409503badfd93b6d46688ee87892498aacb9dd7344686eb7ecadbc008135 -97fd9728c81d6c1b397627f9f2b9c2d325e8d322a2548b5145a120a2f982721d108e67744dbf7480d69f5361f38f1094 -847962abccdc4058882a6191c367bf6b1740008bb0bda738eed9e86e3d4f8c0b9a7802282b098ec89ead52946dfb6c91 -95f269e85cbc2eb22c964d25853dcce972f4cab07e17dbcf5c378166e7f4e59301b45091ae5db025aee2f7ee98a11440 -ae32874ade98cc4735f496d8983bdc40a5afed1925b5d5075c3d762653c8412c6f350b937021edcfa7fd36fcf9ce3807 -948baa72a58c7356278535883fb8d8cd53a302601f24a517fa2bced64f013064b3df50812e3ef1520a89e0a2c5b6216b -b2b366f316eb4e01f42cedc02b55588ee588248f8a76399f4576cdab3b0e7693c283100f214f36f13840dc552b30a1c8 -82143b825c11793a3352a710ad98fb233ba5ba5fd7f747563261cb7210da1f0b8b5820e5f2a32f805eb71bc60ca4a802 -a00c9ae49dd513e76bf683c9a08d144243593ab3331ad9d15bfd2046eb0fd9b1b030d3ee1c7596c02124f6ea8838f5fa -b63e46e0f04719f11b96ed24fc78b1436c2db43b609a143a396c17c1afea68c503a06d040c1bcb5bd658d2017fa4cef8 -80ed42fd52c5147ff899b4f6e0006677332408ec6206c9823286af51aa21e4712f1053621d1db012f9ebda7d087ec05d -b2ea32bd02856d8f16a500cf516744571a326be577a008610aaeefded4e66848ec3ebd3c28d677d49da7055dd9dac3d1 -8e101f8901aff8b93a55827396f40ac816c3bd941e0c4a16a6a524c10657b99166010a6db72e4810583abcd61124039e -a025ee88b7506bf580e3a088d6e6ba9d987811671d82a8a713149d8766cd9ba6876cef464af3799d117db61a69121578 -823274ffba3fa98e6da63378c8b8a7f126e6bf398ee58c3dcfda9257dedfaefa64222b4e30ba56a344a1312f59be0b17 -b60341190dc697e7eee593b8dff04dd5450c86fc7b59ab4c95047adeb66f550373fcd3d0a7e92555ffbfb1467fc813e0 -b0a873540769defedab58adfb094442fc20e065ad29d49303e7a2e755724d798d6dcefe226a66ccf9211f26075618cab -a4bf3b4eeda02d170628acb15495967635897cc58e6805fb516d95b339fc72e01bc8c3b74c62b22bbb65c488f3c9a315 -a4fa6be0ebac0bf5327e87d63973ebf44d34763773eb623dd40a9ab09a8db4b49f6bf4acd9450bbc4a790ee8b4347d48 -93657b37b155ecf3282e68ef8f62999896b39d8cad4a0560a24ebf70f68008ede12b68dd7b70cd3f7104e51b903221c8 -93c33362bdb8398f332a52aaa3394682505996a8a0c76e22c0389be56915522c58da4d1583af137b417021d26dc3d84f -ab338b0baa7ae9a75971b6750cb72457c1e918dba3fd449a576e1b0a9dfdd19356c232aa8f737b212c21831371223fdb -97043c53b0f54ac81afe3c67fd4941dbba0769b9bed718171492afc07317271a4c36b591cd18f057a50e4c7527320109 -82c54f2950647b52c649ec7f25dcccfd71484c406a53a94dd4e9e63758ee2e559fdef8a4560ae2ef41b08b174a131761 -b35b2adfe6fc1be668745067f485dba3494f547d2603ff28b06fc241d48225a11c85891f144609337d2ebc0713f6696d -a837aadc06ec942edab4116efc246540ac5db1bdd8981963a7462a2bc3f9397c4c634fc8c8789114cc1018fe8beb0585 -8fe5b4a7c8bb42b5ce8c401f7eeff20c034d83ef10d6e1541fdc135d389545d731258f42ec5e0d30512eee4aab053b7a -81a42ec920b00761093bc856cd630e117c9ddbd7dd20584990d91e63f972073d9588cd948141fb9d6e9c7b61174ef4fb -9805345e5ae2a2bb90bb9d058f01a2a7db6fa574fbed6ade4160ed9dd54d08257b1284cc4b80573a8f620aeafff014d6 -96d085def67e05ff835d1ffa00862b5f2380119ed272510da798492f9d5321e1cb5fab1df3202663b6b751d42138ca8d -82390dde45bdf7f1595025f1c272daa8735c2af90f55da415c7624513982067ee77b54cb46936e1b583556db1c260e15 -8b793c439afaffef75d891d630c2c3bf2af67344ee02bbd3a3f80d02898a7b54c1f0e0527713422ef3270a1b7a32de9e -8842e5a3ef7877a42ea39e2b614f7228fd77442cb125d14ef9ccb6fcb5ce100e7abb3cd34f009d741beac6015886ed4e -b8a00fca614badec4996098428c60620b8ac7c41e3a60d33d9fb5efac101d28d5f38601c1d2cade8a8762f12e5c7f293 -985262af141e2b58c4c6ad685e9b7cb0b85195d183d7db0d7449e42a5ec64e7f2a078b49190ccce4b9c9648b9a999cbe -87e4ad488400ac73a47cdd477457b67b2d97f812917cadda9cfb37d9b03885da94d20eccb58a61c772916c0b5591e71a -98795f653a08ea25248544bcb113a16f13c36376831076f9b153ad6deccf07683a3db69968065ce672414aed53539852 -89cbcfab11dbdfe1699c2fde2ed918599e862771b7b866fecf903bda117a6c70ba23e4edcff84535f0177e7cc070a37c -ada23420b0e5be2706e4446208589a2647e59d1f3b072448f7e4b04812add50dced41c7e41fc1a97c60d04c7144e5324 -a962d643ed5968de32bd6729c56ffc6a6f237221ee9952b28b3723179f6308d053fb484d199fbe6793a9e6fa16187cae -a2ed7d506f146158d1be02e9a37b85a4462666d9332f45d0eba95e87810f0b47bd219aed4e3bda0e456e3784847e8ff4 -8b003cadcc9e7519bbfff1116206d13ae9e9ee258a7780fa35749e5fdc9485e934bd7559438653d62031afec801c8bb1 -8676eeeb2dc70760196b1313bf6a75aa71cc692a64c1d6fd6f6922e26d4520bd302f17ab954bd4016298e2bcaf91316e -af45ef2ffc35a5f8dae6abdb373f8958ff975c9f7a2f74ba1545c2f5c8abb3ef2a997818f8fffa0be760016d3aa19cc2 -a5260b2c97ca579d72c13daa826cad8a9da4d5902443d29e60ed67203e21a7fddf83344dd94730e8f155aeb65df4e480 -a19267cff056a022cc8d0af55d41e78dd9152069affe22e9fe9d9dfc848aca4aac4909103b35300b358098c36456007b -909eec06302c81ad6bfd3b96daf577456d28cad59bacf933fb0139cc6aceade01a686015d2cda20d25c778b9d00d5355 -87391a5bbb409e0fd6427b6dc805b69120181e34f53c73c0ae11e0521e97e036d5b736250f95c8ecba37b7ee27ea20a4 -b821e81e4f887d5780765fba9c79599b3fd74840d7c2578e03ab8859cabc982f4fcf9987e757a150aa81a000ca3442e6 -96470df0be386e1bdbbc94897386f22da7a80df9724927363142b074beab1bc16caddfcb731787b18b230becfa7ab0de -b7d1e2de7254a18acffdf6c2cb50bb23be3030269a230b1237a0bdef1656875cbafd8736b6ef07322c20b8002e9d8d5c -84e795c3d85b5f526766a32362c6f7f2fcddc99e89734c99929dfbf020d04f285a4f44f2d0a4a03b519375db43fb9f89 -95bf0f2965d9b29592c2168c79957db4779c9ed8da7ce11da7eb8d11c0fe165f8c37a38baa398af78b8a963f674282b5 -a6253e4f2090efdb5c26c0d50fa5fd2333e8f245b68ade9d6fcc6357ae2c6fde5cd0d1c6e5fefaf102ac8ef4122ae238 -b2b8692016f5fa5dfc720d382f0fc05f37c5726087198f5f6fcd6dc8105bcebf98ff819870e2b944c23d6d4ca8e7e62e -af86a8f6ae1838ebdc29e2d949a1028aebf8f5dc7d2e907396db3d112d236035679fb2e0fbb1a49453ef120cb75bda88 -8da2742e7215e490e38a0cdd851e95ecec258bcbc0f5b49e9846397e3062dbdda8b5decbe22c7615a851928326b26ad6 -8d266bc0dfd6e35dd975fbcf3eac55103863fa3f62c29f12c6f825961670138aacc1c89829c88a8e1d3caa44c62b5891 -a40bde477fd236c36981b8bdc3191d70f01fedeb99a21a525ba8512eaa614290feb98cfe9351fe39c27d12020ef46100 -b3856656a88647aca31dda0260a6f7308f7cbf7dc93a0fcfd81a683cee5a008cfeb044d0688022da5f8fe52e7712c742 -8dea06d82705d27403bc89cce3cf99125709d6baf92aca6f40931cbf4ef1346feafc6f21207b897416ff9a2042ccf127 -85852dbafe41d671cc0c5014a6a666b933c95f831b4edb181b7460e6780ee430540230c2706ee6e1fd669bc9369c4421 -83271d68b89db416fef7ab75c64883732be779cdb7898eaf7f84f9756b006183c454ab99a1270661b93347cb25d5ec59 -8d2ab5e538c44cc5a2427e367d3d2535964a95185f0cba457377b53b9079f806df0a74c475543a80d4397bc60ee36877 -a966f71621491a0db22379473021d8157c3173d9ae7f331e076bb51b6d5f05b76d04656e702c78efadf71dd24e844692 -822f5d8b0f4f19f98b52234228a3a4d599c5391df1a019e5c3e69ef5fd39a49c396396488045408ca3f83475f5a94cf2 -8cab4eb002432c0044e0f1da2c8313516dc57913df7e7be4514e9283e759bf3e0fc67392cc09353d8d09d49a42b5557b -84db5c6efecc833af8f4748f1c976f409faecec916fbcad97a4424f0f018bdd837e4411285ee912c217ce4f8b3494eb8 -993128e2d935a83ecd7ad5a223fe53c7915f8b258ceb680df88a682f3abb87edc922a4f2f2f16905c3f493ed91e1ec69 -86db3da05f3bf2f21aa3d6df245f35023eee4fe1df6f83c35ed060b17b51b5d88db0597a65ec6fe78f2f0e429362eaae -a8b511e358d9b7f1211c9e54038540871864cdb5af32f7dfa53b9c042a8443b73927c9d42f88c3e19574e575feee0a77 -a3c8cc9ccb1bf0c3f38b147b4c060ef3c25e44524392ce244bba1ce3fa90d2b97f9ae61d95b5fba2428e5ff85a7a2f50 -b2fb21f203e07478b7ab94bbb22d1449567e52e3d41327d2a6d140a70a730eeb22b617e22882578bc228d082205aa5e9 -b22f61e7ed6823abbae7f7afac5ccb4a0265ac5e44ba0e362512917bb99a19c29ef93676af86279ff0b1c1e21b767970 -b2b212cdb1eb680d863c592f9d18e907677acf0bfe0b1cc824ac67cc0f9e8fac383bfcef1b7553e654675388509a7fc3 -a5ebe9c66cdbf144dd97470199108e50110d24cf1827df6d3ec4c15ebedbd4c588094a66db761980a5ae1de0bcfd0153 -8175a28a961b033467fc010aea4d6401c322c17b8e50d682428365b34f1edf87e80b9d4e83e14351dcb58fdc16d4785b -8dda8c206dc3daed2100208494a2f74d5fba3f0d4157ce8260d09fc43eabead01ffead91898af37d6330fb1d6492a3f5 -8c97f0469be2c1e804620840f2fb9add5e169f3d9a515054c4c257a633f71a2e2ec28b64167fec1b25092d359db7919c -98d7e6bce9423142d1a75898a5072a89fa2ac1cea71e2ccc52421e84d6bfe46e2a827e053a8ff1956ed87e554cff5ea7 -b37a7bb826efb2c71ee980127dc95c16461efa9da85a1af5c1f07a05cbc923b571f31812513e42798db148534302c2a4 -b23e5692e57914cdbbd48a40d09193e8de74168d29e44eafcf93acbeca3f4d38946597d23d0f203484b6ccf26fe0022b -a75e05a667d03207bbc23699af1e5bfec382654417a67cb2ab43b7827ee6270240033624dffcf522e77f879b24c8c51b -9082f568c7dd35651afb5b3a4a7fca8aca001168337e0a372daffea34693d73d582f1d39b860276504bade7088aba905 -a384f338360900a0c9676d75b4ee56b1a52f615a12cbec40ab9653132668fc464807d38069f34fbadde6fc44b9b17858 -99630818df6d307a9bec472a8bbfd59ef0a718aa6d6e1a0a9c1cce94691bcbc5124522edc0187f2aabce454840d3ca05 -883b09861a544f8b36a69aee91605df08ff83810d5a01ef14989e9c6d9983929f3b539f67887431729a3db5ecd8e1ffa -b31f237af63f7bcbdeae18a43d2c640e8dd33c31e404225e10af733724b9a80f21ce9958528a30cf8fcb0fedf5921056 -8a120f0bf0c1e8dccf5092f8a3413fd81b30dc728dbe0f67768d2152b16ec286579c9fe0614bc7139d5c8f85d4542517 -b8400f4d89d747aae0e8fde37dca6915ecfa64c34504351ba34fcfd91886fd670944de3d5169bcdd95e7271ff67f2a06 -ae3658b2af425966770203237b34fa49d429898d82ecdaf685e2f82aaf3370efcfce31b5504c9109f048c416d4239b37 -ae3c26c8c9efaa1dcf33f5a2d9196a8e8efebcc7cc1f77d792be45e27c0f8dd7280474f4c87be9d0d898587eba6b5074 -8d2ca62a71717b9c8308af1b2e7642df12e6dcc20b6b83ff0e426839e9aca4b82171c33b86dfcd10e2f914a4a2e27111 -85c4564c09f5ad99ae5f51f587895e6a5a06e5f513e57fc0f91609ccac4055881a1009c3c45900fce6711dc7fda9db90 -a1dba47ab222520779e91c024250e3e454f7744d48c04c809a07991dff72794bf5990c5d23bc82e441e7d3917fd6de5b -ad65b935bc07538780c56b735460bec2e647d321f28ecb20801ff313a211f003a4e1f9d4b094d0c66f238cbe41f08431 -a9c322f6fcd5e831f10be7372b8be14369b0333f82d87fb444cebafe6cbf90bdfaf2952b7a310d76831436100a625862 -ac5706f371793c45162e72812644293f491ff3b9a974a025c62cc98689e801d25c79f3b072fd62060afc0d05e07ef85c -a9caf447df8db5679a3e88ebe8aa8d0005cbc9a1d0378817968e44ffd55a23026672e75eabc20e7739e727b98ef0d377 -b168a9731835b5d6a0b7b0771dc6776d3acc079f114a60912820f0c5ebb705c465452829702a041f6c9bd24414f94c6f -ae5eb5a2b9ebe9131e394e9763108ec279777ffa1a6f5b8b6681dad229f20a9c1778f23cf72d1a24a753a65360213132 -9563d136dc234ff6eaf46c0630a163414f1f4c37d22448744b368c15f77ce11f42094b4b5e49c870ceeaef3424eaf89d -a39f563d3ae876eb1629fb0e1e5173b096da74b57972ca630fd7d40462a9abb14ad34496f4fa8e4dac6ffff08d1378b3 -af9a1f6040f8936f3af1b3ae86efb09f7433eef92ef04527a7f960bf07f091cf54b7d108fd7b40b3a9052d5be1061ff5 -89ad6c6a1bd71a413895672fb29eab7ce146e746778dd7eb4968f551d57467e16e1f0ef73ece16db4abf5eafd85240ba -87a5a23d2866b87785cc7159f475080de9c684963dc415ae3269fd0b590f5c9862473c7b6ef180fc7b96810096a3fd19 -99ccdecd6a4df1056e6eda6820cd2b6a21450d0e3a78131495767aa6f34c41e4593f78c8ad3e593f80fc6c7615a6f17a -8902f569efa24ab3c6facd2b52d5f9a61a7e687d5837dcb9b2da1ce34a76a37b86812c75f62871d0dbdff06b42f077f5 -8b32d41254d26cc93bfec4e5e157bfec7a2d1f15a0c7cbc4562583e42588c1dbeb2d6c47fdbc02743a4dd0bf5af17675 -b391d9100c90af9d8ce6224b37b763c994790a9a97fd040f091d6fcf38c61f6d39944a14fbdbb24aaa9f311f539b7a57 -81e950e8e1d8704c5017e19dbebd1e7f8a3c22545815b840f42d2c75443c783f4f4c2c9fb53786b0a5ba1b36f238b91e -b80e33661703bbdac230ac7759024e5bacd83c2432f7395311ab23a02d0df677d5f4a832be045d6b9778a80f07cb2089 -8d7a57b024391481985add75ec5691eec13e9463195ac058e0488e54ae8a79dad3a4614790f853cc56dc9471d51c83ff -a4a824c80b84864865cb70b6480666b6297d65e827936ba726282ad0e0bda9787338909d3b2022762c9f9080e196e6a3 -b5a18c00759c83f5e417f0fb412200bcfbd3cf991b14a1d031c0cda35b539ce8724693a6f1e99dda25cc333a0c2d9113 -a4b6659247365ae1d34d8adbac5ef593ab9ac805297aab76f3a7c5512ab658ee7793fc0a27c15641a68d76450b083714 -b8fe57f1832e8f84ac67c1c9b293dcfe6904b51aaca5d2be14686974e110dc0e19c6de94fd75a5bf3259bae1a32aae54 -9734c43b2261feee5e9f3c2407221c6879f1c373f9a0c4d5e926774ab1ff28900c3bc23b4ed4e3c376f142c3ac198c00 -9693e8ac023bec1ae3f9f50a22d753cae7563a98084efc6d8459dc169d49ee2d22a38c1cdfc26fbb75e2b54eeed889d5 -866961869007a8592fac6f104d840f564b24acba1376c5704db2510be47058e9863b59f4f326d530fb470ec473552c80 -a8bb285361734bae3b5110fdaaa70facbdcb3f27bcfb43ac9953e28f5dc844f94149a53ff7bd4749d7f8833948f88015 -8e9e5d9605fe356d779e242df3219c0ef12bbece370ef44c4c19674a7873a477e5903b70d8fbfe884ccdce4ae693267e -917c27c26cea38d8f0351df8c8ae3ca6332cbc5866bd52bbf73767cdecc62a1d7dc9c562da90a6796c8d6ffae3ef1952 -a3cbe2d6a84c296423fcf0e6bca08b1a306cd686be8486b7a7e030b7cb5c5f791bfffa38b1d51c5ec5e9f9d02ca8bbbb -a1c019be4651babd247be6f8f5a8fcdef0c3afc62d06bdc0e4abf51559dcb19a95f0ecda6e5fb6df659ba5fba904e67b -a9172867edc3de59059de8109f14fabc9cbed1567fb1dd77cf7b8a91a4e00bdfecc3f6b0fc149d63c75c488bee3b4bde -91213bdad35d8c4cf3f9e1305da45b0f202fa8e4b3d872c4d7f1870667ebf5174b55e1912693e2850ccd3e507ff07923 -99a25653bab38a306a04c66ed0bb196ea9a522d0e30608111759c0752fbea1ee10b6a574c3e4ffe9ded91d748fdd9957 -8c4b08b4c9c5db17ebc393c279aefbd6f228b2831e94f298feb04a3cd4cd5cc5b7a1464e4884616adc1d54e6c6654406 -ae47e73080e00743a2b8d39b1a296fa47296fa19cef0ae2d4ddc949d7c18e80c44a3b43758e2deabec96c5ae8ebdde7d -a4cbfc4f49e3285acbf2a3e9bdd5c328a5d2f0f38c43c727d424c36d7e97774598e844bdecf7cb85f6ebbad4f1e6a9fa -85691977690857c611f219555cc2aacc305826fe68c735b01d562a78241df139023e1d6a971f136a7496e5a2073d304d -b735f6e75b63734e0f3dcfa788d44bfdfa1658d5edd3cb36f54699ecafde0441eefbf672d7be9aa5878cda81c3903499 -b4ca2ffea56733bd0093d2a6fbb5b80d743444bb2a3003651a3929c7444bd4b60c8b6394d06f9b282c4f787e48a04950 -857b50a9e21ef372ed5e04ba189f9b963658dadc2014034b5e8eb594c64cb4d8b0c45146759136d0d7b537276eb3e85b -84a36f7781c8cadab24fe41d225807ad19396435d602deabacdea6739ebaf3cdb227ce4533b2e558e3894628c115d6ed -8421a4523c8b6645c16aab3cb2837274c1789fe6d17a7a646d0b60c6d3404175883cd1a10b9ff001a8119aefc8177b8e -b58457173e92fb4a01d043199478863fd715270210e2badc16f11f22d685dac33520b16b2d9d9d27c089eb9caa37ae76 -b0faa3cf877801b399a0df58ca6ae2882a895b01f207f7006af366c6a4454a015db0318a2221e91418382e71f3a0471d -90270514cdd3376ece65eae4a2b2c51b1b39373f6643e82d9b2e0c8576752c81c1c5c964b200bb239894ae267e61d5b7 -8fe94f4f6eb2f9d60a7bbec546bdc2744444f5e62555e30d11558da42efcee1947096a514edebbbd0570860d9b55e069 -84330eb1f20a6998af40d4b9e7ee1c1567cedb0401666a10c0d996ccfd3e7e9e4edf585e1fc2597c34c45f36d457057a -aba97d70123cbcca89f325474fe8f952742eb092e03e9878cf6e32a5bd20c4ea92844c5311686cf8baeb72402f541a2a -81e8bc4463115453fbaaf844d59484cb83f4ef9655b2d410e33262dea0902f7f8cc41580cfb6b4987425166bea1ce3b0 -94f8478aafa15c41539adb3309c919a9606afc1edb590930ec09d2212781e3c22333a2ae83b6a86d237c873ab3e28059 -abd522f0ecd0490b21464d4bb5fddf6a123db84aca829f66595812b05cbffa5e2adfbb6e48f0ce3946fa7e0f78a2bd4a -b5dfdf94da381ba5eaf3dee38831b29d053f90d25baccc4dedffd2f8f5b7d4c635a5adf08a992ce16080514d94009732 -93f59a048a8140b5e112f100f426ceb923a63e2585424e2a6374d3d7b979f04e5a0223f6bc56c5c26b41128b272ccd5a -b7521371be289921fd4f230a8c22727997ccfbc7aaffad9f89c10811a977031e5a7a2a1f924fc4745339208ad86bfbe7 -91708536a804e4feb12184d477935ab8aa80857ad4d2a3ecc25b82e28eb064f4f7482873a841ef90ce38a2035570b148 -b193714c58139bfa0fffbcb23dd77dd67279855b16965b23b12059b8b7c8d596d30239d0e7ddb8eee4a506b7fa974af7 -86e780e0be5105efb9aa74ebfea109ad286dc7c2f259165f78f853d161823b20d88afdca6e5630e04a6f01f05ce52cc3 -b03cea4d3e78cda4879eb498381fa06336e49b950267c5f4e9569570a987e120f7f7fdf34cca04a448feb268dcbf737b -b504ce6ff4d2daa4a87cc24ec0e3c540d32a6e315d8fa5e95561428aff4694cc8d8aa9be4074b478482cfd27aa7d5482 -870045338218d28c7c04b5c35881a04eb5b5aececdc1aa0670087cec292eb3ed7061e25a62a8476bd5be066c01add42e -a7a458be8f7108b009be6f43bbd37d0298575f3f4a2088739b0117fcfeed6c067790c3e45390bdc95d93f5188dac4c8a -a91b31776550ff92e9ae28ad985763866475596612f041538cedf619dc68547bba4394aab553aefde1103d0b7bbd7ac7 -b5afd11d971c4e963039a6632b244970c783fff2d813d16dd64fe39e24fb7b7c1cdcf4e8bf105ed23016b7eaa7a42031 -afd6bd91477dc741ff3c7c9cb6f95268b213480df214a125e91f592ee28ddc5a7ed8adb15a3dd2d50dc793d1016f97f9 -8ae49e2fc2aec47f422c32ea2cadb055d1b11432f9362283a9233cec23d90337001109397b08dd640471f13ea5c75feb -918972bcf1001b9b29b1e4c236f0c804caa618af7873030672944f03c52e465a512083ca57ad7c4d27dbee9e0598c9e9 -95dab13d1edf88871699219e5a841a0d29f60d1a738fe48e5b994ad49fbe4b193bdb520896593cfcdf3ac54c0767545f -a985c2b4a52a592548c14b8b3fe1a519d5b43d13a7c6ab8469e62518c89dec4091a8fbe39565951cc515599391334987 -af5de579f796194538d942cbe4dd17db9022bd4a1e733fa6801baabd062ff04b91430232c99ba0a64da117089fad3a7b -af0630c3973c54081bb5311700267a4e1072a2e031cef7b8a759ae70d34fe460f81fd9902078f57df82ea9a026c6527f -89fdd70e79239b6307117da507cde8181a6083c0b3bd92ec9501fdeadf61e98b9bcc65f76f3db7b5343c9c4e3edfa47c -8a8457c75030580d719642a5c19f39d9bb6032e9ccf59f033d7857276f61a7b71c402bb60066298e43e3ab27e1d17178 -88c175887b19a4540bfada4ae515cd5b88c814eeca464e1b4aefae226a9ffbb82380836c3d0e2bc23aaaa7d2d39cd988 -9169c8eda5925c9658d7b89424362c8242ba9c94de010b27622681f6232fd587dd4215c96ba6466c2e58e65099360f1a -b7606b010b4ef7cbcb05fc4ab2413f9442da376c17ca59ea64cf3705d54916881dc34632a3c5022b092d68aa92a7f34e -afe50503d1fb68471f14116afba2d2c3ada54cbae919116971792fd1bf928af95338ffc79ff877923c40bcbb3fcac884 -84b8abf84753e7bfa8310a1f28cfd0e548b92ee89dcd7d9f0f4d9f8bff32a47db28e633e531c851d4f343ef5aec63881 -a601422adfb6ad2f2619cecf13b6a7cfc56efcbfc6d154f17dabe036a81ee885edec82bcb46386647253b38728d2a662 -941dda044f880e5ea1a3e738adaf17d1fd5e22ff251cf8dfb8748aabfba36bd0b54cc5450bb92ca2add2809f192e1e5b -a3e262c5a365ed24cfa5ddf50236bb0e3bcfa3b65561e0bb7422c8871cc58b3671d14956c725c5ff1cd10e477092525b -874fa6d7a9c062600ff2bc836590162ac38b325b3460feebca3bce994c39a84bf3d79a7c716936c7fa8738302397568d -a3b510950ee9dd109d1507b24f11c725d8132e57960f5ebaea1a0503cd63d70eab022ce3548a96816abcbfcc6b95d872 -802badde14c7c17e5c0e33ae8bbd9d47b19d6a48d950555871fb470d4a0904bb99f12352248055f147236dce9796364e -aad6a156f82758677e6d11cc7caa66124dd0038ec15697531d89cca99337b1f817bccc678d617c2be7700d320456d993 -8fa6f41898c20d2c45dbd0bbcf18730d9e14d296214b176b3addd2b56582f22fdb0efdf743936532a94a1638fcc6b0b9 -a9e741ce09dfa9d5d845e0fd8a729ed088ac5d1b6a84709ab0b753ae58b93160064163a72c38c7ad6628cf7278ad1b26 -b1d07f1a7a19affe01f1fed47dae377ccf1cbb3724650cb85a40dba5f4be77aecea8dd01f8539e7071c252d348e4299f -b2ca0f4f725f21fbfb39e151dea4539d961e55645b0b32bd89a94b5f437e6b3b11733fd39588e889cb111d52a2163ebb -a73e4493bd5e8354e8c43a77f4509e411e4f71b41ec57142f5fb53616c26eddcdf87b8e58684eb0215ed91ead8aeb028 -929c423f8ba701474ccc1ce8bbcf0bfd13d993ed8915f628b9a447a87df32ecb8727d056785a9ccf1973d47348e76948 -a6ad64e1fafda6a7ff88d4358b5e56fb0ae0dfbf3f7e4e488e95b75b51ea432eea257523d46fcddb0171eb10d92ca96e -89584633b7146779a810226a3664f11bd53db295f6ccbf68bc75ac65d335cb1ea2276a630084bff9b32522379342b0a7 -a7d48d4957df57d02dd2373acba5976f0b0cf5a08bcc75ed5ae3366b8348a6ea885f60745993cbc7d08426357d313943 -824c7fe6f5ccfcdfdd9632f404d0a24d8ed31efdbacd2073c4df0f152905783275947b2ddb4e16f668c7961ff2c64b0f -895b41fdab7ceb53c0e34a9f9102eac3b07b59494b08dfbabbe371c724bb94af401f0a088b057f141f7d59ba37630e9b -92964eea33e7bfaa502bb14a61f7b11d6e78579b47bb42f5b1d9b76f776c0d4c39e3edc4866fb2d5eb884cd6393b17d7 -b6bb929302086421d9340d59f2ab09b70e9de5c21f1aea362acf0ff9d12093d5429be7b79c73db6744eca6655e77d810 -808e98cb92d8812364b5d4df334fd2d5aadb2cf28bbef2687e488c32d314630b759b21e01d14e306faccc2e7e18d2b1e -826d6371c5cc0ce439c2559ea7956a5d08d7e4223adee421177fff534630d719a90d9098cfee50b84eba8504c6b657c0 -911aecdd90a266f90edcbe0dce1d60a8aa3f1cf0f5eb34eedf30a552d298c5a16a59bbab1a6ac8621e33a109c202b653 -ae6760730faedeae6c9e04d9e238836b66565c5d640d6faea105d6e2d80d0729c3ce93e52983fc2570da82c1f813a115 -a171956ce56ac78660f3104d95a920be6e45b403770ab043ee745337db4dac6f0b29675b41bdd5d868b91bcc5ea825e9 -b2ebce9ee950de59caff41e18c8d4eaa3fb6f1efdf752d265b13633d6563d7cdf991982727f16f2d345727e0f19aba7f -907ca32a898b6724ca06f602f643f339ca3dc5146614b18a82cf4101074a265af390fd2348338c56ddeeeaaa1923912f -b29fc20a71072a7150363e32b4e70f3cdcd1f07a3a123f8c7f1a168991a38cf1f1271031fcec56abef8511ea56f24af2 -90a2608bdbe0ec8d9f7bccc11ca47989f259d139362f88a17dd5853d8041c8d0ae171983a2419eddc81ab2d6d9ed6f54 -a000d32501144549004cb758176bab726c18f22f733fada52cb758445e4468c2f37f24d379f2b8da8a1ec2ff897094e6 -b2964e64d6550bfeaacd028bd98a622257b03db1120c5427a6562474ed071f78abd245c1398aae36c73b6ba7c9be7a5d -af0402a6a54784b4aae6eea1d77a9230fe7247fc036a18f4cd1b72e340a0d05460fcdb71a27673f96c0f3d516567fb15 -8f8a7177d7c0ec9daacbc4cc08cc8e79fe1171ae2aedc1e73bbdd7dbd19ff657b8b2ea47f273df47ff3b8b8350589f7d -b70d568cb174982b2085754ce9805c3b1c5d84d254665525aff7070631cbd7bd8507e4804decd58b4634db2dc795f057 -8c9de130d33911142f0c695e336181fac12baaa86a46f1dbc3d7732b7ff3ab510c810f5b5e8f581d324a5b19e7608952 -a455067272e5d83502381d67043338f9383ef699d0c51d41d3d3e4b663dfb65019518da4c1c218ac3a161946c640dc6d -ac66b2320624b299f34d8c783a99c431687a7ce6691122178abc0fb7475040e4b37295c3a40eae085658b73a5c20f7a0 -ac8f16eda4d2e2e827f127884bb9f3166479833c4e9547e5931474849855d9a18f20037684fe03954da89879ae49a164 -8bf0e93f327894b55443ce666cf5ba0eab98a73955a0c86f8930d6c7d7ef48fce428acfa9333395b50d3d7a64f8b32a0 -b4864d3ea19febc215a832f73d26684891746a119b25606cd3fae30cc23bc89438efc74554c9a38916294c47f16da6ad -abcf5d2db0ce95154e769afcdf5aaf2121890df5e1337e38ee88406f68e203929c4610e62630a12f01672a5b6f04d166 -8f9b7c9c79472c6b843f168b1435c998e11f2dc0699b576dccb2323de78e7e3da3b90a49c03f53bf82947ad7ad8e943f -a89c329c3abc9e09c2f34cbcffb64dc7b85973fe160a60e7e7efa648e3296d06aeec2c13bb732fae98deab60dd792d90 -925b28995da25a087816cd8a5a2c7333f60a6c2103fc8fb844e555423c278d8387e0fc2fc0b96ecb8c1484bf0ca152dd -afecd3a4a94349654d120b15d2bf889b8c10bae16b0d128ba1572af01c66206c38ec33d72027add552f36d37f2aa4a55 -80213c7662a65d8d0769dbfe968ebc1e55c918236b732b9e7d84fc11cbca3065455ee8a4a96a354a5c285b23ab298d67 -a2ae0c26241c11142be790985071325ec6efa7975de5cfd4147ed9f52dce00e11fa97fab03dca5febc79855a618c390f -8bb07a399319799bf8e638c3ee5eb13159b3e6358b9fff149b1c880cbef565e1c735c0e7600aa88fb41985b9e1f8cf32 -b445129df95b895f274278ddea97a9231f9338c85f675e5c87a85139171c57fdd191d61fd4f50d5d78dc0d0b4a623448 -85700e9a5c920594c6f13c532c462f8e0617ddce14525272356b1ea7f7220b2eb5ab4be5a66a973e9596cea6ad3b6709 -a7c4329b116f697c5b36f56d6fdf0d64cfc926cadbe1002143276205ed99ae677463774560e9bafb8e02829ec947cf90 -853e5f8c34d35222714264bd7ec2e94271f44aafbfbda308e947ee3287dae4b83d5b0824436a8c429b263047ab8f70fe -ada60cdc0533b1bab7ed400dbcfbbf3ae2844265bcc4977c950d83a5caa9ccac38840d0939c1544f41c9706816fbcb5e -ab3ba8161a9be537d1a0502846f4ece158c13f0e1aa58b748e729806695fd4cbc0c7abad92175fd04e817f2ae6d67f71 -b4bcf82b6131c65161f008409edda485e3edfeb61dfdab6944cfa0d02e0290693ab6a6b4a22bdb1b9fb07badd1f17b19 -8aa7e58efde80d8952e5b18cd1fa856ecf0ca04ef55c41780392feac675685cc394b6a08acc2ed5219f59c2df476bee1 -900cf373f2216f4c169e442f68ff271e7b28a05c29763df873426a12ac981a1a08aaaa0c731ed00b651c99f160c3e35a -a35c6fc25f434e15cb98b3b58714298b0cb39fe71582404202f340edc1fc741c598b22c95405c03e850fd2306d398a99 -842b31dde20c3b9aa1cf814696f497279a4b074162b10c6c444155bd7728bdceaed4388d417841f3664dacb5e8e343e3 -8a588d64a90030555858f1f316f350700522262f8f8378869bfdd5a6b2e2ac62dde279e6903c2d85279b868216af020e -b92d2dcc4658987b9e52b67306b3918c08cbc38c1a8600b7d9edb96d6813241e53e9fdd9b412b0288fbdb7de87a715c6 -93fb9780ac3d5334c1adc6e634b29a0f708598d620c7845d6c5b5a1ac87c36564395ac9e826529912986314ab75d6b45 -b2cedadb7c791656f3a93e254e43fa1af8370f8a9274876914e1db2f667e994ed183639a803e24cfc32f8df8db618a4e -9972861060302b37df9a52d80f048e4d5791f593c16c97b3582ecbb49bd9861906e4ea7d5c6129e1cc4f1bc31f51fb7e -b7c7e62877cda820c9d12b716666aed4e0e7c8f8b95c9510dfd0ae4904b800287249fcb3d64a7ef466be594042d029f7 -a6d44decf085de8a61ccf23c132f3e70af2abc8732aa46f4b2ebd6cff90160fc9c0863938315f53079ff51139dbdc9a3 -b57c378717cd46ed21395aa98851e899bd37d75b24a08c2e309e21f642a1658f6d1c0173edfa66d98df4e389ac337b7b -8207fc98fe589a795d884ff859e614e2ec5e2b98d87dd31b4a197c018be913bf6a53021a2d74d879e0736c23b44d98cc -8db222cc734adeef98c79be58e68780751b82c34b91ed6e532e11b922cec9d8da32e1129694c7653d16c2ceff62a55d7 -823602a4f5c867e0d790621ace7ee783ae91748b8b2a112d402352561a4814d0e128f8d772e096b0d272d287c7192332 -89b3344e3380760745a463a5cc4882635c189b9e50c749422dd4fa467373d97e8b4f0a1440c2e3c55b8e814a2ea8155d -a15906172a85c6c0741544d02bfffb73d749f76b1acb3ee800ea6f3183cb70ad4b27ba6c0eaf46094886983afcac5c41 -ae70492e56634f7661826c1e176e63f92b70d11711dbad737a8c01ad0e523cfcc656990a8103cbcaf01bfa504f66ecfa -89caf80cac28e2c8d874d0208c21cea2594d3ba0f0e0b7756e1d4405dcad55542d54c0040e6ee53cdafe21227472d961 -ae38ea2af6ff7a1f8f92a80eccde3e9eea111274d1a37e53a5c581836e228289feb4e1eb3739fa1642311f8179eaf4a2 -9932f5a85902c839c140cc76ea1ae79e4510a28fe365f002b57afbcf0eb813c9c7e670d49e319fec93111dd74e7619f5 -ab281d07e43197bb3649df41ee448aefad59e5550c905a500f6f7a22a77fa6f56b628565c83bac51e03ae23bdbe50698 -9556234d43d8f72c69c8c2ca37ce563d1ab3679de1fa1009f78288d317fdc26c193688704876e784e248fc9cdce647fb -8366914e563b5926904398027a7405702686c1c96367add1094a33bded979d6d5870a429e999bcd0f49df892fcf4d0e2 -a01f30ea58ab75ec78565079d38d509da5274717127b89b551e744b44a8097c90482b3d7f7283994865f8c33993c23ed -a16f3557712dc456eb9544b2b31ece03ac3a1e55373468c3176aa662997da69746878f07d659b73ce89174f7dd14328e -90849671487c35b35910718d1bee03836099b263fd85e7ab519cb7549c1d8798832d7f3eeda3ce5157d202e73833240b -850553f71df6378422fff8e52d76d2983971f68352e38906aab1e7ac0a400208099a3b67f84c22cd6ab9d4c31d4393ae -b62abc189b6131823083d41f2849b5663ebb8d17e8a772234690793a0a3494a1cbe36ca6161fd80bd25a015ad20525ec -b460b5277ccfb2d4e5ff751cf03727541bcdc60c29339020968f29aeaf3edf27cfd2dc672548cfd4d6e4fd88f883634c -8b2b44c6f68ba4c0b8a5e81c1b8ef81ada56fdc8cab7aecf4b8615d57a65a0dfa0185c90a72713a84950b1376cdf77bd -b450f25fb3fa3c0dd13a5c9178b7aa72b43f39b3a9c74fc24a618f8069414baae56ded1ac6ad66f4f30a44b2399f397f -a2f9271c47a68a73d3d2dce4cf88ea6a3eba3d482037a3623c4f5130d8cfde60e6ed714d7d25cd1b647a7e7d553085fe -b8a7e7335e4c060bc4fa72a90146e2f13581edc42edf84040baadaedacdca0d45072b48b8f1ba51d7aa1fe3e7d9c7108 -ae0dbdba0316562aa2147c91cc7a3402861d59e557951195cfba8365e90a62a5360944d571722bc10a5950c2ff82ada6 -89dffb86429e7afdef1bcaefd0f6081cf7f421af52d25a0379a22c93374aeec6832d0e6a236f56bc3efa98849a9550b0 -b9da55d3d8a1f9cd6ffe6f7807f6fe11470c940d4214406045fcbf1ca61e514066731a28507470f19ee4fc329aeb71be -945f8e956f36f8345a16074248ee73286fc00abcd4ee34f2fb7268bc07555a2c7055dc6c766bce563b19af99fd3d262d -8632c4f42f282893db3e3a50347a6f23718ce1c6e55a568291fe94165be9caf819edc8610e3a8e9bb3181a19b42db32c -8642ef6aed39ef71af8a80b0bc7177bc0d7e575e9bed759f88bcf7e1a1375ed4538f2df6c7a5ee887a7ff440faf9ee6b -89b17b8a26bb7721f30715210c6561147f8e6ac03489df1657bbc30845056db9ceeea0a7f7cbc211b7cdb172d1120ec8 -8cea2a9407985c328eaf2c5fa3f1ef93919459fed082867fd4e0be4f155df41a448d9f24caef89c2b5a64ede2f82591a -ac227d5bc123780ba295e32fe9f3cecb0fc5e2bc87bb3d18dbc886c2fea09e37d0dfef830dfce7aa8b61a0fd6654e16b -b49c7c4b0bf0a17540dbb6019453f4b27d43baa65414b47c90b603d18809727e8e844ccb4871bced384f8b9116555457 -8cf866afb94ac10a7443a8014d2d7e21ef4e2d202bcfb5e9d10f47d71bcc2b86861e377c5931199d591a3d02b475583a -aa25cfabe1c313df181ada5716923bf4057cad7cab7face00bd904bc660773238ee8e0f615a5f9815e445c78d5b8e9db -83ca763b5ba08cfaa9ae780ebe33bf2afd39120397c71d1213476f7290bebddd18ce9f9ad060f1ccd423573d566e04b7 -89a3acba12e9f7e4237331d9f1f4998a6f0299a3d4dbe546ce187302214d4614508d4b775a58d2d365766fa6275e07a2 -a26127a3502d14b92e35364bdd29c07ebbae240666756d4dcb246c0d99fcfafad98b0c33369ed02413ea9c32623ac082 -8f3439f26390c844518834d2d52474abc4819542a0378ba813a264140532fcf6e85c24ff58261e7671cbcd52bf49e7bf -91439c54133ce9b505884beab1494fdc62ea957acaa875708f40e687db536e8a792ea4591f1bcf5177ef3e8518dffd50 -9477cfdae5369a59aacf26c370756148734737fd0f494f04a1d562eaa98f2e2b97ebcf32edf8654d48fdbcde4adc09a2 -afe71c35cc3e33489810cc45201e3fff52b7fd9faab39441ffb173d2333fd3e7d901e4570633aa2f9bc6b11970fe7742 -95ed1748d9b3f6e5ac35072edbc25c2e72d183dd10fb6cb27fda78ef7cf6211452310b103bee2cc373bfb0effc570902 -982e1eeabaa7e12f2323796712a2ff01ba0ad0d68f97413369fdc53e4463741d465dac5717e18e50d6fc292f259f23ba -809a1c0abf6c9e06ce2f4ec57a9c68e5ee441ed5ce31e9f87d1852ab7a337809de2fc5eadcb830d15f2209f8cf0072e1 -92166578302b6d4ae165583324dc3f4f003ce52aae45f765cff7f4d78d5413d66d5cb17a8c9845e2d63bbb7754cac7a5 -b62419f9b93744b39a40eba6a37963bc885b286aa5de5246670c26624974a2c2b4d9a17b551b0589657b17c8d2ac2f50 -a7b5bfb381e75f35565eda4ae209cb051c22e79e80a81bf121b5c3620497020a4be6734e452005b707b0d04293c17f35 -ada1ddae5ed319259cee96dd20787ab09934e32c7daaf0bbb3a50e17af6d528e151632034560d4561a418a9727636a6a -8cc9aa9ac525811b72b8a04f58db788b5fd921912dcd5dc0dcb3790d8244971072c7838b7286ebfd9b73e883ad9fab3f -91c01239a1d07c041dd665c23acf74ceb011ac22934e4c046b0de75841f8cce94b321a9490ad7616a5d0ca6d976b69ab -af7e6698f0ace7dd08cfd8bc0f7d3933e1020df1b101beb35bf8bcc40a13f37183b8943989d4f39c05d62c192d891697 -b0fd60eecc7600d4a1c17fe7bb899a323729c43de13e38dcc1c745c637229de260bf3e53df9aefb268b40119ddfcbdb3 -8dcb252effaf99207d92df32aa0a725a1a252722ef3b378c37ec5d8e1daac9f7a8258ea3cb99c5f1a7ff3ba4464e643c -8ab01902afc9e7963bdddec3ec0162e535a1e1e222140d0d1cbf24f64a74ba74cc94bbcaf5987069b40ae82731423a77 -800033576380f6f6c3b05a9a8f6f48cacea7302f50b844ba22882b00c724446d835a9810f4e3c267b7ceaec3a620a344 -91fdc9925bbcffb2eb156c935ad573a310c37a421deb09cd045f2397f27245dbf5333ed044463e1f938ee8361855026a -8901e7ebcaf9fc6b0c649d9e2d3008713e91849e4ce6b1288c9c32b46df96f5ac9ed1a0b4fa326b1bbc3ae201a9cc9e8 -84501003cba5eb5b26704aec93938ba27e8e1cd61513a3efc70923d1e5fced20dc4ca375f404d8be956dcf2d625fb705 -8eb4da12e6b7cbd1376fd7aaf282e81bb5257b1c895ea7f2056f700f5adaa2e4410a2cc8b738bb421a21de7cfb6da14e -820cfc7fe92e440fbce966380edc8ac81fd825b213d63fc2f0a389b85f318967135bd9d167f1bb82893cf6f530494076 -972107296d7dceffa80aa47d23967c8edcec95b1c941f01b5f882766be3bd890f9fd0235c604d39615dadcd7ba9526c0 -986b277afa1e64c33232185dada5e49f06ecacaf45a98f3c3854f085927c34e714a58cacaf5e6b65bc065b10a86d82d9 -a59e7575dd124680a9ce7cacc44059574c95183d2ab0e48c99c966482c8930815f77386db66b72f5a22bf0de69c6f684 -956187de896db28085631690a30a87455e9a28f18e12d6ad1631be60d57207588b2b1c74bff8c83062bb743e411f3bc6 -82e01d894bca2484284a668e8c6787c5c074b0aaac0399219025c59cb85202bb3ce97a33a09f79cdd94db9ad8f9ff319 -837485ef346fc13df5e2f0ce8151d72ef05ca5100948ace04dc70c66a6b42f2b40530277c9330047c337edf0c6025bf4 -9753e650e0817ba23fbe57468fac8da4d45565872f210d7eec36157d95152b7d3fc843724c61440300a7c82e3af4f9be -98bdcb902ef63046e03f5b93a21ab29782a16bd4d9ac4264b260904698445464f29dc4505548a511d4ef57940519ae4a -8c161972f4f6a2c1c1ba9fa6a3fd580fe34d9ea6337ea3336f861b8450db838d5919e89257b21871d01d62b1d4cdaffb -888472b71b06971a6016cb08265e3de688837bc312044e73ccd600666ae3633901051b40ac2db99a2c6c2e0fcaeab2a6 -8050c5b5b3e6dad7154228140d9a5565ed900de2c76c1cb584bb51b55c0b6bc6907593ba238028c74c9000b3de53e52b -90cbad17b9b8fe56b34db2526e4d3819f7e494c52f3f10ac1577777b1bcadb0dc1478fc5737855571dbce3e508e12c51 -abdf4de4aa5bca87cfb082b6221d7d778b4b3ddabc73ffb668baafdce7cd665807990fc2fa8c48dc703c872509f9c239 -b003747b3471708c2fc4119694ee1a49e4305a805008cbe69a9ca5e9bd881f33c50971aeaa3109e730710f51057fb400 -957d15096e585e7436c4b09e24718bae6f7b8e57529de8919f6590c793bf5e7029daece21dc9d4c869c9fdcc304fe909 -b44683865e50f7e1a5889654cb2f0f988b604d3dd48045e39be6926e131894c5b45922f4a5c99b14e9b6ff9b0fd6d764 -a8c3357ec6da32b87ae3ba765bc551986d4a48c10cf9d63dc3d5741c8ada1ce04404ffdc8abf8a011b6a0be6f6df75ad -a36cab5f77c06265ee2c5de52e7a949df78700d42694a722f1b730cb80e1c28fb16e049237b819a3375c4e3012564152 -94f1ba006e839d0d59ba4ba467b9a86816ef36c4fbf772fccead361854a54d19e0c8f2d01931b493f75e0746fd1a88a4 -90f5010bbd4ac4b1863a1e836793380e54b0d3e7ff864de935f3f2ec3452bac436e3b9a283486faaeadc84b3536a5cb5 -b7600dab8bea821696bed4fa62ad6b7da3d389ecd129bcf8cf4b9e051f12524f476f165e59f31310cec5c6d8adad6d8c -b7ed011e2caba5e20c69a9bb1347d83c0f8dc80049d9c595cc67c69ae429fb935d648672c18e7d1de3855ab3832f7cc1 -b2e32d45670936b75b6f7252a9a0424d5efca0aee58b7407c95d55f8274186d24ec5802e9bae316cf1a691448bb6c343 -97b37b07f399d550aa17897dd6f900bd360a2e4b0cc3dbc01f2cb3b286d3825545bd31965047d7fe1eeead3cbaf13373 -b09b1237bd55ca5eacfc22870de32e9d62b9eaf8f82abbfdc9b72152e453063deda0862733ab16f85b858245c57119d3 -abaedfa830ef39d52ec646095f3bb9beae8a5846977aea57572880a55af193f1b4a9181560065d6bb80f2e7f02009dda -81075b578ab950b7bfcd033856250c00f9ba19fe44160f37f6c3b685e72c9b597c69d6c7049e489622983dc81123519c -84d4814756b6e2003d40242c6b4a5786c91633c7e7e35898e8ed85c3f5914082a67e84dac4a29a77bd6d1f5bd0a076eb -85eca1066cf79df86f0021e4ea2f3ca5c4e6f1c1665842e17c1f800baff19ef07bb208f5cdd5a3c67730e612b617559e -a73c83491c9ab66346c5fb318e58e04da31c36526172fae86c9f928f07324d4924f789c00947eeea7975cbe76917c947 -8e4e317a6495df0595c0c5c8d0a2ecc132eff18d59b95c30d53f80b93b1a84af63e6b4a13cd29b5b05c0034c6bd4f3bc -8111f89d99ee085229f03206c3faa97e1697ee963eb727a1e472b959da1e6f7010885c5230821c00f214907f7df14bbd -950bca4a0a796da47b8d20249a70efa37b78825f1041d0191931bb15804ea4094a779ae4c308aff1838b77c0349b5105 -9743e2343a75f5b26be5eaaf45b2c90131fee1bdc51be5a1c3528bd84be758e3603b8c524388974bb181542505be9cac -98753f5e4893d342c7c1bda8f5ab603cb13297ca45ac70e48d9841bf179d7a7e89f4a42d543c215ff0c9cab085c43f8f -8b59cc94de3c45ba3c435e455b0e13c11d27491181b183034faff0c5991d9b3ce17c4a9a8af046679cce5e6cfe9ba641 -a649ff0ca2dcd50650628a6632ff484d7d83a2635f7f8f64b242477c172815c70b10db2808f13d8217d631a5466ce229 -a11d300902f0206aec5efe7678b749aeba561592ecf10a20d3d15448a0a11449bab75a29c2174f6246ea834bd09d1abd -873f64e5d3a94ecad56dcec7ffd577ef638c9965dfa41b931f703c9fc353555505aa708df02ebfb30dd303dbd27dafc6 -a282dbf9ddd9f9d5fa040105cb1d3231bff53cc9a5bd6abd6ba6237f25bfaec55ed9d564e447b37d2cf90bbb9b3fc899 -b633ed1e46aed7db30fcca556d7ecaa4660abcd79355357a6b0823b2b5c56db2ba98542b0a01b57a3721b94cf937fdd9 -80f8c27c772857c997c681cccb6f8f9cd5e5aba871516649d9238f4bdd05f17bd6a259608173a1680bd0fe62c26a3a1b -9088464ecac788fb6f172a43793e9601df21a3118180aeeeeb9f006a4a3ae8122f815b776ade7bb853b8d682f571fa3c -ab21eb54ff6d6c2b66414e50b09e06a3fa230423c633bd597efd32d5745e88ddaf8b04687a7715f7a106350c61ab12bb -b5b25b462223cf04af61cbf16501dc91797087bf7bd462c31d1ad8f717df3ba970aeceac6c1208515d0deb7ba6f31061 -abfd331d9add9cb57b50c6287e23da675a6d317923b4144c1c483fc71c860ed4a405775cb77139232f9e0058a4011d2a -89d91987a4f51250fd6458ad39613ddd1684cf6ccf469127a0cc28fca24f22a2b8dd871f7027e8245d1c6dea92d388ce -96b0be61787d04bc33242bf47fdf8926e2e8859513ad37f1ef337b418f89fb4ad976216c3316d18ebf89436f24524470 -80d0abfc071388c00092ee7f56747b34cad5006e45adbbafca6044941ad67c7bc945afa050756eb337caff11a2ea35d5 -88d1513b1e59920aba986769129aaa86ac1390dd570d751456c0d5c304a74b383da3f9fb9d19bbb7351569736961267f -8e835329cb92627eb816d67d5cc6ec4f8ec28e1026722531927e989e0dead65ed36d9ceb845651a85369d309c45931d7 -8c2d3af0c84a890728b24abef8e1d061ca74f822b54c8fa29c9a5090b0f876d907d9bd37672ef33d5f606745d7f50a3e -974e4c1aea6452aca58d4ec134ee7598f9d4a361c081cf247e69a7e70da35b36292e13f58b6a80c7f27793d72f101b4c -b48134934a48d6f7c588c9083bdea8b765bbf08dc34caabdcedeb5101bb1331e70ba8678abdab813a5a84a55cec9f23f -97423cc7b679d37dc04ab1ef13e3d80b5f8080599aa55dc2972b8c49f215f30ada4aff8ced50b1704d6d3ec19de9649f -996378cadc1c5368ba451c12a8376ddd4a5bd54a1772b73accb0a024503e8406bcf6565799c1b9e14b078230c71e294c -88a2388ae4d2aae01b20c486da0fd3f5289921869d5a3b1d3b184baf6adafa1a7379b4fcd3be7e7a05f5c4eb45a8ec37 -88b53d4c6a16a308230d5d10278c8f439f0815f036db06ba2b2c905a1b2eefdef66f57efec299ba64ef63cabf475a153 -8c40d8e50ec024b124c6185b5a87e9c29be8ece392284986ddfd24e4485d84cf71a4843dbd8babbc2bc7750d66e34389 -895ec63734a6b9e8e476c4d85ad1e00b9905a0f900cf126c2c5710396228b162b307d24140e24a81db5bc6820b3dc8c8 -851c942f884cfe3c946c9fcb80a0651c31451fb3c07ae8b59c4d804e169d165b3fdac28406119025b450504418118263 -aa8adc591dff1cb710d03bed5ded71a67d71efd563b8848bed2eff00ec7327c9d8dfac6958fba08403a4310f4093c4c2 -b03bd5a2544ada5f9a394e6b3c2a759f2951e3330839e4be3818308d98f7bc51f2b0bcb624ec7cc3561a736f61e1a65b -b7e9656dfc837fa1263068a950ebd37781339b46cbacf9db4167e61e8e2cd48e48a1d9133abc09e56b776c3ee9d9c06f -84a23d09ad0e6fab688c225d319b12adb60f53b62647d9958743564f4bc02a46fdb661a56187e7f3c101304fe3add149 -ae6910e101ce9a47121f451060d81b7cf2ebec8dea54d1ad9c2ca028619575d09aa262bab2b71dabb8fff00d63f693f1 -a8e407fa60eb152eeadcd079dd61aa2b1e93c56870e4d5a6321cf87d3621f81b0629fd7a5cb221e2d7874c588dcc46b6 -a1afb62029726f5539aa88924a11a50eff945ab2b62e197625b25d3185caad5ba8bf7c49b425d7f320b48ae3c1370e37 -91bc8c89d0df80419f8cf7e9384327185a6ebc3fb1e22b61c627c40b438352164b5e5d7b75e785f1a7fe9fa1397a6c90 -b6232425d78ccd4cd3259639676a779af2143534a5ea52b5dbea6aa6e76e3cfb434b31872e864820b7a02c7886394999 -9465efbcad40d69869a6282269b038f030e01ef6ca32b174859ff0942685f0dfaf364fee7432cbe644dabb4ca85e955d -86b4b41abb7144be3002724890619dbf336c2f38fa45844d6636ef3ea0b97999b87b95a98e220a816dd90561ac25c7e4 -83fbaa1b7f43bc9e4e3d9f9a44cd6a7c65395e48222d2540820c5e7441ab40b24a9bf3e4961ff28041bb6d07be9f12f2 -808bc511289484f032b153122a82d719d8b13bf5f2fc7f7f0a6509b9ad5ab132ed90cee390a4e72cc842e8632d167aeb -8e4bdaa3b7b057f7825cd824c978904482aaf1ffb70b0d573da9b40eb8bae0df5911b3a356f5892c91470f1652a99c45 -8f224dc2aa20cc9c357d47a972cc4e5ea6b8f65c63924315bec47158f06bb8524dc4e9c1e0ce55939a61f4a8e0ceb8c9 -a809370c71bd64d37315b0ef483617c3637693fda702d2a4fb3dfd42015591af29722ab5381207d8920fe246e2334505 -878f9ae4c2b0d287d292873df9c87bedc45ba54bf6cdb1076c43d97c44dee0a32f105ffc67a0bf300ce84eb656f844ae -8e3fda631dd1d2ad15756f9430dc157d6e1daae235b4296196c31233c906fa9936064367cbe8fc4f4d926d70fd2b812e -8ee934bf12bfa342214e893e918d8c40b4824d0ca82f6cdfc34bd1b6b469235a26ccc7a15eb27c278c14b76274c861d8 -b59c220c7a9ef00213fe7da2b79f9ed8a45c7dbd1e9c1a7d16b4ccd6fdf6e5843ba1d20f1d69d249a86df5f6a70a5f5b -96065ea9f2ca20469a851eafb84a1b10263c8be405a4d7f3dc569e2c7a8332ed1e838d2196916f628da6246c939942ee -b0fcaa930887b72bc3a23cf17ad969d289d06b39e49db55a93052d4d9f8c110f3e07195ac3d74de3fd10cd73cc2aa811 -b2e8efb9fd890bdf38d944db8e2bdf34cbaeaa2c3bd3c018b982e2661b54587e69b67ac0515f6f8d1b9dc2da686242b4 -b7477f76fbd2f6cb042e0db1d5f738f4368369b73b0ae9972d6633f4b8cd63359074bdee83f86a9cfaebe63edc26f48a -9835fadca0bb0e2c35ed2ade4496e415f8aebd295d5cec08d43e0528700242e7207b17c015898e165047cc60a6622a1b -b956cf0854982226cfdf08457a7ad76576510af44e0ca5947539581a802caa7848bb89acacd2616a8363d2092af4086f -b623b959d5b1568a4bf841f7d3db8b23b18f5e74d6920546ae4d026e17d05019d8a2ce533cbd719cd95bcabde40abc99 -9870c15c12bceb94d0758ae9c3213cd079d5bafce5b836bcfc8ef1a5fffa416dc23154bc8afc6446eedb3f74481193a9 -83e7b60040bc7cdc0a22f234d2cde0371ba9843e2a0cf7656368c471f9411a08218e3f38a26475cf295f9751791ab52c -9398fb71cf88042f3c5c8f9edb46cd1b86fa541a82a9774d173270078ecf26683e18a8e963b458ba35fff42e1cb50886 -b9a0edad714d3e7e1fa248c946660364f4092994826338a7d376a4e9a137839cb93af86de5f5a43b530b42ec0ba90271 -91c2d320baec5a90293f009f9d3462bdab20ea462d8e1eee06c526223c0e817d4743a9b8ecac8c56e6f803594a8eb9df -8056d637e4250684d7bbd59cdfaff55121e116961978efd26f27ef82ac832d0c47175835bee2464e39f2a3c4c037efd2 -91b7afd1a2b07bd4bfe02903c8b8eabf2c2d4753134caf38c9ab547e063ecac74fe9a740bc20483622e264b071e2bced -b872a46732896fb881a9189abe18b87c8d5b11b0e655c41338a1c882033260b24116219588e037b5026511321e84882c -83a9231dc64a8211105f39de667e475fdc87e9c336859cc80b531de191c1a09bdcd422add7cbe164f0fd810a83d1e17e -ac7f8ecbe74c351fbeba9e6fbf6a041c491639a506a1f0e457cd61d9338a2b1c382c33a512a7d2bdd6ad220d5f4dff9a -8a2150265171f97f7fc7eb56770bda654d91845540b9126cabb015db3f62d8f78c2845ce9bd6928250b289bffdb78af0 -981119d1385b5de53f1f1e894ed67b17cebfd943fb61b611a95cb81496fa6375f81e80f50803d60a4e8b430e0fc8fff7 -ab478a70772fb01532611029a9cfeab2b23506da69d5348489c0217e039c7ee1b287aaf0e22ae26e8abb23a05a184bbd -9195743d8e943b9aa365b42e929f49bfc7d2ca84dd69ddc06da096ca681262ec1a32341a8fc6024c23823a666d9ef511 -8df2c92ac3e7fcdfbd2a5f319a10e39936176099fab0e6c47a1367153ed084fcd6163799fa62401e43353118de170cb8 -b388cda12c5b400794616585ac6d646b87d73d96f7ca05dfeefd85d409b53789025838850c430e629daae94b49eb9d00 -a46b2eb3741e2fd9278bed3b8e6c208f2ead291f1911371ad078506348c1e3017666ed7cd5c927bbbe94e1dfa6ee5d76 -87913b73e14ce516fcbdb87b547a60a8626fa3e5626c9ba88abf60315fe7536f7ab08d8f9bcbcbb89e8ab88b9e940965 -86cbe3bbbce67685e88727114e89387e9aa650ad48b02937fc456be93dd8c2a498d34cc98841782fa5dbd4c44a15f4d3 -abf37a47fa66584ec202f381fb0902864552a467f8fb3108f694ba927414c36f29e7ba80aa5a8bcc29c168e0a7406407 -a8a1e2f98e922ec615d98a967475a38e66f330ddb28db9cb68d8f762ed7b4943155bb8714970c15a007bfd1bdc247f4f -b9fbfb18da6c54da8fd8fb8a7309c91bcae253456cb68f42ea8cc795f0bfb627af0084815da886d5ca9c11ac2b9ba305 -8a89215a3c4858654d55bdbb698e29734c47e729afad4ef929635b5c81b6df8aebddff2edf039675662ed672365a18b9 -b7fcdec77a81dd820a3b30a761414978a19c797883c45991709753f6b5bb8f1c18a739fdeffd5bae72f4e3e02e73f185 -a758cd7b6b199082bf7542d2c3cba834e252e78aebe11070bd317fafffece471aa9a14629197f31b2febfabb29fbd02e -ae635672ff682db3821effc3bf7343e2fe773cdc9e65b38f950e14d40d75d556ce1436880cfc8ebf94a29ede76d0d914 -b5819263a5c3fcd6637e326c1e725c9745b372ed581b4367d5e1209f12ea5d8cbbe41799258fe0fe79f14a8643386dac -b2d31a273e3c20835f807d169396c24998fa08f050ea7045a10a5d71b29297a705c8673c482fd169f8f6fe518dbf1e80 -ab8a24cdea5cd6a85be299e105c80c900d316c3a87910f248fd6324c673af793bad2bb1b2b10410335df2119ba1c1d09 -80fed5a8e0e57005fe9d1a95219afb022bdafb4ba03ce5877b5700c62219348536564e52739ae4a4ba94c48b225f8fae -b9a8c38a1a75b49900974ea32b8966c4e7eb1b90a889a2a907cc42632e185f1ce714c42bbacf2d5c0748330d8673e170 -90e947c28c48fda8aeb1448866ba81805f7b8e66afa6906690cb9e5e4057e3cf33db75ea6c94ea1d2f7f74f1a1046f0c -b15f8350a08192d2c0409b4c49842f1dbfd944471fbb7ff1a500138b74ce9d1312de757790210cecb00bbdf9915a43e5 -80b2f496ed36674e0448224d6b3d6add8a05e7f3c583e6d921b7c9bb819ee8844ab46e65016178d1176992a19bfc54f9 -a866b0233d2b441ec500b90a4300d1365a7fe579412e70414c2255541ceca8bfcf838381536b8c6593e016c689cbfb06 -a60646045a605928d928a680181b9648f404d4dd81eef04826c07819da7216a0b35cb246078e78da97988926dde58585 -b714167ac48a849bd61dd9970012a51c3494ef1c2f34720145cb1f4d7a9db1f78449c324c2d30e28b4bbb038b3d04a86 -b68c3c3ee0d123551d047f6028d5703c963030540b523ba86648164f4e2a24691597f0b2a3e3bdbc1558fb4ed6348473 -8697915a6fc75f4466319f6711d1e1b945b49714c2ae34be58d82369fc490b963916e809a3fb62c87225327460baac45 -ae55418375aefb77297da8f846bdc81dff73d16d37bd8d04518acdfcbff3b948b34249f4a268701b73144962e4b91c77 -806bd788bd291f36d8da93c63843a4318e09f09992a25d1e0c22843216aaa05894d59e749b357a532c553a41696c644a -b1cb21a6de1f47594c97141b447202405328f8f132e22d386be88863f960feefb49901b553bf4156726979e4bc3f8003 -83ee909bea31d02eea1ce6a2d2ab840fe9ad1866e91abe71712602320281492239c5baffbf924f662ab7e547a2362c14 -a4a12fad59a482e6e951ed81f1a9b55c0bdeb3bcd8bbba4c7b8c75a31222f0565bffd82ad0a346ef354dbbf65edcc81b -aa4eb0563ba8bf48131e95bb0bf08b02ccd261d06870670642abcc205d5c71a1d16eced0170c910be5994a4775e25f12 -874c9e395f1375c334829d790f7f127a88339a011d96f9d71153abd592fc74519fce0b99eff3353e51a4b939f3df3df7 -b88a068c26c1fb140637f4073084a8f4d927d2b3b175deec55c3589539059848e799d172d5c1dd1839a228c93d1fd443 -a700cddf34adc75501d3e76788a265362cf46a5ade7dfaab8dd5e3a4d12e6889df3bbd6f350b9e7403a45530e2159569 -89fd0b6282fb7f24c27d5841ac8f98085fd4517abaef35ab3f95baf0a7949df79644bd55ffb15caa1259334cd4f1206a -948b6e2440fbdfee36e6f803d87bb185c628e0416806a2d2f3f5d507e1568ed944541f6425174180dc8fda5ad02f85e8 -896e8b40dfab92097d6fc61b68f87931ce1bfba4097345d6d03ccc69228f6af773a5704ce616a92e128b4fc29a7b777c -b670d62c0349baa9cdb6698ce66825800e8c19f203f24cdec43431eb5f2649a16ef146fbd22870696e51ef0ec14683c9 -afa59f1fe510c1433c07ccb33b01ae03456011aec5b2283a3484f1b83a397eddf43a488ddee6054f416929c6a59a32c1 -86dd6c8908bfc961fc051108239a7a7f9817d6dfe246d869dc597570188716fa82f646e78e2925d268a5f41e4753c986 -a90557c3239ff96b569b1abe835b2cb416723e22b46c94bc9ad493c11e1198a3ec22cf523e62d318676acf7b8de4f68d -93dbbb8829df5dde01126e963ed9e6a018b4f32e971220af3a0885e7214a030f2f32b218b95349ac03b513fb89bd79b2 -8abf5b250de156e2ddd74225b96098c1048a77588adcf6169036c8202e3b34d7d903af6faa2381fbf658b7f6294783a1 -941b133b3efd11236b812300f6b86f648114eb63b2acd5d69056dcee21d768e9b11bf94ded851fa86fbd4a34e19ec2b8 -ae044a3e783c7a9d201333f18fb8d2271c9ef992c1b159f34ec750ae47ebb94c19e894a3357f0ba6eb4a166d5e9a03b2 -8c99074fd22e374fd0f9f04b1ea71582a3b4781ee92719eb2cae4b1cc0add33dde4d27fa51952f4da7adc12c775c91f2 -969619df29f70b4b640d499f1cfb0a7fcb8f7172e03162c57b18e6f852b67f7b8011c08c96b96703650374c6cc74fdf5 -8dce5f9adadcd74ac898508dfb8d5c9e0af5c97bd7b7e4eda7530888edc3c3185b76912c784b50e94b068d8e89e5b3f3 -847e13a166ce6a3c5603534740e63846f8678f56a821c584aefa5fe8c6b329ae1c8733925e411265f4e22b766c04876f -b45235563058e9ab8b60d18ee419a5273eea074946a36128b04e2e6fda9c0fd4a757dc38a8fb66f95c4142f632f30b4c -afad39b4e71b1fee0e5638d8f1b451e46fc3b061f8567ba00dabbbfab4186dc35aa05718a67aada68398b1ce55344d21 -86ef83fba1207e07938905d71ac982a65f1d9c07b1dfdb353f8cf3cbb4d029d404fac9a469615e9516aa70f76d95ffb5 -a5d82ee7a0c78e86591ed6014ba357bc99d3c8f8055381e60635b26ff4c7d5d3a7647c123b2dcff3af0bec938bac00a1 -985ea179034ccc69e5e967ff6dd75736a65d75e3dcc0025ce77b601d88c71d2c83f714958cddc71855095eded030554b -96fae05c8ce05803693e0f7d26d9a22a6fe84a288b0d6ab9510105165af7fcd22329324dc4bc4a8fe0cbd12e112bdb8a -85f57814cdeec2c2058fc3775f9523d524e08628d0e26873eab34d50e6a6f85259286b869dbefce4fb52708828938225 -a0356a83491292ec1fdb3b52be3fb3d93736665b7890f0faeeb801ae9d7a5155c454b802b8053b684a283b5e2228df49 -b5e65a53da86fd205a5b08b0cde0651bc501dafc2a2cfd41cda2c1c832f40c104fbdeec19351bf2a64f2a0d924447b7c -a6f1bb7b1be8a1da4b959ab89c1ca55507c8aca491dc0e4426574413797df1172b06bf81b2f8ad6d151274123a4970f5 -8731989df4554d1b01d3f4368e34d7a847db33999e1b539076410956241b66f64769b918a64007bff8c0e79d965074cd -828f899705e275454b0e0c8ca03b28c0b29a553b386475e8145ee82e7e52df5c40935b2e7043aa5884c72d82398dcbe1 -ab76d40137e655f19bf82523a8eb41217f36e3e06465defdf7cb85f3441e68632ff80cdcebdd7e32d2dce1d1f4944fb7 -b199ab7264618de46abe65a38958b04837ba0f09f142c32df13ebfcb6d744b2e44190e5a75f55ea8823c6f24432ded75 -8d29e36142521a5698358e1d493a0f7050540b7b9d9ed4189e9e49cb209fd35d4376c7c775e845b05b6e76ae1e0b753b -a74827a37dd70e170652a8419bc9c764fa5865c28b82a8da32bb0204ecbdfe6937fd12c358a1cf84ac5105d65fa18491 -87d8858eb200cf06cd79d0b40f6070a39cc068f0545003d58715801e6235764bef83dc1ab5172456ed62dacdb3822446 -833cdb0c49295457f0ebc2d0cb8529dfdcfdb374aad5d795e9269b329a3f42080c4ca6c6bd67c26112bf353af5e4cb48 -a6ae76017f72854535b900fc1b65c66d664b5116adff8ac5c98f4ce608394322fb1a55bd6b0d0a2a48cbcfad0088e44f -b4b8e550e34f4dfda5a9a4728a9e98df7abeda2d98f59d2d669f6f2fef67ccc3cd84338df86246ccc3265baa33374da5 -83df0f4a96b738a4c7ba953383796e4104f91161e277c75929b868bb46ed7ebd6f11486a538198a79c5d968beecbb80a -8bf116bf11a6cd50f64658c91fe70d87037c26737dc27c6b2e847f58ae68c80c5e18051a052855285b4aea6a2c59aa0a -94282145933642e11dde303fdf0a3acc7efcda93d690ea1101e214668b32880f60b166b82857f226903c4035d0ddcba9 -87a386acadccf0657775291b3535c5feeeb8b539ed87f271649ad86dc4d627373004511cf5b992d32d0547f78767d59d -a2ae82489beeb713b2ccfb18864e3d1360a41245d11d5e0540167a4c99c786040af5634f54a8e932573491cfdaf12e4b -8155252708565223b5b16912ab6a3065074250fbed4531f00103ddfe70f503d6e44fb2840890d7e08f7a43163bdd6bd4 -8bc06269ca1c01887411a3f56093adf42f457eaa4cf71c2aed68d93cf33724551fbed7eb7eb6d9e175958261c3320802 -b56dea9e21465d07333950947a5ee834b4b65ec915484f6d3a1aa1fa139f590da063258bf836872170a7135ab77cb544 -b4814a15ca0e84fe0e227580d257b6928d486fbafb119c2637886cc5b1880c9f32873ef86d67994676f06ce5a370508a -a966818554b445a5160a4a85f645451d410743e5d760e8773bbd48d696a6812086ea4cb04f4560118c3abdcc25d48c3d -9487d339acaf52f6e9f4030c27aeb1de03973f8fd2f22261e52cd1639dfab125d2452907401baa2a3c8cd478a6d96f31 -b637ad911c7fe2df1415a0ca46c5d89c3c565e45326c11e1d2cb7ec0b6de4f3979005885f686a26949f92e07b872aa17 -8515e583b2c9306e200d45bd463eaf6b0825eb8305ccc94f0df3c0e4358d16f2e74ab6f38c4e41369688d10ee773c5cd -814d548f00c441a998924ee541e9aa6c7446d671dd5903d9bda4423d0e0bfbcc17a60d67d8dda5e996aa58bdbac3f286 -82b06475ede16ca133f51f7134543f04d785ded9fd7ead6bdbe06a88640a7eb938237739ae0c25f7d7d31a4dedba348f -914e544da2241f4f20e6423e71ea9d61faae3170470716828b1ba085c3add2524fe8b7fc829983f183df9eab93cf29a7 -84e7dedccff0096e76f1da10b7dab3751b5ae11ae064fb73fed166de0b443513bb5febcc9eaea70e6428f370ccc00cbc -953a96582c03ed199ccb8b6559d917e10b3fb68e26cd1d79c55d7170d47068bcc2ee99867455c7515bd39fb8aa65f559 -991b6bb0d1c38454b66df5fd994f1f7e64c86cbbfc1e1fa9cefe43a3abb99d587ccfaa3917d7d17663d666ebf132b208 -a53c895486d4f1aa1ea51ec40480af48b605a793bbc744972bda0dac7537e34209823e7a209054b55baf72a04875cc46 -af2a939b6a1fa9c72a3f17b924e8aa79f30dd31e885a019429112bae06bd1ad1161d4e8e637d195a1f3f58021900215f -923c825c417049b5e54387d6b2a54cfaef5b2b3e5670e365345143c5fde7e2e7a97d6a44d46a508fdc5cc2e380342271 -85fb356bf1cd8608f37b1345af5a3989772eb2ff57d246902591e3ca7cee4ec4bf3404887e48ed6bb665865edeba133d -91f62dcb8f551ae315fbd364170ef5416e91dcb7608e4ed843304b7c43ee88f4d8dc83cfa17b864bb3905c6ea66e8796 -8bde8af0e6946e8c3e374246fb8a411c1c5d60be7de0183c4904eead260fcb928043bc7eaff317909596be4eb1eada53 -b5b356d98dbcad6631a9880536c2fd2865457f12771c5c93cf8f50e833515ab170ae90ca88132596bfca4ffc8663cd3f -970fa9633dc4326cc46e338d9cc33a3342a48ca7ed37f08e4212ebd2654d550cd49e6cd4e4c9c81bdfe790f784fc7ef3 -a6853617e34061b2a7343f66562752412f6536be4d2dbc0d497feb1d8c433e3b97ed733f0ef7ae3bea8d19947258382f -a9e0b9cfd54f565fa5338add602cf42a6f29df615c10f6411f071735a20c528be78cda5ff0a00c42ca995a02b83db048 -82b04be368041c9cfa86388159b7e3251e69de821ca812499f6c3a5b4617f6f7405716a55796ecfebce1eea91030c648 -a1de66607ae339df3ac0663c17f886fbbb3d171b4409261c6f6ba6393eb7d02c8d411501328092862697b0bdf6049209 -a3c87f4b678dabc307a13a3db0399068ce6c5911741c15626859b33a98f8890a9d6b369f9c2b0915b72dfa3df66f6865 -afbb00da7cc05ecb3b0f3541e95fdffe7cdced5fe7534d7a0baa1231ff108f3eac91081d74f2c34153f9415c75989f5c -a6d5d93bf144bf242f87587d24c75e031311a9783a9626dc4bcddc0f5f2ad9aa481957dd34ca8ec1fe5bea6900577ba3 -850b02856ab59ca4647d58610856d945cc91b9e552b2ca0f177198eafbc7f27304ffab5601e5478c0d74b7a1923f7d06 -8709938390a6f908e5da062db82db283eeb4088b5dcbc9d98a85e70bd70f6e31a3bd9b4942dc8a784ce0e414dcd1f3eb -b6ddf34b458ec683512b64d836a232b8922c3b636b73641186a086238cadd2800682899e51574b1cf6bea6fe3bdbb031 -99e61922cf2af203c20ae7d1c257d4a537d4090a88638acceb0643c52bd6324844a800338e758ce76e5af21465635a75 -a398a441646b0cb0da2a981f3dc328a2dab3bc30d4b1b2631fca87b4876376d77284588a95a3253b449058000e9487fd -89af46bc559c9a1774c50bd52f19eff4a8912b368c2c07f16ec4842fc99c453bddc819604f9224c11433c87c018b8451 -ab79ca2bd57f367ac093096c2253e50f2b89e830d1d03fc54611dcb53b6cd43a17333cba1e8ec71c3c686a72ab57fe12 -8a1bb874c06309d9b955153850b3d7ade8438897a664a7d060366aa41415081b4d62853217115339dff7218777fa3764 -b9ab9b63f9de036956aba49e2b7ef84ecfd01e7e38141ee455d9dd40266e5d20f23c354ebfcc584d8d522a3139492872 -b21ffbf10b8cb1cd407ffaa0698083b23400648cd8261ad8ead00546e29aa4f31d2fe57faf03fbf82cdb580c6c68a822 -8fff4fb6964c648ba78e253717c12bc456b20d9592720d484e61bdd6fab86cef2a05c2753b19bde2fa34e48c5c6bebd5 -b15e375b81351549d84bc2ae0b15c5d533714caac8cd95af204192871b0e64a973b0f1eb43b00f277f5ae886ccb759f7 -b41b4335c44610752c02719fdea71d1a9afb55ed3f9525aa59c5fd5b34516d1d59f55627f3fbca6fff2d51247ec63b55 -9a003a004719cf96cdebb9da4e7e873e06c5a6917c88101a41812bd1e454bed7c6fe5c3bad0c91694e687ebb940e09e3 -8c4c051cd89d768f292ddd63cef95ce981185b2eaa6b00881dc4e2d4575a27585216151177bd3c89b0768eafaac0f314 -b5175f65864201d28304b6dffd1afe1e2bf6927a6e7ee7c2a72b33fdbceee6e8f038865aa0792f3497957ff0706f4368 -934c87e853a48ee9d972c598a869f0fad72e8aa08f9417a610de42e271b596b94799e3964a293050bbec68acf032a4a2 -8366feeab4b7e9d76981a2f339af9f2bb5fbdacc9d8f42ae5c9f35e3fb3a0682afba1409892855b06fd844f23de3fa95 -a7f37245d59907265403faebde6744a7e49900720622942e1807600eb12e30922fa2f31bae169ce03a03734f8140b0f6 -936b72ed53cff2899bc4a3a1f4b89b5952464ca2a392a743a57f32196b74b3ee3e2730298f927fc82344b5f7868f1106 -856c52396d73cff6fe3163c8e6a9df3edae08fffdabe613a6c7b571251b033f96e9ed537563a50a1e1269d94bca4151c -b2752a0fde47d105e961271f7a7721d6c00b05b450b9139776fa3cda88b5a823011d3f94e466aa245bf6ec65268a4c3c -b68de7ee49a342d05d081269c326dab75effca2640a4a8e4137187b17a2fadb9932f20005550abbe6b5ef7920cb80913 -aeda9b96b866e17ccda3c776925526ecebedb56df894ee4ba42a7175333c28bd3647e346b0be48151646422108322eb1 -810d6c783ce2b123deaf084b9a83474289e2b5f27f25375367f152662698a90076a3e0547e2cb2f5ce55d435bd6d8e17 -ac9d3ee378e6bc72b0ce27850e6785d3cd2a0eccfc58f9c1a57674b74145df788a8945a25a9bfcb9d92ebbfe3542a862 -b6b4add36e2833ee62c6e3af170ab98499c78393bf0d9a2c20ce90c084f6fb40d194c144e36e0ad858fe04652244d196 -aacdba3f33391a6d77717dee3b657b8d9b1959f0ed69086051085213b5568319e92a7e2f4244c8b1d08a49607fc2e785 -9612d7354ea9d498d084cfcb16f40448a41f9fbc8577f9019484f5e5f132c906516968df88683736e3be9ea56ad307df -983ab9562091c6c22d679c490ec87d509284184282d88bd595d0654656fdcafb990b94686a1c78d9b3401152318e24b3 -b26da8843d02ae4d7e85eded2a14ef42ce8c9ed8de537ad71918ff904200125ba5a9dc6dbf91d88a55459c583f6a0c51 -ab1ff878d5b63be94b33bd2a020be63c2224ff2d9f280384a736165917292951b44941d897e5931642b5cd515d0bb21b -a81e4ebe87d8c1e3a7da09859da87f5a41040a288246568523b289b4f462f2dae1ac2c98b73566fa5af64c45d9a38f12 -93a09c17764c560deaee921d7c4d201244e07b2e29144ccda36897807affb915ad8cdfd552508973a7e85443315bf185 -8a0bc818074f839e7c0f8ee790c558b7cd2b7a5fa2579e558de8e8e7e24f58a249993802cbd41e592577ba4bd33a8d4e -841f3155709332ed0ca4de91f0785f544e97108df112b8242d418ed3bff63291b8a6441e44b03d0fc4db311ca657bc6f -82eaa6dc58e10042585e49c981ecd01f8b4c56ef40cc40b834841d7c786e73fa64cce3b49c0f08ea425c3ca578d5facf -b2914ff2d76c214039bfc251371de379cf845f2c554136063af259975a20e3a879b4d7b953f2e6077cd55aa1663562a9 -826f7f3d2e018b7afebe844822045b075801cb3336fac15267de78c4955651c6b5108169edece60ff0d79e2811804ad2 -92a335d7a69589aa8a6746a4b79ac6ba7dc0ff2e4a39138520139b2226abe993add64dd021336191eeffe2320c01b806 -8769450d7a06b03687d851ff4af7633d813763364804f1f282f887538e9dd8b73b8f9beea842e801702f3a35b47cb007 -8bb1f1a0e4928afdb3d0573f0961bb5baf9b0d8c5774d72fb47b9c7bf498b54c7ee313849929291caca0bbe8d84956e1 -96aa07703e73cfe7a07495e606f232eb979d43136b45dc09a113b9118fb60f3aa87fe262863d06e29450f1d5986c14ce -954b63e620202bf53f7a218a8d85b4d002b10260312945f476e6cb418a061abfd6609d8fffa9a74ceee974144c2c6a3d -a5bbd89697ade42f596923479cc31d48baa0ac2114c6d8f81e9c57e14e6d560d13d594eec7cf41978bc973f430155ad9 -9438a12e32aa515510b99bb1b1dc498399dd73738f3e43693bc1d8904a48cc21cc12e465c020e89d60f1be97635cd46b -a31704645fb8c1c10b356883df2ddb170c94eefc124ce0a6b52952eadc9c7c58103d8a6783b9f63dc436809534686156 -a578b4603526bfe2ced9b3d33ddd105f1b13515f14e4b64ba86cdaafbe8e72e8d541174c6ff8f10eb3a0fdc14ef0fb87 -8190e840190cec3180eccacc18a06c64ec2c10cad9c0e5bbd4d8b33ce5f92c7aa48bdab7f16cc9fdb59b485d5a8feb19 -880a7eb87c08bb9919c26143b77dd02009274eeb872dd4d2afd1a0ca9bc16d883f5750af1b8df2b385955574560a9d35 -b02c6def10ca7e11ddc6b4f7ee82e8a71770b096aa4471f34f3be7984795c518b1b0993b3a95c240fb2d8b3009ebbb9c -8dab9465b51613a08aca9dd5ed89724dc621cffbe854180c9fc349186ef43522cda30aeaf3bba2257ea0dc1c44e9d0b5 -94c4b590eda9644d443e1f5bd2a9882f5607b5ec02422b0f0a122d39272532dbaa64955ab85fc624fb1632911942cf98 -8e28830d75e787daba69971fb7c8908d9fe9a1e10d8c5680d69b2bfb5075a2400f490701725c2630e9d257f6bb661a93 -b4e4a18c10163c0d48beead3abebfa11e2de9b7a4fedf2ef9bcee3833858169bd4028bf70920ac8072a2646d6d3676e5 -a5ee5938e1e660245ceb17694b0f78af5072bdea8cfdbe91ab2ed82a172e8f98542befa934d4893e16c280e9252e17f0 -989182ea9a6505746fd56ab54db1f52536e820cc4aad5c680539f74fce835611afd72a893b9a01c91ee1432dbcaafab4 -a810d9b591c63561f91e50e81dd9ba78f25cf6e11937e9ef71b82953d8420292048f72d4efece0819cd1251bf2acc080 -9199465d63d8534a815c9dc600fe0a947fb46ab729f8d967dd4c74f7ef5f5828c2fc9b025f016387e5cabaccb20cf459 -b4c7c7708469c8cefebf1533958bf9287bfa68319a2a5dd8b4b80de5838b6e8ff48a35abe0bdc441ac747f62d8a5e889 -a2fd761a066d5aba3cbac530dc74b061733dc7fd1164741729194c324a4909fc337dedbd8cc6233d81977e16b073533d -896ac094f7bc7616865a02dd345fcd515ad401ab7431d2db8559747abdb8dac8783e932f6615e70ffedbd0a192497935 -962418805a1540fcb471261263c8131ea4852e5743cb55cd389dd41a2bcc7d7cbfc66a7409ec2027f065aeabdb6a0c68 -91cd3c9c042e447074a4e81788a9e928498dceb4582afe96d7eb2aeda813ff5505863bf4c22342bbae3766dc5c76a4dc -8f9bef4d010df67a3a6273e81fbd82c4b684047ab644bad7d075cee39a2b110b6bbbf66be37de53bb3ef737cf384ad9b -b172457ba38a5049fd435cfda214bd886b73507e8f1e4f11244bb04abb1ca03111efa7bb0120d2d077bbdfe47979c418 -8ea5b73050aef2c83a1ca89285fa2f97fef3c154561e0e14970e7d3f64376590467e12f6a7756f92f5a56bbc62601a37 -8f211ff10056a4969916eb42e03cb804ab827c8a6acd65e9c2ceea50619e3c2a4c251a0ed20aab4231ec24c43095a227 -b6a5304eaa1971a291e029a0c745e509fe9e2972ee8767c0f6ea1dbdef74e949bad4f58300db49bde7db51847715fd90 -a75276fbd3a4c1cd7741976c3322d850e205077100309d8ecd9a75a37e7cb98502d0a1825c475873761c688d97bf44c4 -b1508cc9de8bb9b4a1ad1c3043ea010e484a47a800c0a0d89c5b1ce48408d8b0cc4ee9a53854e747695ece98998d6020 -b0bd8615cec78ed275af10f8f07862d46df627f2eabdaf8e2c0edffaa84bb65dc9694ebf6aa203fb046879ce7914dfa8 -960f0e7eaaa59c7b6d56e45a28fb70ff7af88f5e1c0f18df60991210b053ab9b266abc08632eedf3d2bb9220da794e7d -8ed015d0b5f0572e034793fb7c4c95a0bcbae5a37535839dbf95c963d7b42bc4f3b77c57942b1b9ebbd3992b4d2a69d6 -83374eb9a0737a0e5044427ae20e69626b23376bd384d668327f5f94f4b6434e8b9b3cd474631d3173960562f5bf6489 -981191b111c84522a203da8e70d4e6705511760c1b2eba4f2dc7d26539aa3e78848d3910b89cec357ef00eb7bff538a0 -8f1fab82483781b0a074cffd02c31a5f2587e4501e013f41ab4cc4c82a03daf6d2f60ffba4b19013247dcef3a95700ee -82148cf05f1bb1a6d6f359fe3fd50bac49d4ead747972a74665fb5f98e494b57c36574b4ad888cc145ae2f303bda04fc -aaa1aff56f4edc7e8c418497133d3d1e46553e9af968288d357a9ac371c60a11d69329081888bb6e4b107c3d889cafab -b8524852cc0d960f55b1bc2522582b6e8babd030eda069f1007ab239ceacf9ffa71843f65f13d44eeb545690596ba98a -a5c548510e4748240e3fc16eea453460a6e79550dceb1b4915494706deff4b5a81c85ce0e671417596b94ccec433f903 -8b811108269365c612cf79cae9fe5bef5f26723779d65c9d691a49fd5dc2c4d0dd03abf306870b968a17f2d844a84c92 -838dada292006a290e595809dc7c90a1cbf30ef86584130a6aaa684a5345db729f23c37804a2c53d1fee7ffe98f2cdf9 -a07b85a33de86da460288517a4edac0ad8c90d1b345f94bd865267aec70afce7105fd3a6cc8c5a46fe597ea12e159c3f -a4c7686a5f089cb3c22220381050e241b3108078fb25d1f76f9df3ff047d939c29c7817717a9043582d870ccb966157c -845efc33d77bad49de56a86db8e49ec9d7b63be4846df0f8ecff24cdf2d483eef175fc4b86697aa4fb9ae13e50d34bb8 -b07218c43d7dba8f3828164e45d95a2145982086fd50cc25e020192f5f06fcacfebeca6800af122391361d91b5c9b289 -8ca01a848cf2c4a8d2494c3676df2ef21a493b302ef07eb91f35c86a037bd257115431cd2479b238d3e6704765783b39 -b888fce4d308100b80db530f77b6fa05aae79d5ab37424503b067e1645c6726ca853ecf464159afe5c21e2a644e7fa88 -894ef8a8981904bfb3bd52cc542bda628e4753afaa49715fbcd8e71416748fb3ac0c3a58dd99ad92a53846c057885c21 -84fa13dc2f74525c5608236ce203a725a6012377816217570f11f49c07cf0805bd65d07a3a3b04ac3f0216c08be03f3e -994fd004f24f7a25602dfd673ff0de7d25e0f8bfb610a51ea1f5f53d62744ea13e35e07f1ca148eceb0fe5046e8ba6c5 -99d9172b43c5c3e4373839a8750eec2d9d116947d201afd3489bc756033a4653439dbcf2bc17c4b6f89d5f3b755938fc -8c48ed35c377bee84d981b639fe51384dbde6aa9d233338bc67576e80fb3295c7680a1360e80d4849db15e1e6c96c177 -acb66cabaf2f1195a971ea6f541966daecb14f6b38a4b14aea1d533126c619f47a578cb0b0140c83c4584aebc6a5f7e9 -af8b47dd0a428ad4e8bbfa79ca4df5acdc09788bfa577eee3fd7d9340dea40cc3eefe0317cda42081cd6758145b23607 -912241030685892c0a0f7b506af2e91770c5d46801e67762290546317060efc97a01974a0891c7d80016d3c981e1a33b -800a3847c01658e9254994c7c2e4cdfcefda1dc343b44e33a614db4fe4291bb69daf52706764eed00afb62c765548742 -93e4b46ff582300334088a34ac79f04ba952594b37dd600ee1d98def5f9f68c6104c61ac068b52e58d8018715e973909 -8e7405ee05a43ffccb09362448364895e366e6cc44b487c4387785a43db294d1d4d30ad5ad0586e9634e5307d3ce59d4 -a9945e23d916e8a91ade76764f3c8e82e0e84cdc75bb00fee29349a1d458d818139175e6bbb37431b10e89e1cabd62f9 -921503ad71f7b5bde9543deebcb26ef07ddd80de728c1430ae6e65fcd77f58ab3bfd96c5bd5896b299c6539786eaf703 -a1eccbcef6078dbbe4efe50d9165e6422efedcda8ce6e034159687fc4048df9a3b9b2ff0bbd064921213b8e3b9e1c171 -b26e68c4bb858c8abf57639883cc5d3361fdf65b46deb9dd072470e881fdbbc3d5ace4526bd78ee54302604b3e7588e7 -aefbc139edf03596be101473129b27d0f8dc0e3de3c0a7a15860c461f07be21b6a5ab64e6c4d02292b3dec6bc906e1ec -b01e5628810d4954d47295436d4eae0b7a2342158ffcf39dd9d0cc3aec88fb8f60f7ea28715598a3f84cf74d7db21ce2 -a08503d0b996dd7ad60698f53c2897678f427e3f73f94676339cdce01a878a412d49c8ac30e07ec401563498aec4193f -a5f0d9ab071d520d5581c8d27020c36427a8510e0a5cd3ebf4facb5b23a086d0e16075c25cb27a76ea3c33b66b801043 -aafa15fa92e0541830838049b172d51589926d46ce332b0b4842762bbdd5d34ef08542ecfc300334cc04ecb3079da726 -8297a2f4fe289e80197f37a6c470b53b4ebb7b981edca05f794cde9f99118e18a351e7cc545dc4297adeab7f98ccfd1f -952628464ba502253f7c65baf8d9846b643bc6d2e2063d9950cebc4f038a5cb3b8ca6de03696ecdf5b4a8b29c8e71673 -89970155c803cc2c40afd62772385d013be58840dc83c707534d045af75eb74f23b8677e76425209dcd7eceed7dfaf1f -90b8d942f2989392f4844b50bca7db21e76f9ea5203909a96ee344a780934e5edf1f93ca986c90e489844e87dd0d757d -83f524793024a8e74c49a62218beaf7c9cbd0f19bc846da048063590e358f1d7f08fb5eac4967f45e91d618f7aee389c -957dfa91c79b987eb2f841b60fcaa6bd2a068b822031e812ca8aff521151d1cdeb182cfd73ae267f28cd5dd593172764 -a56c349794dc95dd8cdd6f46ab1af1320b7b930679d9ed7086de286d331166f97451bbb73c92d6cf8cf72eda9c9e81eb -af8a86cbb980cdbd1ab653f5cc520e446ec4281dde5fd2ba6d8c9b8f2a6b2752abab3ae114f05c5f83cccfe3e1ffd907 -b1f909066c8dc5dd144fd9072a2f98bcc5341f2423f213fcbd77ee3d175e0580f712e1849d6d0a93ee4761c0938b43ce -8a5bcd3d30ffa1f3cf3832ed95c9196412cce5b87d5489c7236e09ce753502fc282683edfeb89ce7f2cb9193e58f9a13 -a7d56d4a3829d79e346f37869492e98231b780a821b620708e604ca7cb44c54da9eb7e64257af8cfa29d748675b84ccd -9823c5101bf77d1bef4990eea5bf977d51bebdd065efabda6d9497eaa612fbb28e4442756b4f064b1dc404a4f526e062 -a306e649f4bb8c2fdfb2c4b4db44e5517d8f140d25f67116c70f4f5ba945bf2c6bd141c1d8c972ab97549ef76228b3a9 -b21a29d215eec2a859b4116830f3aa711385eed8f752b41bc0ae1a018ce26eca95d580cef66d482e1d93b9b13e4a0415 -9718ea189c371f7b5ec0bf0a7c021914222b0c0c097fed2abf1102b891fc9762447288d5b6e0540249844cfd6f8bc9d4 -97af54e990253d59462da44512dc9fdd827b19c33ef813897ac5c19eef81f826227ac9d5aad7592a55de2201e538aaa4 -94070ddc8ff58e7abe8f328bed1ff68ea40f2fd35f59a0177af230ccaa27dfc6de5aa1c355bb8f223a0729f253c8bd60 -a8ae193739dd68590c6013e6d39c7d1ff42b1ec7a23ac014e160fc6bb1f38921d52e9288eddb7a3c8f1e9e5d9fb54b4a -97f1a8b05f21174283618eb824f6869daaf307090944539cdcdb939f186a1f4b71a7804bd3e84e04e18ba785a843e9f4 -a59b4b3d7396f91cc5d2a0de81b64e392a4d9078068550cb604ab404155d0e9f7d9b24ff5312f77245ead90f84404812 -a91e9b1002feb8a1ed0428623dca3716824f912fb3ac8705de17347a3c3f958666d4a9c733f85f7c7889b0722f4d397e -8aa7e633c4302b2600102ff5be6ea69197912ba5c996281827ffa2dae626d004eb0e94ce6d2e56421d3b1b38f6c4f006 -a85bf62a088f01945fd9f106b66d05643d6e6dacddb1cb1a4862c4dc70ffee8658af000d59f14037121a255dd748acc6 -b89327857364e08e3282a7c3e1e948d5b471e7cc01c12363fe288a2288e14afda0f4f188d32c416bac0284956cac7d47 -a34419cf8c9e38cead5a4799fe9adfc5b163992857ffefdde31d4d3f7b78e1668f3c97a5983d8723a961b1c1d7a16953 -b3a759078c30c9daf097d4bda7e978a8c890b9500f448c9433a3a6a04a1fe602fa4f2f8579c835b308021ce9dfbacbd7 -adef01176472a6b1e7f754343431a6546e585154b9e1b8c8ad8b0931871915c4a1f4ea1191e97945935de8a20ad15935 -a5bf71db271304c3f7d45038af3edff9a8b46ca58bbe0148b613eaf10d0d9889f764fcdbe0d5c6679c60821a70e7218c -8631082f83a0425dfe7804e5353774d94f0aa7e9ea5b550496a467a9004d6f2077780731661cdc98bd1678010a355429 -b94bde69b5962235352aa8362534d81ffb7fc231a4bbb2e3b78d21dba6b4ca5803b03019e0ea1d1599e4fd3b0834d379 -b0ccab1c13e0433401e13ebfe2c40de50f52f64fedc0b40e21b8a16d454231741f37371231c0a71e25defdd27af4958d -ab39ba2f15003bf2301fac132672b30b8f9ba56914f735cf86e26d5b18b9ac21f9669e67c4d83603b9832b19355aabed -b40f050f37e61809d528d4c5d3bc1e49695e148bebabe1258db4ae87b0b3f867f96f89a536fd552d9387341f982268b0 -84cf939dcb36c06287aecae9af6c1f10b7af60b95d5fb6835cb24f3de00aa7d29b3a183d6b5142e51910bf870b7beb28 -b876413fddd2841c3bdc5f68dfa5e3474733980305ff3f1b23a9b4c79f8c21147c70b85756d84b7f90cd72d81fd619ca -86b94bd8b00d8c58d847888e5d3274ede565b7923c449eff6631c22e3287d129c43984e0830d5d4a56a161ab87b6ff0d -8fc42831627e6664e0069dae30a7745ba859990a796caac5b35da7bafb76cb3fe6d35c17f4fe18731b5557c80286e1ce -8fc1634581d595bd62a2056b9ffb0e1f192094adde9372c2c2c962104a03ada6a24375a90d841ab59612b143fd323be6 -99e8b7d5ffc168a6ed63210828445e5a1d0c92d0af838d68be18f8c1933c5eb3ca2b2de818ede8cd286d9601df807195 -8957b5411db6033291e4a4eb3c371b4a0d23e0cd32e3fce3223a18daeb6c6651ce52d3ef8e148231e4122ced19f622db -a953eafc61744c73850370bb3c668026ff7da4c6111225b19366ff47171602aa7e7b804a07d66d11a7f846a4e1220c9e -911ac05cd283720ba6c9823c4a6b0426863e6476cec90d04acd23bd70a836c3840c92c1c736fe3a00d228fff0740f5af -aa9971dfd2f849afd3f543790e88ab0a3564300fc92fbb2e6d07ab2a3924fbf823306e0e64a4e61c3a3c29b7cc763331 -873a07881327a1b7cd89adc4378d345eb7e7ca8b07183556efe14256fd80fe815b081e222eaf1ca999dbd127276782bf -a3abc764e38531b0faaa02d65b6d55fa5afe6718171c90b6881c62103a5f522aed8cebd9bc7646c22698bdf80766df3f -8dd398d1b545c53e760a317c5e8986d30be632274f844a7307693194f922c3b64c57d6962ea2a08c3d038638efe05c36 -afa3cd1d7fbcbc5457d01f8c81168e742ffce1eed1c0ba7214e71877e4b398616b61c72deaf2750dab561bebe362266b -a98301721ca2749b525eb7d9241c16369278ade01efdb3243177994ced890e85ac2866ee1edebb095a93c56f39343375 -900336e57bcbd83343e17044583d0d8554d4c30cd24a6d24b7c3ffab0937d73afb35b6fe0b6a62180089b066b1077504 -b4c301de41fa4eaa109953cdae91d7d7e07e99de6c24187d386c6b039712a6545e078dd10adee6537e9a3fca1a925449 -89f6ab5eb0e3b4d0a66f7f0e6d8be3b2a71c0bf17770223c986270b4abdd970dd15f38952280247dd5d7d8530f3aba07 -81363450b997a417b07bce8112e4bd8ceed7c2c926a41e7330bc932d8beaad97b3c9476624e42f51be94fe3a08d3b257 -87ad66a0cc4f47e7c67a768017c6d3ae7e2dcc79c45b62576e0c974fa996f1d8129ea61370b6c0fc96d57ae7f5ea7ee2 -b44fddfc8363a00d47e8b4a68610457363f0573f3334e91fad0fdd455f77b7ae53747771133f623179000e9754739197 -953ba496feea7aee5681bc6adcd94fec4c193b25d3c4e91475c2678dfe538798fbdbc3a2ac28b5fdb1d1245fc1694e8e -962366ceb249f563ef4c25b71d398fab8ab2390e530f287eddd35f36b40456ec7475070518d743496c3c81e82751ba54 -8d99237960349003e9af91465bf3a1f05b0bb07668c2fcaa6c117213fab7d9fea045d444df7847688e6f9ad86673263d -a0a7dd3b99b0081a89f75d07b62628836a2b8aabd0be7388148524f6c3e7f81f8c7667839200ff24db4662b0519f8849 -93905293e1b4bf83b693314495a3eba47db401f7454fe643300ecad40b5a7f95e4ce32ad3eb69321aa154d70e0bab49e -ab9418b844163d0a65f8bf5685bcd65c33cc05e8baf67d39b189ec11e6a5e35dbc6e308845a9bb87436ba31d4058f9d9 -90faa906332541a1e2c1c920d1a522794acc5322cad37fa77664b9a1a574dcd4ca11f8fd74fda5201ea9cd82f16f1cad -afb9e5f8252bd1c54afb3afc879653ba0353b911f4fe280049da34112c29f746a23a6602dea9854a8cdfd489dd2a8310 -97f5d30727e29a99c9293f24379d959cc12db68147c6bfd2c9c95c7ac900cf02cdc751dace8b14be742d56c98f987228 -855aeb6d1123a470a644494c31aca5d3fe2eac8fd46dd33596e75e08c6a8a9d7bdd2786b1b778ccea734ed66be31482d -a42086a41f49e5748b258fd1bbfcad7ea68b9be599dfd33af003e0ae367ae1dab1c4322c345dd6c4106e8baad3d4773c -b5818cd4a83b60d1cd3b217b54d40e10c95c786aaba40909e8e91dab2fd72bf60f245ff6e4e0eb6f33d6447bfb2b432d -a53c70bd904b5f0db90ef096774d2a9aa7bf7a804261b2145ff36586b7da97d4a060a9d053f44a4d786b0ed6591c71f6 -a30d2977551bcab52d1af1d76f1858d58d91e64a5f17c72041717921a104dbd79d16cd9bafb3caa7367f547db2bb7b5d -b69c7bf71a97af9032acb2729e0d1f3ef7f396584228eab2539aabbd249e5ebc072927dd2bccbed3497405e3191a92c0 -ad560e8ee9821d7f65e4b00cff74c9de653ee4d8d21d180bf576b1be9538576681c10fc3818b04619ff67f4eaf68d143 -a1c2fe8d19077a82921aee2ebe09ea9f9fefa03eb139d0332ba5c2d339305d9abc2f13a5fede869dece520a727b7180c -a27ed8b82d83ca7d811b77ad1ecd271d50e3a2424ffc21c799b96f5901fab7bb98d226c6152ef5d8ec09c00445014307 -b838327b3c0f94e61a75ae7a8d24dddb63ad4973dca7dab35ec5fea80b47dcf5315da38367565f45a079ef500a5f85b2 -8bad947099d91caf0d7000deb2f30d8de55e219c32a479a767d1d194c59b60a80acd67e352bf55dc69adeeaaef035fd9 -abb4e41d1cf53d678cac153371d59db1afd9558f4a57c0d194c2adb5510b074811dc2240e175311110bba4f7fe96cd1e -b775189bf863b8d9a0437d1eb4ee462223b6f577fe018e082b52b1150d4f9429a457768fb54aec43f3004650c7009371 -8cf5148e022bf824b9c109e3a7e6ea3f9e18c697ca9f0c87f14dbc83292eb9be6d3be63196d876c43f351080d22a2f4c -a7fd5701ab8a86b22a564021d1a9c64f0950fc2d9d73da4760256741b9a1d38ece6aa6b09c4fae79ddefb9c7ca2124ab -85f334609d8f2e1aaa90f9ec2fd3284998cb1863ce9f74242311c575dea8119367f3a3fbfa8261188358269ad2f2474d -8aee9698351034bfc8256e465d4a0a9516858aa9cd78417d80d99eb85ae1516847f1bd3b1b0dc935a1228f704136339b -a8b657811da7af90d6adcb6a593f7e393dbea46a88fbdfe9aff1c5b3e6b71a2a15054e4bf237bfa74268c0828175dee6 -ad8eaec222113d1b25d70eb2d72aac43e42a7d706ce6ed5539e10566944dfe912e640398e34efd63b0dc8f4d3c90f417 -91cc05b426252ac6ad46fbbd55839d6f18489c70a9f1374006e80f49fad3458f7a6ee7d48292e42e38ac5206afcb6c35 -8566a697b01b14ad3d7f3106c1a77aead26b5ea8386ef481c486f5d915cbb6f5d6b6d82a8f73e025dca9dcd914aa07f2 -85c0074220d7ac0b95156227a00e28c3024ef7d5c2f28c384ea8392dd6b8cb10f2ea08c3f2a39f08f12cbc2d68127411 -985f1f49789055455b15d3fae87118b2ae523870c713a03b0c1ab585225638133d39c1918e8bf3ffeda8dfa90809996a -8933711c45b67084e34323238dbdb6b4a7e950574c751ace651e754821066b52b268516ea15d7627d2a8cb6179dee242 -b18d7dd71e7c3e3eb30f5d817c146623384da271e9db8cd93b0a1de990b57779542a80d0d46038a395c1eedf68ec0462 -a746f6a923a2bc6e8ad72281e1a5f2e8fadfb232c60c910bd4a06248ea9f9cdbe14728dbe36a01bece004fde28084078 -8c3929457fab0b88496bb9936c2cec7a536528b52a81037bb24c0b2a4f92b24e49d18d05fb4b4b561c99ff0886eac714 -a31fc840766f6ca8d71cdeb48ae96f810bc93d1391d2260464aa01636ceceb9fc8b7fb04069bc323971779a149f1bf4f -aacc984cb1050c46062cf66235ac63eed0f6aae5e5856d14e8a7d2f2b0e0b6a2c8b02c524d087812f9284e70a307a6d9 -a2f56c851597a137271ccd1404234788b9b8fb4658d86a7cf52d1853d06d59e529f7b590662e03fa10b2d7337fba4358 -b0706daf17e5d489b38fe3ece28446f611e935cadc0afed74ca351477e865f01e7c2b981874d20a1e2088be907fcf3ff -b2ccb9e6a8425d24b1fc8e9393783052772a797284f20ab5fcb0488bbdf3b2bc0d3e7ee1de50c640b2a1331f1ade7bf5 -a311e9a137a00968ed5710553c4e2e6b750b363138b4ec4d8ca64f69724c172254bb388597ddb541af4d60b3230f8b35 -92917cc9b65ecfcc58300780683352ee53e9d97f9c80e6957f2f33eb5715f338c248df91734a5ae311b927810de8c5f3 -b4848cc6950f2f6cf72a29512e0c5aa4809f92dd23052ded771c0d0f5983b9f1e757a3dad0d0f9367f4d7dc959143d07 -b137cd32f617aea12399b96732508a98b9fed9ee1826234b609809b8b6de78caea3efb9b2a02345ec6cd858f29be04f2 -ad50d176a8ed5880bf789808af9e1f644818692c42830035a0de1f2e84f05314540f26b131d620ee3ff06e5520018ccd -a0a8b45da6ddb4ae76fa0d3b3e41c1a0c25e608d44db764653fc9ae386e31f21fc0e3f5d25c3d51acd6a29606809c497 -99169f72682034eb4159181ed7b06dd9d22b92f191b71a9fc1b1a2ab1f1dd1de81b146566824a2ccb82e963f8cdae939 -954da96017ebdb49ad8e37d0232772272e117b011f8f27cce61df875e40ddc020df7e13202b0bcf41de1b7a70f696f71 -b237224c78c3603bd96afdff5c18df4f34394c5ac6e9f9464a02c9ffe05d336b7c99e774c1c90741d9a578d31b330db6 -ac9acc3b3aca921cac56262c2cee12838d7a0fd0a6591a3608ee0dd125f4089e9e20341aa30dfff2b350c3e731e84c03 -9736965b0a62f6de4d7afa08f73eee59d13207be3a8d6172a9afb8634708ffb4f3b57d435be1d46d129e67f7484b36ee -b66b26ebf416dd77533dd99b0b56eae07acf5ee1d25601c86273eada15125909aeb3bf952dd6edf51f487b0e72b5e26a -92969a53a41c40bcec986bac33c93b5d9d5e2eb75da29de87d2bccfaa0b6e064f0569e6d5b073100dd337daa1e796cff -92bdfcd98d045e0382b824eb85a7c139ccbab610351c121742263c67019f33eb1a0610c7205c48a0d0b66ef4e0a74ed5 -8ccef40286790a5821bacb43e62f2587ca8a6a39b75e571aaf7b23bef9dec7baca7560568beb5c4c2b9f0e8c932cce62 -94a7df48ea09c5a9447e8ced51c2ace333f4faf4faafc9e3891c81fbd124ee91c24518d33d4eb9c098a39fb1b7924e20 -98a9104df26593e242f776a7ce01720060dba0aff25964a92386912917922e683b80c92f0ad05d2cc3220d6776a81463 -853339a66cd99d55649f871cbf04dc9470683a17dc146205710a68d4b6a2eb3c5b11ca90a01eaabee3570347d4df3de4 -b4e6ebcb474f2492b603254e40def81501795cdebc5f55f8da94997486e515258d8369418caf7b0cafcb78eb6d12eee9 -872db3827d863bf86b858d0eb5bbfaacc6720ddee05df3f7f71aabfef4f00c30ae232dca52d76189eed6b67e2b9bc459 -9774fcbb9cd74304c3300a577bf02a7abb217f8baef4ea9e2e093ad4671f668e9620293c5ab79c787d751959fef06d21 -898a464814bcf68bdbd1eca6f5135550e9f6269381d3a007b9af3d8635bc1deaf975cbcdc50b8bbc7b4250ea1a4fd913 -a9483156760e5716532e81405e332184a2861444a91408c9309ad2d602f04276ce55b6ab2c80110049e8d1fbf6454f99 -b2b849982a14f02a493e6d4f87dde41276e3c9052a5901ae1bee3d8fa038fc8bc3b9d6bf3fb32c72f4e71b877522fe58 -a1f4a0c2d733413e77a6bf3521bd14847f73d6407cf687cbd22c9ff0447bbd6cf55cc637cad66888f092787e044cb383 -8a52c63985ad65384ef4839c2ce610d6d929d012b905eade48ac21e0c64c7f24dd6344450426f5f2f9bed8e8883075b4 -80ecbeada5350d85619bbf3d3a3b0398e69bbbdda4033fea24bf7163fc281049622d8de2765aa33c77e01b241bee0067 -a51ce6fca804bb1115128117dcc222e2e47a2fe9231249f356be20ff31ffeff9b89743e1696a6fbf67cc1e45a5d2aaaa -8b18a22d9a1161a7da4351545680ed5588ed2d719f29fbe4b91f9dfcf80aaff745748692815afdc556b02421096a16ce -80315c2e9c749c9ed2b7087d734adcc953a77f8bf15a76c1e57856233608dac7b394b0cddfe8fefc7918ce2e4fdafa22 -abfb47e401e4cb394e5f8fcf505f1408cdedf35a5fc792d3f249ffc49b0cb4a127e36969b41d0e44fae5f99544f505c1 -878293f50097b562bcac669a84bf8a74fcb965d3c339982474edcaf9acffff8adc20693a050dcd84e738667a41de7ec0 -b9e9af496479e97f1abcdce1e32581139aa0d242d794b1203a235d89302bc8cceb02582307f9a8ef40957d2a819b526e -8eb026243b0c4cd00468b0664ff17c7dc5017fdb1ecbc32a2c69512c2e0c478820196e6a752a36ec44bcf079d0a30fff -93bc985a1f17977f887d95b9d4b9552b8749d7aaacc1dcb996149f98d0b1ad2d2b520c539d505f188056f4eafe960c4d -adc9ad21c21a59401da86ff91314f570fafc9a76408fdaba53431cfc4af68f004a3443f5459ddebc734d45388bd3e8b6 -a4931b824ac65f198466e8b9d0270820a0a652fca2478523c8d5ddbc65dca265bb8e33541398bdfbee08496db19d2cb1 -846b13341044f0b4d7a51feb8e443532cdbc31e55d7c6f3061b9322a3a139bdfe22753eb439aadc001ff8d038d3847a6 -8e8641eaa4b59f1d89ee862e090a72795323db84a44f713a2213bb35f24d0505e7f13eaf34b8af919a754996d4b7f747 -9394458456ed4f5394f686bdd2fcf1ce8da1d483c410ab8628d57d4a46ceb53bc7ce4a1422ae357e4f8168907efd95ea -88a7c22d3f6c1db89f41852d8e873e6cd8d50c819b56e1f8723ccb9f70cf58626a835f0d30c03f61c96065f32b79fa01 -ab88e29d278efc36c91da55acc1fdeed510294c7704b50fd78615af26c591b88a749f806b1232a5beceef89f6b6f65e0 -ab58fe1634e840ac91b7f2a67a128fc124058e9c01fd41c484f71c450b46336ade2d8af9859d2682f584bc80f3467f1a -afba6c6447e739fe6376ea0258cf7a5c7f6a0d9d3a1d9aaeefa674787659e49110ab71d4338eda00c01e742b8e8ca7f0 -aa311ef95246b2f40be0d4f841ca4940bf04234e3d14934353245617e025a35f2c67d7801520aa31ecb9664a9df992fc -ae1194dbce94654c8f4928ac572bc621fc95561bcd7471177ddac8e3afd06a3f6eb12c778e7e8d9a0f9f9d85b2e70c22 -8cc37148d715c7ddcc8cac2fab5be88e38c03e3eaa6664810f01dcdad534ebbcb2a4221c61980e7ba8f4a877a2a3b283 -a22a4ea30e67a7588ebf1e82b8b4a0ae62c84886298ce177de3d120a9209f38d77be5a500d796945f0eb121f4c3b4ac1 -a1e4c85a1052e114938ecd70798912a18d553c23d90097a5ab1aaec196fd219032a3e6233cabb4a400bf8a06fd3d7bef -b2a495d076e9989abc1d0d186125a41677a2130f5940c762ea96182607c79a911c041fcf7d1c48663ba6d7d5ed037d14 -b42042eb4d7228336ed9ba194b153d31592e68c2120d2a51841dfea91d18d8fd9d968f03adc451d902e73dd9dbef4ee9 -918363ef7aaf3b0055dc30638bd47dc6107e4e0bfe134321dc4ec55062dcf32367fe0a9567d5c9dfb89cae17f2901ddf -aebf3052052a34bd36910688a783ed7940cbfbfe0fb69d87fc1976cd0ae5b5b0e0474b6028d052fdd58bb26e5c1d3812 -ab77ce15ef809d5eb82957d6f8dfcb118993ab1f9c2fce0e341a8e277f0ce1f336009846151369e6be1dfe1e68145127 -aeb7f47254b2b4cb814a51138b16ab0321a1d4472a99bb25fd7bdb808c21cdf43c37b8bf14260c6a8a4e7f76d0628c3d -a94583221c9cc3493c1a67a9bdb928f87a41a4787522df84b20194ead596ba27cb4091ccd72cba0f5bd644cb3c166b6e -91e169c186529add07c3990113b9a6c4c7cb684e8caa182001d4d8befe81f1109e1e55f76560e899aae4b914c99e2a0d -aa05f0c1ad14f3e05ed82c9313b8fabba46c35e46992cdbbc6ac9b647125ae5b8cf99a61172fc69124929a47219512d2 -9583f86bae21e64079cd703d044e37b54a4ab02492ff6f79d3ab4c1b80e7ce30ef9c8d6b17b9755e936052e6d46158af -b95df374d147581ade4ab83fcc2e89022e4df13639c31892bb141371c9bc9adc3f8bcfda0dc474f79244d1280a44f4c2 -83b911218e01d15fb1b2d012bfe1c558e86733de9726421dd929ba47aeda3b94ec63adb41ced6d78d4043ee49f59ea91 -88c990898b0f45c3b33919199a25450e41b204e79960ac77cd71f4c25673dc0374176eae07a11a696bc7493743956465 -9938a99c2b85ebb08fb1647657d11e046f878411cfa04d46ca86a846ae22317e98784762c9d117d41deee6f271b235b4 -a7534a38d879eddb4d9e5c88ffafe5adc72e79a940e3bf4837fa1ac6beb8bfcecd535b121958949e1de0054067f52db3 -a960483f4f5bc1593fa633a4999bf26191b385c9666d34133f3a764fa1fee747f30859464c5817a8d57460c7010fc7a0 -8411dba8ca101a94227705aec3ed53e0c1bc8a643e5b4708b438146ab7acee480c399964f3f2d9bb69540bef7a007fed -992677e53aaeab9490b3532dd51279b9c7199f36027417d99ca7181812880b9b5cb202938e174c14615ca8c3de8d300c -834b29582edcf7c1f9c3ee4f8dd68124ac3e3dacf41e8f0982f942d337b80896ba89e5793dea39da48aaa3448704c16c -9543124834cd95958ed49bd4a3da93294237931be4866995832244f88323b8a6cfa7960722a08f0351c3a87637bcc00f -aca0fed5e4cf09deca026667c7b7a3e3ccfa0164e64aefdc79cda25bc687977350a3396265e2c057b6506f3252a11f99 -8a7b2e2422040ae70de5712849422ad2e0e329ac6a29a366d75cf2500f98e1e6d828d480e915431784b28e5601469535 -a32f15218bbacad0939b68c1499a875010e77e3ce32fe20897ea290b001c6d518aeac9c90bd0badbbddfa5b75148d70e -b46a8f7fd5806e1bf0ed6f9673712826558e22435fabeeecf9672843386807aceea61ad80323c0d0a7b0e3da8663453f -a8f47a839c746fff19b8ef7ac322f310940cf210f069d0677ad62ffbec5037014f27a9c5879256033e55410fbfad55ad -a23db24a1ef2fc67f72eb2a05860eac8c8e46e6b84f2ae8ff8c0fc2cce259dd84e33997638ec80a6167acda9a943fe39 -98076cad1074c54db0b34f1fa405632306c745c43ab96983377ec2f12400a6007395a35e31ae1b7b584e7b7f93242fe7 -8418abe5e3d7e33dced70e2967265a9fbbb947c2a8fd08696926e614685b52d872e0fd2605c042c4ae8a904d3f5db4bf -8993c52c291c0cacc11e5893953c6c40a714c651fbdaad303e46d0b9820572c3cab41ddec6293799a30acd244570fda6 -88bdcd39f1a87b5db320fd8d2f049e752da3c11d95e30a92117ec70653aab1d0d0b4e5f9d80f299cc73deecc73f7d1a8 -b4337eef3967d4b0534134484b2559b39f0eaaee39e5d2bc5f5f061fe58280bd727769c51a6faac003cd019d8e8957c7 -b8c4e705a021cf2d9ad691d4ffd70e5d9065288b2334aa4a656f1b544b94efb69e292fa3e577bd4afc09521cd233766d -846386ab374ccabf23a4c3b50c210c13021220485b6d63fd560c34fbcc0caa79224b18d2c6f393af72c411c2ebefc5e4 -a5c2aec8f5448348d7955e02d911e5299b48462cdb310d6a6b8fdd110af8bc0b19e8b5114c603f60797e1c49fa84d340 -aaaaad09d9304462c2a667c5d8ec0cfb69d74415611c28f0e63354f4659768e1fcafba4a4bc789c2ffe6d949a1df0673 -a88cd464b45e015fc3ccdf73cd9aa6e0f853adae85aa74f10491c77ee789013d9fea9728d4e093dff7d41f517678e1f2 -b0bd572c164fd55369b6f497ab08f92469f54efa7ab9a370e0267ab0407b342393a6dc1e254cd196ae8b3af87d6d470c -abd3dd91f6605ef4eb5c66744912c66d65c1195cd03d3567102081a8f6a9bb742a31777163cad0012d2e827c0df4e76d -b77105c960669db2bc7de180f8e2db6616bea6ef0579061e08042e9c3e51d223d4b54d775a0fca577d85bb3b5a16093a -a1a531788243b5aa5f13480e2cfb2b57c97560a1b4fdb99e96963c4f3f5a738aab34835b377ece2a97bb219d2e8d13c1 -a8254089ac3bf7fa2ed1d0488325bb9f5cb8eedb6cdb854f74b820ef3a5026685f4235c08e3c43a943e802d2e19edc99 -a1a4a71ea5dce7da4362e94475e73c4e3c0dc89e2a4ca7f99f417432fcd42f8fd7c729ce7622262d57d9397b55406d44 -a5114fcb6bb48d8acfc37c67bbd4e85eee31c04836347f860e349a33a6f3d986299f8cdfc130c01d51f387b603913f94 -b04258899536ae19827321b030f124687fce06ea637a471bf3316df7bab61f9b446bdfd4f06488a6808ee632483f74ea -b8cff2098ca286dcd5802bee95841dc437e8af076cc13eb7afc4a218ab947fe6ace914beb8fd423af5083dac972058e7 -a0db982bee635f0b4dfa2d71d3ad0e72d5e4b6ad67b5a840843231d18bd47fa2785caf87773fe864b0490b57fcbf0539 -b8bd5710bd99a87cb3e6a440adadbef75bce9674e3a311cc3042c229ae3b485e7253f8d51d6164100795778eb484001c -aa68c476cf5232978919a86fd21acb7f43c700bf7893922720b2c0fb1109bfb28e9acd39a355c667a93534dcd4022f2e -b9feb226d742029b5cdb88d10cd0bba4ec62e554554bb9724ac7852b5b720094fa48f76116204f0a7742e4b624a341ed -87635324242b17632f5a17b63527119288a96d00a66a536870bdbb380a183e3bb3aa72c4522a467f7a3f7b1078fecd79 -a99c340fe2fc95b6d171cee4f794d14d3517a949c59f05fd6d3412077ea596193cfb375f6899982f4944db6c1fd514ac -88da8e4fab1e171cd2d7784ab78e4e6b46a7e6ca3b74aa39a64a49579905112fe87ba03238b72f2335009c1dc9c00780 -a9a25e49c84ca64f2c61dae502be30f94409780bb2f8b560d9565ea7cfc98d6bffb7e47dbdbc5466e8e96eb4b8961d0b -a9a94096d3ee0408a633a4101a5363ba052d11ffe184b9ea9136929b6a1551a49b4a30c2c20da2c6ac67e9264d659f6d -8a732871fdc015dc35d31963b263c219dd9be7b0861199a08c1747d4c16eceb1e893faa7721fb21ab78aafb7b59af2ee -8152789d57b3e741a4261bce2daa128f33909d74ac233ca04aaa027b3606a6e2983790f5c8b65ff391103132378f4b97 -8cfbd04a6d6c1ebfdc64314e0d899e8426688fe72a6aa847a2189600381e23df277c083d5d97be115ff13558b8e0a067 -aef256705fba9ec76391a76e0e3a5ad3e034cdc5d289e5725055fdc9ab64ac39e76d1a8d617b499c5e8f98f903275e86 -9621c68aa5d362874572064b4b5d39e7398e8f1a98034f2a43685b9d4a0d6cc0a1df1c956faf0848369bd9781dec62ac -95f495261c2eacae60d4b4b14d5a418e00de331ac321ca9298ba126dc80c9b605d19af890c1c22304a12b617bdc75fbb -a89a3e5332462aa968b7bd5bf60579cd1fca1372878232f7e833568e43854361498f8c5122383575fb6a239732df5eb9 -a490ad4a0e78b9c498af6314eb59bc4e6a0929f602799f0ee3df29dbb68e90cf87b3956dda72b36a3f1cf93b376f509b -ae005b943c174e7e9261558be6510ff14d2d1305595fb377b230eba34115636d8fea55261677d39bdc4f1aa86ba4cd5e -90b826b68dd1adc48afa0bf168b7e748ce2d7c61fc474e841061dac2458d95d26953af9cea6b7129da87f0e204c60439 -a79ba549799a31fdc4454610a72fd40933de9b433944afece7743b60d69094d724b1573f198a77f33755a0353898fb56 -8d50f15ca4795b65614af28eb35e178f2b3041840a90aa5fdf21c8b9f32dc30c44fff05e6754672ec8e6b03fd3fd1492 -b89fb6cea79a7bfb1752e2c55365260c01ee1ee59f47d4813af422a7c916801ad0eaf3da12132f724f5df69bbff8c552 -b98edf63b77155e2be84fea6154dda6166372eccfae5512eff71b4cb01782f7039256685347553e462e76f42ee070c9f -b78b3e6ed58ed909fee1069b7b9561cd5a85991409b0893c7681ec009e7c01799341906e34613df36038a37aef181694 -8513fe1234d81214fe727ebe95aea5b879e8e44253b256b24aa1065490acf69c2f912705d2a41b46446061562c0b4e57 -8f4c9418ba3edd861d8a469113940aaacca6b7a7c284a18f7907f43fab8645fd59dd4758db57f31ae0cd37693f011ceb -82d41bd0c435409798c7fc9ff73e6c5ee1b65db94a224a22cc9f856697f2702beb450749b780d3dbb72544c17297d8c5 -9536399cd60b384362cad29b39ab6612d193146d68a967c79bce92e7693ebbf44a8bb8b13c57cbe38e35baa671f3879e -a4bb4c18b9d08ef81fa0bd1662dcb190d45e65a1c53dc96bf6c00dc20fdb289d798097aece4cd3266dc64cf3c86c9695 -a3f768e2a9b1f27fc113743f96f9167e064a28c9dd3ab0ec95a55b405d82ec6dba2f2cb3bfd8ab2a636e4ea268f3467b -a1d6976ee4ed285a4596cc7e84aa0c6cae21901d4550331c751b6319b466bc0cdfe2ad0e382819b8fd62c9cc3dc5f59a -acfa4b882343c1cf116048af0e21b91ad303d463019cb882491be205c8b2004f5a8c819e2f2db3d672f5c0838e0efc03 -8ee9a2c3cf12d864ffc45bce3a2892ee69d50bb6dc35e37495b69e25e71081fa26b14cca05defdb79ec0b76796d0a626 -b9b8008a9778da52657cd0bc8f27a655d9fde615f69037aceb8b1f535ea7f151e7a8d5291b7b85798d704af2491a3908 -94b3df07054728e622163ccbb200e8970ec1e2edd3c7fff3f9297d6119c7e557271a9364318dde606e98d5b637ca221e -a80e7d1d6237056413cb6379285704f3aa432c658a5cac2f09025809d97ae0a1606037005758bc8163722aadc56c95db -ab27f855c23a5cd24a4ebbb771545d4cb0514963ac165ad1213172155eead92b6a540354a91f61367efc9807a679958e -8e58eeafbaad541bbd7ba046d88940d8856f15a1dfd686347bdfe815fedb8d74f85b8aba243bb7d39c44f92c303495d3 -8975d8f6d1de1028ec744d61f25d9068358b0b18081e84e8a455023f2b620789fc3fed03f3276ea712f4d3e5cc180540 -b96a7d69810f963cf84b2ade95cb4a8fa9605c6b30d61c70ef4de9750259aa4c0a99c0e2de8039eb11fec98fb522f8c1 -8686bfb1072b0995772bc013ff84996017b7629d413f0f5506a47cb86f3a4dd5be4c0b2db6cc6f12d8d57c36cec35e87 -a7ab3a9e9a1d96c436ec06e6252aa88896e24b176c19612069c4fc28bb768a9ee624ff12ce7a4bea7ba1aa4a99cc87f5 -aa355aebf12ae1c737e17b7c066619327ed821d68d09a5dde2dea6e1fc833fafb1362ff24e4da109ebae8b858486acbc -82c6927f0238ceb5b3e07b2e7b7dd52f811add238420a34314a156a4abbfbc1aa0dfe3ad2fb7db6d01f7d47aa7973daa -a2d344ac3d4c963b7c4281b9e10c223b5e208eb76cbfb2c5ff436f37af4a39c7d9e14d9bdd6fd49fa21c6877edc722ac -96ffd354c3b8e1ba4eafdf9d5b7fe9c15c523233129f0cb4114cb671be16c8fcdf0354e09c3a0cc322367850b64272df -8d7199456755617c7d2f94f2ee1a59b9a097eaea4b379fd497e302b2a23981d5d213761ea0afdcd3cd107eb09b900c63 -92dbaa1f38999c82817d963933fb5fc9cc309da895f1c1a481ccbb2210b62855e2e021e6d119df8a39a7b0e6748b93c5 -805d545b4986cbdfdd0638884001ab103909e5204859192018180e0f55ffbe2ee6d86f9ebd6be3e76009836b3be75de3 -b17b2b0cb94620a93217deb34430e4f1c331bca272ce05088933406b6823b3ffda51125232e33a03d230f00e4db75cb0 -a4005b9706c21a0043922b9f8341b5a6efb77db6b3d3260887077735d6ac5c04eeecd7c738ba69655decc2f6a4110baa -b1320b58a52176bf6deba6f60cb30da9e2ce5815ccee503207afb6e70a7fd3fbceddc6133a90c3bc419d2e9148f6a1af -96f31693981425ac9ca46fb39b5159f43d2dcd38c001c95dd2b9138f78c2ef98e632986d961de76544792c0d4d0b4fbc -b1d01ea3234bdc2f92ca1ca9354cd3122a04255068edc386b66b0ca958e9b30f48de1a49e61714efaa276789c8c3d917 -987997835d6ba590ff402e0564e79855deb2c31e29241dc0d4f3a84d6416b8815708a0eaca9c8d0e9da9ca246d708d26 -8ba3eeea9e015def613543d6bdbbd917ac3859fa1b8ac2062e5616f575cbbc888bcac65f6b8d2f75dbcff0add39f7a21 -8e54360060695a2af4f8de39ca50f6455b91b0ad146daca7eb5d773fe2a99d50480bde665e8183f3e41183a39f72f141 -ab0dcd6ec9289d591ace4320c63bdaaf45a712c51e652308c2a3e9a33eaf6d5247b0ffb5b04b3fd0a43bb18e05a8542b -af96c7de7b16537f8730d189207a55283aed0d0aed39df9c02b774b796aea6f5c56b7bad6ddf4a33c48f7d98f63a1216 -a0428b0b467992b17a6a8a8eb5dbaaa9810e7eb3699ef0fa278df344c4926af02718daa0b6b528a77e3f980d8d99d605 -a9dd4edf04e040a2f12f9878704f5934a5a5823e72b8ca37322605da0f947b072b3b73657f56de4b89526057358b9512 -95127bb6bd207db0ade92404768b2874614f3ae33aad5da8685d3ab896f607238a21a7f3b9d8e7a09b2dfc16bceac6e4 -a7988372f4d47973dc7ef7cf15a3dd405b02da7c288656cbacfbf515af0cd43b972824993fb88ed8ec62b2fbe7de0b66 -a8e295d5a26874ed10a18f592e762c73c508ec32ea74f9c214c65e9e7018f37472e1c97f0d4bf865451cc7c59a7141fb -abda573fb81c9d890525c161b466c9ceccfccd29b5451a864f3feaa6f5d4e5d2cded27c06031469fda0e5a1a4396b698 -87741fa0563a75ab12f72030d4a18326b90104459c12cc0a775e5fe06590ee777284df6213dd9fe170cd972842265545 -ac084a5fea6e3bbc810d4534a83fd9ea6d603c5d68e4ba5674d792f222c1d055e5b8af0d21b19d174ef221ca77414505 -93bc255910c7812c41ac47eec728646e8385d5a53625664b669407ae0210b3b4209401886837eb157401e459ef485e59 -91f703d1a5ad97799c8306cc1c5df1ba227d7aeed401b6b7c3779cca64b54ad993dc6c7fb2d046a54c63a2e96be7f087 -8fb32c25a5a376ee0feb07ca2e2dd1c643680ee57b642bde6f6c25632e9b0d8ced0095d088e72ec5b8e5a2dcfcf2328a -8c2e7ee2279625da667ee24eb345915203d35e8913fa54fdabf341afa9ac336ba623fda82114c9a9d8f3a746d374cf81 -9470d790b0b0fc0db3dc1f9feefd7b37568be3a7657a4d91cede9622a7da7c90e0f961efe4f37d1efaf9f96bd4114f29 -8a4073e46b302448892ca2c64bd3a4ef40ee371ca987533a3ba86c355c88804ae108aeb7d1ec66098e4c4248a92c3500 -8d8bdd8cdf8d0365826806fa89671958af091ab04169c45d7cca6d4dabcc47febe3698896408820f4bb7f243772fb4f8 -af58744540ff1e86de1c5376e12dad7a841a929ba0951a1ee3dba678f6553323fee62c79aa6741671127344973f8d5a2 -959b21b4642e5b0035acc59f0ae64a25cdeefc436fdb02cea97625c1c6e147bcdd77c2555f2210f9e88eda6bdbc6ab08 -921e75d2e857d32933f518840da0b13c5f3b6fbfeeddbf3465433bdb30e506bf05e1b79706235b522f843c87936d9cc3 -b2e4cddc742b5bcf2e5ff783d3ac797b31514fc5ad8ac9b9baaf934445e665bee16345c01a4c04999520cd1c41567a7f -aa10650bfa5ce3328028abbd06128374345d8e6937f2f4a02201b1b305350742e0f67213b1c5f69a132e97e3e3967b59 -a53f11ecd11affe5cfbd174f63203de8e4e358ac59029b204df1244e72fa8cd600b99fcd2806e05b60973cc4f65d3e53 -b9581181eb4dc0a4e1faf7cd716f32854f15ec98853f296add58847ed4c4036a1f6cdaed4acfdc6422fed05264bf42dd -88ab901304bb861d0a864b67096a6afeda10dbf9391c9f95a8b226541873e6a6d707cb652c7c7dbf3610b3d2ffd373a0 -aad6aa83da7bcb22ac4ce2817d3b0f9be1d81b1596aeec56758b6501912e50f7bc1557add13f03da1c7c083559a3e9c7 -a02d483d8f12f74d6dd3f45e79bcfa301dbbd7b67d7d0c158cd4af625591c2fbccfb27fd52449ba6da1544f885aba1cf -878def0ff97d3e38a9a0c9307be4f557d3f47f4cbddeaffb9be86dfd268d1fb643df0093902e3618c5cafa033403b439 -858b952ae1b1b5a4e3285d8bbeb197c6626c8a2a33ffee06bfdfef531118b1b4983561d6d25bb94eeae297b2bc6dbed1 -88c798d495c036f6856f6d8e1226e522e83b5cd6f94d9dde41821ab2d203e2a8cc340c88f687494292ecf9a84fee0708 -a7a391d3266ca5c17239571397b48c2db71f416eb8d4fb8a015424cc9c55d00009fd1dfdb795bc5eff88c900f5d17558 -83a081663150f89cf796d998a0c9442b1136d762cfc7ece4e70b821a102e0c8c248a21f48006902e3bfa706219d5b456 -a20901c9c06b828347265074af47aff0bc363de5abb60d0e64a1387b51069456b62e2f97aa3cf4c3c6f8cdbc6be4ebeb -8287a4f1b24485e726d426e17071bf65bb1996500a89d5ba0088d21919957faa47ce9e6410e346f608414c7da7cf085f -b7fd366f4f8bc2a318551e05ee1103ef9cdf93cf6c2c63fcf0046028b91e299782f3d1812aa6b5bd6a5d06f061632c6b -8ad22e713d6633b7ba8f7af60ffede735e2d539e2d59720bf73e17466d69cf6503378bee92ce0eb3f8243ff42ba3f9af -b14339a24ea2f1e4b108679e1d5524eb312396bb496762fad31648dcc4501c337fc3a0223315560af3c20a3e1a0094f9 -8539b0816f3701971d7fc876baa4d40f09e9993cde5ab3ed79584361a598dc14c67173b1a6fb77fba79bc3e0f3a7ec09 -90f0438edc95da3d4fa561c071de828f1b59a7234d5773d55742e3adc2b7726fb93182a8dc1fbeadee0387daf962197a -8fb545c3d291ded7aea40a5d5d36c4a75fe2a121e77954db5914266ac6a1f691bc8c619d5753d64385d7ca6eb053bd85 -9339da27f931f30fb4c5b5d9849eb40bb227d9e83f2e85a8721d9ed7f3d88f6419271bb20a1b89c26f80c936c626cba1 -a21c2dfacde8a657e5d7355ba753b3829bda7f9c2dc7dc5ebb3da442d2480a8d87b3e4e23b5da9dbba980c3ade01f1ea -98c0c1873047a740591c4763993cc4131d6d64ff59883f0d9cfe0c7404ca98172e5616572656451995cfd0fd8d159169 -a891915dad75c8b2868379c7f040ae906ed30e69b76923d4343222b5217837b773364917e4251763b04c94f2ca22840d -94c176e9b1e65122617685aff3973855aa1e0c648f2dc35f3c4c1fa3863a28c3301a260d26489a9755c278287c4a1253 -875f0556f2695fbae7736673a0731ee70a0c2953a758110f7699cc7221c46b616eb4e439f57618f154f0cfdff57a0148 -8e66dfb1252adcb59f3cd4c424c7341da5b74c33dcb053b751bede30129014174a556bd59270cae0595c669c092731ff -ab749e76441eec1469b24aba8ad3b76937402ce158794539d38cc8647558eb9743c96038fdf4d001513d489a2dfb48de -947e5a5af1da37ca4784005caf8280f5de2b69680feacc0a5789bb4444520d64ee40299d6492e19fbccfc39040f6274b -919b01a297de7c979d27b94879c1fc3a6f5faa41c85f9d4647d2085c02cd0896eab1e7dd2feaf2b9c3f42f4dba5342a1 -88727fea0d63ac9198512eee5826aa69141c3907f3c172909328105d6c790eea272a82d1e1fe27e7e8ac5280e842a28e -828d08128899a7bbfbd7fd31e4ebbda5ea3c66c1a177e678d46ce4937cce804cae81d3e7a4944239614e8f0775edf6df -aa11487e1805eabefeb7a16e6b2c0a551b7f049067d3c1468b33df877ad1c50de0f1e279cf0bfa88d7f507fe2bf53b85 -8a45ddc21b8d232963341cfae10a0d57b9e65fc3b017f9bf2b5742eb4c45a3c11341cc3916f995b4a30d958ff65ca421 -8fca01c2184ffb86a22f4ed757a1364a0f37a3a1ea7c1a055b4e993e01d352748f6c22d902d28ee439ebdaacacffbda7 -b10b5b055a769ec45011a31fdfe3caefdf889b7c683446f41c4b775c74a4de192ac68b319a018c2dd434e69dcd40fd5c -b5a45942fb9e6e83758ebbfa15bfa1f2cb2d39033f2ebe038db29eb137739f5cac31f35555bd8b14ac04f3206e0f2998 -843435a2d791c4ccf2ff9f783fe7dbc48bf875bb9bee845427dbf79755fd6d09ff6b14193de0bba3996ff17b9a473aae -b5838d60df052f8febdcb2b16121838b5b228ea39650d89c2cf6655f06728afe3a323ac45f1c517e8bd1055067fd60f1 -98a1c5a8824e2f0bd33b56fe1bde5175e1f077b0074c79ae304df4abcdbed370a44db82ca7d22bf0071305f5b3ee3e9c -8acde9dfc9c6d02704ee756f8dde1aa3e421b006325db56fedc8519f633fdccfc9250edfc6009b3bca8f6c2efead7f1d -843b1ada23a5177028f68cc59928e358e0c90ec60bccf774605ef6f79869751129e84684662805ea85aad87e00c9b922 -80906aefeeb2d69ec8736149f8d19165143054002a16ce26501106cf5527bbf69011beb6f867cedb088895c6195c7627 -b8b4d45603783ac7325ae7c2b31d8a1f39cf60f56f9c7b1c7e9a7bd55363567f9eeea30f165713eacb12c4fe3286cd1d -9287ce137873050a05c6844d6aaa1527d0a6dc9403594320624ce72063d6904fecad36fd909998e1c8376379e6bd2f11 -86abc48b1d239ae6091cabcaef10d2786a990b72c398633d831d669199d9ed3c40c347617e2c07f028fcdef057c929a5 -8c4cb5b4c2dcfdb5375a0df15c6c024373513d7bffa5fdd2ff545314b0c6b62870a3122a692db8e820e3f8ca1deb1772 -8cddc1b6e030c89e68fd2ba79feb2a63f11ce60cc534f004932f5a2f08b047dc5adce8491fbd0f19a015420e5bffb12d -b4d56b178780d899c28bfac8894a28b9b53d7695b5c36b06ff624877281a502e5ed8c88d48f011dc8beb7816b70e29e0 -938e52f73596a253a61095ba2f84bad88b44949a4c1d903047be11a3d2e55df61c3b99073d3ced08242f9c3da50a8210 -830991af3a7d5cbc53a6d3659550dbf0e57af573ca57f1caae3724fc76e5ad9fe1898b540850d32b55528f4464f2b61b -af9c2f3afc17f5df424571e6109ab51ae9c94e0ae24c041011a57c5b583b80a09b4309603365d57dbe0a3bb97a433ed4 -b823bc6941a9611f32b88fa2b35b9641fb61daa8f64ee0359461e2f55b55cc36fd7d632d7f1e3ca879b6c52d2ce057fa -927086b6edafc055011643377767e075f044d7727ff412f55f45ef83dabd26bbc5c8bd838cacc986ec6c53a4ea978d4f -b83c68c09aee1afd7644e7740d8be028bb12a8a3fb184a1db4614ad65672048f7c9e2bf59694debcf53626d73546981a -82ed8483f7db084b572ea23fccfff00446a604a49d094980bcf2236e1a0565da783701e4c38bd74b95239bc28803dead -82ea648b47f0ea46e66b76b4c14ae771d9e97502d24608794e51eb1f5baa301e9cc3cfb83ed8482d9f55d151df2a11d6 -ae6c89003cca4e25ad780381af7dbe00f2f83e12c237c54dc830f23be8ecba4bdb57d5c69168bec35502074451e4d979 -a541989f101bd01fc39db7f3abe4afb083de5999c5776343940f5704da8c933ad906331dfad7a18ee423398690e1cd90 -83513d748bf108c3018fb0bffa3224c220497e0cbcb0842151b4a8d24e17222bd826ba56f37eae52975688ee2a5da3fd -b769d5256be8c0645beaccadeb1cb1a8b585210fd78dbf92990400070acdee073f6ea6c0eeafee081a95e2e8c0cf5f0e -8822683c7651cdba554d9217b9d5433c8b8c8c5bb47421293d6ad0e1c5af67fa80714c04e58ae5fb0cc9b5a583f66123 -8b3b8255767f58a6cb8c13c711be8439fdc53c8433e97480b892e58384eeb2022ed7aef62fc6127c93228f5e3c7cae6b -90f08d28267c51261b74f172b3dc1abc6a64e5056dca42728beff82d8539105621588a30cc3cc58541d0075320d6db82 -81245b834e0c0dd511894ce4e83eeec96a49c37a057af74f6d4f48fa24b48f4875de1b29777857556ee78852f40d0791 -a349072811a920c64116afcbeba12e34c7df0b6ce427b32a3ca59891d2eb15b69e852e966387c409329d359351f2b000 -a1301a0379264151b8320ed7e008cf70b22d9a2d188bad3d0df0cc4ab6b5e7f87392e87bb107781b3db25c1e023818c3 -b665feee8563ec8f66a346ae078c475fe480f4d11182ea636e4e95a059de525ddee7375a51a31c4166c6cecc93387fac -955c20633e2f9f51efe4a8f717b0a822ccfb668ccb2724731fa77ee7bdb6a48f33bb1009cee611dd55eb42661ffd4d62 -b869018c7cc428b3499ed8edfbdae4e308e0ad2e93ad9a5b53a1cfe795a193a1b3c002f34afd98c7b1832c2494c21a6e -b76611b7b43cb468cad7bc25e82b199e9e71c29bc6ed313f9b3edd6ee4303e200607820456a76b19c5334e14238a97e6 -b36dbb2e3c470d7948f3f6b22099be191988708ebff0db472e056b9becb3268ab2654bac9c61ef10af0ffc853f6165aa -b9e4055e663401c3d3287221b2d3643a5001714f0261323af2c41f46d7220b5547ffbcd978fae521b0c71630dff4adcc -a6415ddafe472a5d6c8f223bde24726b9b91fbd19470633c0a83ac2b64f4df8b0631ef4e6ab8fc2ddf1f708133d47949 -8914a742bd022c01ddc0a6a212bed566772169d8c3472ed40fe9708addb7ada84192c5abd7db23aca16c789c646d7251 -8e99ab9aee29ec3cc719136cfd735c122b037051cfdf09c5788fa34e8ec00ef6fdf6fdcde066ecb254aec3c59ff01697 -937427eb1c6c6f207f78f8a0ec71a5691eeaa3be14b8223f09f69b1ddf0e23dfd5d104b30dd3bc8e8e1596954a138256 -a29510302e473a00d02dc7913820946df3d6a28b723e8fcd3810cfe755f9f1db9f2fab7960e5a6a6fcd77ad0f74c5afb -a6a2d8e915eaf1c18d8959a9527c253b1788be986887548510f80901386edbdcbf38d75adf0eb1e5076b5026517d919c -b8cdb7094a221193be91e1c7fd9ab7b214410e9ad8a8c3ec3b672aae6b9e76356365b484d00545b85c7754b4e4703764 -8b96d96d83d322ceda9758b6efffdc12ec8b4c1450f1ae6a8bf5e94c42ba6d5bc14adb7fcf6195396d09769c50ccf05c -974c86627bc5f115015cf5386509933ddc3dd91d9239df874761fa99bc894075ddd975ded95c8a83d862ee50951836a9 -af006c6e0778c1f97212363ff330ac0757431e2e70cf48c8ab2cd18138b1e715bcbb791d8907d30797dc393734335869 -a69f34f3a3886bf663b5c35172626ccc7d5640ce909a1779c7a62bea449f25be561dd04fdf286f872b77ccb057ee2555 -9932bdbb24a5dbf570e0ad97274421f2d08e58ff22fb73564ebfea4b77f6efdf78190365cd0cccdbcadf6df9f9a81fd3 -a3a772522ed9b62c61927c66041c40c19f0d63a5f9cace57dfba5d1f1e3f1b2b883f09106aaf8e2cccf2c2b454b490ff -b1f17a262245ef9b03ce22dcfadfeaa244dc322a1f5da9e6c460971f2bac8bc072ba58e674051b9a9c004da0176733e1 -a18a7d160ce3e26108e22ab3f07dcc2e102691b4d1160a52362c778ad540e2799ba5b2228d39bc20f29392209e6756d3 -b2f1b158e12f6b3eb4790901bd37416b5719bd10d1bb181f540196e3ea4c38c430eee6bb1b049f606c2ad3d1d293f288 -894fed7dd85665ea411748c86542bb27efe39653178a41d5d32cf2496dc01175301a7100e04506f267360a6107e343b3 -b2a5a33929ccf9f9d6b57e0836aec4318f4b1183364bdfff822b154d2a8c6a791a9d1e6b01eb9a53a3c3b7962808c16c -a3178509cc09849896264539b9b6c6eda142542c49a975ed7f1ec3e71240c15a7039a1a651064990712c0b1e9d0731c3 -93321d32589b5813e8ce1bdcf4a098fbc5196b3438f5995b163c7da4304e44f7b4668289e00a7aca22e2cb72ee058adc -8c48852fafdffe3512759211f83041ebe47099da257f985ce9c4cb6b0e5f27c1ce88dce8885cec5f319d1ce4a1e971f5 -a70989d4dcb75f27e4e081d5432235c4d3894d6cec8100921ad31f797c43d4eec5974def4253812f72aa63a95dbd3ee3 -a2c1bced4da53f6158d4c13977f08ddf40690edf6a34590e1fde0b81d51cbb7b293771beb2a42fe496852f1fcccc0d01 -b5d70551355fd2ba7763eab19c9ff2f804e0b3f07516f69ce30d5c211fcceab5579e1dffb510bc1a9c63d7e08d6e345c -b5aa934e466bfa04bc85fbbeac4be9e2bc3873dad5da438a2e3e62815ce286df9a25d8d097d62e02950e971c67846ace -ac8a4b063890548aca055497c6ccdae82558434ac545a6f274345184b60c054f9c3d847b7d112ce2d4327b2a6422d818 -92c145b9cd7d2800386992e9b6b8ddefead0e8042a53cea2494842981789e14d680ac9523db01cc43594ef696b75e7f2 -8a5c2675a4df24549c2d5bb30df3c539930b360a653491a55e739054a0d45f6e89d6d4529b78e2c35af3b4853c91a0a9 -b7f669eaa4b0eef12bbae7841137de03c6bd3964accabb1c5127429907b14b0047040232ecba40904292e2a740e294ed -90e594402a82ba13b8e6478d69760c512092cf8a1d5a87bff97c6f7302ea5cf9830b2ea3b4a80b2a8af5117ad69ebd47 -85308607535864a170f50b28616600cbfba5daa9933ba6193fac9344a39c5ce392856932a7c55abbef3c5fd105087659 -93def7c9eddc41188f32e5b978d97b8cbb05a0cd70cdf2ffbe1f5d3cd77a344333c575e830323f75fd77802512965fa8 -958c8d711daa777371e6cebb76084249381a2f8c374efe7371575e5459e7ece754b7d1e8bcef9597db3837b13cb461f7 -8644b8e96812a3fcb80c91f11bc4bb835f661d862541e61bc8911b8e41558d09423017d66dc7dd8624a296fd584b4903 -b5820fcf48ac2b76784a947c08677d966893f38644d8bb9b38299e1deffdf584d54a33d367f1f455b674400125a5cab2 -b46b25baa6e4ddc65396b246afc5b365c5b430153c261506974e74a058ff20dd2ac2fb8ab76720864425b206828b93ee -81333c5faef2fb66d270ebc93b2e97b97d779650a1cb146770376b16a060b0f487d1ab59b0a9361132d3c2cbcd354a3d -a0c7a14dfb78c731d8dcdf7869a8e9a63c26dbc1022f5311c0a19efe7cea4773868fdfe495d9f48ea681d57403ee20b3 -ae8e27522261adfe335d8ed32207d4dff7e03df53dee893768516542e17bfea3a23a5e6c594a7e74dbe78a51c1ba0fd6 -927d24e5a74c069bf7f8c6dec3c21ee3fa2aa2985fe26a02c88d6aefc6fdea6e27eaa51058800c518a61165546732a01 -af55c628d1c9ba0d95165ddfe367d11672dad2e6e71735952907e1f31eef8b5128a39eaea4aa90da7547da154d2722c0 -b1b6c0ad124282138dbbb55aaecf089f621d45bd5dc716dedb8cc96c93f3be337e0b4e0438dbac4cee0439af86c00e56 -834ff97a75bf3db75a3aa313f5f61eaf25862b5bba4bf039f15b68dde75edf4ec506fdf38f925835de419c6aa54e916e -8d33fe5ed55daba07f500364211458e1c2258aefe787d20dd59de1efdba51ef87532adc766be8eb73f328a9800add583 -a73e1402daad660918f22a0fd7e2b81dc465c4d50573ba8fce5289328476a5c9fe855f4de7db3a635fa08952a0dd4b84 -8fa678cfbb278b22e93a8968af74c6a22bf0ade60cff484040fe0fd4fd897a8d428f1d1c31ca52b4794d7334d25a40ed -9775bc71a9df2d8264d17d877fc152b3bb6358f0811c637b9e426afffb8406f6191be4d2f50b285e30018a2b4ce4fa0b -b7ca93cffef6c05c0f185b1634030867e80ae128594637ecace4e6d9c4232f36513a9d92072643ec6eefb61da6468fcd -a1ecff7179baa08194ecdd657ec3768cebd2187dc22d78624deb26f2af6cd059d5eeb956e9c2fe9f2ac387fded4ace38 -b51a901b1ed43b1673fcb592c9339156a58ec3f5c52b2f44445003bad46f8c9c6bf9b686df2e256a62b712bf4ec76409 -8fb385ded0aeac3e34843f8631b25b814bd9775f5522fb5435eb197a10376de79632d983f4a895f3759eca631214da20 -b1a0094caaff2257a81ee5cbf2b7c3914312182eb4ede24f9425a2cef0155a01177f9d439b8130205ac8e4b9a09d5f18 -84382ca6052fafeb165058c86fc7b9e09b01bd691075c80c992f5b43f533bd37e07d178e2489fabc8db909f27ebd5627 -a7a8a6ea8d49912d1ed1d8d0551cdbe9e70af07a3077ec2de39a77dbe237e4bbbc5ee7c838fa61cdebf4b7208bfb8c3b -8da11fce90225a64d27da0c94cc8eb148594152e92aee5efd4c053ca6ac2dc29190bfd5ae59b4c7ab111800f723b97ec -93d81c1f743297c7ef019be107ec6f3808c16f6232f240b1dc5081adc7d0c92dccb2478c2796433081d064b11d76adc0 -b300abb4d4c4992dbd35a1d3178565ae645e497ecca9d082a1fa8aa9f8ac44df60d37b8a81393c5820705dc242b3927b -9293d80fccbe1b99a33cdb165e44bb6e431e33eae18232bd2dca2f66cab5844309854ebda1d663fd9f7f416d71196f82 -881091b811e332b56fbf2782e6f0e19532a4ee873e5b04815643cd0a5d2ea50c68fe4bb77a26b13c19b1a877e1a425b1 -831505afd8807e00a0c410bd6791d2789f48313e2d776a009a4ebec661305402824d03653590dfcf3b9e913b6da00bf9 -a16e023ebabb44d616efb0c7dd56314597ff1ff09dde50126e56a03bcfc56ec67667ef523d178907b8fdf75997c85dc9 -96a674aa933f64bf33741c145ec35b12d45886f60c2998aea60b107e157762ebfef962476c807bbbce55cb56d1bb70e6 -b49068129004ca04a00046a75d9eb51b660ba40b73de22a05a1e4b9169fe2291df1264e787de51b3fb9b4b914de363d5 -ac7390f9df12a4d60947a9dc63ba1e52ef424db9ffd969b127916a70513a6a9a1745e26ead31726629ca5d97bfefff31 -8116a7842b601ea48d4f2365b54f15353e86ff4dbe91584cc8c3f73c12acb919ef75d0eff6fbc2e98cdf05f1981aa41a -8253665db0fda4a477d9eb6a21ddc4858367869aa88dc5797ac3f475dad6b4a29459dbb89371a79ffd3245bbf0ffef22 -8983db43909aeef8c9a8f9eef60e15fc0cd2eb6c5e58de40debdf1b9c49d86cfdf38a27e17f761ee64eafeec2ffec8f1 -b06b4f3435b4feae9c479d17f250892fdff00756f5e01357a553226dc928ccbfc822a49dc19cf230893f0b80d768be2c -a1ed732f34153d98988b91732e9864e7686bc72eaa854a1343de46097e75966772283324ec2ed646ec3e7c2a20198248 -91feb47c3d6bcafc2ac69a23f5e04856440d6de47381ff3ba14374f8ef9fd6d98dc2d43ff02536ab8dfb93f934d89eac -afd1a2fcae5234b68ad08d21d111a5aa71d73fe62db23dac1f2dd8188460e5352dada58b71956c0409147963974591a1 -99be215c619cc975fd98c4bdad9cd22c7efaa9044f310674cb52ffec23564c04d56c5af802a1052bda54d3546364f9aa -a37547519a5ce60d249950746a0fe7db16a4fceb2ebaf93e0d9885f182488d52969e13960e55696b0f6dafcaa3f5a35c -8c48b22f59110f4b2ccb2d3f5f5e77bcbf5067fccc194b5ed6cb83f8fc7326b01d6b62ef2283889d542818f6a744fca9 -ac531de47ee70c346c1bee7a25ef9d075fad69e2b0f2488c5088c62ca4a13286b9324ab1951db0d49cc3dd0a4c43ce1d -ab2b51282eb8697eaa70d6f13e6872481b88ec2a60a042ea03a9e807cc9dd198fe75261b1e7d1694f667ee355fd300f2 -af9c1c93544bfcdac5ad547403515e68f6a976c739620d31cdd641a2ab188f1f638f83864a7bf8eecc4e1c817880fa46 -aeb84265097d015048d765258494bfb5cfb4079f86212810256614b46e41dc5e4f00b0e656c973222e42515e4d741fe0 -abc53294a22b8f0624a8a7c09d1d60779a8591a40184379d94276e8d9726d2275a7dda54aa11afa1602380414074e18d -b5262451f7c0178449c669bb1aab6ab9b8e0da1ecdd353265b2975a01e1f2e4fffcc78fbc25815d070077e7f1c1e79ab -afcef28d2751a083e4cafac04945792a32b53c54fc450a7e5b73671df8494953d3663f312737621ca3a5fb9b7a2422fc -b4523991e849fa91274595a531f2a59cab43f62d38feb65da02aa6519ddd1758e5e292554bbfeaa13706b5c5c2f18191 -afe60f5388fc69a3c35270c0619d2d9c935c6e7bab91b05b56d702dacc672049fd9499a553ca4854fc63ca954ec51f6d -b4ffc8820766ab25ec8e7de7edb7e3424ac82fd456ff18ea3a7bd2538c73e2087034368914875bad08373ed60be63a24 -8ca97af6e2a9ca415ad3397a88f92f4eed39280da2dfd09e040c163ae105ef2b2b2e6fda89c6859d183ad6089f758975 -b62bb47d0113c0e5c2f0138173d2b1a39b845dd827f21ed30ff4d75721b489782c5723857bc4258e111761b60ee1103d -998e43472722d8b34e6a1ab963fffb9922f3a73c08b616186b8535a306c8ead0f90f9a1f400a6c954a389885e36b6105 -b5e78e5fca280ce9c0d0a76109119a271e800574bccd8bc0d66a621fb013a6f9178372f90f215b001b880d37afb8741d -8f1b7dbd91996bd833107dba6c8d8b4d4067d1b1c15b941a5c8918659b50b4a0797f638528ea92a8506ac8e2f21a26be -9968d2111b7017f098ab03505a517163a960ec792d7a41f5f40e617512d9f597250ed13d609793748be1c4f74e779621 -866ee7cf2ca9c66d765ce0c8b4cf45b94f6e7949a8542dea202a61ae71dc59a5b65e5eb2cd4290ca732e7cf009fd9b24 -953e72b9befb4b3eab3cfa3c5147aad2a28b32c51f261435f8481b95721eaa6527ab4ff7fc46fcfe228551b82f1d0867 -ad91d7b4b6def42c17b28fdf7afed6fe0fabf160fa6294f63389024ca9303f249fd6230917b86d5346028e8c139d6481 -b38ee62228b06b416c49fd527e25ec051f38a5df50f0bc1747dde107ee289c33d7c9fd20dbf629f72a86d859c488b0b5 -8a5af101ad8c3d0a0f43130a23e4b3c2825bc90f27d524c424d5575c4cd5b1536c14c4f0fef03093b0c0b47b4eaec312 -87effe6fbfe38cb8f08defe220fbc31951b5cc18d38ede1c545dc20c5bf8025e82eacbba71890e0f811e60e10dfdb36e -b3bd26dd1c411676ca8d015a30a69593f5831cf52442062c3161e6c7343f4dc9d7fad8013cc4e41b613bbd4630b190f2 -9210c6a0c594775bf27d322f732663d63a0ed763c4fbb22df2309deb8c45ce12c2a34ff88b462a425368bd8ee13b2c30 -921cffdb2054e84a059fca5b36611a79a9a467fe2f3477a4b3184fc5d027b44a09dabb1c1729726dd6423e14f8e1130d -b5b31caa4ea31b1d410bf7acc371aabd69a6f2fa31adcc6dce0a5e6491ba28a7e7303e058cf05dd80a4116a35c77c7c8 -afe1be264eceda023fbd780acd936853097b9f337fd3500086f71773ee0055bd2818207fbf5415eef33f18f387f557e9 -a2cd2a9bebcc3bea8516c68ae6d6539b5b3c4626b18a43a089ad88fcee8dc36eef35f30412daa6539e9da877dd947d76 -a8f53e2ca8b5f01d99c6cbd27e772713dc63dc509a1f786a1d7be295becb14560ede28a7d11341432a49e8f93088538f -a4f486dea12b6c6d31c4a6345227bdc3066399cb9d0de5e0147bde1bcb5a8f8508301b8fab60f80316a52adac4db81fc -a8e1b70bed423c1ec3f61f3371e273b1fe40a31ae3583b5f419ba8bb78f3704f8c4e69c249a3456abf74ded08993c84a -b4f799b7767e71f4543109993457525a7d59b501080beae27b849d8552d9524cb5e58fa6fed7137495dae02789c29fcc -b41d8ea06c3d11fa9103016e350ffdcf3d841c7da52a69646eeb798e01055795821b7ec98e86eced3b1e461db7f320b5 -b6b8d7090eda974164ecdbf9a5ceff6c45bd08e485644a5db46aaefa440f44eb7a5f2a3250570dc30e9b91ee3a57df5e -b4da6623bfb4f65175c75d6ade848d4865b9ddee2084dc504cd1dc6113a976fe71da3c3bb938a1dffe91e950e3ab16fc -85130d000e123a2e05b0a01f33e5e455cfe06141ea5e01e2a859bdf9647d8a61ea40429ba0436da4d6377fd75bfce761 -b3f91c6694a2e120fbe952f864c414617cb78c37045a919d35fd9cd2d0a7d6a655c0c76c4c35d2d59c2dbc36042ccf27 -b620c2d9ab94461a236fe4acb77c4ded3fc6258f8b3b72501a5fe8c1f8d5a09dc140dbab27d6954782917429be4f1ae8 -b36e44a93567073546568b399b471707924a71a918098129151eab1aedb5d3e3cda771443a9f17737caa29d39a415e34 -92f65794f7bbfc8149e8251c9b4be8efd81057b1d70a2f2d223e15bf2822b462d7445fc74b45157deb079d1994df23dc -aa022e8ab8fbd6a6eec929b0462980d3f4a305084d1fe8a42e3e7b2124594521504fcd20043b7f078873c15dbcf15568 -b1af8e2492f72ea1aaa9b565110c60832d11ec8cac343f8998c04365259d54a72e1e191a9bcee25435e1c6077ff6c4e7 -b557adc4566fb9458715c02fcf126d4f6fe442eb1c5d1821ba2d7aef933250a241735a47de11148e52c45c229fdbaa20 -9112b026feac67581b4727ef78bcfa2caf2ad1a116dc3921a1a8249c397739c6701198461099e625b12dd55e20407f3b -a3226cee104bbdce8e8d0b37fb7512a357cea6377a17126c89aa3ce3c29c8eb414762957d5a819cdce3137f84e7f06b8 -936ad86b123c1e277feb52d1084525269380a8c7ca4276cf1daffd2dcdf0870670376900e58a1e2ab361e2a8c80897f3 -94398a4244cf86153312ffeb888b5b8c73f0da07571e92364e02e015ff47da21a11f0fb390cf8b57542d3f62cef93a94 -a0d9b5748940bcc69d39a60a6f383903333687db85cca0ad291ef9d36b4d05d3f3fb3e126dd48e0e8aaccce0a60f2436 -a5ed10114c2c1102a9b5e1305ed4897c147c291f2175936448961495114129bf52cd30c54c7a7afe7e45af8abd9524f1 -800f57202c8960649c95e153326dc7dd1b6f8a332cbad9c8ab7ea6b69ab5d305ff92ad27c2b6d15c96d89541a814852f -811b5a4d0f3388ed907810c70e42524e31ab14a209255af7cc2d47ec64ea076127470526a8478482edf2dcd60db28833 -b5ea43a78f4d7b0d05da9f7ace8bbf65386803565fe63c61e1a1934431716c431ecba66a0b4f4bb1b3a1e499187a0930 -89cd76d5d6e6cd77ebda0bd68b5deac567e437ea6249129e9799a9a02d62424dd5e04d98c7c7ac468f12d6e11af9a3fe -8607c76db5fa7a2b058e40b5417ef1bf42c671d074cbe36578a8bb4b4c0ef69e5c2082f56b452586236762efb19cc8c4 -82009127f00d1d66e527b320fdba6c0895e0db84e14726d9f78ad4e00e3ba05d800d996737b6f5100f36ec5e0ed016a4 -a5f79381ce1f55085bc102a67e7cc4a27fb632e8a83b6e3e9d515d8dd2c23f5a4f2b79b6921aca19e89fc402d3c0b8c8 -af76109cf5d10384ddf9d9c18e74fd2a27cab4d4f749656e973275a3b7de712ad6929bf1ee4524bf9583e9b47fce454c -992d1c3e15106d70feb0f557c14eed3bc9fe1a1616a1709421769e516d318229ffcf093e2d3974d95095966fe960a793 -8dd3e845b5432c567549fcd7afc569fb855fb85b83cd263369837fe8e12faced5b6f6aa95a490145dab1d96ce0ae95c2 -aa3d65abeb588b48e470564593e3b7879aabc3ce4bf36158758e73cede5d98e6cb365d661542e621c1646245192f31ac -960b08358315841774f957f5b2b4b063a2d1629479054cc9a976a865efd4c6c7a72590321360a9c330512491801c2f65 -927efc6ca88f1c1e013039ceb968667e3fb381540c83435966341d3acbd77260aeb124e28f3fdc86f9c778f7f203925a -b1ff1ae028d5de9b86f329d4795f9a41e7617813dc4aafed19277f8662c59228483ce3b2841ee48cb136b83776af4f59 -97e2deb04777b2b0cf107f09ae829b11262ae7f7997b672fb2fbf301dfdf233afc87d13cd3600db1ab4616c337e85c49 -96243826579e2edf6abbb579151e4dda81ab5ad8e56c29a69ba280c5f0a0071be571c2b9f1faf3ca189688efc2e20e78 -a8a82bd2c8bdddfc9ebe552866c704a1358c8524fcbb2af824857898e1816ee4b28c59a16a90cbafaf06369ac8cda2cc -a49d81e2dc3fd2d41ee97dce14456825e5e5b55ec9d01447f0217c18d71dfa7fa3f3a7451fba91515636aa873fb67768 -b1aa85b302c0f1bb6be97affe6ce393fda7935cbe76b08bf632b891d11653f30c7da3eed2555d0fa2b068170275e1c10 -a9ca4ad1c30a5b9221a217b5a0dd155e601b1f479ebbd407d28803d373890247fe9c799c01adcf6b33948c4397e81e57 -87f101a43a228ccee4f2bf74f011edeea0d257bb270082191446c63a565654890386e593c3f73cb92716145a1dee6018 -b188017117ea3e5ba6ba559cc3ef45eeae577e068f21572bf0f6b4325584a458e51cd496650f1489e791b66f78fd0955 -8967a2bdbfb7eed1cc3a2671562cb4dace6286fd694c8347446faf537b5859dd8c5748de91e14231bb21abf56e7eff17 -adbb09ad50804762c79c3afe7c14c347249b564b29c9455cf97ec9a5d6a9dd758c9a9340588da23f7aa23848896be036 -87f970be41e5c523eb3176a97fc9dbce11c8dfdedf3e8497103f7db365ecdae3b463a874c7ee82e45bac6f3a09851ee8 -89d599bf75dc4ca47f7cfd28562fc9d8f4c16a9e479586db74c85c1008c656ff047cef1a39f0649adfd0337e3c0bf43d -96bb53bddd7fe190da498fab9600e2825018463671eee0fd14360270223410f7adb1065e23f7b9453ea8ed97c1356db4 -a05be60c5188b922708139bd11d0e0bb65a6b2219280778efe2db6af22e949c0ab1d77df2d54eb487816e52b1c717d24 -aeaeb5ec9e425abc405a23e68004cc1777ef0ab94f34822c1d2aefc92831e5c14d649a8e01336ebe9fac670e38e8f68a -a4507eddb52238dd8eefbb1c8479b3fd648859c9d44371f8d605149502d7e60fa2f3a2a1675e68639788ae1fa39ddb7d -a1d39bbca54f0a5c6895b6d122bc4f68ee1d29e2064f91778112d3c4eeb895a4cbb0a2031cb7a468eeeadc7179accc91 -86d7f4e68e02a6f8d0d88e39e2333c876992592fcac7732654dd362bd5602efc8a0f70bd3454f43f4fcbee3378ee5b5a -995dab276322f3055312e38acf3ae9897d9c179e98502639844c4ec99718543b9ac8ebb2c66d1c9283250c7033402d44 -b89f131422223d3c9b479164b96d27876d41323b6046d07c0533508ca5f0b0797751a6d37fcdf1e0a8e3d864dd714c8d -a37cc6c9565d5eccc4352776a1e8183bfac56dfabd018b0630caaaa916584bf627cbf48c7b313b8d05209541c1abb44c -a3bf3ce979464f402a0cbf8badf0d3866b8733af548eb92bb0aaf2055b32f439bfafd98e89491b688039314878240353 -916248d2b354028914886ea6fa8760ba8bd8fe2188b069e8e49959b122509ca85243b97305b3282c3ba5bcdd4c7a6bdd -94c1609958002a5fce80bf55d825e92ad2cf486e5d4d0b8bf72ced15488fe83083a94d91f612ecda3a80c9883715a23a -87f35fdd96b1f0531c89732e932aba166acc76221fe68aa1bb6189658b4e23383445a22078c4c36a8ae0adbc3efb5647 -8ff148f1d6dfd1badde791c32f6cf01112d8c666fed1778f7933ef319f553f204cc2261815814b38986509488f80df9c -8ffb29dd648cd8c9d502691723e5267aabc390e7e7e9d112916fdadb571221f68d4036796a7e3a4ddfa6325066636fd7 -837f1a9d723bec4013bf005f49e3c0874aedb290a3762eb2215211c22d73545343ac0936a2d29e2a2422af62df7160e6 -89e6fc7c04b98c83a93013d8545a14139a56f478bcec83f5acec71970110bc8a0b6435c48f6e499213dfdfee84a7730b -af9713d86a4bceea0e6563846de6f7a6050d1a48f14d068d8393b730a496e19249632c6f9e9b6fe6de5ef968aa3f502e -980ea7adb8d80d2ae48d66f5682bb9c5e6ed246e63662eec9215f965e7f1f0bdfb6adebba78d2c17df8276f036c2df2f -8e09794012712823a4effc243437786120d7eb3a42cd771e9dc5d7b713c830b777b8e1ebdd8c48efecf9c63e9af36085 -a5c90dd9cb1887065de156de7dd24f0a0215642646448c802cdb19b57713ba7eeb11174bf282cb626e000e5540893b54 -88acb1b813bc064b11f37f19e5f87dbcf8e270c7559867e993fca4b4aa10a395b3a473285439f151323de4cc5bdce948 -a6d030925c95b0ff75a948e1d1f3a6d414ebe4185d3e5a163d41865e7dd23ac3e14c791ebfc0722b55eb693270539042 -a500f2cc00e5a5c894b6ff4f2115cabff056be9c3075f06706a892d69fbe25bd25cad71c302ab8f237168e12e5cf69f4 -95a61840aae356efc98a9a1356e9e5922182348cdd5a0938505005bdd1d15ae6c047269064400ac0ae0aa67318497599 -a3a7fc9fb312a32f04df9fd8f3e1d6bb2a50efcc0f5b3ec3348756669b2a05582a6dc16360f776cd1e12ed41a5313f51 -88bab74790c699950f4facb5b1ff4b0e1e61e38d23d7956b6a8aa88cfb423bf5cb35a36aab66d0384e89bdd3e3daf654 -abd02136026e4b1d167b45afa830f435efb2619d22e00f015208e156991c74c0d14c06d1994a3032dbe114e06370cc72 -81620a6316b14c80d521e06a9f0e7971f1454081de20ea24888653b75f3c0bfd5aab8b58d7ba7a6141be9eb03bd7c1ca -8baab042d5a0522f704a5b3c362ca939b06820db8e35026c890eeeceb00dc607b088dbcc54f8c7c89b04f0703c48639d -b5493244928669273037c380a280e85e8e793d3f2d21d05e4471bd0307fd5077907f090926b88b2ee57c9c0cf217d181 -869932aa4d1307c910822c2da57376e64fadee2180696bcc45121056d63576b8a47c87f3859dc4cce29fab14f5bfc581 -a478015851be15bcbcbb735ccbf1bc05c482e5451f42898782e69a300c324180859d325cf340ee050aa19a25c0a46e6f -8df19bb1ea55ba4e0a26fac6b25844828d30550dab3cf869856ebebb7f045a79201b63ce0a6518884fd70541263fac14 -9438d13c62e5b9127d7074f0ab9266148b358183958d53402b8c35b8fb0191e978ff62ab3b88d50a64ee6e38a6033576 -81e9dcbeca58d8226fcdd27418df047b640fcf53bf13bc34b7bd47fb749eba5d7c5c3eb249b345f1a253b45b188b4a36 -801583f8707218ead0c4e215051c3ff0e0323a712dae13c0dba0e3e82a8dc7a69dc016bae9e31eb4cdd5ddbe47711e4c -9083e8c0508088fbf963bbabe7cb5ee4cd13c9513c8d15bb58f732aacef2d480441025c8c9ddd07540533dfd839414b2 -a183b8000ba2e20cc00d7e1f5b004a8b191ca41b0d21bfbfbb61d8c0a37925f6495132f5f9b240c411d6f40856497243 -84b5eccb5375180c56551d262875f7694033f6f1e1da98ea6e54ba75d5852360ceeff9e04c92b74b176c15f0255b8459 -a38bf79e3363c3e261d487f4c707d346d4e72da048dcaf750eefc846bfbe3f832780b9197c521c5f633fb434fe762b5c -a24c9a171757f95a7c87fd30f5dae6e37eb18a0e11285590531cc911d158ee1f6863fe655fdd4a7be8d3e41ef3b7edf7 -96c5726534bd2e9f0e56704829fd684d2cbc1bd188407f88337eb1a3280b97e917d7b1ecda34a7fa64203351922f42a0 -873f2b6006bbd86dc17b4a9cec6dfff10c820824bc4c10e5d8b85c48531384cafb7d3ebf8e77557ee6706edff6e52484 -ae3a5440eb7849cc104f8ce22a55d4eeaa59b242c9088401b3ffe675921b4092e19db3cb4fcb1a5d79596ed66caeb832 -b9f21a31f2870ee0590c080efba434a76e55b03cd5e3ab280a2a87061a38093603a84b5da676359c5e9654613059160a -8b58019e7b17cc02af600b4ee426158b8775f7a1922a1e216c5ec96dec57e7456443f3de84e7d035dcfce36973924106 -927fc1fec68c503918b860cdd8d33cbde51836209726f7ee79d58aaad8b9bfd81cd0020e96e7da36d5e72928525ee887 -841f179bf2297aba7b59354c8db4a64b1714806f3f33175df8cc69273d349932d58d86d742b4538a9ef83227fa86eb5a -8390e88458b61efc64494cd01cb9b278b1263cc8f69847f1c20e117fed45f8fd548680bae1df8bfc3b43ab52e0d8afa4 -9867dc5030f9d1265bb1a5c6bd4a192fa9b41e8bbb6f1468f54e7337029c809dc8947ee3990e8fcc54f32f8bb8e89780 -a97999c8994a202f9eac7602faf63047310e103628bbfacb20be74739cd09e49ec26205bedc550d41e8487079065c56c -aaee1ddaf788f80b93703e7ff19428cd80b83574d0a423013fe5217b137968355d4b24830f0f22e474f4464da541dba2 -97090cf4be99ae50baf1471035ad5f027a80889f89ad2af4e33ef23c6a789c179daa34f802c1b8ffc4c2a5dbdeadca0a -ad0a19986b97ab377c9f9c05eac0fa335277f07a79aa6d26d0638c26b37e6a319041c8b90a13a9af83e26bba87679412 -945f6d0148dd09cfd839ff0933da07c9797e718c9303d3e37cd6b74671c92c555588928cb33e04f01eec781a35a19874 -b3788894f44f7e54eef966c11c7225d95f97ab3700f202beb6895500587cdb28dbfade3ec3c9694398b8042b16c867a9 -aebfd343848ae92f6782bca7bfef5d25d748012bbf199b2f54cbf655c1644dcd8cfebe824ae175f12acac8e7d9789343 -95bdbc98a3a912ca055d799e288c5c786dc0da4fbe0cbc6dc57a609af777c78fab1c7b1e4272bb2899f87b3e494a92c0 -99f9935e2515780999e2cbd85bb8ebe4bf09e99c1952c2843a4cf073dcda39b673f19b35b76885cfa5a2ea4ad13a5ad8 -b8b622c30b16157341b19cd2cbd762ecfe4d530aae4738406ac3c7670b566606796b075d1afcb236fab2323c850c9343 -b8bc4394c0351645fefd3f5854217bc30247f9079a0290d31831a1c44759e367b231bce707a9cf1d7f105cc56bceb6d8 -95548b61bc1dc7de0561fd4aac3c035c9aefb2d6a14f8241af92aa5b77a51f1654f2e1596299b4d86014c80ee82003a1 -b1f898a9e9be8874e4b71a6fd5f39c3b4998f03cfe15275c14eab2afa6049eb6e606acdd6b25dc87b74dcbb2d0da6e14 -aeacf5cec4447067d4b3697d9d3351ebd75d364d95aa92f28df560e1ff5ac8cef957029d950899ccaf53e514d605d148 -a97120dd147fc3357f6668107fa740b2bcb1241bec2f8a6e6777273cffdcf59c5e16aac952d894d95976844e51e6f04c -8737de60bdcb31c2d2f024c1f39b3fc780a366b62b85b416d51593511d8eb7198f2746529a58b63e22e85720e74aee30 -adde4aa20cab0d548fe86223e5fa3bf0da7d8ec33dd1d76c86619c7788c3812e1337c76ae28cb6166bf5c761aa746fd3 -955713a9bb719f8f4b2f33d73bc8efac08eb2624de91faa5c6e36a765367830744471c34cc2962831a395916bbf349c7 -b2eca76ca5124f7b2328c2ce3acb87a07aa90215bbc9c481702cd785cf695b7901c27ea407db8d3a027ea2cecc96ac93 -9012c21b867a809630952fad4afcfacb8c4e20298b19a7c1cd060002025b38f9d34ea97475f761e3f9f59d3f7e12b927 -83d4f757b7cc01226f1bad2b404ad2315e0290aaa732225853677fdaad2baeef6acc64e1c8663a7803031f50302d4c16 -aced79069c89b201776926d1ef4c4fc822336faef9d5fae13e1dc935321b4c0648943cc8989871b906f387c46fea59c3 -911c240ea7e03df08465a5b5f4ff76878acadc38febde08bbbe031e5fea0a6f66a16ccb6ba2a26551aeb491bb17a90f5 -b9ef1fd0cefd5fc034539fc59c84b8bdf8cb2299f565124c883750426109e99a150cd2ca7681c074d6b55b9730606f77 -8031193d50402cc84152a3b05e361c66ab389e091f653d8b76f164881b36fb31813d3b011f5d5181abe8626fbe3c2204 -b9929c18c80a3438d03d36005446790814e1d8109a07c62fe3ce8d4226ff3872186589f0164e039b50dcfc80f2c7d85a -a340caadc7f41cd535b4a2e0fdfe4d82a4cbb3a71399147c81e664eb0de11409347a4ceb48be3fe5aaf7ae516f336257 -8b5cc166400840c0c16471fec23f7c7ca541568ab7755d4165810aae56d10d08742b6acc82009db1d0625b1d7c872f1a -b3ee860ed90a93db011d3b3736fbdc33485cdf341c72ce7d6efc44dc3ff1af9d2d8d8c915fc9bfa5bce035ff28bbf78e -93d9608f7043d6c50c912cb94c54c11605b2f0bfe73e3b7144c68ce3041e5cafdc4c4be384df921a8ee240726321cf45 -97b658a607029fc0bcb25eaec3ff9d895269df869e35aae003ad4f7844b711b46479ee849124acc88a85c8a10d6c613b -912d1b2f1fed1f57f64c7ae2e6d6a20b073ad2513f81d2610b98a76ba9ff86d9ac54dfc710a000d4f3cb014a03c1fa27 -9306587b7b2df4d2f9562c918ff2d98e9b68917847c51427b62392eab60dbc91697f224bc0548c56195c7a446742d702 -a86e55ec5bd24d68997f39187f75f75d00b2a289a856b9013282af945e424608ca7ec78227039cf11fa87ab9ab740d5a -9782e3af956e640f62f12ec3af390d8a7f40d170d5e171eee3f2cd5d04e8711728fc3d5e18c813a83d608b4d3da4c18b -ad44365a38ace92680fe0f54fcf901fa4fdd8f229eb9176dc1182e634720bcaa6de452fe2a31d7a4aeac5af7890c296a -8ab5ccc21ffe87c3dc111a19e7ca54d9a09ab86316dbbfa50476c1fecfb707d119c245dffce2d0cdf1ac8b07d25c0f89 -8cd763b0173382e149a357569e32686a93cd39a872fff633e48f8eb45d0c5b05a3d73ab30892110249439ded8fbcfbf8 -a75c40aac57ba9bd816f6c1511d5a5236d876285e0ea1b3f36e57824b2d114150d8036cef7aa8eae26072b9802825e5b -a49362fbf29438f6bcd3cd9ab6de5dda15a8b911d5a82d9d42806a0b9107b22dab5576dea8b731f407e995815ca90ae0 -a94a534b672181a8fcb688165666a55e42690046771b134ff7c68fddcaf61816f08225726198c4a252f94d52b38203b6 -a817438bcba5313d578bded71d91d916cca778a1d668b3dd1a58c662f8e7cac2fb4f5fc6123b4ac9f29755b77ed42385 -84b6d4d3feaa298fca23593b33c407174511377862d182a6a67967ba30333359cc16af2e96ac89f20df1fec8284f00cc -97cb96c771be01dcb99c41f3fd847ac84bf37fcc16f22efc7767c5d2f60a7eea91f4aeb8422fc74a97358b5c3c05c789 -83a820968ae2adc5ce435233e81791f401ab4daa19f69f600d203eb7480787f7add771ed7f414be5b8e9a5c53b477e1d -8ea8a8055b58ed95bb242444c7d736410225d5842a76f9db69722f98c48366e511e4001626f8ac7695dac1068c3ceb70 -8c9bcb062d9395c8834a99ce0620a7aec7e78c7fedee91ad2a1dc28308b12f34c4ca2255e453048261518f021c534aa9 -b9f39f3996b7c593a0c4fc64c319082466e6f3ca17cbee1276fe10d2eb62fbb6ad17f7d86ff92609c83ce96e260d5ae5 -b39f10e2a249243534da2a0a424f2e345e6092690bcb39aa2c5867cd8a86e70563b3d5c537a79ff0365b1326147f015d -854f94bc11ec5c09eb3e51cec1a4e2da0be6af9679287ace99de0183a4523eb69aea00058a1cab4a3576f89a5da7cbdd -92c53a9e985362be27923449e797fdf0fa36f925fa4e24bafc1506cda48258887f693dd4fffb48c03cf0501f08f493d7 -b9ed043637fbf1ef9fe1bebd14b38b37a78a4acce4ec829ba5ec15fef444a10c5c7d37cc8f14248545cb413bc654227d -b2f50ea51925529ffb4e247e1373d4d325da79df8cbba8a0efd0b9e36d98f59db624f4162c9ea67c78c46b155f41f582 -896d49825c7972c22bf4685700abaa2daabcd4c15867e0554a643823ca84dd825ae9c08bcbe51dbe94a25e5f7b7f148b -98a3e529e4b3849f20cc8af79e6bf3f85e862d4597bfea69c3286bf5c6372ab4b60938e194371eb7b91e0efd60b47e2a -aa821aee646edf6f004b5ce6a07f14541691dfd709d8dbf9f4b70a358b887f00aa17d781b9358a8e4c950c2bd6f978f7 -a12033fe8e65452889684632cebbfd8254711fd5abb5d9d3115a7fa944000490061f8452da7d1e05e81d69c73db1e812 -ae3a93f6f7a672b663515e93ad7ec14d074c33de9238ae7ad4442c44d8585c5b36e34ea287d6bb9621b7b50fc169aa00 -a182c7004a82c7238e0c4bbc2a1d2162b9bad932747ec26bc09a3996930595db5864b174560b89f2558290fae51fd159 -855d38e9fba71089e6983c22e6eadc3049884ef2edc3d75cbab7b79a910c274ca9530e759add2d1f9342c29e161438c4 -905cc403ad93bb385fdf8ca28896c4686a3d9a7f8b7693e90fbce68c7fe9bfd4283f4b9c1e54ee246143abc579fd20f6 -8e135db52a7ddb31daf59632f1b52041530b03d84cead9e69464c940ae3cea3f14946b78ee7a9b8ccd1a94d288c545b7 -b337b06f800560b99d138e9b580a48875139b1e499fb0b137e24a2892efe5941cd080a4c69ec7d483a0dceb7303e257f -99a564658e3c2d897b59f555f3d6000a91991d04800a450cdbe8f4796ef76c26f77d1f2ba9e3b8e56dc707e70ad0d34f -b8bbf9cda24020515d3bde3edd53ed741b60e68274acb62c2ccd911463408934725e2e1f902f9358eac23d3a74cd7525 -a35ae3a9878c3535f9f8c7394702cfe0c9b30eafca92d69d3a49a942840261759e4eeaf77c1761529adfcfd0aaf90eb4 -acc63b50eb5916ad5c26fe8c23800ed4d47e391b4f61b3159db04d3bb98921144bf8f2ea06e2d40f50aeae23b5924feb -a843dcbcb97f1d2c250df59d3d35e3788b5649d9845da3048057182469a41a4e3835d3da3ea5ab215c88a39cdbad0f29 -a8b58413c71da3fb575bc80668325d42fbf7f0f7c8396bb142ec903f28a81b2453987e70ce3966f7583f3481947db6d4 -a7058cf788fb7e6352839e74806e4361bdd6cc351d542697e590224b74e1e9477ed24aec8b7660b9133b5e3072f1556a -a09a634d9cd439c60cb9ceafb756ba74945b6bbb4e8dc9d49a4fd44ed1fb6ad53bb943f20175905bfb39a72ad72b511c -b216cdfe8f043d84c9b4ab7048f278cb8ab5037c39a50249f6ab0343ec4bc606e4f464e814d16f814677376fae42432e -a63fe5214485e79ac7f110c165908838abac708c47c568a900e1fb98f63082827c0f798802242fb75881293caf3c3293 -84067591f0aec8c588443a919b549599959efd8c9297672c50f5d8a95d93a31b91e044f53cfcec65449342a5d28a0761 -b9c8d6f4232929af2f7807bf89f959da437068499ba23c5af5a3f23ad4ab90a8969238bc557673678a4f05e53e0da712 -99024d488eed42eedee3db5ebeac63a6ae5765c775155e0f4deb930d311b9d4d96bfe26a3609ac180778f0c9b13f0081 -a0f83967d92b4ad4736732420fb0a1cedf7caff51542c912eb24906b67e156ca222e83bcd603d4e0ad7f9aefa203b2c3 -a2e39b80dfc5a149172262ffd8cb79d8b5dd6c953b2b1de03c72291e239f9b7aa3319e369ffa29ec5dbf6d44c14108b7 -a84622d73da4ab80abf2e9ce68012645ba5a299e164d71e2a8778a5ecd7b5ed92f2b612195095ac321c1e515d4018d60 -8e3e5a8538530c8ab13a1d7a1895cb3588eefedc3ff02fccf776170de3d5e0dead94588eb7d77aac03d7571e13c28480 -ae008dbd0ad4ef043ea129100e94357468b892e274e6f786a83edee52504377938e294dfbd3c45e755d15184fde03623 -ab941cfac2ba6d0040dc297bcab5f8b0c21b6e872b45f1d2c817d6288ed81ad3c8e9eaf15477efdb4b20ed5d5ba3c15d -b066f588357faf04b45e9834f3186ae9493982ee0b82fc9ad853a3dc1509ed9a53e96da3cf396970348a4347ba56a686 -a1152f10212399ab38bb5cc0db3e633437787bb092faa97138afd713c7849d24a10d59a17baea39b8ab5a3dfa3abdee5 -b3b9b9381c6829d9ce09d4db06d234264cee3aff62df4028451599c83d88aecc0091141261f446cccb6f5e66b6b1c734 -ae2a336a95836b3a76e8205aa26737ca10d62fed665b0b64511a657320fa564549347d416b8adfc5630a3f7d3f51544e -9308905cf44f2ff58860a9feadec52ff32604cb4525ce86c420b6d4b5b04adeef12b1992646ae299c05b9bb5e344a7ce -a866f694d7c72cefb6fb28b91a42ce811e993ba027334d79e4eb52fead55d1c659851c059289d22a8dd3c698a6be27b7 -8e838ab58c94bae5ea60eb229edd4d88dfdb12fbd3be50d817cb912507e056423c30dd07c048b7c83c7dbae7e6aba5cc -93b51cfb97605ae6b476b2cf08cd5266cc7e701ddd717816b63980ee81072bbf33f00ba4a0466ed2e11f5a5a50bfc003 -ac82f49c94b55ffded6e9df7d1e3032cdd5e0c163c534ec6a20b8f303c4b27cfb57ffe34fea6a0ddb3c1fe9c59b29e51 -9105a660cba4c41eff786bc546c2cd62c7d83a652f4f4733d3b8cf798ff3bd212b26a406f53f999d523f0da93e0df8f7 -86b25f109246050bad54406d233930a4c280cb2fd0215f3af03b382d680c940683aec1f18f83e9373297836f189c78ee -97fabfcfc7f77864c80ffb36d379a1e4adc211b56d1c2fa71d87f4f28fc426363ba99260dbaefd6321da910422513e93 -b302bc1b17fa98531cfe8599eb2428128df0cf6bc548f5c4342002435154e303c83574940896335d857dd9bb11b699af -afd1c76328602fcddfe2be35a2b00cd939a5d883f7b7afbac676683bc214fb157052db60b0574a6e28b4ad7c1cadc7ab -b738c71bc8b4693a7c1ba92bd6db6ffc29f7cab84ba9db38ef5b3c117ee8ae529eed0c26809e9dd78ce34c4b4447c9ba -86501a7d58bbff4ec59f37f21f060d453fdf688dde2713a7ceabdfd766d5435cf0b2ed9c3d01e8d752e231408e4bdaf5 -a7b42913242edc8e12e75de764ceccf548189c060ba55e487df108dc0da0ab96f4beb1638c1e292c1e0e7ea21a650fb4 -b467e5f6a11cff057965bd6aaecd4ae87548f71e8cd49cef07545e79a9136a7f95815d426b784451160d9e26355e0225 -ae70f550098bd408fe496c0fa76c263d29cb4ea3b027ce2747686ba7e179eeb1f8af1c5ab18b3863da5eb75533798a0c -9336662e219ac87358bee22f3a27b48977c2c5883d416f7d479a165134aa13a77145d90721b42a0287e018fb933fe8dd -979b45e3fe95c75b49b075e0fd2a7f1b3a3c7b742761f1252feba0ee946283f9e6e14f61eaaf67a79f4923b15bfa3e41 -b5eec26acc77f1fe0ee621578d7f72d526da2d09bdf493f17c653745c0002f729ed66ba6625ece7ec13bb566786431e9 -92bfaa50bb0abe7143a4efc9c821de8e450482bd5b7f8b5fd0f27d335010dd21933b29b36aec5ed0335c45b7065abbf7 -a45c66fbdd358241efeddf91e0c31b84aa274724125ae6d8be2a798bfc39962ee6a8ec2a5515463b5e28ea35abed4781 -a24707a9c44925ee749a069927e64c317629aa0b0f78bfcf05ceb447ae58beaa264c3f3eeff9dfa176c26171ffc3eebe -84bf55ad211ee3cc13ea03856b4dc631c26801a75651155c1da26d88c5bac0af0d22e4fb17f8ee1af76aee37387dd8cd -8683169f6bb9763b46bf49a57ddea217a8b6d96080150aa95f9ddaef756538097cb2afb88e4e97dbfd9d9998acb2f65b -8c9373c8618c54828d98acd0f14777d1150a4af1b622101bfbcea1f9df5a4d20047a900f2c26ed60b6350f22232511d9 -860a5b8e2b98a4ffc709d6f4c9024ff4ce807c2c97e6fc05c45ba8fc8a62aff7c7831fc911491fa139790e3582ba9d12 -86d108c5c176c62042b02ba3e552de7759d14b424a31b86925d4fced4ac271e91009609fe50c46d9dbd1389ce77f9ad6 -b2ecd36e1c0c74acd095dd255b101691e564301c67f59cf693b7a2b32acca3107b986689d9e9333d53b87e52f0864a9f -a6d49129239f4f32474c72ae84d3a80141596fb72df8ad5d2952fc5da403acbe53085b249d38bccae43a0c9bf25b4965 -8565a6f889c5c06fdfb0e2bdf788bf1df6033d0993af85bd0029ebf38eddd1c3fde6de100a967d24268e4c722c1451e0 -abfccde4ee9dc18f7181cbe04883ed774f96a3856324bd3b0672745bb2bf4fc4aa8299fd4dc5af11fb7478c3e1f0891d -89ba832468dd3a8b62180c2f823f778d0b336cc8e8c0b11ba8964616e0798c65051e52a4644019b62736d987181f2cbb -aedbedb7fa647f743d0c697314b840ec8ccf6428c92a7c5ee797727893a72015a3ebeb95274d031a7540990bb994eb5a -b932b1315265f49ff4db15461a8ed9a521f3bcbe9fa0fe2595ab0319125f1763f8557c9711eac809081a044aa5b9f6ab -868881db332e4c46027dd7cff82e59130392648b983a7ebb059726ea0ba951edc087c45c72efa3c0ecd791a2085bda36 -aa4d0de0cdeb70a4e452d9d369939906a0930d93fb20d6db8ae3b1bdc6d7d4726ef2c7c939591e101c5fe6e0cf8cc357 -a052a19bdd2707f6ba59ae728a144d79992ebcbdeae69a99a9f4ae00edbf1ba23fd2d30059b3ca9790766943ff74a346 -ad5b92862ed7eddf496318ae7943db51d654f6c7d9365283f6f3a3f3b5491f8d2e23e86f8079e5b944e4132c8c4a7a34 -b173f3a3e0d4845fb222477850534ce1a66e7fcc43680533cd3bf4c9a1a942e24dcfa22c54f032b3fff856cc02f09ec4 -93ec8e7b983a51b42dce1ab37da9d2863cf5aaddbb1b97cc0b33a33a51692ac9f26c6ba0794f868edbeddc8a03b21ebe -a97e8c3704fad405750be1c89ba8bbabc4b8a9465c8dc55206aab0ada8e0cbbea2563c37043ed1169e1b792cb0b19b68 -a3e190d789f48e9244fa1dfd2ca0019c5f5ea66dc463cd683b24aac71cdf8114c3b520ceaf8a2f9df8be17a7a7bb7a93 -87366c90d06453142bd80a496901f4500168ea004d78570c4fee1d1fd4c8a9cbf8d6e15376a9abc038792893f5caeba2 -8362b37b12e89b75c6137ef809d33d3c0ccb3f61b8166aa10c209acb47535bc2638fe2d15bd34f5a6eb6e90c98247ff1 -8990f1ab6e3da208a07819754772fd6d679405fe72508a9df6ff416971c51b749262fccfdeccd9bce051823b0a399e9e -83f2d23a2e6a82ce87add2a7ecec0dc6fbe6eacecdaec8f5273dab91f422f4b2a22d278f10a72fa679903e39828a6f18 -95340f5c35769af7ec7daf3c63ed8dc812117151f644aa221d132eaffcdf2a282ff294b9b70f59b0649f56d2276b7c3a -a8a8525c41a039846c2dbe5f3ae67b21f88ea96b1bf2db8429631d1cd35d2ecac9aba567e78a82f002ae63d9654b211a -a379e0904ccd44e7e8f00a895de5843c04190ed8f8321c69f8dfb1fd2a0c130721812bf627c43ac9fc8139f17d29d4b4 -954b29268d81560aeb1e6c5f9e40a556d525d53e64444870c79225affd7cfa9550d02b22233ea3155dfbe23320b61165 -861ef250357eed2322725ed3f0a54faa178af238505bd8297f478679c146c7e80d2fc4fd26f2ace8791cb1b9ac475540 -802963ba13bb958d6671dc628416fe495682f8977ec295a584264afa0c883fb510c098429be9a4bcad0749ab4a330e89 -a7d1e6637af0aabdbd6232a76e19322b0f475664f5546feb43ab79682b7cd9c2759607bd26515d446e35c8945ce4d1cb -877f2e3442afbb07890aa79765fbb9834da9e01c0ca268ffed62b5557f226517aee34d36e5b96973e2f388dc14c57b47 -b08bec12a00e48bdeec12192169dd2275ae768025f1eadce58652f81a449de44d42a2eef12722a6f53f48d9641272219 -93c8cfa679373a9c181679d0a995d74beeb1ec5d8262fafb0a8d5bc7407c534df8209877434525574f28e3c65d265c19 -96601667870868dbf9eeaede138aa33886f6f4ecd457fcb108d9b1bd2a3ff92bbf2c916c8f80b479aff6d911cba1af82 -8b298b1d2ce662a265d9d666c6d70470bd619505fc37d955b58d55150646fe52c707ded2495ca00cb68a33c938940bd9 -b2c9bca6e5f2dec4c4dd1c71cd4ee0e45914a33c01f7d7c1bd5f4a5d837f90da6b6be4b4e3abc1cfda727ae046032aaa -b11488471dfd7d842a78cac4c3b8edf8edd879188d20f3fda06b24f3ab450256c96b9e02c34fdb82b5180a7efeca81be -b70d876171eeb9ecd5d86ec792a537a6632e0a052d6249bccc0faeca2988d9277c1de4785d56b4c1b3938c4d7f0b7454 -861699c27aeff5f83068593bbdcb43719ae236f1642f68f1ae6546f56ea18309f43b97c985e1a85a8108ef5796e36b6d -aba7eea67b9fbed1383b38f81fae2edafb000253bce24b3e55bdf24bf9b3a1e4d3df7d1297438cabae737fd6ace23037 -b88dfece0f6cb12aecf6fc13f7aae8f734ca14bcef14546ae2c60ee22ab54ddf2dd261c1b66ea57a326d272af0735ed9 -8b55a43820c940ca862f6a56dd58612157f6a1ae498d4068044791f684e8ea37034a1237f64043226a30d9359ffbd978 -a426b5317c68c415eaeb28f74e408971e7e54b6801a6ab8370b2be81edf6154a04e3e708b9d72b8975cd27f6f781fc60 -827388f3e7e832415ecf52e17f17ebc75200d08599d7b10a1a7f2d596d4c107455727d9df5c26c42e23759e37927b715 -84c454d14543d1260bfcce81dcdededdec6ce1246707e91129ed8de78d04e4615d1706802322f4ff026fdfa7ef1f4b88 -836fd4f0e801ca2de2d83d3fe83370e75ef11345770d4b69cbac688384e8eeb0465a265aff1c1388c7a9ff2e8f1c8448 -8f39874099919f326be7b8d0dc84031c28eefdcda6c53ce1d0aa9d63d719e3447e18496dcf7e2b669dfc268b06a863d4 -b146f954a29061034f394dfb6649b019067453a306e664d65b3533906fe17dafee55b5745121b357330014c71b636742 -a32481dec0f77f6d6a03e0752ba1a56bc8427c7c5bcaccc58e606805d8ea2503045c97ac1675c5a2254b53aef49ae9bf -b9a2b5b2c03436fb87d37245c9edf505af8ae0b88e7a5e8756f0e620a0e228fb01acd68d5b334d770c727d0b6c4fd172 -a9c33916f4e5b50807aeef1aa200c9c5c2844ea96397a10684f68e0e84b233bb40a3b6c326262d2ca0096f4a23586a05 -8caa5b91f1d407b868ae9b727ba4aa2705b5cfd0b465d880f139ae26899cc3d98de31875e2e78cb994f493d3e11afa40 -af9bdac94874844502c05ab64399f653ea6fbf2a40d410787e2b4feca681df3d02abfb930a952bc969c8aedc99baaeca -99a96e0c0f7e25774cb47f29954ec5cdd98e6c24787b5272c8f0a6452663ec50ab1e768cc70fb560dd0868041c4eff18 -aec5645076eae4922fb2b938744358d559af37e3d6818deff7bdacab3b71216b8b9487195e5a641db2e68cfbc685f419 -b264b75a75e783ca885213346e3605670d096764888a70fb949a99ef5561afa41cd173bdb80af1fa9d6ee0c8b97f344b -a46e606e947db3eb7e25c9c58ac90109b69043ef447509c26fd716a34858ed2e161120f762df4715b8050e4573e9b347 -96b173f6d3122763dc93d8d9bad0e952bbc0cba53d2c2aaf79daa3a2516cccd74f5d8045504df59d69cf9b37106cd37f -a1f3822e9987ace4cf457f80346fe17287a43ff589cef90e2aae8b52e0bbc651f8824f56f964f1d6e397c53e0d69052a -889303ee671a1deb51a7b56a736ea2b7f9d2eb7301951457217fa0fe0d4c4d79abd3c8075a614c4287bef35db63bfb23 -a5acebc9496cc462523a9d38c675b51eaa4bf555cfe1ffc57cf4b0b38d3bb1f101be1c67df5647e51a1d491a3dba139f -a5c47813ac9fa5c0732c6030e6e86e2db48a32d97b12dd2ce8d92a1a26945557828b8b1e4de05277165af45da104ff77 -87f7131c63a8dcd0d74baef8ab91cc5bd3f6367a6b5cc1f80293d9808f91df173a360b92621b240f8b03fe91c3ffd239 -b483cbed238b8d2b11769e1fa5cbfc5ac8bf14d4ed87142ae0cdffc04984b47d9854cc291daacfdf21708dad5a152e14 -a654a05cf89a742eb1d0f21d592287deb274e23b241dfd48759dcbd4b035da96b921db6337d0696d09c2e9c7ea98fa38 -8c3d475a03a9bea864ac714bd31a3c7dbe5ecf2a94bbacb054fd262602b9cfe7b55316d7e0ad1f932f733448a0948f54 -97f7150932e0d9fac35a4949b8e9b5839a70519c0ac08419a08ba4e45c34228e8df00b64f156f36512cbcf928d86e2e4 -a2aaf6efe0a8c3f67deaffad1e4dc4142f327ba5be6395376c56952a074e2a8816d9d8f0191e1aac26b9dedbb194376c -991b37e00e1375cfba4e46e1e0102b5edc900b159ff8a868a5e578527acdbe9df1b6aed996379bce624fb23f12082bba -9829631c25ad10d03a13586d4509d4fa17f38c564ae49f97ca2ce57171bab650b95151c8eee063d995348948df87a83f -97865cc65b30c8da34dc650af10756b7088ba3128381e024f405c84033587941380df91e1aba53aec4145a62afa05136 -a518a4db7013ff59a889956eb6392a63df5e6940f96292ce929cc42506c203f36906a7c46a1bf20ce425ad4e919df551 -9563f074897461613f4416d163255b3d40be15a76898cbda59d5fca1d18b175ad826f807c77b382bd75115ba7391978d -855e16b9f9fad0e227ca85a56c268c77e2d1f07221829e584dabe9caa925439db8289c56a068a55bcc2f1febf5cb8f97 -a5b88cdc77fc4320865f5a58577d81ca4204c87fae0520d480fd8dc346ac87a6c306c643293866e62c359c454f9fa210 -9949f904e1d44559ca7eabf551112b0e5aaba897c25f2eead5514b6131f8acbb274bf49821a2cc230ef1359a7545fc09 -942f37fb1914dbecc43c588b414ecda4a10b6a7dc378ab5df9ddeb6b2453233dc6a26415fb53eaf10904167c16600a44 -a1540bbdf981c6071c7b0e6ac06e2641088fab0f8856ae847c80479373d526cf6d0ee9ce47390ab468e298d7f85b4321 -b600026df69e114237fd68a945c4e6974a34765faded99b1c72757ac15e86983ec42a504b796c8ec1f004535cd0fa8d5 -b62244d25116ba73ef1f177e198da10e94af2660bf616efd9cc02bda2503ad979efa1d53df28b55f4042571881feb431 -8cbcf56edbf8c76bdee89cc88bd55bcdea6f2c13c1cf1bf2c0c0a26792ca63b72043fbcd46a32fa1d7497d363885cf3b -b4162b1601954df9256362dea851daf2a889efe83c57a2a6bd1e1b9022417bfd08431ab532296c5c320ab4eb299677b1 -a423113be8ddc50bfe92bc9d6bc76055af3024c2b320b909adce68327f9e5012b26d8672d3810191df800b99a1d6274e -8fb97e0f377a64c793591d889cd2c9ab26e6b6fe3bd885390ad6884f86050a38f0d34e9249098f070474459137dc21e8 -8496332f7bc848aacc43f0c24eb761258a3bb5d67447098defadd788e84863226115fb43411484ee6c86d341f1adc3c8 -8033dd2e37663eaece28c0849a0e2284d4cdfc90d4f03ddceaedd5b86c770b1b5eb48751ffe3fe623793021a6334f2ed -b36fadcfaf6a277df14a42e02a3107e68986db35da2166e3f492ed3d6db03c6018d92bb34ab5dc30643b2f165b4135b0 -aa72a29bad0fe78dec3523bf692956d07086e82c56796908733a7dbcc801a7cf949425909b611421da1b01c7c3233e1d -a8f23bbd39ebb4ef3ff37a69ca114d412d0e82ea27bd9a2c0c8836f6b15d773e98d43158652cdfba74855f9bfc764dad -ad5cf7c7c1a68b52cddf4e64cc5e41eecb90d7d191bf24f20ef5978b31be4ac0c1b9da7123cdfc760fc2b66a7c312f92 -a0bb840ee52ab624e1ba2bb5c8ee72625c62479b361531a3172a7b5cb8f53310cae9ed4c64d4728f40f3beeef4c51266 -82a81d048e8c19b7e7f42b4125527a9541f8e9c4995379c58a8968665d2b5356ed721f60877bf815ae247e6aba8ae573 -8c1d8b6f01c3d22ddf8c36f1f293846bb1819b9d81d02bfa146d0b8594e62b1e0f1b05f763b01515691de1b1bd2f184f -aa74c1fae5f97b58b843d804ef1f4acd1267c65898390f2a45d72f8cbcb22cb3b1a8b885a424b104366a945c4372c303 -8673e0415f1b4db544cf1fc39adeef6df6819e890ffaa27122ba1bacbf2aad312f94a140bf4d5253c5e090736bae310f -ada4292eb29e733cd4843b532fea78edb4804295772754ff3f20fc8435a53ddbb5a4088bd05de217ef651bf5058939ba -9362eb2639f4812cdff09baf7917250e4779b1a14dd0d5bcba109f825ea3ba76b2611a84bc91e21ed8364351573bf473 -ac07bbc11a784e5da3f477d1f0512cf7a0ecc0d993f2e80f9259318e6894f5b14bf4aa61aa318fc0ca8c210956eab5c2 -b774dfa8cbf6a784434988549f72aafa15d51ef4dcbe5c69c14b468dead0248e75fe10510c236c8900e4d4a4cc4d4046 -aaa5201e045cd538bfaed5162ef37939b75d17adbebb096a1c2f2b63ac593b55093fef72fe455f8c527b78f5d373078c -a8af4682859a30a3c4db527cadad2867118be32afbfddfb4178280747c5206cb4a827b3a2bb817f9397842a1d1637b18 -b1172065b24ee54b77afd5dec43980000db0ba8182d29933a7d5dfbca6fc9fcc0b34f950527cf0bbc077373ed1e3e668 -965f0095ef53d9c536724d12047cfabedb311f67588d6152b0724d07ef3275d6de87dc7d8e613de2fa28ea38162f0308 -b2fd003b7347774288575c65c217c497df97ba4a187fe35264d2ed1d39e35d862fc904a206dcb11c181c835ab7480200 -8c4d0588ff2ef693ecac5ae22a312d94f545686d00c9ca8a989155cf3360c46f390f3e8a6f521163508aa899027d9ab9 -85db932750cbbb7cf46f72c97afb04bcf6f648d471fd2b6ead9a692c93ee41250d12dd21af0dcd23c2ffb68ee0103016 -883cb8b1bbc38f7658aa3b0464d8b04c141f8fad442bae3af5675103f452862b9a01fc06c2c3c06e607756dbec8fe59d -b1c645742675db17324a7454126760e99a7424c9a889627db4670b5a739a2d3046782ca54dfb44e1d741efe80774ff9e -a6b5d4fe4ff92a050a5bccbea768c65c595d9cd8ac79045934245131b8375cb3baf14e306dfab158dc19826f1f46c174 -a355ca87ac37b82f934d52ab75ac6b8d23c38a9a9409697b6f0adfb959a64ddefd030444d7c96424762e347e6052bacd -8118148e0f0682ac8ade23c1212c24fdc8b75b643dfb86c9f862c0983b14c22dc514f19ce940275700a0ee9a367a784c -8953c4ce63d343efefe2c90184247ae9d3d04c8c8077e46cb481de1b244f80ed1d0505d613f027b40f2567dd78fb12e5 -b4218ee61312099e9f65c865a6e697fc6ececc11676fec8aef5b9799ebcb9a561899e073bc0dc22821165184bcf1567a -96e53184516e849a92f9ad6fd9fb2a0b1dacb6027050d40e7052853f14f7f725784fcf68d8d66468249d176908aaab6f -af0309854bd495639c7426059e5f2cc7f3c62b96684c507e913839989b353f4225162c251296f2de471c537f7263bb2c -98d5b1c0135e475b5a4a13dd2424bcbeb3b0bbdd40be2818b4f95af28e95b43dd3561dc194974981afaa5e3ee9eb1768 -a65f3de843eff34dc413a6cc3dd740ef3a71902792a1934bfa328bc185a4e86e08a61858b6034546eed6ca8d1b36a3aa -a8eab8bdffb2feddd4b9b7853cba152f57a54d7b0dbefedf0c581f620044bafd6318d7e6bb7d0692b8b51e44ce4bcda6 -aae01d858392cd53fe52c5cfb29274f4826a15c4a6d9b3fa1fe55f10581e559cadc5864b99ef1d9460c54a236887ca74 -8aaa676b466d9ad6f90eacb5c95c43b5d8a7c161777a16a5ad05db9b85d5395bd6a827ed38a9341deb1761986791929c -b9a659cc348db89f5037d1adaf47b3d617a6ff812f66f87885dad841eb306d5f6609d65fb045a92751d99b82808640d2 -8a1b5276c08409672ad39a5d051ef70f34fde64cea77fb9c46124d78af67163ef219fed9e4caea228115c8e5d13b4d6f -b46ad5c5c6de77b5edec17ed38ada6fb63ab7cd66be5b57a4e37a267b9259f3794ed7a9662a6ba3b3ea88c3cb5e6aff3 -a0f683f9fdafb04583e5c3cdaaef18c1756348e57d1868faeb7a091034993874d38a064c5d7ab7cf77efa182c7e53d03 -8f76435e23cbc8dc7f5a87fb5ccfeb872bfc0fa7c76c19838f2c5465b9b60944378a7af5b37ade81614efe9573ee7711 -add037cebcaa3c78a5e860b8971e6d4183e6c8dc76edb04e959dadacbcb2ce2de8b1c2307ba7835c2d6542764c2ea080 -a2eb0a2d054c159332d5a18ef543c1769e037ad5d9fbdff224a27d6fd82e80405a529b37ee21f8d3979bbc3b06fb6326 -a2baca90282fd708882fbb0668e8d8b8f83fa51787cd45f86704a9a1579e0b5ebf91c0f8af24c2b5d7b86fec7ddfc3b3 -b1d6fd2da2ae66ca4352f50684c909a34c9b99640f202ab36bb89bbd6539b579b7a04b48a3829c2430c5940ac021a39b -b1541deb6ece54c26572f4a4494a5f474852ec3588820005406269e442fe9d6911240fd64bb2ec36e24c337351e568a3 -8e16aa6f9c49d3e9b273aa8cc29ecd01d68922681c35c82abeb5faeeb3fb0e9df89b473649e28c87b16ffcd694d2d510 -a2f06e7da40723cd9360e042eb36aaea98e1e7bc464d3f0693f091ff55e417ff6a5450c0135457db5ee31ccbedd4c09b -a6edd0e2b9a06d0caa3afae6a0be76af246a192cf5f93c219b156aa5c175d9859b2a0ba6ab654a79227d283eb5cf6cf9 -ae6d0ae9a9d1b941f3a150deebdc6ffea11e9caaaaf5e5557d9e7f66ade224e67b028d41b646e9f6b57e7e92749189cc -aba3b61b423b5a1b744540c5732b4d6c15b3a20650f983ece43264901e43b776cd35caa01e0ca1586e60648b8a2a6c10 -ad79fb54357484eea57ca4ec6b77a142e138662dcafa36dfb978ef328a723019092afa7fc8692434d84f28176b5ad969 -997c7ab0a7514ca2624864a1e152d2130adf235815a12eb0e006216c4fe1b984e02fee5bbe58355aa55998798ac5bf89 -a9d81f9192a62728ecaf45bd308261c2f008af1e2797e223250ae62cac4438632e3fdbe8fb15ea62ef8478b1704cec83 -9168127f09f30200e9187e13c0067fc2481e1af74df49d22b5de7b48b82a56d0f2c19bacfc9521ae0b1520cc3dfd3bf4 -801890010d3b3efdce0602f8fbab3658e4a088f90117b099e08eab19ab1aeb837e20cf93b78c06b4a6b223444fb6e216 -90a30e3d40c230c111251320be19a02e7d4888078dcf3f8869ca29d7be724d1a724f087639e134525cd7e0a81f139550 -ac303a6337d5b7af335d853ea52c13e608b0537bee5b818b7c9eb2d63742cc3c7fd2856d0b996b9a2e94805c7f87c114 -a11e4b6e5585a51a556132a5aeb565cf86b0d2b2c983d033efd653bbfe6472d2dea5a66a1c67acbdbaf1cfecd0de37b4 -946354743a96b65cf60c39fc5386b7ac026a1ed64ce30686965900a73cc594d0964588452ee5cec08ba079cd089d436c -af645f7a4eccff64b4a38fc90a57524f37bb809f0df45eeb2b58e7b850673f341c7991904f48f3dede366f4d300e22ba -83196522898abc5ec71a60078a2c1085e68ea744ca69baf69fd3f6db2704aec328cb97cc81c8a9171fb3aaf1f7b24178 -a53b710c8f1736fefe2ba041735fff78d20662978810489841406b6ae8923103f342cbe6db436f3598ddd2d8f591fd1d -aed77e28baf473b462049b53fd19ea0a7f912a59cd52ee38e9ea55f07c263a4ff60c74be6c06d9a7ce56685c014dde63 -8994a271bb2801d57c7cf42ab1387e66412c64746bd1550dd5f2b7d9ba4c89397a5e645604cdb92ecddb7e78918e08eb -98418d8b3b334672ff391840c370a3cf8cb8b0f0b62c94dd6086d20af5a130573ec696ee185688327c115890648c5414 -b7f0d8ce87216871e6422443831b846247cd5720ef12c04c8169a23ce22b596390677f6909a01b147a45e69bc54b0ac6 -990da5648177d20c26dc3d221811343719ee26b2b53552696768fa531914cfd3b5327b480657655cbaf83a8b23a7c017 -af6c82ac32c139e5b893f1c2872f47f51f286486aa48b80f0ccdc4a8c04d7605055af57f645fccf89b1e8ae047069855 -b6478e1bfa11d124ad200c32164655bd01270df97aad817d048c7ae751a161240ab9ef298ca281c9f5325ae76c166f0f -80656ee167fa8d4b78e966a98728dc222877245fac085c4ac36d620106e6d9557ec1ddc4379214c1a33c4dbcde81a9a2 -b16842af2e0ce8f6902a9d7acdd0b47fd90fc1a9aca19521df0f566d47dd8a9d9e0bd8096976e2580ba49ee5c6313e89 -b389d5d3ecdd4dbef69fdc2fb04d896c63d821f826c52519143164126efa607832ef363306c366535c18a9f2381058af -865ad1888cb52019627b885d6acb447c4a9bf3114c3cc50a74b55601abeec4d74db5dae73f8485ff2e84367f5fb30636 -97d1dc43963b02d511b5238b74db8ff83a9f18d6e027bdb91bd66d051bf82d801c28b3f76d5425f89cda2a73841fa9e1 -a6686f0701b6c34ed66edbe945518c01321a31e3c2cfb18fb985c84732930a73e9b6fd2f64e11ee77d2a805b70af6526 -8e6dd566aa4efcd154d5cf5c34aa001fd02094e45fd8403785c15d49636f25c296eae1dc547ff3078fd9d9265e50f770 -986d09ec01b649370b824f8f92e5f980100009af221465ed7c14b1dcc5fb0dbf5935d066800f827aba839597048c4ad5 -a2a640b38f8559bf84e17b8803d57798b1398f645636a7553aa5a0e0c1a6f46755b7e77077be4510de9ffc8b7bc8f275 -88549651874af0fc68da48ee222e88dddd764d709edba3f285db3cd03afb716d26f9135907cb642db3936f922e7268b9 -9037bc6da84fd59986eb0957d804aae030dcfa78998b2150a2c378647b8982d208dacf436a1d0c64edd766966b0e81b1 -96ce84ed7d68d8418038f363fd254fe1b965f4a334268fe45a7dcd1aa1a62972f64c0448684029e102c34fe9ec61cf44 -93ba99e10a41e77692403d0594d692ecf4217642de974eb5383d1429985b9bea6533d1485f0813ef4e7d1de32b8ffb9d -98bdcd80556812cdbbdd8f7a69f6f1d7cffda6784015cbe14ab19dfa164ddd88cac55edf883f471053992c681dd4344a -8347019bce5475b7f1059be4f01baa85814acaded272014df819d2cb37fa6e94b7869c53bb82d6992bc32ba6fa20c249 -a253ce221af89e5e24ba2dc3522116e10b7f54a10f829eb0ea121f9b2f8772e080a5205c70e64650ddbe08d2d6526e50 -af0d9fb9fbbb7cf8957cb2ac38d68ab21ee169b2d02d45b248ff2923b8a10aa0f4189b199aa0edae15d115f5cac5a82e -b0788499e6f663ad1da549f9faac5c6fed2fb7a62133fa7b04248b5db8df90c1b2088998c60bb153e09b351692064069 -a516362a13e88566ef3a7031315968b58abf53cd75ac3848e810a9b3fae54ab35f014a12b4bdc281418bbaba482ba0cc -a49c6372635fe1173b12c750df547780ce41f3cd87fdc8e7815b14e663e8532e9eae7d3353da2725e83108e4a75b49a4 -8465563a21256ab7140f08f24d853d3c46b52a42c3b396efaee7235e424a9eec92e36a088b7fa7237d710d6240b3d2a8 -b5e689aa5f9eb85d424324b120af75449d068e832fb0a2d4a0ded9babffe977b40aa42af5c3c08b0805281095ce0d85a -b11fffbdb735c9fc8d5ebcba5bf300d1ebd2315b2ec77f76248a864eb4523c01c4c66827e6638253d9cec06f10e8804b -a2af078a9c2a194dae54dcb427c4ba6dad6ee747d271f3b6cf7ad601d2d9d4df6d81b3d422e7a2c3cc6ae7ddb02f676e -809196d33d7c1a6e0389e79df44e31f95d721942057ac42f5b3a8102aff5faf9337c38110f316554c80c6aa98dc55803 -878380fe7ade20dc6d9ec52aa5e50f0dfd34abfd091f0d9f5e0a291a128d12f9f68cff712570ac1c705e6b92e3af47e1 -a571663c17e5d175c80af7cab390bb4321c29f775350a32a210503bfed41c5dccadca6bbf0c12ca307d4519e0ec7e3e9 -86c82c693cb491093e5372efebb71b4d4208ee5873d78eb242e1e4fb19739d00e7c404ba4eea5f0d989e7e05085140d1 -adad7dff03f10fe3bb23402d89be0006894013790e9c1f70404c788ff4ac69040899883fde6da139f600a12a5f979d0c -8e07a2fa09c14943d85b27902f9dd91e8f9e2b36a016219a42841e733df73ebc164760f018c727425638230f294b5d2b -ac967a24b209ba09c68128228639ded0e64bda4f3ef55ebdb9823ec0538ef3b14185ab7fbd4237496bedff13be04b920 -98217ab6bfff5e6c1ba271e288d8c06ac745aa1ec8bdd27f0d309ab1741f2ca21b6a5cec099d7b5bf072203e27878f1c -a0489b7bad0a4d4838c2eff854a583afc0b38aaa3cc11ff41979beb9b0d56068da6d720428b5f7871fea0429a693c902 -8440520add696bda61419dc889d654d14e96fa2a76b40a4025a834ff6e0c3091747f4458d07a09f633ce36953d17cfca -9527537d0f5766441621221d8ceafeeabd6c3d2de7e6d9826d7f323b87fdb58ff7280639d64be43c664ac944c5d2ce73 -94164c9f13fe33550db673001e160354c13d501df38b3e275204745395e558378d6c040611067a9d2a998f6ba01a14aa -849e51bf310c68200d918c842e222727a49bfde514bb3dfbd7d50b394b7b1b879ab0b263dc03b3067970fe1b1c6de946 -b9cf657519dbecd3fdebbde4274741fbae8ea9254836460bb31ab2b2f80e811d2da3db977ac06b37e16b70ffe977a065 -b6597e56705376ff70b3c569a07d329e8c24619e1a1e795c25e04ccd1ee8be4973cfe0e320728f74b90e991dcf99eb87 -8cb69427a5398cadfc6207e6e8c33fec480521e6e32f34d8448a85d013db52860643e805e735688dadeb0adf2c8146c8 -8c43413357c19ced287c67696925f1a158d4a2f97d97a0ca52e0e2ed423eabad837b2e7f245b6bf71207b8631a77e2fb -b158821f160c068c587418e6dac53dde6bc342457dd9e34cee9655534185edc5e3f31f57e38f22e8a1faa57a0c662ab7 -95a055aad56db57097e1e911fe567bcc31594a1e431643c32bed2a6da5bc4df4435b2cb6a7cbaa71c5ac63fcf2a87847 -88a9ae312b7edf2ccb7a866dbd8d38951bae97a11258c59955335c0b14e9edcb2f4e69b379f5117f89d2acac5f4b6942 -90eb01e2550a27191a22eced09f999ecb110acdff34d01d928f96def344c944d712d3303f8694aad070fedb6603163ff -a9a85ebdf9322ff818ad3f7f21687b2059a67b85f60b1152d10d848081d012891b9ea1ad6141a2ab7558c67e35661e95 -b25f6657ef674cd5150f7f49a10c29d61ce52fa5dd061aca7e4787434f71d3b89ca9326140180f7d9a7f61ad2c896c56 -933ff2baae013d166b7d702a970ed2736c3f564a8ce739059952173141992aa47c3ae470567240de585f8c5fa015b96a -a3fc388feaa7dfc5e0010d50fee2a2490f5e7009c098e1f0370468d33e301fbdefcaad83a20cf7fc7a714c75c6537ca9 -b097462c549fefb8369f621a865f2bfc93d8ff70e63c82998b1caa661516e1140693c28f75e5189394371ab557d0c605 -8edd93016d1cfa27ad7ee8242800c8706beccf2bb7c949b0dca2f06c3b5c9c07279d85d3b0840cbfd5b757fb954b21a8 -b4d71375c9e127d9726c5e9b3ff8997223e023571cca32842505ddef567c6fa628c62cd23ec058bb98a1def7ac0d8805 -956317c00252a2a3e8ccc6c3e46b10dd51195de837fabea2523d4804ddba47480ac814e1afc0c0c8c8a386c3551d5799 -9750524692428b3ecaaf6cc64f7f9eb0b89fba94f5ca2e10224155bfd570de837526b2e653a70a967e0bf774b01adbca -ac62f1c1e190522974592b0b1c6c38b527f71fc91c20f9257de2a991af4fb4a46e7db206698f3bdb0f368c186a8a82c9 -90de9bab35eeedc160183e83fc460ba80e3c97a4f21e8e707a002a6304973692401a37c041795eec3cf40be928e80939 -872a90e49b0c246fbc3c48687b250dd6e22057956fcdf72808bba99d4f175fe4bdeb5576ae7d1e18505a900927fe5c8a -b9f95ea64cc4a81c52c545e80c2e6991db77e5202d829f2205ea596c9727aae55cc6551eec1e5f99443f8f8705aaebee -a4f7eae6d374de3da210cce1244f959ee61a49d0a87a19841b5b527b4aafe1b0dbe8f919d6d36ed9db6fb2516df97c72 -ad84458121874036d5f69b69c72cbfdcb3ee5860ecd62442dda4503b024e817ff913b6e3564af7e2fe1e4e3568959cfc -ac77fffb0a942ac32c5b16188b09dc51c7fe098cbc147219cbb72e6af0d913a59fdabff6a2b011b9c33522cddb37f689 -846e0e513beadc4c0b5b73b7efe5c5bddcccbbe399bd0a4513df6f37c56adfe227717c7fff91f9b6b4e26b3d26a06d37 -b131293a482bb503c15a9ae1bcbbd141b415780b957973c8b6c2bb789278c0c861152231e1f8f6452944f50a057c27eb -aefb847d417709a67144de4eb60d37eed3a46ba07454ed30b0a3f99074cb8c26981b4c66e9b6efac79be350d0ffeb93e -a85bc60ecd2993a950e35f6fbaec65835e84f8092d13c4911a533ccc864dfea808a1e184ea402a7603e7f4e8bba086d5 -880a35008a1ebabcf882750bfd957231c561913e13148ccbd3f35fe0d6d0ec6d5d89db450f00162805d14bb91f1e6759 -8b76a23a94d0738ef5e456ab9cf149cdc918254fbf672f14b3b38a05874d842570850dd8e24fc5f3e3ce7cef6c7d40ba -b4956aa8e986007c066a1702fba0a725efe57b8ad422f049008406a0dcbe33c3ba2dd516ed90e9c278fffd020aa062c2 -916f6316ce567aa203e87807753f92fac58a9ddaa5e4d6ebc585f717456914d5bdda9bd806424e47bf8deff70a418d0f -a45b1e0696955a463cbb6a15ff33e1f638c381d2f51ad4de68026d8dd2cc6178c1a99f93011b2b27d739920dfaa66022 -b42abdbad1b327352dafa9c9a6ca595e7c8c592ba9feed3ab53f37bac5e31e8e2e56a996a8ad9eecfadbff8e36afacad -ac4044190ec2080a270104cf16cb2cc5aaf02d251dadcc74e9326b674bf03d3ea74e062ac2edd8517c4d56345cd006d5 -942c1be47fadd306854ff046d84b46aca22bba52256541447adca324934c831186a98ceaac8ae31bb87ae9071b9f5b91 -84cb1baabcc63c62772c4ec78ced4a231ea19af7aaf63d0eeb10799754cbc391a62cc363441f8d2329debc13f11398c9 -b68f9607c522375a1926c92ee5d47e24b6a0744ee4266c13054794e50222b8537a199efa61a6653240b8bebf66b7b6cf -85d90bdd90e476ce808c4327c217d16f5199c8f5f80833b79361afc45f98ad839fc11adca77ca85be7d7921b6cc1753f -9244ff67da9d389cf15b6d7d063955957bccea82c403008e5d3316297f52fae384d9b8f64313ef036c51ac010f5e9eb9 -b5c874e3925774a47d28444722ee1720eecf1c273c09b9e084370d5d7c4bdc28412685fadcc564758b1749b77a1df4d7 -b3db13701cfa2170207c95d8622997fd2f1df206116f7e4884a6e4e42da59f854a46e2bcc1ee4fb8355d02aa8d6c20ee -a8a4eb1659ffd9b0ab7196e7479408b4f3d23a3e36ab1010b5e770772bc5abbd2d101bddbde57e2b88e1ca03c39b2781 -8aa5737eae2ca4aaef89584205710bf4ea84fe6b9649e9d0b3e56d064b218f77fd70b7f16da5e9c00585ce19fecf86a4 -900f6aeeb79f6dee31cde510ed6b6cf667782cd7003cc598ca33100a058d4f34ecce24a76048df8bebdef7d3395a71eb -a4f95cd10a76bba45d2db43a2d81d1b4f3b1aa68b32d0556d87e1b96630da5519d6665d36cb3c7689c26647115cfaea4 -a50e67ead8499efc0f7e25ee5e49fb8d171ec6201a57e45325b2a4a504256fdc7a85f259f806361973af9a716596b33e -b69947f2564f20c65c9f784e235861cafefd52c89f0430cb4ccf43822b21f060df39888bef003e2923ddd459bf08728e -99723542891b1ff1ef283cadbda31140f60e0796bd1e43783a41512b5845277b403f97aba57eb3eefbef408c76874e3f -85eff0dde2069e611c0ddb0c8fe3b5f65a3eb62a658b82b369f5f44638011d060d92fd900db126707b6d84ce4386386c -a53556a76b057f7580194d4c0846135807a434b4aa976f9fdbb9c4879a7f33a6f8248c09fca121331a7eb29ac53199ee -b29af20147a2ccdeaf8da1b5c7eb1a472d530dedddebf0e0c6c61abbfa933bcbc7cb8d93e3d0aa27a5bb1e0bc526e7dc -ad0907661bf039a34380e82f28fc89b4744561edcef73246eb8dc7cbd7b045bc804fedf448ef573bc336e963e43f1254 -a9df6297e309b6b524d338bd0125b285ec8af09e440fc42a4f82c66a86aaf061cd787f64878527f4c677e6eb13a53e06 -a6dde1b3c6a927c1e16edfd29e310d91a4e7f77ca513fea532364063d8c4f804f5f405d11f26dc87e707d4b3631c8113 -88ab16820cd37290d9e99b6bad1fa1a7704c0f828a35be31554c8ba0f1da2923bb17b5a56ef015b798b99da346665422 -99335b6267f3504d5878da64ec42c850d7bc848459bef19fffcd8562fd25981b779cfd1485a2c67edb7a72d3f40a6e49 -806e39953f2f3eb2471a1213021cc11f2d7ce7fd00f01bed239b2ccd16dae6846a5a05e9e7f3729523fd863983367aa0 -a8049858311cd62b13c8b104713d4c32d66284b9986d25f214d5a1aaa4dbb2e5f13ba25ce84c2d3aaff76456dc5a56c7 -84d8e255f875a8764d2b11354985c1939812c1eabecf364d2bf15e39f5df5e4c2041659da4ecfafb9ff7c4be861239a7 -99d2380183985e7a208e4872189023520d2201d16af92c0f08f677079842efd10999331c00289a19be6e6e86bcaa5ad5 -8ffe7b64f9567036f97866c6b3f7c9f9c49ddcce2841e8d40adb42e64cdd5c15e744b9d0b88d5a0b24662288d0b1c621 -a1851770194afd1225eb8b589bc0225b70530f8791e2df8a5fcb1e839f91a3ee0e7fa62757c3a2f04e635a55165c0543 -a233d3d62824a21ad0a71f2d0d5fff195ac7d65ce06f2565e50420b7b775d4d5ed9d3def6a2d6ca2ae8f8f9f11bc8166 -9644a96361e2506e84eb7d1daaf0ce471603e9d488b75b8cbc049d0877bef56621b8bc4da41831593b7552cc78edc158 -a8163b0bb4b7d860610cdefc4d7cea1862565961cbadf9dc80bb64b4b1a9cf29dbe0bcad510bc63e3b5f07331292aa85 -aed2d795c512c32fb9c020d0bb6a4ff16a5b0d3d43b2969754a7d619c353233d88bb334d477bd73d21a60cd278ca166f -97ae28b31690e5acdbf5e0467aec83f17f988161ea15b4baaf613c77d460d2b4b36d9dd3bed1ea9a54c6d72887fb7ab4 -85edb3d4772eaf9985c74913dc1544af6fce60a18555617e1535ae512a151451f4d86f6761330970e0d86d32f6f3a4d8 -b1165b1c44acae6bc3d8d8261ac999c09e1c82f85d5731990ef3fa932724e5825b9b98dea4038dc55ec6dd7f22e918d1 -a5b32863d96cede51b7d18c9f0a8c1f369eaca9f893f74439c0071c0b22fe46fa17ee11b57473a936a34e766d71abff8 -a853384b8a0b7af96c86aa407b4fcf2130533cd9ee4e79e11a8a4b4f4b81906bb1bef7bc31cb499687397766795bb8dd -807ac397d46e4d6c5db395d0c340edbd3227d380efb3b6a1139e151583295f3059df8004db0e88ffe786fba5b14d192a -96243517993cec738c82ce64401fc24eabd2ea80feb5ad8d919b127d2ad35f8214130a454dcf9b36722b0c7865b56256 -8d50f62b0e1d317ad8ca4eaf188cf5deb8328dd0fbab71b81861b52e97f669991156aa143d95e0b11db1ee0dd23932d5 -b6200a9975e18a2f39ef6acf2f01442fda3c7e636a8ed966599d7006ebe2585d252d93351be99a988efb02117b74f995 -ae8ec1ef4306aee61b4d24e34de54ae49b1672a51497595455049a6414a2e9c960c82c09b53fe16ff32e03db210c94f6 -8fce7f1a40ae0e3a65e06bb95945e8a391c6d78d8b9a3a468154062cb4bceadac4bfa0ea3f7a9cf769acb91dd03462d2 -a26072945b36df44820a7d14d1544d073700269443d8debd1c830bd07773635117cb2022448eb37b581acf7a5b68f4d2 -b0758113625d397d96632ff4f751f0e9eb9fc8d7fa95701a52bbf6fa9e2e620ef1dc327b8495dd9a27ec7964105ffaaf -8f1b6e9eca67bffa5fc249e8e27ed24b891a1ff4ae7b57c3a663b8601ae41a0562088f927aa75e6e0e3869f6f197e106 -91111edc465291a2cc7107d6dcff7b08d2765c7433082a28697ea67f72f9b9a7550074c693feece0825027bae9e393f3 -a962233c0012f45a4bcf4879e5feb32218ce879ef33db766bff01026510bb90b6a16a2236c65a216cac8708991b7d6e0 -99d958e36cf64171583455922dfb6efcf170a4dcd71ce2fe4229b0ca6275a3d0294281a67626edb12b4b7bd5a20fbf12 -a53dd036a1e86e3b613fd3dbe25d9907a9c308431b34c3d9be814a6be6dd1604deb2426e05a280488cca65ecc2ab89b1 -b16e964395c2810e66c822c6bfd413e3458aeeb73554365fc67a8bf1b6cd08467424c74cce06074aec1f5a5657992126 -b0dd4dea2fff95eea4f32127562cf174d8efb11f1f6cff9c4397b188171be7964f42f246f9e3fc0272e8c7e4f6df15c7 -b3bb0cca54a8ed932d339932d85e5889e79b632288af160095722646ff2f8e12ee91cbad6b5133052e628aacb17cfa0b -a18d1f4e7ddf82da940625a661f1f810c89baec7995ef9cc93fbf892c3cdbec467164c4013b73cb2c4ed9da8208cc8c4 -8c5fdf33a996c71f907f1bc90ab75b3c464f7a9eca8d24af8f1ff283f4814e6104228cfe4844ff69ff10b2d0b20c2364 -afc4282baa65c302195feb2649fbb53c1c0b3b7e7ae0c70a3342b11a9af290df9df4f20a7d7544014e3edf3cebffa820 -a45d4b0ab470f413728ab94acf048c47ad08d825cecc631c06edfa9aa0d6c33ff02b2fc47503f721b86a03eae028315c -8b8b6a7c45b222c8d3b6837c2689380e38c93df27ca5b5f02d6c3b299dac4193c7d4ee79b079bc36dafeed95967d68d8 -95ce009531fad05f74f71420ecf737df14e906f1fde4047046267e9774f784f77370cda0f76871ad953a2c47d55a90f9 -9574460ee565dc68882d87a344233273fb1b8d7aa008b4692bcdda50fd2ad0049dbff033d35ebec446ec58a22febabbb -8034ee95602c07c037e1141d3d5002ed6b692d206fcd19f45a0e9827c1c36bce8dff0169f10bc8627061f860f26b7064 -95fa6cc99477b603e70fbc536534f7d109b6eff2dda0ff3e8e5cd18a79dd54b05f56d653df6990c65d5eb970fd43d425 -98a0f4b8ceaa63caa0dc40346a86442cf1bf03d4686d5430adc522c46db7aff953daeb7ceb9048fd59490472e84f8c58 -b29003c373c5d41193d52c83ed64a5b91bfaa6de1493d3be85eb15cab6d7dfde74e01a53c44c331df89cb13eb4389a98 -963dc5cbf7f3166947cbad21a7f7e3ae58f74bbe4f1c425c80a821f85baab7f812af95c4e8f4e403246962ebcc00e1ed -9783b623e5f15d4ccf9d25a2bdd95309813d4fcb5057281a27ec547cdd755adc5ba890ec8eb3874fdcc04f66a51b384f -b7134853b9712aa36931d84122e80e959bbf6b4129f9b196347ee6fe2c4ed35d93b2e52d4c2b7ed8d97ca8565528d743 -b59f48ef6cb8cd4d561f8ceb0fca576ae34a950725a67e294253eb230e252a9a0dc0bb7767e6aa73dffd0b23c5435bbf -b8258e1a77859c26ba35cdf94c0b9d9dd55a9f5389783f22a3b62f8a50f536ddbe1a6759973f74e7b454808cfd08c6c7 -b574e3a13dfc7645a31f1dba975ef2a34108984a7a889c86fea2b9374d74bdbba0b5e595e5af97d22413b117c1d2cac4 -b7d01b73ab2d37c6c4f623b891cbd9f49cf1d95b82dcfeeec1c076da87cf86c258c488417363acd2d7a9154b7dd278f1 -ae6bafc9cc1c87556c78ce39d58e9d8e8bb627716970f914793de49842d6b9b50401471c9f70bd0559298ab693cbf73a -959f555d27b78bf54cb28f5294a172cc3104abcf0dac8a01a1174e09d97d789e49c2d16c1edf77c0457ae196454a8d41 -82e43b2090c11c7cea141b2e95a1a536a4f5c2420f953cb1fd91431e603450e6b3c88fbef6b0bd027d960cb892c945d3 -b406417316a21eba0da34608f4d050c74a189df953456bb892f94828ed763a67d1f71e7ffc51e8080d8709043e35d29d -8b02983e18417649e0e07dcc44c686d399bd67a289c934cee7e1f92032fd06163a1fc825b5dd4288c796416fe399d3df -b64a101687eae9d98b609403ce53115e471e6ddcb6f4ba47c237609b6a9f963a6f90114ee619e75e2b128058036f4ac2 -839ab87851c8edf4f2023a8ffe9d9087f18fc87169469dffb575a78d1184585255ac0ce5d55e22293bdf84f35fd642c2 -a42aadf6ed8a5fb2492489b0b3668cf4bf8454f012c960d1ee9a4067bac36e4f8c51274b653f9f032aa05ec7b4384d4f -851470154b8d5c8589238d0081f2eaefdfc0d0bb915d12680fd9a2304a3992c1d350dd9821e6272949d3324f3252d8e1 -8748b4069365c2235440f2401136647520d85d4b9b4a901b714b40a363a8888f0333fa44fb7e8b500a409653a9a7e089 -91c8ac7b0f46a8ae17cba495a9bb38d3b41b5b5a5b941f7a7381a7f9ad1370a20e795057b24767afa6fc0216855ea720 -ae0c08b6578d11a4622321e8e78c353613988f035e1e6a13389d53a8204ab8fa2b234daefc7a125481d06f9a775fb0d3 -988f5084ba69961ba916b1e388b0cb98fca8fe8deac78bd7a67427aebe1f996f8c79b4169da671e3f4e7c42e5c8315ea -a524e54d1bac182dc82dee82078d1f3a4619ca19c66b4d2ef5a225a422d1a6a233c304b22f408353d29e05367cbcb233 -943b4d79f90c04841b2746f4b2d1cb7aec594ed6f0299a821c3c025d5d9084d481e137c6d95c07a97e0a5273dca22f4a -97d59b2b84feae099e71d2d00cde3865edb35ca0c97ce037e337d763453c33100e06819a214bad69a0b41627234711d9 -96082b0ad8d75dc9cce0fcafff082a235106d52850c1ffddd5629f07736c0422cb266f4b2189ea2da9403ab6014eeebf -8a08352718f0081ac3308da0070c731ad7d5a8c72b05541cf3b20a81729ffac171cbf82c920f48f02726eb3121b0adec -93d061ceff8c77468d2f787351e3692ee2f52042190d7f860bd542ef5a7e37bf8dd925036d7ccfb673fb734eda6601a0 -a72fa4fb6f77f03774ec42b8c3e53b1cb22a86446d28dc94dce0f117281b7f6cf249902e7a4b41a9d16134bdb4d4f2d1 -b472f53ad487af04f7fe60eabbcf246f84d159ad6b120be7c9a85698d331f705b822fd82a460a8e93f829275ce2caa21 -8028156bf31ed106bb2f5b0ee2efbdf59415d77b22b91c292249966376fe95250139a3bdd28ab32579e8ebfa36a25b8a -a1f43d0cb9f221f964b7d8a00dc81e787c9db8d9a85da462cdbb3de88e704d7650aea4286d7ca1e33b25a7606e56f822 -81c8cbd8dbc0ce5cd333849fc85e5cb9403efbde519e38755cf035f992c969d6219e5d212955bbdb7e2ef75a30b072e5 -a709e193e52b481fae8b32051523feb2b7ce5fde57553be93b74717714072e992f529cc93e3087a5b683f91c47ab776c -8fb3de899dd7a003bb35a3d3ec2ee12ee1674d362e95c7ce8d8730e23e5ed5c79e909b4224930baae8adbf2b46fd4dec -8056b7b2e2b10fd5d48f9a8a1cbf844e6654da3e724cb17251555d5baa0a4974cfded12319c9d18fdbdcb7894954bc4e -a35f7b486956357d0dbc4b2a4104cfe4e4118089095018527f93b282646e3eeb85b07cf87acefcaf325a1a6b30e66801 -a0708e75513619a454971c48f111740f710c870c47c780847f16959637b097d6eccb9e85322b10db0f03ab3720995323 -8ab9f45b870cddba63d629d987573d106a2e2fc3c7653d48bf89645c87b4c57607c79bf648d7ab6a6e8cd29732aa7625 -8b61b28758d246c74b5fed9608d92f03f664db2d421c4ac3ae9b6021930a879a59ec8e61d18b275987f5d7bc3e80f4b7 -a2b3ccc0386dec926c907a0d20416dc2145b5d2776d1155de7411da25e81aac915817f6eee4bd26af4c9cb8ac06dece0 -a9d45649fc25edb6b192b37c669f48db1ba950b72ff49d9d1ddc83b3c6d7668cd10f2d9d41e1aa01f35176e0e83e2d21 -b2df2c7f21bc636572359fac7c491865863ad10d09cb7f4a199bcfa246e1dced483cf2d9439aed421605de694ef21216 -b5eecc458082e18d949dfb27caf0482f0e3ca662f2d42f9230411a0e57bcb48f11501ce8b8f0015a0318eecc956fc7bf -813eb152034300168446cedb27c55a1cc2c85c6e7c3ca7e104bf7590f1fbd667b7f59de3a1ed89643493bf6b58ee8de4 -95b3f830e3dcbec1062d57a3d760367c9129e2fbeb619d2e24d5ca0c31b7d2750a835822b8953076c8661cfdfbfac522 -92501a1055bb5e2bf3b506a7d20919d555d6397e12a01a9830c32b15f47b66bc233fd4cd3033fff2f4de8e5d527e793d -85d1de62e2389b0a54bb66364f289bc7de6249fa0bf3acba56f6842f9bcaa79ae3b25a116d48f56aba3bc829caa916c9 -92acec3fe9446c0c2fee3c1602bf3e447a5c2e2dde6aa81d0c641c1d9718464952cca7de4087de00a1d05c38ffaf320c -8906ac02aa464a563c05b615b8fd1c3383129bf6c589b707aff1ef28f8981ea55732c9c76c7c7909aeefe2d34ed859f7 -980d61aa44dd326c7f63cd06fa3d1933de4bed43210f4afcd139b75a09c3807491eec558e614a7dbcc7370c63677f94f -81371c929204b3dd8e6aa1b6e83370f944c8aaf4527bb297ea4c39a6c27b09a121d10dbcddaa3e1c257888f9b508c275 -b6ec123d9a3c3f1a998561541b396ae1ce6d1258dbf2f2d2a1a102927088d4d3a3deea7d4e07ab51ed8a474f15a92a0b -98368213a92717383708cd8b3f4e829f3a6c7f325d5767b477d9d43b3d888757074b6ab34edb40b607faa7529ef1aecf -875a5535c2f8a157597e285d9f103ad59a5ce00fe0b5d6b2851ec308002188e11b271c10427218695f94bd76e9a01cd0 -831c6701291554b78b6e7a73982706a21660c8f3b65e6c08bb731d4af287cd5271b71ebec38768dfc5f28b1a38e7ea86 -ab2a6d4e3d28bfe0d28a825f9bed7e7a26419540601c2a51dd746de5ecba9bc06f4879da2b1ddf79a4eab0710b397f4f -85232f5ce0db77e4ff13b0a3a808bbcee2692b58b2641c2b8c401f5ac2d23f4a22eb694e61d15337e5706b98fa35b147 -b158b2100ede7d122b16d18f635b91354517635b64eefd38429451eed5c6b8a1308c922e20bc5db6d8bd377356873cad -853460bf4206c194cb7d1b749c2b2a44655e192ccbfb1ced7e38a8409b90e973a90014a502f079efd044e20d2eccf7ad -95441948c94ed3c98478d7bc11050fa4e68bd6d0320f306407f82459db5238bb05e4a7bd00faf05f032f9edfd77a5d70 -87d563ee65585d9626785fbf019dbce9f43442abd2259c5cc6012fadc350086655bbb9efe99835e1f2f90c8334e62c2e -83473c4a7ebce1e84bf9c2acc567193ec21f353a6c658b6b3c1f2fa108eb1aa80b8e6b19ce898f1e7eb7255114ce7fc7 -b060a9f583c5f5ed3dfc0ddc1f0fb7c2f62ce70c2c0c6b3c5c1737d277d1dd0d6c3ebb0c7468f9890098454ebbb430b4 -b695327066765a477abf8e47d56e7a70d602b9f96055d01cbfe848985b263f845bcf9af787b288c4a424006afeccaaf7 -9576c4f921ac9090a1b6f8050e1db5eebddd135f2611f053ccb7fb6db1525a62ca19a68679a68d8b2094c0ae5dd9654f -a7bd1bebd1aa82034dafa9b850a8713b01fae9d886fa33017e427de4ab4f9ad8c77f96d7a8ccf31d76ccdf08cb2b19a2 -a90f7a48aa60ba7dc9131d551e5576ebd092ef8c60b33a44fc68ca7753f6bac2837ea44d154406d0edf36d38b467616f -889abad81855ad90ca13156e6110da0edd8917f69fe57941225f4d37f0bc2c0e8629f4858e5eca2404467b2d0770a196 -8856e8e2d5ab5a549f1b9988dcb45a63703d4e60d2ba8c4bfa63529ded407bb9c35a741fad10828c02e3b98fe45f3fc5 -a12440e3636f03c573cf59411ea99fc95645763a0af65d5668047d1d235c2e65d850fb8e7012e35aad63410724b2d62b -8a2c5bb29f2e18ee9ba155473d2702721a7780688f917011bc11430b2ddcbd96acc519f568ee4c4868e7af64f083c28a -b22053c983f20054d0badcd0910388f325e0046c5a123aae150db230a9a669d8cb02249c9b45cb1e95fae6b8256d951f -a4d0e64e3f1e4123c2ed9c5aab5b0eb6865e3f7bd53c80b29cefcab388e2c2c3cc58369342b69318fa2255e609415fc8 -82788f75d9324aae66460f716daaed61bc5d5e794f104b48ec2dee0b0a25a7a899f560ef41d7466dffeac9136c4249c4 -926d5c134defc9c7fecf9323d49fcbd7335961b57a97c88d1e782baef198838e2923b6f1b43d6b78609596bfbb65f6dc -a6210531f3480f2392fb733553dd544fe4e7f0064ae3f7f18210d7d221f9e19410e95a17ce89d17471ffc353f4d846a3 -a08bfc7ee45a90d82a2f73367c40d9050a78b35dadc6180c07274282d7300ca6c379948601d0acc435b78a16dbce21a4 -a85ad9b69951110bfd288a29ecc92ddb804e17416628c847d4c21e2eff6c5ea6b7e15e57ce0250ff9047b45ab3932458 -9863feb37d7f0929c59d8bc78a129c573161ec97e2130b836d3c72a3c3e6918620fe2a6feeb74f4a6465ab314b6b7244 -a9e37cd529cb2e21917acdb167bc2ab126cfbe991a49a148265e3e6b9a61bfe9da8b0e69d8bc34cc4c6036f422a2ee7d -941ba451146ae3c0388e4a398f44aafc3bc462a705e29d4f5c615989f76f559527fb85537de359fb36a4a167fc13bfa8 -89db35c2b6bc54495dc41c48bfbc940044ec0f39ec927c625842b042f74074e4999c8907862adb83fe5e93f27ba20f1f -820ff3255a5ca539217ea5ec3b1999493af1df68656f2d7c6b46bee636517674c1347af15be5440917c86855f9fc2444 -b7364e829cbb6254dd06d331692c2f99d22e68105aaa443bd3f492eace596d93539aaf83c1cf91ce40f541397522fec2 -b58bcb261b108989e3c999c4db3c5a253cc30c1441c0fab9ec181f3f26581406c09302ce2cbdc1d843786a9403023952 -af4560dbcd82314662f6ce2b0834e38cf15e6d7336b3535aeda976c664fb0a86153bedf3214e406e2e9477bd83ed60e2 -b7ba7a37f57a6079c3592b6aa6bbb9dd0bd7d1089566d744265a0d0c4bf815962d943740db23f225c53062f9b3caa6ba -a34b4c068b4974535a30a5915e187856a5bfbd8d6497ee41c16645145ffc08c27afe3a2bb11d2b65d294bf5ce5e47470 -8b00f16aca70cee2cceccc6f38e7c6e557d31b3ec44ce045eaa25fdee9946477d8157f6d9409e868ee151dc0499e2fc9 -aad25d2f68199dcd5ca056377db1254613467a760635aab5ff5f97a9c713920160a4c1440336e6fc027abe50c443253c -aca7ea8dc24d2289ab53b6333244d33a5f7b5a4dee44e71efae2952b00e84a438fbe8f66b21b89f5dd19b6cb9b3f9471 -b1defb61ac29018ec8aa4a78b89f5671c2cf438bf87e95ad7540fc431e1a8d302aaad3fd65c4afb83f5367720bc3c168 -aa7197ddd86bd09faffa64095dd4a0b98aac2db25e4b48806a0493f4688a47cbb92a21abe9cf2b92561973aaf036d4f8 -b47ef0359fcbaa3fef1a81a36ff9ef60ebc2d33fc387c365910be74b1dd2ac03014448096b97f6aaae16ab1588b1d3d0 -a77f86fc37c376fda10da5bcb49a59ba57f432d4181dcf5733514f9a3d82c873f5ff0f85eedec4917b11d83e0bbb0334 -b6c2832496892712c5d00bd6e2249c9b2709e5600b9bec71592503d615c291ae9756b7f9e0490995cbc49ff55757ada9 -a220b78550b4c516528a5a3c05c18072310199b8dc68b6b3459499551ee58355d29de01f8410747c775484bd1907f08a -9646d151b92c5685f9ba1dcb213b3deed40858630f42d5c4c94fe0ccc897eace1c5b801fdadf8dca06dcab70a5164d36 -a430ddca81b2cd8b521f49cf62621eef15daec1a0dfbfabf54718bcb9f1c3e6675a227ed60bc0dd113270e081c6d017c -96caf62e3f0741c40644d2287e23459f61d0c6f44ce5704b102aac845cf9fe7738a6ae56eec270beed724b1510694494 -b91d4cee532a02a66f6fa864fb5235620000051b7d17d184b3b5251272130c27a18abe51313fd83897333589b20eae2f -8bce1637e1fd6a1855aa28f44c20f07c92ac818883d98757e33c0b66190e3d9d17fab33afb538001641a7c14cd834b86 -b26d24a08ad0fb3cf84565d4c4e30b24c7525f310cb6bc714da0daf2c0ec14184be1c7089584b8619eadbc9eb64584d7 -af74b366992c2773378bbb8a5dfa10241fee606dc94ac848a5853e62505d4e1b5e0de4fc299820b58ac5a8df3743194e -98f73920a0866a505c53ca576e150590ab7c8cea8d6fad6fb6db6eba3a60c01f09b33c91bc221c972f7acd1d45ce49f9 -8ecee9d71cb5faaec3112dbd0ce6f0824b85a250951e0ffac49a3324a46530e3d7c3fe6fb67336a70597f8b7bb6637ae -b3cbfad7d09984d6652540ca77c722563551384b8853e73a79b2fa1c8024da9710af1cdd165aa6d0488d41b0e191bbfd -b03a031e3ba158c8fe32a0d5d0bdf4c53a97fef4c666ba79f5ba99cf26515d1d84c29e70145b6033f4b68f3c8a271d89 -9794219b32ec582bee819e89174b8e7a3f8a064ffcddf42499c947ad69fcd3d18fb5d1e8e27fed18ad64bae9a7d95611 -b286e55596e81fca030a90c9cc6e85bef89f192f99a52f06f35f88584dc68647a351612f9cb413ad670746f21724296e -a46ac0c550585a5307da57c205a1c23e0a74483ccef10f9420c144ffcbb3b77109d48f9a5536617990e47db2e987ad45 -842e5ad46fd831f1864527773a4f841705a8be22054ea0bb3bf7b9f130120b1bb530e793841c28922803d781638ad6d3 -ab70deffb672912026f02f8b3be75e5c3128f30e9ece35347376d6fb4bae3c83c4efe4c6544da43e9f1a93760e993136 -a8f3b4321c5ad29c7cfb7e27557ff073bfaac3a89b1c531337be0d824b55a2fe391a8f8bee6853f95c10e7e80662daac -8f1c88624135c1b6b34601e7ef4eafb4c1d825224b4ff9ac18ed04062585621068d872a7964fb79e016f78a2e0aeb61a -82610794b2d351ecf90a6a6da26fbd77facf87ada4b88b4b2c3065bf5f42684893e72eadaec9d8c36d0c8f8e86909c0f -b92f55a7d4dbc9e864a3fc5e6fa41c875a5e3321f29f0aed80d974e550e352e7c29623e9e51db17cbd111c42677e6e3b -b274aac6b7c93fd65e53a6fa4fc875bb48ab675768e1504d74d5ee7c7402c389419328d596bf7658b91db7adc1cc596a -8fc76ac0bbecdc5a4ab7e78bb2a2be1c4c713db68b70b5550f54c0062c9c398acc33c80a3c7c3478995449fc9601e8f8 -899f4babe86f459382e0fb1be838906dd6cfdea77508b6981cd0a30cfdb74b893e021e7b2ab6bd3f025c994a33b71c85 -a572ff063454eb1efbd9eeb2234c5aa593c8d2eade24b17d192b3bac2592595e770c6cf5d3f5140e43065283d712ad13 -92727709f08d27e432a529a9cb80462172fb8509e1c7991df89693f838e82a1638a7b7412c5d04b11ca215766a78c775 -8bcfd95ca0d9b6a57b18447084c243c01618da9b3e6e60567b9003a1ea96bc8af4064aeb2eb577cf94a770a9fc05ce37 -91f9d0a906162b40f74ae3d356aa9520881b4b496713bc312cd90114d0dede0c4239ac72382172b44da61a101e12d932 -b756b1ae8fd50508e2c552689ef6a7bf2d0125260646cfb58ba4ce18d67a6871585a1054d9736922e86afeb548cc7cb0 -b9eb5e3f66a9a1eaf058b160b2c24b04536a2f6af8037df749bc1ffdd7b1e914217b7106dd9c0603e1f0b1c26369a256 -8b9bc03d8774335ff7024602342083bc8417551b924a94d4ce1e70c157326f6f2c1be9028b522cce183fb53f2e1226fc -8200cfd1b98eefa4d98d5f89d4ccefc728b0359b345f5e766e84544acf42c98af5ff65c7e07c9b4a2a6cb79434772bfb -b250dec37883d06072f1cdd26a1d7082ce85a43338730db37ab5718497b3610fcc917c9de1a1e2141ad5434faf4de50a -96e368defd6860c6854ff2c49a52b9cb0915099ffb3a6725dcbd25d1d9bda4935d59c72f1fbec7f245748f0f69552e40 -aa69207aae055d94028af14037d1ebab86533dd3bddd008977589d9a70e47287b8736cf1f3f5b5cd3757b1e4cb6bbaf2 -97d674162b1a67af09add60b9fff98661b94284a3b67edcd4c2535ef9234298c91d5e2466d024f609fb40df8b77aece2 -b966f875ab4f59238163f3399f72866666c6245eef6a164f31fe874342d6388704038531bcf0aaa3f374830778de5a5e -a927194b4e3bb0185d9267a731d8c5290cf9b4df7cca16e9894b2a1f6cfec8d5a2a8bb3b2baeca2382939ddd1dd1ad0a -84b04774e17d3383ed3851ca26aad77b65f8bfe030469a2ea388502a051175729bb2e6c9b8f245b20c1b7ee2bd247095 -8066379250a64a858e9ebc07e2ba1daf8ab3676f17207721b5e65a2e56ae8dc04403877512494e8ad36398decf31ebe7 -b65c929395693915d9079f0f92c6cd5ee6707167d9c1cf3926eed76dd2c979c882e1bc5f0a19143cf26a2feecd0c5b8c -a4dfe26787c5d40e9a92ea77d72b1f5978f475d33bdd4a8e2639af3f4f2078d5e3205eea3d4ebf1cb8fd7703b75f4f5d -ac4d46ae8c344d4089c5ea2cad3afc52bda7a8744f4546eae53cd60a18eea7fee758f14fbae4a24d97ee432eb355cc0b -b21f051f823cc63124122b5bc209ff7e9e2d5999fbee70afab37a9e2a7b0ee96c9046c78a0996da2d5874bf16944d7c9 -a70ac024842516ba2550608f099ffec0a862fa10444a0f49fdfdc0c2e81cbbeca242b729abba25babeae69d3095fc449 -97912c70d890ab3bbbdeac9798fc53f2ffd163cd7ad287ec894cc503dadd1c077b434d33510b6832c4b7198ecc22f2cd -89cf9874b6b0c4b56981ee63917898164dada5bc7ce6dd6d156c72a05326cd9a8e3ea3e224c3ce11f386b18cf6d49892 -9339ded5500df3eec9b0f8894248223865b44c14f093a41f6deec5ab4cac8585857dc874526278104da70a64cbdc3aa0 -8fd85bb2b7bb51c5257b63352e922ccb1ffc45095a59610027ffdfa00b7c19eddb0bb4b2934933fabf7e6240beb50188 -8cacc7464294d3067703678951aca3d0e569bf1af932609f05ec0b858518137a960f68824574d99640b48a95c748b317 -b6ff6a7d4fa3b733a053a64105d4fadc1751a9743489b15de1354d0747daa9cd2f748c1373a9716ac6db5144f668bf2c -a2a34fd06e4bed3af82a6605f63102908ab3215366cdcae4225fdb2eecb510571c702f450e5613f7daba92754933f25d -924b98a1037b287dbae6bab1e27afc54f72126d185fde40c4ccde3deeb9c3b44ef97a7f3ed7d9a134be6694ec6df15c9 -92f8616aabfa0099ceef2927796c74874a1b8a1228ffded92264ab5194b58e1460271ea14ac1de54e86313ee425e0cd5 -8f7a82718a03d18fc0da76887664926d5b3a68e6700ff2ba3ec46cf6953da75f7370b01e015d02a6c11f48cf7b013cb6 -80d5f80a5df53cec9cdc1b6fed5b3ca8702e5f77163b9ddbad567ced09a4627eaa66d10d2e9e874d0b8dd1aff4cbb00b -80e42816628f28e3d2f2331428c49bcd29fa7eace0dc5b991133a3780ea8ca78c0804e8e0f977e933d159741b467badd -870e25b9ce7d14503920e75228278005fc90c1aeed4fbf6c444d4d79e3203524cf3948408cbd0a3f5e535ac676554a30 -a9fc7c0aa72ba5bf6cc5368ea1c7f6ced95c42820b0168cd9f3b7d4b7b35c8e2c2c75ca6b33707a4b4466989772f34ea -92452ee144ba6e6c4370d5f943097a87bc4da72a84335f130628307318be9915024aac2bb296fc16365e9dc96142aa02 -b1c9cb81ec027f63a1ad9fceacec6b71c4c36413ec01376f71064f1a7e0ce222c072821eba37dd25dea22e7b9a4dccfa -95ef57c181a0cc9f88b3162a72ca45dacdd9b149d93e5daabea378530e41b01dc70875300e7636a3c6b201ebe0ee47ab -a7f18a76871212138fb4e5779270704bfb49668a540c13e2044e46a500da6fb8924e50e7af450e67c163ec44c03942d6 -ad77e31f643424c4c57b04bc4f3dacce61e6a25d43590a079d02ce18b46ec6fcb181eb4f494fa8325fb3270f7d937b1d -aa0ededefd32cec31f102a90c4f596d04f18d1a46272fcf12b6a2e76cfdcd7a7774099727fd3e9d02c9d8a9587bbcb5b -a10b5a2dbc85f99674e59a44ed9c364fbb17483bc4aea21f728fdff7e6716a8fcf25e3ca19c74d0b2b5df791adb2e7d4 -b7d151b4e05b8506cef8d32b3d5df1c7ed9f44072a4b74d42645c18848a1e1be3909a9dafe13b49b53e1a232adb808f6 -916585c147acccc1f5d0295d02dffa39f1a2b8261c6b717f650d7b71622d381b39ea581b6dc559397b49184666fb2357 -b294d3d63400a2e2ae8ccea317f75ca3c3edfd88b7c1b58f0ed5e78c936bc854f032deda7dc7b288b580dffc58001e43 -8791a99221dc424ce26e43dac85d0f44c6db77f362dc11d79f1a937fb8e251dba45f0eea42261b8d3459c11c74e9d06f -862c1ae7c68d1a03ebcbcace881c8df9a1c89e29e25889807ac7761030a7effd62b98a0be7bec0ce6be08434f777c2c8 -852793311ab561a999277a9a48af659c2f9cbb6f45edd7e0dbae5e5c9d15ec4573df3790cabef594ff204238bef099f8 -8332048a49b95efbcd4faba014ed92532fe8be3f20bc352812a068d84dd957c2faff7aeacd8b81d679b38a964ad9deb0 -b2fa5fe77f60a24ffc569d2e679c81b1e882227d3bd4085fe4cebcc69036e3a002a903a99e1dd99d8875fdf3deea02cd -8b246a00ea29351641c4fe18874792d206da6db8fc0e9cb17c8746cc857fdd58bcb0e026ed8f9af3eef7cf06790f27d0 -a1d3b979a2ab624071d0289c06f2ebda76c4879983225bf45acac5ddb2f64b4db7a5d07bf21db930d4203dee28249746 -b5852be715dc25bed15fef741b678561a4c045a4632bdf13aa4b24b5ee0f8c605aabd373c99640dbd4e055da83cf49c8 -841b82b23de8d85cb82de2bca010395be1e8ca1aade965532cf8199c200565576f2750948a058445e95a3fa86067ea6a -b6045d1afe64011b941bed44965b2c3155581698d96891d3fc8dfeca944ad73158b7796777ffe3e0af634b833b632734 -add836141d5be809df16be64a0b1c88fcb3b837e1d6ccea72fcb7c6b293e88648c17aad2a6cc92426aac37535ff55761 -b7ee1f1317397ca3bad0f53f6e043dfa47da6f2e2ad2cef300ec404d7a0f597bdc8384fbb689022c794bc9eca936ba00 -8333d0fa12ff7beaeb839c039d9ecad46478bdc13904b70f012b86df093226c1759dfdbfc896b337ce462c5254befb4d -a92f21b5bb672f3b1581a6ee379b5130f5b2b709f167e48e61a50afdcad96c02caaeec50ae4efb3ae5519fcdfce97100 -8ff6c98810047b5c0fd90dd1440ee7b47aad0bcd758895beb97e45d11fb1ccfe89d9f0e5cd78fa9cbad6ffbc30a4b480 -b4550f7fd8794a5b5b1503ef30d389e0c5155a5e6ebc848f6f80031c00c21eb695b224f61e2d2f2953d8faf18ad27b1c -9776959e34c10934263120a520e36b3a14cd57a395a1789c74d180ff29c68fa73f72bfd8434553e6ec07c9e4026278be -894da0a3369b46fa4a150b166161d567ca7f2269a003636af4d23f95140dc9a3ddae4adc2adb50c8ee49120745c06e5a -a05f644e53fdcd666d58ce85df5f88b639aa199d608d544d9493530b73e2fd74d3099d49d849e629b2db1796a632d1b6 -aa448c499f334eafef76999294fbd5f2f0d9d2a234d083aa8c9ab38b45556e0a9184633933b653f5001bf19a2946e0d1 -ae924c24b44d01d5240eee021f7023a3416351cf86a0290b2368dc2e4b2abffa71bc566f17c7c103cdb0622954d13ba8 -a001b9350a80999ba41fb01848df2577306a86620ee17f08361e84eca12dec5039b6e5a764ca7a665fd0dc143f71abfb -b0251416b702cd48b81941fe2e5442c70e493c63c7ba8d6dce588cd4e025284fe516d22c950d33e4dd76b6cd597fa865 -9651633ff255cdd1b34eff1a435f4f3951df5a048a3dca3e5815cd84a97c4ba89f6e62602a9f9601dc350cf224a64149 -ae20ec91bd6fb11558c41179d3d14a8ab7380ae1b5e89a94949e64e7127c1067099d996fdcc5624f5be84374fbd1d0d2 -8fc0cd5738bae054cd1d68228c4c8f1fdaaa6d9b5328c91f7869188e24d5b42f8f9d28f0617cd318c8003c0ace5aec9c -aa85c436e1b4d38f2d9fe22aa7a2f4d62a2a9bd3958b619e1ad5497e48f03a6af4fa4340f964883793a7cce7ecccff0a -afca8b03c92697bb9b8f24edf223d4f85768d0ff8e143f1b17dc7126454d96d69f1a2d7b4efd08bb2c3242d80a965a08 -80de51fa361f4b6ec06710c60cbea24493a539154aae8054af9ccf1c7a9b5642f1365de68aa66ae06945bd9ff4bcf63e -a66bbd638651241f9d754bf18fcee086b263510c43d4547a5b517f46f189504d8bf6e2340c0c86360942d894d6e55dfc -b3ee246530cacad87ea2f65b25612e94a4a77aac99f3ddefc09341948cd8420b69a0e41a803cdbd53d5240adc73f73e6 -863a9fa6a509f5e3669453697373566bcc50eb3af892eacd305c411b586cd7317c51617a12337b9c8767d7ce2a91141b -9826606e2f178e727bb7d32bf70498388dab3801e1269998563e9317a891fc2145e549f4440b7e3a73b377bb6552d68a -839ac711c3d448d65d2dbccfa74731a8a2ff9f430d884da272c6d301e88284ae4ec19efea46830323eaed13c4a122c33 -b7030775214926dd45d9cfeedba0e575bd117cf485ce4bea47207a9c1411e1dcba34d891600e62235d2c48f5e57183ff -a930e1d2c0ebb8ab28564f11767b7454c48c1d96edb46690b04398594f15dc44d7eea9fb0b2230e04b949e9cb7e4eaa6 -8c26df3156b39d648f5446b5316e13916d3b1c3743bc0fc6a98f2e8a3869b3ebe7b327a1b29c588bc2060b5d506a4cbc -8286f511e5606e6a4d6eeb2ad665c319f356e4d6a8b81e13bcaa6d80a610cfafa3cfde465706ac1e7fc3328c7440ec10 -b4b6ab6c87257c54c58bbabca500d0054c9bbad083825d112fb6c66d5d080d66557fefc5587be461605fc0d5a947b672 -9894e3af61113c4a1746b2fc18a20df938ee99c64de1da27e67daa3367120ce3ded8a338f05f4ef6600fbfb7df18d804 -801ba201c919654e86c11b1e141a3f76e036f484c99fccb6e9db1b14512395659fcbc799ce526c6686eafa383d8e56c8 -985638e96a7abe027700c1cf30921d55e565151158a8f7a25beeb2b8b2745c25b56c1937d45740950d63925ffb49b8cd -b1f2ee0a1740f58bc172c7753988da7c6028842fbf88ff82dc3408adb436993f7fee81a61ef1cc4a6f36f495906b1a07 -89c493ea1d23050bbdda0249137af9d7963e956888a6bc79d022e97610b246e0dee9cc9f058293e4c19d124224f39f2c -8051634d6fb4ed4e9112f02a2ca6e99ea769e1bdc1863bb49e8ea494da17310a5c63e0391b740f065d90710f18669456 -a10225cd0bba00d871ec068d11d82989ba264990c8cdbeb9f856789276b6418c5661ee7d4fd474e0e4c83477ca581237 -a6f99ae74558e426b55972d4774ec0681c98f06e5b08e0caf1806a2bf2c80c04fe4b2090839be5d0f33dcd7b7018f568 -98453e6f44fe89159bec08fd324fa5e1874fb46ee4c8ac09e661c5ab3a86549aeba2d9b955ae3e69f2c104c0eecf8b3c -943efa4ef74ca097a11e5dc8461bdd3ce94d9cd9c67b1e6854cb14b7cf90735c9226e5ea09d8d12467d740d1db4cc99f -91bf02338414ef8f7f1c14ce772f54b9013a029dadd6b05a2f9e0cf25002dfafd9a55fcf8db1922af8ebd8a2a7bc939a -ad13c0f5ba9f3dddd240d8574312205163609cdd518d6c5a2bf3af30dcc206e56f009e8ed1a491772f1f07b64b3dd268 -af88041418c54660212c90533b0717833945a373bd7158cf3d3fb43a8f4931418fb653f3e7533a837c0e4766fc3cf269 -852ef0561f23218a572031fcc76e29d5e75e2b82a2ab1ffe187489205c804a9528686dc818b5be4d5827e51eaf9298d5 -a1bbc950205a77e6eaaabf65dd95dac6a1166ee9c40555fb7a8ed344e0c62e84defa757cb4f3abf96798712e0830a3e4 -81fcaf652daa6e1c7a162b78a2554cbdd50bb437723bd1977eb875c44d5af95ba977d68eedf3bdfb1b454cfbfdb42527 -9941bf9fcd4834e404f6deba52aecf2028a490e6a13127b3ff1705fc5e0a56dc892998d4f0935110d35dc21ff94716e0 -a48dda2c268893faac3d95c0d8f2a15d090b4f57fa0c61dee774832827879e861d79f001dbdf29790f44778c34977627 -8e18505665d6b51db89243e441d3c8081ccbf771a88ccc7d10b024e3a65fbcf0edfae5145c1dacf662be1d9688b687db -b615afcefd8db686bc2672c30a43de32948c1fde99e84d64e2b3f49f0a94120334f41e0019459a54d985164bf3a2df7e -b160c3ab84387b85735bae44f2a006d5a7f108c2b1f864eb7ea178996d6de871699f576423727f68887a35fe7191d797 -8b0f9c9296b4f18e2225bdde1c75b7805d2610dc9bd37a2ee0ec6b367c598911393edadb789b708ab76a237caef63497 -b3e5c20439899ac3670186e79b970b3371aa451d147897e05112243ae2a568a386e18c0625c71487eca89709e704ac1b -82285c1da01a03cbc13749afa50f9409ed6f4f26f7e05f4139dea2d741a8090d03584527f1ad7aaeb58b8f8a4c9e0c24 -a3a5fbd076976de6d31214faae3511c0b3222a55275b229d391f86e463052ab98a511999db879e0fa6f5b4bf70a4a871 -85ede78192003964c9df9f0c2b046b847f844fd946d6a2414e8fb8458402065f4a143829b4a0259cca30052e94148e52 -82325eb2b4c6e7a00315cd26b1ff49f53713eb34a93d2129836009b8615ec67bd880ea7d5f164cc8a0f264597c9236bf -8e4936b0e350e933d53daa3020e3b4f952dcdb42ad674b3781a5438a3899e23ab1853974b9c8e511d456e2f6237a8f8c -80180c3cfe604aac8c30d1cea7e85806f2c75eb52a26a8202459691b511436911232ea0a8d1727d7dc39d304a766afce -858cad2b56bf8e557530a3dab2f3bf888498489305989093fc7ef36cea8ccf7ee83b3974f618506432223fd88f3e01da -b2d3fa2bc045d304f0faa0c58c6a78fa6cf41ba4512bd1eb3d5742ffb3537cd0bf345a9ac2ccaa8dd93b6b85ce032d2b -ae50f413f3b9ea1b653dcfc8518126dc9743399358f560256cee4944207ab03e149ff521b9a3ff97a67edf438ecead0c -a83dbd2fa363200b7396923581f29b03d4e0936819e298aab1c5d3ab24039974a326fda55dede64159d91f1d07f95252 -91f1e053e302ad340551b0b2a82b9d1f317eaa3b9d936c390cd77ce93fe5919c737583d3354e5fea6641b0dbd3bf8148 -b07064fdac4da2b819830b4d1d8845cf45f58025757a3d433146a81235941d8b4cc03707e2f2852980b49c987926680e -a7234cb6b9219b2e44cf44a0ac99e3439a0bd1558d92d4a3ce3ef2852a587d63f68ba89be126de7857ca5295b892a216 -97e0fd1e0a18ba40093b9b5d9fae43ed1c32297d926c15f068ada2a7e6f7fa51194c814295fd14fa8d40db1d7ab7bd17 -a2b26d79c69d337e8c0d1683f62bda6539e85f5f46c12a418df8846760dc92784cc9bf5733261c75c3b475587228ee9c -8b1fd7908c5a6216efb37f4a91f38fe3e8b26d464c39d3cbe751257ac103a6c90bb14cde3dd6f6c34148f0337e0e3c2a -a3b7bd36ca319d53533eddc2c59db18e48a2a97a2aa67d130025bf780d95cdd4eb3f6d4508b56424d2dfc6f40fa4ddcc -8bffe6ae4f0a0a7c5aa4061c088772de1488560a1108bf5f6d4e768437943753096e9dad86a44454b1a92e7d4b622013 -ab3976ba734e3a303812797ebc6692332b10c4497147bf494b1154e38cc816c63b9eb57b9a878f4e4d2f3734c43a7d13 -8661afc5b35096963e48697629ccc05d8684ca5cef96492aeb8fa1fe85daf22ef813d5c83acfc8270ce46353b10c717f -b59fe1532944a5f280f91af49681336de40454c399f67577558ac61828a5a2d0e03c22d9815f0b70a05ebc25a55ec554 -ada663edead029d7394dde0b1e7ec6d8e3ca10c95cc29d1aba12e8648166a217345f0a35a78bd47c56a0aa3d9cd62c8f -a49c18de620623d8be54bfee982fa5cc68717895185e70b84a824fad88689835c533260317b1f05cff4be3400a1b1528 -b8898d2fe51bc10f5aced8d1e471ab7db65a1e4a9691fcc280ee5e36ae2971e1fcaed347000e71d292d5b50543a60dc8 -86eed3fa826564a932c70b610c46763a9b030a2dc284cc728ffaceb26da7d9b48e55c95ad181ffcdbde4a8efea0dfb39 -85117f830da74c05c04794503ef928aaf26017799fe177cb81ccce47f8275ccaeb4456c0f915ac06373fb1caa2a55896 -8b3a3636ac723052025f799089cc758238ece57ccef1ee74e39df3afd0fb27b6269b88832d70e14e33eec9b6e86ff917 -913586214ebd2644ec3b4cecf68bb1671b7c2ae5d1ecee03585cdebb72d0b645fd362ed59962601e59cd15989a6b85f0 -94667f40b6138ec2989d03f078f9dea3f30ae7827127076cbc0838d1beeca36060a2eff63ca49b08e6e9b4d5bc392f58 -b9d96388b59208ba8bf6c17ca3b2e56c5fb4d9e1a3ef6f4d65e66ed1e9edc3ab938768009de32d43d9060e952e336731 -889a30f693e02b425614e4dc9698a0a178538577b48d0f617eed51c93f5f43dacde14f6599c91269faf99c73174f1437 -ae03aa684bf06aa7d32c94888963ba4e7edec683cd88ab18dfb139214dfc28f78e57cf81bea4ed5ff83b9a59d76afbab -86dc4ef045709f7a782279fdc017f204317d5715efe3627dbe70aef9cd5fcfa241531a033ffd45685f6ab17d4332125a -932e005ad5d73664be4826b1d854ec6b65d353477b0f06a9ffc84283d70faa7db784b5a70c971bf74bf09b6407090702 -a69744de3938b7d3d7718a49fea7d0513280473da341c0937e6d03ea98fd719ab3f86c2e4fb15b94ea127436a058657d -864b32fa2b2f477e711069b205d4a24610d3385b67d6d0edcd0fc66098683e6b1e72b2830c4dc7384352e02fd99d604f -87590f7d8766a2b89b653cb61b28bcc646c909a678b863a3de7c62f6630ec4afb375ffa1435cfd08d454c17a492bab1f -96a8be6962da42788dbae496fb2534d7b1290e961cdf7b38297d67ab7551cd5aed49880b5813c9a883311d95747120b1 -acb47e5c1e65e253bd097a3a5dc17ce309026e3152acf8b84728466432e68b4f9866b33b0499a081af5049267efa5fb0 -8fa6fcd27e51cd6eb87d194347aa772357e750795b7f72d39c7b0a065e638f38857d62bf6bad07f9fb57f0ec438de855 -875e491132fb6dec8ce5f28cecc8b26d1deda689e77bc478d9049f12edfa41c420ef624db50971ed72c9701bec2f5e78 -a30ddd4525c697c04427f04ab7a6855cf12ec2c41699fd2dbe85ba282d14647a97513a7f42057dfc8a4db52b80c8463e -b927f38a288dcad6ff839a7c3ae0c4305b2b346a04417193e67b87495c31e51c301b55c9d5f3f3c16cd521dd23ba656a -8c1f6519ffef2dd6ee2a43579ea4b341b38f6e48838354446e75b583ece42b14050632e6340ae43ede0e6c6c5a1f1bef -8e962fa951b2e54f421457b0168c290b31822dcd361d1cc83ac0549650b89d3055a1d9bcd7e867c477b93df50a0ea1a0 -97f4bb5324e54bcfb85096d6c73eedf5a3325cfd2e2f55fb09a26ec787795a6e46f5ea447b0a01871a836b2640cc8051 -87bac34f222eb285fae3b0683be546eea44be99f03d33831be14a9046be066ba8f82316deb63cdf2da096fdc9045ab88 -a568f8305273c8147c1b77608642c02868494293be264bcf97bf263b3d73390aa37c3c0ea2aae43f29788a639ba856aa -b208071f8ece0d16a4bb8721d3d57b338086dcdccc979f2859975af2f87adf7b451c9b5d34c76373496ba0588f6a70e9 -b384dbde6d7bd7a47c7f0ca23b0b761a632159a270fa26cc2fcb6f2bfb64c6be0ccad780e9bce5bfca8609167abdc01f -b35d96b383ad732c2717e5acc3e5e8162e1e1b03182da9d0eddce790dfaeaa9e909db20fa6307243fe37e10838e937b0 -a99465c3423d401c551155f3eb7edc3a431f1b3af07e9a4238f4b1434595f72b7e25869f3477b7f5f188413058bc52bb -807b5453075c47d2bebca0f8528b4b1505eb9937db1bfa20ca663a365e10f0bb14ccc220f79a34d961cfcfd0c8d9e1be -886d7bfd63f00e05e31e43a611733e1bd37998abd947e4819b00bdf839f3d35b45d1bc0fd96208de8e2b4510c2375ca0 -875725cc90ea1c150ed509badb4b4e1cac0e88f7310591afe2098edc27326ca9f2725cdf13fe1b4ddb2dd45f43866240 -89d578a35262bfc1439e277e0becc22772358983d79e24219e1a8f43af6382e7cd0cd86b47b3d7d1b69e7c71e386c4fa -b6003a3346481a1798041c07b7513a099b61b076d61b33134aa7f6d22bc4788d5e62726cd151bb62f9eb9c2e6fd75293 -937a28d529b020579bd2d1169496b6db569f51e61f32da6733195339d793eca15214883ab54b26cc99406ee1ce2d311c -afe7ddbe703dd177e7bd509c7c7bf9103d8fb793d00a56e3e89a41b3021626dd9d6537ad41e71241c3a3e819f01f3174 -809d5ad8525a65ad313f46dae056588809360528815301a9d340fd7504dd90b6984ef60b8ff0fd12b522520734885b59 -a88d6ed70af96c93b1b55b1abdf395cfa540bdd207ca86be691b32bb02f69d9665fa819946fa63fa3a6fbe45c3d9c6fc -a9011dec7ca1942e6a55e517948ebc872d055d401fb12203a54d9670dc6f0c4d3b0b51d6ffe8b8ffb60af3db39457f3f -aff1df03b9a9f94c3afa7147538b4bf26c3cef54038761090e5ce9bf7ee60c3579dfaa1e9f747572cf0a2cea4ca32a48 -b9466d086e9400542f7f2f4e2d403d29350f8366ac20cf587fb46faf1517b4d7c9babb6b95d8955d51b712818247fcd6 -b75cb5fab147509fcdea400f99f7f8acd23d7958fae88404092670343b614cbecadfa1ab898397592736a3b552b57fc5 -9095f8e0eee696646aabe7806a10bcd002717f4b46a43a99fad8e906ed37adccecebd1a188f7c7f3fa2f901b7f4e287a -a5b02ab5a5656a15c189c9fb96da33df0c317a0897455c15da26d01b37cf3d5f5d974737fe114816ccf342796305db98 -9449e0b6fd4a3be1ab17d1d7b73b9d32cf011249331901f47577b14da0af474cda749ceb3e00c0e201c5af15ffb5e7d6 -8610381608500c9a9d58a15b6037a21a58a122a21324580127e6ec6679346b0b0a4e3f7d7e6d71a1d73e8a0cd1640d24 -95fcefba018ed3616525b2e62a6b63ebb61502b185f95ebacd8c289147e830970f6bec3112aff607d4530e8fa2342808 -96d4dda39123108ce629688f7b9ac23209de0344e16d908bbad9cceefd8e3898b353cdaea61f8a192ad33e77de2f24b8 -a4ac38b0cef45b33475d850f7837ebec5b5fe5ab4fddf08eff4f50e3e8efa8df4d911e5cc89f0a579c5bd332375f3b8a -82acb1661f7b17189471d18181d748ee7be1418c71cdb2a116809cc4fd6fb3c0c83d6ff60dc93c753d78f575c08f2535 -ad4e494f020b604f77ae051da3f692dd3d00be106ffa8bcf7bc2477d4015d7f9a507cfc5fbcdf5c91e5dfbf3aaf44ccb -8dbdcccaf1ef351a20e2b7c5c45aca8e225f662eb70ea961bad9d617139a53e57291e7c44576c5e793762fb55e593c88 -a1582a2a3550ee02c95182c94adcd028268cd5f545706ee8210d1517c505a488c6cc2ffa7adb584a73a6cd9b0aa80d84 -a4a8714f4c0c604102d27070f9dbdc3b17d2f39a0df4770f04754023177d468eda82b842bca0dbd1814a8b8a3c6b7d8f -85f3ca5918f12f0d5c3993054ecec5c1d7af0e089ec945e18e0408411fe70ee5b7d6714639e1eb1d08a2797dc108b6f8 -8473d2ac5388d0b5ceff365a78e202f67cd9f0570211f3a871c5bf029a0f0acf202dc967028b4131497b0ef99797bea7 -801056a91608dc72fc6805c4b5fc9224c45da08645c932b64c0e3ba941f100633611314e9be6a2133d683edd44f8b127 -b42e43a23418c0e6f8a984b9bd604de29932d53a5de1e21df212c3208aa2eecaf970af489d2fedd42fe170671cd17ab3 -8e42810296b90ce0a5575a3a251b3f58647c16adab1f0ae935dc43ae69aaeac199786f6edf4448e66d449963ba2bb00c -ac17e675d5d9895a59a80f23a9d4bb70d5f7259c5b54aa59169fc2b202d39e68c1a48212aa42e4eb177d07906e33e7ee -93d497eba141f2204b193c60d27f455e89c8342c647a76848becd19e9cc23f108f2497653c37534dceafc868b8826679 -b277b044915b67e4fb83f6f8b5e08b3b35c89f568bad81f3b827eb60b98a9cf31b21d4b4b1cb315963e9ba49b4fc3f51 -8b52904d92b2008b1bfbaf2de6fdc50c3f5238758dcfae34b056c1bee3ae3a55e4309ca9e14ff3bbf743f7f20f99f8d5 -8244a7c6ecbbaafc70710123a01e7a6bb73c1fecf3e8b4bc620c5a5159ec6485727d9912b07d05618bad92af02c22862 -8cef71c76198875631471920778afa4063a4d05442fe0ae6910c8e4c25a3ec96c06e7b0949af658d7b6b0b3f2e836e3b -b583b9609c6a82ac7f637c96c36e0722debaf911e44a8c3ef9a804f30480b7ac297061420cf4e34cb8f2cacf216e54b5 -aaddc69c1fb29ecaf4b4c459313849e357fe783d35c91324cbfd81d971308d738d079457deb27de6a94e656d8b62fdd7 -974ebd2c8e1fb175611fb5b73d6ed8e8e05b7f4c8ff94d1c50a4b57fedcc86b1e24867262299050fec5d66c0ee161329 -8427fbfc692100b6cb3254effce8ce20dda5da38971885d5151713f909500d3cc0c17052f0277e8449a0d69426a8d723 -a7eb20b1b868512334809025cd7e56036d2479b3addde531cfffbeb87e70d8485c4c893a085739935665b9d13af84810 -80eea8dfe4d9e35c09e997bf4bd00d6be0692adb6d02104f6dc63e9373d38f40c79e40fc8f5855c337f69470940b909e -98db9355dee3a5f0f5dcf386dd96978945e7056185ab51cf4e4f6850fc1a8564cfacb576c6f87c2f66e65b3f272b06c5 -911fcc4f4a8409a032209957120dd1aa05ef9fb7f6ea08bf24e5faa66b3f6bcd41e00bfdaadd0e4bba82d248227d8df0 -b7b39d74f4c213548df4ad7ff01a9058411b5e195569c19a712cb5ff8dd59ab54a9414ededb39c6b86539a53a0f7fe86 -b8e3a9b5663b8c7f23536f20a9eb3ec10a20677c38575a08830e3f10e6bcef9f573783c327f6b538fc61978c2a5038ff -ab8af9b5f085f8cacd77cc16eb3a3af699bfb2e5b5360b6b291953491cbeb2444e388a994e4433b5d6cfd6078d4d9a39 -942dd57203818d4470a751e222db37c84b384352f136e44dbe57b0a2531024e6da8aad296094c9925030a212c790ac8b -991e874b339863930a6fd667d86cfad76781dd34c82e1d24f013a4d46a825114e0d871f92ddea1e2fdd1a050a3668c39 -a1b9d8cd9ac605e92384049a19346c2a4c87da174e9232af4612a22757cbe3feeb8f2a9f74b4ac1c2131f2fdbf81a340 -809a670228fef54c5a404f7192d1f97d520a346ceebcf401cca959ff5cdc24220a0218800346a73db0570600923b1b0f -ab672a9c4a28e2ef70e293f0875ca602e8677419155e9ad05f584d0958769e79df92330205f4f82c5cbb537ff9e2992c -a73022e3fd2d0a721483d021710d1cff35211edd0865e08a4ba6281341dec7513ebc63bd3c0784e4906936639098739a -a584db708fbe97085bcc65f804abd24e405ef0bc5bb9ba52010c2b42997d600dbb9d722c73675e859dd6eb031831a132 -86412ab916967d693d4d848c32a9d8067f46f67b377b3e650644f3ed02174f6832df13e83a158fa1ade9819c1290176f -a113d6805d4f68703bfa2e41c016e3de57ebcf65c70960911b374d95c089b0519b095c7b3ba111c4d889c100e2fd7b58 -89bc37cf8f222ccd05732f7fdd07be06c27b318216ac2aa8b3388b57a74bb326f50579aa5a3384983aba8255c67da8b5 -aa8d3a2611af168bf819fb5949f3a00233625bca8e219cc1938b6177acb9eec91ef755148c27e902346ac6a754c4b3b1 -a5881b53bb825899fad350ca223bfe4921988544a598173f905cb204c4b3f9096cd16450b676214ad6d7cfe132140f1e -a3b49a3b2a6a2d3d5cc974ac7946b1982f5ec04c747f84dff8d07e647ffcd27fe01f1134d6fad24cdac05c4233a99394 -a4b8da831ede2922bc0a783bc593cfab21ed3b0f922d4b8d014283bd012e179ba03840095844ce269d69b2fc947163fe -85b9b2dbc38f8c95d84157ee815570ba76affef543a7a0d172b138d4a5845a67bdeb1fb21a0d4ab41c69253694f8f91e -89c9660e369d4c28818335b385fe4eb651c7c57ee9525917a846157feb9bc21dfa8f7d6a7fdbd0ea362ebf647c9bd620 -878bc5d2734fdc1a4d672d9503ed6a819316270fb144b44ded691a2e2cde63a4a39d21b28fd42768836f662421a34569 -8c2cb14c3b72bd865860876b5f66cf8edcbb7d1d3f6ebdddab73ee71b0a0af4d730049833cdd361d253f0e9a026be6a9 -86d5224e05e7e5c5223cfee74e4f5b7215e8e8dd6c5aa302afce59b024c27dc323a1bab342ba2956708f012753fd3dc3 -a89ab4377eb57adcd27734553a138479e1521f856a1dee153fb28b58281442a248be14a87dfef1f72ef3ea670078e817 -a583b1896969778875d804d3374abe6219eed208007cb3959e2d65e1a20884cdff6d2c5336ea88baf913b608ada4058c -8d4e75beca15bce8bcd22b4cfbf5a38e53dedb52a47a3fce155da875e4e561ed6a9df56a4d3ca84c2f6f5b9830d7e555 -adfc0ab5af6f3d68b4bdb3a7ffd810dec77458e567deb6f4f37447c653cc943c96059022437963a95ac6d43196084b93 -aba8b3be3f4f763c195c49a5623e6657e994dbe35b605e657c2673581c4eb52bbdea4b010d77ef9f97205742a2195cbc -87da9e343c45e21518f67941879209d1ec598b7f8f9c4d8265c0e2e8514ba8a08ae96f84797e38c1409f7021989b18d1 -888f04db1918c177aadf8ed0e24f6a7bcab555ea0c89ed911837b1da307f459de0057bb6869fc11fd8297160cafb69cb -b5d1e1424270bf9b4dceb3b87e591ad54bcbbe879306fada0cdf486e0edb22fb1e98dc827dbcce67d450cb0546df8316 -8aa0fd06946cc152718c66eb76f724e1782d047b1fab1706a3418ac0903676b6f73e5d64e1c4d013d29e552e9ee78ba2 -aec561ddceacf45f114a9e23bde9eb4cfe3fd7473de39238d84dc9632174fbc369408b2b17ef852d6d16472d42c24c91 -abb378b46dcbbf745b3cec2653fad529431c6dd5b120dc441b309bb7aa5a7bedbd20c60f9ed3f54ab42d2af72c2f753a -9721f1ed94bbad718c8e61ab0fc743186ac38e35b76874e3324b888142e9f3024867d8a289a50aede7948de55907f58e -adb2ec1dad7f8c056b314732b2e5511ff7173a050db22302b64b3d599f7add70946afdf46bd2b1815fc6b490603ab792 -b2f016d3b6fc024c2fc6333efd99e2c4707b1560f73f5f243f5fca5cc7c36faa99491515835de1bc2b4f3e00275717f1 -b99aa14bd756c42ec3785e99f09a589d3ada0dcb8de12a2d3b3803d691ad0e4e513fd4f58cefc0f762e20fdaa2cca3c7 -a5be04f7c022f899d1cdcc3ab5f932bab08f7550f967f386b5e2f473ed0c72cce0054042bfe4f6a22a6c20fed99515b1 -a1cf9c3c63ed317f9f638524d20dfaf957d5cbf338cf1d788252f75276fbe5459d055e13439c2a4412a1bbbffd43e0d1 -a748076793f96602b44d22d3ba80c04c3dc931a1813ce80c079118a455095b45294443c3caf236c0c7c301a0afd34c72 -8e02227b6ca28c1a7f1dc4ca55736f840be6455916a87b23f60a516bd096f254eff56a76d0c4d7ced26b13ab11368b43 -8e2975b903a98e0422637b8fc673c7c2012d56674816f274cbde238ea662ff2c729ae8c56cf95a17955833c82aa1da41 -a6b11eb5d8bf4d5f0b5aa4acef26a99e0aae01513d176edc70bf83f12af59fb5ba4c91c4b49bca8436d5b3847ada5e52 -a143b73aec5f1d48bb14d05e562964decb7293365fe93d99f0f71ec1b2636214c0091e96045efc9459a07e20e8398815 -a70cbeb9352452c91af2b0f3429d609e74dd2521982ab15b8a2b706b285a68805003929400042c233ee30b52471ba28b -a747364b5cf81fa96980b865c73ce37a838d0a482d679db81dd0772c0f56d1c8f349a6c3ded476bad047dda179806d6a -98e512dbd622bc6f2371ee73f6e74eaf0363d691bb7e0eb90f959856d6416eaffc2cdd1fe86d3cb22fc6a5a9b6508329 -945dface256b8dbef8ca45d258015f7ff126ea07d0ac960120a89c3ca188f5dbc8e336ddf6826605235866901ddff27f -83d685302ad35527bf3c14f02d174ed25b1b48332fc26dd89ac924d4f598061e505033b7243a9316f3753f9f56d0fe1a -b361bbf4144fb0e28b5ed08c9ee8c401758ba87198568e641ec1053742972c6095855c1388da0a467d0556cc7de20f4b -b8b854dab7e5019ebbfe3e29104e2e1683a7c1877a4e01b5af31f156f903f6978dc1f2706f7b5026e40c01cfa1d368dc -97f5b1e10f1fa40853799a87d12736ea85684585f7b605d0a6747c18b14c1e88fba135fe3d609219672de0076ab68e25 -839dd856dfe805de853bf4bf47d49af77aee5ba52deb627cd99047aafc4eae99284909c151ff6b8f87241c40e006a230 -adaca5f9b03a2a6ee24832ab2319a1441b163748185ca27fa2011f49050469ae79bd293b9700df0a9f7b074f428249f0 -8e08261dd36038e7f0b4563271373fe8f53a7e9cca82ee79ce8419bd1deebbf14b2a11b9b5333d9d7c03f4f3e47592e6 -81f72716c0b548cb503961963d1ee26469fb034c50715ac9394eee3162047fb5895d481f5ffb8e702bf81f7b1bda3694 -85c183f914d4e0e04402313fdbc2c9865ed9f33919a72b2664bce7fc6ab61454e6b54fd911e71fefe2d84e436f3cc514 -94e786a9b365ba9087f6b5165abbcd32c89a79d806ad3cb744847a8dbc3a6d06aa04e99bda162365c6393af4d62b80d7 -a706a51f3f31ad5ccc72dfa1280e576f95da3d6ad3146ec78a88461609b87a67f5d7769eacf23c41fb44c122f8829db8 -8461bd7681f454d60f5497b46d80c37c6aab5e80ee16ccf04a147025ebcd28f79dc6458ca40accbf26e22f6b5bad0d62 -8e7b57331dd6fce02b7d7ace7c22ba59282fc124f3e88f645397ead0dc23fcd95838a10d5bb95b037c660f806ad771ee -b3ff7867a6c664cb34a3439a6e461d60f074e794ab3ee924032eb6f337b145c4bb8bde6977dee7b950562280a154ba43 -96ca48889c44c3f849a753afd8c4a1624b77ea28b5a87ae1924934f63da96c9fd1e4129805a0b19dd7e46736ad0c86a8 -a9f3d34ecb583cda425ad5e411fdde0d3a6ecaa4e35b3a3cafec29d7149c874b4b1410a6663b45937adefd774eaeba23 -b18c894224bab005e614e6c9d318e04c9088560642ce22b7697494beefdf82c4319ca0550fbbf30ba8e8e5fe19e2b4c2 -83c6ee85abe70d89416aa89e0ddc5b5c8907d67945e09c87c673c7aa6b7fa5d67287001fc77f5dab2cbd96b96650810f -98574d68f754d640c4cecdb102dea0454d01ccebf23b75c037f38d3bc4e1b9d53c0f190ddd23258e5f81ecc9d637c84d -a1ae3d5cd807b8987b1b48a449f6e4f470d0ef4c77b1932239657caa11be1aaeacc91a19ef0e4343c00cf690c0c67365 -b6ba6c4ab444a15eca9e8087d58e376646bc1472e94351722a502413ab19fccc1673c0b51d99e4cd80d217c17f8e15c7 -85d6917e78622be31c8d69f265b7e25161e8706975109b1223bbd7057b3c1040c898c6997993eb1a0947cae7a0b42cec -ae16bcc66ba753ccdc6acdd5caf4779128ad9ae9f688b95f708bf7ab4a57083954908647bbee016d621266c0cf1d153d -80edda09ca9ae6bd29b25ab642952dff5e76b5680e38940ac8d68a9476975a52723e7e35c38760f8a75b552584ba24b2 -8299925f517bae8e818499eaafac4ef035f7fbfa4c01eed4381c4daa3f2cd3a8e34ab41c741f81c8a18c62218c1ff22a -939860c3da499a58a2c15783c88c0956b6c1d65613ae56f8281cfea571cc031bd6edc0f2b995d5aa8b8688786d8968d5 -8f22731c310fd000040cc11b825c911ebe8d2fe51016b7950f380cada1c448476afe8dad8fe653f7293dd4a16e300231 -920a733fb80634409cd15707d16af616216a4e06faf598c83c208efa5e0c50e67fada5ce40b1d20bf97ea8b90981e964 -ab82de22219c63126059d47d9f14a0ba9a600a1cb9946df0d536dbafa819333b5e82e202f4a9218f8d631c28469e4546 -95e4b4cc8ef1a6e551791833ebb63cfb50dfb4c7d5b7781e765f2accb2a5d7243b61a457a3d6cf6517f3548dfc5e599c -927020bdfee591b6aff3b8d004a9ab80f0ca477a7ffe79df7bfd70342bfd05675130d8dbaa90cbdb0ac3f77599d03f81 -a49c81688bbf42be01d63fef035f4b30a687c417b1b9af4fb698014a667892da41b09eb469838b94dc0337f7fb244f7f -b02640055a63480991820136a96343f3345bf4d748c784b6b9deb17ac0006e86ce0c91c3f8457396c2376491a2b5e75b -95b471d0e32861a4684f1b2081e7984ccc8405868a461cbfad6e82779f93c1573f99177acefad1dd2cab366fdb21067e -a72018b32aa3be2a319c2c465650d1884a5b101564532c665730023c8da6988d5608173dbd8dfd7046104ae8d7c7f2d3 -ac826c1cb3212be114bb0ded92bca0339b3452751b16a50d7173990862acc120193d3eef0249064be49b5835dca3a0ec -a4dcf1b3c7909b0218b3046087f1427fb9b4f86183fe4b7eae81e907c9ebadcbbccd7625bce3e55cb7366f9bbb4c71f2 -8abf5a881ac9fbfa5e4bf60b84ff489a202a12f00d7776c4d365c34c152ef1b7d0a7a843183d8440454d4e5bdb9c2be3 -b3abeb78b0799e1d2bf3ad52dbacf49a9a678efdbe98ff0e8050f5573f6b1a52ad5c2757bc71dc1435fcca5a7c19496d -95e0df552c6b4f1b9daaecf7608597255daf06cad9fc63383fb23de8989470ad9e963257d71fe2ee25f611d718dc1510 -aa980ad9830aa0ed3a149cf9049ac289252752030b900eda146e2c626ee15940fe2fe0ef7e894304cee646ed8616921b -8248d312f2c662a5045e4c6b2c9c62b7ed094ffcaad94a680695c7bd7b032cc7f5cf088225225dde5ec0abafcbf932d6 -89eacaba980395c2e758a9dcc1014b13ac5ffb7c1dd435111bf92746af31e0ae1e2bf8e63234fa54fb97e96927f8d65c -b775e27d4dde51482e3018279ec1b3c9100051fe9a0196d7cb2e5c31a599dc4cf55f5c51f54980f5814c67f57fcf4b0a -b08278df723c1545121d1bb04b315607f89d3df8aa516ea6f0fa7668804480724c6695501cd725014290749ae4b909df -827e14e2dd39e8bb3f602c3380f7737826c15588c6449dfd327822869377195e1f928a39af1ac5c3a86225622c1c0310 -82201faa981112390a8068e40114b22b64614ff42f95de48a301c480e579fe459d73f86739e2b27ef2a1c5dceb71075b -843081b78ee2e394745b8c811190971dd5b21f5750e73077d31275850df4c1f48807fc4843d5bf4eb17233375babe2fe -b7cc7bbf4f727dc060c433086b7d20b77c47c2b42a7ec10183c30938260a68142d9b3b5dacbc4dae4d1ec24f0bba8fbc -b9f143a68ca5ad8c9c9dce39bec5d102911726d0b6a865a99f89ea4907d6dc06a36d2b054ac6385b2390087604dddd4f -864c7a48f0713b69b49cef5ae12907590e42b3ad45be0408af6a466c6321d70bb9cd52d17519f06d435019107f704ec1 -b2ac2f1b5c4107a6c118900e98da6f825470a9dab5ddcc53383da55de4e125f13c56d6f9c191511efb2656725dbf09e1 -a02bb8b66fb18256e63d21f380336b87476756678a77241e254c53f962306d42e5bbc5cfaf7b02641644e88c5299c749 -814668631735ea6b2316eb034d04012c4ac6af2688c2ba0fa77055e7b2e9c538fa34058ae855787c127d002637a9514a -b4841bc20f52369c9dbbb2a3297c747028f1f2d171d3c93f9590f8e8d0a89a78e2d1475b062f0ab74ce9dec23df18ce3 -9745bfa428294789fceb813ec0eba525295ee07b8a112ad14f834bd641089764a8ac5f820225b7623febe5cf7478e035 -ada617e5431027447d7a132234c1612d7237597bfa54d0cdc3c733a028b319e6828cabad531dc2e94115b7a3a1b571b1 -93ab735b634bdb94ea1d2e1e3760d343ca3e76c045fc9c98a3dd024da74c39bd21cf45815fb63186f6fa1319f62d1d0c -964371421fed0ddd236c3fb639c4156528fd8bd3adcaaa0a5f9121926df6774ac9a33a44d5a4b60d723787963624c968 -91868d72011cc336d15fdefc26cae88103d5df796194dd1a0f9bee4afccc9958b102ebbad068501663fc94ca7a9f220c -98134a70e43ef446493d59de3075a2194012d8f937833f208741ee91fc1562510aea52d99e273415ed3e77d65d6bcf62 -91f2739db9daf2ef68e61b135ea28668fdf4045d3014635a3d13aaa507876c1cd32d8f373b45d00491958a34d9e4ea96 -8ab25a2011bb5b02ea30748d7b90644b4b219baf97ee9dd6b58e6f3008c719a32004f83fb03be7e5ec66eb42ffa0ef80 -86c11d9bc416278036f449d7c69a328075be3bc5eb40606d45d41878cbd5815e54110c04782c7ff11c67e4b710ea07f1 -8d55ae41430af753f5473be4c329cc3ee579d59db760ee0c3bbaa2afa27f663a2f7ab9d5f49123020733a35bc79af5e6 -a31c238ed9aa5d35584f26b18dc36fba97aa053dc0e013dc9fb1d854ce9824f144fbd6f8eb47459b41b94f2d0353245b -b2decb6e70411ee344b1c5c034a82e38a7d7b5039386ab8922b13da9674575139529d7c09a9c7305e0c69452aacfc49a -b546e794b5e49dc0525a1eb86a83166f38313edb6200f3245b1bbc8fee707fa581679495e877a25f6378db7f3be7a93b -972332197ef689bc9f55c22c53f4031147a50ede7f8e5b22defe5f827ee364213a740bc179c21ef281f4cd0c3bfe7530 -b3fcea592a9d6c993ff50832a872c7c26bf28f3a6e1fb51a03d31551f3a52c3059687a2367df7d1001c0405ad733fa0a -8ec187bfcb70e2f6e82c1d9ef383e8ceda53a0a56652df2063fd7c0c03937d5dfcefb906f88f5b7d4c8a632c26182ca0 -94ea8734e2e3632c081680be7a46a7249f29357a558741021c9c57664eba21eaed03bcca1ffd601e11b04b1853ba3539 -8e1d5e9cb763ede4db8deb900702ac3da78c889af4e5fc67bf475f835d2a63ea97e5066444ca2aa4160c45a99202a585 -adb9a0ec32302a6bee76947c75112be44ec670e4e11e50af0441229afcb0d4fbd51ce2b124477c3b5663340e5ed6263a -af325eede54e8a8276fa532d7a7c555672e219ef5eeb7e4000699201e8e65e116ae684bf3749a9722895c345ccd07ea9 -96a71210b0bd0b8f67d320463763b0ad8891fd6b408bdb94b94199d0f1764e82bff6189aad1d58a94ab0557f4cff38fe -b6308b51474c93c075c8884d8e98a018ac6c84206f1675b519b42eccf451680b307fd930736a77b9d84876e762495768 -9651505e3092ee8ac931f41a5e8c16082cd923a64e2994b0c86de6c2b27e71661667ca38674b3bd8fc27778558cb9faa -8dbf231801de8062d03c048deaf6fe2ed3519e0508280d1f5a84939df66f87d728e9a649bd9a9e40f67f73f1ef6bf3d1 -b0cac85a8aad5db95263876de2284b04088eb86eaa05d44f7719171ae3081ac11beb3057f8fade8b36af2766070adc80 -96ee67e8e8d5b465fdb3b5f47b307693361af0ecba5f28292a09e1a84a6e013a3fe10902306554becb0d8cafdf5cf16c -88761bad99aeb9fa1e482158c6187c94b0aa9c060cc184ffeadcf566a8600a506bc337b46e361876d9510d54d1cfbf58 -9452ec5c63e15e26a05a553a1b846d6837c37aefd4cc0fc11c797c8505e2a9545b71565dc5645dc0ebc8586aacd4eeff -ace8ea72f281ffb82604b19881626aee7a4d06dd0150befb60915efb566716cc725243c16d8e0ccecf84789d69e9320c -83be6702adb341ec17439b7dadb70125f1c2a2fc344076241ffca3cabe10c6ee6b1e356a04f9f153413060ac97bc8f07 -b27b231f577727f33b527d6fc2c890cfebb58093174e04fa500f344bc0786898478977ce0a35fb758dc4385542551792 -97aae28188a02a7b336d0ed5ca20b0ae629c8c7cee95176ca70682b39df0ce947d1f1e0004446a7441063757725006e0 -a57dc495f413e61d9eceeb6ef794376b12dedd1d59b8da59b0ca849233a02c45a75c2eb250cb09f75f0587d082e0f099 -97ec10a5fe330fd3f0f4e57c978aef88a4d6535ca8c9074eb1d3af87593cd9180375906eae1c6f2fb7b9fee4b1fef436 -a50ce5b516c5eb6705f90c3bf820305a7dcbe9ca3799eb5656d5ad7039461b5ceb4d6f8bdbbb09a6c8985b728c38b8d8 -ab6e8c25440e4b95c173e3d775256a7e3ea559169782520a8ffd3e5cbba03d5ea72e97ccb9b98fc72a50c67f0719e5a2 -82ebfd3d95ae27d57370142e45ce43ac88a0fe09b5d9dfa6471e480571a971af69cecd94569b2eddff0799b87e2ebf9e -80a38eead9c3ee45ce16ed44d5d56845b238c152574b7eef0db1d4fa06d1480686d9e909369552d603616f7e5dfd05cd -90c1aff5b6bd05f0bd4f2f9de46a7c602241f1f14d9308a7ee1c04b1da25ccbf60e25471ba073a474de47be3e36ff43b -8560512ffd589a00fdd05f7e141bf9122248d1c09a4c1310a09186ad1bc8e25491845274ff7202370e6f1eab9192bc80 -975cf601c767c9cb9e03d2a70b03b3d0e80244ecd748b38dbd408535edf4e643582fed2bf6f5310f8c9077c2041f81b5 -967959b9eb843cca99d6eb1ed3efb3c66fa0ff8a1c118cd5fa4378df645e85cbb9992ba815c31ef605405cc35ea69948 -91af4d2a1241b7f97eb72cd13516288224405c9c8fa4cbee5a8b77d14df62df799291d87887570fba1484e461c14b7c4 -b76b7ba24913f43b61d48ac2be068f85a6473bafcd4d66bd8ad9412b443888b2ac9786c209de253a922c10741c9ffffb -ad51232fd771d1b76b6d43eeb64fe56d54664638720bd78c9ca5af2a6280153a83163f945f4c717f40c145ead1e10b59 -b7680ee2a6e3ce950fc6d4a4194cf82a0796dae7d144a0118f54c150dbfa0d8018490edfa36d72d62afa2f579f1db96f -86f9168c5e9ac513a32d392d74acb951007090946cb834145c56a5eafaf587863d5f90bba429b428564cdd7179884377 -b21d00fbe4b0fe7b38444a40eff53df998d44dbba3c43ff3be30e553be2cd671c4f01d3d89231c460601b1be65bb3805 -b89c65d5886078d5653796790804afd6d18351c35d349331aec70cb9316fbbe81c9a7aac60b42c0da30bcbe394ab6aab -a159953bd7fbfa5f1648d066b778a4c367644a4234784d4e898243c5f5db6817e758230d7be3b8f5defbc6f042a03400 -a2a04948452af186f41aa933d45180fe4694850e12b96c634c246960c0d1972032b4d8a115b10f495293542e10391032 -9733b372d2cbc04ef576e97c16c1545fe508811fc5b0267b01269e0c6d549ba610fcbc37193555a8838602e178414ab0 -a9bff69df0bb98d9ff6fdb659bc695bc8a96ac69ee871ddf4b8fbd646ce59847d9120c45d230ce97527b4457d2eaa844 -ae1973038d72171feefa8d59c25733c8067d3319b125f913a3b51d1fda203840fcb69342577571967fabcbede4954767 -a53a91e242569ce81abbaca5f6275284d208f03f628de99328d6ad2aa90b879f70288f54002cb12af2b374a99d4471bd -aae34146afc355bb2b1e0ae29ca5bf1d00d6ce049bd29f32c37beae89bd23c38f037d0ad18f551d690c53c0892152ad5 -ab068a2b10eed57944c4ecd616034064beae9e82a1016ff3bc88ce565bb41067da5750584bb16c7bdeed9928572e6f7d -a2b6c8441f4359a0b8f76eddf70695720566716b5c0680674e23eaaeb44d2a92cf9cdc892b1de18acd963359c10f08f3 -b75bcece73cf8b4b26028be9bdc36e242da8c8acdc7d94f2db64474dde770cfcd6e02f7450f47f43a6093e9c3cb0b4a8 -8bc131b08248bee7db453206bfbdea4de356dfc7a474de1266b0bd0ed692efd319a96fa362955f5dda2afe3dea7c39d8 -a066e3e41dd80961d6662877e0b70e750eb1b26512c55834be391d4a666ae5e1a9789537a0cc88d0e43e49565834a3a5 -a805141eddf3bb474159905de6139d68c67d8fdf070bdfb4d819eb76e86801019dbd30670c878f89cb74a966a51989ff -962a9520048360c761180c386b2bc857bb30b38546c24f8ca5162aafff7c4d47deb90852fd2b0b280cc9157cff747e66 -8fdca12bcb7ad173e412ae5ad7edfb0bf1ab9c887f648717c26293a9d47b600458fd1f39eb82d1c403daf455b801b6d1 -ad57b4e52cfda70d178fd641717184d88b48ac96f2bb30f7f964ab44e173dbc5f9fd732b3cc292f7a33559aa512deb93 -b9871bc77623c5cae3eaa36abe65b44fe63dd3466084a263e7e14a9ff72a17e55383eb1afc06ea493d77021c1de45437 -ac1a94a0eabfc05958a3532c4935d93dcb4ae5ae5ed40a5afe9e3103f15ef5d499c61d76bba8acc224b6f0c38af0387e -aaae28b61a109dee16b3c3fe58a81d803d2edeb1808ae49abae1849cc0f9bf14ed3227357b71a6f3c90e6e75abe8db1c -a85d7dd3fd1bc1339a0c5e4b1da73f02c21313240dc04248c59ccd8427d4271ed998d89d42c84d367aeb7b82260a2388 -a6ffa50a5fdd99fac785a76004718102dee20fbf026864cf8ff6164547b94d3024e03b4b2bfa4072e61d3a8415b2beb1 -b930b90aff70417a63e8da0516c426bdd235cde16e54f64dd50feea86925499b4e146d56f0adbf3380ea4d27b3ff882f -96bf13d7c897b3d6ee931e35fe515e613cd61a5ca3ef6c5cad49cf13bfce673b3c89fad4c29f35a2a1eb4f881d48c022 -9711c6439154321ea9853fe8af894c41edf9563bbc2693909347ff4578d281f71fbcc29ec1638c35cc1d74755ebc4855 -b7cecf450348f98e6ec472b7b9e5b627c1bcb438e506d93c7cf9d5d27adae8fc026702df0c6f904a85de99a16526d330 -858ae411c47df1211b4ccb2de5324cc57a9c9fdb6ffe6b6adfbb601f66df1de423c4fde3ebe6ef420e7abdb2fa4376ad -b142e5768667ca28f357d46f3fbaf2022d35775d463f216ffd3ec246db4611055fa83bc42b39728b1e3bb4b950066a36 -85572b1f205e31fd04188603ff240fbe613f2744cdb03d881f283d4b4d4efa152ead22d6a3f0bda58921626d5190ff9c -93a72f016f83139dd0ca9ef654887da9e7c67a4680bfec9376578b7a31d0012cae252546cbeb54639555fdd641fe4951 -ae86940a25be8a6c9e24887cecdfd492dbdf86a4b127b66c6c3966b2f4c151611afc1a78db810e7f787844df32863e13 -85bf4c85a21b87d25aca182abbeecc99dda23dd5c6568aefb20846ab0af6b464c5da72b9ee655209069686b476230b98 -8544918a9250f0ebb3639d0ea917920ad888ae3ba8daa8b4f94091cdc7f0724f8dd443b51021832fa9ef8d1443a2c29d -8007f7c605692effd7cacc83b2254ea8fe9342b2aa47d271166cdfff54355b2f82e9f298ad37c42d64ac8ceacb83105e -8d5fce5180a2c657854a6691c2ce65a6ae50da43c670dea6f12f2f1685f2d4a25734cdf4930151088ad64af806ff15f6 -95fbba182f8d3c154d66103f064cdda5743bef90bfbf534fba2df675dc05af4c2ed9e8caea217b0b3eecae699d1e0499 -a88719f38396b39320a92f97e145412069950afa1c8ec276816b010f709e05a43c7f3ec560b3d24adfde9a1f94f22043 -9895f350ccccf4c8f9bceb58a10270fbfe5e1b78e54902e94cca7e29b233c9caf7e9af17822d64125390d4576f044522 -a2d958bcfd99b62181304b84be177d9be42cf36e522519180e6c2ac9ddf6c02f2fa70234be50bc5dafce1fd348330031 -b924e346f9d13e1f9ac12676118104f88afc79d5888ed27dc741d27d37be30639f37cdb67a7722faf5913e44643cd0de -b8be5078e38ac3b84cc8070a0a08adc3877ccbfb18058b79997fcb644c4b1b9f83463cd88dda3cddbaac549046c081de -a97551e3872000e77b158d2e670bba1575d487af850a5192e73e5f93cb7f647c4c38f24911b0ae700770bc08b65f3e04 -93a8831f690e7263d39785bb1a8f0cda144079acd21434e8e40b4e84d6af1bf6adcec0f07623be8ba100bac7b0f880ee -95aeb3d8e7005d820f3bb2ff4a88bf88d69f5d3a189db2355091c2db414e29dff3f8ce14587684ade9321807a0caeb3d -a630df8b1bbb095339d8abdda46f7184ceb0ed09f0e75124bfbd3056ce4b40bf0856564b68a5a72e2f752ad5a6530cf6 -af4a873472c65befead228268b6b7e5f0604ff192ab3d509d74cfc231c9f3c2c0d8bfcda9c02e1c6aba2f3318769547c -90e4d7dc4e03c549eeffa936de2f71dae77be9f2025ea8a72439562ccbdd1f3e6c146d90c3dab8525f1c2c4e130c8e84 -ac76112e97b2150d0edf5e7c7980aefd930e1830de6c6afca9a05a9d9e8bf15736b6931c930731d197d70f1936ac403d -83958275157d1ba327e214a0648b42dca7094407bd480719bd87c0068af2409f558e725d46e6ff923d63a9fdf60f46a7 -8cdc2feee0f641dd4533ababc7adb4a4a7fb0e345a2821008a5f0cca5193df692f4c28760638c791293977e2ec847dd3 -92544dd0ee6c5aa43f0f4f9819b2e98924ca8b62363fdd2fba274c1315899fffdd168a42b46bd49cafce739ec6480898 -84f5b6af997e0d21e42b67fa442896cbb6cb311f4d20e349beb0746dac9331488e269b2a6a8f47fec11682bc3f6d865e -89ec8b3d7b69de8cf8de9ea688f74b6bab6bf50cbba9fdb9df5e5c8b7a0fe3b5cce963754dc2619f1177a4751e3a92bc -8e5607265c811019e9bf9860ef85dbae80c5a88e5dd59190fab116a2d39030656d405d5d45ef26a7ee69263b642fce00 -840c10d3ef360b66bac041828965726209f2edd67350b1b87ea40fa233336188816dd356a96c16a400bb7264184ecfe0 -aa692abd6ea3c1233acfb967d303c0ff4dbf06040f9f4125569c926a5b2023fee38e6be5c3d903f8b89d1fc5da0c5123 -895f8d6894852f581e58a1d3a38d441b2e09229196be6a0485bb05d4df819652218ec7633bdf72b40b118265a9a86d65 -87d0a49828809f004164bf763dc57a3d53736da639054bb246ead524bbbc756b3b54b8aa123536bbfbd60cdd6daa368d -abbb9231831189aca4c97f2a7282c5152648002e500e5f489bee3fd20e70c9849aa9e580b924074b15566d698a316970 -82a8b321717ec28d78f37a85f2de33826b186fe8ea6952dd998e5c01d5ce43ce6f88de5d6beb04e8830dbd716fee95e3 -b2f28b28080627914071a05bd6e088f39766a1b6fb3d34e4eb8f8ad0ec4f72bee4341a391a378fe8be63746c17a7dc94 -a233eaba4f0a5165952838d280f68bea5a9bc41eeaa6abd074a17a1b21a946f98ab16f27d1e9f0610ba93533cd390170 -8a675908bb89daca05499a19197f222ca78025f0e6d248522e6a499c4858e6a5a8435aa0cabf6a88bb7043f9cef71e08 -b9c205fae160e28ace81bc9d3340f8af7f6350eab78d1f846bb563f8bc6dc8a2f60db4f3c83a64f55b5dda5a5bfe34ec -b1fbc0a92ca6eae5fe919b27b52127eea3402bde2c3aadc981779e56e7f69aa85fe629f8693220d2f1e5c21fc0eb89f7 -80c79ebe23abc587c7ecfe700cfd6350ca8732e1f8e10942cf82f8cb9579d4438cc08168dce7a0df4405b4fbde47e077 -a9db69149199e6677d26ba780ec0ebf19a95d696dd88774d26e56f1ca7e579894d06a04e831923cbaed3d96e0f513c7c -9235c8890e2d38fcc1e742993508e08397c2299503409aaeb96f83f805794c9e4baae8475c05b23d75c0434e15fa27ce -82a89dd908ad63a1c3c1f102f06d94c57da7e9cd00251488842ea78102717b074bbc2f3c8269fa84b88e0d6527277af7 -a29d27a66a29441070c7abdc8fe5ba7a4bb1f86fef7b13807ddd8c575906f7e9e37d68dd8fa0926409d4a69eab3ca49e -a76f20910708b939a5118833acbc9d406e4511e52340a3e542fc90486fa6f8a3cbad0672236aafa5095aed5728a0d4d9 -91bb8d3a58c7ecb8f79667fe79f888536730501a1986c012d358664620b44d4d88f76b3b7fc13ae03c69991d8bb9586a -91f0ce478b207f5eb3afd2997861bc6ed3337f3baeaf06c065bb9ea18ba02b88afb417712d016cc1ebdcfd71d1559bfb -8ff40891880e6c244164557a5fbfe5cf2e1668ff1135dbab2700f73bfcbce674a91718a9a10a00943845eee2960a2449 -8229fade9a4c778ec3faf66483ad09b6a22163f9db2bfa524842ddacc1e9d86f30a280f85f3e2e5d114aced05df03fad -b760a8cc07984aab476f4821f1852df82b8c323ec69fe6ba58a3ff299412164d5ed4321c13bcf4d037660ca6a2eeec8e -abb3f972e3d66fc83102f3d3ce5d9149e26428e2efbdfcf4ab706fed6dc191a4236536ecf7fd0f2ba5b117c63635ab8b -871eab5cd68e6210483a92dae308efa65c34722863f7645725682755f06567132a85ea121cb360f4d3daa7ae5c79779f -a3d3105c7892c5e37ab9885696483c2a9e21ae2543a1254763cda7843c9d911b34b40524701fa3dfd58798cdb5443706 -b7f04dec6ac8d4fd574633d1234b0e11dc79e84931c9feb88955b946e66f002b05fd368b839816d29d20739db079de48 -985265df8f1ccf16df6eb3ceddaf1cdeb708ad8195f213f6cd90cd8d6b434ed934b2a11a0dc7d881c788a3c3f39661e4 -aef74659cd7fe399ada47f7e891f3671c03525648a1ac9881e862afb4d6b0d3e2b019ed407845b99b96be58192921d25 -8df7e13253bef2a14b0f2562c758383deadb25323e048586c0ea73227798f4da01fc1b344a04ca7fa9bf37bbb7e7dc7d -83548a03a65ec441c4752bcfec5676651dde5a93dfa5c79d7bf36bd5590afef2a423cc689a5058da20e25996b4c7bef0 -9069788c6ccaec6900644352337c54493212e9dd6c7d8439828fd9f6f7bd72e3bf418bc8d077fef398cd3136059a0293 -80874240efd3bf0b6e16a1755f8a8c194955f32e1f8d842af597293ff0189ff5f2993bbea01ce3dab17335374e4f82dc -82976e21360d62e5bab7cdb6880a5c0b232cf16d267eadd8f5abad9c1eb72afbed8708cb4070ed3e26653e4015888cba -a905fdfb61ecbadb5973e19f5e4de0fcc95b67e0fbbdbf93e44b63e97dd187b9d40dbf16696eeb05f9a2913c1f05b379 -862a6058a82e9739fae91d056f6cbd4424d3961986c328418896abebef7c34c17b5d7f8fd764075d26901169ee332d36 -af599034da083c34d8d9dbedc2bb935b9ae1ea3c12bb530fdf4eeef4eca9362856451f85c034a759fef4d509ece3af89 -80f645328b7127f2a87064b3c2e17b03bbb9f2b847c2b5e293e10c394bee8ecdaa1d410f3d91dcf2857589101529acf5 -a46cb8e80f38ecb0572eeba9ca3a729cc2e3c18aec7b0120f80352345329541690fafd5a7c829de841c1ae2f99545fd4 -8614aff88db1109e62341e34464b88e3d48ab0ade15d8f28e798c86d2ab8daf2d4102f92bf16d753dbfed160a6abb166 -a6b8fac54762a0fa32c3962731db1d4003dc37c2a3c281f86d073001a028acfdcc1038452fe18f7899e9aca6eee24218 -b5ff71d36c9d05f2ad9a3650b3cf8790f3fd37f8b822648d443234155033ef2a36b194daf12438a9c140ca39a24bdc9e -a90c7c1c494deac27b9a5c7f1a4f094d05c560611e4f52d8449c5bbb4740f5c0032f36777ef751298de8995c6d96fac9 -b916572ee1b3e60c5293b2dcd31c7d22e09e005635cd858504e00238ff76d33330742f25febe0e81c8fae06d58a8c044 -aebbf9858c51349c4e6f8bc58361d84db7e4b4f68d160646a5eaafd2b30d2bc37e33c5c8f6f4f30ceca07d4defc4b4db -a63858c60bdf3e84caa70787a4a1f263125e5677af9e00a51caa094cb653e62ba144a6f00dce4d6b4411c2a68ab8a389 -ae0500de653c64f3c95d070117fdf2038207af58fcf8f1e977edd4e55efcd81d8e6e6d42c537f25861d3aee2add1028d -af550db81d086ba51560421f73ada3dbc187c55d7b9cd9d9a82d808cfddc0c3dc4769cd33a4a1a0898ef3972a11d0c38 -8fdcabffa49420cc665d1125aa44bd3ff221a78d5336467f58ee2f867d5132ac32c9527cc0c1da1d2e46f15b929bd658 -99a7479d6b9d4bab39c3bfaa95ff57b5312109c35660a76c89552d8693c9958c08e3ea7183832c831394b4cec8b609a6 -8e41800a484162826d3ddbafacf62b6332df04a3699adb2426b6540c10da2cf0f4e48eac0aff628ff845d7b73af33050 -a2e3d21c8b6097b3e81faa0904654f64123b8c1394ad2f79b94eb0764866843171ebf0f7c75b3a5671f665f0bd162b52 -a4ae60b19ce4cfb73ed515b06a2067c30ce7cc9c741d46b64d6d78c34e95bfc6fe28ceb69e109fc6031cb9a786407e3c -8f4c4e7ee70d2cb70b9a1bebb1299fbed26a3bd42da3ac5a859924edc3d67eab05f5c8c945c65e4040a63c6b440c1832 -af8e5f12ac7687a55c003bb259fd03a20323662680960ef36778152fdc7a5c972a34ad6ddcfcb056c3cd737f6e917dd0 -ac0bef27e89aab1026316e95d01d251df5f51c3aab3878d85e242786c851ffb1c20b47615571d825aa13da52c6e04167 -a6cc7c4b7e8c61dcae72c503465d53f707fcf0ab464cd88643476685409815b81009720af4837b07efc49e125320782f -a387370ace1d3318324bd6e7f39c458cba2d9ec9237532d4e1b307f305e419ca976fc8136f02b496ffd373b91d27f826 -a2edf48503b77b9f7c2e3aaf53cb2fc55d78d9a5b967ee7195ce55fddc92defae7833a1f3e2f4eeec287a8ef5dae5b7b -b8b9a735b2f4feda7fe78cd81531213ff0117d71cfc75693cfe39f10827c7f59fcdcb27586c517fb49d25e5c4aab4a19 -ab3fff53a4e5de48e46125389c3a6b4b75a4998c62d11f5352a9b5c096547a1c309e6940222e95f4f63e46402b08b1c5 -9510675e0db61be931abb8361274dbfc8c45487385d21faa632b50866997f194e29ed6143eed5028b04dc301fc75b7a2 -b47d23450d55c242f5228d0cab08ba0d1df65640c2208f71ac960926cda573c83ab5e8732ac82b967474403028bb1c1c -83ea07fc8b4a5637f8b141237a6164c1b3b853bfe05a7dc01e76825375882a6a0c57646a0f101e58f7001e4259d7b65d -8fedc52a5e7716c2920cd3350018ed430caecd1776393edb1261f73c762943190c06d89023b935c643de23941ad710a3 -a7e3046e9ec4a16c9e82d02c5bb5e34a13b7e9e049f07c83ac06a47e1a7fdc74e3e4e542bd2936819579740dc442df37 -ab26e108eaf27f9f29bdbabdfdf2f42c9ea2ad2f2b8c9dadf460279b7c9f5211d4b8ff134e23dbb8eb946f51d02161c6 -b086e526eaf8d74c70466165283dab79005e488635da40d3d4d0b0be114744695dcb11a6b448e0d6cd78aeedddc6a942 -92fa4cec65a26d3ac7e57f51dc78825b33a3f3faf71cd7841932b4d6dc5b1383fd48f64654fd1b7a01b6df7d0223135e -abd7f854a9e17d9b7b9fa25d8eb4ac3b4c3ee2b0738526fcc94cceeba812fb367afa2f508b04bcff556c67e69c8f22e4 -8262472f0cdb3fa497a97b48bf46d912b8bc8f8bb8a0be932b5988bee3c994a015f010fe79b92658a462fc3e6c449887 -abff4f751105d2b8eed9855607e78ba1b93d657d961d6457d879c7c8dc16c39b31f01ea24824162a13c17430cb648dfb -a4f3878f951e5da4a7dd126c01350fc0cb9d1bc1fe6360580313e5490c06655c4920d6d8e8b8a2358dbf86c0c5179f24 -8d0bbb0bc507b1a56d6a97398b0ce0e8f43bc91e65e4bb90714303cc9964e9c31a79132e3b8b7abc45ee602f2db8dafd -a453d578beed4ce9452c813375e3ec9370398415d7b95ca2a025bd054585cd036d01f7fdf4a2d109863942b35b187cb2 -8e799b132d3c3403944258bcc0475d0a27eff268ae3f64354a480b3d94be1d031cd691aa7c2dec7242ab8d60b84160f7 -a1c90f4c778921ee5570b9007db87e4b03a537e2979eb39fd37a7141601eae34fd81349e710193b4b1067cddae2de757 -a437108e7a200460701332e2e35dab0e65bd93ccf7567d02250ab04f27bb0d9e37c38063506b000a0b0755590ff8de9e -b77bd387d773e5fe4094011613e2fcecab11d615c784dbf3f2471523673191979e8952ddeb59f86085c4962d48eeadd0 -97298b40a2e9264a624ad5bea377c4334a58a899e08aa29566e10edab5409bd2a5da3872904f679df2811be3522e8079 -b67ae831f6713a5b360b39e18361e01771189e7198cece81619d0c7bdbb669414739da33ae37f223441069dd0310fadd -80555441f0bdca8c11a2d8762b1ce2c1e5b173bc2219c988840aacc91812f00a90d00a9cf0ec41a52a24401172abf39e -8f1524fa24ae27749e3ada13e853c5b48ae9f625d971efb0852c9047428ff861001f4d9d13b3509e7e0d36c7195bbc8f -a02d83ca38b3d2d79f3a5c378071eef81a71631a923efeb398f6ee8aef613a4afd13c17198687dcf9e3c19c5558cd5d1 -b2d1af2926d92d70501fbbe93d69107703de495fc6380551e26e15c82ae1e952c7eeecb2da4931e60f7e0201425c0b5c -83ebfefe37d59a34b2af8a550e4315c07bd9e8e8b69d5a56d7ea445260873e741e35ade4a9c8bdf91ff6c7dc62f1fe7a -8f0922c0f73333136b31d3ce8b941cc8315e646bb1910957ef98009b6bb4caacc6ffec3f27243f168230f76c5ceb9af8 -997d95de73ea163a236d81c195e685ae45f1de8ed1b32d5289dfcf0b48d4d9de5a09948bb34774c22aa89e310452b4e3 -a3132eb85ff3493fae216ff932bbf64c25456d922da5cf77212b4e2a6c06f57caf7e7f653817f3730279d5e927ab6022 -98064efd60b22bd6dc280091a70f70d7c52deb0b95d91ad7812abdc05d87dc46ec0b56b9fc9d9f6828e055cd07cc7d23 -8a523dba4df43d796e35a61c8ca09d41c8f86423bdfe4b38cd35702157de56b20d5fe521eb6b449d190f16d55e86974d -925c3b847ce02942cf18cf168734d4b5eefa50da063912599b4a6daf08b0cc0ae0356bdc9038eabbcf49c49f9e66ab8e -b028a4b2d938feeb45de0a788da0bf536e93605d0234d1888d5c95cae51def9ae5f3d5385a8e1bb2bd6cfe4e2bead56c -ae6da7af98b0bfb1b1f3c1e0e6bd9d6b2580e0e9d0ee38fc3ac8dc24380ec00cd5c2ba60e7630b2c257f534f3e03ce3a -9722ea65b6bae88ba8dff19752508d43897760e4dee834a3e5d0fab42da440988bf4a76eec95d9ff32b4818ef04edeb2 -a23d0f0b35d9b1987d164566fa2c32bb9eb3658add806f488c58798750b7c5d029f58bfebd79ff5280bd40f23c1be9dc -a914a088e4bacb1c9fa9132c674eb0fa76e2a3d9c0f34db86026672a5e2ac616a4e49c694585ae3137e381bcb0556756 -b7805c412077ddc3438a150f62afbaf7c970460c88f50ca72fcda3b186b52c33f0b20e2e84a88d988714c672c65ecc50 -93862bf0ccc1a066df78aa668f1a106a38cb63ca2fbbcb8dc36fb2734ef354554ff44048def81f663d040e343b14bd68 -abcf367336107f5a171ad9de26b012a82021f74e44846a7ed1c9cf6966c6fc4d36f3e3469b505c71427f66dfd7c529cd -93d08a06cef5c34cce8b3c8c67091d328e7abd9dd37d8fbdc37cdbd1ae268d7eafb8cdf727fac0ede2d786b56db2c945 -b20ad96af621943255a7b4da7066a3b276278a2a61225abf3be42f7b59fdb514d5383a7461c67596dd6df53540413a82 -afa34e15d5b485b1174e10ca95d69e4953cc5ec56934775be40fd8a75701a3b5d1c2ed53f8e428dd6a488a4907abaf77 -b83985e5ba6f76f4fd3bbda0b7e83f1a30364540163e7ddc021b633eb6d58422621f4d5ba5d86ad1d635780fc9570c48 -a0ab5bfcdbca4a3c8e15a2519fcdeb0f1871bedc80eb745a268d3a6095e9ef5e58ee5a5a304d44a121e7081bde3ca8a0 -8b71bd0dea1a2f12e7b3b51f68e7912079ca3708d0c2a8e882807bfdfe1b75830ec80c581a94593389d2c42c2a3f472e -8e15b91410750039668928732fb3a89505e86da53c95a5ec8813df06a581ba8e18e59ea4054179872f2cdf50f5d2b0f2 -883d78243c7786e88562fcfc9ee46dc471892996314f5effe85d9a584796ded166ef1110f2b60494ec90582da73fe3a4 -99904cebec134301892de562fdfe20e4b05776d78d2595ec229b47d5e07ade53a9051d389368e17b1c2592934cfdfd0e -964280d7097c3e8556abf5e6d2998a3bd73103a38b281e9203d23b12fb9b64508da5cb190827d935bd380082e722aa5d -8467dcfcbbed38bbb10a53b359a051deea6b4a06c9235085e6eac7a874237438183d181ed7f505af6225f76807e9996b -ae6abe0a4d86c17e7a7098674e768c4d38a7aaef6020721ea924ecf6eb0309aa1acbb669a4ec6d2793ccdcf46dd67fbe -976c523f68a94aecde41616ac316b333eb08d1dfbb3eaf3ae581b89cdefe0dddc7298cf881ad5dcd2aec1ac610b9de68 -8c5d91d6aead146e1c9610403b539125b9727c2a815c6357852e7f001887ece31a4b1bdc37f528cd2730520b6d52d3be -b47aab085b3be23b0a788cb639526c7b981d5edfc7afe6cd6df35065db0fca85923062bff2246ac4370d7f6581c0bc65 -a1a19f3d776b19d344ed69ed87fe40ee6745a5ead2a95acf865abcc0a887a0237d6319aa0edfd3d73edc08c15b86158e -b3ea4e3670b9e828cb55749defceaf8e77bf6d4c8a770a83d1a44811dbc681069a08713f456077b69e0ce52f31063386 -a94fe891d3321e7c0b348485948d02f14bc56073c81c9e4c4fa6dd536bcdf52f365c9510d7c6e41a32ecf3abb7caa92a -b197433b0649bd72f84eaa707cf1522243ead748f6c6d4909a3802c559fcba1414fe06382b61fa6dbf46ce1715a5f0d3 -a078ed708533b5be95862b654119876c190d203bc1a2e5b81ec039e62b572054547249e846000b8b2140943c4600b1cc -83bd134d6550229c626b5a900012d6311c7ecb7fccd60fe4f96d8ec4e14babfee80bb8cc329c199a8a87e015dfe02eed -8b457b0ad5b88d8524d3229d4be896f1cd8d8278de3686861ef0af91f27c8ea55f106dade616b364d1270cc24cec3ab8 -b9fb1653e0b80386024001a37504bdb7c474281ef8c1f047c293e15eb64b5f1d2f74a80a8e442c1156426d56b5f0bbca -8439065b415b06f792e126cef2221a29b6fe4d55af4aac745316de796adee1ccd4964c2570121086fc465c2dff2b3d21 -adce3b68c0649efc7b895aac0c22f5770aad2883628e71ec53b36dd0be4f3ed0edc8a60e1251785966cbd3987e65b03e -a46d19c2304f523586443a90070a3bba6a44fdf22d9a3f63320ac225caeac2ae389565d141c9a61610f6a28c68f24c55 -b245491cb5330184de7d0596d0800ae94bb2c27d4781c7e7f041d2609ac61ebd985f9453bf8c752893ac71efe5265ecb -a91106977c6aaa8774b9fb85315312e1e5fa47487052377cb4fc1c73e9fbde1745cd494a07ac587d7a26f55eca93393d -8b3454d96a6abbb9b650e010f42a3f276eeacf3108fd1d1f351968d667eeff0ead39d601ff501bcc4f9e02442cd7f885 -880d82ee5a00ce6f8e619ec1d2b7ddeb514debb85178d0326868f6b4858e312566ad106366f40fc7b0c9c89d93999295 -81df4a0c54e21e0ccb260daf05714bb155352986db76303d177f7f79a9064775ce8a6375ebe06032bcd978234b95cbf2 -afd0f51332ff145055a71f29ccb77aaee615b02258d2c73e3082a24f39caf6472d17f188650040e756b821be105158d8 -92bc592d88a9eded2f147eb9c05cf8a2156dcab1939a978fa7cd078f352816005ffcf0543bfd7827e4be66009337a2ea -b43b46e9c46ca90d9dd988cbf2a4a419c2b9fdd513da4b0a1b3edc95f83e4b1fbfaae29c54639a45b5586e99317fcd50 -b67ad98710f7f970214995afe267264767fd84c6b57459f64cbd6a01403f694b985d2ac5c8715a820b780275dc03d0a5 -92b1d870d1f0b5620784b40f1b04afbac4a492b8c39995b62d7469571cdcf12cdbdc018257864f62e226b76ce224ada3 -a35068ed28633e92d0cb277bbc6738c344d157362ce6861b37092ca170a89780009207addbdf97a6ee51424a47644fa5 -b1b2ca8769c4095d097634f7736ba7fbd0156f00840fad457ee1ed84271d13842bf75c9443eb86aa4b120751e22d5ac7 -8cf4342744ad0b7fbb380b3d6218495ee3c66f3a255660bad7975405ace5ad4663e321931c21f0c8a777d3f08295de1a -818dfcc79d7bbbe347e4fbfd567b4cbb7a9d7578faadd953e350c4851a05c8b3c6bb580edf13a37b9e56d32fe93a77a3 -8fc3d4f19c622dcb2d45a89a61e5b3b704bf13ee9c3cb9c5294971da13d4a9d897aa4ece68c2f9a71fecb2313cf6bfa8 -919cd2af2398bc4c52ecad6a0f50e92a17ea942a89ea78a711c2adadf200f7f3d5931d915cfa04f21cd9de8824a6ce15 -b0c902be67868929790e36293c4878ec213e01c8468a5a399c2980969418fff2f8a4b40cb56264d2f0d7b8ff58a82f7d -91f6eda8ae29bd47416a4d9041d2a96c9d3355ac88e6815ad2431c0b08dd379ddd2446b1259cfd0af500f3e50fe47675 -83bb510922f25def48734a22c7a6f1cee7582b328aa786447e10dec2967e119cf724d7ff936cbc5de7f4b2565783bd05 -8a6652aaf8c0a67a61b863bb84aeb00f0a89d905eb708e7797b68c07f7d7e431bbfe43286b1317e2d1d8cb14099462f1 -883ba22b1585e2baf7fc68289e57bb1e42021d5902b516d8a07622cb017a22b5df7238d9e0efa13f8b88e77018f268f5 -b74dd2861a513356c7aa2eaa12a39921767317f59f81daff17b3f35bb6a78c886857b31427f53ddbe27d5f3b13003795 -82b186fe0f341fbc551af3190cfce4be511153e120567be4d82e445b2311cf421616291675feb324f39dba4aa8b025f0 -92a63c8ea0156c88ccbc3a80f5c301109e20d4be941d98e45267022c47ea6257e114b660a2b9e6c698f46314f260e238 -b56a9284852547150dceccda1e5e4370c78b6f79fb47a348e3947e07043287e81860b274e4e99d25371a4afd965a0da1 -ad4c180eb60adacfd75629d645bbc1ba9cbf1617da36c64cfbf5066a964e9fa2dfc4e4a9a0e206296f560ef01a0819b0 -8aa05524780e6031a35e794bce4d66ce1f388364a064e999fb037a5cae86ffed82e0b743aa9fceca533e3aa191eeee21 -8343c52a931b1c1914d80fb5d9f995e68e00bd9ce3bf64e8d557541ceab02c482fb0ccdaa8e44f290dd15350a96ad6a3 -8e526e58cfeed1a7057de8221439c3436ebf089a22b84948bac3cf2be8717af6a7d164be42666957d820be9ff023c15a -8cd0a127dc55c4159bf5f57098756e01929393430745750767a024e084152cd9f366f1998f85ee290f0836c562ad28d4 -ad466a6ddf8778ea4853bd666bd321f40e727f49c85635e5f613747e3d8633f892a09558d830622f0a59cc68a6db62d2 -aa2200e6cc2eef1776da3920b98b5114380d1a59a5c822048ac4c85dccdcfca45643874ae3b5c0b582552dde2d938c83 -a38dbff9cff9611c6a8d10af8ce417048decbfa95b8bf95bc48c6e2adc4c3b73411f37a6bc87ffd4c75713431355de87 -ac35e566cc3a399f5f6659882bc6008dc023377df2743bdc3d7eed5b135ee590fd6ead0f53f67534a028a7e34a968eea -b266d00ed68f28ec4c1942dc93b355b78068af916d56ce7a10dc36112bb104c72f15564d139b53019952e4825b0adcf7 -b2f309b11b0e6fac3a7d13256f5e519087ec255d5a7dc3b3abc77dbac072adb293d0001f9b7de41291aeee627c12b146 -8cb234aea711919cc74523e1a7b2eb477190bf4f7ac4e2bb83c85c9c7410773f4c164cdc1c1c6dcf34df546ec4f67b3f -8165f4a17492ca163208f9fb93ce219fdc0935363bbe335f940de0159608a4115a2f7b264bebecbe5b227075a04d833c -96ccefa2c07d5006cba587f308a4d517d4303e9f68f9eb30a1edcf2cb3327023fcb3f7c23d11850fa7f404b70ba025b0 -aa10435bc7a8d6c13efc2931f8348351680ff4bf7552c98698739c28c1577fc13ef9d22e9a2b5dabb69dbee4113d98ed -b5000a583f4370e9f5de8d9307fdf1ad76f2b9d64706c65abab88afa2d5bc9f2ec5d4c5a5335c1d152ecfc347d82f5ca -a96af6ebf7500f826999777a3b82780283121b7fc2a50acf37924d6b1ca8d481233b475410a67f5c0493bf44d9267afe -8d9965f6ab952d978d3a798179d3590ae4ab213155964461d7469e0cce69d407967287ad2b990ad1127fcc401d7b7a63 -a727e2a86fdc7146442815fa81f860f3575e146417f2a1bf038d76cf1007f44efef97cb9ec39ec7da6bfe68d47a36fae -82d39e220a49ea0354aa2fdf269cd05a7de7b061e8c125996d14adb6bf51e307579890279d09f17f6101779ea0391429 -a1eab09c819ff5e07d5d2587244aa6eb2c7f8dde0cf40568bda3e100820405f626a1f165f655a81e8f39be49672c10a2 -9569f9a156d52c16cc8b83ba461deccab4280172a47625da4f8f300f1825ed8c59aa5d8e0b3b4e89708bc49af7a0d035 -a5236d9cb1fd8baac728e50b773857b25b8755a32f787da3d613d714f43d6ef76ab81f319d96d56e511a67827babe688 -a5762059420bdb2000a616e3ba44af116d759902555ff310fecba6490242e0f163bb35f47dae98677e9958077db73842 -b0c30003617d7e924503dd32ca876e90ebcdf726dbebc83944b798dc9f5c90d14953daffb3abc9422546971818fa699e -92db657e439c2efa905c9da0402d5af82a6d0aa65aed9e6b14f562cca24e93eddabde1e7f8dbad848c20dffb7005446e -92a600652083717eb58b208e82337e4d61e4e60c5ed2d21162930813a8dcb5b8bd919941eca0f8fd2c47c00c5b978b1d -b3826c1fde0583f919fb843d5cdf762d533687ce9b7fa5e7921b90b77a68fc9e04f3dbf3e4d2715bff1a2b17578900c7 -87386819db62e1b6d01410d8017bea98a1bd86a2f39b121bfe283ca2707b70cc4534fb114bf5902e3389e6d29fc831b2 -83e619d305c16d7d323ad2ab81dcb9e380e7e7a666f9e71a8310a9e8cf4d1b8ba003217f63aec6d83993f5d20d79aa47 -981b9d7bc517b3f72b7062bf75fdaf21f8ccf43fcc99d4dd5e33f984083ad06cf24425dfc70fdc449965abb3ce3de077 -8dffded967eaec03637e8328d8a67b1b2eb56f73bd370abffbadfcaf2747fcba0b24d61524d637ad4fb43c2b9b92036e -af0fa75f2b7d5a4ff9c4f32b8b9b8135899050d65fd5c69c13e6e78766164f01b6b0561954e3a9cf43b518005757e52c -84ca5c316157bb87ef1c5afa2a02cf3926da6a556fbb9a1ef7eb833770e8d94f7fc4ebc444b0b8eba9f5853da2c9b601 -805b0e7f6d64e384ff4d98e5495edc0fec4563cf9d117637dcad83a922b5eaabeb4f7b6ad441f9faaf96da8b2c0459c9 -a70c17690aacd71a82903f4b43a0866c37904e07313ef53c1d852e2362e223640f58d6d1fd6a752055c96530017a0313 -b387c51615101c21374cb6b85f109b88a7680ca0eec078d2ce2d8d3bf7b132df3e69e6f8164ea46905d4da6eeda24bf4 -b3ef1d01aba050ce9d365349aa250ce5713e0d928e64af737a70b0249bd81e38c8f34ef42c82ff4f79b535492c444251 -96579ef6391485b67ba39f57b4505fc3381f27fcafaa06d49b70bbea0a104e58c3b418c8390545ce176c463d796cde2c -8fa8961e5ab9f9ef0bf7b51de8815892f3068d8240e7b2c89b0f6e791c8820a80f450302001131a22c194dec326f07eb -b71ea51408c504f2731553a4f6e043712a97c2d754d3ffdac46f9a953bbe36c77d6d418c8304e8f6d961bdedbd1e2656 -918830ace4bef09da87807a1f4d0614379b49bb39ba888ede12c2c2dad47d8d5c376b1767c7ab60108c2d9fac8b537f6 -88b7850fcebcff11fccdbb739a470745da8e1251efe83c19785ced5f1b7eab422f4c8b949f1351f5dc4d58f7052edaf7 -8a63966c63a8907e101d00ca7fe5ed93989e7c4c1cd56e87d130ed62cd978cb2502311c9f9eae6f75e45779f63394206 -87ea261d93066a309a98a0335757057f7e7ff6eb45307982a3fa77f6a49a0125ca31fffbafb58e1767a5a7ed29afb028 -b3988758fc9a3ce524c408e74c2913e1250abeed4080b1dee3d43fca52043958f95ea96b95a285e3afc85a416b6d6c68 -8904ba0c408f2b2e2b8668056e2b9d6036fb472b5e2bfa23360a83164a5d8ae84bd9bea680f11c8c1b1a0f81366bf0d0 -9509780bebed875a6d6446de7200dffb6e31fa8a782585ffdd97f483d05ca055d4decc447b02d19d39e8e46719ac7f31 -8144639f8652aa4cd4c4f96debc1bff902767698d3529e8e606ab512db8b7a38d280f10e1d40e961f4bbc776cb04d706 -87200003b51cee3ce9b372e0596b8334bbd528f3eec8d0f7a7de3a113393c0893a7056b562194b794a57e650e04305bd -9368b04a6ac6a007307ac321346eaf445cfa65e9334695d299925d55287181a5f643675fcb4c329a4b0a52d2aa47edeb -8f9ad49465ecff41a9cadec62f150e70b65b75200223e3d12dbb27161104a09a58fc145defc4f57eac3f47ac9adf7dc3 -8295ed7e0a04a72f1382b2f7c7609bc763eca1c368c2270d072953ce3efb801af77eb3736fb5c526dc9aa46c3a6f302c -aa2443b1ae5b124e978eb865595a5fdfe7090119f418ae9c552f4fe84014966c2d4d3728acba0b950ef8bf69d9d4d3c8 -8a56d85d1041b9ac7023ec757ae6bdf7182db0a9013add26cbe9259db8f0ea831ee00d633d56ad5c0f5ddd7b44db4b6b -af1369cf9baf662fbcafaff6fd2dce2f0e25bf7032334972151f229386bb32741671b15e7288c57e46d597d6d4951962 -a599a85f665a0aca18b0c9ff7dbe974a41e0f59990a4da3f3f74a309e4d329c50ecabb108e2e7179ada76649d5d676e9 -8198bdc97492cd9ca1a730942fbce18ca26353f46eee756cb40b298bde0c645e469b90029b575c821b7ac01cd44ef7c9 -93f7ebe4bdf207abfb68a27f5218245eb03cdf932d04643c3ffd5cd5272ac37b8a1cab231f36eee006b1da8ae130f4e0 -99c5ed92cac6811b7cc15907802fa4c32cbdb42ef8becfdd29c4c3bfa44f230f561e6d014476d0eb8d21c475911003c8 -b94d580b5249ecedf59b9a03cca2f2c21ad0e17a51aab836bd9e9736ed132c5b23ba852c4e6d89071cf29c337f2d2582 -9052df4de5c289925823a8556c2cea87b44513f92bec8522017cc7526d009349192de50e7cd0c4ec18cfe9eeefee488c -88a1c90116f86184e4e989eb24af6af34631aaab1e28d2974401d560d925329a8fe49062b6701b28b448776247d86365 -8ab6bb41977b58ae41ff642fc341f72574e0a8907af395627fe41cb728e37aee77dbeaee7bbd0659c0c5370fa953a64f -b8b422e1e70ec4dd8fb1d79ec1381b4f9134710af3b2fc1fbb3c60913b0468d7caa98230ddd3e7bd61900ec4523e28b9 -952dcf9db231ea2abd5e4056bdeb906151f948a8f2cb977df1ffd3f62268279ac9212bd5c5b94ea7fbfe163572204090 -984cd3f20f84e0f9a58e406f983b46aefdc8b1bfa1854705c2fbd84593843c6e8c9945510660d204d93685293d0bb2ea -b249f5566f3ecc2982548e406acc0e773717d9e6032103c31df3d800a47bf64afddb5f8786d0137e76e5851ac665468f -8fe558cc8845e89f8d2f9d8e27151a78ea8ad452206db55dc94b29ff07dc9c4a60fc786c483c6d708712db9bff70e257 -af53896b4273a489323adc7e9c5b2f94f2aef6e2c8662c29071a5b1a5ae47e9a335820fb2664990d569fb59dbe98266a -a766f2fb21609313dfebb79f54874210210e27efa32d128ee5753ba22805c770cd27cca8e182d9bc64faff61ef4f0b3a -a5384375dda01f18bb57c73650127dd0c1a0c82f91cea436a9c670ea0ecbd6b47a6d10c0fe41dc12ddb0aed33ef95ff4 -95db3403ced35412a8e572d3b99ee09642cff5be67adc35ee881e8850ac4180b215e3404e7ad6fb18612c0e071dd7eec -aa84fe00ba4c2d0421a998c24f63c050c37aa0540445041254d93800f3ab50c337a1b4cd41286f1da2eca1b7816feea5 -982d1fffe81b87f73314cc273982a70abc4fab3baddf7bb0197bfd10172f6cc6d54bc9987314e1dd6b061c911311090a -ac7bfbc96d9588cab489c60c19a57db26d7bc7767f552842edca4ee40a7da544254ba309018617c73f57955f96eb2299 -917fc2d92973b0e73df5bdb9e1cacfc9bdb8daf608f63902f75ff880e256d75ff1edbf825eb3d1fca8704320ab9da75d -a98bed8cb3864dd54aa62f65918a17dab8e5ab0026891e7c2ec9cb6fd68bb17ef8745212e61d30b77a9786042a427c4e -8d574b4475ed6296fc82d05648c9f2bdb5ef925e423be513d5803f1d1ec6023274cd81a4221379bfe7d2eae79b7fe858 -a97a36e618bbe6bc1b2d320e78eac988d60c7315e780b449219a41c489029e8f76a9879dc2d3a28f80c521d70a159102 -921d1a332809f23c61d65041644b12589ba73a9ad5d4a8a73fb70d821608f1994cf6ce2c8f11075986711e6cad573ce1 -a3c20a0692e76787db3ef150b5fd98eb7c88cb161ecbb47323063d57f676821245a060a935f51f0fba15a59f1ef82c02 -8204b8a2d4abb6a6f60f2e1b86a91252b23b451202bd816b67b1a9b2546aa2149457ee101f2832d7c043d390763e6041 -920c56ebeddf8ea9dc437f580b1225547b5e3655d742f2868b08b82e70c095af9e070fd377e9cefbad4691e0a2a0b500 -ad36d7f526e2f59170cd4c4ee3ea2d4924ae5e1006d6891e52c09aa5941829ea4f59f93e47ddc4bd68c754d638b0ac88 -a8fb38042f73237564772eba8f89d91d924273c2e523660e7b5537bcafcb8075b403b06d656525460166bd69bc3eac5a -86a2b6d2b204917c424d7e4087657e6d7c66f198458ce992765575495e76097095aa73d3363a1a97d39f2c1856e96ab7 -84feb5070b803e14d96497b698059e564d458e6e1b8887ff5516e66f6fc92d50b52334b0a320c5126599cfa4d603043b -b2d57b0301ac57bf4917880f28faafadbc48f4aec7b82968f71286b355e386a05edcb0d5b02f99019d84e69d8bc910df -afaed8ef4324ccb2e348c84d8297f74ffdfd63990e02129d2a60accac883087febab71fc3697c4dd341723858ab8a8fe -af0126a72d2dc043a4b911452ef880adb86014f06384fa39b6a80340bc306dcd2671094bc4bb2372dce47e0a99ded473 -a669556ae9496e374feb1b6f496390d351514f858e47d1cfccd7ebf7c5c188953923c926d4bbd49dbaa646bc3d267ae1 -8fef55cbe88d8cbefcbb1bc71b9bbcd982c921c95876be0cf4e0cf8537ffaea562bf77daeac96c40a159ab69ac78a58d -8c052737bd9fd14625b32b5fe8661e2dc02b7db6d79a4d5cbe335977e3c32274af3445b46d1c65ca3783cfcc762fc375 -934d85dd78ca99b4ec77c0c5fba884aa12ff30fcbd0717692e705983a769f8d53637f497fcf413eccb438ddfd259bb79 -a29aaf139e57ef0323aefaf3ac836deb9a0aa8e464ad36d5c18ff282a42008843a90725995e95175e3042880a3df3b0a -8d1e5bba5c29a7e5d4103ddc3816ebe31f7a7f3735ec273dd437892bf452d818c4fdd89cd713600a25da6e63df154408 -ab42e2f489a595edbe62214929c78e4b61357e214d02ecaba9c5d650d2fee2cf6afe47d4fe6289ffb4d2e136fa4deb6f -958fd7aec907f3c11fe5b1e6df7dbff555e2d270f04c0bfc834da6042dab3880a336fcf7fd81cbc6c3476887c1298ffe -955c9009376d0b04eeaac2fc0b73d766ad36acf60ff06b738b7982d0c692f7775b33c1c36db6eb39fc72f0840df5d4ab -a20de145c323ed6143a40cb76ef1df39d460b5347f4e102620fa8f990c97bfd1b86474e390b1416d685e11cbd900bf6e -b5e8fe2034a7f70b884d99c57ded7eaaeb3241bb5a4b261ded0e320f5938fc568ec4d19f3d57f67a713265a8e0d375b6 -a780cbaa9a0e3ce85e9710fbcfcd3139586ac9c01e882234b6fad98954ec19f65a96b5849b742a8fb7bb061585ce378b -935831fc78c44018eb4982df4ca3eb902c5122f090db3ff1135422ebb0fa1d576ec6b74c867f2d9c40a6617cbadbb780 -b99271ea8cf8fdfca12034e909f1644ceae383f10b5c5af348cdb3f0839f5f5446f61bd31327e7a67d3d89544959e4f8 -a2bfae7db7fc3d8227104cec70c1c64a08bcbc3f8193f920393676c987a2e718471dea1013a11eb8c04ee866577f520f -805d10e056a8d7a6ac431741faffb18398c6f7eb59350dc80a6248afb435858d4f5365c82161fb93370acfef3d4f2692 -8e8efd8db5b869e30c35a2dd1e5cb9adcee10f595bd20039ee7ba9a6585908245a02302b49ad558892222b7d95fca9e9 -8c1719cf37ef916ad51035977c3614457dec6a449ed1b3dc99fa86a2a7beb6af54af806817fdd0c31a9a01ede4fc918f -a8c4f4fe4fe76160aab7c0c5bc158a5909018561529bea4cbbbd0d76b2d9b9a5686cf33808a06b49a112f4ab0946bc7a -8e6a529ee5cf317cc8dcc87d1207a3bc0ac3d65bcab385ada17d563cfa7ddb5fc4944534f2302367d420e2a957e5b238 -8a6649ea4ee194381c5186e714994c4f4c23533c135dd3074f9ddd7475122993b0f26e240f17a1db1980d5b2d01ad8e1 -af60c1343c84ddd86ebc201ba9b60145bfedd9ac6d714313e79e4927485ab7c0aaaa92de1e9e5bc3670c56ad14e2319d -ab64357387f4fa634b66912c87e7db0e855b8a5d4bf3b14a9c1561a9fee4b9fb9a7b8e78577ad6a9a987453510d598d3 -8eaff9c063ff7cb0da79f06d483c99d896bd0b8fe70b19ae4d300fc9f310a2565bfcbd6355aef87c47db4f11dcce2847 -ab20c9febd36b7ca0650d4f5ad026277b082e63275de2799525f9d50e168dbfcfd2ad42d29b032e09c068276dc8515d3 -b63769f7cf181ae3eb833b958b93bbd1b79fc9300939f347c666723876b7f0abd279a07e66b888af632e8d07f440107f -a3f129b5ed839a8a8e17612b0e2d2dc9a58d3847fdb0aa36e1589e830502744ec041dff4e4346a02e9cd0d6e55cc59d3 -95be94138fa99a68ff8fba01d38a4047cefedab262dd8b6fa28705511386ae58ca2b09394dae9db1034f9fd31f2a432b -83f55a55c09d102d88f232ae5571188ef083c02039f2ddaa21d94b88e2bab04ac8fe6385caaec6bcd733fffb6c1f3164 -aad5d87989ac51d910d5058dfe46493314f308e3b1b7a5bac181cfadb7c217b12ba2ae14c53425107aba089d0929b296 -923f69083b00daba5c59342600975672be13e562ea74c5eda87f06c12ad62a0272ef1c7f4ac19d0f1fe4f8623d94ec12 -b45fabadb7b5b93fcb8e9c8761134dd8bb720847caf8ffc5008d2ae0939678fb99cfaf28b8fce3b109d46c09e7214e37 -92d406b997492a2281f9c85f86f5a4c9ca37c9afbba91d27b8a0dff9e84420b0292533cdc5420b4f07332edcf312c4cf -8913462447189c164df3d1d48d7d350e947b2056a029702c29d7e7450d4255932b27ec429f54a4bf0a1770024725fc7d -b263c4e00a3f6cdc27df5f3ef8cafddd07b60341361a96ed9a3991693d9ed9f6b22217ad72f0dfc4eafd31c8cac230d0 -a17aa8cc8fecb4e45f015548ee17fa663ab2b498adf4850f5c4bff1781fcae354fa5407a76e418162c48794a591083a6 -8b8746ea3c88bf033ee6fdd618e23f671569156d8515d135c5493efdc3d2c9abad7aac3cbf181101bb11aef7b325901c -ae858cbcf1ac49503a3cccdddf57f00f90bb791b5e498ac619554b106ac53e44ceb9a4f8cdb74234b7617a40223bed55 -a89c76244bd9d3e46dcc2b91478cbf1d8f33ae104552fd8369ef073fd907728e79a505852091959f924941258ded15c8 -b67ef5be4e3576ccab40cfabe5ad28a6e258f3d9fab2f9affa31937c14df05d3d02a283d2fa151b9899fdeb64b326c17 -8a8e9ab29bcedabb3460f16e0ed295a92dabfd5dd5f7720ed5f0bda7bdcee9a9c4c5a06a66f81bc56962d41298158377 -b6ecb80bd1a5565bae594e51c223e18ca6ca8a519c2ebc7042c39d490fdc11ea251e07fb02da7d0506e9df84b34c78ba -b27473ecb416eda4fc9f93f0b7712a98a1264949cbb2ddb09b94fdaa7bfb56a5ef0cb0574e72e06696bc3d2978d8f535 -abbd03bc64328592ca7c6e8d6f805a3725502a433bed08f5b47fb91f1973d0b16090450222036961c9e365763ec1f939 -a4eb17a82c7195ac79c4826118d04ba7bb37c5fd0e0f3f9ebc23eade15dac61ce989ff25bd12aeefca58ca617681e68c -9134763d02167001dd1956ff2ef21a711b370491cf016cc6c25c3ca37ff507468bf355bd69aae847f17ffb3693466855 -8596c2c515cd9c138f2188a7838d9602e42878d464de2426d856affc474a22fbacc56633b9b8e82ec3ce93c9f1fe605b -83e65e4d4a42ce9fe739d248e74d0b89e73826a6234351a13142426e459526aea645ea4ac3e46c24c1eb5f5a6d8986c1 -897e1c24cbd3797ffc593b5488bde97e8dcb9e8dd6f665fd0cc8b22c2729755866ff9cd700d194e2a6a6e3aa428af299 -8bc9fb3392aab49bced7485fec5109fdcebd58feeb8d460cb63690fb5bff9f2641ca7ef373fb9f0a0f6f5a30d28defea -af9c73b869aecd8c7e1df934358cfd9f5c70601b6aa7bc4d828a15beb1c9d8cabd232999c196afd746500c566f53c4c4 -986ec1f953c3b13a03c63096fbf9e0c8ebd405bcb9176c69c9aa27c183e4147c798a2f00624fb00d7d1e267c8d595c04 -b09cd330ac3efd624598262507f9f19b790dbe615a6fa8e9a7383b899d2d87289019c0f7297fd20dcdac455d475d3dc7 -a934c732ba4e5597cc5f81792e209526c53d29083cbdfc1684d06a014a65711a6c7f37e2d64ff6891387f9e4c1e13214 -b06350f5d544b83b903fa614ecc1ee7db32c70c1702b89bf0c8c403f191e867ae0908e0402a48a28577d3a338582795c -b9243ca5194102b7c74aff9550574a37ce6ec95e154acbeb006173eb39197daa986a84a94aecaaedb453885891c3025f -b8732bb9cdf0849ff258b9ac610f294db2d75f3f383751d873f0eb3386a51e083994dc24efc1e176f6c0ed7637f994d1 -8e8302e19f7a44c3d136a13472f84c738baefe58f84f9d96bc389034988407b6a0a0688441672ef6bad09ac16cd2c33e -88d5cd05025d9e2d4e1f9f5e1b9e415daf69df033fb69f88737d1ff5097eb45c61a000fd7de4afeeeb6c4ae57277df77 -b5cb2c6a8f85976eac2f9b12d4b4634de56a38df5d772475b13d74bc18b0ab71ede5ac06483601ed6398c7e90dd9526f -a5dd5abd05fe92d65f9ea2780be6d3fcb14cf3d8ea8728b367a50741cf61c6952f6e1ad8cf5c2aa66fcf25a6f72cdfdc -8e540b6717e55c01eea1f70af2de7752b395c05b671986a63c1cebb52662a83720e63d8ec7e2879076ac759f225f7690 -b5699d669639600760f5adae013c1fd731b642fc95cf7b60ffbed9562b191547b445df29bd7095f8871334a14d39f116 -b812314b92e3d1902abc43a69b5f6aface3a3cd065637591c16e4721f3bdef2ce3f149251f06cb38b85dffd4044c0353 -99507fb69c705b92441ece2c5b661163522a10be231185e04247f24e134bfb189a3ed06ee655f064f3fc8c71dd99cd14 -b3fca1730c8ae1ae575d8ec75dbbcacbfd1460b6dfb15ad42b87044670d259be103b5386ff1bd828e4ab1b93480d1f90 -a9bb4e1c86098269a2110405f90eec8c1d084e13975f49aeb7e6751b0d118731207f7db74737396278b71c2947d20386 -9137aaf24aaf2804beb7b957e3a0135157831c99e2ed6a663052306122f7e412b6a2e1f2d20ecbaa35004b833885621a -a15586cb10f7db03f62d490ca33a417bba67e8b1f6031d4f6f7682db845b6200100aef072f247d399755f6d2f3eeb343 -82ccce2b29766b33f4ffbfe7c9705730f353091de994e36fbecdf1554bdf2fd2f656f30a1cf18305f63ea68f0c599fe5 -b0657dd5e228d6119a3d3ad9f5bf10c795957d064558ada78786f1789dada0cc1d3d1669e2269506ac7b290e13056ac0 -adc025943a687ad0dedcdb6bc696fe1f31e2b2e6ae1165c4a7b769b4042268cf2cd6c82c3a2546df4040e00872213f33 -b03b901d47294f7c35a0f3edfea4abad2419a01a3c024fa6f327c89bf7c10b67a3924b9eff74908d9d90883dd429be9c -895b433223f053da8275563ebe7cd6f299272d2f74e4af5fdb4b3fe76ee2939978fd5421ceb49c17acfe33af01e048db -b71e3b52d17e166023387c7efc6ba385e1d96950da6817f5c2f84288ffde1d3269d727db49fc80b4bc877621a444b1e9 -a89f01343f22ed143a4323127a0d10ae6e34ae1b6119c77268a018d4f1ab99da69aeb71b9978733686f0ec14115b3b80 -b76e79f595d0071b92d783298188dbe95210cc2f0e278d03773bb8a8618598bb9260080435d9cc6898f7d4484531cb78 -a7b1f26e04aba6eefc00d6f1b98bcc36d4b6aa712298aade84859d89fcf1fa90ce250cd573b500251a99bb039db041d9 -80d960d224d1b9cd377bcb5b0cb5f5b5e728c79323a2043cbcaca4c00c3ee4cdea4b910a39b75c976f6f71ddf48602cc -85e6bce985d85da33135c0174fa60024a2a33188c2a9d143c3838cd2c4d1aad5ea7a6e07443ff78c33e2a530d3e64f59 -b5ebd5c29b65239275af29ec51159a37f1e5b1efe6815905b822318b11c9bce2ee99429f2df8f5c36612cac58dc81c86 -86c1cae998c7c2c8a8aaad02702a2fede242c6dfad003e778031c432e54905c12d865f3ab4ccce31d46f2442ab97e8a9 -b95640d418d1230af5d3ca60b5cf2bd2de84a8586730deb329b9cddeeec8c9a9728fd238fcbfc156f473aedc8d139500 -83c794cd2b0cadd4b0058daffa0dd2b14286a8fd5b83f290ef4b22c2c830e848fe167414e169105cb4320c6ae6efd3d0 -ad03b494f56db17bdc79caf82160c94ee9eaf1686cb08325116ea267f6e4b1db3e6c3481226c6dc1d58f3b17a435cfdb -93538fb55d0ff17f4e3f06d9a44de86f0907537d8e2391790fe6403b25dabe475977a2fed14f8473fe1e7ecdac1da64b -a1c22cf0e4b365a298d8e5f4621bbec7e2a5ce7346681c7a8cd14f4e828f72be229334aa20c6a3f52d91065f34d14dbd -8711803102df64483b231b0deb3c92d69905f1fee288e9ca449bbf3f12b08c544c464b44d82d72a3a9daa04b7a8ca6dd -95843b78c5bea2de702922933ffbe117ddb96c4bfb3d9f90299a3c8a6b5aabd62985b0107f568abbd5b930bad36d34ce -b55774deef197b6ee82d822d7f3ffc8eaf4827d48a4d2ddc5de9acbf008dafdb31cf2d8e078b1248d5c8ef89308021b1 -af245d8555ae94e7e73371889234f52b0121b27fec354b0ad3745c84979c402d475efe8362629265109712a1e5c46c45 -b2911311fad929b4ee5edee39bdde8bc75c5d8a93ca7c364bd8b16c249c9692aad6ce0094982c5dd8e1a75b8cf065140 -921b0e0a07360e9818c5f7f2a5dbd8126f668642c76bb2bd4422ee598e5aee3783e793aa35e5394727fd8c7bc64c01c0 -8bdbcca62f1d8838df205ce1acb47562e0663d3dfa9cc8d6c627b548ac8c14aca2dae7a940dfcf86665c9c5618e0a214 -99199000ed7ed4bd5c3f1c5735549fdb15c235a72934aff81f07ad766b046e4fe839196e9aeb8dd2c3dc478e1551d918 -88359df71b006c18bb321911741a65dc057732d1ea2a5d0c916c341c923b5ee9a7634fcb0135b5f2ec09c231b8e674d7 -a16ec880727920cc910908f8956bb3506d2952e4baca9358ccc1591dc9b787596b95f5d4d9bd5bf6bd25eba8644ba127 -922e1ae936f4aa654ee3ce11440b953b0955dfa308973e6c0c77b580920bfa09b32c1fc6d06a633cb106d3c84bada228 -adbbff33f6d91c8584aa6710c24ac53dc3c1d860938332504ef211dd47c8eb38a4c55c785831932dc81e9d6422715930 -aa9bdab448347eec58c4403fc99abe30e07df67348fc676fe513ab380a80f61f1fcc93c2e6415966f574323d14d11ea8 -8817991c03a91112ea6712a050615d9a13796c930cbfbcbbdb56dc7cc35cb67a507f5a52eeb2262be3755be89bb6e56d -a5df4be4aa15a9cd263d07b9c02a5293063a20c4f8f694c201cfdd528c83548b788dc01c90128dbd37821da8e2563b01 -83eeb934f51fe508d4155e6722b7070c4a1f9b68420023d961029dc5d5b120e77ab77837276f19115dad87a118feada2 -8e3ca52f2f5123e55d486cec5376f06bb3f6cc2a35238fd3f4a069c01ad1bb4dd85f5597b6f0f22a29f7c3fb4d178104 -91e820db15a4a112642780f86210aa7269fbd856087c013a6ec5eeb3389caa9182bf7783e1f35e357d7cad12ab982035 -8e8c3cfb5cd8149c702b3c9370688b72783c4922392ea025ce4ca76b34cc269f67de6fb2936edd55ea1533ba6c6ed8ea -94b8709d7101af225ed26049e4fdfd5b6b01ee03defc3e175506cf1c95e2c76b05eacbd19f3bc21cc602b9f3d4f5275b -a750655fb03723564ac969c24804253510065e4082b0686310d86b023e5f97f4717bf5d673b7908d78093f0791f91fe4 -b76e7955ef3ed7a7c3b81d7701bf4061a648cabf20c3b3aa53b4d5a63810b5fec4dc63f7ffdeca697712bf96469a78a0 -913093a722bc94e4327d0058191c591f81c0339fb2f53d2244e3bbf2f43ce3b4e4f03dd12077492446a90c532ef67a01 -a20b34e0c26b6f4b1c9a659616a8f1ea432b3a7584de048173a936f14c90a3ba8e16e07570875b3be7a7019af56c0287 -aa1950cc2bb99423dc2fd189880818eb5967ae555bae303aa6dcc4a77e7bc3d1e1084a6a5b00f0479a6fff9b18ad974e -8807237a1257f953f72d37c540ee26aaa25c77e1f241cbe77b2efed37deeb220b12267f538f27ffac612f9873185147c -a34eacee19eba80a88ff1ee65ddff9580053b4f2ad3c57d803449fae50e6871bb358bbef99915cefbdbda7c7aec8857f -9772dce7cc392c1289fa9c44c7cc86e00fa502fcd4e53436dc8ad289db6183ec97071a65ee3b2012955f3a8e4ec8755c -b1c179fc317dc59aa5ce0d70e998bc5edeba80877ea571e7627ca71bf957441a94bcfa10a18d03d865d7dd30ea66b5a3 -b850d81819fdad3760240a9a1c7081ceb8993ed85a31ca3e592b126c20d567c0ab54a3aafb97ba876bcbe0f86aa8c986 -a2812e48e11a2764507f8cd41d93587f7bf1d0b3ec0f92c7b8df7d203b48e17cbce0f2fae2e04239d8c2b6efcaee9e14 -b06fb5c88cd531031c61aaba9dd9557db91ace895f148f53bd5202ffbd0abfa6ec3ca89ec0cbaa7925e0a1876d2dd1c2 -9064829a280736a170eab0e097654ebd52aba383b457f1a34851ec75d5f11d328cca59f1ce62d95d7cfc27dee607a40b -a90d9df142c02db2628099d0c2a53965526e9160e6dc6830fe4c4d853cb87119e23734f4262d058feb77651097ec8e9b -91ddb64930a2622e496b7eed0028442fa17dcdd69bb0c1633fada47c3d5838bc60fde3e655c3333dcd2b371e3478deae -b1069e98023843ef534232d09bb61cb2c839b29bfb6a4043bcc79ed36a75cd646e7f35f4599117b67169af63ec0b4c07 -9206340ade81d80f83a9ba8e57417b7ff7eb6834ed2736bb4d466e8b92a7ef487922165b3a44ff9f895c65ecc48c01e0 -990738833a0d95a8b506362422a967c5189d987b1c3494814aa41c852fd818e3ff1f1b8dfb0c48b4c67b52830fc2f104 -952c3f4770a13bea8d07d1988aac2c56e14612b55cd4e8b9b4a511f4fa94d2baa455afb71b8a84768128d39e70d9e59c -880ea03ee556cb4fdd70c04ce130b72f5dae8eedfa9215091c14014cd8c4c5b13f788748e786b8859458d949248976da -91116bc6c2ec6c9c53d432171ae1a8f9a8e39712a3c4e2c7b0ccdcaf515753be512e6e0916c82b9dcd286ebc10429ec4 -a98ffab9313c9139c9f372848e311e8983fabe5a2bdfa06ce891a381932ca94b260c917d3dbcd80a651214ef24cba353 -ab96357390995637ffa22a767183e3d2c386f5f7ec01d9fb8eef7d56176f4c1e025789b483224d5b982942c680b009f9 -a0d098d3dd8e93771f272359f00cc2c4a312728c99899788be35a2d194c607f2ec1b6d02883a9c83d338eca5dca8589e -8befe9775c49b8a7f11946ae0e649ea26cd97e74ba747a2a4954accab52c3547fb877e71b25f26a9ff3767aa19dbf151 -864c4d2f7758ea7e98f82795d56a89cf4e24effc0977fc4cad63d89a5f8941eb95003153c6d978adf820efa8515efe3d -910aff75111ee754b24cccfb37e9dea001346b099373fd30bb1370af7d2b4689e29ee0929b5d8beedc19d5e94b977952 -aa758f745dd998b9070a14e5d689353323f3d258f71b44f8a78b9d6e5e79be393b9d173d75a73c47d7e6ce6ddd786528 -975c8777759c48e60f53a9b8b2f151a5d36183aba236994c9278e5d09357774ea7b2dabf202def60d50b42e07931baa0 -86149eadfbba6619521f5cd30689db2feea32ca0a969dec7b3498f2559c9e158efea2677117de62595d2a219b676b217 -a19eb4c238272754ff1a0469a8f4df11d47246e430755d469e80127b4dac5974ba4c4f03cf494712ee0f55213704951e -94ec7c279c656e3598acf763d4a56a15c3685e3a37eb415593a450a9d8d77f8f4579188f113d8391b9f0b7b270523d75 -933201b432733ad60953b02495b0d240c06ce6c4a34a89e4e9d9c97e001f66d9e2b507d546f0041a5d81572ebc3d257e -ad8c6c40075f31904d5c633b058bbafe4387aebbff22d37d8045c546cd423305051fd0817c196e38e3da0c76920afa03 -82f6463d68dab6e86c5a82a24f91b5dcf534bb90cea762af9d97a45d490e51897c383e61108238d844599c481b37b8dd -a3399d11e1dd7c0e723331d2de7058b85a2c97164de806d3cb51ea113115800b3f74e755da2c90cb9a16b0a42c851ca3 -83c09f540e6d18425af7587c198e7e44b0cd56c27544afa50c829262d1de5be2785f9c115b42ccf8275b8eaf96070a71 -8a0611e2aa7623c51e76448084657af6b76498cfe237694b477dff5ebd3a1f055132853a26fcf91f3ef9a20616100e31 -a0ef39bb2fd548694c3eda6af19aa70b4ea8db68ac9c9291abb6339a5a9893824e266c3d5aab6198b37e4e3f4136fd87 -a16169f3e71379933ad737a89926e329afa1f15df309a09b539211c45a3b21fc5b93b504a1cd4b86829739a045320d73 -8e1afa218a8e29f9673342b8c2a717ded674d3d98c768918216377b723c9f1e95019304960912fc507811a8419fc9ed6 -aeb9f7ac89d3ba31be6bf5d6c469913324f7a670aceaeb8a7ccb726efb278bf14ccda9e0d5d486727ebcc533cc627df1 -953cfbdc6da3fc61c510d0d22100253ab876b8ae955ec7cbd920b79be621c4a889a83616dc3ac102f05daebde1ca7092 -98f179b3020bc6d12eb1671d539775a79cedd35455c51cbf0f1e1fdd23809f0dbfbb1c4d320378512e3158f0e0e7b17c -a2927c5ff70648d765d7c22d2c0cd146561f5bee36cd7136232dc0228e09a659aae45077dbecae09c57f3a791cefe96e -8e1529599a03078e154736fb9a6d895508e0e54e3827147066f1348374b0ea0d81ccda5339957ffae77f0757fa8f6ee4 -b2b1fea6d2bb4130290bf027986d7bde69e69ea3a33b25a9a90331d9352e4a03353065a57699d64de856f6445ff05003 -891bc04a15932fd7dfeb73b2e3a4101dc0e4566d13aa8923d5214204baa27628da89a05812fa9dea666af4b613599bb0 -b9af7ebcc7c0103cfa857fbad0f90e2176f6a59b00eb66ddcf5cce69918ee6c01d4bd41abca6c5c77e581ebb86185298 -8b8bd576b0df1413d1f2782393acbabbc377b351edd86bd0b0365d12e9838f775693d9a6908478fa7b2ba05be85f10f9 -a020e51161e3edf9b39f1adf8b17db01842cd32a719f777700733cbd6fce25a1b9de42d2dc749e5fe37821ac98654869 -b201acb0906ed7417c344bdbc704f7bc33df29572b1c908efb2b9a5e0acf5e684167f434bc785ee67d4e30cc0ba85151 -82f0e6c085d1a346945cf8b688e9ab16526d6edec42ba90378ae278d1b622b80cf273f54dd4978cf2dbd2923f92d7157 -b91595fd25166fcdb1341a55466e4c2e5537de1a57b8fd45f6a04b3574f46aaef44b991329ab15030776ee2b7bb1d488 -919b0439befe8a2cf8a5ad897e088a5886163dba78a6026ab257b4b968309cdeb30dd39b3054f0222faea566ea081a40 -8096fc93e7128017ae42b2dbba0cda82f457fbca6d88f94d297c9576ca5a53c6148b26b5689aca218649b9e7137a05ee -83d3892d32364e25ce75d458989da570796bb0dd4af9c95760f3f28c673a44e099b50321d7bba04e5a6e8ffd41e85eab -a042a6b84bb0df37ef0b281f89398f611b3042fd7bfe5cd264ea59c38cffc836bfa8e6658dd9a08bc0a77ab6438a7e91 -b0afc50462a35bdb463a520cf7f5e27ade9ab1fffaafcb6083fb3bda64f9909b15b274d3b6140a2f4d13fb9196713efc -86d8df9259018681a6a64ebf623c1926b6686d5f982c6a322d9e1213183680fb38ade15780b50aaa3010e9f44241d82f -a44ef545202b37bd4bc021d999be64bf3b0b06792658e41f2c115f0c5ce1607fb0b7c0dbf4f050aea2737982bf97a4bc -aecf43545ad7a0327fd07e2789879e90616a5fa23152e8fa865dde90a4ed5f5d65c3f1401782c624a9d1c0531923e4d3 -a186914d26698cfe54c105ed621d0b9d523e44dc3d9353964aed0a62e64aab735fc710ddf8581a398de08089fe71c7d6 -937e4bc999774fa6f6e56d68fc2fe878f1fd4149f4be478b67b2c8b659827dc23e962bd0c2089532243e4b4e5a65fe9b -a764420dd2f8435a5163f88778083f3956c7dbedaf428a9ddce70aa81f99c2988a5d7996fded783a91ed2eeb437df4c8 -b3006b89a8ec4ab96c1b066f1687a794a9a8a617886b64bee094787161ae50ade927f32582f7a438359f4f390c83fce4 -93146b1416425560e8fb830d3b1f603f56a3decc40af54420da40c4c9552c4c909f365f509fbdb228de1a39a9f52840d -a96391d9c8b46b210e61ff1852ed1c4ba5ef8a9445e159c8f0970c391da0aeadbe54d205609e9d55c5a36c1c50e08d34 -981b4f63467bfb617a3a38baa8a6b7a9dbd51ad13e0aad3c07ffbd8694d7e4f4bfae410d28252b7499e48e63e2a3e9a9 -910f003ae3aaf0e2385c17b194e44ca031e276a7614ff0e9401583ab43c627c7651153712f4f10c006d2ea4764d4c5bb -afdc08a43dbeae1ccd04e036e4cb0b4fedb13c977d49bbfccc9634e91d35dfce6d55ef8817cfc4e79467508c07a43ff6 -b210cb18e0d53153ec48882ce6b137947bbaee9f9c23ff56195cfe5b730937b6df139c72591748b2c9f17b7ff62f385a -a2ab3c9063bd56391b396876c39b074000bf32495f50cd67d710b86ec20e1eeeb04e92c9f39a29268e41e7a6cee1f479 -aac31b3f0e6c58242a7c5460b69a5b88b63b288c32bb8505674a40003e4af5ee2df8a6ec62fe77a4693fd4a6695cd80c -96e057d57dbc656a6cf38f4c25b3ff2404d890178d5cad0d0e9690276daa315a08f39302bc1a7e1be00f4343dc342f98 -85fc4c65024367063287e29fc7c8ee78c30a8690b1752978a2045dfb3bf6dd06e30ef2d3da31c9d7dc513c29b10bb115 -a1d649c5068d844e6c86a288cbdccb02bbeefb7cf42d3dda78fd04cb1cd01f437bc965f583523e6d20aaa555741f2502 -b0ce53379fb618355069938894a7e213d78cd408df37cec32a9d3fa1109cd06d57472f0a994beb1c063f3ac849e24246 -85634a2199109c28fcf02c84e209d9a08f80d8e6ac195f11a55162b0ffa05a59b834ce1a8ffcecc11d3ed023ec5df1a8 -98538ebaa0e1546f2e004144eeb1013e91737d965ce9ac5e14eaea2253998cd6276c19619f4380537a36faeb0162b8cb -971010911df12dba25f944d0d856adf7232d571896a025994114e3bb1d9dea08eabc8100d78abc07d115209e0897f3dc -aa4ae66c2d5c995551ed563116d54eee55be4e1ff2b4769a33a974128b2032211fb1d7709413ab60c38562ef35c71c2b -8ea33a37ed4ad34854f5d2d4c4c57e38b3723503ed68618b343302cef8ea571957988ec1357859491b8f6cf58dc080de -9957ab2dbbb892f642c0461da51d977f91a0f07a587db513fc7a1e039582fc7edbb2b322db8708b736e5c99ffa08075a -97f129c42e0c452db662f5ecf4aea09ae63bffa38db84fcadeb8f0889b1b5a6cd763735c0925dca71be44f6d1dcdbb5e -93c27d8a21ef4227f631a73a0f10053f73b7340081307d9ceaabbc85c5e97dfb1abf9c7ee1ebfa61865adee22a69da3e -ac8a8716b0fb65f75afa51e8184588c30da56455d7df00f0350cf173bf8f1eda8c96d0f3ce487bec5ccb8ba35f3f8ce0 -b6136d65875e9f9f2b2d21d1238a43905890ef03d438d98c15042ddfab5f8d4f0c7ed74791b3064a496cbbd09cae3d78 -8213d11129a6d1027cb5db26340c495cf97882383a1aba46b863ad7bc978fc64701b0fd9ed0a1bb69770bfc57c6b2156 -b146dbf3e10d3a1197e2cb49b7e5c9f3af6f72c1d470b9cce5300831db808506d859531aaea07e7b2199d872f9a3a402 -aee752221ca94e9dce1c30d58c405f9ac2e6a9588076e8b2ba0dfce58386d3f0aa7d762edc52857e805e3271d870cf53 -a5449b57845ab0260672ca878175aa838e6f10f6a72aeb9105d5ccec0300eb00c95efefb4512047d522ed6beca42ae15 -97ffafe9adfd84f16a3f8d7eca0e896a6285b5e1928a84e8ccba3fb307c1cfc2db0212cd9f7afc167437440be82678cb -b7cfdeda43677807dc8ab2b29e5a02792e58f303bb198a17da6b8868c341132649cf3560cb614e9a1a834cd4bd571ed7 -b598659737b0898c2c343082aca4a8b94ab9d9c5d780372f414d20d457a03cb91e582bb36313125c303e721856c2b239 -8adabbe7365b7a4841ea815647e7b02d42d2ee2b608f14745e80dbecd3bb1a57bd25ea5a98711a8b8ebfaa9e1033ea2d -9968778f94b8142c609d5dbf1a46302fb562402232d3527f6534ce7563e0d8f1350ade4a79441f48aa41c0724d8f787d -8410e5e80ef25a0d562f6704f9767611edf081aaa0f110e71bdb3bd4ea89de03ad36de7452d6e398a336bc1446b5464a -80cadd17472f05ef5d0f05a54645488b1382b218f561e1c0aa3c66b024db3f3677456fb2213fbfda47aefd413e6baec9 -ad00410ae25ee613a213950f7183286f0b92731d32bb990d64cd8c46f6327ab5b1a53966cff8ace636509bf50e05028c -a58df09fc821b03114c7cf3c319bc1fd9576425849eab490301f1225155e0dfb7a27a4b220e99f48ebc9e7bb33e0b0e2 -a63c419428f753f9a62775392bae96bee4ff6c88a526dcebd949efb4c9df208af2353c1d9eb10df767e904b323380152 -b159b7b7885964005dfb3d0d3820433fadee814276db20ed0828438beca34090b7b7c19d7f78e9e3a840229abc189022 -8c1864ab1427ed50341897f6ef4c716ded5f53926611c44d26117f4bd4628b86166d0ae4a5006e4e7fdf907595e267a2 -b324a257d3c6605d8aefa84466a892ec72753a33193b7f927d705948e0ded31cba394f970a7413ffac2d6ff72ae8adb0 -b852d056d9e01198b8f970f6daad14124618f2a542d2197a915bc8b5c16668c610fb61d6b9a7bad81e29ef30afba600d -959a513814ef445564f1dcf82078c17f4c90a90a7d25fb6d3b0b06ec345e29b3cf7913c2bbd8106c25d3b44d9bb6eff3 -a135ea86382b0fffc1feb0b627ab41a56d0a59183ee8c2e15bbf41101c1e40ca9e42e954a5a3326e5e2fee204735ee11 -a4fbb86f370efc93b1ebdea3ef625fbec6c25b8675c85531c70b1e1f9549ed633e6b108c43b901ecdcc94c289d153eb3 -9289c067662b7729be68282dd21ff6ee715dab73dffc630ec3c31d35d83d1a2104c92d47445d0d11b4181442cf213d44 -96cb7544412f438802eaf4e70d77d5b627b91a02f136cdc2c3674152ce5af5852806f3280048dce364fb88eae3a8483b -b7c2dc77fde2c94dd07f16d731369eef12a35a4546b3c7f98bb8b32ae88d0c2779927754121787a72c6a4da40f253de5 -a942801627fc3b26a0d4d9cb6a48f4a5d35b26ed9314ffc6cb5be5fdd680857f0ebad809571e0631f4f512c786611193 -8359a72eb61fe327172dd53433f5e19018a12e8c7cec6c1938ed44abb194c2339ff94399df94c2cd1758ff9c92d9cfb3 -9707da6f81de22cf5db457eece8f1d35daf4acd769f507cd0e4ea8d057cad3c4969c469ca928bfe2651ca49ce24ed016 -8caa1d0f49f9535d351ae4db7f64d2dd1d6484c43faad3c00857e05d74919ab0f2ccc9bdb526556718cf9160329f78c3 -8a32813e72e587412a7050825a0acb0551f89bc61caa6c2ce6056bc9744e0d7ee124df18f6029a2f9f41aa902472a8d3 -aadeec65d10ddcdc7647e378ad5f2b9bf46bcd4196ff12834a4b23627b0a13765da0dc0f84c8dc84fe2612cd18a88ca2 -a4c97e2fc7ec2777ff74af1b255287b108cd9047b75ae7a10560f14fc3a5e8b001156a6d6797b2314a436244069b43eb -aa474d3cf633e1d521998b2b34d3d3f8c5d5db7faa78fc37c970680a27c3463d85c2f01826717d5def3558fd37cfb7cd -b9493ffb799ec6af7b31492bc5e392e7eb89adf7f98910aeee0ebc32c00b8e31b1a77391901857e62fe5d0c10a73899f -944b68b2e1256af1d99998dada385863152a6558cd7a63cd9230997dedb434419545dc3833d99508cefe0c04b0296c1d -a6cc5c80ad89a05881ec09a5ab6ccbb49a7523afb9c85a08dd090377149cc056ec0c63d3373ffb3f13a15f4abc020542 -8c6f0dcff087ac53693e48008255bd4329ec2da6130cd55c622d63d8b3ef19f207aafed8c9d7b11c7d60b3b87664e6fd -aac51c05cc67466b386698fede62d436b79849a5710522cb7c2f41f54d36e39e2c9101fab7e454482f3ae263ea8be4a1 -90f19c9d81a9b099821210b58e59bc0e892bc92fac306e54962689fd7accb91de705743b0aa5ef3ab1b6942f0dc12bf3 -94d5fa9465cf93ef86e3cbc87342bb5d8c157c723b7748fc61d003bb415705b7599bacdcdae05dd391db188134ef14c2 -95804e19059342f8e9b2cc8857b027e35b7e289400541a85c5a2e796f6076b6378e2cea6fae7e8f29377ac0c69a77caf -a0ba78959ad3a5cca7b214bd9bc817075d71c7f699d982648378776a3ce71fcfbf1062b04a8b4e16077d6940992154d5 -8c24699416cd41b2e906fd9fb8517185c7977b86e6a49395e2af4a6d25fa82f86ab1039ae4fec37f4a52b63804203b80 -a28b00ec3ab90abcbbb692c29ecf6ceeab09551847a1b4725a0ea3102e19dda5a99b64fbe5853664a6064109e212254b -b5c3fab27875ddccbb4f93a500c9a6b3c634417e365cae99bff165a2d544c9cd6a6ff55e042fe2bd54ccdf4ce8306228 -ae0ef8516d8c4dc1514de3da39cfb5b3f3d2afe77e9381389bd9adb07c9eca587b48dd370893cf1a6bcb8c094ab8989a -acd9a0b0b7aef79bff1532764162d13e08a0c34dc55a246e16ac47986877789c9061a68d30ef1a4946cc7608b79cf8c8 -8146a47ba4998bd4a4562ffeb9dcc85686916c67be2c4b4f8d561db51679005b9a47bc4ac7a472e6ab89d7e8ec2d479d -8aa98ac804b0e71d7d3de780047fad561ac3ac5350282462625f3bd24ecd1ba0317b218d5086cff206c38ea39b30543e -86129cc240a9c8f3597129b6dd817e5db183a8a38d63264e9ecedf4e0900f31eee17b3a6cd593480efcec9b6d3c4d553 -b038c48f9dd315fb05bacd3023ef24471311c595ebe6a5fb57c4d6206445ed18dfe45649cdbe263d73080efd41110695 -b3976527178c76c4c222297da0835669207c15646e1d0d24cfe6bda6a001f5c248011e0509ef2b616e16249a5c9c3f47 -95b205cb1ede704760707aea034cf9d19b26b273c8aa690241b8a461254b05fdb1fff688796b157a929ec0dfdbf9d610 -9762fa37cc6b1cc7f7fc23d97a17458aacde74b1f3792bf9e425a380dfaab970393fcddad7241bab10fa4292a70bfb0b -a05276c63cfbfe5defbdb4ba5006a87a97959d80a3dbbe8fcf40c71e6e5f03ed85678e6894ee01f0f0bcc52dbe3eeee1 -9530ea93f98ab49ac8c284480a562d62682277e2fcfe7016ae643067cc0196380194780a0c2c03731186a9d229aaa45f -93c03104f921fe6d41b370c5ffafd25bcf952bb7de2722aee7b7a1d28de02f6a326e508d4b2bdac330705e638a906d19 -a2f3061f5531b684e2b539eacd2faf2395fa28e270e55db7036c02e41f8bd244c579b7746cb36daf96f30758d46946d0 -b97fa4565f5f67febb9b60dbcc3e8047f7f0ed963f4f4b1b8095a6932bdb31d1eb47bca6ccec4bdfec115f3df1258857 -95c1f51a5f5cbc6637f628100897e384a814fc1606377879c7df06d54edec53bee10b80bfb18f679465b9f2613c3b117 -846b81e8089df8d288e0795a719dfaf307c659d53cc09102e30876368ed7d818264cad21460b38641e09441dabe42914 -aae382dc2ebb20bf89d44ef010d76a7212f5374a4fbc5caf394ca972fee54322d726c696b86d4e6b9f16a158c9065384 -899255fc47db3f1e2694d2f300b14e765b4595224deb9527033fd16f25ffafd3f21a023113fb848a0f96931b6ef31b77 -aa3ac7fd484eedf34ee9c48d4dcc1f5b658c54afa3697d573b2162d4b0a2529cf1139a1ec5c00bba27f2b344fb0d191f -b66c43f81a1be23e806be5bbb4332d9448b8dbf507755bc0be2c86737a4bc62ee9a55cecef677b22300e7e00257068ad -8d1bb37d004040f6843523dafc1b8bb7f8856dcb160c65631799708e5668003215954bc44eabb1aefc06f951ecdcbb40 -93a29e38574573be2f68b3cc2f683c3b7ea7bc58ecc58f4ced0d2bf908a47edc48cdbc84293fc468f1dec76a6ffa9919 -92a468d7f6ac9f14ec6a0bfff01888a40ca197ac817958a14bb38c403dc05d31252137d46950b0b9f242aea0ceb7a184 -b6b708061c43b0b28ab94cd0c9ebc33adb9205f5c0aa84d1367c4e5a4ccfdcbbcbe731aca830cef25feeb744e52775ef -931c274184f3d5b61f23c5f7644694b956eb79edd238e6991c13c986838ae1049fc7b695c4d4ec2aac42799f7d59ad6b -abaae09b111f9d85213fdfa953a8f7c15988a3b21f7a71264f323e39a91db4d9ec836d4b27ee84d1d8a267c570e06af4 -98a145c11bf6e0c98810b8983dead947ec765b3bd7f9e245637933372dc1ab0cb24441bce3f18c25f70bbc91d3f1555e -a94ac8a11eb64bcb8185c1aaded79996e59395b5d130e57c12a946b3f0a9c06e2f583ea0ab98b38d944349e30bb393c0 -83facbac681dd218160be5721b7f70b6e0abc6963a721278f5f8f11816ea8848de2a12726031404f1bd3b0d93c7610bf -ad7fc2b78179621f502029d229cc936039360fd541c760339d4f6690644b39c36f39c435c45ecd7b4c683b45b5de8d5b -a93e6b114299c348a530c0adf04e3180de8c18bb04589b3fdd358dfdc118884c9554091815a01114a81011d9e8b9165a -880a5b941e6e7d213f0912c4e2800227ffe3c1c5db141b6357ef422ab8e55ef2c4de9a7acd6c88cdd9057e9b700b62ce -a79a25b8e8a2b6075c536822981d9bf95e71b60749a53fc7a40f309b92034a5a8a5aeb0e6e2f03e8e24f47d765fc27c6 -97e5e6a5b56d728e8cfa6eb048b74be6de7d1505a6e4354964c5f27aaecd8329b5d5150e26025d5e1542c613bf77a472 -a58bfcbb8bbf0bf556c0993936beab3a874b10ec56d25ab52a02b80ca4586d30d7f62990157244f326ad6de05c95dbbb -b5e13af56257d4e4b77480dfd738a498a2a78e1dc12cee786d60100a0d4c0adbdebf2cecd2ddae56b0a3c143c3b48c9e -88ce83c216b7f0a74dcc614f56ed9670eaa4052e8081124360cda319158e496b47edaaa8de28ad1d3e3887206f8c9fa9 -8c821c9d0f339837f9ad2136dee0e1385a078fda212375f2f79a56988f64e523bbce59cffc48834418cc37ddeef16e9e -9249c78a361432d967e51746d2e892a71925ad205ed71b93911a27a3a1135431bb424ef0d6d1ec961547489b0e45bbe5 -994c0205a2c192053b676486091fa49f6385fd404d106ea0949a6d7b074b79bf974647b3fa9bbb29eef106b12d004310 -a15c25bdbe3d8da65874337dcecc8178c35cdbfbc9d9c6b80851bd97690fd2dc2df8012f671abf2f3d0a7c80dbbf853e -8bf4a209ac8e7d639eb8aae0d22511a39d9427e8418198a34f59782dd9f6afbe8540c8a9485f121e8dbea8f654f3bfb0 -b455d43fd5dde19a3cd73b6f9b3f832f0f7995bee3cba01b0357209f4cfb0eedade3d3306815da4109d05850bb40acde -912e13fd316f16b882fcef2f00cf043eb86045ab456118f7c3621a5414c281fae951b44c417fb733c43e146416fa54fe -b9e6af5922ddba6584b56c5e3cbcf695aede93271a8a26c200026d9941c564dd27b38843597ec3924a81e6d209be5a82 -893e4d8ff12064c627128e0d33c499fdd6d884b41175e8dc5eea7a52ddff50c902b899eea64b549926a8478666aa8b23 -a07b337448f014805412c1f55516792eee49614f22b5b7fe7018742a6a389d496611f327a3cad1503c3eb3f416edf869 -a26760e5302364559671560026b6d4f26e3703238d4369dfa73536776bacabca0cb264a5806c0394c0c10b783ffc3f56 -88a0af353d6566b8ef5f32e2a5066feb9b9b942380aa557833371a24852e96a4983e03ad51e13ea4940e0eb4c75c7664 -8600082fa012be340643577af0417ee29ba540e23a1aff0f3568a0adc1a854e742ce1051b3d5da779066ddcffdc65d06 -88bd1dddb613991b9ccc3be5f96f79ded6c1e09ea96512b6ed17b18dac73facae88cdf0d17da01e7cfd5c38da3d06355 -aecae22f713b2792bc9351ca2ab301b28fc578c2c1ce6ad39800385e95ab275d0c1486cf5af08a54e15f17641ce60f0e -afd04d76335c81e86ab9a08b1a6719fa5cea4d0f090f4c678fe96e09e7d38ae26766521dd20eff3c7290e9fbbec1f081 -8404e03d13266d3d331c7aeef8f905d04041abe496027b9f9dfa1e3c55c43dac78634fc5c860bee8a9ac856e10224694 -98195b3fc94e03ab66eef7325c36acaaaf3f0a28a2440cc891939e04281b2951e4b1316d7f82842e2001fed444cd880d -ad672c6f852f812486cd8601472e36aaf66d5a873b0843c2f93e40865fe017ef710c48d286e188e127aba780dff24b75 -a3b9fffc17035d7d3a66cbea5c5014992078df6a437eb8d4235cacf6ba24041b918f4b61e6d285e278483c45206d1485 -aedfd94a7ab12c5c7fa25ef458fb227bf6cac8848a4873961e8fba90b1bf7b9b6e688c1217517e5ea08eaf39da43418d -830837da3ff93282d6dfbb02ace35fb57771919b49b6bc51b32b3e7e41f2761cee29dd6861d106a6e7de24879f58674e -aaed884ca90cae6dfd11408858f75b6b37db8085e221a278e7cea53a22928d6d01d43b7f98e9e5d0701df4639d28ec4c -9981805cd99ac373b92f5bb4a0cfbce7f07298f8a5632014863f7a071c68494b5e637b7e150732c375aca06be3d79895 -b6b6bbca3f8833c02274f182cc9e53cf72755f7913b5354413cf16be5c09dfb308f1f045371284f467b7a40e0f36560d -a7f0338a290d682cb2cf5b891df35642ea8f9befe1d229cad22a16c2735fdfd3f3c26ddafed41c7ed876b0cf54612ceb -b038d6d7b5336bd9cf957951366f73d484bf1da3a6da1148484474f3a7f7e74ac7235ac63b7d9d1011a90ecea402ce00 -b43cdd53092f4195fa6a70a713c9096c8ac5102302f2a7ccae6afb933a579485e5fd6c947f979143e896a8d0a264b1cb -8d3310f5e2e8546b57c69bd9bd012ce0a33cf6e80ee5c4b258a41e32db360b0487c88cf62e256dc5f6e9f41c0631d750 -92d4960d2f5cf834e24988f3ddc9380bda961de7d8c40a4f0684242a64e0ddc3ceec4feaaf097b7f99012fca57e74615 -b60ae72c7ef431db21c81b0ac9ca57a664fb257ba449191c92dbb88eb53b0100f0bffaa99bd44a4d84b7fe1730a7a5f4 -86b1ed40457e02b80c93120c8f17525cb4315c68c176fc3eb56e9e26d26c1c25eb3a24df2b6e93f1675e0f47f44f6a86 -a65d03f81d71530c768dae364f64a79b4f7ef33a9e03bbbd3f2c486c3813824a3d3c3953aca21e66fe0cb4552f2665e8 -8553f75b09a1d294367a16456287ee7c8d8bae29af9f9594a14658236db8acbb363bbb9275cac3d934619d95a83f38bb -96f916427a025dded34a24fd49f49730725cc4fe6f27bec379b3e4f0b18556881badd4e588dab9a29ec4011f7ef7edb0 -856608c27413af9ea3297aeac5921781216904c76896906c746d07598fa258e7c561ceed240a0fe6eec5f0d6cfa9ecd5 -b03f150ea87f48e8ba533d448fefa5119515e6d47afc25d2928077680d562d6294e1cb501d0a428112ceebc42f0ffbce -96e9be02b6fe585294b0f0e126b21ba2327b8e74095d1eb0dd8ebfb280758b07c43e1b1127f7dbf88af380f85846a983 -b866d4860775053c82c4c6fca8c0d5689bd673df26b30e528bb8406b0b871d97a7e950e90f2d95a95cf546bcb80fb6f0 -921e4409abbae325425d2e67b9fe9617ad4b00710e49f704485a3ec947bb7282b6ffad4a303e0110ecf46076852e929a -a52e51329c2995cf47c87ffe47560ad3b5222d19bde8747a9fb056e77f74f869cb4c23f3fa4b21e9de5a61ecb6c52432 -85599c31338482e3f8216b1ea1664ddae5b15977efa0d8227cb58342e88b26581975d9b1cea91c98d4a86d22558fc78e -b880e82d301ca15a01bebceaa7f54bcca3cd0fc92558d1b942dcc174a85ae8a1577c5e0feee963e41636fe372174e938 -b50ef1235b1283b490b6bfad836dd8cee72b86054f14ce46cd76b89c97f191f040fc4091af9c1bdad53a132bf751f7e6 -a8475ed4ba2f51f9041f71049b7fefa216c984494398656b58f317905736cce2091e4df7dbb3515d0ca72aa8ea749338 -95c4c4005cfdcf2778b8b27dedc17aada395eb80bece2d4fc8db43654f827d621e539d048e50373e9ce14a60180b7269 -99df65189d38997ebc4e6e2dd5075511f735058397a33d252539a0afe517623b7910295a8742682a2cdf4e21f603986a -8fb5fa37b512b9b02182065abe7f2c74ffc1a487c78f225c6bb82da4e3f245a8b62b652a7e64a0f52edb30927046b6ab -b242b2bf09d8c46a1955a121453893d455bb80e4dd648b5e87415a5df79a19b4094c55b813a5b1a488802e31d26982bb -addbd7c3a9621e2c506b7a172cf2625bf52b3af988fc24f2ecf47753dbe1173d95b86bbf4824c247675f57bab328e9e9 -ae95b055a1a249d19a3f080ce5cbc7065f3d009ebdeed03362db903d1e5138371a1564a9afbfcb51b620807d0e8f192f -8bfb763dcec00c041492d5a5e57f9c7442115201984f353aff71a08fce2ae242189cb098e43fb642e808b8761fa517d2 -b07b768339a8876887e920e5dc5e30a20fb24afa35b51269e154f5e75e93bfb334c6720f3ab143cfaa064221cacc1384 -9938f3d9d5a1da8c84dbad8e464e32dae0cecc232687d78b0984cd2b332ca7e41c6d5eade73ad9b95f0d9d076c8fecbd -959553e80a715ad90f4c83dee5bb1cd12b408b7baeb190df58e341e51b74018265dd2344602c74b57a747a75269f3e88 -a443ccc6b4112469ac4fec7af54ed637a719c1b0e0639742589f7a6309555d4674154f6d26839b76e90e9f82bee7c79a -8eed45cc7a9f3a0b2744488558c9abcc7a7e67a01784d4023cfc893ab88f443d355e4aee29c784d7195639ea7286a738 -996a81c4702567f42a957fe79e1db9f057b8d6a68ab4bd6b797c8f7319901919772dbfed7c0eaa9e717bbca61ce3aad9 -97829a09c35c566e6ba2b56d41ed069e6bdb48fed06dda7b8904306baf347d74467a65bc9505c9ff0ce2a1b1eb93ecc3 -94611efe2d155dbdf898312b53c51eeb30564e2608c3dd128e7ababfff92d5ebcdd8d8f3b6f57048cccc8da7d203c505 -ab83c9c8ec3db031b825af7c62fccf8a48a8a8746267ac7ff0c3cef0076e405b6ceeb459219d970239e76149bdb22278 -a5d8293e8bc13f832f1c277fb8534bb351f2e647f0558e0832850b74c35e101e5068752a9685770948d9203a68ddbfcd -93e1535575cba89e954312e9cd70339c61800b6d5627552749fffd4a77bdbffbcf4841944b4e9b38cf17400647434657 -8cf070ae2e71bfd843f9a13f5eb668e2dea943122e5c5d8c52db9d42e257f84e3b02cc22eef3f29d847f89c8051c8811 -a7351f0c76b8b678aff461c1fc78e8a55d20634da44b73d68a00feeabce0cb145149ccb8261f0269e3b5a43c93532dbf -9962048d16182ce28334b5c1c7b7a906dc54a739aa8a6e46878044f4293bac672904bec2292a288601cfb8b77db8390a -80dd3875dda5a0e8b747d431f5be4f181858c88a347b14cda91fecb508c6fabd6844adbe5d24fb0884c23a6af3f2e968 -8a6a9b3f7f99c4178e8eddd369a760beebf04fae990ddc8f0c2addcfe958b3318328f2d44e92515d8fd9c5b7cdc3a8b2 -ae316364802ed4a156e4107795896db8cbf1321d5d0af5ffe0d0a4805910e36429d9d01610211e7d9c716b4efb1b68b3 -9393c2bb0ea1855edc3b844e55291f3212b09b868bdc37cd7689f0d7e92c7473937af7ac16d6516141ca1dc17ccc7150 -ac909d1394e7d3b373feed325873310f29dd8f46c911595c2e8325e90ab8ec52672d921c447e69ec2d9bd000bc41cecb -80e58b3c07b9d8388a7bab67b77a68c7d1dd95f48b53f85a1366e2ff1b1d09ace885a80f49d686aa2d9dc6fc3579a700 -899bb130c5bc3703b0484a2aade21f4ad9099c482935b664d3db70eca3650b445e454578415622b01f8adb53403a06ff -b449d6a5c20e1c36a35bd909854e336cb097e2382d048f332e21aad5954c50d105dfe7d4a28fec14f1edb263f2e2c25e -b45b4ff01047afc7c64bcdb9ecf6a27201803c4ccc16ef36fcf3df02af5b447f7e36d7e150f847a5c767902028cd121d -855f8c1046329430595bd7a6e2612f1b5000ed5a8904a4ae924b132a3916626394dd150c383dedbb22e4475787c13e8a -8259182fcb8075805661c68773b5772781c45a1b406dbe3291c364e99336c89cbdf1a35b4e5cd742e0c09330967c79fb -8513b09f6cca871ccb53e0087352a015fe23dc66b1cb7985336510754d30e25c555e0a0883c04d3d8f977d1b14f8380c -98f6ef6f5267147ad71aeabda4ceb2a010b998ffde238cf461a4081cfe2f94b174c65a5b99f5bb12685a21f6d40e5d1d -97def96137d35335fa3f8b3f0925c6f785644123385bff82c67320810e6bc3116d23788b7e7682d28cadcd7ebe9391b7 -908424f845cf4bb30f048dfb8d77429eece0dbb1f8114b812f835c0fc297c7743385f2d9c389b132abd8b799abb906b3 -9342c5de2b22e2ff330073e79491dbbb8e0721f7f78e2c4d26b15e7a038a3c83356d170f0545996ebc28fb4090415369 -94583de96cc41a83c572d66fc2c91c62fb2ecb727de8d3af460fdc6ee3d8bdf6db92eeee454d0f0911256455b3527e2b -8923c81cfcb0b3826db821aa3ab3ca367b5ab75a14a73d98083d88d3c6c6f080b62c2376a18da975bdaf00ca3e3bf6ba -8d2fcde9fe511d5c030ad76bdbe60147053382003d76ad0e823f88bcc3a9c0c2dae49d8456c285c4782dc6cd6945493a -aedbd6629aa8732a94e860328ebf043ab713f36ac8055609e49ba250bc1a41f55f429788a3992c88a6769c1c37e45fb4 -8a692621506a50e26210b593712ab8cf40cfd79daf197d6130d603da70e2c89983221bd43113cb54471f500ea3b298e7 -8716022f429247192d04b007b4bfc6a35caf49a613641037143ce2dafe7b5a4930c0cf698c216b761b15ce63f4f4e4f1 -afd66da5617b07f6e14dd039019b28fb5aff8f14b4c0af5babf485d9e9ea77f3fdbabcfead1068c0415de93c99f7f69b -973cd042b5b7d6d8d5f1654555efc16d77d6e3a9a4e3a80e782db6bb297e4269df882d59c73d8ece5001d93baaa28745 -b0fd22c75caac1eebb54d621e12a437d3f50370ffccba5e90fd65a934f7c14eeaefb9d2c2af8c105d9757cbabc52d65d -adf8fe8f0daf405a5cdb26e4d99b10a9b4bbd1e7b8344dfed8ec89a0b452e1168eb12cd587606f3a0179f899305ff35e -b66c5014864c1e2fac3b1a03d37584c270989d770a31c43f30c5c64e887069390006ddbe4f3d6096917fadfff0a82bca -ad799ec175eae28694da6be84bf96b58ff464576b0b4dfa041ed43e18cb920dacaa8c2d6641d3ace5d80c01b0a885270 -b9c196d7d8095a4220d7ffa859ff843a19f0590a69ec1c7226f4132217770c122a3015454df562229d1cfb06bfbe75f8 -a88ec2554ad628af62c2301aebd842b1b613aef59deebb699ebce014ce49dc2136ad78d61fe3a5bddb52c1a37758564e -a7d13ed42552238853ad75a56b0b4ac1eeaad35227e8f54e345948edf497cafe3aa67bf5734f508e3a34ea1f84a2d619 -8b315c5e62fe691c1104fc38f0792499c2131f6ec94000902edf0888537f26b8be3d9d20cea29300459594505b457b73 -952d39d655d22005c2c0d06bcb30bc7d9fb4b074c0bd67b361b83d34987923a86575c7d3bd7e727e1d5bb3b030989769 -8469a8fafe8c5634999f674fa5b35e1de52dce5075f6c4b2a88417618fa3e82f1216220a836c343540c3f82c3d8a27ce -a0016f13768043458aec744bf7b052358f8a9efc0f26ddeec4bd8ddad09b40b7848c38b401e2bd67a353189b635fca74 -a7c9cd785192e32ef4fba350130af2dd577d6552c4365b9b7b30eb69dae48d68bc2ebd75ce6b80641d8f64420a1353eb -89d22056f344b22441579fa70614fe3f90c53e444a68ba31a330238b7080410bb587f4461fe78661eebcd972b8c91c4f -84c38a5e852387235b9805cf547ede71d7ca65827189a1ef25a83d9d6e2520e416e0afc28d91436a0a234f1e7efb99f1 -b1c170741d0fcd59b9d534a95e1a5d61106c1a2b671b16cb231de933c03f9b398fa9a5eae3b78b10043e3cf5183164ee -96388535c09dc84a1cfc90f22f8491419ab3dbb69889999bf939852acb34af2c30c3dc067cadd372440da2469a7fc749 -ab1211da4e11830484b271a9accf219cb49ee4c35a67ad61b33bcbe1d91b37c72e8632667e32c6769b1ef1d642313d39 -b86b69f64c4e5b603279e7804413e0f9787144a8e3f0cbf3c62e8622131450b4258f72e43bb220fc5d5b857455b0c450 -89693d9a04166a2b9aabec99d6962a5867f9e71ba732463d01ddd36ac3faf1351d8da0d0d836f285999f75dff5e79429 -8f2e0e97ba00f8482ab677190649b41a32109f0391d0433b89b3e73910d66e0d34c33cc4244c0a3b8282c1e1ff4e46c2 -a0c695498081bd255bc21d2c99c4dd9f466dd2fbf93c07abec13ad3dfaac697c8e87fcadad51f8d7e1649b16133b7206 -8254985bf2d0e9f662aaa58fe902cd594fca1c4a0b6c1614bfe621741ba17fa87d55cc5eb0118b2b3e36ec41534d1e4b -a3f674b4b6eb28a397b0768f3e442eced9ebc77f6b940d4fcf0c61410c77838c024d4c911521f11a0267e3c281f83876 -8d0fbc99adcf95044966448efa4c2e0a17f6799943662476d1877894562f3457a235b6ba0d34bd690125611fd1db881d -b8815547debbde07b3106143a37f3eeb9bf823065e107dbac9c94083376da22e8db6e29d3c3bd51d64d1e2ebd8f2833c -909001246abd7fb0dbde3d1e9410eccca09dd2c8d401bd9891f403c9b52c175008e052b2574493ed7a22299a737a7bc7 -8177f4a7276eb901c52afcee285ea905f1d6d01c1d4da2e9162e268897c020d81fe462d978e27ab42009467e918fbae9 -887128a316b4d253884786e62286a75a6aafb87ffe5e14cd44151bf5fd2aa93cc103ea46ff248225546eb124b0fdc618 -95aabc433f0233b5e45afa8d9adef84778393b3b366ade8e703f63e540105626926aff14c48ca896ba3cdb99b92e4113 -8c6d6b33017d87e15206ba8ddabffbf8610b5f05484137fd79ef98e77937465f85072eb5e079118a0f92c7ca996a38fe -b2a573683d47be62501a33fd228cb38cae0e26e66fdcf4716a97bab823fe39342172c163b21fa6566bf140ee6c60d898 -affd9c21e842b5abd6db2e82e0ce355d8301282cef36e2a0776fa354ef4a64a80fe939ac03201e49ce36c77b95efa31f -8e7e47f99294b735895118fdedff27918351ef22e16ddc814ad64935bd54ee68014349c75aa75081c7b35a19de981209 -937c44b8ffe0fccee348d5831dba4e4c5e83b6b39d056d4a4146987ab73b736eff92c138872e6da06e1eae3450050ea0 -8bc22e1faa0fea57db16e0a29cdccbb658b125f0da6c3121c156614dcc835b1eda596374883a043e3cf3d5812a32f6da -acf0a8e002b5e47b0f591ac6d67ba7d2d03c0bb7f475dba09dbe877b50585339cf4367d35118d7fc062299f74076f06b -988065fad7da459903d1c8b1c5c5b2a86898ba2ef40f259af52c100554574c0605eeadc5beab8631bd9751fdf3a099af -865c29b5f6db4c557f26ae68cf3f09d2723e6a4214fa4de8252343e5b13ea98dc6a18c43a2a957f03d82ffac04d96742 -a4658ecbaab8010495d2253ba880cb9c5d5e4973544b982de1dd001210cb3dcde58627a196ed36d33387224a057d59eb -8d7f1dc9229a4712f244f1e2bbde55f1ea9fe7bf30d90424d70391ebc839623c7f58924054dbdd813de971d171a1c895 -b918b80341da1be2635af51d33493e24a3a51468da0c53021f375319b6d7f142bbb9632c8ba512b0de42b51d8e2116f7 -82b633d66b9136f5da10fe6e7db0862eef339342653a1f5ec1b288495359bf67130fba5404b4a601b5cc1d9e931d2465 -a8b51cdc519fe1bb07517d64161b02c85ef763c265c2de76a8287b7edc63798b50afb168c324a83eeba514a126e9b291 -835f2cb916f75eabe0b7c7527bb688b1d38c7f033242169553b84d6885735f85330ac1085eb2a65f521331b853c76bf7 -b0f7e967bed7e73a64dab9fcc191426c50967c43c0b68b685241cbf87653f7061896adbe5839f685626307014ef3da47 -952726763e8ed7f06953bde904d0d85e9860c28038dd347efc18f7ef9a0926490c4ce8d9a244b33f07d9ff3d5c8000e0 -84f1d8c0f0de624e7b11c01c8fd5ca0f9f14fe223e4659866b3d25def1aec70ef2b84e98ba57e801fae2fb0c924e37f7 -8eba73a7f1222791916680e3d5051ac465b705167a3248846e41a9d38ae464365d2112e0504e001554d95a674fe02961 -ab8c38ea34fe35bcc1189015583a8ffaf4d1d3d25dededc316ab3ef323dd2b4e7b5848d3a1346a0830573304fe5789c8 -977b44b1953df7083b3aa462de8d4f1a939b7d53208a6e059a4667d57353b0dbb5aba81e7ef527c6ad34bbfe31b1df6e -acae51ed5bdb79421e48141fdaaa2a0170bad2b5e97f29b1583cec868173f035b741cd0275bffdbd6b1c5075a858778c -8ece5d5654085fb89fddf30ebd1ab7f7c09f22f36a3cca243065a93a1f17e3ddb8c5715ad7966bc358927753181e9c7b -997bc4885b71261557d2c769a3495678268abedb4edb27e8e76639c337a6e3a78bbeeb7086f54542be43267901269257 -96ac5346877b79649d51e6a04468741028d7166bec53590e52b78bbcafa96cc4eaa6e92abe6c2af27b7103217cba65f7 -9475731d5e5b83c7055e58270baabb301b4823e155986d9ccedfd4bf4cebded42040db0f071a210e0ab22ead92e737ba -ac5c47f50345ee85dc0fa567f976d8b7c038b3d9470062186042e2fa4b04381af438abc593ba4092f3cefa37e82c7017 -a85004428219e9488a27af2115efbceae9ed359ab20426cb6a213fec93a28175a1381a4e4465b6104aaff7494091ebe1 -a31a71e29ab0f714bec2a9411425bdf2ac3a4552840d5ba652d4c1f19a9b9b6eb5f06532e14b135cf02fa815f318cbdd -a9c34fed2cf448acad354248c32a7573fd84309dd980bed3b16df6bfa017fa6c4612b34b951e08001bdde9225ecf9925 -87f7b7fc0546de30cc7dca29e736cd46b4a8dbc8cc1bd90a9997216a6cf05a624439077b4c3a64bd9f6a393fdda89931 -ad7643a4a8a78a47c9021339113dcdfe7b3d6ce49faa7bea89f6c93cf6e3c89163d36fd20af31bb05ec85224fa80114f -8c42f70e3b415c8b8ee8bafdeec72df7d6e2d98f816de47accaef3bcc3eec79c16a9cf6e544b584a15df6d1a6a33adab -8e798628a0de39fb8fa41a801830950129dae10ca3c921048754dd922a7cc57d4f7644253706630aa8e461ac812ae4cb -abd8b79cdb7f10a1780c25bfddba5e5ef15f59479883447946f9d986ad7a56402d5fefe890127cf48ef4e400538fc674 -b0367e76fbd2868c4d26d2cef24df0f006a192ab19c52476d1ae0d3695f1070e6404a482af965035723c7e806cbbb08b -afa927c8bd26e0d56779a25517ddc2d813762f3d051a39588d359387c798b782aade8ebba7b4f80c6f091b7eda2e9a0f -b3a846e5aa6223123c7796eec02d139183ad6eb3e3c4936ddf8b56def9f33499611849a6377ada918f0da59e9cb23f5f -892a88deb8ec826a2fe56f4f8b33243f366cf37aa60bb3e3f2d8537af87374316e222c77e8ea87aa2aa1cb4757fdad9d -af22022daf80e3ec5495e2c413b5399c74e515562724b5beb916b5ed4ff9b8960848feac73f54dc460623c90efbd7aa4 -b9a11e155d91be316d08ce66ac1c9643afd007dd5868bc9e3b11db9f2d425bd4ee008449ec462482cec527767297ad63 -b0f8016f1440b8e3af6fdfe042af4023e04889093a38eb96f3a0a3855ed92ce18c752204b8325c4f0d308c69817215cf -946231cf5357a6f936ac15c2e237b3bbd57449be54ef04fc9bc0f41558912f0ee9bd159098ecf63e4739365d147e334d -911c1c4e3a95238efcc91a1e784966d6ec871517dd8621e50e39e29e3eaaf6f442867a4ad3920a467ab178bc6bcc497f -b6a43a06726fb70958a97f60f5dddf36d638167db12673234134c4b50eb031e83b98e1fa59a8441246a14bb3c42b6975 -ab401f0d47d80f1694cfeafbbca230f212e3266a0bd7377053b2ff67c582d588ddd494894bc1eedbf737cd12bd521084 -93a72a6bdfda70792900c0fefd8d965a26b9459c78c1eba72725416887b7dafbf3537cf84a7c60b38dcf7b2f3a417226 -aea1f6932280a9a32bf7aa5cfe5fd8d12fe35e3c6197d1b24e8d006fba87645358b788168955754da7fe2e256b77a760 -86961d43deccb4d4a6e35129a1e58250cf744b5c8f7bfe4af40bea9ee9f859f2668872a46ef54d5590b793e70ceb44fc -a00584fe7feec01d863b57894df34884fc4f05bfa3d6677bc6346e615eae261869651bc16e09f36b15e071d14b6d6ec2 -a9a33a813d7eaa1d242fb4e6f9f1d5bc6094e2fd344778c9ef83967243e38c77e0d95da9736dcc9f4d7eb48814564ef2 -98bb194ca38025d9d1bd0d39806f1e6aaba0f1601b34d62da293a71e07c01ef973f367886d920dca054212665396633c -862c96a93a5c8b057f3f0b1bbd3ccfb9aa3fbf8fa54896c5bd5a4d472c873542dbe3f85fb3202f800de3a62afe7f24bd -b791bd82dbe37e6367bb77504f6aebc9033a9c3726f4c5dc7e78cfdc240d811a447c5ec6a98328666ff4ccfcf34429ea -93f71b1f8ee703ec9e1e846ceedea5588337d9ee55e536467fe3a183b57574ff7129ad4c4a90f8a85a473782d949f793 -857545a9c3876c8f91ac171d1245606d1331bd86e35dc899984b5482c6132d5038598d41620532882b04c0d120b0831e -b3ed0887ca7680131c052b2493b119660d82fb776d78fdd9412db470bfb94d5bb99feb92c4378b72ebe0ef37db664ace -85ff9f917acffeecefda709aecd72699092269284039a237329e80ee2a71e759f4490e25b274d31c8f4c60016753c40e -99dbbaa49fde2a1c6e9a9491b09dbf8c6120a662a85ad37f310980002e9fa8a82ffb76e73376358364f0a9b021d1e3fa -8cdd3168e8aa14a63d27bcfe4e2cdca9abafd8b77267e05f5ea2bee3e2dd75c0948f84ac196bd38dd4d552925653baa6 -b7d3eeca5832412b9bc37c04f81d45ce2b43ea6d1e0e7d4cee176604aefc51b1df898aa80c58f795f288fb65ceaff267 -8fb16ba37d8d49aae9f7ce48a9d2c511c4bada41d500f6666117617d1d83248e85af35604843959b420f1f0bf65f0ab5 -b4dae92205a4f863a1d77cfad94d604a90bbfc9863fb62e96e0019bc943a9fa04fbfd958e19f905e1fb5c834557e0f0a -ab04b0590ac800d457b1a2f0493a4e7968391b623e0b54ea27362222eeb5dbd1629794566052add8fb09844388c85f7c -afd1872d0eae250a73dbb8ea962eac230aa5c70ae8b34519c60cafebed21c35daef3d7cff73f354b511035f45e378553 -8408af10276f388ddc874c1aa7d475a52fa4eabf465d4ac91bd49cf6f602cfbfd94e0cbcd47e1fe60c2256f7216b0185 -aab2fa76a6b2c2c611b35cc4760eeb3183958734fc85cb94ea5f82364b034a65502b63c0853b1e34b404a52d5f27ab58 -aaa1c58fb59459f3cdc6dc763e67d61c275b3b713667b5574a5a8d7f728fb103b57fc82eb75afa70bee9ee0e4a1de5cd -a2386a20d271f465c9070109b5cc271ac461718accfd6efec607078d4dfb183f83fcbc13507aae6d4bd3b75840adc792 -99aa7c9d89eaeadc27ada6d7b8e7da7a1f7689d67a980505354c76d516d4069320a6f008cb01248ff52c3f4792d35c11 -93301ba65e5000559171243790d4d1614e742ed2d7edaf5968e3fc808d9c7ffe9848fb90ccfd8335797c5efec6fb1fde -8c09fb031063102eae48a49b6c8505971c3d0c5a51ed5d5772782f51f359165641659d4a8dc8b21c0170a2c301b418d6 -8503b5f9a5aa7b3fa1cb9a1331a1cdcac4d0f48b3d39eba44c91f1777826982ab435e2715277e4af568aba1e6d6e9c02 -994f42763593bd319c53881e775001e5dfc2f73431491e6bd7cee7f68d67c2fd07f9c3d42a67c701d81e78ee1d9dad32 -81cd9b37b5e0e4b981aa950b75af66c7920a9a14ef4bd533a1601f0cd657ccf30fef88f4f0e07bccf21e2b20dc209874 -91984357f1a830a696fbcc82877e1835dec6d7289a8fb7cc425cca09c29887a978cfc46e99a050203306c2628a58d144 -8b95c3e7825b165f4db6261f8b8cc64a2285021f3d51c1bca49b82d61f9549dbfb0aa0f292b29f2c53f20a1e37ddcd3f -ae139cf1b9773fcc5f9ba2d55f77b1db1bcf6d55da09ad6ddcffd8f2431810eb59c6b6450c5a586274da856c10a06889 -8eead75951a2db5ecb0bdd965bebf38a87bbcd3923179aa34569085c0741539599a4fa354ec240ef6eda3dbe086507f8 -87dec9c32c4c432e2154c56a09d8799b3411ab85755745e16db16b5bfb9bebbf24fcb5c5abb39e5592ed45ca2ea1876b -8612aa7aa27d5f2ba0c19fa4cec9a2430c34f8bcd45f12edd782c288a1232995046df0285c92e471570e563d05de08de -b76728f34b64c11cc253a80f2e8eeead6bc6767284aa8a9055e04dbec5a0cd5e4941d625ebf9d9413d91712c57ca154f -885760ad275549df56a2d4dd7df55cd63467f9ee81dad44542324571641040f5d2374959a1aa9e5a2908ae71c7d80c2d -afe0ae20deacf08a337f439c667dcfce893d6dd889725faa8008ca3290f2fe4865ee2f74aba8f84424d6e7ce18ba3de4 -98a206aa52eebda387c026bdbd13b688a6dfaca9268c1940f6ac59965a7bc0eaa1018985ee66b4b69aa199814397ab76 -8d189b3c0e21d8869d966d76bbc0b039bcbf7d0969a9adaa400d213c3a1d25795c4381cbc3a84232a46ecb92bb5f6c86 -b5c3569590b612b978be1ec0d57a4dd136c12bf8508be7e4afe797bf5463480cbfefc7cac09dfb7f141c97f3096956ac -9067cd2621a2eca18bf109f1f5bd9d0d1e6d298d95f20e6bfb6a532aa664dee6e7b035dc5a91a2d725e8b53ae047b2be -8b8bd2a4fe2fc8db26cc8acf7b4baef6b57cde5663164655ede0096dfc4a82f74e35a4ec7acd23c8de139a7d640ff595 -818fd67c924aec500a6a3ef77f03fdff6bcd4d954fec7c047dfc0edca628dba603e42ca417bd58ad3c5e00706861a0d5 -84d1ec1bf9656e67fc5e3741b59e2da3124fd23bb90e55404d2c4644d4bc8b1b07da5672945861bd1ebd64a81bf94553 -a1f9009b2256b170c41cc21fec6c9c36dfbef1aa865051c53f95e90faf65d0bcc03419596c0b7ed6137c7c6bce826212 -a2938e2e6f96775ce1477a4af966b5cee118344ed0cfe1ed52b0e7f8c5cee32d7182855bc5108102bbc20fc44bf15db2 -a16a523356c46ab30dfc5746250c6c31328987ac06e8414d3a85ea44d09c7b8a8b1a02978b92aca0d5e40666202e258c -a4b5999ee0b33dc847020fd737dd9ea3d8251d37e6f2c3c50bc6faf14781de90749652334e57cae4bbd2a666fae23ace -8d46ae15ca8e3e85e0eed90ef311f7b043a29a244187bdbe561ea211a958a3c62e9c43a9f39e2cc2997c5e9c1cc75d1c -809becd2ed50a407f1249dc15e8dec7975c8fd4320ab18003d882e7d842bd654a6c3a516e30734b27ea3119004cc4798 -82e1c72c911874bb06e089d233bb628840087e556b9f171e5bc106e1d419b9f33973e7946c0d324816777265e81e7727 -a1ded762dfe72cf06346ce1b244de5b3051d4286380ac0b25703f11c51e809021f3b5ddbb5e2bc50d70b6202274f62de -b0f756a56322bce6f4427781dd0161657a6c09d31206199401e2c9db4d901a6ea8882fcbb447c500690269a82fa238b1 -b31c7b7bc410d9941243b1853ac1cdaddbe512221fd8d8ce21bc827c845a0aa679a37ac002c6698908316e4646d7a726 -a39d85cb0273c1bf5038a93c576de04016de8041edff99a75a5956357a3076ce466478e5b4eaea519e541aa0ace644f1 -81c3c61075652e356478b92ed8d62cf90b35626593ab5b6bd16e0f27374c6efd69fd50831955712e60937761c7261f50 -93abf5fa683e9472ca60cd77619466c8b762215814855e98b1f08daa333c6a40c292eca139f2b37e7e422f15a9828f5c -b54fac1cd9a45070f7d5ad5a89047f83c059497bb110e5bb81212b3f7908036b80112f44102e49c2f39e367cf965a260 -83a1cd2049b70145761c2ac927007a88551e63ad43ac54b8f5cbc4ad85ac8cae01748bed5e5b532ffd941dbccdb10f21 -b2fbab6865b4ca51ef0ff696c7a3e7a77177c087254563a3955a5f8d015b66dc1f26a8fe09639fcbc3661bfab1ca1ac1 -97356cbe18a7240552a9b64be64f52551b4aa16e37028d899196fa1cf24add08a88321073221c72bfee2a41f5a03115b -b81a98aac5b149793da7feaf62c8629f5672094f050207c747727ddacd3c41d8a9df7511d65b027b156c033f329f1973 -846bb6b03e89a33e0381edfe6a3ec4ab690c9a64b3a757435336f6ea41022201417552589158e529b475ded86b647c15 -9834ac83008a9f74307d7481ba8f1f932f898331e7c678d65b12d360796daad495ec4e0c795f40730948592055899402 -8da290ccf3e6f47779795ee48205a1b60ffd8244dcdfcf188400af74e0e40e424c6a002dd8c8ee0aa51c6458a960259b -a673a522e817d997f5899ae2c771de59cded39da1468e3657014ed54b088683b08fe50fe06e3cf5730ed35766d73fd28 -8f54c627bf991b6099f498c3248e442e83332384b6ebaec682d8e6ce8020e5f4219f88e5238dea1f495805e131499ed8 -8b9b91fde73288973fa818d7e4093e8b9a4ab8f2091c8a2e970995bd6ff4f1262439e0baeb6554a93e9ea2771beeb358 -a880c5aab17bdbc05df6512d528ff5c92eb9878dccdf53bb703463a4e6e84f26802b0bb8ae5ced0bb72ebcaa2d446002 -97137ccba969d9169993bc47f3a45a9d1efb33fd6d58161ccc4a3579abc7e33c970ef3dddafce5e10a0d84494cc5f948 -870179510e908dffcff2ff7a88a926a13a9e174b0d1dd147f25190fc33f3ae90d056d6eac92c2aab90f9d3b9a1bdc824 -8afafbcb08ad1df0fa9b9ba9884d674e065bf9483ab243f6523b98d6750c4679640bebe281e9397487e003e63c8a628c -88473f7d90ecd86829b85cb3366c3a7059cd6aef0325f4cf9d6cd94caeffa468a8a696b7f93bf4e522920a98b2a10529 -a56b3fbec7d0c1599f6a78baba8131756961a359b158b08ec9c9af398fa872132759ccee200cf0720f41d42dddc5567c -8f27162a599e91daa46cdb86a1b8fb37f60511af76f0bc6bb90a92ae01874b010bf837fb2086cae501353727d8976876 -93e0a60bb8a8cc356c081bba6ec9f9094467fae81ee73661956329d59e6df76ffe8344c7ae09f62ace55de416c7cda9c -a6c5b1db89f8515f8f7f729989a15a4556b7e7b83f1cecaf89b9cffe6f9c1dd853fd1761d40a0754fa177aa299a12587 -acc19a840c6df971bac15142d99f366303f2d29635e38fc41f2e3fa92a77ce8bae92337f917af007182aba3ca70cf294 -98fa25a57220facd6824eeaca320c65e3b99fd5091a509a6387993d76af39f6a32b1347cd3b8d4701d4f1af8420e7eec -a0b5c70e057701fc16a465b47b5581066ebee6336abb1629dc4a57a7b202583081dbddb5e687fdd0048d5cba317eb7a7 -8be0fbc3853b94f7cafa728f919e557000e33a704481207f0ec92ced676cf2844b20e87fc073050c52680bd5ee6c5903 -ae702a6c5700fe0ba7b8e46002bfddef90f045e4e027058cef31663bf2cf9909a53ca0f747afe0d878529f1f25cdfda1 -95d505b2f1fbe253fcec152b94bcfa9b1d409ce2873ceb711d71f4293b4ab52cf836949e73bff2f72efd14021d9e5467 -a7a1f3a425ffbf8d32a9a3917b76c4173b2dd19acf9e1aefc50865a91fd50caf25f82ca15a9f3ce158eb6074b43be754 -91ccef5392d08d4ef660bc91dbf929192ce6625329f8756b498953daa9f3ba253410f30b51bb4c96bc5a9446fdf2b296 -8573696c19a40d47b0cc92db3e04c85d7f4b87a7843bc8ed5e626ca693bccd642f3b99c11de34afbc8609ffd305c7d06 -a2c18941d77b7bef39a55129464a642363ae28eaaf34959ed4272c9f2db38e8434cbf2f2d24ac5a401e2adab889641b1 -8cfc4256aee21b83c25405a86d6be842296be60281a2bc6bb9bb83beb963233b9b594d6f119c41dff79f292fe60bd4c1 -9923ce6b8831cab9f7cf2fefed7ec383f5fc1d8c46d49c6da6ad43f82fbe6a42e37f3d334b12f8bb1afb95b566b8952c -88ea98718d9f795a8656020e8729096af0ff002b19fdee414e8abbe918d7b60561e3cdb68914fc6369721934dcbb5036 -86940ad730aa07d6cb8924d65513dbce1543f10bcb70915dead0d9f13c0db172fe5b8095d0a5a434c4effb892a9b8722 -939ef48e278334fc53a0b7225332641bf71bc8498b2896614e27864246d1f317ace6e2f40e2c498adec5d7b1c180e269 -9409d1a4cb5c52df40eaa46e97c0790cf1486ea6a076e6918a7ed173532f937fff7114371cbaac2d020f509d35e51ab6 -818145c4cf06027a64729013f0648741e31a6006c3521830b6a31f8240aa60d5469354939af50023893786be249ced86 -95a0e5f0fead474f24f8e3e340caaa294cf6847927a0591e2ecb671078a62f7af6d7675dc1ad7623064eea6e3bfbc57a -a16b1cd85c9bfc75e6c871b09d752efcbee0ded772c9759da2b350eb80a17b35f6b91322f38fda65c8bc61c753543494 -a16ce416b46dfd0ebe92147c06eccc9bfc3b5ab741407fefd95ebd2168b9aea4a953e8d0a54436bb8f80c2b44ae5c6f6 -9494a4f8bbe0917a36e8ad79c701b13c7f0c9c47f012835e05277d92eb7030f8fe1dd7ea246c2db0a230e120aa338b44 -80db6fef17211a2be9909b6d419446059242130ed24805ccd3e70827a826dd6ad5eb09bca509ab16f62f6d4a84a900ff -927ce984e665204e5959c70aaee03138f3e381bec132710b511c3fe9604424e0a736eca296356589cdfe5ab08b092289 -a07547ba349510d74b4e69c8ca2b6919f11e4f61644bb6b0ace151263ebf9ad1a2240b7d8b304afb160bc7d3ca322ebe -aa2fac784487749fde49ebee555491482da0a085875f37f4ec04209a75480652d0049c6e1398e3767573c51899168cd4 -aaa9a4e638eb96ed7aa6fd634e425ed9aedad74dc5afce3d51d6d6f7d25dc76b60f1c5546708570b25c4333ac91fafec -8112c9648d68ccfb4bee6282d4db075d9a7ed39e3f345223be56679dfb062f2e8f6386bddf50db5c4cd1f9131e3515fa -8461924caba220050d35853a9879017ab501831536c4544c6c2830e39f6c54256d08c0ea2eebd10ab38719d224e2b704 -8574767231de600e150899094c55c629c050cb6681221e4b64d8d30dee1e40da5099168cadbaddedda39333e9e02a222 -860fb72054c886af7b55cfa90b229d6064a0953f3157b4a0c2d73123083fe5f47268ccd015f626e8326d5327454c8fee -ab7b5696eee1b6ad6d42dccbfef004d0897148e4a38a9e9bf46d4ad1d0003176f831d1de7403b374acdbded0265d84cb -9128301b1f5994843f4220bcae4df86c29e62bc30bda18f31d3fc776a8d8cce06bb74aa6afcb0cab16cecccbb8991974 -903569cb5bcd237ce4766e0b6509fe6e332609feec5526bc149d30018a851eb666a51b873d80a642644cd54875d245a6 -89748c9ab4480a747b5af86c7d5ae2980c303e5bcad925fd3526067d3dbfa1f02d917e9d9b3e6e254b49e74863a38bc9 -b87839691b4277ff4fa95eabd4d9caf4425be9c94c2a4e4795e263df8f6eddaddd476fcf52facf8548294a6ea4a4a179 -9247ac277d338b67c355e140bd41547fe35867d4fc088403319f88ee9bfbdbd80916d7f07e0cd0e9c26da535fef84b9b -80557badc9f4520d91e36ef90ddcd626b3c41d019e0a2c02ba7cd3ece2d7b3621d732fec753035118e34af60e871990c -8a3054d7f0a2ec33df3cf7c180f77480e775694cae4bff1ebd802a65efe68aa010299a8018c4782311a7f18347f2a77b -ae6f26bfda86ff48ef213a467fbb27443c4fd7eef5e30a0f1891cc7b1ae90f287eb1df80b76c2addb459515d7eedfbf2 -b85deb5270f542e32cd9c090f48fca448ef4c259a09ba4dcdfec7c200171ce6b3ddc675a3dd655261b8dde7d2537cbef -8df5c814840c03f3a71eff016787c76f42a63cf2cdc18ec21462b441c9741cd53a6f80a4b14a09f95de33b8faef55bdd -b3f175f611093e70ce597e1eaae6256b5e11b178ba8c66f870c5fa8af22f493a85497fef146070df5a9ccc971fe31a1c -862451a08072809673803f2848e252286b226f86a5ba3a1f9ef04c461e64873ecae57fce1d93ab4e4e0dfdc94e70d2ca -ab9a55d848811b02e106974a7a366c7d713d75b728d84bfcb4a2fb5b7e16534267f4fc662f9746ea1be8a74249f8ff9d -97e412fc1b368a4d5913051cd99bbfd631fb0dc29b83056264c54e1f34288f5c1fbcd6e7880b29ca9e579ad1b3473640 -b85d55af1635b1b1a3e0bc01e100ff7c8b79f6aa72738b6497071c6f16688b9e166c8c8714c4a49ad1983c6cb16d6d0b -ac3e606fbeb77b39840909abd387c92c546cc6fcc8cf2b5266e77bbf949ed19e697345eb7c7fa2cbb1e2d4dca1b1ff67 -b588ee4f12c49b828f0489baa7558d3ce81265fb750bd4177dbc88a368713ff56f1e0ccd0ffeedb31f91741653bcbebe -a334504ce0129de9be09beb53d7bf8bff47a4bd17a8ebeb710a273c3529d81072d24ee6bf04264e1740956a34115ad31 -86a8e199c565317be2450e125ac63e33824e1b17dd5faeddfd65e1718bd77d3ef91c435cb0517cb001ed96222c06dc14 -88e05c3f80b16347fc3845216d9a62e0a89a43a71e2267d6e4634fb46c1eb33191413faf8602c444fc859c0ffdf2ff2d -b8f01fd968f6a60a217ecad284d909e80e247996056e410ddc7d5d059ce788a19c5e7d243b376a29c3c439430774dc63 -81547be3560d01d50fccd10379dbb149790c4b6325ec095086b60a90ff01f6b6c15419c8b2c32f5d021eeb44b20d9139 -872bfb96cb9a01e7036777a63ebd314381e45247a08986ef3bee15c8bbf3f5ea9c30725fada91a811a5358284def43cd -abe550e6c3bd1e041c601bf07fe2829da3def8cf15fe208886631238df28281ddf75d43b373e515b2b97affc0ce89943 -a607fca817db0c565308146c873b58eaab8a953cec61df87d49301ce35b7adb8f4131996446e4788981a9a90201a6bbf -877b31675e61949d2d369150fd8f7a0d8501ecf73207058053ad277a3381dbf441881bd05b626dc8bb716a16ba4d5a98 -b421488968877ed03c16561ffec5545225f8aaeed8c92eadeea6b07400360fd69a36ebac6a1eedef02e2b069079e4a51 -b9439a8a448a7501fff2f89efd933a521fec06928201828791fbb91b21740277106b61da5ddd52d9bffd88f52b9ba9d5 -83ebe6b769fdbb1c6ec4d70b914034030540bdc31385cbed84ffbd81e6a588808ea0f4a5e0dc5f9f2b5354f4ed16bf74 -b65794fa247fc03509883c23de6634e0c436d8383d6be4366e9b4e075939601097b7c6176e751e7d5b6213a85474d1d9 -994d90e9139433802f349cda5297917875f76b4cd0ca4c4566f0c391ab3c60dfa32f201252ba70b0a0e1102b8ffa080e -b011d6163bd0b456b814d401c42af85b1629ef6e959e6138432a955bb6fef3df5db44573439be7a142be15335909fd1d -a3904d86f0b5410cbc639235674f9393b430779badfb13dd477f3edee86f9255e91072f57042106f723d9b839311b348 -a33cc02f2047016a70cc3ef1bab2eb3737494ff854233e839857f4e579ee672eaec5da672b69161196d58a41e8421924 -9852b94b9afdad7861981d771a6c0ae2ab13a84129c2e60fc50d2587e3c14cef2847992f6e4256c940be588c43219d7c -a8628e57ba20ff2150ba6e53ef2f30e411bd066a561797fb3c19ebae1e37ebfbf47eb5e40c9e23870cd1cc0ce64af5b4 -aac016a5a591c9886be4ef0eebb75a987d37ed4b5b4e53142cfe38553d2c26fa73020504ab9e1f005f39d030fec79f24 -864466929e8cf3c02dafd742a0a8ffc676816eb8e78a69ef038f3f0aa9bbbe783efeec676ec688ce26739fc8d21ea15d -b9a475f1bdc6961b0a2cdfdcb8a2b079c6e94c7dde02a2cb3243920d3d7f3fa6a7547e1c67f4cf16807297f3f50c5c0a -8347fe25e2bb7c215fb067a5770c660bf45068fae224c6d30951d7a2187e1f9af04056a9b95f68c18859831801c01b13 -97cb8013e9908d38661cc9456862c38f392689dc8d2457b006682bd2353bcace38f52f71a93c8baf26b0ceb259f35622 -abdf92b8a44bf5cc75c92d7a30f025c2fa9c7e89e098227c38e19774d9dfa7563df065897514fcf7cf8a541c446f7c00 -afbfc533af295ef01acf44504c37453ee5ead2ab0913edf0b76f031a275de985611a20a31477e18ded9f77a6d2a3bf34 -a17d982ad311e07c2a916ae6aa6567251ca9f3c366edaa43f0d278a02830d5a6963d243944a3f40239c61eecfee29568 -b2328077836623baac0ce3a9eb178fb60f6f489c7fcdc76f34cfc18399f8ff0a85289c78c498f3fafe554f09b22166da -8c69eb1e6e9c31f934b999bd7bcb1c763a205c442631242b054d8a07917dbc11d7f29e619e42bd8d41359bf4655f5ccb -acedfb69850555308fb29ddac6029504f46deb0cd38f878f525c082630c027e08119639e4c71aad65848a1704cd18261 -8ef1506c0974884bbf52bcf1749f679c3d1e8e2dfbf7460ec9602ec5bba493bc56a276e9cad4f19ccb678a6482cb7d70 -a181d4a660193a4c52848d39d56d7aafcbd6e0cdde6b83ec1758fd5923d0185b0e1fedeb400e44c95a4adbb1cec0182a -8884286b6a0000e057c69b3f4782c8ddcf88e67229ae693a385bb70e8aa7ed54e3aea205dfef985b9d075f3ba434efa6 -90dbc43aba2d0d39a8e46f5112c405aac25a092ede5bb3e4d91fbbdb5d7011b8bc501fd4a2b3a3af668547064cf185d1 -a5e50ba4467cdec8889e52b9dfa2b2d3e8134aec120064a39440579e8738f3a6f88797a746f6371cb862f082f5f7f128 -9495c29711fb3cc4e2e3304ebdd27c2c04cf41b5d71aab98e1ba64d1ee937e6bf4291998997464f4befcfa31d3249655 -96d74b4750e5197c712e6191896a39b92e865ad1a15cde1847ce5ded06802dc150be388aa149194642763a4e44466db3 -98e13522b2ec70da640f3f3050102b18e8a8cee6711db74c8d20ba4e70a74193f6b605fd3d079ef8aa415347c0b5d26d -8361e51bde71a47e66748b3a62fa7f18a114558372f57aa5362c9f8564c80f31d416a4efebfdf98dfa50acaa6c10a8f5 -a569e8619e8cdfe4d42475b379d7adb3ead5cc9f80c5cd0fa173f07210c7bd15768c2922c5a0a7b750d8342764393284 -898bea20c715ab6c2fef89c15c27e55fc8973d1ac370b49ae856ba4a1d5dbf2d71439729b89545e708773c2423f8d9e8 -981bbbea66e1d0d4bd6e5be0f443ed2358819e4d4c82ddfd57f1ff618966ffe5dd27d86223bb90a010e49d5b6ddf546c -8beb2179a0ea1549d132f8b45d69e3d47d361a14b79880f504f53d5241884a205c7cebc7942b4e3e9d3dbc255cd5746a -a1f5e71808a7bc2d25704853a1fc18963a63d12adc3648f56d1d3c6b872bbd1d4a35ca83bd00862eedd80031cace3920 -a23e7c9ab4be5aa98ae409b09adb8e60084049e3487eb5c50e4194fc22bbbab06587593c032a9ae6535531ed4496ee4e -8c0a4ca74eed6582ba7a438c2be72e7037799110504158205d69ea24c1a85a9ccf1d11e1224789c29f3b122b19c2b25b -aba8d9fd2c0a47ada83cf635e86922fe91b79f5f86898589b436a141e4239c29efd8cbe8f85eaa9dd7ffccb00ac777cd -b6bc6b7eaf7606f95c16cbd1d82eeffc7e314412e8f77cfa353d7a713a6b4067be698f2be55f4c9dfb4f485431dcf04e -827e48dd9bf2a549890f83340b4b95ee62be157b402eecb95a9fdf7c02235257907762f1ffd4e86ef871bfb334671cbf -8c1e1566d315571bf4323f61f22b71f1332022a7688eddfad3780b51a91fe764d1039961c0a7ffd8e88a960dc4f491b8 -aee5d2e6bdc2d01778bcbe86dbcc19cdee45aa30887c3079e1f4c697ffa9b7cc7ca58716d953a5aaa186865fd0249d15 -820b28b56b9f2bc60ab47db8221952da5a08f52cd475ea1a47f4030bf48964a7edc0a71beea80ee13b480cc136d10d03 -819935fb10bd153010807e5fed0ff4333bab231ffc0e47af00279c882a0f8de25ce49076fc8057994cf803d623024006 -b65d45c0a04ea48c78233422bc755c49204fe42d6695be74e68e64626032cbe5743bff31548d9e6577b5e7a25b3c19e7 -98d9abec65b4d8c0ea421fcfe913c262dfd26b89a9de330d6836064596a9397c671a2b18c00faf1b1719bf2f51e65ced -835934a445aae9683b0c23aa8f782038f7505002118b63908fb0e55f7123cf9ef224b85d4c2388e80f67d783d04ef70a -a2ff9e7d1b04d0f5a0c526b34b357b2051295d4ad28e6e06a8fb24539d7d83b4ba775b4ff5bd7d2b887d240b9952475b -9780eaaa0da81f53180982dfe751ae7b455e978aee65390d5574952f2d53f7bb82707481abfb3439c6489156c60de114 -942a658ec982e1eb1efd9927d5b60dfdf3ff41ebf976e4ac1b5bfc4a51cc9c0a90e70efc3054f9e4d8013244b963066c -96ffdcd0bb052d69fe949927c6f14332d6649c6773e2b8254ba8500849c30c65428949d31a57efb3765f31d392425342 -b6dc51899a253c9e76de0704a32ae36c202da9168a896c12ddc9ed726ff3657f3e6aa1662ae1abd214f728f48a923215 -a35ed1514ab933932a584c4e1d9aac44ed03ea500c49dab3e82bf48edb905fbbbf895f2a6b295cc2607aa564f37b39e8 -a4f92c3a5d57c5a7994c9bf61c4831fb51cfcf5575405d22fbf1881033f19df1d03f6db0d5317cb1a3a2bad04e61750a -a790f6c3537dd32aaf6b64d96edd48ebb3c90cfecaf367f6f37d0ced7bada67f71672141d14114278ccc61b58654cc33 -a5f2861e199685c462e110c7623bae3c732aba61b1d61f580ba84af75b06df4cee6e2eff23902d8e20e1bc204cdb0e73 -979a500bb6842c9b10864946ab0b004006164141c27d6d7b03cf497fe22e957bd371f8988f8f89c0fe0a3c163a30092e -ac95f892ae422aa8993a3c7ebd23051253885ce0a775e7f5c90620782cf592518032696524900525c0d299818717e4e6 -8a60cc603343115aa6f700f6e12808a4cb4aa2af0bb9db502c032de7d1a01dc5c578b3fdf6cd4106153ed9b5eed1fa3e -977b6fef14c43041ecc9d77a2165fee9e56cf77cfd232b2662026127e734bb1340a1b9206077d5f81c974489a185e98e -9072d0de45572bcb528d1eb5a0c3ab695a713931033d8ca9e3ebde0e80ffbf1859e8b2022631b502b5a9b93b8ec189b0 -a0a022f5bf5f7d4312b10257159f3ab27484105432f4a152f85592bffdec1a3c474a99fa2ebc1a6952f4ba9967492e21 -b377d9dc0a36b2e23903cc308b09d50efb60f14f1122baebcbe1129d6fd20e4ca27bde74ae0553bede19cbd9866d6d02 -a838fc080b91b298b74bedbdfe123078ca2ff7fd7f27b2e4ddd61eff515a301b406e115713936ace6f75bdbdc5f47c9f -b05bea29aed5ef8ff72f6305bf13b7511b6025ef8b0a39fd052e24a8d7fc08d4571070d5160d100f9f62663131bb8079 -a9c7326c04f882fe353399c85146434712ad3e22f26cb3e583a9161a7b1dc799f77be4e8c7519dd267f5bf32831b7314 -88acbe4dbced1a02168343a0f7e5897b7af4abcda4281ad68a62b07eedfc36d32b99edd159013db3bd7aab80793ef5e7 -a12a8e9ca2e8dfef9a53e76489723eed7fd2a444803491eb8217f093d61f5fc146834070a77b9a014dbbdbe393c5913f -b409967600d99d3b510f703c2cd95ecfe981b310bc118142e3d54d2b274f11be5fe99998e92d1d848e53076dfe015fa6 -a3159d40c864eb0690c58a0a525293c99dedd8f8a283f46de1c235338b8a8d2fb8c88e1246ec18446b27e4aacfc1b915 -87f0c0b383593840c8ddc4716144005b8c0ea91ac6e43dbad5b14af92f19724615dde1a26c513e8e9d85d054546e4511 -98c1c3e3f3669c8eafc88a3d9a425b6ceafc8c5e7202014c1b58d07bca9aa1a37926909bc6c06baa63b00bfbc466bce7 -a8676ae8b28bde3d7dcdd68baf18de0a1b6924524d369e9831472453a96fdeb6d181f964cb7d0f630ecb572718694f57 -808a96dcad4b27774f505f4ef18e2ade99e87bf4ed566aa6eba8dfde7a19ed1a528d4e58fe26e5f0e223ac1376804e42 -9289ac76c1c425818a5de33f87fd8ce57f9c6e86f978ba4ee389ad13f8f0b3334f2941a5442e952fd7e5efae6a562d1a -a189e8a8399ec5dfa6cd6d90e4bc1b8dd0e53f0e30e6892141de08b5930906101c6dbe5f4869978e2eb54418187a926a -a7f454c20ba8b25362352f72c32ce0efa7115430f927ccf3e2c4f884b2dd4184b8c01d9dba9055446439117e2cc4dca9 -96d0558e58cf42f086562a9fadd5ebf799b2efc8bbbbf1c8f1eba0c4f9526d5a81a55fb6ee93b4538649fa5a0f4a80e2 -845e05c5b60390cfafb38dc086d0d105f8235e2e23bf3915e41aef6656398c018ec65ad355f9a973add083a7cf801dc6 -a4ee2f30376eaff528151584d565caa8b98ea03b3caa95a34379583d857d863e66130061e87f6b07a6be68bef4f50997 -b372e9985fc296ad8fcd42926a7f41cf46a94a0ea5a12475687c059fddf6b9d902b1d04320fdb596bef8e7f3b1fa34b4 -a603220b182a6ab95bbc244cc897c2c16b3de965ad7aef75e6b78eda578131642afb767c88bdf70b67d6328a06f16e1b -a7acae7d6a024859bdc7b439e4a898936a9e5dcbe379c620241a53ae6871e77f9bd89ae381aea56bcca6c1ada6339a5b -b67df929d8061c18a89b6f186b1861f97e6bbc46a121ecb71cbac71f54d4e246c473be1ef9417cdfe83f6dada4d5e38e -8066a3e22b3e23a3387b1a02a14d0e8c44a492734f2e314a352ae74ca9369d641dc5536462055557238a0e807bbdb382 -990bedc385cb5f3e9197927bd3d0c35a9dd650384885f8fb1bea22ccd96f7b891b18979e86069245c16fbfb62ce40d38 -a49bb8bed9876778dde4c93ce81239fbf706bbc123952f4ab72b5847c78b442f1a55e68924348124f3d79e798976993d -8a5ff2ce4dad2dbffba4fa8e664dddebd3c11519d8751347f1e9daa17bb667a6770f9f37b3f4169821ae36c1f5f5ff14 -b7004f7d467a0c74e3bbbab5725bca7b661e8bafe417655bf6a5965c7d60bdb93a1c52f0f0291ddab2e9ed6b013f3ef9 -8e78b2d17f787904438d10f8fd5f687d39dc6df6592aeca699c3dcb1ea644e6daf36f5f30964f004a4d5da3eda9d3c73 -883d3b89e87658ef6df8bcc8778b0aed1214ea14a7e8f85a0a40cf1fda4fa5b27a07e64d1b1f25012f4134d582e2225e -8ad583ea75f2fe95a75eeb091322fd11fd89316bd02b8461050c8799d5126e6445bef3c87cf1ee13325db8bb15aeea5f -a0ff1573983a10ddfe1706c43cc4723486c4f1d24200552ceb1849251d5fb65f542b9b967bbe9bc419f9ed5ee1715e53 -8befca726ad347d311ed180a3092f690b2e0cfd79be5f70cecb0aa30ff9f93a07d757f913deb79e5b966dec34a296729 -a6189acea271dabcc7072d4d6395e41b5f543065d676541658d97aaa113f19ba309f332c850e373616b712bd8067278a -b3e026881ad00f3f8fd3da96174554e2c673851e33aaef0f7adb886ff9c1cbadc44ab31a46c4c1e5f749a5e5cbfdafef -b98a7d424e6b25d19b20f2c79e3ccec111e94e2bd8db8e57c23607c46f12aa7d5812cb4c049a7e033f6de2b20aa2b650 -a4fce7c441b1d083933174aff776216efb0ac8dac9696b4a31a27d49c466c4fc866210375068f8e36b0f69ca00e97d85 -93a3d59479b99ac7eba650a55171af2e3b353a36bef91cf1813d3015484f22913c86cd32b7839443ad60c893016632ec -980da3babbdb03c06340dc8f2e0dcd48ab3a8a4979764981f5ed49839e22aa4b20525c7147b64f79b70cd12f832b5e12 -b6a7fc9d85ffa892436a7538f9b6c5ad5735c3d5b0f4599687646247d25dce8c80dae4c16126df8f7e17712ada1227da -b12d76b6a3048692e8c898e1cbd7cc67b772f46fb225a4553ab9d2fd6ca13ad5f43e7ba460597ee7d0a7ecf6a547fa91 -91395a8bee9932a7c254d903a815eb30cac0b13d391d2c7e3898c0c6fa1817d6f7a3c28293d248386ab4f7b48ac25e70 -a70d287fad703fb90864b688c6c5ad34bb8c6c1bec6b5565299a291495fa07028974a89013e132d6a4fd06a2d353498a -9142d6d97f792be9684f51933498410e1dcfb14814ef7c92650cc92a5d3906050904edc097d0d6985403ea6811c91c5f -8f4c7408c0eb12df8c06430706bb6b67a990049e2956adb9b4db7302657f6ed98ec21478cff5ec423bdf4c05286333d1 -a5dfa92ae114819505d86183e72d9f3f59335e407c589c0e9e782ce7cb7d80b267dee3a4eb03c60b1dbaff0979511f85 -8c2efc9f16ef0b88ea2d7c22a54e28f2ea2e7bbc96ec60f02b46ee2c3e27afda5379dd75487e3c8037fa724b16a3cfa5 -ab8d781d2a4763488987a230e7b829484d0fa8300d04449f215fca298fde403ad57fd21147ab6f579302a8fb75029bc5 -ac0d5a0ad0e19853051ffdd1f4f0dd0dedee2798d35ceebf167ae8c3bf3da500276bb2ca5f738a06b7d87defe43f2f01 -ab2db35e3af473ab171ad68c0fa7d5673a4b5ba3244c2f9aec739526753de72e62bc3a72629686644562d54ee6b1abe4 -885c0e19242394fd5b850aab741435be238f08ea1a19407c3931777f4f63962b8d45c38c09e9543dca54d424247a8470 -87b0e9f521a7bcf3025928763bf8baa1a677d292fde3f8ad9f42ca41eeee791652063d84e4ca75895ccb184b78d6f32d -ae4632856da447504f0528384594111cd61b96832984a7f37e328712c9b9ba3d1a6c3035d0c14af95b027c0531c659d8 -a8f7654b7700a7186904da484831c66125d59ccf4829ac0a7fdaf524790fca4a907263c4ea51de8993ad43be4b21d299 -973b17f1dd4636516a7d26c11cff0f12b20b6d6fa61dafcfed38af6aa5801b1af39f6da464bb060d102dd69ddd009b3b -b3883a95de9e815f7d2aab979276fdeb5c2b3eb3fdbba80e908e337d6204fc64a6ff578db6f75f862bc4c22ffe572ba0 -8e17059eb93dc9afbbeee6911abbecfcb10e1f7f873db189854e5387ca54ac8dba2f2d35c1254d6425bf00ce2ecf428b -a9bab7e9dfc44d4085ff15dc24093ada6e70ad8adc3ac3306d7138cc0b1ab4f2d5b1285070787e92288c4f080b949987 -b1874ef379f8552a2a75c7cf5350ea87f8f92c0e58cab4ce5e62fed9648e1a3975283de4bc45a38325448bb8c80d7f0a -922a4b13ec7900a96e85bd9ec1ae6740a53418b3980f58d5b9d89bf4a728cb9161dcfa9bdde85e4098e21076fe78e805 -80cac2d4c457fa381d277da285e99c8ae2d042b244c41ad1766960f56f2629ff291f36a8c875a3cc423ff6c7993c3e91 -b49ef553c1fc3b4f1edb83d7ef31b4a16a05d1430873a58e136992b4b57e46bbcffd45a7b65b60c2eb43e8c7d3904d74 -84a5de11e4aae5d874982531f7e5b55c0d3dec9c40bef1527c49a786949d9698e27c324dc65172c1a475bc3a40528185 -a4dcab5f41b25e5d3c2135074afab71df14d6a13f9367eb6b6d99f1f2b5394ffb5bff39dd019a1d7975e124f7f0309de -aab4de444f4a48f783c9d5f3ec5a12b7312e3ed381ef6e9abc50104a62d7b443df72267960719e87d9ba3bf854f69696 -863bf4f35a483b708c7550ae35e45e77a2d415341c07002855a9796f4bd52629bf44cf4d292b7286f7574ed504d05288 -93a7404436e9d610c442145c78902de1e2acd0f87224e5468ae8d7f21a6efd73f476c0c61483fa65eafc816ddce81d22 -b771d17923cbbbe5e158253399ba54348068cc75a2366d6a71cfdc1f90622f6b9a55cf689db547ff5261e2daeb2b9438 -835aa6b8eec584ce13659673954cac5ada0002e3f990dab3779bba9cbb8d1cde4f91b0fa3ae1f1e2e25f8198d2c1a304 -803d99fd0eb07e668a88fcc6b6bca2adcca28897728e69c038cd5f3f14e4f0a6f818fa6320ae0dc2ea0cd1077c410e2d -a727391adc4630eba3fc86a6a057306e1779e60f26abfff9d5f83d5e4d71596a13b13e7abcca8532bb42d328b8c7087c -a114b5acd9a6c6b24316356bbafca9b6f16c9eb9691accfd242ff744ac400d45ff7f1b5adc2d1a54c2161f0de4518576 -b4c7036bf1a505f114e9794ffce88d88852e0fc3ad5352107839ac9d4e0d017bb9935509b8ffd22bfcefce714c0482db -963134e8102f6dbc4f99a848a08fb661b95a163d8a1119749a6e8c4650bdd3f4bed6bf52951e8b7d6f84c75a2e030e2f -a54f4186b18e27b5f0d30d36ab59880994e9a67b2040e4222fe975a7e908ca7a7ec8b341718d5778daa86ce4b6fc540c -b0b1770bab4dcaa142acbbdd5e66f1d97f78ddbfde048584fdcb1bc7b755f53f2446f3154b52150f8fd07dbaca30ff74 -8e82bffce9911278f6903eac8e9a57208f53426749139fce2799a11513bd53ea3ef2f5c7a7d904a45b6420248b69101b -8f5caa32991798509c0251b3e75ff8dea3068ff5e77f03f66bda01f0b9846ca79a6e6161755492bdaab6dd81eb0f5a00 -aa1621a752391a810ffb0ece696ac7846e76106a9f54d9d1dd8cb8f9609a71c9eaf9c94efaa516dd3d3bd4414a272d68 -98e86d315537b3e89099a15c3bdd08116f23c1c330b9b2122311b23d35f6ed58e3c14e6704624955c44a5e118cdc0826 -a21ebb89eaad4ce05d422dfeb689021872871eb934b26860eb875c883f7193b65ee0ea444f8ceafbe7fd8092b11cd1bd -ab1034f602eb53ca863042855564b2971599d6790bca14a0893d940261e2f7b49327fd87f5adce0ec7a91d97093eca6e -a44bd180e143408d64c60d9f3af3516231da072bfffa6304e3675fbdcb5b286f14441dda980f1c64373348247f790df4 -91d69c45577d4d3032e8de4f362e3c6dd978fb6dc0df2993b6211f3d886bd33ab7fcd148bcb5d4d098d58f63a36835c0 -834bc318b0d95fa2f6d61ab11d97f47fa0cf74e1cc40a9dbf627371333d24db5615bd93b62928698600a38322bbfb937 -a8074f278d1720a908fe5d63a0d34f8d57ecabb8d510ee78e6b9aa20115ca25b26c59f7b780b69ba9a46ef14d7d191a8 -b5fffeee2f3afe4e25f041fd0847094c5142c8f1d8a525cbf763780486fa92f63aace52682c4dbfafe2f959ffdd4afec -a68d03d74107b6c429eb8d9aa00bee910121cfcf5a347e1ca4c127d19d419e7e46d34878338c9e458b24c612659c40ef -967aaef03f3b660c1688bc8142e1d5a22c7cb981a9152e6f7df4c21c3378490232667db6b092e147bc16b542ffcb0635 -a2f9ab09224cef0393832888a3d2ae8c1de7599b734b217f117306e4808782324a1b7b1e9dde290f7816efc5d2b8682c -8c713b63f99c08ce79e68734f38f0bc50b744899222d444de113ad5a3aab401b394355fbc3b0b0835b3db2d012212b9f -9153b792d8b441f86fd59cef546fd74015699a0f8c7822416684bdb2159f01dc0bfd1e1cd21a806284d36c3db9477b48 -ab06ae28eff3417b2670c98089842b835ff4fb19113060057fe27d80d8e2ea5e0090ba055ca44af38efbdede1e1b80b6 -a12fa3e8114fa8bc9b321a0dfd1089933b755b2586c878f4bdf2a00a0c0b29b0abb37e319a95205e2e3067fe0313eb9d -8b504ae8a69eb31a6529f10f105b121405c6a98660c642e0ead97fb5462f08058ad40a2a270422aaf8a92028498df5bb -872549f0b46900c3ed0e42e1ee9692251bfa91861b9b7d84393865ab3971e2260a85940844cb0bd9d3a5cdea2be336a7 -8177f100ffa41362ebff98ba9c9169d05fef682cb6b2d5c35af9167d9d3f15b6562dda7751260f26c387fb9b478bb8c9 -99e0a9302a64ade79ba5ce2cdc881a01f6fab428f8e669bc06d275fec9b3c14aa5af6416b7d2945dbbc497a21af7c2b7 -a191004f60f03469498c50cf3db556dc75952a1b5c8313faa6b88693c86e4d300ca029239f0cefb0419d74d3b80bea8d -86853e0c65bbb188d278f221173fc0f24c8f6a9e430dbb047ea11e421b5bb12f52625df972c76cfbd229b4651909834a -88a4b8026e9dba209f63281767b790d6a0a65afcce2fc22d7f6ed7154780ae07c64447517f421acfb5235e9a1b86250b -93b8ebd2632386a6ceda80e06134242838ab1341515aee6419d8d2d34eb927a59527eaa100f153fe1b2b115b39ae396f -b43ee68e5f82363ced0ccd98252f409f1975674e00956ae6dafaef87f5e02b83c36bdcb80093ae2a8a3bd725b3567dca -952063dff77655c477562181403cab520f66e8cc0fbda8c94c9d751870c1c87874e12dfacc36f1ac8a032d29d52000c6 -97581b37aa6df1205b01b431cdcd8c9ed53146851fdb4fbec0cdb55c171ba4be84158c84b6e400fb3dd1da6a3903ac44 -a90838133d778ed66ca110189e010e339bab6124e56d449c1432cf6045b7a46aed57c23ed77e4707680041b70621a966 -a5db677d15f8fd8c2d8a6fb8ceebac56f3d7e453e7ae748d5b54f257680d9b571929d08afd53cbc99f37b68144ee8ece -b163cbab3bca5e5f71ef63824a887778704312b0913c2760fb8a9e8991331cf4895385f1a0c4fe8d92a9eac561839f22 -9471f5635dbc8d1c1162ed51f84fe321db60976c014ced076cda83c90b9eee9413ea4c3924821e4c247cdc43212b61d9 -9897b29e1ad8ec9e0625b1ce5766638ee20631c8a3abb0bcfa8b87fd5763c15fcf6b46edaf794bf3bac29ada046e3a02 -9508f42caceec35dbe66855c05e8437e353bd49365d7271d6eb47fcfc4025b2ed5895b3ca107412a677243e6d37996ef -9009214c5716816c11fc558dc0d0975ca9e99ef706ec620bee7c5a0adf97c2d672bb6d81784d7f3470888b22e5f00102 -944f8f4df9cee411d86e344ab0d0fe95139300cbaed8bb06169b32f7fd8241936d0c22537cf5a05ebad50bd1eb826339 -b577e0281197b69275ea37bd669bdee7b9506fb081f41501a9c8296a21246ca6ec59c56b39a23d6c1d329e4bcc8009a6 -a6d2aa51c8f0bf345beffea2218a8a0c02d9cbd87804d5d254d802f02d717a87b376b3063cf5429fce6184ceb84e0f45 -aa381ecd4d49636a01610b1a437981dff765cd53d3525e8e54e80ff3c3f2430ae284debf7da67d5257143e6e95b0b9b4 -a5e6fd44c1df49aa9ead812d4a5398599e15dd01cb87fee04f812311bf5ae2fe19acec4fbd8b782d07f05bb6e3fe97c7 -8d3778a87602b01a112ee2922bd59f25ed5789b611decdc2206299ed732d9b8b5e064c51c8a6383be90077221c33fa2f -a6d7a37a72956273ecd47642e0dccff73d4658d713c33659db0e8022fe5c5cfae203dad043b576e654928b0e05aad7a1 -a9637e4acde677c390901331db4d518272d12fb7ba8ea008ff056b8207ca2e7535020c69ce1ff0facf36ab91c3f1ad82 -b390df8517c01af92ee7d3c00efad0b57a21e3f115d53463cfe2d696cc060705353661bfd0588ea1a28a6f682aaf102c -804786395fcae414a6d62bdd40cc701cfc8ef3b98cfa0276ad6ac6c5b6236496d9030d5763edf4c6abe229eb43c3d643 -937c3f83cf93c0f851e426af23227f8b88977217b167db7f50782cdd99a684209a7818dc34a7771aea3677e7569442f9 -93a1fdc055dcded7eaca555df493ec6520c84c49d1d2dcd8f66a10452e448b85df05244e5c3b083adbf20328c5d28b8c -b7248a7caf56010a880c66b1deda34febb1ed35e9e8b1b02dcefadd1be661b0f815739bea33e268204d1376c3f7705fe -8c2f1cf7282fdac6eddae749585a894b2a633b4813ceeb6f5d5010138cfe722bed578bc7821d2f91a1567fbff0872d62 -a0b3797287f446ee38aa1bcd13383ba083f1f4e0c1e534f278ead9c1365cc22a486a8fda556c151e9d2ef8838b69afcf -84ac38e8e7c74477d34000551dec47196ef90d93e8dd3362812352c026f10828b9673f06d3ac6719656409be049bcda7 -ac07e4ead9dbca9e94215a4a9907d0016fc12a791fe34b71b3f61bd253244b7b74f4799fa566a1ec3106937bd50dd3cb -a4a31552087fb463e972fdcba23f879875cc05d724ddab084c4946b44b41bc6fa83ebd469bc6acf5508437c180bb03de -94349881aab3575679be6134ec8a2f3f0fbb55c45c6edaf0ce482f6e19bb272c4023cb2a5578a4dc28d6f625c2b185b3 -a18ed8b7e0511519cfa1ed6150c34b35fb3754f08e727b8d9153ba170baf8711afe4a8358d461324b983706a447df248 -90cadbb6dacf3ade03ab585b46662be64f32aaead9fc7e3415722ce502e761cff2bb66209df2a06a8005ee90ec8245b8 -a8f734753b031df5f2540cec56d82da33e41e8311e9df661c865a1a6fa50b1b5965b605b578e59b7fb40e85ffe70ba15 -97a507a1d76e0293907f9b9d74f0f867461ea3911e70232bf903478504720b79e1c6cbe802e1ff3161931cad922e9faa -b00dae2339ad1af2635b0d6b90912a71908cec400ad87cb9515abd5b779c52584738e4e074bf5fcb4958c5a339d0442e -b6cb944484080216ebab8c41eaac3af9b994e9faa13f4f09b131d1b5bc110116cd15b0f51fc535f412a02d605ef922b2 -af1c3f7a1b5e8e427d1599d47f87c59912e8e0a336df1b4a26367fcb8f47bfb701af2b31ec4f1176d5dec7aaae013637 -b797e2c1b97ba59719113f5a72f00cf42d12b0b82f509f017fa0dd4fa3a540d584e69709a7b3d41f3d388a6d4791365f -a1fae3b1090518cc8712cfd06adcf54b8571e9cf1b31359f8e9216239b852c25b2a870009e259e10369fefd41cf08a09 -8810da66189d3b852bd3d34cb45f83332b8afb358df6db8fd9481867289bd5fad85d87270615cc96c95aab0626276008 -b270ac89215c5410e72dc0b28454a722a4e63dad803675a98f55f7c9fd964627040fb57e91c9e608f3f01e4e0d43b8ef -b662bc5b83aff81474289041878190d1ddf33d5c24de3c1d2dbf042b7218bab9b3d9abc9d33ffe128b550145ecf3eeeb -8bc2137ab0210d78442843d09d1b0c0e8282336b3540c84389b190647007fe92735879d9013f9642196415088f838a21 -a49a36aae11b2c55ae1771e9120f6154631de163edfd18ec3ac383402dab767a69d505c63a581218f426e0ac80aedf34 -ab9a926ee5037f0f560d921d419f45f8da37831f06dc807e4dbd5ef3f40ab1f87ade035caa0d7d56f42d0d11941139b0 -a251caef0c188d15431b29678117ea8069f63b876fa4c3809aad0ad01b42496d2834dddb14085fe66280bbcc974af68f -a7d733e30057bf9156419ab6eaa73cbd3797323fb3f97bbc7832f77de17a448a0b3fe19e60e2f7cf27a95bd85cc87746 -92a883acc48cd19e113aa6251848e68803f2fd5048b183f70c202659347d82114d0c2b04135699886110bf25c32b96fd -b3ab9dcb2b5102045ae492225b2d0f3adebadef82be8e7dd9c021e169d987e4e76332fa9c566696a189eb6f8a6382101 -955ab08b8aa4e510e940333c7a225dd03390bac40198f450aa47c6d760a62933af0463b54d89e8b98e1256dc80aabaa4 -9835e6d07d95dac2b06f17b77d5aa8bded9e98ea8bbf581c085de78f867311f42c36ed01e389adf7ef62e049131885d9 -ad92fc6fad987a760a5b2ec9e676af9b3606f9afa6de36a46b119b6b5898e2bee4ec08f453c8a712555ebef62b072815 -8998fd9861c2b82f6d550f0a033eacd6b336a5fc51dde60d6a5ad58aa2a6ca959bea5d3e9f0d8be3acd7ce594ede49bf -8881713d58d693876db346f8d727232f44f83c07c45eba878237b873e6a9c54df66fe1faef0d2678e847cf9d259fc732 -8510cf978240de717de4cf36b6d27a207c2dd516661f6ca35cef866f9aba31ae72937bb20466087090a2426d1ecea2ac -90f21365d17f291db128cd3e8e3c6e46ac5aef1c8b3e2d9f9ea0127ad28c5b21920a0e1be5215dc0a8643518a4aa3ba0 -978a3c998f1fade2dc5a000e85ad274b15aa849a1e406fa008bcf2eb283f3825dc142f9ef0efc61064807ec22c1cf6be -aec7a21bc3e067d6109a023b02d60dd73592af2f1e261a90da751de402418c993072075ca1bef421baef1dbc4e3c0aa5 -b63ddaa6f973b59498304de82b43b32167298e1d425fc016123951a7c87fc3aa7f6d8cb18023c955977e1aed191262fa -8cef35c8d0a93c7c56353a16f8aeb9fa93e1e6e74856d49c14220b918fd2d585724fdcb272d5e3611fcc97e46286707c -8fcd05938df6a1fc4402e0e216f6533449dab276d629e5e88a8854ded29e32c6638e4dfb3488419bd593437b8de0db85 -906b28f5a067015cfac412d97182b7a3e04787962a599a2dbf30254dcd794932be0549551aab9dbc335d95731634d025 -b583cf76e80f3c2142ef5a3a4d1800d36689aae4fd80a2e13c41370e55f1d1b4e1716db8b04eddcdd3b1fe5ab64b6c3a -8c08c57ef5ff82bd9b8791005b2009f0373861b62327523e5f70e8cb3dad639b3e2f5c21d35ae44157daac9d57d44059 -996a69ab504491e6219d9a495d9a6a07ebf86e86d9f9827e4811434a0df8a544d1027584d8f1142bc5edba2b324551be -b61e34a3365eb80747532ee32cc3c73ec85b4ab65340b53735d8563f616b7914bd152a3ef071272b20efaa83859fcca7 -a769a16a3975d9840a678be73a994dcb76bf0b9283f83e2679d4ce193199539e7afa2fdb6769fc44b5e8eacb04f570f1 -ae23ae27b659ffbe723e074d4777ea9c7c54ad4ab7d7fd34e121ec791932254b64265f178c6a1b2fc5b7bbf128f0c773 -828fd051327553ebae4de830fdd18d0ba64b023c35208b45cd920d68ed7e757f96e2fc6b6024393efb72c69d125365f1 -8688596a2b212b215647b6aa4c15b5e2d9c9cbd3ae6e2464fd264b48639b8c2cc8accb27b85e76faf9edad62bdaa76dc -8f576780e7e081e84b3cddf4e2290945993958d1267a53ca9ef0a7d6e356c3ff4db9e4cccfb799f7b6d53756c219b1ef -a40e0db022e392ae771c68d5119d8c4bd9c2eb3b738d6ff0c1db841fa44c318bf4644cedcfedd8573fae19963673b81d -9962e3a3cbf0b00d031f0e1bedb81ad58a6b16238ad3b99e5632cd38db9d913387ae03b07acdd9c4045d64b82fe2ea70 -8158cb612eeb14da499d2d42ec998650431a370a04cdc8e1df4872dce37375ac97629fa035f4ab38ce0b3f15c2d0d5d2 -92eb0ad4c8013b23bad28e12a74db1b98c2ede74395df0562826c37860459f1aa4ff6457079fab9e40cfaf0dced32e94 -af22899eddf1f274c840a6de80903fc5a550a3b958a68c3f7886f1a4154aab7d8e3c1bb794485f3740a4a269cd2df887 -9905e361f9fe64994ff36271b7d28672432e988bde670b3da0a483bda331958eb9edd5f57dc556f403500257b1784dab -a8c4d74de26aa8ddd6d91296c3848bb75e0f68327e5d203f2affb2427ccc3f9cd1b8e430259bdae71cfb5119c37337b7 -8014a82c827ba6462dd158978a0cba89a1d0c882f109fd8e852db69f4ec1c8f515eddf2030d126315cf5368a6e0317ff -a0721703b945acc72533663d5a3516588c87dbeabb2b00523d2e627f59d4bb6ce4f135f7422328145cac01403a9baf8c -907d0ed2cf6985934d436b6515108af2ffb25d3da9ed7cfd19d096cb1c7ad5b2234f12796f10ef24b4c27cff59f5c72a -935673b0336c8a5cd27e58452bf2e525b5869a82dfb0f0ec2c570a2a151a643975bfe8e15ec4337fdc6ca70017ba5d11 -b70b2547422c0191fa4d71a6a73075591cec5dcb6f672110a1fb19c5667e96a757a4a0b43021139d662a64f20791bb71 -a73b1a6768c05b4a56801f54f9b6226e13175111de0828aec8f34bd5d4cf5113e8d9d81a0f1c057b5593d1d358b2f97c -87a06ff094bbe1926a7663cad0a00d28f8072149adba2de9935d9f42cfea5e9f316467f23d190b7fd07b37c0517f3797 -b7a238257f702f2fd652fa81b20d0090359c3c176d5c0a630f5455c8fc458051ba21a49a2ee2f05e5c8555343b596890 -b47d5d9ec737ebd4a5cee5079b5497ede2219386408cf786767f618729901f1fd4d9f82c0245370d379148c5ee7a1ad9 -8874de66f703d7dfa133bc521cd2d8aad9ef2b178a172c375a24ff75dc419013f9be46dc38a715217b660217be3cf114 -ab77e93cf0c12c64c1bc489643b5ca23d6e81a15d7bb962d9df0bfb050115d304dd33f98cebb6c1a4ef05d2cf9e09c34 -a6a4fe5e0b4f0bc8d6192c1c52faf178a248ba1228a9f8df7b20c8caa3fcbff81b7e32b2edbf98c224879c0b18a298a1 -aef2865260b507624dc8e12aff7bc8b46e0e7471df39c2b6892833838c18e7a64e57aeede556ba42225ea0b20c706acb -af0c96673b290197e9fd493de9da77d08ef153ca4c77f3e33f3ae6f6e0a9e1da4f58726962a907d7bc09e65c2c4798ba -8e7323326dd8079c6ff351a94b902778a9b02601fc09377789cf8aff7c91d957de3a6d8a4225173053cc0b75a1a4c270 -b08e8d36a3ad46dbfdfe56c7ba2eb777d75ebb886c08a00b364f0433dc1dbf34d252e54653abb626cd40e15d599f0608 -b19c07923e56238c358032fee76aeb0cc37c4e02ff65df26e609d131f8d7592c161b52f222a758b6b4baf4b0698edf9f -980d1c0f8bf4fc2da9953ae5fb5a3a00b4ecfe8676ca305ab6972883de197b6bddb810053d19ce99c0e2d5914f5ac0fd -aff45b58109672fa091458e819a659d8b2fa0a7844e707b78f945b7bb093410ae6e67f2f2f0f1a17f78957ff6317c5f5 -8a6dd21166bc224894ac5100ac8d7f77f66880b3532c0df9b35077fbfc938c730d7c36ce076d68bee60eb4fe8ae91cbd -85fd4511d61ea0f78006b5d4c6cd8268f55eb7fea6709d2e85b14e5a03b9cea875eeec0c1ce238ac15a6c9393842f281 -a70b5ae308a5ed6253306250aa39dd6077748e4a18ba9b554d7503bd4ae493bad48606100c71e856be2c5420701dffed -a515595eb24cbe324bc3f94ece730a23854700ad93bacc6120026d7dd5cd03212bc415e0a25e48a9206d99d90453e79e -942b36ce768c511d65d12a1bf376287de5fd66bed4d9c6e3cf600989a39519a587f3613bbb00685b0e45c281e4a0c452 -83a5c6f179d8e86a5b68bef155720589509b8bbdfb78b2c76a9c83914b89904fb42a75b45418a528ed66099a9d173ecb -83448accbc24fc52bfc27bf4601fecccdbd53eb5bcfe7a51cc006700499d37025fe4ed2c46161ae8d28d42dce5d9e2ea -8a010850814a0c4db30acfc5a2c07468a446b9dae3f429efcd7a312b3f598c0952ca3a6ca749b7d5117180432f7981e4 -b228090f42a87322e6779888ecb8b4fd825c0dc79e7c00132150a4c593e16e38d37e838b6168bc23dee58e957da1b99d -af16dbd5ad98a41d7ad725aff4cda4f7feee1063e3b2ef9a85812c88bcd1bc1e8c0f6aed171c1c5fbbaa14b9394fb1b2 -b176706487da733cc9116653c277b484fa84896d32b12e861783a0fec8eeebae9dbe0fa91d91ccee0b986adc4810d1a7 -b33dc169ce8d3d0c6a4e24682d1430fcc8c8c19de46dfe3614a3038c766c839f9f31ff9475633426c90fab0e1e3972c7 -a8e831183d1de7ee12916a3b449e2e9e41f069a2f51fb8035f9349006e82f5a22f63e8cbbaaef41efc4ca25c857ead76 -8dfff2fc0a9c853b1a3d99d3a39e8fc226251f188cfb684b44fb242b779243e83147a98800510f19537c12aab46e4327 -8d8e5feeec647f13a5186bc8c4d2c5141bbcebdf9d2f836435733d2efa75badffe57081211a6f2cf8e87929d1fc04fad -af594e0e48ec2f88bab23204e02207d1144fc5eba69e7fb16311d1aa46b442f45ae8e8726448499bbd82eb4d523ac6aa -a74c860f9d66e676a8a25c6f643644e484b0bd91574e1bf23486e979468249b8da1f4c52b5ccaf331f61ce3993b47ce4 -98767036d5f42c3d3d6e92bd1b176f165eaf1bfbdcc0f8b78a41bef23c68f6619d918e0b1236295662e02790fbe69b29 -a6c3bd7174522b4f70cd338968eaa526a072661de9cea2e0f689ccc707392f5239029441c25ed8082f4f920bdc90f6a4 -89c9270b00f3396bdf7e157bc72c1c6073fcda9a8fb74ca46cc61ce8c6080852e62c7c7cef0a12a36d62526eab47b2fb -92a40c911deaa49d682d285e523c6c8e9d72326620e096399dc1fc0fc758811d9d1e4619529918cfbffd6ad249e09dce -acef1169e9d7636125bbe7a4a2ae670407a14d8ade3281dc0701a0ffd3d474ae7f0c2ab7e5db1631319f52e3e278daca -92b43ec4e3c5bb047d018683fb62f3c50d7f3cad409cf3992b9bee03a308c299b7b2b73ddbb0cb445c886392082d1b6d -ac4b72ec840e593ef3f154a2896cba7530c7b245187275e6e68c65da0b58195580f112d51373e36cf7977ea8362b98b0 -a4cb8adaf311285056c2753795ddea6ec8775ff9c1eb635d39fefa59d0d630ccf68b2c92de2f063835923819aae4d1f3 -b28d62a46ded2e889f397f871508b64f82f9d19d7eb1d0c396aabfde3c21856a4c274bacb116c6d180a1b67e9dd4d6d2 -802309d1e92a9b56cb67eb81076c66255c48d6ab8fb683e8964a2a4e42156f5d1dda7489dce39be64cf69c6e11a62292 -88346b771b7575702da0479767009112ca9fcc119c55be73f573268a5f80c00988ca56da0e96c9aa035a9a70c29ac2d9 -9410ccdb67c9e9bd632529a6e32cd8763236118be74a7269182d491af2b4b050fafc29ccc5596c65425e97a7d62737a6 -8419da76f6ae86ad5473270edc831804902ddcb32e2bb5b91858a8d32fd90202ad1e7b83d02fb8ae870427200958ee9c -98b4c81723ac7981f5457f5972d0764c52df4e7884f8f677b702c757dd202298a55d1b0c9c66c45461e58cb60fbb71c4 -a0db34ec3ba07a39688115fab56fe535e645550bf7cb80593087c1f271d1859df8cb6318b08d9a90ffb06eef1795b6a9 -b404cc7e0bc049f1852a6c41db65173f64d32964bd3d8b225d1902d61df9c47f0c4748c972212a60d94ec0ff378199c6 -81cf8324fb341549e0be456421b973ec7f0f7678d02fd688dca82c0c67dab27974ad926da4541b9ddda4293bca1714d4 -869eb17879af8be1b74f1eafc4a7d5efceed18a59493f09e49f0a54b976db20b86efc1f7469470991117545db2d5e0c2 -abd400cb31b79373e83febb51feccb04be54594ef339bff6b27060b1fd9cc4166204297ce6cfe7e35e10956d77821b63 -8934ae372546374b81874114e05e9a8f657519c9b5610c92a9fa7998308eec6590e3bbde6603ec5d6068e365cd6ba4a0 -a641fdb324d269e8e398fa1c4a995676e12b388e4aea04f9be059e53d9a592699a3f90b667733ab37e4af414c2672797 -8733c0e88d7872a23e1a19bb03cbbcbc21dc24d33629e06e26593faf80135aaf2ab152499d54c2fad61fe2a5623c6de4 -b0edcbdd024492c7b97031179b3a73b766a51d9b8e8ce74e7a50112575930370aca39b0120e777046ff73a1d3d98322b -adcb9f33cac546f00631df518e956a5855523fe189dfb5f92c0122c2ae40996701215a5c0c182ccba036c2d205845285 -991f157e50291ba5a5ffaf57f9c1c4bd5a987548a9f7b19c3c8eedd414abb785c8ab6f51bc766d285c6f85b25db1a829 -81fe3ed83fbe3053ddf47561d12875cf4da0270155b50e8b6c5beab31e4a295f167df96427a6a9a638b209264e50d591 -933bf009a45e43fa3294e2252949fbd76337fd6201699a4648e464f84144e36d245e1215f51ea93fbba76ce4c36ab2c3 -8eb3759f364f49a65ccfba1adc0d12c564e31936a8c3b86b274a84fbc1d67919c87db5f58c92b2778094b9cd2e0ea0b0 -b46daa9261e739448268775ead25a2a907807a0653674ce416358302652485ce29026806a5c080f93584f9b63ef1b870 -8e265bd8eb701c8640db63ad8982d392c2f04acb572f8a7819e5d2811f276b658b2dfbcd9124bda8362198da4077cf57 -974a1ae8b109dd0e8bbc95decd68a2fd23c38d3ee3ea91b847d9f46dfd5175337e22c0fc81014281a929c22b8f6cd8bc -8037a033791944866830d4e92ad026f62a948505d9dbee2812a3afa5d6284583784f36796e59cbd6f03485a4c9b6f8f2 -8b29ac555fa0f9e82629a7e37bdf2b23f5ec30a34b0fba0efe00a787336baa69107e4e6ea504af60c446b3e32038b08b -92e46327da3cdc5ee89689cc5a8d51cbee604fb3545dea358fab77ade60c1cc52eef078590d40466539471300ba4cfad -918ab27dcfda124766942542a0e666b2e708f67e5c9d2b26f277002d00cea7f2d76535fc1d2b66d86420d891720e6daa -a3c4ce4898354f4c052c48ad269629186f1a8885d14adc2e17dec724dc0e6206cf5719cc2f926e1087fd755494d79b18 -a440d5731f64cc037e74f3938d1b2b28a0d203d058e7cd190528369fe23345817950afcd5ad21b3d982ae88ac72190f5 -8193c27e58c6cbcb16a97ef06e4ff69f7dc1c87e4743dd9254aed6a714e7b8e1e0ec768900e41dc3b39cfd407a1db3f1 -86f191157c8e85b5f0e7152f632346fca712dfdb1879d5deacde18dbf918194f3246a6c46e8e9d7d71b0ab429a059b37 -84ae83021192215245d26aa84295d02c15051570758e100c1d7ab82f78161cd772ffad2112620ef0d8680477832c4031 -a4c81b0002e40ecc379e0a2c2ad3ae80ca4ee0b1030a89ce58e28061ae7c8c455fb6e5b58dcdb02c749f7fea72fcfc1f -b8371a720c83686be25c8e63a37127e1b1b612f2652df965fe215d044df070cce156e3e5a062f0159c495c66d05efc04 -a621a637dbe143f099ce34dac177c9c4384d27b431230b6fc17ea4478913dc9efa1029eee0b8b04c07e31ebb07e0c397 -a7022d1eddb9deef129a62e4e9e04e37011cd200cda8248126689d8ab41eeb1516267afea53e0e681c59e5bf9d307199 -91d41d3f25575ebc036148cddbb6bb956f316eec09d881f75bee17f315ca0b2dce519b6da1a53365605c99e9ea21267a -ab63040dc84060885f4bfcccaa85fa45073141329c3b02b500d52e8e501f4ea651d1920ba635a2b79eb0244a6be5b68b -ab20bdf8969207c69d38bf297aca90a2a5069c652b158a9e6c3053e844d87f2b95148dae5bde68fd2e0e42503451a00b -827a020a26e824ab606f287d517e315dd992d6ed2c8c982e3bb7de3d54210791516cbbeeace31f42a09f076db98ec686 -843a815d2ec52f80dd8caf22f6d7998cf61c06ffebc37c63d1b990655f50223d1e0cfd795f8d6574ba8ebd82d9832b2d -a595fface5650664e51c603d76c8d7476f4657fe49ce883e8726c3e6146214e870e6d1ed8d63a3d765de23ce72e19e08 -ae48c329586ba4d025854abd156d5b2545805ee775c6ab095c254e3754fed65359327a0cbe32cbfbf1cdb0f97b352a75 -a69e783c8f3cca9a52ae30c954ff75131174aff108de903d3c16aeb77a481dd0ba632cb78ace088accd77e53c0b2b0a8 -b18c69d7c7b52072b125ce78a19b2dfe47c0c1a7d8e9c2152591e8853c004760db4ee6120bd6a1d5466b2141af490a25 -ada5ec5285afd44751dd1ba4a3cc9a9910711be18229d7b622933db4c10523cbebaeb6e4f4fc556c79a0bd1d045f9bba -94a051724e5ae356d4c5c0861da835a196f7c4289d088217b92e7067a12d2335d98bc0ad4fe591a494ba9e9f6469c963 -ac40df154abaab6427f8e2f335023afa05be0e12884ae8d5932eb1a81e0386b6e68c4632d1c0f6c11def67b0b4c79b25 -92c335770ebac3ac14f1c56beb617dd1dd134aa7a691b8883dcef104d80a5f04229e0bf9346cce0e6ef85e028c97e4bf -84c52736ec2731d82ad82eed79e1686d88146e6db561674549981a73801f93e91fe1b79eeafdd521cfae29f2fcf7e5aa -9965e135c7f44c2fa497edaf5b3a3540fb08ac902be0a075e6e130f93668dcdd6b2a8624996f81f76968f49309dc0314 -912c059c8131e73dcbca17517f35e0767792337e02c86de289c04202ed69ef9c7a57774649df8ba169eec8c0eb49f4e8 -8977256599f48d1c28b883988285daf42a53a15cbcb11d87c3a2d69bf20001c38c0d72719dc1af43a438fc2da77ee78e -974701aecb6c0ebe278be8297afa491e0d8232796d4ce4e5c3ce8a57043e22eed36517cc6a184b6af811447ae28bf846 -9769a3b8b931e07fec9c02cfd4c51f15b5cb37bacf5e47bafa32c0fd937963b0e0010fc1f963802dc24d89d37018358b -979ff8cf0f472fb2621f7bcff40f76739bc8eefd83d3a673d7bfea6f0c563365d9c8083ce71ed9107a330191cce6b07d -96c20d0db06f4948a19de606a42a84a0cac850dbfe05280f11f62a9832d7d2cec4f7a40c16face069c78736e6cdcfd61 -ae4782233342c02901ab2ee6f49b43a3f8dec4d50e83251ab3956ec29c6f67ed934dccec52f0a5a5b068a267c32d8f89 -86dfe7862de9fec66666dcf00fadfebd81a24cf82ccc900451cfef04c06b0d203f10a621695f53c25c22ab7540c8d532 -8778132b6fadb3b8186219ec03a457b21a365ca20f0ccdb6b2174c0fc396dcebe66e363cf8859315b2423a9ad188a040 -ad6ac25dc4c04777a54b13a15df68ecb97037b3b6148b8d593ed8712993b3de5154d09e4ea22e1ef6b63643189e1cc71 -ac7ac4a7b30d18ee1b79017b6a3169289fd72721cf274fe9b8373375c163f6a5226a38acbaeb2aab67d9128a0f247f88 -b56eb67b31ec85c73536cd664cddd2e9890557a917ac589cb1f05e5ecc27690608ee4ed2a7d234c45af11a5f0f97ad53 -b3aeef6101227197104ce802c87621c6d09808388f4feb364cb9c0630cd71ddbc4a1bfb5e891b1aad5888b26482431e5 -93f565fa505833d5cb76b23d5928a7ec955dd754fdf7300fa4f01fdee752e30adef8f91c3ba94411a58fbf5018ba62b3 -a699045ab8b898f4ee265d1f4548788cecb5861de8697cb35193744fa8917b34d2817b8ee67ced2c90aa9661a3dde43d -933ee92a18863b164efa9dd6e813fcada50edca408776f0e27f3f6633b1ad30a85763c9daa9a7204db8350f627d4b235 -83b8eaf9c5524fd8534f6f66a14102b0183e0d37463556ebc777301b4298c97eed7b454041a25c723493da925fcdc8b3 -9405f4fd069ba5fe18acf22af977ed09004135273665eb5441652afba9475ab2de549331503ee2b7322857a1f139d613 -b3f55b8afdae1bfde6bf840c7e30da0a161e8a0a9e27e09070688720e0518e71b2b3a87365371463a81221ddde23774b -af0c120fa403fc0dae19e51e6ce3152c56d71a73b4e237a64732739527ec1ecb8721cda69ba96ecfa78091195220af10 -952a66436ae24f5a73bab30301a347580a7b14c759a6f7ece69522cfb3f5a325635bb018dc1f277ccbf80151f85463a6 -90e604dfe68e58ff9a3405742bc04163d920811caef3a49491412663bea36bef33350adc5f656555a8473016f9bf2417 -af3acf7ceb9bb60bb3f0c827bfb1a872714f172a57bf13a00deff4c5821a6ea3dc131b1fc56c91e12da328d433a50086 -a0c941013249af9410b5e48c4ea19ab5792468530190237406519e5907dd490b790581a5ba07910a3c3de530c5f1289d -884b448dcd6331440bd4f50da31772c943184e00cf246600b5cd923a79928c5d87492602a9f62c8cc3c5a76ef534a67d -a275c9cf5498772748743d55e99d5fa54d3ef495202f46bb439c0e07728eb0b58ee5f59b3fd1b4233e2266aeda829c11 -aa9f78222ced7796588d848c7d2964b4a0e229a702d16bd6cd2020e34138ddfdd24faf01c77f9d1a6fb1bc9ba8c2f820 -b7b34e56b94aa15f83b71b757a3465ea47ac4e5a39095bbe683fc6c6713c87631a15b81b9994d56846d153f1cc51b103 -ae54faa7aeb046ec0e77db95f35ee5e1f1274ec2346dc1f1734d70e86bcce54feb9fc52e94879791f16e691c2da67374 -b6f0c9eaa7a32d8811b597680b5acd16faf2394ab6772b8621bec7cdaa3a249d1674a5b45f312f92ec81514aec551052 -a88ff68063f30795884333dd033bccb397c7866af6922d6b09b968729a49d13c33fd66cafccf00579d88f23668b2a9f6 -8a897fe4e6165a62f3605d33235e91b5a999762d0f822655d44bbeb7a006dc7c08300f48e19d299723ee22f23f884742 -b67a42d41ffc93f8004d6d72f29077f8e26620ca510ee35d9f0b5bbf34e26e5c2353552b9f57776e55d5b0cd095aa311 -a27689f0949df64cceda7ad2beaa4ca9bbc4ed85da9b2fbea96c604445a2284faf8078dfbfa5a1e1514bb1b7156e2fde -b6064f305165fa52ee7efd5846b9871338f42ef06400e642882270659917c71e8e6f8bdd84e0b07b5305883c26d6832e -b5d4e50a19ade548c1e71d4252bd078d8e729e3c88cc0888969620db31930ff42712784090ecb456c60a0368620dcbf7 -a26f4fa8d75f350b9c1f4d989fc6af06e0c61be7220589438d4d4ef6f2f4d1a0ded7901a46edcabad234260c7fdcbb89 -9737ddf44d1ae3fcd9a4d6e095fde2e761ff0169f2df2783562ade0880d531191266b460c3924b007a97eda482c0c15a -a1e50e270d2629a01c5f90afd59bd5cff365de8af44e2ea572200cc444c7b7cc10d4d843df6d34fa9b783fb0b6b12326 -b274fbbc10628736c5c2c1b3ffbfe7ef2fe8e33ff5d3424b4e685c44964d576e8cfb7b9fc491c4293031b2dd4a00ced0 -a0fe81040c264126d9163da6694580c5b7203f4c69f8dfdfd842326f0ae724239a232019379357e4f12a5ba22447a06e -87fe3ee98cb358f6e26e7647b6910bd2286d5864f8544d7f34cf5949464c5854c58e35fae79b43e0edec8ed0bb189c06 -82c28a86c0cd0380ef0c14337c38e09e07a5b671d304b8f60b315dff470211350d930138bba3602ec9ea8b4d5f9db52c -96a86ac8736f8155c1d661cdf537125750c66f3bbeaff54388944c46e3b482f7b25c8f7101c9dada2f63841534979184 -89c92e713a0795caaa711ef9bc7cc23cc0314a3b4290209f57df3d8c74cbe943f495711f0c28064ef1b6540cbd0ce036 -800e9eb3ad2a7e11deccf92708f3649e37009e1851f9bc5686524e4fd47e9d799275ca3e95fa0a51c9424a659a546aca -914abd539869ee464aafd6bf78cd63e0ea88fc21be5d1a8bf81bce4473ddb333728ce631618a2f23e2afbc4ec0dc660d -b652c3453d34a7b9b45ae3bc2542bbc32023571ba377bc5416e9989113e96eab94d57ffa31a0c73c5d1a71b51b9659a5 -ace4559844a367e30a9dcd0047ee21693d6232d9c6557e1b92805a0c2a2eca9b970b6104be0d3e360ad8f4a9ce2779c2 -843ddbee50b9715f067285772f9a04c48b41d9a957727e1e04899d9ec0372355a708e61d39c32956e119cc77e9abb0fb -ae3b4f57050968d1b3dcbd9b5bb5f3e2aacaddb39aa84229e4718b9cc03736467ea6e35606136f60e3b72b35eecca5dd -96ad4da2c505b7da33c724893a403197d4a5a393092d04a0b62151f99c8e04ad944ceeb031c9362481cc83d99ee50996 -b4973acd731be9ef200b505ce72e77fa781afa269290c8160b545aa14e4a0ce0d704f0ba8117b6c2dc8bc144ace6ed40 -9159f84f8fe9b85e749007e63d36317a3336a1b1a7e440fb084ae6fb4a3a6d2afac0b0cdd6b382bce3779159e0b814b0 -98654b7af82e7e1b643ffdd09e125fa916e0b39588908596fb802aab82c3bd8f379f4593fe8c1fc7c533d8518af42e39 -b47e4d79ccd82c4a1ba3df20dc809662320fb775cc2b5010f58572e1c2051a52c013dea507a3e3b681dfd9b98bd5ada6 -98ea992f0ed02bb12c305017126dc0e3709bb7a1c5257fecd94f54699303ca8cd3f568c7bddd8ed5bc30dab458dec9e0 -8d7bf1317239e3c21b8778848d479795a9098033731544654bffe13f8be88671561c4c65f45e71a7b7e21adc9a76bef9 -b56ec8f5484d1d6b0730960652eab5974e88fedb5642500933c9382e922fb473186319f4a534bf799a925335fa69cb2f -8e7a801d1e39b8dafa84a1bb9be4da78da41df793e2757b80b435f24d4f4fbadc436ee265c2de53de5e81ef02973669b -b74a9840cc4f59aec04947a389fad3d7811c4c60eecf7d4f1ba9de6d3d04b7f760d7d3332b97f40ced1fbaff52b7b89c -a8cbad1896bb20a5329ae4d4ebc4e04b0ee8e763e006050f7bb2e18994f11c65f7cd57355964f1d03b98fbca500a64e6 -83a9fe1753eefb84aea64339c416e5bf6bbb67b877ae4834c388fdbb1bb4791a22af59bd8172f0400253a1f7405071fa -b9cb49a7a2fa5904f850989fccf089900fd9488bf6024199dd7d5d797d35a5513e32bb85d78ed91349b93bff0f313cd9 -aa507796d3cc78b8732bba85e4fd8dfc790e8ce6711a5ca75a27c6b9f6c3ae5afbfce696daa7e2ccb31a0b722c996b28 -a4fb761dab54ead40dad4a34d19fb6912337eef0463a6ecc0ff816a8394f2e540f78faba7ac9358bf013e406c23418b6 -a3943c1926c5ef891f3e76b3116b2cfbc05bf048f4e5c99712194b5601e830635c90584b535ab1ad47c6c8a494c811d0 -b0f166d2c5fb07b1c96043b0a7e71ceeb243122330043978331fe8392796df3cc420cbd59f89a9c0f2e950dcf843b428 -8030e3ec511eac9d90e81eb1f219c14c23eaeb82d101a1cf88ce5674d41191ed18f773472f222b5c7071d2319b12d875 -91f0478cb91f3d0bcaea82df36cbca937c38a393b28b3b6d2af28c6d653fcf42912a7a5c7ae0f890685df6d7e3f1ab8b -8b888613c52c0b4e91845d7175aaf7f2de756a11aa7e82cd26e1dd489b04ad62aa585fcd0f92748d8b45257eacf8fdc5 -8a13d62dc07ed4ae220f8f339b3fdedcde68cd1720988c6f2409ab81ec4663b8ffcbe63e110b89b6311e1380a8dfc93f -a3ca0100c7da9a1976d948d9ffaa1e12e90adaddaa8a741978e367b2308b8d7272506030605dc7a759da4d1d56253b5b -878a79b06334b14cd23b801dfc4769a2a6c6adc97758b180ba6ba81be729de7a2e2d914ab86642563a83c6c18a3e684f -a9f5bdda8edd8c1fb9b5bb9e08940c0577688e8785ab6b9c87516027ca0409361e647b47a59fa97bb11307272de58a22 -b6ef00890eba760a3cb765a8cbc00643bfac23290c5eea5f9afd0235df42054c15a79f578642d721f7064f1071a200a3 -b0cef537eafea359e62ffc453d937935089fdee23cb4b691bf43f8e64698c59f2d81bb02e9994345ea26f78417470b16 -b5426a7a581d7dcc4e6136901e3551c27dc4dd442b2849786ca61453ee8082f15d41d0ae23c2a8cec4160b7c4da4ea22 -8432e93e19fc24961201dd750f7d14c9fca69a457fe9e97a9cc9b618927896d1a523d2cd9418243025d9978c3f781528 -a11cec4c9c707c51ac9583b4ecd1fc80d3b848b539f9429edd532d50d8a93f3219dc98100922af3d45d2ac8ec0315723 -a5a0fa3e3d8bf1316422aef9d449c63d63ecb4fb294b4987e1ce768135a3ad7aa9cb81a3dfb0e51d5d0ecc5b6b2e6c29 -b3a1cb977dbcf38487f94ceb72ac3d4111b55a3e5ee71b14860a975ec8f08001e3a129675527194b808dc2cc2fec69da -8df5a9e743cf36cdad2e2a425c332daf317d418ad0c4e6676cccce659e57af12a35b059ae11ccb08c80d41f7d3aee472 -b5b25b3d7063f13f8f634cdc7be4f2b619c9b948cf28a5c2d189ceec3752b55f99cda9a2d65d2ebf96ce895d0348a79e -a4a5d32d74d5b1077d1dcba527ec40a8669ddeea9796d51568cd44c3f481a9cf870cf66354fbdd262ddfa9e189d41b10 -95196a2873b5bed8c4cab84250bf874572828697d4beca9fbc16048053ddf913063b001678c9e8c99992e057b5644402 -a77930043de6d3231cbf6d66f82a8a746e4f77775c5c1e35fd19d43b70399c94d30ea9895c82c865a6c4ee60f206a9ed -99de8f9dab554fc07e061e9fd411ef916f46139a4461607f5d601d6930194d3433882f6427ac8a346cf867cbbd08097c -b76809b153f611ab9d16bc49cdf9774343f82d6fc1939f13a49b20f8e8dc0ef679f07f534bd5acd5404ffdf3fc18f04e -8c6d45c1cab2759209e0ffaca93d0f7602122e883b5ae71c79087abd781585f33b4b89c3f5505da82897fb2c6379ddb5 -984279d4c9ee8f51eaee7a146ed665094bfc1bc97a50bcf1a77e18b6304fc71fd2a6ef58daf3abf1160d744d9813c035 -83529d6085fa4142ed5c7e950cbe25d87f1a16955c2a7b963478daa4940f0cf8f31571589d537cdc02a7eb39df019872 -8f4c88ed9d4f0ae38f5b3c014414cd50bd2387393996f35a91491fad83fe0ea9a112c48369ef2e901eae345c72be7690 -b1ef0a88686b4d48455ea06d5e9bedc92c13789774df37e2f0868da3b55d06aaf58a41fcce391f5cc0861f35441877a8 -82b92a1ea191176167375b5c1374b27ba710c768d81cee06cde787790db098d9f12415711400747fd54612ef9af0ea6e +854262641262cb9e056a8512808ea6864d903dbcad713fd6da8dddfa5ce40d85612c912063ace060ed8c4bf005bab839 +86f708eee5ae0cf40be36993e760d9cb3b2371f22db3209947c5d21ea68e55186b30871c50bf11ef29e5248bf42d5678 +94f9c0bafb23cbbf34a93a64243e3e0f934b57593651f3464de7dc174468123d9698f1b9dfa22bb5b6eb96eae002f29f +82b8775b874067bdd4479ac237f8d56036a742c17901354caaf38bf8c70e696650fbec76f0cd941ed8c658f44ea359ff +a7ce299c79c7d7e4f1adecd754c5aff8a720728ab27f5737b7b399f72724407ac54965088596375b8c876665ed8e4ff1 +81ca4c808a76a6f217f8b0540ff400199295da69b2587b7be6aeb56447fa4fac08d154a27c4aa6082bc40660078d36e9 +a70bad5311c97f1f3fea5d3375da1a11ba948aca41609ea28666dd343e07af766834e1256dc685ac1dcd915073250864 +a91c2911a658ba79f56abe30716a3398387630e785b351b07344022a04b2f5c90de5573bd6e8048fe8878dde19336c5b +a8c560283fce9813bcbaddfb78cff93efcbc39b33025cfad94ebd40942a9fa605d2a947dc3a1f03c2e454075892e96bf +aa14f07fbd2c1ce7bd995e335c69b5f675ea573517c1834e787b30ab4fa10aecc62ecc5e617ac8a539af1aff114dc9ec +87f03429aff126b7c5a918423da278e17b5f48a4cdd6d34dba77a75f4f99e26a417e65d6a8579bcb2eaaf1d4d8c64dce +b1ac81ba91ede78315f712d524e9d821a152203f04141ba77f4e481ad5881473dff14a71788ce941f0905b429e7ee5b2 +8f5c2af611ddfa3edf7e442d00e56a24d615bac848c05070c908c741ba18b67eb2e82e6651c9b3c70fb8edbf051810c4 +aa4115b19221e4d17cc335d4f9b0aad22df566231f2286d550e97ff2875cbc419edfa189c4ecb24001123b95c6aaa2da +b363ba913969df0debd4e2712ae6e9177ce82e169ce7e0ff1d7616ef8e352aff3efb40fffbf7bff1b21cb8a33e19b455 +b1013d778727d20466778cea47e1bf56a77168a8ce1b33bb1265f66438ab2bf4a7df4f4142b8681f2993ea9baf798d17 +83b7250ee17d8529207db97b73c1c4a92ac076951a577ce2fe3a2cd633b461c1820c139ab36a895a5962e143c6198386 +86d180bd2f0a4919764e6f4e846ec0d5ebe44060ec1e529ed15101d7e531bf1b8f9412916ea5aeb93b37b2d7c6bfb408 +827451462c79d74b504c01bda199481b3c70416f66a95b2216686ca4d48da48932b0d323d0cd630a1e86e8033e832e5f +b789d217cb12c334fedff0ae01f85b96e968fb98761755d1ba3ee17934e8fbd83172225df7c0c6cb99432a30a0ef8c24 +b730e5412dfbd646b0d2fe084a1a32eb5596c3fe8a5bc0f430151804f9e67f05f70b522e9aef08082b0afdc652a1d213 +9987653bacd9bc1659b17f6964aec06ea63b787813d4601bee0479706aed5595ac82c87ed4f96f0cd30c19e1d9510a91 +9506a9ba38f1d26c35a17c7e2554e28eb347a19cef523846a2559fb80fb40306b2f85bdc2c9fb98c2267df21c1ee3589 +98dda58de74c0cdaef97b2826b4a9d53c9e9ea592dc0a755ccf5b3fbc1264979578563f5979aaa246e679918053c5f83 +b00aaa16841ab53883af481e2f925050f5f7bf7d8088bc696f55f30593bdbbaf434f5d2b46095ed097b6cdb96c8fbc3b +b463d656480f89335d3a840a7b9398877003985388871b148ba708c60f9857c7585ef17c8b2ae67fbb191c04ad61e692 +80af54f3d0584126e23635276d650292baf7e3e12bb06468708107bcd80937d36575721ee7472c5f085ffa71dbf438ad +94ccb8ade84e834685110c96908b42e10d2184208f434d7f98d96cc158e0c0c95135979600e5e9f465d5846b0bb3c787 +8e13674b00c633d7cceb4f6ecd61e4f99420d6cccf9db5e81f8c90f6c661bc76e10939b83b56c225fce8565f525d4fa4 +a46a15b2e671c1a1df2490768dec1093caf537e1a21fbc11ff8ba8b21b9f2be8d50257027d9357df20d9fbb1307d7249 +b8ed532d48b0533a3084d7a5eea7b401255c5825e9a1b80ed81fd530cd69e347d152b1ad8a899acff7d68e0103bbfbde +ad6b7df980ebaa24177d830c4aa522d6179a9a489257f60ee6604cccc2cbe90fb1f72aa9d5bee0d3a88f73b179485f56 +a56855e9fcf62ceef3043991a93ec24f8f6b5667ef5fb7ad1771249ece68a73580ec3cf3e58a009ca4650c01241ad172 +ab2f25517d4b0b33d317eb78d091d3c3f98dc352b8a3e4650f7005f9327129e23d95f38eaeda5e9b51c50a31d20a4c20 +a2d4071385b8a421da86f39739eaadcdea5685466feb6ac083cba0ea4c71dbbdf655032097276d703f9a77a4ca6fab03 +a8681d7c258984f01e92e92c95738692b7bbd59c3a802adf4dda8d34add69590b080391c09e98e3b75c085c9f191e5e5 +97685643da6c07b5e5fe91393122813ba11c8ef3dbd43a03b3a22a7a1603201fd516c1929418eafb14039270694c239a +a7bb3b85d6101e4fb0bcf540f52041cdb3e819d517465e342b832f0e91346a9a18bdb38845ea4d2b71ab87ef3bf59f96 +8afc90b7d35336fdcf8f81cd024e921e244520ecfcb5a3994f2bbd595366b68bfa792a8dceb11e1e889b11432c9dad6b +94d9db7bd04f962d8d6caa3b7aa0f19acbd58a09d35ae187158d77e537d2fc65215f51f1afd62d4ba378e7d176a680f9 +ad62d7c01b14b6f97e6084ec9f9d084f106a7ff3d603032e6e34c027cdce4b0fe3c20ac7931f1209439a59c9fede4815 +a5b44a87bd0ada7498e011e495a2818a8694746c4e7dc9d24c0c1096f54be6439e08c1b11c10d7c4bf68fe392000e971 +828626c6609acc599f1bf216e9a4310fc3cb227e0d2e47bfe3360239427c8b0cc300cddf92456a5c36620596a6d37027 +8380f91baac6447dd39886455ec5d99b874ac114a3c6a6ded18fc4ef69c2208ec19732428d8329d200a69f31792b852e +85a8389b522b0a686234450165514127006baaa3907f6eb29c976522591a542ffb681b3b88c4886814fd7ba3cc8110f7 +b8ae7949ddafad37c0bc4d48325a7cbcd3096fb92c04a027c650a03cc609c7eac250d6a7ba341616bc36f64f1b4c8be4 +8f9b9d2c2ab5c85abe946ed9986e0f304281b277d4d48c7760ea2331b55a9e9a1c4d53a6bdd83fa6294f421ca7431e29 +9464b906ea8bc994b31e03c5f2af2be0724a43293fd42cbd2263b2de75a2ec04832d1100ce62ac2c0708f05fb6bb3ce6 +93d923f6805e7cf972d8387b352d77215724a3e1f5489c4114fcf0b25fc2231963eda872387a1369a02b2e8b888d6427 +aba4af392884eb7283fc5611ddc1cebfecf9477462e951bdae650e311606e129b4424452a3a14717146f954a7fa1cfc3 +a8d0bab694d116e4f21fa19ff8fa4c6fe4061dbb54cbceda8235a7e05159737f87e008beccb90df0bac9c7d572281903 +85743e3ecbac7ae04a81a09c2961397aa4bd20401533cd24d5fc0693cbfbdd2b37bbee6dec2ae5d0a66250d1fcba6944 +80ae913447d7d3f6c54f9cb584aa1603308146daeb3024c8e06ede66ddc97821df09f9591453e9b617b828a02d54c719 +803c2a64bb1c68890b5f1909be3aa180830ee3ef316d3aac38bfd909e2b19d890525e18e8fc2f405ee70ac14f5569b3f +964d2968724eb790f2f42263fcaaa1869c373b57b3eeee904f8b36f13169f07d5e29cb2b03c74d3a7adb772e91d5a59a +98a72ce71a57262aa058643a5cd39af64cc9eee88bef7edb003143983f29d87c7f9658b1ec89712f79f6f79dc24a6a45 +91f3479c5d7c76acd2d51883961179efc975c714720187cc9c0aa7aeff71ca1b3e2db5b0a90fd3ff6abf880ebc49fe36 +84312757edd09f111420bfede10ed3c1fa39d1723ddb9bd4d0004c829f0c1eb060e9648fd75f2e5427a67a5b37945a9f +95edd726cf4042a082d786262304c51d8d5e6a89b1b58e825a11febe5f861d5ce076bdcb2fc0a5dfa95eb2e5b0ffc32e +96500da38f942871d78fcc46cda1e72944c7888b538b82e2a979f149e5061a20c7602860f82b76510d02efdf3a911f5a +8ac62eda98bef8864df243696b53651a02a391b898535d2d76ac5a8e9322e0178a290c83f5afe72ffe80ad56183469e3 +8ab2d4427fb6d3da5cf6c59835bdb39fb0c2de82c213b5de77edae3304458ea505511bd98fda95bdbbb9058bd5e92c34 +ab67c4344a5080930029ca3b803883ad05ca004ddefb48d5164e71a1c6dd96b27aaec70f62b39bb126ce1a57bbff1453 +86c6bf91686bff714a873a78b0fe449db5317a5172a0a14eb3a96b2997b888d5d3f440de8baa32a6966fe44c3625b014 +81d4f1e9d9e550125290d993a4886d46aac8cb29dbbba1e608aefc3432569c5faf14d8b49fcb485d9b75b649ad6b2fa5 +8594140f253ced6fa98dd90ab4f38899916bcc6f1052572f182e46c00752f3053c390512338a0bc8f8c27a91916b855f +911284d4fad4999bb37590206d582b9e62ffbb815f414fd829f5b2843e6f0e1a132cd64464c131d5a0f476469a37daa1 +8631a6a4987410982db9c0ba632023a5b613f553b6b8ffd3cfd501b2417523ba8cf06741c62f24b405554bd93e39e626 +906ac35d22794a10a7273fdbca499fd921799b1ce9414643779dce9e1ec37920a5aa2caceb4b70a0eaf56c6032ef1b43 +87374cdb8b7a1ce3c182b31eec465d435e35df782fe3a11f421462b48cf56c6fef2a9cb8ee4fe89672ba7804156d9e3a +a1f825e0246eee506c8ce40f849a17f75e8a0d6fc3f68b6a4dd431173b4fe997d30dca53005829e4e2422a4077ce35c7 +875ad0379abd9873f6634692e33e9b36353e1a0d15b13d3215eb591244e1f236eb2f8f75274ca7f096179d1714fa68b7 +b87b4e1acc09c5701fd9d75375ab896f178c1b3648fb9a2e2c6e1478778156decc32cd390766f3e80b36beb1e3a6bdec +836ca80949269eb52395776ac5ceb35b7df717a981c5cbbbb627f73c274aa8164e973a7b01012fa72a02404e878a9918 +a770b13a8f07f74e5a75842b18f2520f6d0be42c865a29dd81bfe485e69a83c40ad10ce229afce276ccc9cb46c54b912 +b4b919322bba2866baeed38bf0e2389d4fe6ab6166597e87dbfee75acac7c2f5ad3bef55293b56957c103d5825051bb5 +b6171f1bbeedb3ee1af368c9c9f327d1dc3e55aeaffbe15f14db8038cd72540b62fe65f44ad0b5486dcf4023f0e91af8 +8e42d0c1e8e8c2ccaf06edcc3c686aed56b8c987f9d68f20937fc088120a410cb92fb0ab45bba5db70b86876015a6b72 +937bcff1af9685fd0d1f6616acf91d97ac9fcb1eb96d49d1c880c9945c1fcf1414f63d59fb78348d08a8546f6e83e407 +a6eeb4873c0531fbcd407c2e702c68e4980fa77c9c032b9913b89031702cfa56f335fc413576c37ac4d523357a841203 +b3962b5eed69cfa27fb94edba74b6cedd7569352ea71861494dd579da96d9743655b6308e54f8a42ee6d7e805c1bc0f9 +8eea944dce7202b033ce734c9e88e82dd760c916e00b217cf1f00bf6ec5f20e21885d5fe95d6138871d167de4c46359e +81e6c7b356e2703ee333a9dfeb2b54260636422b9bda118e0523a20ce83b30fefc2f019e8291a8db05d207f0fa7332fb +83817f6164dc9e8e2506252511cb9871a8c9b595dde45f67e75ce3505f947b3fb3b804c18c054ad13b1518a98f59f008 +a9ab4dbe7699e7982cd750d7effe031f273fab6b2e024a0b4f8beccb5c280903bcd3f2400b9cac7e8c94e157b4658ab6 +84d2e3bc66fc6b59a1ee98b8981ebca0901d846c40d207e5bb5004ec9339d28956d16f054af52453f6a7ff3fc66c346b +b24bf0f69c3e86f610b6d27885ac5f4556fbb14e8286681538ddbb0b4921aa0d5604fedef0daf4a514ae15268a640174 +a4be967f7f31995562669bf9587f5463bd1d9873fe9169687790e75961efa5ce2252fd21276d022f580de23527282838 +a3f3c4e673b302bdb91fa3cbdec88499752e6ffe37e2215d69b8a426f4da98c3a10e4c659e77c656172e4e8b1b1a41bb +b704ffbb3434563bbbce69ca7e812a8bd30757b1e90630bf3261735f9ea221524b36f97dec324ffd209bef45bdf6f2b4 +959dde49f15c663a2de000195e182a11d8c396c1380f98322cbe5521b697bc3bec3223ca9e94ee2734c4ffdfb6a19e8c +a469685143cd82b78d7b1854c350da63819d9d86670e9b35a72381d0362cf5c3f1d24e22ef2ea6a12176c9dad39fd51c +adb97ef4463e5e13d91b75a3086d72a841a60be278e9651d9ac5f76c9537bac5eac33424a1ea00522b3357fcefea0738 +a4597b2ced7566576e71b4f105b5ee48aa4ffca93901e9b626f7059824f53be3e8f3560e6861285f3d97fe88054fee83 +a18d9b1b81564447f798ce5966bf10c823aedb14b143972eb4dbbba9312fc79f46635aa016cd20c53be90f170f06fb84 +ac4724069177d3c6ac1b72ea2a7d6bc5ac3d4b2a4dbad124152fbd170c9c1038cdcf255d162a25c14ae8df11a3849945 +892683f64179ba84f6a447c5c7489e3cdf02474d2837dd7bf3b82a4dd05a6461ce94fff28d65b9539cacaf47dddedbc1 +a68ad797bbc1b2909e216a0b3f39aa6c3e4dfc7a49f81a206b530ec0c6ba30f871e4a0053625aeb99448026ae2e0a6eb +964ff8badf35b6b93be6d97209d87f4ac8847be1c2ac4bcafa1db5c3f604f61834c85b3dcf58af50d09bd03ff8d78f27 +b76dc9ec64b1fab7be269097a18a77144623d37bc656934fa1562817c922485e69b18ef40413ee309e100fde645fa7b2 +b2a812be6e69f284580ebdec5ae2cdffd587bc7eae10989e9d2f290498b1eaa934b148ec7783edec300be5d7a9b34af0 +85ffcabc623f8ffc58c5f640f857e27b7c105359315a3969f346e1366acb2af88f4acc025b299b9c324a8535c380a2c5 +8d0140f79fb8ef02d13b1d51c4ba1af5b5ffb19322f88912215d4198f9a592f7ec6800c8a3ca853a3b68f9bf0353a13a +b3174deb53c1ebb6a1e16c915cac287573b70fe4e0036e8e971e8e807a77362ede632f6e3f29cb87a80a318213946ff1 +8c58d603f6420e3f55522ec2853065125af4e7773a909e28296552f7f8ec4691ada9211d834dca38e118f432b6cfe03b +aa7ac268e155ff074bfc197844e21fc2a9f9aec9b50d9cda63f50d3c4fbbf9221e6fac3a6ba0f7e4cde71fecd493a15d +a191337721bc9fd2d3ec2ca6f6f97ca2462ef5e207464bf9e746a650a67d69abb5f578a8238521cee3f704b275845e47 +93521abea8f38c103ebed3313a3af8f27f03c9a54681847f4201bf9f72f1f63064b18175986fca64f80b4380905e894c +a1b9d063d6538885f9826b84944123d7d6027dd030aef29fd6229f4cf5d32404f7dd0e899a0c8f4b6bdf4649e8a8966f +a15d5497f0fd2fd0b2c2e5df58a25a72a9d99df8215951ea58c15569d312c6f096f78034f6a8502f808e649f6cb9283a +b3c275306852612362e1073d0f4da3ce598dc5fac3f3eefa22ccee35dd57a4caae347b43342cd1f6a6e068d3ea9fd30c +94eb678e0700bf39caf428c65bbf2fbf7f601c39e382570a4df9186ff1dd5a958d78e051a5fd084e4f75536a14b7690b +97b13995bbcb8e824bec28488994a830a9c1f34ae4c1a16d5528d57f09e4c8b5d81677ea9f979f0acb8cac629ee09c85 +817c99ad48bc05bd4fd29f952dbdc5ef56bb02f3442c18e3b91cb6d72ac2d2a5df901c099165ded1bee62c3ed13c41e8 +a884acf980f6470e11cff347692d8a7cb7860d4822112f7bfeb02efb05948ea98c837d5d98dd7a104aa36eb8f016a0f4 +95debd2ed23a23a16a393f59f666cfc864f63751238b73981faec4a85b4c04cfa11520c9e4cbe4e23fe80e86c260093a +937b4691c59453bc6cf6468ed5b17dbb25496bfa3817798562cd5fd86ab5ee35745991afea2fe271ce0fbe5a990c41c7 +b4da98c879e6b475c540ff2c5501299f0e3e97b7b93beb45faef1253f7de96968898505e672cfc4a3ee7e20c1f72c256 +8ec9d806f344d0c675bb5ecd47c54defb5f059a5233dfb2d459632b9b22edd6c4b8c47fd7899ab13e35f37ede9b124f8 +aab4408410abb4d2cd98694f71b5452e6fab2690daa3066b3f9747e7dc40b57259d52e6fddeaeeca227b733d049b9694 +b85a12f39808961c331038159255140a61dedc56050345a2eb13b1f7d140ae07b353d68d22f2cf60925fe66e598213e9 +b61bc3bd68bffdbe9731f48fcd523491da04dab83add49fde390070513b9ad87a489010f1ccfe6f54e9a48edaf88b5f9 +8f50f6d8235824cf25031f09e4b139bd89c1090269dae95a5aa0dacaf5f9b59c329a5a3cdddf9efe6c77cd61f481dcbc +91a543b85e18f34361d7df5ece8504d456627fbce65abff437007e9109359538a03996e35393a40f0586f962921eccaf +b7557bc52931324dd4c58d0e63c89a8dbdd2d00d0baf79d81d7a062aedd2de9dd743ea30fb031b18c806ba03175d7e1d +8e056b842a9af7aeb6c0d113a3acc8bfb5c6a8980fa81869747f75abef76b7fd20cb67694e70016e3de6e7821cde030b +966c00fd6472bb13ffa531d8eedc145ffb7733114e0f4a6a9fddb34ab7601f6cfb056460f757636230b692453d8b31d6 +a25d85947c6939547fbee088e0131988053c5bb23aa2bd48ca764f4ef2b29235a817b8918d1de6865695977a95711e9d +958567f217ce7a6d74861777801663d7175eeeca8ff62e240582fb603ac91dc402331034fb4855632352df2328fe0233 +85e53f3802a7d32dec2db84fad7f8c8fc856037cc0cd4ef9a8988e97ab580d4b929023f1fcde7633828b5e8bcdab08c7 +878d1fbbedee7f7ff72eaa3848d7f6bc3cd13b40149278b3afe5e3621e6d1f0386f8ede32971d3f33be189c927bef6f7 +b041e880e4ecb254f6f8d92635a1ef3be3d5d885c751f247bec2d8a016aada6a7fd2f7c599f458ee466886abe721bba9 +920747dac9f35ba0b2670f82c762a71ee9bfb9e490825fb7ed613bf2548ef4ea00bc01e9d2c952dd9c56f3586a3ffb49 +800005cefda1ddb860fd8974342fe315d227902dcb5f3736f8b9ad1fa2f8fbeff8c8ba0eb3f0c21a6706f288ef4bb13b +91f2b822b728fc5d1f15b69a303985bab14c08df5e929decbfa5aa5689f3cd93ccfe19ab10499d31df9d38c84039e492 +957a909486abd85b1e627a4739c7d212cd03f2b62952045b704c415acdf2e6c0cc627af93f382836603f33d1a716ac7d +9733ec7a30ed833cc1e7e0ada4badddb1cd1908bcbd3d4e4694576421c94090a9297aacd7f42d9d305b87d711828304a +ac2785a0dadfd246fe12b63f759e9f021006cff4f06b2b5a9986f0b02a40f29513feb1c9044af6e27d1c5029b1e1db35 +948b22bddf55f4b4bc26892e83f70b882a0458582ed87fbbc81bbd037c946d833c19162327354240c42e05cfef55394b +a49c5d81544028d56f4caf8699477bcda589c65f6754dd40a487ef88d93925008dc7fefa6d458619d51a54b3edb5e5c4 +ac57b8ca2d0623f5c4137cada67afd6935fb75fd82567f2c57cb22e89a0562d3c0716d5e903fc06694a8c2edbc9a6f1c +ad52af6a0cf838bbca5a97aec5d87fee1aec4fcf5e802b8bbad1b110c31ed777de0b0ebf74384bae68289af20e351bb3 +b0c7c48d734e5a1b37674465eb07a629dbdf8f9080c44a578f3dd687261d9d1cc5cbdc084488c745c9114fd998bfefb2 +8a2b2ccd4c52d15bf7aa4a8847b8015bd53f58ee484589339b4510ef08a27db56178c15b4d79a9c6eba1ac0b641eaa61 +98f659a37bffd7a9b7759bb111412ea9e9eec483645511590f683064eaf15e1b101b5eac3b98f79ea38662b1956a06d2 +af6cda3fb2479b6f2d959f2d03e52b49afd12bdccd7a65a1bf6b91e345387924d5e355363f79bbe32a4624287cf4c1ac +a24d325d8c2dbf9d2e346e3504154018937efb74246ee0658e68d148d9ad0f4bfe348ea9bdca77d4467ea1b3dc2fae5f +81a729dad3798121027c29e9310d56e36a48c1c479cffe674cbf9131c562f541d7e6c52c2718025d3470b05b67cdd321 +95bd5cd6d9895c775e58cd4296ebefa51ab9e324418208c3c4d073be59410497a4d0daddba6c1e7373abc08e13d32b89 +809fa97a229b056def6b548902d8d90c873e496db6cb1b2d448709b9ae08d9b9762559666cd96b6bba396eebbab4ea4e +8bcae63cc680494606e44037a3bf6dc7bae2e723e5ec3ac0451550b8ca7914ee1d4bed0f40adc3dfa45f8f80a36c11a5 +b3474711a0f933cf269e97e4e1e98762ddbbf49dd72e468f1e8a2f89514c1c35cb8db32d08dff50f93e50db43bed54f2 +9788a37c3d95310627deec58ba6d9e0324618469275276632a3fa7841fb127c8fefc1b7392064f2eecb508056bd346c7 +8d031fdb156023e185fe5fcac67b966baf9c098fddead4a6f1a3cef54d8e912d0de2d1e1d3f3f05da538eac4af5b6973 +a5efe72b86a714dbbae40fa69fbccf41042e0647d177cd60275700257aa583708130a64b2f9dcacde4fb636b5cbd5aac +824092ea32eb7a8c619182d926f292cedce7ac3d3fc64f60d00fcd767649e1d6cffc20dd9c1d1c8ef6f64be315d1e2b3 +900ad22d3b63376b1ac80c7343a58df23c03c4e7d6e5740dc10d8cdee793be07fec09cfbdf29e1d1c6484d3077630d6a +826815005550844ac5a6e831de0e25fadc49aff808cd601d70743d4873a341e3f0cd40d490422c87df3f3c40921fa723 +b39d189aea740c52b03660c0abc8e796cab72193ed44a4b1f59fd1ec0e283ef7d5e157ed23741eaf289cf968597c0900 +968ed61662d1e656e039900912ab61173b49d2e24aa6b7d3af07c3b04a2c89c4516540934aa543bb48ee14153780d10a +a433b8b689007ecae7f1df15d442b0570664a2db6318de66c6e5fd68884615778d296bd260ab7d07469bfb5f6d8c94ca +a69ed4a0f39920d1a62a01214daec143fb7596212e2439583df9ba508784ef4d2fe86334f0f9a6b7a3342ec0a72ef15f +96f260d9cd88757e7c45201d57bd816f1cfd37587ba17a64997bf7716ca1c2cfe16a7119c36acf1754231f303058a9cf +a51f2bb09d30028eeb0860e2de38094623e5b5514fd5d591a7d4a9731cd4b9c4c12c5dd6ef409e009dafb10d185d5346 +8abe821036140ccb3ff9063dcb5e8b8724cff1cf0784b8f44486c8380fc51715cf55b443cc20870f426c4874be93caeb +acd73facb964d9012ad12405dc866beb52d8de3ef81fe966cfdb14d22a19bbd2e7ad3a29cf029617b9d6510ed323c6a2 +8f18f6883c8e4741cd6c52e0d3335dd71b5571446ee28e8c27cb0625f77a9f5bd0720d960e5e8970257907f503d58a9a +b66457a91e7ddcf56c8ce4936a209c69ee53d71236b72ea386f7719c8b8c9b4ba4ea19039a8de17a0a869da427da42e7 +80b1de58bb3ac5f264e0273061f485e49413de604b5ade73ef81bc249f5e89ce97dbec7d99b088b5a2ff65c0bb93fa76 +8bdf276c88f80371ef0ef7e1224929681629aaebc8cba3c0db0b258be3c26cd17268f56369832f564b1679be33e98c69 +943cf6fc88678816da42e4f337c730eb2dd59f8d738ea638a799e8b77214ad7e74723056bae96b100f9a972155885d26 +91c8c1a8a61f47119005869c11edf0b69d0bcf40534b82e46aa96bb6107f940e582b6733f855144accb8dc21d79acc39 +96ba98bd291faa0904ca0398d6c50eb5bc2ab5a389c359ca42b8909f41f4fc37dcedc370ece777d5035074a597da503e +b4598e6f889d319713a9896161a6c9bd8575ca30c21d3fdd37cff15dc0141ce28dc536f73957e6fc8f6185fc0adb731d +af1ed593a0547c26ff729c159ef14bd0818f25e7c1c6c51ce8ce5425bd2526086eff9fa3341279daf82e480bfe431230 +8c02b9ad3aebf156c80fec9b012241f3794d736adfbe4a272faf505ab818cb121ad2ad7c2eb1716e252d0a2e7ee6b246 +8d2a8a31784c446eff4c2ed7b004009f08b86c87a4786a0b7be3df36ca9130a0ec42a58d09dfede1279a4a6d3d37b501 +a78b61be13005b1718a3aa3deba103ce71e1ff73163c76815f9cbcc101d993f119ca128a25c51a12fa52f46550c4b609 +b990d81d7aec9fc50d798eb8c38b40b162004f78730e9ed4a103faeea0995bb654893e557e5eee9b74046ddcaa70617b +ad56d68777d0ed53d3331b0cfd44503b27435278416ac2268965d8ef711fdd819c16ef5499d8d7fddadd229c3d0d4bd6 +b5110140b9ee542ec03c945cd6180ab1af205537704fd408fc4490d799d87a3f3aa0f1f0ae9c8daa55c1757f7bb53cbd +b7d8a4080c5eeb00be4540a00e65e744f4c7792b518c9fd2dbdd25abd0dd89e76563618cdb92e4cda0fe3ba4597508dd +a880b33af98cc0bd1065767a2600145e6e326c3cee25602dd22d531c26c4b8543f846fadf679e26749c929310779d858 +941f124078990e03310cacd79e4a38667f4dac4dda4dfa3173a03c14aafbf538fdaa01b940fd5be770c1cde0a84bfefd +b234e9d0f04da6efc5aa5c77bf71cb05001cd193178fdd546e4ec81875830113d3d4f1512e7405b16d0b3aead285999d +b857bf6f62c4b19ca9441f700ea6676ffa3b0c7138299533ede59a9b9cf9b94295046e7eafcf1d4ecaf0341898ed6b15 +a2b0d74f17d3387566bb4f17dfef214cdc6b61dc50698fbbe298a7e2f4a82d20aefd719c5e82bbf4ba4fee0e2e35b4c6 +b5ffae433aafad3fd51ac137976e2c22661d8a286b221e0107baf19f5c8f2f6c7eac1e785f145bf7c16a497310fbf51d +a69e9dfb14f8c6cda716166cb69f06879718656c9f46730d94f194e2888fec371a11c9701071bf8690e57996fa91d213 +a1f51ecd5c5d73155013dcf02b327cdbae9f9c2fbc62f73959050cd3a0bd66192213d1f4bb56a85cd21343722ff3f57c +ab3e54b8f4829f1115694a4be7d16e8214c94387ae783263cfe145f965705d51943176191c706f6211c8be2699dc79a9 +8cd6a64c5d30149ca4dae4fb7e8974dce1200aba9be9c8cf9af5d43e40098746ecff7bcde7ff84a0072138dcd04c2771 +a52f6fe24305bcff685f2d047c9a8d9a1f70c2b416cfe55fc137c6b5b185029f3644890418873665712dba4886e3fc07 +b2e8e3d2ba2d64815bafb678dfc1180534186eca415bd8cd32b303bbac6cfb637b17200aa7cacb953e656ad19dd5c9b4 +b5412d1073b3b80bf0d18f791a6d02727cd9c40a86ab0f13ccfd847bf4e767b8b79aba3935194398da2c9cf17c6bfc8a +8bbaee84aca9089585d5ff385dc2ee6e653d0fcb9088f98bc5fb1c6c83db026d9a73d77c33c6cae3268be90805d862fa +9691343d1a8b7fcebefe2584b28ab5808764ed79d8f28168a65ca90b0094e7920fa43e56b960331209f4b8465cb8a5bd +8ea475e12088d558f5cf6dea2da71837791093a622d5cbee608a95b4c8a61296255c1545d454562e371ea0e2cb2e0b1f +951d6b404667ccca099d01328562790d1e8446231d7d22bc2b1c4c6b15785bf59f2099accc58817a06d24d59ff4e6a2f +a5d012687f341eb9c783c1c2040388eb7ad662cfb2b84cd94d270bcc99116939aea80440d7ab726f9abcad22fcd90274 +818fb57b7a8cc59f06af054ce09dfef812f8f115eb2473d06c8f20fc50cf17423331aae1f843bcae57fe4e2926ad5aaa +aad27bde8eaa2e7fb1a9a5ab531eb41f475afdc89b7f02085f7289f8f84d172fe516d0104560a40c89e97db7e5e836ee +b8cd923efac1b09d9c6b1d97a0c1bce9fe4eba1d872eaa3c0df34dcff2e7ea2354f1b31b69c6b266944ec8cae2a16865 +af628e772d609224aa7cd3eddbbfe965fdae6a05cf6d14959c5c26c4806043afd5fef803091bec710c6854ec095ba18e +b662e1d32704d96919f5dbefc3cc40e7d41d4124c5865b46408c2ee5c40926eed71fa3df71fa7ad349d476d9a525d7fc +ae4c5512396f9c26381394ff8e22b1d6267e3d3a5d3fe48457450694520c5e173716572b68fc1dc352761991abd262b4 +86b530978a7e549e6ca014168fa4aeda9438bcd3a29f7edb1f4e9c712c16faa58b81b028c25a8e90b421b61a1766d7d7 +97b32f1371f76dac7a449295365780d1bd03f290a041b3d19db3f14bee6365a614ca356e7cbd6f966260420b451f6117 +8be97569ea08d0b6c4d46e9565ae14f79d1990f192a26ec935a865cedd6bb5f69f608b069f7d645877c5081fb4a68c54 +9733488f48de05f57f623752b80b37c91f6c9afc0f9b4df4cf400f3f82b137bdf06fee82190f2a4ad4aad20e964cc214 +a794f6dbf155666056529748a792be13011bee6ca10e0d55c82c3e84c5dfa1f370c8e8abf2971a75c73a4ddef3da3319 +95ff5d16c0d9bd679738257a1f7f309f257c20469f2fa41bcfadc671ad65acb249793defab591f515bb3d8072e2e05f3 +8d849150bf8dc3452839256ec4eb65cc9ef87aa0f90dfea4d1d486f16ee855d6c480a8fa4b6cf8d536e435f9fb7bf507 +b61c29121dca2bbc6024ad2f487bb57b926786ae60a9e7a721440787752432ba9c7e1df86ef0d74c2592d23f0e89326e +819630a678e4a5e6adbde9b292f5c8f2b6e3f2ecc9bcec60ba0f8502e503f697b0ded4f0f7157b60ddc976ded66713aa +b3525b071e26babf669ae2b98319b3516c083e797d74bd5b9b0e1f67792a2e8ab2c60921812690b5928de66290ff7b86 +a344c6670718b9824ae62b309813bd31984eefb5efee38052cd06812308edcc39fdee165f8164629267bc0e98fb50ba6 +81d78d54738817dadee7bf70a468a51728de0e9775f8779fea5d0d95e55b2004377b4e2db595d420f017af18a384d9aa +848c97b9413ba6ede751ece925ba57b8f8ae27168c5d46347d39e0232a5eb42069a85f1ee2d30d8b94fde574642be5d1 +b020048c5a5a2d186df628550c6f61a204f16e6eb991283e975de520c4f916badc999b3b7e9402ccc39db5c0b510e2d4 +9298c1aec9664ab3fe328f532428e9b037efe8412ccfdd15e33c9c82dc3631e49f84e0d2d75dced85e3a4e0fd0f3f2dc +8c4a78841f51e2f8b91defb0a3844933999f9884e2b324bd89a01e482756758b1b5a278289163409947c73106bf934f7 +b328a9db915c4bea1783218c7668e2bd7a8fa62e52d3a005a43590041d34ff388c0555b044ec5ff85368352a3643b7eb +8a395d89469d374c1ec472c4d571ae670849549d05124907faae5a086519686683c1773d22d290ebdcfb8dab926d10b5 +aec52b8a883f4ff68fa5f418cc91c8e9d08ef324544356b0ac56a7f0980fab6b376b8f567e357ba96b408652b8e568ed +af80f0c5d50ab23d8ad99c7fba504f2f02b7307b5ae5ff529142bead28d69c3d55f4e2226c44549548fdf761ce30cff2 +af73700803caf7b06f5453a620253731de33a458da01f5790106e9418fb59e7aecf6fc1d1b650e1c7b3456f7a55d4301 +8be3ee3caa86cbe21ce9998fe1c0de73ba6481125ef28e312002377676317b5ac4c27180086fb83794efbf86438ad27e +a0439d051d06a7fbd5ab83f32f0f95364bc043d9d934ac64df7031223e731d7992206879d567e77f35badcb7623f03fc +b99de1a16670fbbe3ec26ccd37399e2a23c96813c26428deda4f74dd3afdbd28cbe47e074379f6094b85176f8ab349fc +8a943a039aa33f38d3887de4e77566d446e87225bb8333e3ea991466c15c6487077c6decb9cc10e5de6af03e6b81a10f +80b109fb49ab810121fd411e4cb85773a1004af2d257e85ab5b4c99aad8d66e5803a8ca7b95587197e88abaaef0b8d42 +892148bd190b042fe9b7914b8aab073c0d19001158087077a5946690dd60d99a1ef372ac01e372a434d00b0568a75fd7 +a266dcc9ccbda054e396e1605eabde6cf79a028b697898090e9f34a4a4e0b771c121b8d470b14130a79cebc19f8d6e58 +b1ab30b97c76392712b173460c227247cac50597c036f674361c63c3638a4c03420fa5b7efdacd0496a9b83956cf5d06 +8a33c46084f669455ba089b369b9c8493a97c131f09c66f9347873504f35d6b94a09483b2775656ab32a12c7b9766ab1 +b77a7c1402edd9ae448b7a606ba2eed192a9bb8f852b647b6ed689b0a3ccb81a4632edbca4c113750f62643a0626e2a2 +8586e85e3bb07b07a39ecbd822d2adbfbf1fc66cf2377fbe6b1bc38369f86292c6cfdb5b405a0bc4d584c0600178321f +80cfe5b1b032d5a28662d13772fe112e9b73c997f8ef0fc796576bb39e02189c3ec0228d192c981061dcccb9dd3c4f39 +873c085029b900d1fcbe93f8789d635e3a8fa558766701ba9fee76dcf05abb6cef518f2b56c4ca5e26f3847cf23bfd72 +ae8075937a23505f51a1a26f7f54e35caadff44ffc43465368daa9c330b553cb4548adbdb04e24c3977e35a08841c36a +b1c7076afec527912f7648bedef633ea0e3b02e5fc3fc495779b93e8a9f64eb503f46a1372c8dcd8fc2572c198112da2 +b5233c4545bae360b07c4411776218a1d9040bad1e788e099f90149c58258ecdf01dbf246ddea48ac8fc2dcde6f34f20 +b62655a8376ce1ca225dba04cb29f1a95d09e1a20b58f0330c478c6acf931ae52268779d6cab87d9074a362b9e82b205 +9684e676088b409052773bb740bd3577bf0dc15d0392ea792393a158e643b165f8cbdd91cf355d5425682c77f2a91f34 +a892744cc0c428c97bc929913ada86c36f280f49bd1603e21bf6b6abf8ed195cb05b22e586f0c841ee02f234731985cd +a62c089a73c6dcf3f7d957719c7d452962ee851d6ed8c4b57ade8a1e57156762c348fe5f20adf6d6ce47b4e98f93d60d +91b29be6022d43937df9c597d19e23cbb83cb6f5b764e1f7db6cf60dd9b3e9c79f1f617c3101c60fe6c7af9b5719fd5d +91d13fe99d7dd7b4744fa2fde41bb51f4edbefb2189ef3ca5d337ee84ca3f728e300aec19b96dee18aec090669c85400 +b17a5328808ca929b794dbf0bf3a3fc318f8df144a892ec0ac2163a0f7c3a4614d7ec433b66bc491c05a286fe986d986 +84a9e84bbecfc2aaf8bd623d79bd4240c630b81ecd55a50198de21758255207238179a345700e65d9bc6eec1a1a1985a +8d428be451efbe630740449ab3677ce6f69d94d75c5a9d91d14b2493a838260d6418be3d4658fd15218eabe3adfe455d +af11126224f6ff0e88a09dbc0de6db3c70e3db3f6e154deb448d044100f989ea41c6c0259a8ecefdcf531f892a957d82 +a51716b900a00277aa932bb03fb61eab3bd8e74edfad6153a06f85aece6f832af710f1477d883dd8e48931deca12bae9 +9542a82039c2d3c538f15da884f090622c5af556c16370d21bdd6544208cb17e0a30e511b0af4a618e8ef70d0c43af07 +af76f93250bd7bda2b5e30e6f88416ef6fc8ce0cb614515a1f8d81dec717077209493cb47b79e8b1a62e09e394038338 +8fa8d657f1d584b06d5bf41a52bc2c73853e4092290789df04eb8952c6eb236df601a1c6cc81de420a424d8e748dfc38 +a6e93e27421b9e32b170d240b4cf2710c97b49dabfc0ea25759c5f61937eb3da8d45a6400f8bcfbb42bc9a7ae9b66ef1 +81848c8d66d34d274b21dfc10bb36fb9497a1b152aad64a8f7c874e58d31d5dd5f39e30e6000b6d7b444e573da1e043f +b85692a84154f87869d97cb5f16c81fb0559e097fc37473bb11dc9cbd311ab91a46b01aa9debcada590992c2473ef0fe +b565371692ab0f0d899d8139d3eaacd213e7d23d6f5df6ac3409c961aca019ce861fb4ca8317f462be01e8c1dc7af154 +82ae2bda0228d36343f6153fbc41fc5c79fafbc03c99a7926c624dfa28ed0a1d215e11ab83cfd438fe5d85d7fee50363 +923f38a2f839e165fd197e1711ad52673deed9774e0590ff63ff9a9985f99612aabe003b9a98db2407c2878abc6d9b0a +af8d5e1048de3b813308544705eeb0facbd604a0ed03e66c1d221be64cad35d71748d2a55d1ff3049e1e5053c7b1f712 +a90a4b3b9d3b7c87c34f85c7643fd67dc771caa940c9e2ea81294ce6c072eaed698368a0e8056d7b819ce3d73de4424e +93a106e914d2c6892fee866602edfbf8d03dea1918d82d511e528b99c8423c260c0d103bfaf9992e0e24638b913af737 +864cb44b1adf5a59ce7baeda0ddec3a0ecedd42923205dfabf30dcdb216a7b760d8895dedab52ee09bb09e999486b521 +acb5f2bc1257c49c7df89837502e699bcb9652567c1716513f258f021755092954f2dc65b9766ffd9a10584bba424c7c +86653b3a479bf6e10e781e316e61437af1abc988f59399bed8fb4ff128f5f6d53f50a293da58774acd42b8d342e52429 +926b7b90eb7d81fdad2a8a59e13b1573970e15c10515954b7c232c37955755b6758178314439ee6c3b0c881d4092c838 +ac05f011011a354f0e16fbbfb7e9dff03b3cf403dcc449eb5c71067128e314badf4d4dc5dca4b8616994ecdb15909c93 +8e063c6601e553f33abc64f9553db5a19ea794a1f254d5a5f7b8ff2db4ed9d180f68ec919a0f83142c5710813baef4a7 +b6e891dd4d44fd54120b7b8716292c27d4bc8744d96253a841433cf4b07895606db4a3cc5872c480616b863073bf77e1 +8dc623d7928234bfbb8cd0b4fce5c8d9a9db848ab0af967ba9c49daffdf719cf8b55e1dad0b7e421571b8770cdfe9df0 +b5b53f7d6b5d1af75e5a1720281feefb8c9039ef7f1e1969d83bed5a2f73cfbca91dbf4fb8179d9b0d3bd06d1207089b +a5dbce9e6db637e053b4b4d3df07b724b50d11eacd3327ddfc5aa8f37b9a5bf628cc9b428328e16cacc552c1dba505c9 +acb82d6c9af9af0dd426a07b1aec81b388b61042bd601546cde248730ef85a09016bdc66dd014447fbb56fdcc23011a7 +a41692e96f1d775b3a9378b3634495a8350dcfa52b4b2b7773b39d36f7d349fd5ee9a2b3e72769ca98f2319319890216 +a0b4bd6a68ac5735539cbbdd78ee4faaef7d6488eb7a11e091d94e315cfcc49a90f204f636dd8033857378ddd67cc153 +ac3dab32427b0583159482f73f94236980d69f9f8f781b93f44aeb43dbeaa740c77898c38c57677b42c248b9bbb1d673 +a6cd1090b97826486f59a056ed90cde29f2ed821211391f2f16e66f1e8914398348cf6f0df6d3acaadab31f0382bb5bb +abd1252b722aa56010e3bd4119f2a28a852e9ac1a8ce68c96b6da9d00fac0c9fa70e67cd4afd45e0a8042a810b8e0a91 +9194b629ca80b3bfefc0144553017343d0915aab59faa3d0e2bb3720dd3c8fe07804be6e582c6d57c764be96cd40f2c9 +b6bece03ae1c5935eb38b14f0f64d9d0b4410c02ac309e085a233c74bc3e67ce63edea56ea37f4532e8b864aecacadd0 +b753eb9184f5b30e77bcb5d3487323e0f1178f1ab3e15130953381272209a97c3e8084e810dcebf1ea7b22f0a90b9c77 +87dd4a76955bc98326823cffd653fb7b7eda5df1a971b72ec2a4d25fb3958b9d6092369539361069e7e4f1dc9343d929 +b0f1e8b25a2687d98cc037272473b4e3f33cc8d49a3c83a335d48b8a0d3ca5f84e8e2bde304ade6f7d50e5f3539d639b +afce1c0205adad1ce52fcca71a99cd6df9da5b748209c2ed1013b5b7d484b937bfbb26db9e9f8e77c081e0a0384114b4 +b363d31209c075b94441d1a8ddcc6bcf9eaee78f8adbf0992d5c7e7d638a02d58e19203247443c35d700fc8ac8a1b7ef +a0aac7dbb08a10f6cc2c6a4d37aea6bc3dc034d933f49de3dcc79bc0b7a011b1e27df7cb882d155287436b72092a1da7 +86dde01fb7090c80fb404afdc9ec64ac40909b64c4e16460a4c862c3a3f857ebfc0c3122250306c266cb1e9f9f245934 +8b3ebbbb0ccc466c72afb4c27ad99d2d4e98b5aee9c05bc283ea3332e5f67a3d9263b71d16b20db31ad4d8f48174b0d7 +8610c492ce130e76c06b7e0204617087ebd8f285cc3f007897c253a0e1af50f80a825ea7fa3167f882e146402fd342b7 +b17f04a257d3142005b8517dfb57d28661604eea9050ce39c60ba9a05d23897114c59c55af199ed186034e456e111cb2 +a04cd806847686ffe023db1721fffbc26160582c239d5bdef08f4730e2fbb64c341fbabf1fd831af6eb84a113ad7e2f7 +879018340deed1fc762e1b8f3a8b78a40539d6f917215621b725c0a3aa347eeff60765e5ad6f4a36bbea51ab77f88726 +b421e65891dd0c6641e8ddf479b065163897a418d723fc6dce19046501e01c616bd19c9d5fd6b395e65abe0ef956d53b +89350af1d432a8c209b69f937d2aa20a24d5eb95c5b4cec097ca3dbbb3ea9efcde2a8c56c58f8d7901b96a627c45df9e +a32d6b31cc9efbad4bcffd8b0ffa46b8fa97ddf3453ed151d7de1d03a02cf233f07415584893155d2d7e14b9534921d1 +8efad47caa32277eb04137c92def618e0715c1e77b5053b0cdd60fa03256fa1c9fba9aa86fdf1c04cda9c5450863d58f +8dff9d309f7294ba750158e70474c978d1dd98739df654945f5f29fedc607caa06b2866c93a0c7b830ff9b26955833a6 +84bb00fbaa4358a2563abf96d2434e4a26acda87b189cd8d2aabde1323dc1eb2eefcdaba3b90e9ad1215ee469745b72e +b75acb924159ecdcf49df587d5ac1b1b04291600a4f530fb7cb6231e7fd1029f8cfc957c891a59182518480c2947f472 +8d2c671ad0d442664a0cf267b39be742b1d3760935137e4c50195695bdb99254c4a4d5830634059d96dfb2b4e214b067 +ac27b31843caa8140e729a01e7d0229d7c221feccc89ffc173c11a419af3db0f8a47a41cac358e15ef41f679a3f0b96b +b0b3e33c590bc00faeb83f4b160748fea4fad3e21dfa324bc14a138ee8c5e18743b6bb27cd0ad7c7c28c2b3e92040b0e +b0d2882c5a0a21fe05b522f2e8a4f43a402bfc961874deec962a1e3d039e411d43bd3d95a26d930c2509aec8ed69e2e0 +aded1e47b3ea6ea7276736fbd1896297b9ead21dc634d68ee56c20fae3da90170f30ad0642be10929ecfe7de5ad8ce5e +aefe525c0dd24d6c0a66b43ebc6403ac75bfc322d1a22f76340948cf3536d2ae87290ca80acd3e55d2df9aaf0fe6bfcf +979d1510d3271ff1f06d9cefe30badaece436fae8de70b01ac843850f678aa5f48821dea48ce1c363fa35eec37283f3e +b8e8d10692f1bad943052fc366291c134a0fc7ca4696feb216aed46eb32de7333a9ba4f553389e7e58c8fa96ba023f58 +913353bc585c0248a54d4705b5e29cc778f304472446eb4baaf30bafa30f2ad0643aaf21196a6c4d177b11eb4e2ad5b2 +b25a0e3b9f983c47b8faaae8549fa7d00d12d7145e1b232d1813ff94058ed603957a340beff25711075cefacde767661 +8515151729ce9a7984af3b94f74880a2402ff853b99f924d581fd3935d8ecfc80e2a1185918a5b1c4902106bd1561ff8 +88e4282ded5e2163874f6464236d5bdcc3c484a0fef8ed0da8d0177973e8175432b75afcde2a4d7d6aefeaed52fbeaa7 +81c31113f2a5ff37250f395d6722a43cebe2a267a0ee40ac06faccaffd7d6eb522103f0431a325aa46a54e606b14de84 +9302ade30ccd62a803b9610a397661298941a644b1ee9d293c63a6c3368fa3557dcf6bfd0c9b44c5c2a6be06d1baf663 +b4ff9f1f6a2a64c50b0a16980ca7cdcc297c6f93e11c580019de52f58381fd0f60a66d3e010fa7ab56bdd250e7b2df2b +8e57eb61ed3c919dfa0f0cbca2cf559cbede5bbb1e89ae4849b380339cb1c567c98fc2c671211fff4df1a058d46a42bc +b3d5b45b4096eb088523d16bda1c6aacda01473533314961e6a8de36ccfb35d4b717eeb1ee1bce47ad3b80e9e5084d4e +b933ff4d3c5a77cd7cd32926266d4f05198178ce350f7215e512e71b07177ac1ff89ba183e424138e1fbf088ecf86c24 +8cf430a6e4eafd23bcb5ec8ca3d711bb56ae719c8621ecee964ef3bae7c53044f7ab3d5d0b911e09c7543e56c1e82e11 +8b3c34f5321c9ed48024196e1e941fb7a5975a045a5a9de88d7f200fc7ffaa0b3e500ab7b535e02bc5c35fbe420e2c3a +b3c235b65fbdd5c4c2aa45271b9e51674f9a0383a8ac383b0de53125a67c87261540a95b8f81ffe67ecdbf3955b13814 +aaa93ce79ed6e7084fe906c9a1002435ed6829ee3d1380681b902d35dc9e5a23a214ae12dd4fb76691b0016f28d43651 +b4c9533e50ec58f75ea82e2aa7f735c4257bdc1ecd0da0b6521d1442fa61f19e4f73cc90972b47a762f5cd9af591d957 +ae0255dd70befe7eb979d41f9a7407040937e7a879daa64353c66d524d3d3cf1d5e854886a6c32c142f4673c56a4df1d +805fc5ea840d1c2e6b35ce586309698530f056b41de7a403d9e7d81efc2d7068976e8e23bc0b9ee256f39b15bc4f7ecd +a8de5055b6d2310b6ccb211a397077b211683b05c7e68e55ff05b546c5c81522e6097a3c3b4b4c21fe06667071beaa4c +a4014d39b23c13efb4326956c5ee476b1d474663950c9e3e45aa1345037be862cfa14aa1d03bb388085bdb4ba9d70a59 +aebe9a9ba34d6cd3692a8bc0b0aff5648e16b36d6c123e636e9260386642e29d52ba71ef7778481c1b1cfeca7fe6acba +b59706380c9271918ee16a04e84e91046caf99623a0120aeb37a7a98d4c954d3d880960086de6cb180c8b922ca1d7405 +8dc0713371808850f2137a89c33fd55ec2df6a028e22b2679e09f7084d5c471451187f6488fbd9b5100b84593540e5f3 +b492c55e470c35c7a7efa536f3e7c1e586b623c6669ba6eceeebaa1f81fe3b8b927c2e522fb12e603ae246d9566e4d23 +a5148eadcedab9ae08f5db6265326fa415aef46d0b24155910210338500be6d77bc9fa6f6e284a4c2552dac09167e450 +a0af7b66c8a1319ffbe7a0180795b442cffde153f9a871046d6bdef959378c3068813c516e280371825af06ef2320b15 +95479ffc4903f252fe58632e833d63d963469e89744d5c91315d38eca21b98f1ad6fb3ca77d620a6f97d9ca3aefa1f7e +84861bdb5880f663a5d9b5e89b59a940611a233d82a9895a330464f7e9b7a6965c2420704f3adc61f876584d06771f03 +933c374f176381a3a63fa98d238d3b7d337aa745528e271168f5b550fb703664c3128097b927b5922b4ae8fad30d5e40 +a3ed2c5080c52ad1235fd93c9bbf128b48ba8abe364247104bbf298582930bf3faaa4f4b6103062a4696e68c44f79555 +94668bae91eccfa8ad459588f927bd1a169af834a76132b2f2d5cda26a91094cb94661e3c59f7547b290f827eb43125f +b704404a487a7dce87ea8207dd5d813378a345375e8e2c07de349c1448a39af8672bb4436779b3485adc46df2212f409 +9347dacaf6dd678574a4f1a95df79369e3f5543c565b1580f907ecfd17b5d6e1ee3322d83601cbbc6d6ffe0bd2833a83 +92841abd813bd9934bfe945e428193e33ae6d4dd235a16edfecd6e4184abefb8a1f85015ee83caf9532dda380fd678b6 +95c14a1d3a1e1ea18f8a61f34b85ee8a794c95d3b4b0ce6ffc89013c9a80291a9a2487b00bb3de51ca2e4290fead7482 +962fb52a2134123ca31d91027fe9fb62dff4e0542c66b55899a163e50f6ff2c4c4b9c1f5b5b3d6c6dbda40e757c0bd3a +8aa06ae95b0ff361dea2792e465436d810b86f803ba6121ff93fddd9ba60ce47e846eb2d248b28f2c47bccc9457c1ece +81adde02ddc49b6cc89561716a839fdee2879c78d1ea0fc0418a6cd4a2a8189a2bc245bf2d1e535dde07e93b8a5e18c0 +a7a5713055455728d6d982a6650d1edf1a3b4612c9072ee8ee0bdaa3992963a6fe91ca242fe36f839595d09f6a47aaa5 +93900cefff6f918dfb12ccbb256adec89fb8da019324b811398eea03f6fd34f28a6eac2ce5580904cdb289879bd4b4d1 +820262cbf7864213e768b5a38f39d27dcfa7baa5abca557ab575b07c33917f7b0f06f0a6abd81222fe8a5a69d95d774f +a33114d4cc3cc84258fdf252e754c8bb1feb6a130785d35a78b4b05d0f782424a5ce0f34be3c1a14e3bb1bc0246bf0b6 +b966ca0a11f0361e611ab2a8907f78a3d639980cae405d380f3a080125c734059acb08431a42ef3a60ae9331a07e6a5b +9305d107311654ee727182a1683f322a78fc637bc214eae311f8778773e5bc52063bb0a902a5a962a4a26fa0cba3b06c +b3dc808231c75e681aa2bc4358c41f01e371bfa5bd504e7bd2282e35e72a2889a51747cc008dd4d8b2a070c8e4c2d7a5 +8f05cc76848367abf2020461b6bcc1ecc412ae9f114d44715875f25f34d8cd26b84b01fd6c0640648676b8d2d5120814 +8798c23f0ca8a7b23152ce17086f31e2a80533067f15ab4a7b43c127a5d8af3297115a3cd7978ace811fcc38805abccb +99a917f54253059a45103e15e92e1bbdb03e80584a85b658f231aa5947b29388f5b04588de1ed6de998741d360015313 +8b0ce3f6afb5aa83ff229ae1ee0f986ec4d31b113070c7ef3c1ca3613d74e3f23cc1cc81957bddc709a5c5bd85cc64f1 +9035b71e4cbdc7c410fc03a85543aed34a1c0a98e07ddc933e64886f1796416ff3a0f7754b5246ec93d617aad0f53d5d +87478f69c45394f94c67b7196f60aca42823ad92ea86a427d705576fa6a9bead40b1a4106767b8a20411e757f8762b68 +b36901adf577f159b4263821a48fc5888e7bbd6c9f3857968a9cd02e1a1a788c08a566b7bd5bb6be294fa5ab92b4ff6f +8a738b1392aecb35a5a1f12920522997c9016a0455354e41d2e1b81d8ec9b30a90f71492c7bc122505b2ecb0654545ec +a5a422515f17f2bf4b9b6c4b5b94df27ce80826cc3ad2a8579eb6666c67a96355e60bf227b36e1f082d749ade7a38a92 +b6d0e36a98e0518b14728bfd79db76c408f58220111e8c4dbf5bcfbd7a85bc68022456196f07b9f40158037a3c3eb90b +82ad91b812d08bfa815a93b47bd3656b493853bad52656450eb408fc915e430192ae123fb9daf4aeef4608800e818b74 +b8ae5b30118dda7b972464e14a96853147c4b362e9cde22130250447575c0d8d05053202db4c650467dc16330cb54b36 +835d913a3d15ff205497b98107eca77058beebe1aa35ffc20241bbc2a9b4d2019ba41fa3c9b43fe2265a1110b5c2fbe7 +a283d88acbddb50983356f2aed99c2f153b6a8f489b0597d8db08ff7e3b04392609e01aceb37fe985f59773327258195 +b6927dc3318931eac59c6e21def3ca79154beeaa4c57e11ec1f3362aeb33445366dae770e533aaf33c273eaa4f54275e +a6033a62119e077b438e0170f27835597e21c1d6e4acbd53fec7df69bd1372148f90966732fc5c004857cdd44b8a03c2 +acc764a116e31d63f534b3e0e42a3f899d817d3ec32fb4504045bce7ba3a952ddc81a33d48c5b0499eacbef4268bd5ae +af5d1f6a67dc6361e19f222a24163be388033a3fd0d33ad204f4411302668436f933c4a91c6472fd4262397417e3c588 +a2b1fe93eb481d4fec6fccbd64945a12cfeca85aa8b8bbadc4e4ecab2f3ef65616294dc168d6c955744b7c6acd712012 +acb6d3e123572ec20d0ecceaf4916401874f0298218b36a0ce089acef90329204611968c7397c2a518c0a78d02a9285e +88e4457b1c9b56957b76a08e98c569fb588b081e0e420a0d859b70296f648a8d64ff35ca61a39d1b8ac3613ea5fdc2eb +a7d1643b3bbef49b2f9fff326061cc27a7f65228e40929562de73e1c66a9d164d42bfcc3dae9103b2acf27606f18b031 +a66e3b97efb7ce4e81534453d3d41ecd4b5b6e9bb829b07b5afbf11fc6ea30382a0059c33c97afd906656ec19432830d +ae9a17d0044abbf3e6aa2e388a986754d6b0fa35d115e410f69ad4aa114db1af5dd0389222b838cfd859d436aded1b5c +a4a66a163365528b08333f15c6673ca48d7a9b6d17822f1e5390fecad122bcf7ec5656eed2f22fbc6ccb6dd96ee260f3 +b7dd42c938c2ec50c3b3fde92ff629a571e46f8ce128fde7c2d8f18796ba1b1d7eaf7337212f55cf5cfc540c7d2dbf31 +a36bcad22f3408b3bfd45d272f3387cdfbff57e014226dcd1db54bf3f8d1d896fc4fd16640b5d1484c9567ab9322a37d +8c9831fd5f74ffac203aa6b6ce03acfde8a2fd939b79236a01931d28b424fd8f6b6e44522d28e086aa12f0b110e5688c +b48bc95abd331d901610335299580ecec02a263d2b03bb0579cae3aa87ebf5e93dd110e7fa4306d31974099fe6e8f58b +a15e27a87bcd8ba69ebfb6228c3c48e19d79b22978d3a63af553b3083ad13e48dca496896cec195e63b8a4e2c40cae7e +96f3de6fa492dd2d653888311bc918ab832d6342dc7af9155bc7070004e89ca940b7672dce0a1b4976a7c3018f13e49b +81a022bee3593997f556ea53e2ee484188cfba0be4b831ccc048ae4b5a6df9e3b4d57c436caae5cba92486abb71813b0 +b9d8e46df67e481c84d5520a9613aa92750c8e8a1e8f376b8ad7b71a3ebd95d2d191ce538e6f7fde3ac5943f70c670a9 +8f0b52365d944f59d2ed445b6ecc4f88c687fd281c1913912c8e6075c3a59667060b42f2c1589a5955e9f3791e23aa02 +ad07429bab813045fd909b928ba4eaf262b6ea40b353aa43157e1e683b2752c5bf19eea7ab6ebb8daa8ee91241fbe84f +b90a99ec1f31c43060ef649e047bf24f2fa7fa9daf904136c6a5846d9479966b54090ded7093e481c52d872c6377eb65 +8cb05fab3ee23db24c9bac109db52895b200dd115209bfa41fde510b29d9871907d44f689fa0f5474d12314a711f6fa4 +b00d8f280ee21866b01ba3de3bf943a7d0825ed67db03d13a0b69f54a4ab389df1cb10909e831ec0af8f1675fa7dc399 +b383d14fdc47df80be46390420603e7f505052b1a44ebf595354726f2b487f7f18d4243709d347e1e584c28167a0e988 +aa951f60d1e069304222a8eb0338a94c8b3b4515d7cee833864b6c222ad76f6c48e0346c5603c35a3b52edb6f9381911 +b887070ecae2884109eed80ff9341f5fc514d59158f5dc755ea46ba396f6783b8a86ffd2fae4419cec2ed57f4dfd4327 +b1a6f1e4d25f4aade76714e52bc426beaa7592b975f07d0a6b372a3f94e7a3ab0e8829575bccc953195ba0c9bf46e68c +aa64bc4e0d9502d294f0d3e6a1400dc38f28e87c85d3429ab3575c821e1229f1dc8e2c13f03080006bc897e8fc3555c8 +8f215476d94bc2af7d2e0eb68783292e314c9a4f812f3065cf064f427aae165990dc9665011af502f5713f3664317989 +a578c8991e9e29bf3ad7be44bce3817e1c4af3e4a8ba3d82643378da78538787f581b9caea7602b87619e5f8cfb337fc +abe5453b650106cf65bf2b7faf8ff973b7b3be0e6f42983daaa5359dd4ca225edb7228bcca3d71bcb8d77241b320fa90 +b7ed1d027dfa91d0ca5d797295e359bdb1b0221b1f5eabd2ef76ea3bf456f9aa9788dd00ea24fe0add9e3d9b09ae2428 +96ba0f0c5ac0eae3f0031f8b7a87543ac369c22122681cade0ea33a6ca370cafd360ea6b80758476ab94cb07ad6820e6 +966f6191951b998202b8a63e3b10ece69616b989e9695cda84a450cb953acaf9c4f902200b7492eb66cb9ae0cdc8ecf0 +8d7bf21f76ca0e3b3758c293e66e977f83533d918dc445a09f4f38975ccf7220855627de6460d318290daa03a5f5c68f +b10dcd91d6602852783bb76b0a286523a0942e8eaaca4e0ee5bc76cf19d33bc631f6d0fda1c1ca51bb3d5d5c7dd43728 +884d502d934e2b045357e981506900849e6eb051ca3ecf3079b485b348372496db97da384f8d2b5a52216b4d223c90ea +b074162e5d33171477ed48f2f185b1c83e8fc2e7906681f96ed97da8ee86be7476d65e61648383c2766ad9853ead35b5 +90bd3d8b475da20c6e32324e30bab475f2059cd81fa67840a6c831026cf3d5806496a3a25192128da4b819c1b7cd6bd8 +8da4889258cd6ffdf1608af8325230f74abe6a2a511872c2dd10123b491cb09407fb979d80fb1185ebedf421ba22d0fc +96fe1d9137c24fba18b1ac431ccffc01ef1792623bc334ec362751b7bac73c4d4f7e9bdc2d595ad4731c71808adea15e +ac816ee0b9103f0bbdb50cc05f9c5c8f7ff2f14bb827541c51ae5d788f979c00fe4796b86eb9e3ba5d810925c1f34a17 +b231e98ecb3a534dfda5b40916fd4fda270e316399c9d514dd510f0602cbc29e51c5ed60107b73e3c9721f7ada779f91 +80115e104f22ff2653ba7c4e1cc417dc054663d488f861a9bbec4b9e907dedbb985e6e78f31dc16defa3aaf4f88dabe8 +a0dbc25dde933e6114f2ec22445f1e209836585997b14100f3f8b7e62f5fdc6aa2a85ba5ec39a5197c9d4dabc9a5c452 +8d2deffdeb1f0abed8ba62187f5e1cc06a1e2bc49b3e15f73c3d8e574dfba7efdfb762ab512cce53d7db790a7354c56b +b73f4897e221927feedbbf209e3d5b9c08f52bb732dc0d710822576abb7ba5ef0e728d2d95c802a00eba925ce99d734a +970761c7ee891b3ed08253d2c0d28478145d0776e2429c85b4734e5eb7a6416d197d0b1ad3392b37ce8d86fcaf9de7ec +b4c9e2acb4c05236357be37609abc437612244bb4421d69486050e390d5ddb52887a1b3e1bfe968a90f1695d892ba8cd +87caac2c93e192c34b5dabc36abe26a844a33bf63e9b01a668c90b70701360a0417ae3248173450c64034685d913f4f1 +a16ac64cd1a7ad46cde1c93024fdeff724afe228818b72bb66176c7daa090acf58e7fc0aabc582ad22486e46f0b96c5c +936bdd6d67d666274c29765690f4ad9c4b9203e9bc9dd5af558a8d908dfe8d6d4346f6fbbfa69158cdaccb0058ed0193 +b39af8d43ce9d120497888fba0dc95ceeabdd3d84421c1a30fea226e03b78cadca0eee57db524f6ccf1f6235fadd1470 +847da75509ca07fde2277aac9e7622c5874256903a92f7a56382ad3f79d1b3b0cc0b06b2a6b2bd1749ed567e68816d31 +969407bab3f8106a49be63f17ddd603e185afc1c9fc0ca0e90ac415f53923e3c6a69fe488d33403521231c5008bc11e4 +82e25ef35abbd9b98c55a45e7a71791925639afd92780e64a154ad8a94e9807f2643854250f30bff1c5e8806632778f7 +8e6da5cb8cd80d6b8e2321ba3f034ece1813a7b6ee3afac73371a51434a3e66221188162cd9b9ec035326e7e04e74b25 +9868bc3e60478fd0ce37d35e0e4f7695f1ffb7cf2e05842b3a09e832af33c7ba48448935d425196fdaea9c3e8a5122e7 +ac7733adfeba1da388eee6540a127d0eadcbd23770f2deec39edc0bfb1002beacb9a8c7106baedb22e664f37771c1410 +912581c23e3ad0d7eb886cfc22633fc704e530b6b4977086f68f1d9f839bbca3bf0162acede87c853e8ad8137b5cf345 +a0315fee6285a33d4ec60f6c1557ebe4473e8990ade0feff7e008d3be1a709f5f486abe784398734d9ea1193929697e8 +a44a08d6fe0a22849a8f518ed9b30b78367de205c3301fc8159ea273076488299b35c362530436dbb7e21b6b9f36835c +a591ea6ef83f2ec78a402a86ae5b82e330998e18ce66126a89046f169dee58634dfc531b1286277eed49f571df5202a8 +a60d86619b41f59b48c800a302775656266725b44ff8318014fb668f331bec82b3b543ca848a7d40b2718f29e5ce6cd1 +9420d0219d407583fff43c560964e1da06b105043187ea156771b1e4dfb5d5851d06fcfd819c7d8bb6568fa1bdacd916 +97ba0b6731c78eed331530be7cc374a7f4a7cb2144ac73b7c000ca36036f68754d4edccf73ce373dd6c6be55177d89d0 +b4e07b5c1376900fa2dfef8fd1a5a4b6152df7b805d5efc29057d1df2343f8bc841284ed23d2bab5cd1431fb95f71b60 +8017de31e62a24bed74460dbdde1717f3a9cc17e2e2ca9848d77c3b5c364e7e1d58ac0eabb3daa2b7336edcc8a418b01 +ab6e409231b778bbc1ab74c3062a376c5287c0cbd7d19d4ac1d5da1a8d0571864d0723944da72581783cd7b6b0d529a6 +b5f2fd4ef29a2ac847358abf2b3e7a3567b8653a4b9ed8da70809f2affc6ab44c65cd17f255db0cd8315e4801bb1a408 +91b61d5d047e9c672d7312f563b8da90d9c2c1c1268913656f061028748a351e116f524593b1be7117a46f168b3e829a +b6c10b09ecfb92168906191756cb824694caa32c6f2f9b19c51658d44dc330dcd344e7b04333392a8a93c73346a3845b +9431d01a121e6ffa15c32e724dadcebff65f806c11717b050c106c0c80e43e622130f41224533d13be4a8d14a66ae1e7 +a1248085c85855b4df6eb5a02df0dbd5de5a8a82656e1a5f61214885fcb75428647c8545a848960701d61c3002840647 +9867caba8f4be9483df9b48e2bfa024e79e6797adc2198f2b5115d7283931fe4cefc382323edfa1e850c3970bd1a2d53 +89e88c50c43d7e966e60d49b3afea792429563c93550b10584c91e4a827a3617971eb286c39205e2af4e7dfbc523fd8e +8ed261502f95814410fb081e7348eb09f3a3df22cc3ca82a2f071abca0190e9f041e8714b811418caf7e1753cf284e9e +87ac65370073b6bb85a945e138e4d0a5d71ed88739f72b9ba747d2a03b5d4877e8e526026348d2578c752bc4102055ed +b07de38d07906dc2838be840c291f467d9b695c62175c5afa46d80f34674d061107d6fec6847ba5f17f2d8729f31f5f5 +899348bd385a7c3d38f9d740001c9a543dd8496b58807a6a73180c94f3aa5c15a56cbb85cd7124458e2ae44a454a8a58 +91b70c3543b8e21cbcc8a40cbe00cf2ee0372ba9ddc7f610b711a070110508159e6a52e8778b20f0194ca09b109881bb +8ab84d75831ec1e708ec74eb6d6de2b13bf97e2d2262ece39e5ba5a4a3049c8303023e40fce5e87b237bb1dabfff5246 +914ac70dd91ccb6d7b83a5ed0a9250c66e77a815aca17416f1796fc0e1c26bee7acec5de11e65061a44d2d9c35f5d19a +8867260f8024f533fcb75d9c3f2ab113d349504b40f650a2c92bb46aebae3a55de6a113cb6387bf00eeb2bd4719d87ea +9976dd4e56b16fe11533dce2734e2903a3ec986dca6540bd9ca8b758a59a1e45b1e69c0b8f094d42cf7e015363ce37ff +b48c840786653a0f3ed6b07f8f980284c5eb2dd22e9ecd5a0566754a1534300e129b39a8a6d4fc48bd403b351e714f05 +b1633aae7c5e5c51a82aa4e4bf9f92c0cd30cc1067b03364825ecc492fa43391ea075195f2f73b99a11dc49f670c0e89 +8769a592f503bf8ab03d767524d9ec2223c502ebf15b69eb4b3d53325ab366888afbb668bcb380230b5bd74b32d90a44 +87439671fda66bf5989fe1fa2aa32519ef908aa6ab3eb34eb5b7d908e9a7db2d679170cf3fa0e0a388a355b8c51d306c +ae1ca219832c90554a91a7258ca5598f8bcaaa7059c574803b2688d8026df9083985c2f8f4ad3aa9b122efe64e0b2481 +94916e6dca309d9c7afb9aa4c0bc89a3de875a8537cae1fd32258b34782994e5be5c4987577d697ddc86b8d68dbbcbaa +8c5361b85176adf77ab1949d34edd562d8c16979e33b59d09548ad372b8c913ef385166bae53c8fef814a529fceafaef +b968172a6a831c6ae53e876dc4ef8686879cdadff0aef4147c4dc3ccbc173f89748b840a30ad393eaab69e422363bb86 +8fabda060f8bb2bfcd675803ff0a3f834e2356152f88bc79c23f58fbfa6b0c82850f281f7b8fd2a5e16230aeb4077320 +8e5c887c318335c5561e63fd3c3f64edc669c0b03b217e3ae40ea29245885442864dde15751d7c6ab177a91fdc1f7235 +b2f67f9d64650c6b51b88e7ee6d6a796b453131c93a7791cdb2d0a4922d3c913a4ac988bac5b4b9bfe61469886e1e7a4 +96b836824dc2a12ffecc6a053f7549b7faad9808e98bf20f3c9146fab05098df56fc2833a6002eb39c935fd8757d4716 +a4aa33fa77b62605f751bcad91333659e9345967845226371e5f38d5a7f72405d0e30777b485b730e6c62d8216790cba +a041bf3467320df4bb7baee569cd685a65c9d0e431824b7de93ee47ab8b3ab20298d60746fea7fefb5bc82d3f7e25dd6 +a85842f11f490bda22e9f73409de0909a2e61efc6d8be0c3f561d881988b4d2e6924ffaf0a4c40843481892b272943cc +94de0ecf58ef27228f5afb12496c53b075bb347f900b2df98f47ceda8675bc2941aec04d1c8ca0dec0233430f2759824 +b1795a70651be509c0955b07d58a1b8655a2e6c292b939b6c156f0c0983abd7e416cb0cf14afac6ceec85f2c46b83a28 +b6beb936ea1f1639ae59eaf53015dc1855ca0f798d9ed72607edbc6c119741e10af5354c29571af8befd83b8255a8f58 +9424188ceb15c1b470c4bb17c71a37af56c87625e7b7fa752099802673c3a5a99d16e7d6dd8f8b680e89b75cbe7920f9 +b9e22b5df8318bc0ff81003e8208ff3217ba1a84edf6a0b326b7180208d3a9144c6fa54c57ce6d6071ccb1a40eaf4509 +8e5fb55da49feb7a9152528ad6a6766af75cce249eadaaf4806c6d4162f65f3c7311bcf8da72b96f6636cc019546c05e +a55f751de82aed5842f94d1ba1e29976c3d0146267b11eacaa4fc765da8d2acf617d3a65a2a74aa983130851f8c57d05 +9647758fc596b78fb52db58f2ec31cea186d9d4f68692f56e474961b277396af4a51781b0a358a6a6aa8138e46443a43 +9461f6dc72988b44c662865cdc01c0f970f078637859cbe6314fb17d2cfb3451b222cfb93a5c6eecafd1ddb36de075ef +93b30bbf4fa0926cc5483ba9803c8b001aa80322addcc866bc514f2a10aa43bbd86008e4671ea26d8e0d2ffd4bb8f2f1 +b44020d0f062a001bd6dca2bc3ce61b17efc7a121a9035709f01a8c34708ed0c1c85cfe98c534189e0669eea719c88fb +afabce43f35e0d3201b60226c72c30177c4c5d75bac654fd2b58b3ce9de7d83ef01be60514817f1e7bdb525c910b8bca +a97bbab394253ebb02ba47ad391db3aec1b4d03e88ab3e7505730640558c11fbfce42d53b7f85787cb564208d3dc826f +805a34cb0c8c7ade28c69dfdde46b7a283e539977602aab165316e973c62bc65396b6fe2c96750ba028c550de03100ea +a0be38fdba281e0c248933ed73f1119f90e34d5b4435bb704a5fb7c20805e195518a2a424bb483f16500d74f440d4a53 +abbabc7db0a20030c6e687b89162e704720a010d7ac53b9766a9ccb7e02d4ea1926792f5263d715cb97d67f2010288c2 +b9e471a7a433a678090fe4324739dffe238ed7e9a867159e0b43fa80c9c0798cac6b58bc09a389223f94f22fec43e18b +9818e9a42ebf415c6d970c87261645f876d709751c8629d1ffbcba4abc8e3a2a1db8c4c6a6324dbf433c43fff62803d1 +8290ed53eecdb61157cc458dd081b9e890bed5e4cfb643d11b549b2c65fe68fb981d4311473510781945b0ee763a84aa +ae730a7c69866f22d8f9b0d8e17d7564c25763cc77a5eb718d5651b9c5198b2b9d3eed1c066f4985b2f6d7edb0a109d2 +88325e421a1be440175293efd498cd167dcd0914c8827ebf64ad86788f1fdeb3c16d3de7a681f958b0f49046c54fd804 +a8f592d6ba7fc3ab8ce8260f13f9c4886191530cb1d7505d0beae54d4c97d09712930b8f34ad74f1ac5ebedcea25dc8b +81c0853b0310a96674a92a144a14c48fcee0d72a772451ed046c284f16fd6447f67389ff7841d752a025da172d62e73e +b9f50526ce4bee12fc3fd8f3582f3829b90840f6eba06f37b53febc1d0987bbf58107d73fe4373d79e53827270bcd817 +a2ca28f619d4821f450b9431bdcdb129d4f35dbc2a4976e4d416dbd14e378d4d60a517457aa0343f7a5e60a7e246e22f +b9576225cf7e13374d3975703b3850251d53ccafc6feeedd07be2b0bdea63b899139a1fb446dcf76f62f3c03beea0486 +a88df9f6e95df995345c6265af546158499fc0d89447d3b387e7708fa037f95ac9c4e20ed35b749b8d8a7471dedeea87 +a853ec333af8f35d51ddd6c4d45972b68fb36219e34278efa6cce02bf8193d72c6014ba6961f8448785b0a43a31a688d +a1ead9282496e590bb43908dc64341595cd22b844624e02f2daf597f708ab0d336bcacb5862bce3ce23d1a9616fc6179 +b97398d8ebb52535a1ce3a10b2255d358142ff653def823ad9e9ce4ca5f372c6e7c9301588ae5d914b2b921a0fac7442 +8d0d292c7e9122b8d001b3a3323f9d37dca61de5a595f9402ab0e53e941c83f80237a853abe4aaf012a35cf59df48c68 +830535a5a8268d5ce4e7462fca4f809348908ae7ee117312244e0a9c30b09d91b6f798654d8064091078400346614e04 +a44a90d3d307ee3a3c3838ce43a873311789a9b9292c62a01622bb813a02f6defd21b0889cb6dda6d7225009cc6d2641 +a219afe00a9327f2c937afabdf5f10bca0687f48d8f7a2a046a52e6924af613f38cf82454df4f412f5991ba20b7db74e +b448ed4b15ced4de098781793a6e850ea1547d514646fb8f1c137c86e14231ac4340b308bf07813fb813cd02e47c015e +905fb68b8f5bc14834a06d61f3da686bee77b3b590a33c640c82f34e68ab993f8c4897df463973d6d9f0d53f9ac5cf5e +991cb6857dd0b3ee6597aa2fb1f4ccc962cb038228615466964680795587240e6ccf7861ec220a53ede1e2e9752e1cb7 +b823dc0249ae72e2de91108cd4ae6d6af3e464f12a53a46ca583727c7351a67f2d12c911534e234ee187389fcbf1f621 +981ba6bda1816036e75a864f635629a141905a4805c706260e7a5e12b82dfa9de4f4058143065b10a1012adca6b7d083 +8bd8ec0e77a6867057e5393d82132474eba9fcc4bbe025544bab0ada4ebad3d296ceffa3788acfea0a44406e2ab637bc +93eaca3a7f9a0dc809eb9f604905b0cab18750a9bfa42d98d99728a6de6e0f1e05b6e98bb3b0d9862a69eb57ee2e18f3 +90b077d7b7b1651ac0d723978b3e408191c2b8b08247fe2a7fd69afe0615dec09e43771cd845c2cd064b56295e53f634 +847e8f607332129e95eb1f3e00003b087e92ebf1ac9477304b0d54ea38419fe8581122d21bef8d034f788a9c92f4ec00 +b0301becb003dc7cd56ea7d830bf0fb4b85bdb33606d8d9ab2b70c6415ab5c8f4934bb7079ced16081b8f6d16b77c0c0 +9068fbbfcc95fff7ef79ab64063dd9bff0c40b4855eedb39bfced9250cc351b5b3b1bc6c2d038cb6d59a12a41b3db664 +84857e081fa1c6c08bf7b0bcfe7c6d74b57cbad1b67676e99686bcca0b17715ede19f826517dce3f84cfa014e11909b0 +98fbfd6a94ac3e4b53b811e4d275b865486a52884352ff514889313c7a15b07822f76d428533a0f8d3cb42f1e6f72356 +b4faa1b1245aa6339b5bb987f3423d187f6e7e5d4b4b341de87ebdea53b124932cd0e586470cf4a3b1060a126e4ce7e1 +973e88d073071c2cf5ed643d770a45f6be7b230896caf72a2cef10e56ff0a4e032d6ae1ff4c19bba2cc29f29ba70cc19 +8d40b3285879fb9ac0b6c9d92199afaf4716fe21edcd56b1a1fcb6ed298b5ec5b3b64222eb6f0cd1086d41872911068a +b5e338a02076ad851778d590ada4af1c217d035c2505b891163689a554e5a957219410bbb435bbb38c8a1515146f8789 +b1d3e990d027a38fc8a38579e39e199d9984dc6d857bf51e2ed5fae061c8723fed3c74662405378c29342bc4f1fff7ca +8679f10f866804b19dd0b14b24068c1d32908a52149d33ab03394990cc60c0f388eef02bc0db819f92f8197b1fc60c17 +aee5157db1cb7ca8013b0c19201ea1e7af32e4117896b3f8ec0ef0b2a4ded6a5e7c893281865cdae7deff4532a6a3fe0 +950315818b710d3903b679dd0de0619059bea7dac3bf4edc8fd4a6dba81b7aff9bca7cf1972940b789458f287609439b +ade345a6171b8e8afce7a455cb98024d0d91dfa347632e1a5a40721868bfed1c1959300f1e1e39a551d99a4e1abb563a +adde1719c13b3ec224bdb6b44dc2c5f2daad54e7ee736209653a0198a769180019d87fe6bdc37ec1b48f0212ea5a8927 +a3397eba3ed2ea491e8d0328333689f66b2bbed0e1892d7b14b2aa45460a12e4d592d78a5d0ac20bd6d34c88b8f1f7a3 +8613160aca85f0154e170b1b3f1052ba984f5c422c4c25e0771a53469c274130a31f875a0ba9650f77fabd910cb10467 +a91ae4d048c56d5b2383a9d8f6396837543b609d8b0be139ebd5fd31fe4a90071656442ca7f14136cb8205734d929b5b +8e42732269c77887f105d1c326488025f9938cbade678bc6b39941311360408ea6baf274bbf5ffff996756cd2390bf1d +b96e1ca66d51a186237fef402bc4e14f8f96a138db377b7e2c3243954b6f47ca75cf4fb5dd081aaee634b5e2efe2a065 +81d1c20d76ed054923c17b362b50205050f185137ea10559e35ee7e191bd89383b68179c0aa4531eb61abdc239ae6891 +a350b5778e26ee808466619f73900e09bd387849d072c0c014517d16adb4e3394673238c4f4e705d30b4ec2edfe5a695 +a13657433e39c0241d48075ae8ab1efe3680c96d078685c5dc0ac3c49d468db98f2094dd4204f44e8e90bf54059b5807 +a96255abe489be9d42ce6fa76ee90e4bb6a36421fb78068432cc935632ea5b5bb2ab70790ef79422f93d35d1034568b0 +b745d643480edb577b1f92ded38a522236fa1be2944ad8102ca64c3d55f6297b7e0aa1beb082261af1cc334f5a723614 +b235ccbf94e2bbd3c794bcaf84266141c0e04ecdcd7d2def83a7eeb86a2ff4dd3ddbd8245296b27344770f3d5d332f90 +935f3e4e9dceb4f58404ba1a489985001827e96bf6be227a8ac4e2eb8a950d4a446320ce3a245d09d2d74776c7033a3e +99cb7f3d6256ee8918f40642f5cb788f0047a04c482146e70687c3298629bf082dd98d4a4c222fbfea3afa3d7d806f00 +ad6abd2fcc67af691e76792432b83b8cd9b0a9e5e73de21f89ab54081ea002ffd904d77ab8efb6906790987e29c53ff9 +b6de4c3a45ed7898abc037a47507f46f7327c057a911529d3a671286f98e79a421f4586a7ff3235f1892d0cbbd0e7bff +9120311b071d38214e39f4b48ce6299ae9297c7b76ab364353d3816669cba56592fe4c7f1f93507bec7ddc1df471f0f1 +a6daf71681485d01ae7fd4bb81a326d3d2764bbed5d3be45efcbc04aed190163ce8f9d04a84bacf25ec151790f8fe917 +9534da45c2a497607f7440f61943f4c16878a18f0bbce00dd644de88383470705b489225f5be4428d1f988256b70c926 +b2d1b633b4832dab1a530a1d85415e7fa3e4a1fd383ddb898a79c7ad028f2dd8fbd56b83600cf481eb14a073cd65431a +8c43dc994dfeb5f22df9560518df32deb1af43f254acb8e6f93eec3fb3ac80081b39610800d0822246e130e8c5f7a067 +a18174ffb85d13b7edde5822f22872ece12383d79fbbdb8c02bcc9f654cea904ed8c03b8709d70736dd4b308ecc1607c +a54e4bb27d6d561261a3fc48705781399f337448c0afa68c074918d2c14ea7d51263199b01070b7161c3db8b9949717d +a7457cba2c5b455584980ab6d0bb5253dbf2cafea4efe5bd769020b970dc35fba4109d002f5934610b8b4a158252ebdc +877d4111f50f77463b60e07843b4521b2c44629a7deff20dbabd412206a4fe03f976de1a3897b9df7eed16217f03e2c2 +84d1ab99732fed1470f69fdb499dd3de795b055354e89d522c6a7df4d6a5375052c8befa4dc7615d29b3d92ce7df2f24 +93bd139c343d8b83403e04547072c3e546c67445220afd06c119f7119730288629439640302d0628e74fa596e305c0e0 +8157b5ab48d026684f6b51b802b4d8e7f85ef82583d1e8dfeca042b47a0e0f58e30cfdf4738e6d51394b260a4ca7e19f +8f03d5c1720540c29a1dee44ef5c7f8b209094ba8376d8e5eb9b52537d9843912b68562eff742f0a7a07f5faf6abd1ba +a15e4999a0028b8b083c2afbf4968a1f0397c26cda8dd7f6c134c6a860e740ac4bf1a1936849a4f2080e0cc9f8e44387 +8b71fb85363158c7afc3c41422e9a32ecb2d1f9d3c01fff00b77e0ec6a8661e95b552a7f05f4acebee751448ed750684 +b34125432d0704c0638090fc4566780d2d8038d803f96e19ff748325f8b5579cb8867e12491921feaf3c0df949f36aab +968196e10bcdc6cba28331a229acd54b59edaa83cad0f8d14f39d787467bd5ea725a3dc3d50accc334e74c81fd762cff +968abfa40af365986e68c47b4eb3562a72793fbd66a7d1b3804a5bac8137f0a3cbbf5cd306097cbf1a3b95c3414fb061 +85395fa84223dcc16b7e620a7ef6f902f7b29dce7760f57baafb37d985755e65623768b8bd745c8de7d00e2035aba7ab +b57ad86ab3f5cb00ca0855088921865893b6e539edbbd504238df2f9b2fa7c7bdbf2d6eec6ba8e2a70a4c4fa3f459a97 +a2f203ed1f07cca3f8c0d35ccf7a63216ab98c9e71557e829dea45e2c723583bfbaa7a83d66521b08a0718c63973a6b2 +99a3522974525f4ed10623bae83dddace6f9495687cb9cf4ef52c8530b05672c2b226d3fc5058c56462ab3737a068baf +a4a50d127ad06067f1eac2d61c0a1e813fceba2e5e895467b5e6045c9b7308d3678bed9212b98e44c19a1783e0f57bef +a62d103ecc1d5e1d5cb98a0bbf9682ad65774d63f67f95bcbfb0cdb5e2437f2279043e4426d490f534961a2487782cce +b12fdaa5ca77456e6e96eccf97a303ee2d73f547916ed67378835402136c2aa03e63912edf5a67785f7ac1636f6ddb51 +91315750043c4e08c7e4359b9cba25309eedc9c85672851f05a0651dd9b9329bef00a79cfe73ddc308d97cf548486b47 +947115aa6cb3c635bda7f3c5fc3dd0e4881500d74db4c0579e4b9039b75b131eb5db54174b1bb970064740551e6cd1c7 +aff091a9c7e86c80646cfffbf154ecbcfeb66877c5b773b6e8759649ada1094270e57970cbf2b0a4bcde9bbfa9689b1c +81e3cb9116f81e583b7579f9af06931a5337fae0d57d9ef777003f32e0eb619b75b74137385f9e30dfe0e10c2120b02e +81ab49647db2a5a6f47ec757d8427325fe721142377a287c547fbe04ea280acb32d71f3dedf7ec0f67b43ffc5d748342 +84b0e16d8478b798694503ac4a87ff31affe0ef6d2bad47abe0fcb3a2571fc8e4e9c966276a5f4968b2675827a115818 +9567b2edd65974393cf2181d235f877f5827a6d5ca16e77165ef35f6c66370f0c55a2dca5387c02ae73a66b81f01798c +af19f841026271e284548b2cfe9fe7d6f9acdb4759ca76fc566de7a8d835408f86627185fe32e705f94e6a719e463cd3 +83883e1c9d215c90948d066d2210528552093a726f0a27b8342b611e4b8639f6d2a5f95bef8cfea4312c1f2203f34986 +a48019b2da37a232b7999f6b668e2758f82132e15ea93608bb2350d3188297c8ff8c791977f2a083ad9773570bb560db +a1fcc29974eb065a350cdcb4283b2a813f02421b872eb3c15056ef96e2d5ffe2fba0e10ba19a4d271937cf08838e4106 +86f9ec59a1f5a5796e498247c0ef1457ea7ab098247f363329a336a1ee57afb31cc18d35e008a5263e7c401fad5719eb +a903f95675c14cc618b02f7a0401ab67170b4a143925979791d76aacc90ad1faab828fe904f13d155425b2ffd79c008e +8f652c4982220b8e9868a621a91eee85279b13b0c2974472fbba11775e6bb1d8d53309f500fbdacdd432170bc76c93a8 +a9b02cfa052b5808c1c9ee65ade446a6ce20174bd2e9d9c7388a1973b0290debbb6fe82697f09afee6ed01c9dd99b905 +8b4c700fdbcb13854c7b1d257a781fb7449a9e3236b962871f11b31b1f2e69ecfa6039e2d168ebdf2f142f93b91f5882 +a9ba2295980603515f80f0130993f1be434281fd4442ce7e68b2fee12b24e440bc0282df67707e460bc67a4706bdf8b8 +a382b85dd64b70296a2d16d1d15d6de80687dec9cc074445fac8de7bad616a95972ec399bda7c2cffa4247bd04413b76 +b6adb37da1c6cba5ddfaafa3718aa66fe2821b43923ec371cd4eb9e974ebf3d0e94dff1ffc1347cee5c9e19af7c76be9 +b5b531ea7f93c4756e5799118654ebc478a3ab57ea51125fd31c012053c759c8a52c8830b53208f74215e437d059eda6 +89c88a5ecee1931dc027d1553b5aa82dbc5fed2a4bed329809467f79f2712fa5529c0f80ce6891817927d0b66d356db6 +b4ad1964f73d3b7bc338909df2ab8889c4faad9b3b8a5959ea81f44c6c4bec95f0fb6e8fea1fb7e09789c690423e2b85 +b573bcbd8f484e350db04eb263187ae4e99ecd03494058e68221aad8d044db82957f4bf23f71a9634b2ef9612a78ecc8 +93c3dd86f7c3105fe482f62b0a56fe43338aef50f0d10f237ca774f834151273aa653e17bf919e54aeb35343ed790c0e +9069c429e7c6507a755871b301b31c3b4233006c51bb66ea2c9051c6caa52e933ad81a8e879129e0c1b099a124bcb295 +a22203e5bb65593bd22cd5bc6e95a2f5c9a9aac1e14d948a7e0aebce4f009a56623026e0980bd194a633b42f15822ad5 +b1585de69b3014634da2ba76218321ff4ce8476b653ea985a7330290b1bb1445db3e1f3c510f9ae7c22940157e2df36f +802a70ea7fa057a03d12538c3ad6b348a8e694bc6b483cd62c97af8809627a161223557f1d5196e23f13eddce15c814f +afe8b0e94d8d9b44652602c5ad15bb0140456d90c95af4ba58cff528e2834e0036572af867488f27cb2d27d81cf02e30 +93bb332d924bcacc41b4b9bf726647d7cbb642847fee5ee7dbf3d2a0489d71802d959a3e905a80ab1f34097328632f00 +8caad1d29fe712bf09d505ccfc724574c8edaf5fc743953b2771cdae006ad9792a889e0c8136409b8f92e2cab5ba09f9 +8678be67412da4d43d74660df98744c54365cf10aa59e522c59afc3836d115380416cb1ae497ba4b50ad31a23ece8b92 +a48e64a5447ebeb5f6b0e0fea29fd5845b378e83f6b06b79b604081e5e723930a0d4c6025627382f6baba8d47425cd27 +b8914eefa2f5613dfe99f11212912dd53d678ed349fe871781074d5b6eed1fc7f2e5bbfad3356a685c52a3c8a26e7963 +836ba66155facd2a1839f603644aa5520cecaad130fcd5cf379139056d3e163bf35f172a4a1f015924b89137f83d366a +835b70cc340b57a09b1fecac678be381ffa4c4951f6742322c2751cf1c748ffc2b9bee8f155c007d88ca69c12bd9db20 +8e98b4ae7c68941a48a70f703c3d5bc9a4cf6c20c61eb4c1338095920c4f23aa9eeb474a0430dc28d355b15dc6e83b22 +b24be8171a105f203c5bf2ab0797dca8ce61ee07307e1d82fd26fcc064bd8a8a5b6bcae8dd611f8ab650176e694da677 +b057bec8ca008dbfd4982ce4516a4925a61bd68e7a36b182575c6a4044c7a413ecd1dffa66ae3cfe2213763dd0f55a01 +8d270924c541120a18d587cee51711486f09a39444182800355c4193a76789614c6925e6a448f46c1891106f866f08db +a0ebf85c44453153764bfc817364493166833b0f84b7a7c505a955cf3a7d4c1b4d2dd00145220d8a3207758a82dd8e4c +a56fbc83a3f1034337ca0d5aa89a0a18f900c3654d171d47ee86b0720c6a965c09c9b06678e3f25b151b115d129ff7bb +833618f5d13b7919206c8e9666997ef26c04a74844f57150e7268bea540e30b93eb785803535566765bdc899d4f10667 +987daa13c00dcacdfb1f0eb13c38ddf773e7e8e19af125604ede42c6d0907f9ed1e4b8b8c9118b14f9449026802a6200 +99b6e669cd7532b435d01b20dfed29211042beea6de58acd68b6eba26baa1687d80aadff901b5607a2553df047ac51d0 +82c81899cb76ae21838558a1946425c719cf68d07950b0f106b859048107c13e4e83b0f2762ac8590cdd044c3e731f6f +8f1c5f634e38f47cc6967f2a80a449f5bf69585622c333d784263e3f6f027bccf8910da76435a84155a6fbe9a8adc4cc +92d3b5515744115dd20742be1a72a455c6d481855f4366a0e960104665db4ecae8925182f32d4e1d9dd7fb9aa246726c +ac86e14775cc4ef22cafa8ac3298bff27fbefa9b7004ccb16d2937128492a2c1319641062f609d27b9314aa225301d14 +a07e1ac19f4c374d68084415fa4a8068c0be540c8b9d81c0837347fe096547d8318bbd804b7642820e43c284af663258 +839266a2fe6dddc446d4b515eb538a27b5a3a5e1a8246f6df77c2de8267e172bb7522aa7985e0503c68db9cf93399b95 +8a381fa29e553fb57e3780f915a86048aa82a8a09059c80154df9490271aa6b99baf6bb217df43c8ea1265e85f07adfc +8d8806db0093161d7f83aaa2cbf0bfb8cabf823cb54bec094f886da6461397f41d54c39f216d7ff4a8262d12aa8ebfc7 +90aff3f98394674791e194b57c3f4e6e019471df1a74dc47bed725d4c47399e91c88a955612be47e89002f451ebacb55 +8bce2d60f3e82042ba94cddd02543b46cebb8770e9b7833b4e79289d4c491df7f4da0ab69778cef92dd81e5a6f0eb71d +8246fc9424b5d5ae0a3344acd7d6962fba6b68cde09332c262d7b3f379cac2c650d80cb5ed4baeea16a5557efb6878d9 +92ea8547fedbf440517522c687f1d652ae4637cd072147ef31338a40e11017bfdeac42a32808d33522a71136cc3bf26b +84f6a64600184c54d3d5c320498282947b8a8166f09ccfdfd6d285cff374312da57087fec3838a49eac5b93315f03b80 +86dfa1485e343c861286c057109119ce8e20abc646a4411696a3bf4718ce03d37fe14b6ea1600d8a7b172fcca6d08ea1 +8dd3404facfe49c2f096d2e74641c474c9c54cd6121771061db3c1757cdb1cd6813d3ffd79e3b839b348d34b7b4f1ba4 +8870cf255b342ffbaa2dcff41910a37afb29ca6a721774953dec182d95b426a481eac7bc107c4c2ef3df9f70e04e0b88 +b0b843ccc630209b9ab35a69f3aad58c76b2cd3cbe94579b5757350460633217246b342fd098e365fb3ae88d5b7d13f0 +804fe307b2d477085f8d9800c8a11c2dbf6f662d684d6a0d2fd415cbe4a09255e47535a08796a805188e1bad779ce121 +93d91029bce430ecc5f41a460c02cefd3fdcb8c3e761ba26a020e108e06520cbe2eb0c04139aad0c0fe58ed34d8b2215 +830867ec984210b314e7f23dc5b10e6d9ca53789cc447e29ebca229f4c79c9120618a540a9d21e4ba2ed8a811d6c456b +8d7a89ae9d7318d6578c1fa75b3babfa7c9df7099eefc2a9983ffa96627f4e7fc99dfde21b92fef5e0034dfaee35e97b +8eb68f5875dac63cdbbeb5df2fad7c1426939ecb6e3b6a48f737bbac1179ed4cf5a1e6919529878169d6d8552fa5ad56 +861e26c9a31d21839735cca8a384b981f7346b026cab7d60fa95a7ad7a4a370cfb409812ca285090c3f1c3a95e5194b0 +a02ab98589d48b2240209f54b0be78edb56b614b1aa02095ab5a9cec6a04faf065eb7b81bfe45aead551b1f774c60161 +88124374273a2425bd5932a6b446986756379c7eb93d3ba0c5d7cbc3477e6267d9c67e5e956cf6df841bb263d1a8e224 +91a766128a4c718a45db571606867bfe6e1b1049f0ccf71a01138d5443014c9758000a8be4dae0caca56321e3f992e99 +8dbfc433e2477b9d86f221e9c49fb8db67c85438fd54b670ce44b68b62d4c0a9cd56c37a2127fb2adef22c07643fdd3d +880cb650f01191db0dbfe63215d208f70f924380fa22baa0e5bcab60f61ece3c6d4cca0e4363291f6a10aca9649da69d +8532214650619e201bd330865a3228e9ffaf1f64ddd33d206be5616c691b1965814f8bc507fc8a695c8291c2f8713dae +90e81d5a9d8fc976a3bf6ee6d3022107d3a9441ff212305cbc7c35bc9163321cadb352632181ccdc1450f91f51872b00 +94d656836edd68384df1fe61239d40a36a0fadd59abead673e4a2ae58de5e2a6bcc4b980dd9b517e7212726b8ac94ee7 +afa70edfed2d81326f26f111982aafad55f510de95555a4d05d9916a600f3ca6c1e3f66d6b092c91c1fce6c407e022a8 +95cfbd616c2a59acde8152578737d3ed329aa82a950dcbb9378bebc3ec8beef9be2759a937381ed5aec1a46d486d1afc +a0a1ae94bcd07ba44c30bf50cbe0ddca2fdb5db82ae73e53c2efe9446c2464fea8e5de31da4afb99c6405798f0f9a59c +848e10f6c12a6adcf711ae3af8382178c46b90b9ff9970350f14b1a1b565a7efd91eb96871277b86040d26561acee099 +815e749e4a56c3b982b50ef5ed249c4defee558647a5c6062022c3ef42b5ebb219ba770f0de74869bea14a98eec02360 +a4d88794689a0f2e194988114ab96d28f77a29cfff606228ebe030a62eb4fba25cefd59d3d5f2fb66acaeda866f5c24c +ad59a8541eb9641c3045d5cea6e3930b35886da4c96906f701ed3ef90cf74431df3c444174d9071a1657efc8cebdc739 +97ae83289d535707039e9df8ebc73262f881ee8e288f73b9f0d6fd209385d3e2b761fb87ca852e10cc4818384ee155de +b47983e11702462a23e26c8d6407b01b67ad532bce3f1e0626fe3164886603bbc803c688729a64a69d119b15235389bd +b447011409a07a2d9074e08502e882098799f3b649e947de44c79ecf86a63045a19985857ec500638a3baa2b228a79c7 +870f506356aa4f8df7d61449a7c7a8689705388b8b81dfe08fd79e8a734c998a7ba71f1f6e9df085b8aa5813a4ec4adc +a07abf6abcacd7612338b455c1461ff484dccda7430d4e9c5f9b4e5c1cb65055f4be650e6d67179b2c62709cd52a9b07 +988b73c2a71f3b1d6b4734d231c089ad6cb07f7ea6f4b8fcfdd34aa33f09feab6cda91232c06b47e90ae9930ea46beeb +886443bb8d7d6c7634f55da1c5695f1691750fbf9ad2d63621589f91a0205ed4adbd4b905c62effaab235e740a172040 +b66caf1ac38a8a66c43767e8597ddb66fbefd888989ca1ed56abb96ab9fb41937927a792ce422577c68286e53bb4856b +a84be3b37007cc932429ba2b4064ab7fabbd0b77400bbeaff09f8c6b818b5cd127ff8497e131dd8bf4323e092c690219 +a99e9898b6f9b7b1b9ef6f28f60fe2ea71e961b64b262cceae41003f6aaa16fa3dc1c2ab63bf63534718ad812e882a35 +a1cea8f3f5605a5c60144fed53943d3f259e3e33545eb0dfeb211a9dad8d99cb3cd3b2cf5031b85778ef6520700eac4f +8b979026924097a06b3827ad28f3efd7f0e5aaf7920ebe5347fabc61b000631f0ee973b61b7468fcc60ba6e4381ee478 +b5dd7393dcff33d6d337328167ceaa7a04a98e0acf1dcbaf454247e85793fcc9a7d280ab14693cf2cee01afdf44506d4 +8580c90d72c0c83c6c003dcc340553ea547eca5989780493c2551ea9f04225d77ea76acc1bde20fef1a0bb7ec01685c4 +8c77db66f09e76ebf7ac14fe2fadabd41291f7ec5971060580b317f6af0daabe099f9db2c3d09c4c6edfa41211da0c4a +b6dec051200c25f150d3b9a7802f5b7c361b074528c79dccefa77d26ea2f67562a6d9fb8246369c6a60f832fec6b7636 +8620173e19eac12fdc7796df12bd3648c66f78fb83a8e6f6c9077c34027a3acd0884ef2e3455a3de0fbfd4ca130ed545 +b44e3ae4047f917fe1af378cacae2813f8774307c20d54c565b674de197fdf90e1a6da0733e948c3218353c613d23fbc +b330af874ac5d749a4ce1a23f4fbfa67f71e8fd16f6da07c714218be431b2a30cc4ad2594994a7a35f5aa06bf87ea3ff +a5be67aad05a965685aadfe03d66ea1136e6979cef00605e92912fe8f84be7351a6acf6b73c567a20ce6045a703cf557 +a1672ed63df30aabe34e8eb81209ff31f4e5eee620b58074d92d9cf2687e40217169df59be8af7374aa5a9107c5f51c1 +ac01de17b74e2dacfe3db539910b6c370de94e646b6f2dd2a828a381b04f2979f8a62bac473659fe7b6e126f15ed7aed +b978099cd3aec49300ef9ce5561aa30da4d37cb5c697e0b5cbc3c42ccf2f96e53e948fc579cbd24605101176a353a962 +8c8c439d9da3627e9f74da784bab8191552b945bb5bf9abb673659c939a60903e11f37300dddcbc8a495adf5c038234c +8b4570ac55ea349560a4e7043fa17f264dbaae15a2f3dbc5ef8a6579e1f9b5a440aeda94122982fe564f78b615de3e1f +a76bbb163db2ba26f5dcae8267d1a890815a76196af10444d3a04c1debeaa3c7cd51102fd0bff8944710c743f5393745 +8d3ba2494b612f93b4ebab77e6f207b636e2d09a3e4a9666d4ddd5859fdbb9747a88eddb7749356b141a071584677ec5 +a8bfd973dee352ae653f7c7bc7df2b32d790653a3f1f2b239d71677992938cabe941fa609e915e607809b5fa954c9073 +aeb4c1ccee15753d4fbba545ec4ebb05c7428427f087fdc0852a18439b19b1669a3c744a0ae2e7f74c46905f520c3231 +8fffac3ff9de863257a836aff3cdb705fe7f4bf604c2cbe10180d81c0956f723b69438bb8a3aa094fc755e386234dbf9 +a583153b241d31223ebec9a95e11ebc4a657b14056b8ca052aebdd9866140dc4669bef4f02b5ffdf667ddc9a87e0bac4 +93177005082ccf2143f24c063d20068fda393948bfac34af57ca58cfbcd0bf9a0de46f8f41312e83a502b7ad69b8f2ce +a79b0967599894340ef2408b48f42e6ba4f406e5ccaff13b46414ee38e5329ffc145f6c34d8e8acc6aba41c23e57e7f8 +809a356a76d54a05e5006f2cddf0decf73e5392b57ead32ab56bea9fe13c1ad090cd69a8e297fa6e017b39361906360f +b051226cb44ab1bf94a9cc0e4f246751d68f32ffd12f1d077d3318de642f3997fbfb0f2ae1dd103264542c2bd0293e57 +8cac28256b1a82d0be373d884d00e9ff2e384d5afbeedda706f942b1d222694f126ad44f9453fc8a985cf69fe11ad70d +a13b073290de7a2f01a65e429e1adb78cd37eb23c24d6fd5a1632cce2275496179e3c22e0b7f59fb51d526402c0f3f7a +92dab68d1dbf07e5b058120422ae610806809ddecd2aeb9d11d8fcac738c72eca584b88ff52c95817b79b9e0369e3ba6 +b24267fbee28883cc8649c243b13905874e5d97a285b9c6abec749a53e106db0a6fd6fd8671d5b7c9a1851da75a4ac5a +99cdf977dbfc10084b698c81cffb431a9eabb55b1323e1b15baed5984a1ed212ec5f6c58372f965fe18de0100292e26c +b021c697c56989bc8c06636cd623c3672e8885598fd2014f5e560fa2f721f9487cfdbcf4adfa34c178ac84771fbb77a1 +8fd7e3ad3330d4eb1a0bd42801d95ce40a82b43c366abc823e25311aa1ed882446d60b6309e1a1e201e725326736257a +b1b3c641ef4cbd5e9c69955217f53373cbd104916e04d012eb40a24d798e76bf05ed0a218862ce02619ef694c42be170 +a376d0296c0105789e9fe539a5d22bf62ee36a2de4c9aa0f5e57210ae49e2cfc5209fe0f467ed19dc95b9746595255e0 +8a0ec125a145e373929ae33efb978bdaf16041eba684ada612c244bc3e28c7027886e6308373a5ea53c9c3d8e868ce1b +93fde45cbf04cc386507b03eeb93c885da12bfe519df9fbdac5ada735934ea6e1a6cce066d033be66163b078e96e2100 +80c1839ee1d2ddcae1fed77d5f8091ae3074409461e04153db801e05b44a7658c6ccadd33ad682e51e211dd9e3c80f72 +87112961553b4a243875ac8d46bb6e274325699ccbdc40d7d9b7f7e58d3fd164f86b0b1df5df5f980785cb3918dc9b33 +a011463964a319c1ea11c7c55c607bffe0116fc834b8a1d3684df33f77f6e51dbe16a891307c9f51d5b4d205c4530072 +b316c4be33abd10400a4925f9d20ba02ab1feb50af39b6f6120d6dbcf1bde0a8dff7e08c64bd1f5c43543b013e242483 +9555b696d428c4b74806a7d08b9ff17c8512a86cbb13040360ce248de241facc42c042d3779c28fe98dc3ca96a47b2fa +819f54bcfc58a7b793d185d8ffe411bde6207b77cf22b0d5e1b3d9843e4638009c907fdec1966b485f95870da57f131a +82c3f9623bfb8a8ff3573197497c175fcb314addafadd025528f805b7a63c87b0e54b48d46c0322110b0043f7f77153c +abc023b35318fd97ec81933ce55799d8c36c3d55cf59b9efb302b276a76a37c517d5c690287f216ffc5d1fc082e116c3 +a6579226d602a7ceec06d402d38f217b836c8804e9da202bfaf1f3f4f15c24762ad6a2414ac022d8de68fb76ba8a725f +b701d6d60387d4e2308a77cebd210e868eaec10d86532ea18c0c6393475b3976a3eddd79e469458bae4f496da7398fcc +ab202a2acd4ff874cfc147ad1b02d4515ace254f8b828f619df2537698f4e1b2687e004c70a152d605a73ab1ae40fb3c +a7e09ef6c86ec7475eb3ed69e57e0cbe86114ca5c0748069d00b6e3a1e2ed74e4366adfcb4d938023560fd91d0f64612 +a9fc42b05ceaff4312d5dacd78fd2394dfb8dc87d52efb0529595877727747827c1c7e3a3da81255356033fce1f97513 +b0150a1dadde09cd60ec3686256b4378f47dc6a55c092c60a3a3f0bbf586013dc37ed53ba7a91c72791c0d52e4c49c2e +ac88e91b48f031df297c29fbb2cd0d2bcc767be5e0a7db87acc87fcc0f4300cce6deffc0b1cb6fc7e51c6ab13ec2ea24 +a8fb1542a956fdb1dcf90da2672d40c90a4aaa2f1232318b4112816bab660657eb97e3d0fee9f327793f6ba9bf8df2cd +b78191d1ec4615b03b21d7730d48fd9643c78c31feea19866429073f4cbb0d1a67f7d7ed210ab62b760c679515b20acb +967c20d53d46011f59ae675a26aaadbb7512d9f7fe87b7a20c3a84c76569d23920121063235e37cee2692bca3af69039 +9766abf0251cefbcfbf85ab1322f62267c22e6556b7fb909413a7819f635e3ac1670da6f5f72d3bb4b739e12eae5ccc6 +b0e9c5c327fba5347474366eed1ff60b986a41aabab00abe18a91dec69aa54197d3f5680603057f05d5efa0a48dbc92b +ae2f5defdbd14e2c7eaf595b017b4a97edf521f561ca649b6bc2e66382478b5323aaf84f0b90f0147e20ad078d185248 +b841bb6e04d2409a419dff4bf97dd3d4f06f6fa4e5e23e4c85f23533b7f25fe3da9285ba033c6eae7e5e447e35329c0c +85e26db850536cb6d3de259f662a88d23577fd56d1f99b3113ef1bb166456324d3f141a7ff63dbccc639cff68e7ae5a5 +8cc36d89424da80bcc2b9d9969bbd75bab038c0cf836f561080e14bb691e8e0c17306fd6d42522030d4640a01d5c0704 +817e72d50f68dfbdfc9d5611eef7c6b490ef1509559801fe1ff916050429a5f79c8d03c60d2bcb02e72310b3c4c9d068 +a15ed72881c49b545413102975fc69649fd5417f5b7ea9091f8209974024785496fa0682352c879953cd1e9edb3fbee7 +adafd20b962921334f4be2188f9ced4a5914389d0afcdbb485096d3848db85152e2881aed0fdfca11f9c8a9858a745eb +8d8aaea706815f1ec45d9ee470698ff199c40b1ff2d75bb54afd4a29250b094335538dd41637eb862e822c4cf0e2bebf +b8480d2a79cb6ada254435dd19d793598adda44f44a386ccb1a90d32cd13fe129a8d66d8babd67044de375ee59d8db51 +97c17d6594ccefd8f17944fb760fd32cc41a9b046f87893bb7ab2260090de291e8260ffc63e774a4b6b1dfe0e5107ef8 +b5b7e1d4d9683de7193120be850395762ac9a5669cded9226f5ca2a3de13eb13b2900af083645ec35345894de349433f +9405d473872cc9f9b9c57bb9976d3ec6892ea429cbd1b12f22962b74d88448d4ccdfcc6d5c6ffa068d560d7bdc3208a1 +b99cca139a3733b365f4718beb4ff4a5fd6aada0173471156640d8be2cc69f2a70d959b57688f927bca2329c3b30477a +94872ec872f19279fd26abfb132b4a7fd8c485fbdf04515c7b416fc564e61a7b0fc5da9f1a380d2b3db989f1832ac1b4 +92aba716538bd66e35a7bb877cd364c1b8dc3055a9cba2da23c7d9c0a010209ba8afab455da99747fb4bcc8fd3144cd8 +95ec4c205be3dd5df181220c96bba3f4e3b526fe5369035edfcf706c1eca43f29a4c95cfcf94cecfc974e01547e55125 +b48c719d7cbda1e79b3f7ee9c17c13bbac197bb015b344f79bc6785b28a1e9484e2349178178a2fe94c46132c54983c3 +908c495c355a0555544ec6f0b8e0dd0926ef2c5c640fcb89049e6178697625b85492722d42bb5c966aee2cee9981607e +98ded9cdfa92bc8e3664ae90af87f88759503715f6eaccfc983e3ab53f7b3af6802999da93caa7eb3530402ec4d8901e +993266bb366ba46d532973391af7204aab46a3189c83ce7cfd2713bc11e99066b1a5a012bead2fedb09274e7b362e8be +88d462a3a17f84326b1e4177799d6e9c5f4ef57152cb83ffff4353a8382ac8be7d50381723aeca77d33d8f07fccf69f7 +80438d9eadea15c90008ccf4758d4e3fd5a7bd02809eed5b683f2c96a15d24524ffe75683b7167d42a47161c65d533a2 +b9e7dbbd3d3d0d86e347831cf99657fb269930087920637ac6cdf185d5eded3f09cf3eb27759ce3f4b46f41411e2fdce +8f0215f23b4945470f74b99607c12c36eca41aaaf99747f522d8531244b668d6ab8c1096b9b5697208c3931e1fefaed4 +b2c8d8515ff16beae04c855b4365e450e0ebfb423acf5da2501fea76259f862bf29738a858a4093b98c2a444396249f6 +b27364a7258c30a59d1f13d358eb49dcef298a92bfa699b3b91817d2f324be8fff91c0b71cabf26747802a92582e7dea +aee7d6f71fd674cdd8dd1f22195981e7160990c16647c871835d988e881a3d4c52345e74f7a54768fd97a65fdbd84567 +91356cb2024f7703ccd662f50baee33409c28ff13bb5eb92fa93f303913e9bf31bf83b0babff4b5e3649003ae95492e6 +b744e4754043d3ed85c3bf6ccda60e665568dd087548ac70670b90328509d0d5013cbdd07bf603949067e54d8094fc2a +8146cbea5899401a80676850d0b43b02d376b4b8f02ed63a7d92532d13689e2c02846df79cffa0f33ff81c3bf492339a +94bba8a1508c6296d3dd5d2e609d6d732ab2541849deea5436a4a9034e1e6f1c8d26f6b781fa34dcdae7cbf8899d006b +80260b321d932e1179667de4916428c1b77ee1ea537a569dc64a12da5ddc85d09896939718ce08ea7e0fe8f8b115c408 +89d4640cbbca5d105dd67250f3bbfaa96d7ce19a89f8d6e188353f3a9b8737f2db1707c506f8ffe1d3144dd1da371920 +92f5962946ef7190fbb7bd3935427157ffc815a52ef44397ead3aaddddc82e5f85b1edcca1e9082a500960e19b492614 +8b89240c9b7257cbbfcd6e415fd035ce33bb46c773569d217c82ecee5dc2d66eedc9333e0b043616b0cbf21744909b60 +a3d23484916d2c0ad1b81fc7df70c97d711040799cab076223e0ee02a45a0fe9ab564faf7a225982468f3e62e32424d0 +b31751386bcd471b5858d001fee15d566215e34d2d62556c51ddc60a834d3f1acf18c415c23a36b581cdf4791f461ce1 +860a99003b841221dc5ea2bd7e226e5aad72db8a5959d5d4dae8a86114d30b9e8915b2314ef867e9c2a477d9424a2d94 +ac925b330cafddc7d95d115a9e62b2c135acd22b5e35a4aa789f4318f03aabef818805845f2532e9504bb19f69171809 +95d8180cae0815d33bf8854f4590be652f95f72fc29f0c519ca9bf3f490ba4a724b23d9054e08e3d31bd61d609a8f0dc +994f223740ff95764fb88de1ad6dd90c9c58c0dfbf8482e1dd9bafc20c099a6772acf40569c54143f6697fab72772296 +971d93cb1e7aec5defa52815bf202b11de6a2ac9c5d4c0eb236cf2c4941460731e12b718f4a5b980ec6f4c54c3d17deb +a341095fe5adb96dec2be367f09804ef4fe77d553102ddf7d643b7277992708e84be9a7748a97a56f065002a97dd7cbe +843709280fba29d446779b1ac6e31bc3ec8ab8082e8b063ef8d2f3733ee77a4191b55772302964bf867fe1044dbfad65 +b7ccc71fd0d0c9642c32d292ae88ca369d1fb5cabb97b1745c621aee41da8f94bb580c1ab23664c1baee65e97b21f0b0 +a9b41f31be84f8ba061570633bd9e5f4d8af6fcc5276c25d9ab67b2b88c1f8c2a87eb19280cd4fe7b4c04da8b2d02d7e +93eb14ce0632cd325429e1c23340da9655d3d7c2b42a4594bfd5a4e07815afc9eb1ac737228771492020f6528c0b7c61 +959aedea532471b9610150657b895c5f51ca950aaca910df137dbda2d17184173cf2638a2a0efea3f61d82b6ef8a7c3e +8ebfb50bd48fbf9a6f782454ea900acf0c7143164de9b5b46c1cd072c69b76143ac4c99bd43139b5e55f847841fa6a1c +851499b3a1eae6da530a47d3e8bc068e6e7144b744d5eca5394f96253df65094e5f3c34abfaf7c7d78c4d5a5d4863da4 +a8d68bf15b900cc47197739856557b43a5eb233b6c095f21a14a90ac8c36caaa1a54690c95840f0a4d2e2ffad0874a2d +81a6ff8fb1dc4d4042089d4cfc10cf826e39083aa5983e53f4866f8f4c10cf06cd8608c4cb1b785f8d309bdb9b2dda63 +82f658bd1a95fac0b65d337efc95d856aa65541d49aa993b094d70e527e7d478970eeb3daa2904a1309d755e1d677691 +b46ba4f3d8f287eb92390e5d930df4f1a40abe500c9aebf62e2eeeb2e5ecfe5296b09fa22d6c9cfdae28d431fd10a00a +b5b38508befa4623166f6213cfd160782fae5b7c3c7ec279b42a83d43a7adcfaa6c5b34cedbf98bba357fa663eec896c +89b8a0fb37a0c45eb1f234ae9c7be65c8a708f08d431728572169b33f8288b1e17b7d4b18de9fb76afc37ae609290623 +a7d1f5779c043900f3ddf29b6b7ae4301699c0ee9e70314fcd3bb2643f912fb1225a0164f45c47419ab762420bf8e5ad +89d2a69fc014068aa6d0b79784b8953f3519f563b5c9f774f4b148334d822aa645b662d5efe7dc6f9cccc2f67268c3fa +a698d3f0b1b6b72b72358d5fd5e49e928cfde69bfda10e163b9b43bb9604362b32af1909d28da5e0364abcf5e96cc226 +91c12dc25c48aee56484172de8c6aba0d9f5eae8db848a7b53d76001c292d115ec57d816c2cf10bb9e901b2707dcb71d +b0740219e084d56db4829daa30b2812115b2e95ae85ee96a140b7c4012860e8017e19b482e981547e50e25bd4ba76716 +8c84d4fa255e2de7cd23b0bbd110687edc47ed7fa87bd42658fbaf3831c6d68cde3ef403ed6c585f8654d0cd32074bad +a530d3272aa1740a73e15cb9b31c5e2e54c404db72274b0840c19b164642389acdab4514b9b2bf9688ce51392d8b6793 +a601f52bf7b3226fcab93c67dccd95c1d6673270671c4a099b867bd5578d5711fe9acc9b935b867ca780ba4a394279ef +8a238082dc8ae33314fe1257e7bec69e905c194ded6f894267bce97443166fb443628490755e1d453545f389b5beaa2f +88a9737f3e9ded874681fb6cc8abe0f6e1ce18a05ab599b2f855f73e6fe5bf804de5c5dddeb11057aeca6613bba72c8c +8a5cf70293eb99ad3c34992c47299646c8702d1035b75e4784cbec67b28cd4c88eb8c721f4cb8982d3c6a42d1b9f7fae +8a62228b84fa7463a6a8392a7af767b661382175633c5e00b36979d816a53b388f31afedfc47a5d8cbcb645e8d5928b7 +92836b5a41900a1c1ceec83cf4f15c6177dc20f95eed23a203810116ede2a072a8d6c96532ef32c93ee21acfb14448b9 +b4e538d7bf40c263dd1ede65c81883dd31f9237a0fc8d134a2b480a1a681dd89cd2edb19e63070ee69e96cd12069ce3f +913eceddd4c9939cf82c7e9ca5ac300cd79dc5a72b8458cd69e9f8929168eb19e5f21eac12a3b09eb8d3998e28e3801f +81f4a3e7195661b174aa2059796dd88d3206bedeb7d7cfbb7e61aee335a01ac50bb8edeb258a68949492d4ac6215d95f +913a393eba8eb88d1076effa8d2a30258d83635ccb346f1bfe099fb5fcc69d0457ce5a79363a618f9e8b43f53728433b +b11d721b08be428254665bd64a8864d78c5112e252feccca113631b2818fb729129fcff1e739178507ece41b807ffafd +92603fb7d50d11b59fe376720aa57412b866fcd5da90195a5a401e6222201b30c29f8797dcc1b41ee2cbc6349bd5ee1d +a466c5d41cd4a8d1f47a650ca67b529ad3873ba3fd3a36db27f7a5869b74b42381788bb1a1c100ed184118839b9879e5 +85c50607a86d4f76826220286784fa9b6ccbaadccb661fb3489fd35a3a8917d6999ac891190f2297afac3c37abba2967 +966320c2762b266cf7eac7aae39221599df4fd608036f6101cb8c68192fcbfd5f61c7f93172aa2be0934486fdf4816f6 +ab69525f1c77b6706592cdd5b98f840184b49efc6fc2687d6dad3b014f6a12c4d5cbcb5120d8869246da010823534d8b +aa2c9df15c06b58d7b9bdf617df8bcda83ccaaf6ddeb8074db931f7f03dc06a7914e322777e297226ee51dc8268e80af +97035b62f8db4df6e787cc2c940f2298c7d26c2127c7a76e4660d132a14f43c8bac8dd4e261605611b2e9c08929f2bac +8ace33e696953806f594427f137e84ea6b22ca9b48c3bdf3830b3e951e5a463d4a7067c68d2033eff452295a741fa1cb +b621fe49b12580bc8ec68fa39d5133875da23524a5ebc793c35040fa3436350d0f3e4bb4e53eaa23d312a7847e2eb2d6 +ab7d6ccc0de9c7ddea145e83fb423a535cf26d470af3326d1d6a9a579592b32ededb078bae4613028557877a9fe71642 +97528eef76389dd77d33ee7daebbb290814911beb725ef1326c3160b9003c3043be09bf3f84e4818bc2a7960ce1acef5 +a408eaf5c675b50dc1c655f83b9595dabed68e74e6d2eca5a4948252667413cfffb46358400df5d35f92657811ae56e2 +b36537726b26b474e184dce0ad868a66f0944b4105ff6d35a2cae0f3a520fd14a66630388aeba178d400b5fe104e521b +b2b88518d10bdcb111c82a261076367e34718f1d0a1a06b421891b4eca1e3c1f904b66e65dc914ff1ea5991f6a638a02 +aa3172531879a5c8f594ce96277b2c8c8d4a2d0f4bbe567ae40d5b36fa6108e00f0b1dc94b81f36c9eb6d1e9ee1896ca +a53975587f10667a9474ae2756faefe43e7f81bf9e051049de175a8ec085530fdee3d5e3db15d4be874ecacf49f31691 +a1abdc58bff4fad0f6562338daeacdac8e37f9f3212aa252b17389bd9c54db58706129a63bd0695d299d043b5ef0e2d3 +b8588fa1090597fe0f6275e5779da11a4d128c52fb8954e475c4940f1a3e10fc23ce1f61e9aabe8a75e82824f718a94c +8a1981c536747d4cc06315c794f1536db7ab3c9dfa024a0df854b948d93bee72083b6c9c4c4a7ce999c98b904813a659 +95b2b1ed525d629eed454bd6bd059b01869423c3463a56689a7c39cffbd3453c962426a1126ed631b25ae8cd7538302c +8032c60f083477693f533c2d8ae391d62ea754b8eb41ce9cd59bc469b980dd959a8ac840ccac54b404a9d08a6f9e4b98 +a72ccc14eeed758d3d43c51d68341fd7e98880c3687e122238d77dac8d987c8edb3067bb63baf13a0e57fe02334545c7 +aac3eb536a5061a8ec788ce131582dea691957ce8b9c6af5ab7224bdf0fd15c77bc6bc63ad037bd83e0ae52fda738361 +97dfa193800e57e6b19d1b7fbab40da6dd1463f043eeec34b316ba6bee21b6bb633ec0c4fe107c9dab6e06e07e0acdce +966ee3cf2f54777968fbc34f08c8de121ae7c1d6b2cdf1f1f9c675828d22ccb909bfdffa2e3f2ce51b0cc85bb29f8504 +a9df6dfd12f8c43c28b929280355cb23ab0ddd2cc2e4fe76603a2e5dc2ef5d1aca2edf89b304a27345cbb1f24a86cad6 +abbceef80c744e5a1194313f7b84b5dee1c9861cd4bd3d0d12c433e5f2e8c6ef6f10b860abf3b788aa04896f708426bf +b1dffdd81711e9782c992c4b14583ad9d6c39ef88974682a72e717e21923da6892490d7efd121423fdc638467e62e064 +817f30dd799c422da33e13ac2bada8cce3930233ddad495f714a1c789b7aa8f41ff6e688bbffc5f2e8dfc72e5243b645 +96760a79e4414ff1d19fee65b6e65b2dd6665323981ce8b4ee93d0a9c410b018ac086c08fcbc7a71720e1e3a676f2b3f +95445cabb75909262975a5b06381af2bff5c4c6cf51cc84adbc0b7f2a985117f35c014e33672cd5216a9737d3f37e067 +a279c905fd9d49482d213f5eb98256d020c2b90bebac45004d6f152ee4ddcfc72a7e6b188ce3b6c93ebb9ba9b8be587f +8591e8379a78af8860e6a0e002be5b25aa4b93c5e556f5ae2e40400f828dfa19d93a4910823e230a51e2c1ea5464d437 +a6fde17d41fd9f03605ab6ddfc992e36535a23b2c39608d30cd6d72588f1ec6afb9db193e88eb609e104e73ddde779a7 +93e2cb6352a5eec063151e5c9a822f6fd475a072dfde2464af4afaf6a730a6af1fd74c424c09727328a7f23505b91407 +a7b1e4f703386fdd16f5fc9b59ef1dd682bfe5a23bd42b3c4b1385bff894e758ab09674dd6d0ded5b32a0a0526aa6d98 +aa7f01c450e619c4bb42d6cb1a90a94dfe132a641728a642997b71e2c3b02d09a7695b544712b2e14416e7de0252fb11 +ae840b870a938668d0d4404b76f5d4d252d8ae1e3619661df0890ccbab900e3d8dbd5dc9f96013413e3f1e30dc541db3 +ab7552930ab07b0f5d50edea3a2e5ea3ac1a05cc985246ca066fc3350bc58949dfb99d4f6a6408d1bba64d3de47a3c2b +8053634d4c730b5e90d68c2830a73e93f1c9e522ae0e00a04e2ba15a1b7b4fffb8b25516ceea61719f886c7763d46219 +880c39ca4cafa622bc767d3127d62143434d0a1d7de8dce1a2f94cdcaa023a7096641a46e6b97e1b1ce9c233c873a519 +ab9d46e46cb2f382ee7d21b6da01578b786b7998e0fc2b5d5a4e1a0d93aaab997b5c481c2d9a741865d6460ceef57a5b +857a5957adc3a888cf93f144aa809c70a211932742a258978af5e657f4f57fcb6d9e39dbe8d3128fac6c592dd5bc4ddb +8c98656861fb8c8a03d491db45077f1d136a759177842ecf6c1ca36923088237e928558433d5b631590f395db56f96c1 +abddacadd7d536e91d36609fd0047f5db113be0f4d84abc7631ffc5c00df919c085c049c013a05131150b0043d51f892 +a8b14af12cfdd0e11c8487334efbfdd22c8b4fe6bf350333d42ac8c704efe54f50a4bb51d9d802e5185ce72e4b21aa58 +a8badc2bb3cad0143db1bb3cc81751f9974ff3f0e2ee35921d04985409def84ac2803a657571699eba34767b773666e5 +a6739a05d270efdab18462e8536f43dad577158e1c1655fa130da97e469adce9bb7cda6f9ac26f4a9ba3f9b22329b066 +842ed6efb4395603e7fef0bf92326c0c63992da4ce7912f850c4960f7a19e0b2ecc720d9510f15ba6f73a2c5ada8ea71 +8502ede859944047898d533e1923ef90e1b5c17d985c9fb4c6aa39d50636de4c5a4df278f2f62cfd3ad08bba4c5ca6cb +8c738573226dd5617b3ca1dec8780000a77f3fa8de241cac99b0d9b1b6c90cbb8aa2009668005f2c5c7abb09c0ab3f99 +b101335c403d769313bd05c755a9196769465f7068fd6f9e00937f3cc843d48f013f5931f999bb5c0082d4315134f5d5 +925ace190259b321981fcf8bcf52c6852b206099f25c0f278439ef6edc4320d6f926cd6fccf1b4cd224bc52e5c681612 +95f5855ad1bf14224e51f7d5e0d229683c0d38fa324b1abe9d595685d3497955e30289618c4775f6083bbf923ff3a37d +a3d3c7100962c8b60c40b830af834ddc48858e7eba5ebe2874ebf74e505c25cf52e661b49d7619f2f2a039e1df02f5c8 +af7e66c1d5dca63e6be117b210c616efd533e77199d67d8f694e4278841963e0a46e4e44f0416e69bce6a7156e1872ca +ab796760166d1e1fceb20f9bf19b1b7cfcd327650cc7cc35c161ddbb3cd4846e9a971b541f303cf62fdc0124688fbd41 +b920211c5b440b3567942dedf62a65ffbcad1e3516f58d14d8f8dbe86f45c4b9745fbce43f5219b7052b27a3a04df12b +ab6d5d25b9fc46b0824df1628993e44535febd7c62185b6795550388185035ae12bab60fa34848f465fb4f4a8add3544 +a6539b67dfd6f3976cb6b304f4d152532b3f08c02bb97730c03c746da0f7b38ba65536faa43953d46e5e7687a86c356e +95bb225586b1c82d894ababea7e5dfa8468bc0e10a2ef34e5f736fd1611114cddaf1a5c58bc9d664b667adef68b5c25c +a16eefa4e6161a8e7bac63cffb2dd5cefcae57144e63b3fded581abf7ce32016a654aaa582fc25bfa51c83f352e09372 +8b742428f6af81261a47a0df061e480ef9176694d361ecb57967bea67e11cd44df686e38e35b7d4a6ee02ebd520aa1c0 +a2a4f2307f646384a0238a711c2dcf7000b4747b8df1d46c5da962fdb106c5339790b48682e8ec2532b8d319ccafae5f +81910c1d72f6731d27d3a4059ccb0316faf51fa58e0fb3d1287b798ea8f9b00bbbde31fac03f93c7e9a1cdbc9502d5df +b846b933c2acd71e9f9845f1013cea14d35cd4b8f7a371b9be9bec9d4b3c37a2d0da315ba766c3a126f8e2893f10af4b +8ffad59284b41b75064c277ab01c5b4b3a4f3c4b355bf9128160b1a55ed6b0d91366f7804006b4e6991525d3435d5235 +82ff36a72533fd5d6745d0c3a346fce4f62b6aca0b8eccd11399b482f91cdf6a5a4135c627043008cb137ef4ccd935d0 +a11c27f6eefe54cf32fd86333d9ccb59477a655bb0c35dcd028eea58d4cc40ef9a26cf3432fad4e9d058a27b419b8f04 +96642ce0eea3c2c0fd155a75bec3b5cd573d41e8081632c56528464cd69a1141be3180c457213128bcd37f5fae47f7f2 +8349a9e390e05150bbab2351b77a3674f1af000b6eb6752927ef838b6f0a1200e6fd7201dad8565e3caf3802f204246c +b8ae7fea6275ea61935d3047d8156e8fbc4a95c9fefd1c36439b2111b9ebeb7ccc306e0f8c875fa772f7b433cff848aa +b366f056e23905bae10ef7ce1728b317b83f504d128f5bd34701ecb0d25ec08491969625e23d5a2fcf0048af610664df +a3d88d506ba46b73bf07729aafe9698e788fd688647a6b4145761275257d262cc450c7889b8a40d698455baca55e3da4 +891ebaac7a7a408aee4ba61605f44f9ca5a6d5e046eebfd8f5108b6dc4479482806dd01686045b4c7760051f22bce468 +a6ddb74e3e3725e6f2d9025532ee3f357ee35289e1cb38dcd5b2ea8ebc0bb697416fb3aa73e1eba632d593d40fdb030c +a7dc097f440ebd31ec1a005648468c702bb77073ac8cfa32b050e90a9e1cf388f138abdd18f07951c752f7e19f706af1 +a200f25299f9a0542c196adc2e00289f453411066b88b125d3f0e6b17e98efe9da8096312a2f1841e01837da90a65440 +97cd3a9d4185d77d4c7bd4ee80928def7b660d8b949b0face798c62a7cadce1000997af29504d28ccf9070fc3016dc56 +b9ebaba1a15eecae6b1998ae6d08233d05610dc0933b16922076b2dc4418cbeb4e5cbe099bbded3139d8a47f2b2eae10 +86f5fe8fb36b419fe6fece1c5c4b9d64468b4aa0154bb5dca466a243b6fb1227c3b8bdaf7ce5c2d4fd05c061979f87df +8050e011011e7918ebc25825d9863c91046fc3756703bdedf936dec2815cbd10c2403ce6f4a0b4f576cdfa1347efdb85 +ac22132a482d2950be9442167be214ed9d24519073bf5ef1c8e3e6f4a77065da198a851950330fe4d62b2a1272835015 +819e2e8e3ac43b6ae4885899346f3b558bd7658ef7d380070588154694957596695a925a001a9fec7cf3655326c50c2c +b00f40c084d2eafa36811e0d822ffef874a0d4bebd4817690408a737624be05c920a08307cfa0c1195505c5e7a5fd878 +8355768c09515a593c8fc8289baa3b6cf7fc10d302abc93f72090ad99a70a1ef1107eccf839be722132259500a565d68 +8bf0615d2cd11b03546ab7a0c90c0c938776aca8a8b989a709c367f0f5eea7b0a7cdd78f96050cdd5d0a123d01b99c53 +827c2cce458464fdc716a2198fc67b3cf2ed7802a1f53f7a2793b2314789998b13ea61343c723da8863cb63def6a285c +b609cfe6acfccd632759700bbb0a06fc7903a6c0c5875c2c3bd85c65bfae7b29b03e77092f29d565a6a89b85012396fc +b73ddbc330e872363bed36578b245b666d42923393a1341816769ce0af24b700c19ea0f579e4f9aff1c3ff369e63da8b +976d658085e5978807e13b150c7aa539b44ab8855a386bb58a52d9ec9b5e21ddaf89a18b043394d6cf47bd589d04b240 +a213897312aa28cbb2c572e643d3aed003c84bc2ca571dc5fbea8a0b642313be94db0047e293078d975fbc6800751a87 +b54f2914f6a7508b6686280d3cc955730458ff035978be29645fba161ed54ef3d4086f956e68d2a48c49afe904edff5a +af99e470055062390904673e18d04427c16afeb7b9f13ad83bc2599e9a92314bd91d6f1f81b55419a4d668bd889ec8c5 +946ff0cff4030b73a1342a9173fe697ab20cc5e43ea6158573f2def601e12a174da431f8170bd31ceed4be48c90b4f6b +abc51f8bb5f74cee819ee383cbab739026c453bb55336fdf423af2c2ac6712ba90006d62dd72d8cc1b2ff6cac900c8b6 +b43623a56c5fd1bf28bc356fb4a875d72dd4cbb00c9c863646a3376937088f9932a4a0aa26afe2ad69840b06242ec76c +b0f371952f99eabf7ed368a142ee07d06bf2b7ec1ff852fd948b8c53eaa52300753fb9ff6765201e35873b5167583f3a +b3906488172c09e148c571ef0712f88bc9f1ecae0db95380f61901660fc1aa090d0740378d5b9b76883507bed100093c +945373b5e6ffce11d39a722df7b24eb929b14a967d211be3b969f48fe1ad3dd4280317d1ca772a69b033f3bf26c02c4f +b2ad3490389fe5bfdd5ac7eb5bd61facff8d57a8f9969f4938ea56f4a85eaa2c1179a2e5b4f87d9e6409925c75b61828 +a4d61547e405319cbc20cad16a2bfd9e6d093a064522c332dd22134ab05e893bc84786b21b4c71a6265bbd06da2ef4b1 +86749c26715d22b185e1b25dd34818e96aad319d7add22a98486ef9f9808b5e4b938c6320d391dc4e0fb5d57bd41778c +acc554d5b866693a453a9ec46d422c8b410458fe8397384b927a62bf5f2b1fb9706c8c21af9845050fea8a91786e3577 +8eb7e763d297cd93a7a54dbe4654c39c0ebfd73fcc34d3f1338de0c347676f445d32f270664fcb7b33347bd377c9f867 +a1b469e3f9dabd36b13149c83aa5b7b5987eb0ecc1ce6b68c72acb39ed503a11ab4451e658576a92df4aa51d1bc709f6 +b1ef105cd0259486be8f265a73ea089d5b7fab7bd7547932134539963467fb917b2206aa72446e2fed5a8185b04d345d +b3e211c1a14925f6de451271728a3c1e555ebebecd4bae29bf666927868039d4ec99d9f9aa98d835da7845a5c863dfaf +a416632a50500f29b6bb471bf00b37558975ac91e5c5b5004b67e130be1acc954a8ebaee7efcaf6883187ee9173d1ccb +8c655a85f66b5f28ab8760c94b6cf01cdc36fedd19a09c261e432fa7eda7928c3c88355384e689f1d2715d419fd8d898 +b1fa9f82c9866d4f296755bef5b7c39fadd09374f38ef9954aa57b1431a1ea4cc17a9750da844fa1f5848f0ab7ca295c +b45cdf1a9eaaf85c0b07bfe239da618ee649ce90b417d90b08eb518b1fd88c0d25cd29fa7a0d8058d6616627a3dda306 +a2be1552d3c4142755e0371a9543032ee82ad669d7edd24c4e2941bde3b78c5c6df427228fc45812a55943b3663cdbda +a28feb053e86dd9e2f9ccbb7c38467e2425fd580ba0f63190036fb47d01eb198ba8590b5cf68d1c0f47638e9dbdaec74 +ae06b849e080efcdba86fa03a0c9dacb38a15ba911aaec624d15787c3e11ada6909b1e33a2e3de928a23818d833eade4 +b4888445d86bcf4d1f6a9c2d253f277596795084c3d45a4591b307b7ae4ba177d6ce871c2cacdcf9457f9c132f244722 +87a568aa2f5471214f63932b0d48e589898e82a1f4c1055a9e73120763430537c233e9a3cb6cc178df53768e4c58c993 +81e0ec97cdf91ae66d065234492a1119198c396e2db204b7edf192c88eb4238e0a45bf7e245f3714bd864244cba0ebed +a954a3785588d4bb3cfd7cb27df45c82e6958051f916594d76cdb35bb07e4f88e2831a5cda35fe1f3c99f32a275f0668 +a9c9f4d54339d414342e87b03679baf29c219d28b6548f01891cf94d0313a64d3384658d82373d6e838d886235ac446d +8ef46cb24432b419b4cc803e60b3ef5872db8ea614dc37643e4592fbb2891cdff61f6b2a10653d9e99e6c7359ca4c590 +b23eeb458c05ffa5d58be21cd0699974694dc61a9a928fb1eb509954a3dfe7d8a71620a2d4046a448de0fb213be7e97d +ad631be8e17285f6310fb72ba913c564fc66d14460c4e8c4b0c68c572a5c2a45b088ef60eaa9d317403bacf534d57a23 +b7130f5607f236374f5e023fd43cc6dee38286ca47d504c9e75c6504957ac2bb9134fd59d8bb1010d545c56ad9c71c4b +b83cb511757d80781e26b5e9b3e0597c4cf9a976a3fb60c84efeab2b6793e46282612da45b1bb8b45af4b7f39877feb2 +a0c5f8b0027ee11cd5f86515698f689ad514cfa890ac4ead5502b5ede9d7d7ad12285f5806c9c85ab58f89bd9f188938 +aa8e8f9335c6e34bca3472b5f412ce93ab1ed5f9e51c3affdf986a5badd2ba3ca1ee69eae53ba8144927f082371b4cf3 +b2a4f775a10cd9caa776123771f08e928ecdb22dcb91efc440c69e37c6b467acfa6112c2776d4a530bfd6df3b04fd50d +a0c553d5d2a9b0525f71a5a0a539d579d937275df9220a0c3c322d6c0ac7fbd2fc55335a1a283e687856e2b30398e4b6 +8ab800ab4c810e8f6a9d42d2dae9be89841bc7328bab06b88bbe1256f720ca99c056fbe4e1378d7cf805586ae18dcc55 +b9a8766f4f4bf796e2517a8a7a05bafaa6d3ec601a85c466d33b8a7e0498fa1dd4e2a9e42161fe2362c81d4c8ee1fbf3 +8cb7d054162e9f41245b0914e7dcf6108ec11456b39b473ecf6c40e56b172fe5be4e7b0753a3685667436796a977b977 +9131d0395897f5591ad56b62ef83a3ed9e7b3951080b33ea606a15742f78a283f924373e813b877f32762dd69884658e +8d784d7f0884cce988305d314896dc6dac2d2934cf5d650904e1397f9b9dca397eb7f3accad60ab5e34cb2e494bb640b +8819629608ca1535bfc156c1e17f8fce5821d81e6661bca75a1754a5919d0404e31e65bd509387383a4111535e949f5a +820a6f46e251a1e6d92784aee18fb0d265d7e2f0a5b7e0b15180273eabdefb34f1d575e1d8e93dfc2be1114d10abf31c +8d10d0e0557beb8db344c2d8bcada724e720823fc37ee7c51b322c3269559ae932bb2ea07e50d7ada88ede788839dc8f +911a333e2f7578a0ff6533284176cf235036047a11534acb649a0043a326723662bccddaf1970b7c37b5146977277b88 +a4be2104cc5d6fce4a46de5de8d210559a6b743b6347b8d9990315bb56cbf80695ff936afadfdcc415d88b23ce6863ce +87ec5877ea8f1123371c49263dd9fedfbde41846a23e12073ef80f7afddf5a0ddab298cc02e861a90188ef1282139ecf +a3f1dae70745b8284b1353aa6902ebe3cf5580e24e02490d42b2f509ffec7e8e777fdce4f1a92d83bbb23cbaeaddac57 +8ed5a0733b42482d88da7c24e85a841ece65f6066dec060bb267a8d1f1ec165ad5f7964c2908d3fbdc2999c580eb8990 +b124a1db23f4875e0caff1c7f4b9a411564b93a9ec3ad8143bc7a70b8305d380b934c194de8201f7e3699e905a1f0115 +8af58886d4ac5578a29c2e309a68f19a62edef5285d0757c42f0ec2550c633c0e991c4cd7a60df4523cdde40c3909345 +a63fbdbde883f54667c6cacb356db1fb976bad147b790064ff25ae72be53bb6f4d74b22ca803996e0d95d216caa3fa81 +b99fc9012ad938b36246a4471d29f0a2b37b2a3be6fbfae7ec9fdccbfd14d48fdbede0d88ef3b6cc273f2488f4cab55f +acb6cd4e1672eabf530d38f50ae651db8bc4025c2557c59ac4f1a278b4741f1e2cda978e5d1337f9e5aae77c95ccb872 +8f8f6964534e4a9294c61c76206674d836d4d56970e9c14ad6835adc6b0d256402742d8a4879764569d9082ea6a750cb +969607ac6ca9bbef4fbc2fac22b12714a31f5d6103dfb998c3b6f2776283ebc7346e81a22da168af40752f28ff60d97b +b633f60cf6eb8ed588c545c04972ff156cee767edf31720c9715be3cda8c8de0290b623b22cb8fadb1690bf3665a7be6 +8235bc2e818e4d259bf2c9fcc9646ccf83b7e238044e26be417d1d0dd5283d7b38c86e8c88a5447645be191516e2993c +b503052246ea840a4083bb4a8978029af3e242e831518bcca015f2c2df504e98a48c9002b6b9fbb97e861a0a3c5b4b5c +a145ac57d7c028c3cbd2a2bfea25caa35a9b5d69cb491b13eaadc2b0d927a590decb7c4995541f8f29089a2cbde6429a +80b4c0938058fa5d03c948777f13c70f46fc025d4d6c2f2051915b476eb0c0bef902374d784df57ac368c01e1fd51c00 +92eb253e3b1770b36c4b2869a944caeed7b5c8a5b8356b25dcd4102df79fab8dd2c9d01e3253070f1206d149c43f64e2 +b7979ad6187f7921e725787b0a99050f4c98762c63fa64a467f7f110932f6d07556453a95e3a2c0162bf1c9c41424c90 +8808ae4c7cb38202c8c8bca0321e827580155197a700fa54b6a15b0f14b001327d4c9a0923168bb5afdd1b45d6a78367 +b16a4ceee9de5f49a99430e18aefc192f3c1ffdc4b41392069f690893bccdca760e6dadf4127539a763e4f60aef37dde +8ac113da7ca59ca97d6bf7d6e03f1e9570867bed27230515475f965ce9ce0b424c85810e18a584ae5a3d5c2c80c6d4a0 +847ae1b0ef5cb11be37320f3ab5e30f59d7910ba3d7cbf8265c74df25f4b8f56f1ac96cf49fd166c3b6985d1e8091e6f +aaa9b04f50ed6778e2481842cda30c7dbc7d462b40c7602a438ca9f2c1599e83fe6423f30d7789fd240d2e3166836f5d +8c18492569faa8cfa1c2a05a0edeea3f63d003e38d9ce23c4a5b31cde993a4ec88c9db83011ae15b578e0d0f6b72ddb8 +838b400217af9241755032c21a3ac4610f77f3ad76abc43f0c59a59f9bd52f2251e46fcf1552b6ee0220f4f2902e54e5 +8675f8de084c6c05644deeed1ff45090096c72c0db6bb2ceaf1c0d070bd10ff1e83b2dcd89b6f99bf132d3e131ef6d0f +89611bc63c83d56131bc2a8653278b234b4635aa7a05033d71a8377a5d188ffed7506a50a5c37a33d199a42b9e55fea4 +90c290c17f1687a87023fadf74b1e10ad0c0414cf08629b2a313347f0f6913bbe511e5d18d1c3264b47f65dee7887d4a +a590bcb6391506035466dea82617f11dd9417c9f379d32b4c3bbf723840e1a3124d2327deb28849aacac278470d7ae20 +97c55f459ebdf94ade7bc3bb18b329bbe2bccea345f0b4dc38cfff2839749b8f9365e8a1cf31722649c165e265344c35 +8159d02fd03c1d0b3c928658b3df1a27a57699ed8a573e0c3a179e97f50b6c1a6467b7055e42f9f9c6c858459eed517f +84d4f009c052f3bf76b2b972b3d8f7a4b2d78605a566478670c33016aab06828a1737a36d3c9173583e7bed0aee84fcc +b99d7558944ac2d61f5a800c24ee47fca719e69f7284956be94596623cf434a214c042aa46d54019de3556540ea53236 +8d1efbad46f69b80efc5776d8afe95dc0a8182d57318b9f2d6fb5b7d5c48e7181e6bd61a8446a553c58f7899ea7a7c78 +84a9cf6a9d64cee7e7d8f0b678d3606c9080ab3ecf62fe0d6f994a681de68b30534ded61db1445a257b2c5427e97b36c +b6a5d2c55a23841a4263b10cdf784be6fdfe1b25350a4af510ca294949716711363ca19f9c44ab1c347aa3fcd60f0573 +b1b5b6dbe6945db539fe7e2de07d222c88d7b91753118593ad9890c55c4c3d83b4194f886ea7f66ccbb348f5a23a2a22 +a8a58169edd3e58f87fe8529f5cf7da7679807467ec707ab96faedf75085185a78f2ef912d9180a5e820adfad32ae4ae +874c1f416f866756ae3e93360342848afdea0048a575f977fb1f8a57325e50da122d3e9f423e308f0acb1b28fd47a6eb +95cbe8b47ec42a5c72ef7b1f91e3de0b1f648ae8069416c48d5529c9cffb104ba4dcbe87cc06e4e798a1b23bf1595f9a +a1b6e9c5d63ab1262559727872d1140b74a4f01c12366ed2d401c64007faf7917ec591b631c6bb4dd44b39aa43c7f965 +89e6f4a05679c95d45b54e760056378a5eeacc72624eec8b5f19aecf8ef0d8acfb2d807d3b88c6b1206827203f219905 +b7f7b30cdea6377d5f16d200b987e3b4a6f28387faa701dc579cf7b3c6887d74ca43609c5bc36414a6dfd0317ec75448 +83474b58135f3e2c5e8355e31ae44a77721db71cb2919c3f3403f44903622d4116e812ea9ee9ca073938dee780f4aa22 +a3e4cbbec770630c5e2f3b67059a55b1217435bb70ba5b5010244e241ad6a3e6b8d9261d8a0765c4b42bf795fa4e96d4 +87d3ebf0fc03ad67299f3b9cf9c9ff0890b1d0d2d1a0ca2a62147444922d207663329e49898d79bd8e09ee48a1560fa5 +a1d33282cb17c7a4c5cfeab4dee8875d324aca8d0513567c4e5eae180d1e8ac98b2ef16b31afa7c3f2ec25cf3e8bbd11 +b10b6cfe3ba563b41ae0d66813105948416ce0848ba3b34b8e96547e8842086b632a52904e56eb61d93e0cbdd402d305 +84c4feb35c8d3583ca17245e6f7e73cb488aed515c2ef671b09a04d8eebe6b7579e5b1fc8634fcd4c3bf8100d2cb98de +918d8fa2f52a9b3957ba412c24cc579dbd1f0b0834b909a6ac0da5dc602ceec17046f61b3d4a2658f724757ca8041fb9 +87296e4775fb887bb00dd3265f202f31a8fdeae5c6ad8ec63508476cc57d330827d0d241c68091bb724a2ba921694a7a +a8908019d96c506b314c84b22c475157daa36016a9b94feecc4571e869918e4e5a9e39fb7c9ae0f73f9f868bdc50e2af +abedfabf75a93e7521eb339ce2e22e0e887f94ea28d3adfa42d1e0523686c6cbee4c96b2bbab3b8393feda1099b24d4b +a464d6bb17386cb431520cdbb3818beb3951b0255d72f58c300fd780aea1fe4dbce5532f5321e80e16db2f9b9bfe8a1b +8cb8fe0df930e1e19446ff0183c7034e35e33442da346df8a802160120a5f4d8abac236763114a650dcb1a1d38bafb37 +975c47ea6412bfa97db9cf12c2b4c07ebbda436716aaa7253b2343138b36de6c897386833849f539bad7659d9319abce +8cf94457a5a708cc91bca9615e599b0c0afa92a7f2d9c83704e05a3dba56a90c4eedebb6d2d25b3080786e16c27194c6 +950d02a5e41c8f704184c7c59715fdf3b48d86b53b04dff7c21738c7c38c9f4f75349ac1e70ca18a0744b01fb8b13504 +9458faad893db4458b330ee283d6a90f68346332c99cbe8e121c890bfca908f0c91168072aa221c3c078d7fd5e4b44d9 +b0262948c113fa2a122dc6208250b62ff35b12d3aa1e5735e95198424cf16a4829e9211c9edad83989c537572c5b41ad +abed7125de7dc52b0b42cd34fb350d4c6c45016319ab776b52289bc8c2b341a15d48165c0eb09511a1a5a5ed7ff39e4e +b4c352b4a127afb5b0833d210dc2c216bea666e7c5a940a3372988c0b02dfd236e4ac7c124664bcbf353132d6f061f3f +a334c5919909dadca50f3124de06400df660082b527f1f32b386b9216d021d38685f1839bafbaa7950eea6c1cb14bf53 +a52f4534e9de29f91039af3fce055f2f6726fd9b10595a43ae41f7b466cc4ea6314487081e867ff4b5e35cd622fb428a +a68c6ba9673896bf49ed145935773fa50d95ec0103f97a6f1ed698d93b4dd78111325f797e47fe153fb3852f4590ee89 +a5c456d516a557aaca80441705cda63d081181199097e83b22e9cf7b9947a8bb78cc476642f04a5ca3b13032319591eb +8a359a3dacc7b45da2b826dc27700178553f6a52e9705451f24c6d6026a0c597328acaa10b3b5a883b6353eee4eca594 +807217b435d73c1374bca84d2d3e069db756176220a01607b81438a70f69232b82099c676fff361dd909271be8d5d555 +965d0f46eb0804f19dd700d8721349287335c70e992efdfe89058ec424b87acccb3fbb18d84b727ff5ccb6f6783e9065 +aeb5f2a0bff1e6115bc2fa73093019f8c679efec91d03398e24651be187265f7ca80369a1dfa61e8701385dc0ce9a0a8 +85732f872228dd5d691f1507ba00cc94e054baa59a764565401e9e9b3287d2d0cd0f2af290b28b5e3c80da9cf23ded63 +8e9a315c5b40e7cdb866b8a7e6ec01eeb27a52a76a88d5956ac3e66fd9ade3ec954acce816227b57fea6ae9244f1303c +80436457879607efd008f959cfd7507fbe22e417c701f59b5a36e878a04e51e87eb38c48c0992333656b24a4e671bfb3 +a012f6d166cd1d98098544bcddfbdfa956ce60011694b640b012da3a0a22ac8a054a9e205aa9fae4df764ad60c65a6f2 +b8225afd6e4d45520678e243d97bf48f87c2b8d2cbc24b43f94bf6e7f60b7768d4c3b30d28a490e7c8a1c3a104ac8317 +8437fc2ab6d90716419f544a1d16c607173fae5bdc242d8224d7714c115cc54f2246d1062ecd77d5a9cd3ebed3a8adc9 +b113c6c63125930882c18f548c1baa69a26f9f3dcfbedf5be41aecd61adb896ff9622ce038f0ed27a5ac602b6020740e +b893aee6291a3962fe17ea41322de7edbea6ebd51d2c564fe23ba8a4cf4b6270b7ac72c87f2cbca209be1ba607ecab75 +92e6a7494114cb4dcf2b86ba61f57f6db7e4d52895ba6c896433139eb2ec9c9604f3e9100c690e1949e32f5b7e29de93 +881a323e772a639553cbb401e2b6a255094412addcece2c99ec9e1346aea2f4e9eb247552435eab74799ee4c7a927b6b +8d5d3ec378922311374fcb998fe5a42176448b629a6475abe494fa56abd5faa5835af37624c138beeba649f7803a4855 +b1a082ba449e93cc15fb4dc5114351437599fbd4d28eb6b4746d1bd242172518f94b2ca8b1f76c08d9f6ef260d9cfbb2 +8fd2b7728a3c61cd8e0c607cf40e935dc45d52d040ef1259f62e3eeb30bd3a6cd030fcf407fa0b21423b23a795a02b90 +9214aee5787f4666c3e2aff70949dd679d4203a2c3e7b6f88c548b80a3e52d7763f2bc2b7df714eef053f60eda4db331 +b15df25b62c6f4ac9edc414ecacfe8eec055bb07a1220e327bf35c5e452da7620df03416a449197bfc8d948445c5f734 +b41ff69731e7f4308fa18ad286d3ecd7be21afef3d32f5133a0bae877a347f8773c6e9d9b3b850d054236a6f186e6913 +8d9d13d1b7d9df41cf5d30dd62b9d1d2c4933d62b6cf8d1830bd1ae4dd5fa3de36bfa1fc4d57681ae13996f85ad2551e +8011a7fd7534b248db40050edd9752c960ffd89b0300a91520759ad51da1698454affb4aa8907946605a02ca09a7f340 +9159054fbc10164fa19f68736c2a683d374681e6e9d5e56f7496aeebb0969b8eb1a91e377b3a2928879147a7fb60b3e2 +afd4980aa4661fe05bf9040f6551d980af562da69ec5072104d8ea34a8ebd28baa0b70e0fe3c11f631005693fb99213e +a92879cac7940c6d363ab3d0ba7f7f24bad0b16142c78969a737c27ebb09a62071540bec1822ae6224d943d02804da50 +89338d27ba29343279dd83827ae17a53e7d634bc77bbd848f3b6a352fe92f6021dc1c81ea6693b3cbcb1f24188edc757 +a2490a856c273b6eb5242672f817e60a157a1dfdf25b1d32e0f4836a9c2371fae72c93b94d78267b3cb142b4f4d7148b +8efcf5d06107554f896084e32e8dc95c49fc5da3f8c4be4ef6f2ed89914233eaacfea886040bfff14759ce28a1eeaf3b +a3516280b169a6832e997a4a45daf46aeaec1d8953387f493cacc2835a5791d4dcb24a0c0ad5de79988d76f843d79994 +95eb7531a46bdc51acacf7fd9e7210bf6d5ca59b0efe58f79422394447adcca6f4ea991600e8558da8e19e029701c5d7 +b1fcb4177f16187c76b421c29f715f1551ff365bdce9fe17b74425f76dd90fb4ebe828ffff3d20f75ac620abeb9381a8 +886246027be4062258b232926cc82b6a51591138561ddd0173ec6e4b7ff750e15d9ba175f569c266148c653ac905d498 +952c089dd09dbe531f2fd4137c971622fc1d85a78ff07de634f63853f62110dbae3646564addef8f2a070f5a16396ef4 +812ed85f4559fb28732d17c8fd7c6b09a70da454a2318a0276949df0a5dd2714b14096656b7b5b6398f54c74eb9ca49a +9340db62e43e43144e1afb1da748e81a1b00f7b0600e8eed117e92ffcf801b9d89b494ffb003b4ebd5bb4e0eb96c9374 +9287c0745b4bbe24b56784ac28bec43ed2abb6bb15bf11ba2b18b01801da7d162aef88e967d2f10fb9f52f6645d7702e +9615bc232ba6053fe86c6328eead899bd62c4f975273f72595407fe36ea43e30eeac7524bc17dbe78b4692d42ae81c04 +a387899b521b1a89e860756bd0986b302f3c06271ece653425d6c697e0b330a3ed7789efe0e5a1b32e60257a12fa0147 +b4c99909fbb92b1f39e9b2fabe05abf58af834b6c15ab0f62304ccfc5047f187a3ce35388ef293d2857b777f9938bd55 +97dcb90d2dd9291366b557936931550d665cd05bb1b19a7a53a31c2a39d264789477a47ae14f6bdeb171e78941a9d9e2 +81417b4a3e61ab9b48e0ff1afa8b523bf63ef95a6d6980092408b61f4293fb202395b10a5d12dcc54961370c134d5b0d +9135da893ef0a9d45a719207659cad4a0590218303d0e02016bcc5d14f54de5fb8de642efc7826b3b3212f714114600e +a00d0f8e2ea06b13f5a75a6dbd1f2ba7ce3f3bb3e62cd3b53f8b6ab39431fd2ce156a1aa4a1988613d4a2b6d91550147 +a3f8f17dfdda07166a7e5503366dbef45ea6b6eaa1dbe02b8051dff58453f1ac24762c82f6db6de4370869f9b25d6d51 +847c2b79076f9284d9a866a72f74f62fd73cccbe2df18c0fe34a35416d4825d364e24f95f728bc0e6a5215b08b6f0d2a +9816284cd6b8b35e1f5409d3a5899af5f4524a4826470fd164fcfe863994ee3aac77cbc16831f0866b9f0ae561903d61 +8ab1f9feaa8ba2e1691acbfbd5460a4bab531344ce4accbabdbe5ba8cedb5d5fc0967def4365d755ecb62d83b7ffa4bc +b0cb477aee9bd113959ff7b7675f81ef251b76cccbb67cf68ba571fc08561736e32c18aae93fc8d1912e7eb2fc0ecca2 +8cc41304caf0357d13a25ecf66336bece67d5d319bc5a50328a96199d7ca4fad05dbd7b5edda58be73141bb06e269c8e +a7b4d91a884abad5337925c34d7fd5f2aea5a09ff3c027cac98c646b5058f7fe2cbf47208930509e2a4eef1468f64c89 +97d942e97efe46594e8fc86828ad3ed1c9133a8067f9b11bc0f4ee3815affbc0c7c46a91c40f989d50f1d8df96982ada +95a7d369f3ce7f7ad7ddf85bc994667ca25a0c2f11b9312d06654599410d5325ca3ea74f33f21b5aeedfb582a9e40c62 +b0a05b564a754b46fc7aa4f5289f02bd9f19708b5ecb9db5c36bb7505c8b56ec22b53fedefc1df289c0f636c97e8ec47 +ab6e2801ea8bc600f9159d05a3b39e8b0973fb9c2696b3f2685424757a6953a9f8ddf5e29c97399c4821b8d7fd9f1bc4 +a6fbbad2ad3ce8e4f9b939080e9e7049eba9f76b8ffb57f7cac2aa46793a064743239ce287e156d49cf4936517632290 +a606632b62194aec737403ce5a9b6316178c1d27baffdac83981baab63e75d51caa414ea92465ef37d6d687b4fd90141 +a5a99b7bf8f4c109af04c31af9b5f3148370319c8483796cbb5ef555ee1d4858b2c1acb82ab5e26180254399fd7a0625 +ab2b00f64355ad294436339636e7764403b821d4dd4fd74a6bbdc2aae450f14d7dbe8423336e793a393f4580f1b9e35b +a6c98a6ad7f36f16633fc216c12ca34e596b292524753ca1067eb75ab52facd28ed3a7c55e0a0cf1d3c9115a2a0d6524 +84acda31e618eaf0424a37cb3c386585a3870b2c24020550a16134ad8802d427c918e2854c98e5def58a2363a8e1a314 +9911ec15af39af1a18003ae120da8d909ad4bd43ff03078091d54de71de70e19786b2aaebaa5d55d9b2877004da2c271 +8cb5a148f065e36b67a219bdb347a625a7a4be8f20dfb1cffbb38fd4d843c2b1b1886c1f015793bbcb02af04ed91b170 +815d9adf22a36533fd4a3efae3c4326213ba2aad48724ef958cdd6f0dd5059b519e12d91ed5d92f1418a07b62b108bfe +ae5c244f309467ada13e2fcd8942886f563bd996a5c65aee73a364c2ecab49be3ba6bc8a387f3baad44776f4f1042eb8 +a47d93b35f57ad890239a6f2f69ef8760268adbe614d5877802db4b6cc75cc093baf101f75be0f7b4d71ad8724dbb9f7 +a0d089701b965df9fea938e337016ab20e0e567e736e6652955f1a93760b4a9f128be5a594e71df8e7db47c3f88c2fa7 +a9d9a7170a860e2860f785edbe18ad909ecfa489cd3a2abc580869c7eb8e9a2db93c1c473a5f1474ec0d51dfdedf95e1 +b665abdd084abd292548c336e3e6fa1c5ed1a53d2e61a10ad6a4c66487d8a9e101632ff468b012506135907f0896156e +a10ccb363b26beb9622e1d91021d08a3bf02bec96a059ead01961ad51610992ef03558c5f77e074442836c9d2ff44e0a +96d6476066264eb3090ba3544dbfec7c8a0d90985a1697985db0d04773f6d37d5899a9d4fb5a3207c320ca78c37492e6 +b4290ff9213e2ecd30d303b2b4ecc66c2614b8df246e70ece4e55bea9a1f5a0bae9df6dcbd8efdcf8c4b0f2f4cb44d48 +8ef10b2e53e6770a36b6403678ffb86f5d85e3e87bb1b3ce9f1f0cb0cf32f1fe991c565595389ad83d8c8d54a47dcc82 +91f950ef60014e3dd28f7661e6275ab6f085c803988b7d6dbb2cab25f10b0372e271267245761e1af97da6f48c230205 +97c626e7114396daa337ada4f08da5129464d8e8c68a407c8798949817337578733fbcabf454a22b57926485c28d9d62 +b596984b609a9858b1adefd15a546d4b8a417c8b54504efadffcc805caf8935b9c7f55d9e6b34592241195f513453572 +a3fdd36f3eefffe0cd2a9e6cbfc4eb9c3a499eec25230df8786b23f5eb71efddde062940ac23d5b2885081da48d3c1c1 +aa1822db9ee136d0a51910f0a59bf0d2af6819e4ec0b859b790e01bb08c1def87e9613b355525d4ab7d088b520a6a3dc +a9089edfa96fdb7204a68c4ffcb7e0a875106886a0c589dbc57a6709e7822747affb07035b99d056baf11d0852720489 +85664ab9d32ab0cc2d2e61901b2682f88a7259c2da4ae6263b917ae8afc232614b4ee56539a868a24940eab74142198f +b90e06a1a117659b52b364359e2265daaa8981954e9a9c37e3256cbabf133dd4900974a895dde6ec6b394fb36b5bc1c8 +b414aefaa4833283dce85add23d1cfd776567735f2ba9018cd791d652bab55bb0cc0cb38b88fe47e3b4b877e63edbd75 +ae579eae9c0b09c906cc2824eeebe5b4ea031547055c8ad635194f3e864c7a184dc21a3eca9c43c01d9a2f272cb2ce81 +a7b1d13997c283c13f770d5203cb09b5d3ca7d45324ec89c069928e1ed1a17c57510e0ebaaf54a21d27b0f9f057bccec +b15d4555520565b76ec21d87e094ece2e04c7c4bbbf560264da37604f1a484ecc3ce8143b04759fe716411293876d0a6 +810bb0773c06caae8cc06ffc92303d51eadca1e1b0acd57ed23f5feda70378e180619f68b8db98e61d792568f49a8316 +87dee32807e2e5f2c884822b31098e5be2a4d950ae728e3281a39e661937c4b7e9fc025b50f437f01d69e5c33dd751a0 +b46810bd73d077a6b73757d22b5939c02a3632e81287073b00ebee30cdd402e89c318e0b03d01fa331193842f3a1ae53 +95a136a7bdca77f764d2c2d4795a8fc9e5b9097d73bb3956b7a45b42185a99c949db8ac5627ca263206cab9cbecbc31c +967eee3c3afc138a482bd120050dcb9b45a9fe258e5e4b678b1d67b4691f4c5d89cd260210fb50f9cf2d3e2e2802968b +b2d59a9ed0448b88f8eb26d8017a129ebaf27f11e0a031130266796e5f777bce93cf2c7e0fba8f8ccc997315db9aeb9a +aec708d3093b12caf29efbd8afe3ace1de24496cee72270223aeaefe4f0ba3a7acea7f2f5f85c1f274aaf5188616133f +8563ec52704c1c7ab515451a8f89f87201d30a12c95812ac95fde2af033e5019615a07f28b540a92781ed35786b5614b +b1c8f819a4ceb17d35ab997c14f81ae2af9d4510caffc61d4a19e9129e0bf7264482a10f329054908f99909999b6f538 +8a65668637ba24358800076d8edc90979d6e614e6a683dff7859ce7d686014e6de85298f523ab060c9a9a4c4b8862cfd +b4df02dd6f4d3908142654a42af60fef034379b1526c12be66afcfc4f1177991811646495aa85702f3461060732cce80 +8991bef253f0bb9b86e68e81f78116c51097004b0309e199025e45ac7ea55f8f6b2bdc58886899d275424ebd405ffac0 +a74f1048548fb41e57f679d632280fd2e4cc6ab88c81675c59fe143b74dc7ccf050db53dac5611ed6b45b6a0b1b7f3dc +92011c668bff7ea995a71e4774e3fb5d521ee2552bdc33d9a65afd9677572c2a303a940751ffea470af898b01b9285ad +881a0e6042771492633b46b6101f96a48a93aa3860533dc207cdc90783fbe52b4a9ade1eea9117cea004bae802cd3fbd +b3e578bfd77a3a13368ecf8139b69f729cc720aab25853cc9e2f505c2e03e75cb779d685698af8cc4aba8d1c17f5ec29 +a025b6e8dbeb68e7ac4a595b34089fed0d24eb29a7be235048205e35a97634d6015ab24c21a017b5012c3175677fd0bb +b751acd86ead936ed0f22d770872cdb5aeca3b1ec75a5a1e65748b665f8d1c859b5620d761d5f0a2a86331188e82b2a7 +a05faf0bdb81caada6c662ed2fd145eff5db5c423258d6609bfd4c467edf3ddba6480ab95ac9f4dbc932f4887b070c82 +8fd1faccaa7cf1d59be37bad69b7a99b7641cbfe930d778e0f712ae1fe9e78d53f37d7d5d3aafde48452eaeb65d980b8 +86042bc710953f0042940625d8b69ef57c615f9631fc49aae169ca595446e9d55e149c92994d4bce7b544877d7b6f22a +b396047f716c5fa8ca9234c7026f1772d83f41be03410b4a32a376e5a038d252b8f36cb813bc3684f1b50326994c31cb +a2eece2d76db005f5d95f5f480bb3353ec67a9c27896fe54a2cd5cc7f802507d8d518596601bb3d2798842b96fc03df2 +b738c1264d094f7b7edd27b0ddd8e29716c73bcf7b450ad7715fd21e1052998675873ccbec486fe45a8f72d9b006f239 +826c4c5fea1596e353f6c15d91a9bbacd9ea592aba4d22e735263062eac44f073e5defb794f8ae4afb7d4dbcd1ace959 +a8f1d170f63ae3b05ca9996347a1b3987136e7bafd02774698829986d48da3d421d269d31743bfd3e7917c5ace7ce729 +ae6871a8278f24d816657889ccdef509df0fb941fe6c5839cbfb704e81b942ea2a324fe0ac9881b385bc97410fd94b0f +8aa6bb564b6a0354be89c4ac10309f941162fb3a546259c5d789d4608cc628f69ecf814b59bb8bce364162f7552e628e +8ed85481cdc58fc540384213dd1b86f80af8908683d7d2c63ef5f8c4ac2e90f0e5f4e07b1b841eaecaab1f7e091423bf +88741d9c9d875e2c1ee5b95bafa4d8a22d72a728260297d048e4f0cd1c5f1eaa94fc233be3fa15a69163f218d62ab17a +8a99655974ad5c0f27b49d88a9c52a5375e16b9ac4f22b1e1bde53ce0a21589022c0ea926a4c2d7c432a53656ccffa37 +8e2628878858764824471fd613cf40d1bbb3fa84ed081a762da0d6d491d54688723273d87a587ed1d3067976ab74fe1b +8f1a6162bd6cbd2353265bb348311073bcfca5a86f41cd0c63ab91b14aabbeffade5ae8a94f8e91faa386223fc2bf849 +aabe8cd92f0193d12b032a9bab4bf4f02ebc0b24d1ac09f8ca8906621d6c7d4bb436b2dd879a1a1cca2b44ebb5642995 +91cd27988ae8100d48ace10ac9cac4cf1cc8539bb492521a8a6489f8575a737f2a1d37fcdbe88dd651179145a59af920 +8baefbda554bc0a0b425f2e132c7de061fdd120ebd452ecff0d78cc5bc5b15401997231727a37e9bc4abf1a553a4cbd8 +971b12e25b989511477c04602f48f584485a0a0773b46643190263c0288c2434969bdddb1e55dc1f5b1b028c1c53eb32 +a0e47f42444a16e51323af6f519c0dd2271a85746882818d02373ba33c2e2f7bd6a1c321497377e4781f72427fa34224 +b52bc02de867d7b20cd247cbf496e03d940be2d7ca5755145e9a0168889db345fa9ab17c41635ab275a459fc9d02ff16 +b01db7077e9f01e675c62f5095400cdc68a059e1a5005027033ac535a0505f45f89faae4fb9831f7ff9cbad3b55db02d +81ae065f1d55f4643a2ee120bc1245b9730455ad9e5402df8d6fcbb1bec71e40f1bfe7b8e67f96fff76d1478cd3973ca +a1be3723920044be80f398279e2f8432aaed45a36cc4fc71c87f5dbfd52225379e94600793f40aedaac2391caa57d155 +b682f74fe46d4b647196b7c14804dc0b35e36cdff59671d7164ece874107964ff9f76c29b23c190796a9a3aa2df822fb +b8152e458970ab53f6b5bf6101008c5c31d2f58993474eed6bccda074555f7ad2351810d78676b62612e7eba2d86247d +9132a8fab2010360ca80adcc08b3a01658dc8ba8f60bbc45e1144c1219f69b985436c36c65cd7910a8aebd91ea1d3d38 +805cd373a0919de801b6bb7a6ebf55530037fa41a1993c159e90213c492165c42b5642dda5fe7283ac4e3ade6e63a155 +91f20d77fb7a8276174989faed41fa6da841d35b074c4a756c2b4730a7efb9b124ea6c7d5eb150a8b1126636cdb2ff0b +8cda3ffbd0ab6846dbee6cb8c0360842837a65f83b6ba17085161a7371a4466172354e494a8614cf2f1f4726d0a7262b +adc603e61dc36ee605dd7f2761ed568bf91b9dd3d40903eb7d77b11d10e4f762694fbbbcece72a7ec26976054139c768 +a6accdb3df5029f19273a39bc30cb622f87522ca5a63372dfe61d993dd783ca5e918218b5c519d25e535d8b8238339a2 +a188897269053f2494bd0de8cf098e41010fdd01f5a49d7ddd7b294ea748f1139e0d92fa7841dda9f8dc923ed6f02615 +b26ad5dde632259293d91109fad4f742ab74de91f68ed2416ff53c060d1ea4377a875b2ce960cb7962c37a5fd47e85c8 +82cfa86a17b27f375172d66b389df727734480a224b91585fb4782401d6c49d4dd347b8d1e8df6b9c0c1d2f8ae658de6 +82911748e1471bf5d7fe3ff111ac06dcaf5b8a43c76f6583ca491e0aa845b61cdd443613c5728863c163952d86bfd482 +b7b0d4ff87df02b5481183066f6ac0d1636718fbddc19889e92a71a168fbe338ffe780a792ec5642aaa4024d0964db69 +8ec21f08594ad38e9ac365e5246aa5c2c8e34ae66382ac483b47771c33390ccace4d906695b1ac0f1c9204c46576946b +b9617d746596b26b84f2709a03b64fe77e9a10d0c85535d92d28dae9de3bbf6455a247f775dd9f67061792cb924e3925 +abb2ff3f16309fcfe0a3b1bc928ca5cf618706cad3645b029bd54e5305682754e6ca47e364ff21b1750f45041eeeb358 +867abcb8029b35a54552c57346024ae7eea38e9ae4bdbd68bb3c1de3935126880f237d9aa95d6644dba8ddce67e343e7 +86eb4283147a9e595d639f29a967310acbed9ff09d9043868fd18f0b735d8619eb4ee0250764f35a51e00b58543bcc66 +af1779d2115ca7021533bcf55a100b4d3ff4e45f8ce6a6d98df22881526a429d97818fa1867ede09918a438957a03534 +b10b36d0b69b0dbecb6f7efb6c612b0462c346079109970a26541a21aa2b5b81c1e121ed0d5c81af00ea8eb709a83dfd +911f81ed75fed55f1fabc5f86f9f38490e006820e5380963a739ebc0f87a1dd3b7da8c69dff1e580c5ad2246bc08e2cc +8379449499da9159cac2c09c61777955e61c63378d051bd28b59c78409ee5d09c43e7a6c246572bf34233a314511bbdf +84b48ec8895049bd03dc3256bd0d63f6e9abb178221f7d47703b447c709fc5fda47b19a3439f30f10d2670194f390915 +ab3bb5afe824d8aa20f97ead4c40aaa93350f33d980b5783cf56c8552a4298c989b7b188d023711a2eb79631f3a8c317 +ababba2722186a3b2272feebaf2ff46c93883b7265a6a4fba039d5fc0e7fe81b7d4dc2cef7738406f156f693ba3a55eb +ad50302a51eeebe63085d3c1705eee9142bf8717d07c5d87e0e4ef5a12207dd5432994c72b9493f9ceb558a20929c9f6 +8bcc3d83a6b8998e1a1066347c647ab122eac80c9c505d5cfbc370f466349671d8da4d500201226c15c1f62162efc62f +aad6946b5d5df34ee6f7422fbefc6de33dcf4461868ed7ee7f47fe9b8eb2f7a89759c73b7a029d422b02afd0f550e722 +b0fe1d9a30759d83084b4c567b586e5a8f5a080bfa93b4a3feba59edaec33b6a2ebc98ccd82aa9d8cf0bd254d5f03baa +b993c4c2b77fcfbdb213bfd5f8d655d1d41a52583de63b432e2732df2f9d88c4c6779f314848417c06a089fcb970c0f2 +842ea3aa645e5852695405b6ff2184e55bdfcf50be2319761e717b7b52d904ec47ad3abf986850c643003442e302ef30 +8093b0ef1f6c84a8253d086a6fda6be8376f925f416a9d1f44ea72489f60fbd8b53cee616cc5ece43e2a202653c0640d +8c75f10b6aa848d84baa4120e75d3edb7f8471473851326cbd9ed7b29b22c5403028f49430bfe4320c3f4227827e667c +b4fde4f20ab98f76f55afd533f1b09ee4ffbac9486399714514fd694fecd0ad1fdafe13b2b80721829c7a59e4c951a76 +843b2ed867cd8edc2eee84497dbd49f3dc481e7ece69310d06225325ef032a4e72907e16e7b6215ca775f88983d55e5c +9881e5caa9706e4d7ba6ab81525090e29ecdf1808931f3f2b11ff9ff5cc97f83f3e14fcf18abf18159c3fcf4cbc27042 +b6c4acc868c05c955eb36a24652314be37004bfc14283600523729d466c56018c99a45a41ec0389449fcc3f8aa745638 +b6820864d07715dcf4a9ece336464aeef9ce381ca7dba25acd48f60af056a3405c22792cdc57c641e782896c0ea05b25 +a1bb482e35f71772486675cb4ee0fa5709b757083d18a29d4f4344e6ce901b2edb2889b7eac92c498b90c7d3844c450c +8cd8d8d47de859d0c68bdbe1834a1c9a34e92636600fc592a08f96d66426c5f41f388138f42c9b8ad72c596f4bf85496 +801cc0631310656864b25d980c9e99a98fec2316414819afeaf182d3e7ff93b32a989e2ce63f5ea9301745080854188c +8fcc6b2b656f7960d9ad48c091c1ea71b6f0f61553f7695049c770afd509ee58ca8e1dcb403aa2c5acfbbba58676bd44 +b997b9a6b994e3eb2de8723ec485d8181fd674de19ac9c2f50704785d9f5a28fe3ad194eb052b5ce122ab5e6e6968a70 +a909e7002b82b371952ca9d0832f531db15882180e97c12c56da649fd65334904fbbc3f097b6a954469221d181e718bf +acfc712e1a61504814e37b3aad0d7a5cafce5901ffa43c13bc5f70507800ff03ed261367ccd09db7429cc5dbb892a7e6 +8d634a07b69ad87e41d941aca08550ae9cd72fe31f3075511d030c364fd6578a36f3f0f3785d19305a1e772486ca097a +9746ce2d890248002c1bfb755e06f4f4570cefa7636e10319bf491c654b83608766e95fe9c77f1a6a630f5add77b71f8 +a9dfa56bf82297f709f1b4bdbe4bc194bf22c0424815bafa6c1a536f2d15f35bfdebe0867ff20781a49274075622861e +a723af2702c6b473caa4a64142464f201bd1e2f765454fb0236082fe3ad77f22b4353e5981e6bc37e974c7ef797f875e +a42a1a0c50befa6864fa35c25a17f5309684c53257376f8111fe96c84a5e09376fad9c8545e1946f360e16e1e4c941e3 +84231f6bc3038320dc13f3ac014977326dd13e5b2ba112c084d366b5255729b2abe665aca8a41d7aa6645412765887ca +a64e21d651bed6dce8dcfcb4caa60791b9345cd7b6a100f5bb78f7423fba5ea0d0cb3668f3415c27af29ac35e5dab0ae +b8eeb2128ea14d81fec5b1103d8511a3dfdab925212363c75c5cc01515fd94be8db2335bb84e221654380e58e9f2be67 +a92e9cb287981b33a5e697eb1e757bd44f45efdda1759122fb27dd4bd4ce3694f1b6b2082ce4e6e3919d9d7a0b7c8a12 +88f22b83fd9dad63e800b0bef709759f380c6dd9af7058100413e7b09c7517eba258d6367e0cb1a41b7762b86b2ef137 +8353d45a2096fb4bde82ca22381bd2ed93fb58b236b16e68bb37df3024672067c4378d7f04a4da4d116e7d57a2211f7d +9076205bf231de091fcba7f5a4fe1d4a359f07236efa39f5715f206e5cb7eb3d9adb56af8181f63a9d3e965dc909556c +93ab7f56e8d37b47d3a8cbd222f2dab4bdbf94a1152302752f0a731294f4dc214fdba17977f11aaff2eea9517fdd5789 +96d9883ee108c88342befc358325356dfe5d72c521d71e4b3a58d6773ea3d1a1de1a20572aa96ca0e8483eba62466504 +950e0d61ce4e76fe0cdc3d59c5bf23d8e1cfa9d6ee13b9fe41e6ddc0fd52081bb16bcdd973d319c20709ec517fe15626 +88809c1e272b552d46137165e5396917d107547b65059fa646b742489e8892acebeccbb3eb8f2d676e3836c985cb1756 +945f13ff081b74403a19dbb04173780f04766f7624ac6b77f46464df5f4f3b547c459f41fb1842164d8f1c126ad6be65 +abfbadc599bcab1c2b7cf1fc5aac7798d9f617d6afa0469ee23230c0d004fcd3de0ea645feddc74e676ecab1fcdcd8a2 +83ea1571b064d05e1b7f4527b20ada121024a4b2dd8f7d551945488ccfddd671ed2ed3895578afcb3cf958f9a2c75c29 +8fa75050bda001409f2bc0a275d8dc0fefaa47b3a0ae132758bd711eaed0851d6bf3e4b7f355377a93fb8eb02b3ac6f5 +b2fff49083bb30e2661e2d8978149e0d0588dc972222f46d5d120d01dc5c9978830c442827c8fa295f6b8e6d8c786198 +a352c2dbe4f18b311bf0690d77fbc9439a1b8088c806a9d89071b3ea04ff387325cdc04a091d2bde5fd087bcd0f4f482 +948ea89408826ded81549cce823dfd7605ffc2279ca7d0964b1ab3d5f35f4b174e81575291edeb9eaa4baad3610ba3a4 +998073b618140b04ec394ffe4af02df044d923a5cbc8f06f26c9eb4ece17abedd4f72e10c9738bd16863327c0f6ee20b +b3bfdda0d6960af897ab508bd9312d9c166157f78b45157b46fd2e38ab2e430e8a19335d8a611366cf74642bda77bc78 +b8dae3e2ec5eb97ce3b5e9be719bb747e6e8f28dfb1a6b7bf5063822b502a5422cd586bacd87ef83c0af081ea4d30a57 +859713ddf0ae843ba690fd8177ce6c08e2fe5fc1c8893d829d39a199e04758719bd3046034926de40973a992ecbfeda2 +866f150d4b6a015b03ce8ad93a70644b55ca1818a0f50d24795698c62f3abe59d3b8abe4c11ffcbef20127d3b7afb970 +9145367ce9e2a5a6140db58cb097767b5a6e19eb36d1c03acadef612af95eba80048f2b02c6fb46eaf38c75288e3e4eb +8c298aee778f4af13329975754e9b428e127680f26be139307d43268dc63892ac98284d78ced0ecd384301e26d5b63e2 +b4c2cc9256fc33ed09531abd7c3e34f8f24830a8a2cf2d684cdde46155f43ff2715c94e7dfc7377765ec0cdefb21cd2d +b9193113b81bba4ebfe40e97be436515254bc67a94939220e5e69a197765bba40dac3369e5cde115d1bbb65e1c826038 +8474d72b7cb52768c484ff92d014d7733003b511c0c915649f65dfceced47ecd933ce876eae254cdf2f6357ea865580e +808e9a59f947b2b39af51deab4c164878e02d95773dddf1123091e27de87cfffc07aecd7c9cf3e08c0b9f525bd87fff8 +a8e0049eec8eb70c12446596ba5c8a29823704be3753312c34cb271000b6c154b1022812dd02d1352cd263b655437d6d +ab7894a75e40d888a4d0539582cfd6b458da009a5017e561c14d312335a75745ce134b57466fd30c250ca07e0529c8a4 +b30c5c0abfd35ded7a3da8f9c95e3e1c320857be1af317f6ff5e35101d3f31de3735ff8741f6460ae1e63cee543081fc +b15557ec268b4eba9628ccec0a5f3c947e624b61edc876e2ad8c36ada061fda76f69c8afb95270b85f4672171678d078 +b7ec103d6695fa64107f66622148902019ff3acbff7b77ad80993bdf209b73990b0fef92dddc5fb66aed77cdb59af9d3 +b3d002f0a35808e3785d58d0074be620416ee9381bdbdc889805ec2acfd169e1ccb60045d87cae3e90d5da94cd58bf80 +a17c44ade6eca0942742edd237661ed406a129a968fdab28a58d19308d207a1e7853099a4a3c1c181695fcf265107a55 +91fe5c0d672fce368e229e735eef43868e31265502e2876e54aa44470a257d1c126ed73d6df860f42d8e1dd425d8987c +8434fa331278fcdff2c8c07596a051847425fd7cf09af31bb235d208ef6e282cae173d6ffb73c0475307453d6133ae7e +940188d6c20924edf1d9343ea85ef9e08d9d87d2a188f8b69514a22cae10aa2d3ea8e662d43d60b8b77183b3c6e8cb1e +a89f57a730437fc511e1873830b300df7a417493a468afeed2f837f31641cba04924effe11be92d3bfabbad0bbb7d04c +a561550cb347fc9178c875ebd8dbf5d14c0afbefa79f7b93b893a25ca8fcdeb0293de5a350ef63413aa70745cbce9a5e +89fe7dcaa6a10cdbeee9d0d3bc8dfeacd47e1490a6c3b591f66d3a64ed668e6034381e0ea9f5f04fd2a5d9ad5044b8b4 +aac54b334514d41665b80b2cf18285391f47be820446e2272d69edce022f6d7689c8e137e2e9579d0846bf5440d768c8 +a231a04b942d471b32cdd12eac3eba00b8910fca0812c9470802246c479050d6c860f64bcdc6b6e39ed0e9609df9239c +a6bf6eca52b5f3ffd89b79be6edc4f517fe9c9bc67051179157734689fd63649e321d1fabda916a9c4666b64ed60bb4c +a7c4f791a1d77cfcdf34c3b73ec7a43aa1c8ec81c39ce81d12c51973ddb0bfacc79e1a128ce17afc5838982f66cede6a +a1644b337c4398f00e9ebfed20d9b2c900ccb667be036abba0c4d372939f881df2bdb5d40b64354f65c8f2ad9ffcd656 +84f6e86481d3322de791ad01d8c1556e5480534e52970fa601b295a40270882476779301d78bc2ebc323323ad0b62253 +b32eb2beaaeab27e190c9d381b9f3446038391da552db5ded0f5b58d070694f07c737315a465175da29e2a236c539e9b +857029d97cb9fcbb67e194d9aeadf5b25cf8184b3b704ff5da424fb4b39abdf3f7f317b3f79c762605bd9bdd5823e7aa +883926170997ba84cf45691c117912f6be5c691abab77fd18fe114577e6dcba18f8c0a6641ef59affcba1b2c92e093cf +945be3febcff77b4238500054a053c983add7a96ef43cd91921dad908c20d4ae08857fb93a5bb588e9b441aa9a536567 +b9efb8be322722302d1c06640f772596fc362586d8f2e49c41810f4bd2b59e8e9abf3d5369b2421e1ce6949c067f07be +920ad6d5cacbdb46af424141391817da2fe3d463bab8db760026f98e50bb51aa4f3668520c133ccf9622d66eb8a60e86 +a1a9ca07d8d3a44fe372aceda194f15a2dc3d29267aedcfc3fdbadff0bab1c4397da1049bc0feb9097afdcf1cd1ab603 +935eb5fe97d580c10766bfc2fbff71d8584e00e1a321018540c25f6b04791b63a0d6992257fe110b0d17712f334c9b49 +9530bde6dc33e48e05d98b77844766afc0d5581922e382a2fc1c183adf998c8137df29e56b868c7892b2c1af56edeeac +a8cd3698276c2bb8d39ebf7fb5fec139580755adbf81bf362e1cc19f4a8be750707bdf4e1fde3064873495cce5cf5171 +ac5a83c82004728b34677bc6b1fa507687992b5b78745e5820de08f3fd99e35c905608936ccab62ae39f0408334b3c6c +927b0077386a5055b499cb5a597ec3c9934767343fd91214fbbb5487faa4339837eab52c75a627d7addc5cda5ee35108 +a8acc2ea4a548d9a2fc2738abcf75cc0efa189b92a99296c0635d53f2c0d7ee40ccc8ae410d2779f95ac6f2027c81d06 +a74c24b8c695920b12a86ed6da6ecff72f8e19fb06fdfee9cd1c1e8e5f1c202d26fbf2fbedc9a5deaeb2d986425477ce +871251e8d69de5c3117f364bb95d876fb89974428bc167666088d5ff1b83328b675ac2efa2d0e215831e69ee254623fa +946f7a6d3d6700f65088c817636ed3c1349e4f5122fbc22723d131d8ccd055931dec977cd0cb8dd888c6abc51a5f4194 +82f7c1dc3f133725570c7b64e31b0397fc3a82cb4966948803de210182b9716ccd19e59c0e0382c0c970d05c5e13509e +8bc45b43102e0df4767156b1e8ec635cc07fd629793d289be1f2470297e8a084bc9af0d76566cc485a8ac898c0493fc5 +85000f8c8130abca642ae94b4feb3448390745decb1f443c34fd06575f1d0de35bbe649b46251df0a4bdc7a8bc133b2b +ad1ef07d34c59afa37fd5147646c24c03622ae4884c163b80d45ebfb5fa994699ad9166ce1ef727c22be3c28e0838cbf +8d1dd5500229f463f94c611bb2674640d20f2d34dd40b28c4d2a21d3e64ba7355fae55228f1c70095d1b288828a1950e +834cf56a4f2c2eb04b89383213b84bc6ba554a4715c3c1547278e5501102f6ff2af27cce0f876a2aa2da57b5ac6f3b3f +a468d06083d770bb4e484718d1c147b49770757b5b296fc6d6035ecb3c2f5c4155176f12ccbe6616184789350403f387 +8abe730d80ea895705bf67ac4f6b6a36fef7403702d8458a383d04e4859b4c8c7a75598721cc75793d29276afea27ccc +a3890145fa43e6b5c7b8aa0a73a62c39d623c9a75d17c5a05bdddec08d114ab5b0a865c9edb2be6ef31c3dc9544119ea +b2b7c1cd0aed6b776515a12a0f3a86353fa3d3a3b6027422bf7f2c21e6917dab543e189e860c8fd3aab65484b77efbe5 +95215b7d3d504ff83ae2bff789feb6b5919287d354d567141bae68a0f0d27b3e898edd8a9be5a51c04dd28ce9d4ab937 +a93a3da0e101797c690c38a5bf5bc14e10842e48a18c9888807b2233809ea8a34a76d20a8ece0b682d36c086853cee40 +849a7fee901a9279dcc36fe8f276ea6dfc37c30f75b679ddca2cae9c283de19c4df56790e6ae12c4bde33e837fcbc324 +b5c1587d84b0826e64438d8ee7c103119b164bede8d243a0256b5b798240259dd63281b81bfc613a4874a6732d05e143 +97600c536388c942e0a72ba3bc33b3af48045994a3ad0948fe0741391c1eb99693d072d1efdb644abcb08e10474b7885 +94c2120a5b4743496e7ab9bb2e474580ed27d7cf5b6fb132efcdd7bf934434d2be8d6f0af009c637b31727b3ad5d2280 +8a5ff1e7f552fa8b34b22a220eb1cb018c9c9430f0f14a634121923497cdb4a69fbb8b60eb33e5fdf9b0feb3e9f5afe6 +8b4c9032f25181e6fb9f60eb07e3d6cfa2b14ffdd6a0fc1b309b078f8290901e229a5a6ed96dda74e1a9a894224ff588 +a5e04e164ffc46da1dfe026ffdcd99332874a110cd168c44762c461a5560b5c098ec71673d509fc053f6d9064d4ba255 +97d21cf8327a81385fd3915c7e8efac7662f4b39a9785b4a936fe1b581d630678f42a3e9ea7e02bb4413da7ca9a6f35f +806d8462bbf148eb4cff812cab11b3d819669ef5f0d76b228fa166b83727c92fdac98ff3afe946855685b050d9d4c6aa +8a9899b0ddbcf4ba3f16bb006218022efca867a5b32e1de9c7efe1d7039c8e200a406bfd09ebb8921bf1997185e9266c +8fad2d8629c546c5de443b36927b068cfa333c8c4c1328e1221a1f6af7be5363ab8981fee54307532f239eda7656e6f2 +930146a1f6c3decf40198955059f70c98de7c5bb1b25bdc97fc72de3a84db1b121430cf7a7456a692d8bbb6b325b6001 +82987887016fdb90f79f045c16629c5b2b17b1b4702cd89d06b70086e5922cd10c5763cba6f3d30a2c33bc84be36c6f5 +a6fd7e4834f7f29da41170c13d29acbba86c74d5924cd361588cdda26a3ea7f11ec34c31869537ff7ee0b57a24555e9c +97b2474cbfb632148869a6b911c2ab91e4af9eff6c181566a1eb34a05d2ef3fa9da4fdf14e8fd8746a7c3123e20d572e +99ea177bb7d98dce25d300b09bf6ce08a7061360c4ed9a54e30c1aa5a467be6225737b62ae921e91547b5b9d39b800d9 +b9dae836e37d51c9611e6522aa6aa8bccf2644f23113584c74c963d79af0a7ae533af823215fdcbbd8df62f00ec1505a +b1a7165aa1ac480b4eb1f0b3d4284c69907d1b5056a343a2da84b3863c9a2ec4d757493f5daf9ef252a253bb3b2b6745 +a1322eec41b38b8bf3f4566bd12f9c230dd04d085e0526218489e986d59895d471bd8bb08351edf40021efab1d29b2d7 +96d559df46015e62d8876f4d8679f9a9867dff31eb151238cd75b3a10bbb2ab0f51c804a2f5adec1decbfa355042a6c6 +ab55e38cd273bffaa94400bf4913ce0ec1c1c848e8c53be1808d4ce5338ec92b4a4160b8faf0d1d8ee8b71ae751d0ae7 +b61c2987e2b402a52670abe305f8a9976efa9720ad0d7c5c1d0d6d9ec6f1569f51621b6edae84d9bb3fef32bae31a088 +b5234aa19fd9e714c7a9f3ea33d39a5c49f42e7a8edabd8f306083669df4898711d4b50b049dfb91815588ca60052673 +8e98a7b90baa4693c6a1e1c2e556d018c3408bbbb5dcf2c32d120f797fd8ed1373f1f112dbca114863801ec6efc1a5d0 +a7e1e77cbd6274f8c74b37a607cc20596bb7fc35ff1ab4358de15b07952aea397e409b30188c8516676cdd05d4919f3b +a5f2336ed9338772b71e490b1b3916d33df8b013e4d38dd57185b7314ec9aedaa34eda2733c38e06e656a8cec74080ab +b5de079ec867af3a3910fe47628c7d793c7d70b79e25a9a436e0a75405e2c58b740c1b86e1b073842d475e0b717d0bd9 +abcadb7a09173f1eda179ab7e3a5722f020402eaeafb9d604641645c21f1e009b758f2a6fd262f115d80e23f8baf7328 +8694ad59d4cc328b064884d147f66095605d9bf339d09e45652d68de765f2b09d45558d45daf9b4b36dcf881df8d4fb8 +a2cc7b2e812041f17b450b5fa7429cf62e2da06a7bb3c08a63d6f802ddf13e8b73d2056bcd6407476dd322fa35b9b065 +a97b0e7e22214f329fc57b6d7ba882ca563f863c06f1afcb60c0bbc81ef08ec866d39c81a80a7843889fc957d532cc0e +a8a809392dbf35911df8566dc20e2373e2fb3272bd9eaf9f474588a9132f06b5a1433ba9f36a738c6cd3fee403188fca +a3fb0038f83116eef1d6b023e2e17ba2795f7f90ed7c857d9f04337cb4e0c2e7d691bcea54aa72ac5e4383125b74b755 +a80ada835fede8d121162aabfc8c349f685775406693d599e3c288364097b02d96c10ddc20e72fd308fc882e5b70c064 +b6e6c4b24731a2895b7513ad97c0928efeeb0c645dac9fc8cbb0a6419221807073f6996f2b778e1dcdde63acc3a6b2cd +880a2e8fc2eb57f44b08cf4db5cf1751bf9f4aa688708039007d2a198f4e7f0f808aa566b36b15b971e804835102400c +8b3baeb4e1c1d7493bd885dde7873afdc235b58e45b515cf51ebcd02a9b81911c5ca182a9e340575585186c99e71d2bd +a6248e1bef3c6c6ddc155dfe95631a3f00308fa77b1c1779935e76401e750f151b7377f9376c08e8273680e924382af1 +800133df4ea65de3935d98b0249e335a918c44167a34a16c0a4adaa4654f458c376eaa76ef088672d39aec4c7d951833 +8317a6e0667fb524f35672e070f047db29450b06348604319765e4db09f966ad995098cf38acd30346c7fef5dd62528a +81fc2ef2ee0e6f21f406c51f02b9b7be8d99d30a054df918cf89c708d64c34d8b0dd060dff4383de858c0dbff25d71d3 +a28611f96138fe6974e3e1925b582cba76166259c32b39e95702fa0c4957ef2ca32d575b1c08cc8dbe96ddc0eb56a9f2 +86c6773f4e0261413d6d3944e0f7e498a6dae518120e3940d2f45054a912e706b3b615fd160e6143a7e54942406f9af5 +ae91e3db099d165b198d80b6d9af894203949d87cb980f4db97dd43ee55fbe1a45df156b72e3c3e9306975f9e5e62d77 +ad00ceaea52dcef616be9f9815548f8e9b800bc9c1a8832a4d8acca6c8779317d1951e5700e54db070a23db41266c934 +94426f78470aea2d82eded320b45bea09b7cbdf02a3d7c2af4ae4567a3493b352b36f43c3669237879910dcefcc82fe0 +8aad924eb1a30d2844654c9829d82c65fefe964d815572b6c9f902c6a826c247257a7d0d4967e2bae331d52fb3b7c0ed +ac9489ec928e4f43f8d194b8f3ab83382b66b045f18efdfcb05c1d4e67af7b3745ffbb7f52cab4b8895550d10132e2a8 +af8f390c7cc40a08c0143b467634c10e8046ce40466006a4b4297c76a6c16309b50f41a4a022fc838738c4c72edfb34e +923b0384e87a2ddfb7a2c47f628172e8dee76fe812c44a756c67cb20527d8e9029a561bd4ef446a013d4be7db7259f6b +856316b53f09a90af770bafb5c9ea7deb921687fdfcf512840e96fb83df08820c42263c9ccf51465da33f1b03db04d09 +92e8823b523f90ab75ac6e30869dcb257d232b55a3e167769ab5b54cbb83be94cf5d84eed4b1653db17f3f1350ab5e53 +8d0d05fac92079a3df86a72fa399e606fec7e56f81d3443cdf0cd373b3330235b76890197ae61f24d17de39dd1aadd06 +8a801fc71b9b6988a829044060679a7cc3d40630fba81f72bcd15c0e5728867f4bfe938066e68cbb54b042a39600fde2 +b40a6a786ca1a21159b72990b4d3ae8729722cdace4e8124f8cbcc3fa96005563535d28e9d92cda02e91d979d27f8f97 +914f30250d79829919c8ed184c2e471c0d9835f2348e628164dbfe39a51dcdc3f8bf99c945b1f413e65fc5424014e5c2 +8ab8b347b7846fbc7ffe69c89ff67dafd522bec708b7ffea312b3a7eac47fb9d6006cb9038962a07dd89d4688ee6a18b +8e755f8cde0750700252e41f6d16b825e7f02748a13744c004a52b19e52d58c42d1ac32cd5ed1d6ad14cee5174b4ddf4 +88d6192d72e1fefbbc9ab400e5b0018bd300839cf604cfc1034657f62fe8fcfc52acd86c207dad0fa6383361d338b2bc +971fa2ab593578b341076d98c49c71dc7d9eb4ca706efe252441499037cc86fea49af681d8a4d324d302526b2a3e5c18 +b2deac648501d7e284a85c19f514f8744c48d2b5516c993c2111128a9fa042aed34dc371a0cc3f00e918531dbf16c0fb +b63fab8600fa531d7f48f8d207298544d2e03d4da23cfb43d99b0612f1a20441526de63b7609f5969429e763147ee5e2 +a8f30d9b4ac3675d61199e8e624f88b9dc52658a2ba26a2bda5f9cd3780f0b1e32b56c825d9dbc3a059d6c61fd37e261 +8a6f8e963dccbf1db9c839c21a4e832c7a218b00fc31400346b5379fdb8394142bf8f8b981fca3f4d3c43d4e34dd3e31 +b4883e6a4213c799abb2a9b6998ebd4c89aeadfbabbe4c363b22beaff46939dfbe4dd20d113688a293a41daf5cd82c8d +aedb55058fb467ee9556a3b601af86962f99fc06f7eaf837b4deda030b1899f565da07ddc7108e9f5e7024e11c723ed0 +a8185aafdbd22a2df2ea0f0cf67fc88c4c3f8e64040da08cfa9e8075b792406c20d3155d6ea6fdcbe9f5502c44125545 +b2b27ff20d24cff756e8edbd6f8686d202d687016c561e56dcffebc78f404ff544c4d3ae8802b91bed0487792d6dfd05 +b6fba06a70d8b1000555b8c6d791b1db3fb7f57a0f8b1fa8dd00b2ee14242877e1e836cef89be3f9e0565e61a6b4c275 +92b3dd6e18600ab856c276bc787429d42b8c02abf5243f7919625aa1f4e8cc3eca61cbe106b81d0e4909393a5efc021a +a508e1a1d4375f5130c95a169fd1d4df51cecd84822dc28b18e464c2189d464e6dc6a5855e0cbb94500d041319749ef7 +84b3e9a6b5d1a7bc7df44ce760b5b686fba006945f6e1f3f67ea2c90dfa6ed70bc1f021828a0461fe158ece87deb1e30 +add83e686118fc5eb56d79199d33cf0c90fb2a5996c6f453fcd9b9eb3a273a466776adba1cccd6be62a4ea154480fe17 +a1fb58d9a323dcd7862ad4bc6359ab2bae35a608276a3053d40bb3abdaf3e8827027284d964e51ae7b61dbf299f2bea3 +ac901ece7cf087c782f75f1c61371f77ba061bb752ad680c9b1012768e5ebb6241b492bafd9e016e989cea1ff51aaf5c +961b9ef616b7faa3befd807772893c7c66ab6990a9405cf4345ec29cf13d75dbb6da41ec87af5b5c4bddc8787b88b480 +b386f7ba0b94ced118691d883549d70ecd28d1c0d1b718cb82a92a246e61de4ba80b6a76d6039c261e342f9ac136941c +b6415848092dd93da62b5a5307d356d968bd7c935d3626f40e9446573e5794f37a23ca072fe8af2a9355a4b04ad35e58 +843b3e3221bb08122a1e649e81759297d985c7f393c36cc3bc707a7aaf2f53b9cdd449e7a4384981c5976fb3955871d4 +94083ab99a73dc5cd463b5259a0f4e99847bf32ae03739a440f8f48e12f078602c76b3fe4e7ecd31d52a7aa31168c5ee +b6f994b5482aabe833e388b24b9445c01e47fd6e354c3684094237189001290aa77a327181e7e7e756682a04b8b3c56a +8366f418a3fb2dbc9ffb5b798adb968aab991fa689ec24a4c4bde6f046989b1815e1bce5e846f3554028e16799e17281 +b8e5680915eb37153daa9a3a977b47c88b4f30fd358901888a1056e07d2a7070d28a47acac7aa7856ede16bd0c93ff2a +871cc7a122cd7b9ae2199801e6a0974ba8cea64e5866a5130ee0ec926adda24f91b3ff2785932cb55537030bb5ad811e +9370ff1ba27d33080efb22836147f766c60f0a8ca250ac6b2a82bb464ffa543da056284b712dc3cac53dfd1680a4cf87 +8614d8029df5058f5a072716489f734131b228972ea9b2b952ab1150bc50b6637543aec1c35763f8dc578275f7c9df3d +b8efd01dd0016a27a0e2df65b571d405be4dc8e0df5dc0d8354fb187b96589e95847ba0c2856613924125d21193753ca +a86e524431247115ee497c07ca2a73387eb820d293e8bb74e1ef1ae7ffdb21a9dd8ef1a6e3f391e6f02ee0b51fae2a06 +9151e2dcc0b928573421ffbe43b1761b6ccefa4ecd58be7fbc8ea8e975e18d52c264f682104480d590e6f8c0b8b9f63d +85ac8cb79fb8916f7eb5431b7e81606b38afba15895909873f85d9577c87ed2c1d0fd489fe058362f20ac05626681346 +a076dd75ed807bb7afcae8bb9821ed46758c1a8d00e7f3d3c91a18e6b95dff3958ed70441a1f4691ac3268d95e243614 +89d8dbe170b9804de3fff5b6512d04643ea0041c3f9bedd7432b171ced1577b0c0a7bb911852c6bafe154ba36cd30320 +809a63ba788e618a281804ef97a75df39c7115900078a6bdb203bd79d3df87e863c631e934dcee62e28a16cb8735acfd +9727e6720f8b73b6ccad519d8ca1d4f90c2db33ab536f399e2c4ce269be15d99e22504ef153aa26c40d4cfbc450f25f6 +83e77918ba6e28ee01ba6b8dbdd84c53faf65446a90bcef46f262f341dace2e237b1ff8f8d566fdfefc6973deafde716 +b5a4d3fff76905bbb229d579b8433e76f2f070108230f20a30e4f974f12f29ed017aa66e9b298a4de0fd535a0e1a44dd +876d3a0bb439e7da26539b98abd0f7e0b7e8035eafed08df623a77fdac30ac85ab4d58984396319a88e072dd7a5149a9 +98923e83be5b2877ac18415f9391ea792933db718b29b6970001682cc8434ae9fc640427c0a27f6d62af5f78f3901bcc +805c675a34443a14c0098613d11b4c015264e038a8d1adf083844f2e3e3f2414689788423dd0ff77c02130331d511068 +8d8cd51d4146bfa48492e9d3f3e4b845d4ad1442ce6bbd95979f9778ffeb108c641c9ffc2ebbba532f922237e5849222 +839862454707a99eef931335e5c5ed80805ba06bab0337c5301fe9fb92fd59c9ff6620e66de7369352b079dc52bf2113 +b3cf3bd867f60b345a0b91314b34ce1c02e64dfbaabd70782614208d32fcb5d4448102bd54728fb05d1ed18a750e88e1 +8207a421d010e1c5854b8e41460c6a13035ee77f7add0df83c5c31bb00d7acdbb676478a7dfc738b9aef5c29d345ab63 +ad2b14f87281ad6e1d2b713e6e8303f1a45cefe097820d6a1bdf4652364e70d28ca92193e2bc3d0a1e69da5a51c90ff2 +98025be2d7e59ffd3f6c3c2b28b27ec42206968c0f96d09330598fe17a207baa6574aa22cc26555139766cc284224fe7 +8e80fe898b7fee849f7dc8e5eac668c76f1fe18d159c51eaf4ddd8d4d600c852dbf6c2abcb878c64f37db7fba3d56968 +871c0e2dd929ba4e157ed606741a6301aef759e10a3f919166faab23e599d3409b232240e3afe9c0e1622a11cd453c1a +919f7e465b399e2819ec17aacc199421d267ff2979ea8dc8962542ddbae51e2bbdf6cac92f8a35e05e4d95a4a8315cd4 +a6e6667e6127ee4f0224a9a94be3c22831a1ab3b16f57462562b11473c425e7112b33bbbb6af860c81bd6e84bdbd3b86 +87eaa9e3515f2d94acf113d77dc085609d06cb038f5e8e90ed29bd04bd4814e95ed0d6db5a1d65572dfaf73ab2e50ba9 +90b30c66ebc16f767f3f0bc1d8bb17ca1951a616292297ca8dd06d54cc53e5fb5fd6321ce158c04cb4c91a04c01f7fbb +b5fda3715566188630f96207c4253315a9cd166ef96651afa0ae1d6f0aa8856e7642e2f8ef3b1fb1eb2c14a7331f6592 +a54143f662a6946da901ddaa9e514a0e96bd6397020cf5d88084a1e1edc092b94facc150b1c029a508fb3995acee50b7 +8dfdb813296bd105d5813657c98337a24c8bea19bf0d119efca052c018ff5c88f31e05e110fa12f306ae4b0a8498f113 +8b7429599915ffec755060d9cfc2c445df9184ba6bf298bfff5b54c2ec8747a9b65bdc6c73746a94a54b0a62d93b6a28 +8a1d1108174d383465a57ab4b1a6811ab86dc007de4f342d37f4cd311650382e0352d3664ef09cf1626c0b74e2f21ace +98cb860aee0b7251da2d114b2253daf977badf82027a018c956fd59c6c93b716bfe69a132a4778ee4b7168fbfe390ad2 +94d5a0d33a0aa590fe76c71e80b21246dd9bd8c2f5ecc647e47a423c2dddd743010484cf2fa363ea73bb217247429066 +a082b7a109fad08e2c01dd7322625c18f47497b32269ae4e529b1681aeeb3c4a813cc6088ebb4427b486320fbc4b7872 +86c23e2d3b23244c7763c123ad67a41a2dad8e4556cac23696906d1acf5f4cd7f661281b8ab2027d268405b08eee6771 +801522a5c211e49eb96294a9113022d86c84bb8741e44fa7328122836a39ba7e11e27d0d6773550b234531400ba1e7eb +9683d154b18ed641867fe67b2dc70e8b8afba79f73fdeafdf9015d85aa0c74d270b290952683c3667c0202a83626687e +994febc16f8d216a20774955523262966e955cf964950b4b2831a3483f818c20ee6f51cd24f499dda0d3191910a9fd35 +aaa8f12184525e89ce980468fd24e1a9af846246297546655763ecabf0b5b5047394543f1791ba1c70e21637cd815877 +9193a37d5692ff1bacb0265bd7825c479624d2adf33a419b0a71c8a744ca1b0c9828127831302ffea4fcceb1a53ccd54 +b9f3213d5d588ad73b86365cbcf0fabcec5c30cddad418281ff2408dc140e3f6a25afcb6bb569605191665706c675e35 +96aa280b2f0ae5c3ac51edaea4435ecff8ecf8f2536a3400d8c4c9b12c64d16418838dd7ffc1b815656109ca63261050 +8486373d67804e9832bddca04a0084d1976d324d85c22a52ce2bcf7518f014ad00e4795e61c71e0dcad1f23316288dcc +b4f2e7f7e2ed7917e7c5036681e1ceff18b688c1abbd203c2bda0731ab56701a847cef4f753f68119110680913c2dd4c +87dc2336d88edd81b94ef78e7bcb6d3876257c326d28b3f4484465d6c65faa6c17aa7a2f85c6b94ddece39f6736751aa +b4b3502ebe175820f53da8e3fa28160579c4150d79d932923739aab545af537b3301d5b21f5138ab4100e737fb61a084 +88063af42d5845267d979df07be0735cbb42d9b57d3625eb5d0aa7e4ee90ca88fa52aed480a4d60eaf0ab8dbc4f444fe +85cb81247c09e21de6deec42e668b72f513c7b105f60ed478b08b85fdc8a886a97bb7e39eca0cab09b294e4b1490b0c1 +9920fcfcf836faafd211fa1ca78302aa6feffcda98aadb6302300c250fe8621b60d9c214ea92087c44996ae0999eae78 +a1f91af5b378d61ea277e5dac81cb71d71a4ac35322aaf42b3a8aab1641fd51d8da1783bae0e8ccb66d73db8e1003478 +87507b427d381ce3906e372a12f4e61514ad7a102334826266df14542adcbc8bb7c8450a1fe110069d9dc2e9bf0687c7 +b7581b0cb549d71201583e0987e9e9bc6cd36585c96664f836e1b7326e5375ce8d0a450343fe0b106dcc581b77de88f9 +b26504a6a7a64c44d7f97d0402bf752740934ea4c6e101ec131666deaf574d55fd7f96c8807473722b6629dbda2ca3b5 +b90accb5c6b78322ef88d017fee2ae1cf87194f4b3f6f4ba6510c0adf4c11b20870043cdaf45372844f5e801464bb682 +a904dfa6e1f813b4aa0b242f3eaaf893da7ea854efe514487a237a01fe244721482476b81ed75ef1a951fc54802b29a1 +a00373aa8d98f4dedf9cec4d227b5fab00f3af2a7bb4c8b0dcedecb5a04244321d5f25a81d57ed0ddcf293c701d290f5 +91bedcb316698e73f43e9dbe0229772c856f34901fa4c1e018e96eb898e4ae02b19d900e87d01501099163be56db57ae +b84dd6b9a61cfc0817da422380b0dcc5221deb600b4b6a6f6c5ad934110a3b66c59f7407ad68bf8642b2bcb5427e8050 +8507c172e499856675ba69fc1b0389a08e58f8e5658c9268172b926dabb4a67b7c836a44d865f736e8fcb14aa2809529 +86609a1d82d90a971786da9ad342035ae4865136e513559069b6dc8ba82ec0bd1ac695fe8afa5f61f85c2310194014ed +94914f127a645594ed372855550ec0817663224208c127a08bff3d5c4f463b7939cf13a45dee68586b678ae453c6d60d +80b55565972213814afd6ad9b1884a4d8143ae90c148ba730ca77b0937c2faabb23a6f985dd0bbbe05705fada4cb1a00 +930f5fe58dabae91c26c6fcbb61c3e336678dcc35d028e5c958d2ee7d50b80e1693c0693b82d719dfd9fbe2c03b52c10 +a45053c493da932896d95d5fb158869c1051e1bf99658b183c9cf4415fc8d4fa1b6a8752b8bb26e8b706a03a57fc05d2 +af7434b48d2ebe639c8082be09060422f662317bdc136d534b76ee3e3aba5ea8f234cd4936aa2b928f6eafdbe5165a6b +a57a073bbbb3020a92497f0ce854666997a182f2b437e7b06c9888db8acb2fd2128e3959f45c391f0548a3de49e37e76 +a0ea8131b2d8cfb799e806d8cb92cb02d32de37869cf2ac3c82f7c5d9a963d562755b16d25c4b60f4ca214e323790a9c +82f920aed42eb630281919b9c1fa4acc02b05ef34020cad3583a29375bdaee167a47ca3366ef065cd8e658301942dbfd +8415ef32a93820618abb91329224bc46d478ee8749ef42e372ae4ea29b6c05a65d5ef515ffc7d720b2f41ccbc040f176 +a0fbbb0113daceaa05478163fa835b070be5898dd9bbfa9abc582409a7b671c0e41a5070de4cb6dd2072888b11825acf +adfc99221d7f044b57ed40f4ef8a9e47e57265ef8eac654043cf5e777950af6fbdc2c2d5a5b916048fab1c19acd69dbb +b3d8e85fccf623fb3848e4886d580469bd41ec0533975298bfbedc7a1a9b4e554714991ec4238d8ff976a83cab6383b7 +8b09702f3789ae1f7799ce58a0ffc2327b3ebf2b56cd870f2be66c0d6781cc1f34c2d721d0de63e0fe9db85bee842fbe +a935864851b73676cb49f509a198caab467e5dfe4358e7088d2a76e9b8c13e5d20b01eb7c0cb9e51ee98c90cfc393c71 +b5035d76a5a8251bcb18f33968b077d43403c69492b809eaa3e202eef174a5649aee30f701ef0be050ba5026957093ab +b1cedb563cfb09713009b2263975a56abb9932b8cdebf10f7836c5c34785149e9875ff590fe1414ad2d21da977b7ba26 +98a718c23d44b24ac295b328d91ab7a40b23ffbccaa90bc5888efbd32b6a95c530bf5e999ccbd4f1c85263104f336ce9 +8d9d2ee952d5b135eac2f06f0478faaac175f23cb3789144f3a490f2ed34c885ae4d8ad7ed48db85cc6c2bd70b38c6c2 +8155763582ff6c68d7071ba842b6543361cd5f65b7c70d5bb838da2dab2c02f3363e2324307e7d2149b12700d96bde38 +b18b277334ef7f24706b7d48fb764a487bc4e21fcbfb01627b7524e9a5d3253be99d84c417084fea769b550b3ecb4574 +b80db9d83cb1ae861a3f61197a1f14b6c5004a2b3d031fb207adda94d725f3e265535ed7b69b9c801f2e95e1d64c1901 +82cb673ac9c0c124fc546c59505fe4fdbc05a1fece0fa579f6a6df96f74bfa877ad82b6fa768cb678ff04ae4cec58d1e +b2e190b785a4a882939489b86d0a06cb637b7be8b14204645bdd9d6c37626e8623e35e1e4eab5c8fdec0f8349ede8918 +a82237c64f15d306365be19085e1c725cd148702fb66658c7974b02051b685715fb9e35fd4a596ec24d532df4711f82d +ad6f7e3992518ba04b510b705fa6b28e3733e0000a5480e8a3c30fe71394de2bfa43333c69e750bdc3e7092b9e0f7ffe +8c0ee358f37c28f3b80cb9ad5487c342fab734886e31e30c667e616f3aba737a3a07bac4da552d8405ad8b00c03e09f0 +b7851e0b88486b0a858a218f4307e0c0c8c314fc69e2b90cce8ba86d3fdb796b572e50eb4e82f83f73c7f048484b45ac +a7c35abc2e15723a9f395d16d2484b798d098be5414ddef083c8283b0c29823226fbc4727d9cccf96e33b27fc40e032a +8ec5ff2ba7c3ca8a2d18df81d46e93a3bc94ceca88134ea75cc8ec2ec4b1ba3d0de49dcd4d385083c648a63483377fdd +80ca7ee722c3253e7b534b42a8947e38741c542dee1d671b603a9a743f5ba2fa95f193ace46c01000ed20ea05ad0639b +ac14edc2d803b28a169154364dac5360cf0926d911a615077a94858fb4cbbe31bae2f30a6a68b248cd8bed015e0f3b29 +a4bdb63e91fa72995316d03cd117347cbefd14eb1b19a0adea1c9d39f49d82ca1ceeb2a4184187e1dade109d10b83090 +ac8f528e9e8fafde00e66a75d4bb68c99029456ae9b3b7cc76ea4816e89aca2b8b7d094db214bad1e87dd4e84d1c1a5e +8a8d090a01aff14383419735840fc5286e71a5feefb98c563b2d7ee593b518c3aef6654f10da8a77f40feb52e1d31fac +ac4259562982b355fe5e57e1cef574a6a40a7144598c13a6bf07cdd8000bfda95b0b0b44f215e9dbc71be114a1857441 +b53741dc30b11fdc6c9778555c1f714fde60890c191a0effe419fe2b6100228d07cd0738d0dd73057cfc7e340c75f0c4 +80ff52fdfae53dd2410ea556ea6504696439919687d2dcce1e952d9d17b6e3699816ee623b0153bb0e0588e36b6f56b1 +a92b34d785a71d10e6796ad07df788c6878717cef4f1f0623898370725006d46fa00a0a22a3934fc5cf323be85fc7767 +ac1cc08cd1a8fd6c946bbe14662b18e89725933a79965c663b73ae3cf5f5ab87e794559ed579564884e430e108385e18 +88b8b2264d84106d38c321c3a4927b9b41cac172ae27f6292ea44cd9ce11d185d0061a59148e50474d4dad3c9e940476 +b7ac9f257b4f676d69899a181b45f40358dcaa70fa2dad38870d52838aad9001f3a3145f6550fa2826018952431e4cd4 +ade67b3d1602ab0af6a256f25a65b621dded7a0adca65c526ab34c5ca3088a549b7ccf76c586993cef0d2d38af541617 +8fcd8bdc44ab42a70c174682a1e8b929004834d4962a902de460eaf8649883c868cde1cd660d14d7d3ce589fe3aa83ab +b914f6ec60f1767a12fa34a4b400ce102564dac4c1c42f1497c7bb824bfb9000c9e23ed7cadaa16ad79d5ac906070710 +abb1683b313612b583e87228384eddc3e2e7539e0aa26e825f5c27da222941b6a37ec47127cb0f11b6b8e0d02a6f66e9 +b01efb31962345a2fc71b7c370e7d3117bb1d1e1a9b6984ce11bd83c898dc127fec2e821669deca7c74d406e4678a736 +92439394c6c811d908b05c626f1afeda3a0f8c925747bedf66a4a5895ee76e7445a1982e99d8658117128df5866eb64e +956bfdcb00837be56d44f159bab9bcc2292295ec1ca7424615e3b163b5d14f7143e214609c0b65ab74a0dbddbed4d782 +880b9a8dc9bf6499f1f71828e6c906e2ae59660c9aaa824a6f36116746406351b4e364b6fa26c45e9d90018555bc7dd4 +83f4a0dcf523d414e023075ce0dde10161d65c0abdba522c811f0e446980cbc21eb0bb42737136bce30fcaae3c673b6a +abfc5593e02dff15161c4da67a806af3170bb2bbc65e3a0457b4bd994ecf5e001d02bdd417655c2b4433dec270a6273c +99c6d8bab7d937a4cb5c272c4bc3856a3cb8295cd77ec9e2fcc6a50e0545999cac4c413c3ca8e5408afdb60388c82ae9 +b08f5d230713639ec98a7afcb2a25b9b2d1c48820447d28b6a3ef448aedc4b9a90b6c5ffc6613a70ff1766b51992074f +99d4b54e35dd3f844088155f114ef93507372ed32a6898b9954d5a6d0743e55d8e7de20d67671454d26561ed5e4fb05c +b7cad70deba1622c79f1ecfdb2612e380e9048fb6146760ba61cb62e98cef129d3944c5f442b15fc11c102fcc6e2adb4 +95feea870c86525ed214e3e0ecca9f66c5e0babf6da8473e5cc5e2f305c26939f6afda0207bf5855b6a6c928815577ea +ad6e77ec226053ab331f3f871d7fb770ae78227a85096d263bb42915299147a7a7b57a4f8f929765cfb323267b94865d +82339f53ab7344f8dad554fd0270c2aedb34f7b0c630f0a56ca9217c04f0e4a38781eec769354a44fa90f556b388ad01 +837d4672d73588f19b872d81b7993e5e0628139f5685d0520b1b766d40e71b9d83a8d2bd65a03987eef89b3d5c254683 +b3c27e19f579133f1ded8c066dbc3e4edaf449a1edcb1aaf215939d63a7f2b250b9b7afb62d4cd7cf37c28da81898a67 +91f669f9db8fbc6d7a5ee92cb67c2fc1ccef6dde622efa455dd7535b11f506f4e309a8878b859d6605a3917f6d7d67e8 +8332dc636222829a83501a8312904096c2984cc0c5dc077e067d8962bd87666226e3324a9e5057c1cbc3ba700a3b22f3 +97e81e20bf33baa4412d6b81c5fbd406dccbe70973bd73e956d8ce85c99d2199daee5fa6e99fc6d40071b352b5044865 +b716066fb9e470cca4546a401048c0e6c6408c8c9f4cd80aca6778d3f4121378e11cccf8a005845fcc8dea2e1b9f16df +a7b340eb603da43f2aa542dfad1ef3d3357f583c46040f2dab234c8246d7c55d6885f9f7a14f319e22355ad498c22a04 +8281ea97a28ade9a0cdc73a077c72a92810b70912006611a00df8e7d2ee1036af73c0f062b367f3d4d75be4b9bf78aa4 +a481ffa0813a4f2110c6ac535fb446282dce73c182eb99baf786ad42b804ef12df078b2f534e3cd8210973880bba6a63 +b71a581ae08eda0437f9e9274c1f9431d6b357e4866e40d4c2470252f0888978497af823dbf464785479e5f35eb89aa8 +a07c9010308bcfb0c97a1059d5213980000841ca0565697d45aa46e82fb36494e4940aa435ede417856d24f73d374757 +8fc353fa8733947ba067ca2bf5e14a6c334e4ff30efdfa67829dc86f49424f4548e879b153e79dc75f1ec00afd6693c6 +a663faca50e1fe5d00f62abb0b7828d6b761fde9f5a54f27c0b726d8d53281f83ac165b3d3db87f970913350a7dd07f2 +970535269744905640d6ab238930dff375ea7efb2f391db324724166f0c436e7a3eab7ef6eb2e5d6724c58d588a4c592 +800f33f5936498e16fd0f58210a5a5c104074039db7d9d5d92dc62cc00d796ea0a3a22e5d368fe269cedcf30bf6149fd +b4b921cc901a7775df7ae73e97cdd108d98c54534015a1469f0ca6b07989827e0d3f9bea2ec015fabe9d309054aef802 +93295c8a7e5c0bd9decd99ee2d704d814cb6bd0061404fe00984a8afc337e78af11965a8560288529c2a722e8b54b488 +af43d382ff7951bea94f4540a3a2dbb53ed527e966d0dcd117d5212f36112976e1fa00a47bb9870d3841cb01621c5d7e +b4d106b21e4676556bedc6e7f5a7eb5c2ad0d5fe8004a1d968bc7806ba871e241d38892b1fa73e9648b23158802ab57b +a96cbe38f86165288a365efa796b0e2076ae9fa94bb6377cb80c7d5db9d376e9c18164a8a3667dddb3f5b847f52fd319 +a0bde83e1f3e925561c481ceb58c7575027f9641e69f14242b886e7fbc532a2bc54aeeb94ca39bd7da3ac984bfe8cced +8211c4a70d08fe052246d3ccda60c9e9677910a93d9262d572606d99e273c1ade353eeeadf5b1e3c1ac3c4b9019d5f61 +954ba6744e3f991580b6633e5d184550e44400f20f00149d899d97bc4b51b01d09bb4f82ad975cd55189320523fd60f6 +b7e3f17ae79c2faaf5f3cbe0dc528c6aab0035eb3f38954820556bdf7c3546585fb9814717302c5f45fde7170748ff63 +880446589f33ffe7ff5e105fa1c380d401d6c46e80526948fbf4edcb779753a594f3891461f52eeb3f5f2f6051c361b2 +a26c06cf79c412d49f39e0e27e37c82c4cf0c8648638ee66a97d22d822e064a9a7cbb0b1ede46806ea0430639769cb88 +a968341c5e4a3e6d2a2116222e3c58c2e558f5bb0a2877a27c69fdbd38dc3892f9ed7d7c114f557e52a351c73614fedb +ae9b8bf4774ce3b84185be77723ec62b9a415e21cd60e86513c1500916c96d62519ee8cc061d81ac9db9709d6e191649 +83a30c1ebc046c9a1ba911ecf6f147644f58f54e32357dc395388e6bab66d71fb9b691754b11bf414d43816af8058828 +ab5b804fcfb68b6439f311d0420005b083a84da15a8415cc4013898806e67c47698a9d594263fd9be42bf48efdfbe2fd +a41c18185f8111ddd551ecc8f6dcb87036cebb6eabbce7faba40c6c5c8af2ab59ef027c6fb2dc523eb0159335a1ab189 +b24cd94b7c6e161e651107769d863fe5a3d7a847b9c60c7c803846bd782cec0bd54e6278a318ed23b90cd7ad25933fa2 +a5ba23ead78d1678414d4e986b448e7a24b23a5c0f529ba604a51e4ee0f87baee450fd121b43a954be50bff6c0d7908a +b89c17de4809e722527832b90b810d9691b437f19db9cb88ca5cdb67bbc6946ec1d454dc0990b66093ebeb6eeb6896a6 +914f436fe0ac7540129c3deb04d51bc61192ab5d0d16eda77ef70ecf8cab5f55a13492f54e8052f2f214186a113d8949 +8e0b3d1dd756a9008894028d0443083c21e99de69b8d8f4e7eb3ca7fc52ad540355d4a1081774a6d51a093110f4bc838 +a9c1730eb5c0a42deda9d9b39390661717479e29007f5f8499d0645b8b85bc0ff12cea2ac4328f6588a12126f56284ee +a2318a42c99f7613ac78cb110656c6e470cac6903a5bfdc1bb182af21e0f0f409bd39324a13e2790f0facba04459d3c0 +a11ba34521434cb718f1b2015bbf451ba1a7c60e59b1620ea843835c7e75bb42b6ad29263cd3705f7f6f1e40a0ebdfe7 +90705112b625973e1cb35e30f9e15e3c752b2e972231b4caf53518f44b4a40b8a6bd15c4af2adbce5dc194169b860cba +828035b0e70af8db1294379b4b70e56624e1138ef49f7be81d938e8b25aa5dcc03655e045a95a79e0143c23a77407004 +a7abb1836282917d1eb9886c79b6a36d720612e3b823d9420a4a705e8add6c6bfff2f682e6f992a6af10ae2f71ca8828 +81e97c7f980dbbe93df9efdd9c0a8172ba0f00378e9375c926b9e24758e8b827037ba67e06e994fa9d05942320353d71 +afa640b2a7fb997cffc5db74a91dece901be4a36415786190dfd17a77ac837a2fb2d73e973b8e60582e71824c57104cc +ae860a6850068f2b0e1e5a03afbd08b667f44c4f06e431f1f83269e754f37e18a764b00e100dcdbd1c1d18af9d6304a5 +9443fd7e1263d5ab9baa8b1a3c893765da1dbed0bdf62ac9c886425ea9f05876df1920889b707a2cf248e7a029883588 +acb38feff88de8db3477ea9ae3b33e0c5715cfc91cc71926dce26f4f290dc4f437461a186cf1bdcfcd6d121e087bba33 +942882666a9f49ac24d9099facbf1e65484ee76cfdd2eacef25e0f30260654a7b5c0cb7dc37aa1601980877f945c51dc +ab2c9035b2ee9c5e57d8de70b24329cfbd247324309eb30ac78c404ced268dbe2aaea8d417300c90d87924a48702b793 +80aedcea9c5a9911731ebb444500eb95b519e2d4650c1d465afc61f4997879d60750ae3fe049e54654a06eaa2db7d8c2 +a63e1ba5fac918c8bc0f4364b5fc8d26214deee825aa1bff111e03c0ed43baad47e8bae154ad580b851a0f66be85c88e +aea7f5f8c387c21cf671246803cd5baac61cd6359848ad4fd685b1350ed6298a129ed74dace279fe7846001bd6577dfb +906ad36bbec72813b368bd2b79c1c9624966dcbe94ca9dbacc297d0d8af86edbd80cd702ed04f0adebb913a6a7bc1a62 +a46201c20560ef2ded1ed3047fc196bfaef445c4a716890d9235f3a06d6993a8ab29e816eba54c6a2e2590dc8dd61216 +b37eb2c0d765b044ed2fa2923160a19e11509e764025e43a62b4ccbe38e534ab59e68c2cc92cc5aff9d97154b8210c50 +91f93b1404a4bfd3fc8ea019d76230637ceee315da0faf366c712c3ba19088cd3efa2dd30172dcdac11e636f8473a26d +b6b905abc4a795bf95d055ea09c3f9d0a8a9ba0014e288492a3751d2aef60cd3b7846e1ca8366635a94988b2e197191f +847529bf842d7623150a3bb91fc4ccbdc66010bf008179a32359f98bd007330bbfabfdc487f4b98691ad65680af67a8e +b3d37a8098d02b5ee69ed060527f3d924c727016fd92b21d6a52fb1c1ca18c7eaf0caf8144e9e6bb5b6a039ca85cb1e8 +98cef893dbcec865cceae01138613de146d563f13853ae34bed5f142da716673c105ecbf4f2aa7d187bdee20702d8582 +97f60078d18928c4d7dee1ab244b2b7540928e20cf7ccbbf6684148611afdd9cce60dbf412c1fc544ab8c356fda8fe11 +872a6758004e6c87c3788c5c11bcc74db78f076efaeb75127f0baec28febd02528c65b227b7619fb8c29cc92d7c8e799 +8d72cf1191629440d7af8daf3b76b6b1bcdaa8d6ddcde52603dc8b092c2ac78d6e24bec32e1223eeda15dd17ba2c26d5 +89dcc8c10be08277a1e394de336bb1b135bcc5131dee5eece80973ef364a305235936a3b6dc40f2eeec2aaf227a86376 +972c4ee3b4b3b028ab683415bdfecb2454d326a19d274f499e48bb2cfd55165b928bdfa7f97c4fb6d27082cb88b73dd5 +ab5438a8af3acf2eb75bea0ae71d8aeae363d6644c54e3b020082c80809ef86faf5811808adc8240c7693515ed8bf199 +b594133dc9f71f72e448796316ff3ce2f8a03c21ef9c54e551d23723d5f197f7fb0bf1c33e9cb3f51188db7dca51bf49 +aee981b45d570a666d0d0b2c7aeaca3cc22d4873812b4424d1f91144142393fd64c49401dfb970c7d5ae91233676cacd +8f978d21de1e264178f88cad7213463a5efd139c30dfce81a7eecb46942870a3c1971f6e6e6a50e0a8b20c379ac084e6 +9153701c8b82ab43fa4635cf677789c9c9911efcf23250bd393301c0be51f14fd0acc4e467ec9682acc89085b94641d7 +8681989a1be217d77cc8e012c95128557de70b362442e7f1e6162bd52ec6e4ebb0ab28f9ad3f67c1d35ff00216ceeb74 +8e85421256fc71a82d35de9645a6da9cbe4dabb9670758c4eafbcf42b26fb99866bb2b4c374601749738ad34e51dba6a +976774296281bbe1e8dabaee7453613d0a615cc6abaeffd8e15ca4484b5a743e298522b2dfbdcaa697e1eea2b2bff736 +a585501faf955b6acfb328d801cfec5b59be8ff2fe46ef0bd73b86ba4c19c1dbfcc1df844d61a5acc64bb5e8a68f6cc5 +a776217e5073714b36bd2ff0621246a48799eb5ae3ca438d1efff6f9f9beb13779bc18ae5ddb77c838732e8925018118 +992d726bd4889f4e7565bcdc31c7b4a58ba44da5f361e3b46e0a67a6e4f00c25e3503c94e7b2bece737d7efd47ff9beb +b277f124d5dd8dd669ef1f6840276c0bb0b60379ca3a0aaf00ca337c40f478d511b1a73e73df6c3b600e6bfaf37a8fa9 +b037e78617c235e6528e535bf13bf5e82c70588d1d0bd08de754d089bd47a4fdcfee79b5666b95698cd98c0e32164afb +aefef9e398e0edb60615713d7c1334005b21844d3f1401903e09af2db20d7b342b8d80796fccab583c8607c533c9b735 +aad20eec7cf4f0b518007ec1df7dbf4935f6f9ecb36a11d148dbf9e5281aab43feebcc8ce9001374be40776c5ffde825 +a4ebd6018e004ac8b5d022cfbb7c5b3833456faff4f198a3d9dbbd077c8752087bda1ea060466fde4a5f31cb8a50a7b0 +a56ebb8ac9901915400234c1c6c8502905765a7224de56b084f9b0a3468a065e78b4daea27d9887b4f44a72fa61a15fa +b0269890863c63203dd4da3a08a1bf06621cca212acb49799bfc48be7e41c951d807f85dd4171ed57c372914dbd2ffee +ae11fc0f5fd5ba488104bfc07fed50799f51ceab4768afdab300325e9a913b1f257fea067d357e54950c8d08af5ecf59 +aefce65396c61e835ffa38857df426f64508de6e93f966cc46b54dcbc5e2bfd72df927b00489fc4460414569ce99e610 +a5a1fed75677dc956c000b9135c4b6138e0cff53770399ffbc3b12ff0c1677ace264aef2058aea535ee1a7195afb034d +8071def0890d01f0d10dab3afb13125f0194e79608b9ff129572b5daffb49cde5bf6d9f24da3f84483612aaac3cb8eb1 +b5e5bb8c0be22349ea51e249cf2159189fb9aee615dd62c5f67cc9f43745676e703abfa6561df4f5f1d79b86c459b11c +978dfc57cf0d3538ef336a25ca7a2cf373f84b71bc06d1c74907464e3e816d834087ee126bbbbd5090a09ed063f87a46 +a2ff4b59b3e7fef169835e67d47218eff5368aed3e6e2f1cacd29a5efe6c1c2e7e1839d87759bad8ad1871b39c481bf3 +96de49b44bcd2f5ac3d07d6f5270af081776d8631fefbaf9fec6771e13d40a4e5158767067297029bd38e8c6847971b6 +8f2f820e8e3645f2ab9a27b3c23b5f656b681264d08e298ec546c5aaf51119893e0dc8e04d6f64fef48d3cece89692f0 +8de2eeac7dd4b53119d02f0ec99f127cbd8f6a57120d94a9a554c04467fa74ecbdfebbb111d9f15cdc1be2be8c2396db +b6616f68b00ea0fb78a25ecd51d3018b9ef13664a7da42663d1bfd6fe71fab615624af863f3b41e625b36a607bb42dc4 +abab5be2ab033afd6d110a340c658fb512bb53368886d8a5ea29e3c916a6b1bc46decb2cd0f508b5667f9dd88033ef7d +8872d0cb09df44c2a75895d46588316a4c9c743080f7a03a384bf4d4be80d341f8dcf0e208383bf3587a3509f3324fe5 +a3f57fda2e8c06fa7ce9de223f5ff56d53ce9fbc48486d88d2845e7011dc038b6f2f270dcfd46ef5222ae9a1557070f8 +a82c4e46f0d1962cb48d6c3d8ed3976c4fd4c174d119470479d9770619a45e6e16e30693b2804a82b516ccdd400508c5 +b53188c6b2907abcfe47fab98f23ac602525e05a5ac6b4421c437025819c80529e9d2d63f8a3c10cb9dced196e572506 +951934cad4c2772aa0ffdfc4f12a55f490824e104f669e4dffc70d9c14239570c87eb998dbb2a6d423bdfe1ab50f4377 +a276bddb27d86e1e70ebb96103a239ae4848ad20c4c5b7de85f480c3f293c934ebe35792361d9767de4333ac6de11643 +b9c8eccc03d7270779a87dd7c52a42c7bd632b9bdf94274b1dc864bc7a59e13eb30870ab740066040aff0beeefe14d2a +8e0908e4d15aaa582dc028e015c4b2bd97c82b8086737cdd1f2820641e65d88166d1fc763bc483f8fb4643339182473a +810c6c46945ad5b4f699c51130bf204e47c62066fbe54fd099c3567ca79aa8aa8b04dc5321c09e03df4bb7c9b93857ad +916d4b23adf202ccfaea7dd124d28573c73b39ebd74bf4dfe32a366f9dd48f4160b8cb0e687e7dca887c4b4f19570cb8 +b1b8fff52dbbd5b9bc6915ba20f3185fa8e23fe52c026a41cdedea5301dfcf6c79c4fe1058f3abf280a00c7b2cbb20a0 +95f9623510e12ddc6f4ae59d06448f496cc911c99a4d5f5c6ff7e434b807fcd4b35ec1ec976a40208ee1a505a892e38d +ac7217596d42d40380fddef22e83db9e6d6b2d0d2e912f868d7fc07bacfb83e8e6f01af544e8f450d31db014fb094c9a +b10855b8ff1a81ac32d81773ce8a6391169902290af0637038b58ab59fc84e3403d515ba7c99e26b7382c2e2d0edcedc +89eebe9789a333f5db0aa9e8604798b15a934ff45e19699c2e7fdb46b6863ce02defcef9f6dbd0cb799ffe2b669428c8 +b9cc540b405c5ec78a2d8fc17ee4a08690e347cc1d860885205bc19cba09e62f25b94ffc2cab1f638c87caf217f7b6e3 +b16d06b120906f085cb183a96a2b635334afda4272ac650259f23059407fdcc8b83e91f2521223f79769ba45428c04bb +83e0a2d9d9f6654d916a822ab1725d58a10efd64e889a17f44860db4d2c77ec1bdde7d0ec8deabc12f8ffa5af879d4e5 +98cef31d7ee167d9c4248e29402ea8d5546288d1b7ca54a5370e80a9ce371bc4aa3f5c7a24c2e4805d8c99af059b4156 +8fd55a0dc38b65c2b0b45c9127c14b9396db4898f14e1559e428a2951cb5076bff9e3f202a83236f15c1d2530539e5ad +b3252594c3060118acb12eb91d002a74c068c0b8f9bd735a9ecb082f787c7e046dd6e40ddf4b3ba56bf89f223bb5d76b +a88446262600f605fc4f067dca855ebc56990a9ea050c708961e486fe685707d9e9ca734068b92778a144c0f3c23b4bf +97beed96ba821515996045a40f17ad46f8f4d927cd9a2c7ce134a60d19ec4a5819a19aab1bb0df886d9cafcff872bcea +98ce98dc7908161ceefa0ac132b63c860ec2e53f7ba28e66c6c5e45c5945e459797c65668e58c0a5b8a26811f17c3f41 +b0419cef96d4d44fff0338132d53d2c03e7e9b4618dc2c6b9f4475368e21700fc08b844a2f140158fff81f56aef83b7e +ae1eba4a4a715f6d077e90e9efb59852b7025adced47fd9f705c2745e6734f2fd2f2f86f07ce24695a06e24e63f00b03 +86db2fd15dd3cef1e504fb057136f0405758f6fcadc391e6f64b3080f92bfbd4537a0d8f59cd1a0e913b2b188093feb6 +b418cff26800f8793b083a879c8b1823285f7a3cac6fa34cf48ac5355f04f6ba74255eaf436739c4d26d0d80d2607129 +8eda3c25b5699569c03b85bc585acf25bc3f9539e9dc3e8707b34520ae5ac53920f45528f0870d93f84647cae36b6aeb +a2622af11642fb6cd60cddcd4c242cf13045f4ce20539d11727e8942b4f9a7fd1ea2192e83596a35c096fec3658c0c2a +80735f92d09dc0af19f593ea118bf52146143c1d2a7343f6e2ab95e00debfbd329d4e887f7421e4a361d815dc1a27973 +a7eff30a31db635e239c8632f7f84263c9a9d82511422f49077823aeb124e6ee3c995ceb846902fcd2cff0f5f219db51 +99129aedaac32b3ec18d689a2589e35fc9715fb3f1a72d28a09ad95e39a68ea939ec5721c501a9e35c60cecb3f4379df +b9995d65636ce1e70967a8ffdf45e50eb264eb64f15ee887781455c5472459cbb309ab58b1645bd6e8f2bd29e69d81b0 +b8049f4c3ddc22405880bf55b5d5d94a6dbb071485f25a49a6457db0446663f8d4fabcf14106b9cabb1b3222d8786773 +b581027c7d9bf7b97f6eb085934b9caa43a46368cc6740139e33e4cb2c94683411710a52d5933a27c9d12a43e75163ae +b5dfce672e670158c259f36fa549aaacb0699da2f13702c81f5a93afb00361f9ca22d02dcebeaceaee6813a3c9bf7aa5 +b8184f3eb809be1986530dffd7464d84750df02196274955769a0afa02b65e87686d915ecdc7e75a0a76be8b7ad8d064 +b7ab837f300f4aa2ebd2d770f7a36dedaaa68e1d601eb36a28fada4dc73dbd55e7f31c88ab2835aeb57ff113a14c5f32 +a72013c811ca674c3e909064777df1484190fffb0643b6b1435892f5dd0f1d09579189fe00c862bcd18d03309b958b72 +87fb528e03f1b6a000141f4a6ee24a9738d9d2efa795cc262203fec10d76adcd0f89968a46fdebac99af8d048300b8ee +b2a1ca5d5d16c7addb73341ebed1f8e832250c2f8e03915a417064750d7deec3289e646c06a09c6a3ae40ea2817636a4 +a90cba4d0928da2a5d8c6935790e1a1f026073632a4c1460fe686d06c3f2933661c2b3c49bb0bbeef386f2bcc4d08485 +a5b684d544500be25136b0b5b95d9f363103a6d08cf49f4934d6c96d43720a79cdffe66698de0ffe5b02bb3c2e30286f +b246952dcdc38a500e64ccf4f312bc7c690d33a3a951fde5f839f6eec77ac78147f1fcf26ff7b990e8868f5cefe1c4eb +981ed33458e8ead67d4adeb884153bb0fee0ad98ebd9010ee706ea1da7975c290f82c492cf16fb42d1b739632e66e50e +88bdec223786c894fbd8f964ab2c92c5ad7fa7ed2b97a6bf31423a6ad5bbb5a946ae3cebccce8cc97af9e788d03f547b +ae852b074e5716e3190593e11fb17f1135d7a5d888986d2be53973fa14c1d4a9887381e648a10a4725291ff062c9d88b +b87050f914c4f09e2dfef845ace5a06504b6fdb815f685921710c7e82a9fac11f864e3e6023ed5807256d6269271d051 +8cbd11617ab819680cfa68e70e205f3ffecf6e469d88dbdb1d9b0c9c7c38746dd6e64bd526306a8ab59cb7e66841a757 +a1c51cbc1a91618b1ede5cdd77fce26b04971081e5cbf83be20c22b9b30cc9197b9bfd5998fd9ade9b665c8218afe94c +b5cdb2091d114847dc14a4c922bfe944021549df2d75cfc08ccacc2d740726e90e20a0bc2bb73303e9f0bbb5192fb982 +8e60327955c5de97f56838cdebd24c2ed4021d9e3d74ab9eefd4543a286c1be82a1e8455f8cfc0a17f03358c4648683b +87f9c1c0987493c631279112fbc79c5f5d7dbf46544119492785f444d063fcb0da4f2d1129735ab77663a9000d9e18ee +a970df3d50c4ef3d76d53dd2b887e9274fdedced7a83560eb1950fed2075879d9fe1d5af811f04ec92d557a0be0380f7 +95a69bf4092567f5b55a401329d5a08220ae65825f05d56043974fb7b7090372e941a85e2d197c46c9165031b3bd36fd +8e62c98171e54ff549ccac5d6d381291d0861439dd24e584d356a862d22942e0ff17cdc0d1faab07e496374a547ee812 +ab62d0eed8422a3172269de0e325eae9294914fa67f1ed8e5d0609afa2991a26b1e1b9a04ccda8436d04ec085957b110 +a3292bc88e2a9dec7b55ae4c27a3a8ea46a7b2dfe3a817675eb3712f95264c08668703771b65afcdf6d305e396d5f005 +afbaf9cc19adf63a0716cb868a970a372d7a1e24a4c78718a114ced412a12fda6fdf42f701ca1492a8f8c1ef0466f7a3 +b41a5f064f9d900d1534a68c74796927e4018e23f949d86eb76dd5b26e5b686115d63d858a49b545924b3941bcec2341 +b4e1ef520119f9a238fc4988ab2f1266606f53079744b92c1039541aee78b67ac570d7839fc9b2331244d734ad4637ed +b0ce754a33a506174d5feaff4e9a79295c743b2a122c8a1788c1427482585b398a750b7bd93cc53c38bd3e557caed172 +9842cd13ee9490d9ca7ddc83d1f7d79495afb7301d1f51f4b007dd2b2eaf15abbff18666126adc25df5ae26b98a80f41 +a976af142268d20a248c4b71304a878efec29b5022199cfc88bf82c081f55d06a89f178606d50bd3f8576f0c5c01a6ad +985ac6f315ab1d2db1b4f2b107eb1652810e63e36b8c14e8852f072d2c8b14922f20d1374a57d75cec62db0d050a0c7c +8c1be9e8317fdf847a8131ac14cedda922bbfbe15cf95537493c4e7eccc7f2f1a56ddd1a8832e6300734d6019d8b128b +b55d129c88d252556fe688f84982becce253736ef3b1fb88328e41300ed0713465c8bd15918386844c725fe7a94e8364 +a96384d2d81cf6a79614c7fd6bb68fec6e74064435a1a79dd8b1533e9c7e578da5ecf03e979969d983da893f42adcd84 +8c2b3c06b7249ef5ecedeb4f2c65c0925cda8877bb4b672afb7a15bb5a7b5818748d6b022c6ab8fe9c5a1499e2037c69 +91c8b2b8b204897741124a37f85ddc45c3ef94ceb5dff681b13771e712f2ba5ac95cb1bd2d3e94a84625d384b51b099b +8bf852945910e9a773120c5ad975f080c07c8fa37c2158e1138162a82983211da70f27e22876741d58c20a6c9dd770da +b9e907d9176a0fcba87a2797651765c814df756bbd1d0a86a9b7b06d9d886d1908d4e74ab27d618129dcde81e7d969d1 +ac4d3b156db2570c349e21f07fd17df935872f9687842035b533c6e4773ad5752f4ba8f9ea4501953f6b8c4232a4562d +ad91c4a7ea0a314d7d1ed7a69a74adf6ad810586c1bf907ae9878ee5f6528437c048c6ae785cc255707ea3e58a4b452b +8013b76604bda0c429e37006b01750999414100d0ff59ff5ab7b233399adaacb34906ee65054abb94db80fc92ac6d2e8 +b26a2a660af34a4b9b8910463d0dd439a3dc563494f5ec280dd5eec0b14b0e9426a0422f3c75370201299d394c4d90ad +8e1c7ea11dd513fb8527fa99b899444bf89a1188089d3bb65e3eb87025de9a48e8b4a3068a955fe752f2416de282ca20 +b6cbdbf2b143330db09841aa0e7d22d32772ee62006e7cee13d8c4ac911ff4a59a9dba3d84bc46ace1760353d847bbd3 +b8f5aa3ee213a44c41f63c11f685e754997cac37b27e91d07bcb69947344d94f3b86284b3b1655e168befc01c880d550 +89f93b37bda703494263b10768118ce998ac1f395d422c0ae840e47c6d649a3ec59b404c164a1ad5ed14ccc2408fc662 +97255607a1aaae89530a3bdbb7f2b7ba3fb9d5dc93509991021152dde08a638bb3152503cf0c896c9c19d61f8eea36d7 +909c7ecafb798e6aa45867976f59cdc9d219aca6fd0881f82f296a83a2a3cc5ed47f08794e6e3009f8847f16345f5f4b +9560fbc2c531571eee5b7389855117644f156ddb00b23a7c2189205d4cc613ec83952b96e941cc1e725c2b574c46ee9c +aaa69f68b6086bd369fd92355f3a0bc632c1b1b4284529c18a7cd4d71d827291bc997ce74bc92dcd6900419be68efb37 +af9ab7e6a27e61a99f37b89fc816974ff916b6a24ec3aa31d76579204bdd5ff01a2eea26e76188976c033db4af167db5 +b026dc8850af970d2ffd300dce6ae07db0ca2d21978e4f3a6797b6e3e81f1d9680465080a983c31d473a77ffb62acb5c +8f82f92ca992ac352ed1e8fe31d24f8090ce6a7f02d6086720422b9bab20f3e3c38a5f63c7fdb193e30d63f08e53c900 +8b896a2ae84c66109c8501cf6070c4da65c43ca8ef9b6b06fc85b6cd92bf2e5397d492796c528c7b2cf29ba93341a87b +961bf4c0b8068c8406a864595e156004d427138e06b390519cef53af8eb00c748bdfdd480521c6aa0d53a78e8f806217 +a6fa456250d20c6842dde55d3884eaecfe8a39f546cc5e4a77f57907192e849a956a33a81369b0f2633c55bd6608eb63 +b1d1d2f3e3e058ee97c9b6246cf073236438ed5e782bb21c68cd0d77b44f29745dc24d01edbce4437d93071b6fa6e0a4 +81a0bec80ecd1b1e72256ed5be7de8deb11046ead7a96e1d150573f4d896e642b4af095735343f6831bb6b7f4037cfca +b48d8e15fa8e0b46937637de3c727157f8073eb8a9a04bf127e68977758385a791da2e9c69fedb89b334fc638ece78d3 +afdee0774369653bf371b8820e285e1b48b40745a44d22cf2098b630b8ac95796a74f79337cb97fc60b6d6b903a61321 +8fcd9ff2991902149db29cd4674d60387d4f65397891fbf91b7699a42f579f6b0afdaccec70e5e82d1abd81de859183a +8af5c73367a8439b2e3e5f1b65e00ebef2eda640bfba2eae48582cdfb244e1b1cc540bc0ef72f9e24399affce1c3e222 +b58cad4da101363bb8d6e8cd0ec7c078f7719462856d7ea573e2bf95e00cc23020031901bd1f2112ffb90d847241e5a1 +a671f7fe2ad81e9e0d5e3260a9dd7808125dcebd970877b000bdaa3207ca45ae1e5458d5ab7bd69b2adfca8b6abd88d0 +a8411cde9eefe73fbceec3e5e3628b159ca4e4c19385ab50b8d7a482f4258f405c47051a89f11dbedb2b15e84d8bfcc9 +b5dd09d5ebb26e341b6df80e836c6de2305ce4941238e3e96da549857ec314b1658f8b03ef069633625b6e4bc13b531c +81bc9bc924039fcca8892b40aa9fe8f5d6f305343f6054e36647d5f14cad3e4d754dd6ce9ded67ae65825adb4e16df31 +935ec74c2dba94b1c5ef2060c31bb5c1426965f68d9f4125cdd891f20495da9d5dca513f65bf3e8c599f1562e81a0c1b +b9581e11f361097620130e753d134cce6d40ddc7c516388fe4c881fceadf738f314d241dc14d4f87be8ff0481e898c4b +b7be50ea49e09d10cbcf21b6f717e0cdca582d57935d72d17e62cdd7bf2071e5d5c91ad7bea79476537e515f0d2fa5af +ab467b7fd32a795411e991417be57af8b62ca199983efc1f744799136ae5339173111465e91083dbce60e77f9f2c0fc6 +b99afb338f747ae89e7cebf069612e22f9704f247d66548d305aacdfae395609a57d4d5405ff0f1eb1045dca4c3827ce +99a5e52374e1c55f65e44951f68cc3d607157e60d52cd088125a81bc60f2009d1b894eff8e1efb175509aa4b57af7276 +87e3323cf6f11b595ed745a9475a6d99d11333043d512bb61d5f9d8c3f0cb6957aa8c3f041688f63ac13a51df29fa061 +96a5f9ed28056138439eedba186b754f5f7693c09422f42ef82a315b7413b418c4971112f4261e1b9793ec9066c3641c +b9b5fd36d2d861d40b947c3c879a42fff24b9ee346163e544ce6c3301d0003cdb47218644fd5f1f7f0d6f19bf647ceed +a8899296b58e5d56d7da438ea48bd76310364ffe666d698c86f20683343663d742a0b3f8c1255e33f1d424cbf61bf1e6 +ac4be82ca78df2a367f13c8bd1cb73a28015853f2745e025626c325a10b778cf4bd9942439e35015cb38504bc02993c8 +ae5d6b99ef56cebd5e25a9c002e9e80c1d3e8e5fb5dcefc8ea7b7798c7e09b02147da2ba14e42e2b6db2b2a6a738f598 +8c94abefc71d245b0bf04f34085da0a9b8d4d798ee7441596c5166ac353425175dfcab0f76bdabab8f0ef5a2b453255d +960ab6939b1185806e9f985c9381206c7032ea8a7a99eae5a66f276ad5cf450e654a6f1e956a2a63f33d6f715064d051 +a4c7c7d0fce514db07bae5582f5e4f7a05d79f7605b33fe2a1ae980bc388b31c056438616bc8391ddc7dd5f98810c74e +ad5df00f96ee6e9e1ee65b562d6311c38bc2a0a25aa9ee36f39766a2a03141e95285dd2850a598385f45b9935d63b78c +b051de656e37ccdf3844a6e095d3b42ea9c5a545e0dc2a5234e2016570375bff6b55ee0dff04ece5713ba8e85629a7da +ac01fad1ac299567a22da6949a011f429bd9775de956dcdc247d5c186ec577fbc12a482ebff3a4ab18a8e35f3e2218c2 +9654db9c6b5e58e0b68fc49718773d44129a0e77bfeee3fb56d27c282de6b75fe9c10f4f3b5d3374443a9fad45c400ce +a556631390e6cecc2ebe390e605e6fd754f1961e4bbc063c31c08812e0993eff5b5b7449b9732bfd3a22c87f9c528743 +b41b7abb971e253dfec3aaec4443e875d73373c70c33e9ea19c1176f8cf1278c7716a76a4eeb641c142b2c6c1ace5db7 +8bf37cbe29245c5e217a48140d7f0374f46596f2e82c1144ceb41c9801211869b96d7f1d0f7345233abcfead0309cc3e +a380a799b80f1309ba326f26ee46ba3081b12b5a1143f8289b2fa067aa3ba80c3690fcefded8534a80368799b71ee9c1 +93dce0a2aee4d67efec1b284142d890d1e0d7abdbbfac82f90dcbaea94eef829645675cf17050af7b2e504a46d1bd288 +b8e90f54bc57ff52b84fa3fc3c3047f379c5587ca18d9988c613a3bfe614fd5fc381106729bd62eda298faaf17b10210 +8d8e4f508c284c52a6f907ec39950235c9443c5c6046762911f4818b98293d7d60a2c3f94c5cf60ccfeaeb8f283d8ce1 +a513b66299ba5104ba633cd68121b9ec848e0c8c5252d04a0bdbab5e3bfe6ceac93ebb1ee6f0274920d84eae27df1520 +80e2db8b919dd2ca33e833270738b1f437ae312b1c53a73106b6d12672a395fc3b941292fbb019d40e31b8e96bcb85c5 +a4c28fba416985d47c947b0669cc22153ce887ec54535a18cf457622d03120b6aca71a45fd8704166f6f7a9ea2e9d608 +850b05b9c7e168a83b0e0e77d16181a52d78aa96f4026c4420824cbd44dea9f27f3336b1736bd545bfdf548eb3f4276c +8efabbd63f3b9ae6111dceb1cffe45dd23f1500f87382816d4192161a77dd0776da2a4463d32da85b802ba7299fa726b +9426e75c6f7fb77072773a2ee03e1e3f1d90878fdb5d8c294265262f5c1cdd74a7aca339b46af8a5c43823dac7e57edd +a1c4d2ed335a3c92d867c5cb999b2b807dfb1d45e35b3960dfab19da43e2d1ca9a8748738380cefd137088d8b80d3006 +987a7e22092931f39f05f5a6b38f419750370a71157d4443510b61fe07ac5aa31cd7f88ea04121947b1c0d0419d2a25f +ae73cbce7cda7cd90404302388d41b49ed7d7f505a9a406f0317fccb29e32a5be61a6eb0951657f2d93abbb497be62ad +a1c7cb4056984c22a57ce76272428a50fd33f0f7a68c29c9438af05a87bec23d8de72062fb4829adafe597a278de0c01 +b72c81a9a747a83a650b58ee01015a8882789983b67ac4f2fbedbbf47dbe30f04f686877d8f118b4634289866aecf9da +91ba1797d6913270ac1cb9c87d9d8440a651e294c45b2301ff8c40416e58126318f0f2d411b7d9c09c8e19f4da8ca0ef +864107657717124339cb2ec06cdfa75fb9c4a7ad5155cbdd03d155a7f9e9026e237d7cf5f4cbf07239e7bfbd79900957 +87af853a334b8cdd10bf5f78753b27a0c9aac9f55db7570e2d9d42f13d0e2f8bfc4ca64b77b21e478f23385f17eb4f6d +8658227bb8733d6c7608d66a748caba761f28da4d95e70506dcfdc18300a559b4a84d11a9a048e82b292eb1b5d88bbf9 +b078413570ead3243b9666c109a17678fe60dd1240caf01d1d344de09e346015cba7a40560b0d68b18df82a0a37ca529 +af6dd12875a891eea9d846aa660a207a527d08f5959976f6cb7585a98b1133f341f4ae29157f6ea8e0500fb6b49fb9c1 +abc0fb42239fa531cf09f7288fb00f1d1587f2a86503593d481bb19b1159a6a9d6f4794565fe923a545d45b058d3a74b +b95966d42c59bb12029aef1da7fd50e9e8aa9ea287649ec3ba44247b185b485260af077e0d755f322ee4ecf8e2c8137b +8b1a2350f9bb0d6de377c00f0897081bfbaac5d47cac852a22dd8a427fd2e3029a1708f452e958a07236c7f35ddeb565 +acaff21e9740b831fee42d80a9a80cffa6673e39f85b815b4f546f538dcd803320f90f4f25436796721c8a11f5a1b25e +a0dd42f019eedba19f4345553965508aa9d2eb1499a363056d95e27f7083c2343e74a0e7dfb101567250148ee1bec1d7 +a08d1b1863e594bfcfa2e21ef4edee8535c8ee69490a4113787899ad8cf2f2ebbdea54de193ded85af82fde074ccd0fc +960912b621ff08e27781a4f9b80ef1014a4064fa3c96f534b67e5a094a5c11d9cadb2b69cd2011cdddb463f2936c7ff5 +b3437f1e0872f6b9ec071a951f26120f27425789e00c1a8d3183879ed02e3b017406c051f32580b78b4d0f090474b42a +a90e6d1b11ebd1f1dec54d7b3fb336b9a53c821f295a592e147d5fd453d66e63295a96ce827c4ad64c37d4bc0df2c7e7 +b357a785f3dc1f9bc1034da77033c0c64b29b78c7381ca59ef81e24ab14448d67dbf84756ea233b9e3539b5ed517d9c3 +9360adb42210abb9d7644bb95532e1f461464446e94cb5047bf8ed5513398414130630866b6980b6afec5401e608f6f5 +9145a7f8b2cf1bdd90b9a860051eacdb937189e8d68793e52bed202fa1e23a87db9c51a18f0bc050dfc3c600780099c3 +ae086e289e16608f02281bbde5a6fb2479e3151a2464b86ea737f8a43e15af4fe781312d0e5620a42a096cfbec885b0a +92b57fb14a0c567a16567f83e72b03b8b564ff6d830a5776014167cea06205579dd10715071097710dbf50b660b9143b +83e6a3f027163e635c2a1a397d2661a2d6c72c25082df129572082db29b1587c78dc3d2e5999112983a040ca46bc983c +b1667d022c8099dac5af4ce3b4ed6f524819240275725c7580a2386f067fdc9b3a49b74195cc6f661212fb07ff133463 +aa2eb0c44df0a80047eec28a80440ed5f363e3d42908506bf8418bf04e9c17a5e9f550bec9c8ab8dc9979736ce325780 +a2c1d257de1a55e4c10879eadd49af8950b0cf25121e8d7de30049360470aeecfbef263739262bf1f97020c6b025f9cd +af29d1afc9f76417e4396c54300773fd283f1bc2cb00308da5e6b1deac7a48cb117c0e8c87b03076c7a1b8414d25dc97 +a44d4f2186f5d728fdb224f10b496c9b57d96204325c452842423cbd29bbb2d07e98013a3880c7dfd63ede725d15953a +a30c45d1cdc68a5d5ab65b57d60c8b386be836c5bfda7e2f0347229b7807f6a97b632bf54ba3711066bcbd5e0831e5bb +a8c3c93d6a3526270ae47bc2628da82bbdb8b2c8e4d6a4cb5e9cf70b49999a963f3e856ff9db12cfd2575187bec668c7 +a03566f1a99f5b82e8243678d0bb033441cb8a2f160c0c66dcebd0b6922a56f895a69b94a9c65f4adc9ed73420fd30dd +a4e3c839a6f4f4317e7bd06f25c5236e42fb0e54bb975f18f0240bdc214780049f0258dae24fba6301aad508ef9abf69 +b7e0349d89616156679d06d1626f45dbc9683ad73ed91f0d92f8f82cb0ea2ae8d3ba3a752e73a39da70569d41e84015e +8c9ec5ff6be4b0d9337c5336b467c6d4f552af691bf083a23f1f9856e18b5a13852143dabf03869009febc443b2edbef +a12ff782575aca7b48844f0402a311bcb3e19514dd4d2ba5b39694c66846b22dc9ba25ea39c3c1bc325eda3afa1f00b1 +b55bb586ebf5c9a3c83a04bae254e22547f37b9090151d96f5d8aa81be17bb38d2763a08cf0519a91878633ced6ce0f4 +b3957203932032fe180ba9cb5347c2c1865a3094d03f6611148af4094fa6a8eae522f2651780d9bc49b41f5c36054eab +a0c865b498e30180c48fcab93342a50ca1cddd8759d6e0bb54e9f92e7b60c51c373f7ab1432aeb5e5c2d3ffcd79e8180 +9503ffb3529c3415c07247211c2a4f35d8ecef98ce9f921e67438ffd538caa54520fc6d248a081f46221a0f1165011bb +906deaabf6e8dd0c24a4b22757b7681bf88268d9b4ff97f2844f9de825af511155d0bbc48dc4c03b87007be94f835d92 +96c2a7f48990ecffccbefe128a28cd5b26c664b8dc9bbae16d857f7efc1b7711c734ba7d1476945d09ace569297ea96b +a37ea083b0a61f400b498ac5ba2360c22e40b688428ff4a02e3cc80206b61061bde037cd52d97eeca175394dc675e216 +89b15c3af439769829ca930fa83c47afe070f6e2d7a7df88e5a4f3a2c0630f9d143bb3cc43ebf9bbc1b91be03d35ffda +8eca6996ba407886d3b9d2e4b1aae1983023dbb1c9ae47b6637458c73ffb7f422b0a893eb0b07fea2c5172ba335595b4 +81df4d7f576930b2865af5ee1525718a09b65d9a013feafd19cad335e4e425485531807078b9564c8db3bad95d23bb0f +b6635aa3ca31c851a0283c0c6356235a5d8de9d1db9780e62087be32089c1c081bdc642f067224e88c14252efb960e3d +a0120e81025ba07848ef24ca9a94699db5274a8c85eb9c2f3b41a81f630d09d100127154ddc3270525961613a41ed81e +aaa8dd063f9f4f73f5a7c440671e1375ca8c224f8f869af736edcc435329487902249c68ef646fbf71c33a8bd1a04d9d +a36bfb14bbf3956c317e01fe744bd9c6c6f526a3881f6800592501ca1d9caba7f81b3b54f53b2ee1b13aa6de42ba06ec +819cd123fd793c0c9aba75aa96293268a4731c68c0a26a52561a695fc4acc409752de84ebd19494bae70849ce538138a +ad4e50ce325477621b6eb4d453b087c3d7df6e3d019ab41239f2ad0615c6030aeaf85e0e020f3e6c89e46b8586b4a347 +a4327072fbcf33be1e57ee4bd5db4c079c5ec11694a25fa2fb30932f8a2a35a63183b24d3ded7f6c8a8d0ad111586dbf +9454f17aa8fbdd2b15dfa6600ad305936a37b205eb554c915adc43aceb4dff6b0d1414e61584d5b15265f2ec0c85abea +80eed3725282c83dde575620bc0d86e50412df5dac3b3556d1e3bd9e7ef6f56dab202f4dfe4ce542babd49c1fa7dea5a +b90d1a07ff760daa23b7408b067c322f126023389beb7bf373f0c68b85ba0ea8a2c03e77e6d3339a01ed3ff8ba51f1f6 +92789ad894995ba07f36a0814fc3289810136f9dbc6c70c57ea80db464772d760b57d5b059d4ed458f256af7603fa2c3 +96a4ae1ca46d3b26029767e02fcf2f623d32c952712badf2a2af721226473f4875c40d5b14e66bf961a5a56aaced3aeb +8c5073f4846df9a0e057f52fdefe01a9b8c9ace91ef5ac253e823e165ae698e733eb936ad9cb04d2c54cd8570f328c4e +a9f36450b5ca66a20e52bc196620852a41f1f40262a2e12c278818b6071e6972c3cc6fdf83a9ccf586db6cc177173cae +8f101df23aa7e353ac1034c38adab8f20b8753aacabd10d70acb41d0fd0b1f34277546b30f64d0a861f448f112e38acf +b45b0779ef1ffbfa86d7e02e89bba0316c5ce60742b350296eff0d04246f1c8b1bf5bff68bc97792c85f1e5d4dcabacf +b7e89d015f6c7122a2f35f1c48b43eb0076ac4269158d52e38bf2a11de11cf2928175f717ee5c1bf543ea38945658558 +ade2a57ebd7600929dcdacc290168443437bc288371ef40580df515012350f3453b09aad8ae9e64bbc3fe6a3456f2c31 +91c2f8de02bd8dfed1eeebc40a422d444e3459f9c33476b55de3e950d2c38d8463c4edf4d4f95347b0599a48cb2d47e5 +8f6e77d9ceec539e0407a8d75d4e855e376838c0f886b36615a9c7715bce56a8669586f6d7cef75812d84b8be91380bd +87637da91b051ad92081e682e289bb904c51d95ee1a6ae2b8956982093a7bb4f8a66d91874265dc32229f9db5bd51ba0 +94691811eb74f2970a95e9a2d64435952145f1d0caa76040f9811c9ea1ed7327750d57d6e8dd63c6378f336421d11093 +884cff4ebea1bb48c0d651bcf0a710ebccab9062c96364aa64aa1275e9364a4c261e40a4b9f7e1e135572681a5a7a965 +93f21d4b6b53cdc1dd41cb1b80ff73c0f1620db41c35aeccc059128704e9d1d7da5fd3240e7d075a2503273e7525664c +b9afe0a9b64dc43fa78f607cdcfe337ac952fccfde41c2e88abe3a8dbb36a51b3445d724908e552ba74bf67ea2cab56d +910280ba145bcb6a99d89d1526f10632206d2ca9e1a8596e5d181dfa37e5f407e1264b9c71c39530caa59894c10b371b +a5f583c9fbed59f99cf5e21b9a734de6d5685b9c33931325dd4b581bcf5aa4764c2a250924e7b6f7931dc5278bd17152 +a87267f2ad292572a1cfc89308c96aec0d12e5f0fc2b4135ff8df7cf83bb1e71d619906d415db5841bbbeb173868ca82 +899d7ff8d7f8d0daf62ec8d28adbfe4e7856582a23e62dee175e3bb9461f38bf8e4f73dffe10654a046573896f6de690 +a8f3601e6787e788d46a9d7592dd4bdd8ea8b5136e3c897d79ce560e9511f6236e67a85a35c59295428c1f9c019a0841 +b180a16448f085227a6f3e363b0dbcab285bf419d438a13be2cac1ac9f97973ff6b8aee38294f70a8d72bb4ff474577f +869038341a2f68ba85f5b2de58d2d794584a3c00a76ad0dda5aec31d4e3ee433be20c197b40618f89f7c8f1692ea3cc9 +8366f825dabdf4f7714c5d089443d0de315198e23fb93c3ed063c4b8fca0727b05665c04beca145dc4c02f333e300c18 +93291da32b501cdfa3624b39f6e38ed982c75c1209cd85630cf83288204032c0a90f013f1dfb4dcedee7aaf0fd95566a +96c95a1e73016fecc3483fc94dfaceea376ac700fd4804b24e9eda7135048e521daf96f8f63d5a1439950a64296d8124 +866429fba47fb691a4c39460031a7e614096abbca3073e9246babd23075e8e5f6051e424e47d860296ac8ac646f8a283 +b817f3d9985cf9f9657fa800ebd36a9622566697ce68f91c509d9ad7df8146532e24ad85c07f399908f87d1206c7642c +8761c3755cf5440775fe00081f79dbf59829f8d400adf7448188b97f756ad35658295649294ac9626c2569ab21a5df86 +aad65ace72ef89783507c9feb5555275d70a421a95f306b7613c894bc24e978be809410b519e9314ac56fdae0c71d326 +8ed16ed07d0e989061db5087d50cebfcd6983fd54be5062e333bfb8f6f609bf1b7b840c91ffe4b66fd674eeae2dd1558 +af3919bbc0df42b1e2e8f62e931701f7c35cfefe3ac3f1985ddb70212476112e8a19d51c673da931777ffa28944306f2 +99a364d8819b5ea0f6d900167b60063f40f9afcf291ded7adaa2d0e46f344751cb312df1c2113bad8d84a028f680b41b +8d970bad8f95ced0b0323f4b7b087efd0624ce21834b3c9ed435dc0a394cc2c7ce58f1741c1a64265c81654eeb6801ee +a5f96a4d794f6f844b38f9b82ee15c2441cce293b6b2ba26b25643165236db05ffa918ebbe20aa89ed2a8ffc8df393fa +8ca69e0006f6a72e5abcc32c3961aeeebb8c0a76d877fdd8a093467485c19662b75f2ad8c750acc9cc12c8fcbfbe9b0c +b5378b855f6ed3eec19546cc21c947dd12e98783164d95a95d3cac36c89a840bcb9f7c99b191fa7730ec28d57e7326dc +884e50d5e20bebca96dda539daeb0e15edaac7fc88bca254a7239f30aaec47a64f29b69fb2d90041b82f8ad8e3f13d3c +abcce1f6149037ac8d27497831acb867cd5e05f637b7579736ba5c384b8145f127c56b82b1876881b782b94a84d32d04 +8747985d53fac369c4a23224d50bdc556c00f406e7ab3e38427aec317ae7c0feee5b48b9386c5764de883cf296ed1daa +a153c77887f271316d5a7185fe0d2bb7359cad86ba80b03434bee8f21b3a5e52263d28cb9d3d2e6d5b7443196e03cf80 +a77b16b2b7b6e999144af6c919e0a74b9a6ff70de41a133f7f820befc1261bf261142717133dd4a99e168a5cca4791e5 +b89beb83489db9fb62fa32d1a8ecb66fe9ed41d318820d13c3e07e1c97802dfd7b05d34652a478a1deb3b17b4243a499 +a80200902da696d0d3974ab29676f0eb67d15166b173fd63b247a17cc49f56b6ffa28d9690841ed4865229248650601f +8210103eccfd1f4be55e33991a831c50260bbabc1f311564fc1c52c3b2755d3e4a11ad69cd95e398dffdb9a0f5b77df0 +9958745d00d8f29d05d97875746d863007b1c05d3ae920794e6c65adb47ec208734fdaed1b49982c4f4cdd1d3043c369 +94a4f28dc7a9d2dd01ebc2f3ed11a5bb01a2095e7c772d2753c022d991da7b2e4c80c2170209bcc4771d68ef8cf007c0 +a6b5c5543ae3de57e074fac82221590a8d771e93e22fffc2029b44e8a1c2c8c9cb0362416de54d00fd5420e5b1375eb3 +875e801265871509c71dce38005ad6423fd027206e6ab4c58d2978ab4812d5720401c1310b56ce9ecd95241a17ce0e7a +b6819bc6497ed57feb41bd82f56216b513085b6d1a560a958adcc06a6da304424ee34ab2580604b0e59f6b0091ffe6ad +93bef0806f21f8bac88a5d6e2e6d1adda06f9daad5cc3c8de61162495d8fcc3889b767a3e2f3380f162166ce40a0ce80 +a1f699cd7446cdb1321a05f970bc70cc98593aaf0145a0d097e60e5897aa311b00d019e09cd533d0c0b7cc5c00a753e5 +89ae140ad75a83db2903a93a3711be90986d08dcfe962aec5ea4ee69656026dce77821993c1defc4464442bfe7d44734 +a4110c80ba92f545a1a7545cbeef997d6c0242fd4d771977192269d626b35c88c361df53bb36dfa8ea7e40da68e45f81 +906786f38eb7e98c431fa2464048ac3f1f1df8f908a25262978327224bc82168f564b2f3e6da77f49457ce49c1a72c2b +b28d92b3228547f03a3f489e09070ad9a1e20a73e49f7ada96ce41c19cd6416ad809b3a3a01f141b3698e85c641d795d +a25b9df9b377baafc8c735a772e0ed9ac007c0b6ebac2cc0f8f2e799e5e6038a616968c9896cea862e99b1750224ffe7 +8085eaabc79a2faf1ed0b9fdd017fba1e46c671c6d8ed78fb089494f792765b0617f790016d8f55697dd0f45d17de4b1 +a0e81b557af74efb95cf94054264d30396121312c643052070ab53eac8e75075f1fd0b384cdf1d96bd39cc98681b2d92 +b8e0ffc7548969ae28beaa9d8bd65872840a03150e2140dd799d9924249f92d962a0089171bf4b311520ab527198668f +a6188827a500b99af6eb91094a0e464e394c8c0a6d80cfcc5d8be89e8810732a03ca75b2befd00d07d1dfbe7dbe89be5 +a4e5a47c656e74107e6007199b940d8381f706d5bb4226a0b2fb13eda725a556530b8d4876dc49c5f9631dc6bfcc4c9f +90330a50442db9a9c459e06d42cf7a69e009332976c3950ae7d9981d99066fd2af22f22ac429850b998f1ec929c82bfd +89dcc51fb717212b2dcbd0fa0da189e194b4ad5bf7f43ab2cc2c96f11c186d0872bd930aeaae01661ce2dd9f94eefce9 +adee914ece15575cc34ab485f2dbdf3979406ce7cd8cd82197f156f373beee6d80e5e3623d79a2fef14b0b4ed1678a51 +87e97e8866002364bbe9b49c5f2b5eb729c7018ec61dff7b8bcee1c1ea349e5e04a3f3781617d46d8fe0e62afe55d62b +b6b7bd0bc652a0bf79aeeea1767f0f17dd543b9de582531bb3e14ba2bfe1b720a6c6b613cfc295372eab9202f5e2d340 +a6f9cd96d8e422d9897d50bf36288bf4c09d28cb0f5c4e13ef7f76cef6c75bb594d0ca954ff7339590cdece16414fdba +b9bc319dc5e55630d1ee8cb48978a256b69c96aaabb5269bed8c5366add03a2c38da11cb03a44e150a5c7f34bb49bcd5 +868c36924f0056b3464bff8831543a280ced62be748d60f82ac860c32025c4589e9354984e1cedf24678374c959383a8 +a6244602362c09b382926dabae5793ca4fc50600193c69e645fe229a471f7cf9e58c4a59124d6d2dabaecf50f1e1fd1d +b42df58ee9e20fce589837d5ed8a938eb83a00c6ffe2f6afc973f6ce26559b8d220976ea1fc18ffbafe739c92dda6618 +90c0b2ed8ed7cd6f6ff812c84ed297b3231f6e2106f2df6d5e4b4bbf5378231025582cf39f35dc9344d9fad3adf04685 +a968386bf1221425cee0d0b926689426fd77e8e8bca5ad3bd07298fbbeef4fc676e0cf7a4f29cf981c682a78a54a2d1e +a3a46bb7db36e0294b509036a40875850ea5ce4e8853cc0a7d85e8455fc2bd7d5b593879408ef2f3b2b2bfa44aca2276 +af825963207f046b23534896086a3e56247d752982417047f850bf306d0cce285b537508747afc700dff6472fe3b5569 +8022af88981249b5da08ccc19e4ffbc35feb2cb5308b34064de4d5bfc8ff2b933363988c833ec70723e3b5107f8fbd67 +89687fe6e424c7f0d2751e5f7838e9a3fca4c0bca043806fe511442bbf41cb67d01165ecb662b1ece1b2adede5a9537e +99c925763420fdac4149a02131831449c1df8be4867a6d2d09e6b14abb821d46bc1fc4fc9aacfa4e9de1a93f9b56fbcc +b819ee6a0724de9c944ce2ca51ffd3f1d93c77ff25e39de8be2a612abe732dddbf2219e839686a4373609a560041291f +b5eabf12513e91139025f1236c7ec235368eb8586522dce04d370acd3d854c1e6676d92014b60ea3e4e21e9d6f063f2a +b82e94f1013db6cc682032c7760aca2a1082826d280801aad9c6564704362e61a61cb52c6f35f769bd8ca191e68e0b0a +95dcb02a676b17f20b75632c7a9060f990e44b0c1fba84ec8e633554f875ebcf6e54caeb9816267e84a11808d68728af +b0c7c401dcc019d2108eab7e87d6494e06399f6eb4fd95b8ff9ba4a56e549a3d3a4aff13771229f4c456283fc3cbc53c +b1a8e3e500e3ed74bacf91a82b39f2b870963dec0b98b7d5ccefa3212fc9f3ef923101887572e14d08145aaafa8da5ba +b2caf72c47870ce9f0524c4b3df6ab3eb3695765c010a27c0f3cda0ee1c1f5bee64e5392ef8b3f0f11e66bd8c9d4630d +a8fb4864bce5f1c48d681eb37efe7d9ed1a83ed36bdc1f2627539b92c90e100d4dd64ab664e404b0eb7b645a8f95642e +a1b6164a4f0467444fd56a1f4668c8d1f295f6e6f5191355dcfd004c34153317202823d72162b621f677c970a3f0bfd0 +b2cc59a2f6f3b7e18064720f93b28801fb684d98ee808ec5c04a5235dc40372aa0e0521410d8f736161470443bd97ed7 +b5d9a823649c09151b214406189d75d7f1ca150cc7431d79b7d60348b6d7405014a44bb7840e35f9c0a634b4c6785561 +af6b8229fe035cbd6a5da3a3aad93e7ca5ed233dea5fe4477dce46ed17bac9243ebf25a8439ac2896c41baa671c0fdfc +b42d9023551d999d2be3ee51f6ca82c3b2d41fce51e1dab52095af6d4b59edcad70a1f9b1e71eddff894e3fe35a1f11c +b868543c09fa9b9b990b276ddc5b68a2415965d3de71b9ac538c26a6333543a7c33d0b432f57756ac0077d0021878944 +846577a8c877461a58a94c5829f2ed9d7ed107fa63a48ee77a1ef1f1d1f940b2605fc742cb5ef849e3cbfc86942488fc +967ca22cc8c21382b15d73b4dd4f6f0a0bdb2056c21e3c75eb3d9c13dd41336672ceca03065d8cd1062389afa4726974 +8e0b872d766c439f3f868f18ef0c173896eac883783dcc58917f76d5a2e8c291967a032d254450fa7f9a12fa7d7a4cf9 +a0236eb36a4ce3b7d649ff02de9279d364ecd5059932328230314ecdce3278c42cb836f547bb9da9de0fc96cda2fbc7c +92eac5a5a88648e6d821d3bb51b280fc106f751d85a1742a6a1ceed071eaaa215a0a0238492ddbefbdcdf2e38e4149fc +88e1036f9b20a2c4b3534175c93d59c1ade3fa6652a4c5c490f21f6c3340769c7f8147d53a92fbfd84c23d7c4295cdd2 +8b094165ad429a339f12696bc8967ca89ec47a4778f387e42e273a1863a38199dd795d120d198d3cbd93203604c6914c +8f8013229eb6bc6a8f93c17d3b4a1b206c258f14091c6dc39cb1ec492d403cdf5f696070ef5a6c0ab9ed4ec141b08d73 +81c7ad27bd7a48b444b2be3d4b5d4845743d6ac4857b061e659d7ed48ebacdeac29cabd0cd163f3fe6c5cc28753148cc +91c8a92749183e3e6f3499d3b0e9b080109d5e88ce8acb03b35f3d04591e13b4c489ae323a149def1edaaf62f93bbbe4 +a6a2d69f012d877460c33095924771065fdcdddc30670ea84576b72dd3f7769f90d1735f8914b6841c7d938a2046ff4d +a8ad4b976a5e4477a97d48a3cfcce16b358fd3dc1ed1df301fad6d6f0e188782c518796faf1465e52312b47bd713e2d4 +afa2bab9363187473a85f7020106b176903bc3a3e3df1f4938feed5145b79b66db8aa608cdda554166ec47e60fb34b95 +af691bf473160cfb84ea517702f3c01daa6155f31393d807c897b39523448c5af09be581ad713c76aba194f90895cd9e +b74f3cbc198c9e4b2c7316fffd57fc749e367b7d1cf81b3f5311d266c9a3ab9598075ffb9230dceee230d5f1bbe3f796 +8c28d21c49a15299f7ff3eff7568b8450e6404a168554b8965a291c03fdbbd3dae9ea6b9760869cb1f2e8c7206183195 +a496a0df4e79827cf3bec117b92b5b248dfe129d783841935363362aee4822399974e6c03a92797b3ecde80b207fd7c0 +b39fa07fc8f4be41588ff5560ed68a33c3020bceaf172fd11e0c1288ea885c6dcfb56a151e4773e57d864dce06fdbea0 +990cd050ab056ea447c114217219d9c0c7526803f63952e22ae60a3996608bfa3c6119a56befc597592761e3a90ef448 +b6f02dff3dc330daf82d1edbd4e6964d2e9c38481e74cde8d9d85a9e602ed22c4fe6c9b6f41ec76582f0a4e4414bf300 +84440e4a7146ec2f34e8099e85c09b8d7bf505a15638aa34cd2b42a20f1f335cbc9f0e4fdaf2e53fa0ebb2dcb00519e7 +af389aed116fe58580810fc474eb15518dcd9746f04a7efd2de44c9774824db79f8ce4c4fa108e7396e1fc016132a402 +b202985e01c62d0de1f6807fe600a3b81fd11f30f5aa033b1e7baf7a62f34fa5342d42ad6a6e309560e3e9ebc662920c +8a07641140db9701c676b2c094c24cd663a5a34d3534fd4f5f1e38ca0c46772d141679730b5d0cd71d056c257d9a125c +99dc01e76174370a741e8e9ef5654a3a7769a010da85de41dd315b674ba8786e6a697b74a79ea782a1fcf74a48e51775 +93fc897841609670a1eb88d4e4498c54e286e25238309fc95389b16e4edfb82b8ee8447a436893c7180827a996b9a0f7 +8e2dd561acc8954a53635c0108ff964774fe98d12b28a0c6ea8b5ec5ea3523a45b81ec642c1453e3b2a1c0e0749562be +a95b0b7f9e53720f4b0394bb6ae8222aa5be00a2050f59ccb595d50e0dd9100e397af9ea77b0335be02d1713c361357c +8e21dcb67da3eaff5b950f989939237e3735a31e346e1bec8e6ca11edff5223e33c1c6f2f79da975de2fd86dea286e1c +ac02cadeba36143767bdb8cd4e1caf8cb287296b53955f33ed07f771a1fea521fd64b7e153c90d5e270c12ab959cfd24 +af95bca4016b2ddbca61c9c854cf999ed59ab4b5d619dd55460f20cde5ecc86081a2586a7eb37f15c20280dd06b65809 +b7d7c81261e8c6a8983442e1e801f5072bbada1eb2e49b8e90759dcad653c52c0afdff9cbec41bf21cfe832e49ef8db8 +97fe8c6d071dc80355bf2a74c15ecb16c59bc042eff323e999f4fdc39e1209803d32622c642ad25673c84761f0d357bf +b37da716119c00a0955a7fee59b93185a6e325bc5cb2a7fb35681fca0688d0ad2d25a0e40dfdbec1a11deadb1cc69d47 +afb8091548179fd2a17d95ca47909d97866e4fe54099736e6414682ad083fce300e0a20dfe3a017c1ee4ee7d271bc470 +9306ba1f3f2f74964dfcbcf9b87bafa44b5e013853c46cb501e10409f3c2af7269aa17c8cab261fe82e52a188ce0d18a +82430e3c25970411f40aa72ef1cda5b2b51bbc7e243a1b4951e92cb56a2f5b200a039f5554d0d1bb44330d89d1ef8840 +aabfccb8f3dfbd4012b9d196448e83f17bd1ddb8c857dbf98e80ffc60c1af3493ac5c70e3a2f1f26352b1ead143dee87 +832cd6dc83380d068c068d815ad0f4677de0ef602890835b8d32b73223490a6f753092d651968cb3d798cbf2a227960d +80e3e7f0c46fe5d962322f3fb2535de40dc078db80e7ef57923d46b742a8e4d6dd35ef74234f2b1637a317364d57abbf +9306bcc29d6f8a478ec085b144161850afa29d282cec756d0d3fcce6f4860f4a4b8c8a5952cce54ea893cf84abd6c4fb +9234c03bebfe6b47aedc7c5452058ca6a8def3c368bdbc9019ef121ad44171d6b31d9bda9c82300b5b396187324684ec +abc2ec6016ee252f5693558b694eeeddeabf4579b7e03d37504c26ecc29263e455ce8f0158fbfc54135600b72dc54315 +b46fe7b51df64cf46888a810365f891d43db5b34ac4d3505f0692603adef04b1d08eadb3e31d039817e7b89bf0789802 +988e0dd101bba7d7e4094cde99eeeb6d4411341e684fc06ae78d163d30c4b585375a868eda7ba1e5495ee7f0a7d509e1 +94d3033ee1926aef656b31192653d3da96d5c533ac2436d68fcbaebf827475778689ecf14fc53042a523e4652fb9d713 +993b598555bd2a35e9a03f99950d09f55a48ba63f9e0e65802ecb95602d045001f82f25c3bb60221adcb8ab4e2709ba1 +a0acd921ea7db9870716acb595c65a934a5a06a07c6e54cd26efc86c97eadaae1522a4a26c8f93b7b7cbc4746ecfc21d +8dbd8f492764bee920e0224dbe39d650be6732b56976a5e1b636b2e7371c1509431175b66c6ca879ba8f915f9df8fa36 +a01b24c1e3aa044cd2598032950755763345534f95f6f71d50565d25cbbbdf9c42e35253e35b683f6c3156f5c998ca4d +b895522dee1ec9c5289e6fec652093519cbbdca7a2936fd1df3ef956eb404f1a24272c9ae6ce58eceeceff36d76d34d5 +b91cea120e200858457a64a60aa876f167b1b88c1dacd9988700b9f0f0d1bd1dfdd8dab56c2e7197a174b7b8bb8422e0 +8406767e4f7cee2e12431b093ce82f633ffc76b451ac8414716fc74fbadff30c52a22869607d5de465d0f4df8a740343 +a2cf431d18b2fa526291c7027d59b18cbd73a9b48d68cfd6e4b745d27774941af809edba06c8534b1864045d6fc1bc20 +ab3fe23aa8c45ab2efb2ca0c593c8644d3f47f748c2f753626289b0b9c761add755e3b52521ef37fd609429b2f8770ff +af4530dfc5b3f37888900d9fd08554bef4e47c4c09a8c82bb48c4b9c6c9089465f98762d81ba4272b6861121b65f3c5d +80f61d086511b9b8b2033921336a68adde99cd25fac71d8f8fd0e476dd30cdfba49363784f0d0578c1f648f93ae23f8f +82ca682cc254952330d1be8c0e53da24aa943ffe0209b00bbf046e1e4f9425886a01d6582e2853137a9c256316e6f737 +ad1d508d2ea2806c351d5bd1098c46ae7ef83f4e49e4e87f83fa2c63f715ec56109996284a541c2005693687b4813623 +9061817ee94bd2895064f4af04777b499a1fedd9688ed64bdba848202c3cf9286b699c92400ed456db926ee23a34f90a +a8bda55cf6f3f9edb78b43a52b7fe76e5cc2cde21e08487ea597cc266e54700ddcea1a287ec6d8f16b738b67caa27152 +b605576e55d1fa4fd9d7fac2ce549dfe23fd6ade41fa859bf809baa3f1497d078cab06a257ccfd6cd59f67f17eb22f5f +a92d22ff5b5ec6dbb1d57db1b740521e82b4bef84dec3e130cab63d0641c3a8fec1f6f86141fb1918dc0f3fcfcbd8cb6 +a0165df8dfd7b3cb58883768471cf485b886ece529d5bb78b26acf9ef6c44314cf9f34914233c93b10b1918533dcb8c7 +88b79c9c721c1936fdbe22d68459d1033fdc986d3e52f39341ab06cc85a3f230ecf0965ee8d2dd54496981fd08a02657 +939b77fcd53a523240bee730c2d7b8dae0b32bc3dbbd31428c7b5fdb4c3d34afe7f2a377b2918497574606bc06cac750 +abbf82d0156439761b36a913b661e3d452dfa57e443ddb61613f80e110acf52765139fe3d1dd59c9e7773b262140cb90 +aba28324844cd19b2d5d07a87e6f3180a3c02c7326bca846c1e7a7c131c7ddbefeabbd6787b4e1e910449f3cd1249ed6 +ab2f71af8596c10351f7ce9c3a9bec08a5c7837cee92a7400826284752c98531a0199e2a7f9ba7ccccc8fa0a2207aa43 +a71d5a4f8af3a16ec9c3c110ca2135c68103109d4384a299cb7ed09d96231c90b04ce34ce12de02a40924d84947f7f31 +b9dd79bf3286ea08c9b779910c84fdd02a33dbff7adc2d6612cd58e81aaff3f64ba021f875ea9e1201243ce353510350 +9838fce2f70e7c47dca7239883229c1573ea97d469f120e4af659b18bca31cb68d12220fbd6e4e9e952b28eb29c1e5ee +8dd341e67e4c567a4ea95252854cfff8a7631c228ac852b33b2ea9211b2a6c606e4b0db28afec61a1a55e6b5f0a6604f +ae9b02d60441859e3e6f3866a9bab8895f0cd6168f8e84dda7c9b1cd7917f1c454f10aff9a8de39909e36576bc0b4828 +89fba7834469a06cb0da39c39a288245e577fd956c241707c432c2590e18e956e8ea3f67e4bee5a5562377617af53334 +b7ab26d79ee65eb9612e54f41f75e22abd83db45010e1a94ce5026a24675bdf670e806c71f0964a33d6ed277d464732b +8a25bae10ef86d7e91a7d686965d17fe16ed635d787d4d6ca337b10ea32082938f4354620a72b5aa43ae62c7a0e751b9 +b18fd9213bf3b2d7d191266c7bc1c31f683fc7da7dc5ddb4c600e1ebf5fa80a399af9e31b4ae747581a07ccb736b4b32 +9968346d8a867eb57f628e2ba00f69e9d6aa8e713377a69413323b1b9b26218f527c0e719dcc1027daf10c3392f59733 +831ee266686776eae4e3de1f2bc37761a5e1b918d4bf0bbeeb20b490902ae97722bcb1c98c485407491f248eecb841fd +b0e949d7c50b852055f38f3542a974bbfe7a33409d67c557d70c1204f87265bd7478e1751251792435fa22097d1762e4 +8b0bee83715e20f2ef832347c926249b5b168e4ad87b2e5a9149ea4e07513e4790f60b1769ddd1816d7126a0f6fdbac3 +84edc35061dbe8f3de90c2f9ace94be5ab4170b66c42583a0643ff776256217bbc6fa31612e68bfb9ab678f8e8e49457 +afb4ca7a4781dd31a7d81ba8a739eb65c43f3374e76b4ffeb2c7048b055f837e6853b14ed2d3224a40dea35799f0e4a4 +9945fd5ecdda5ac952785310e87917126917fd4f504fc5565c236db9b96f9666934766f46a1989c1aa176e543c6e33af +a6d4466b53c48d7facb9cc33ced1bec98897e545b10586857e896d35c850f2cdda65e19bb934a8c74f6def805b1df4f2 +81e3fe4330948c279d99a8a1a4e4e141a039b3ccb7287aaba6f9041c3a8a41db1a4763fe04a36bdadd3d3295becb9d41 +b6be2ef16b60a78b17991d27463e401eca731129843021e302830c2fd665726547240ec3a3240586b01a05ca8206dba1 +b9d7fe5671b220a3da83bfccdc16c0b6f5e9e5c87810db14f070dfee582fa190a360c62acff13cd877c818d705a8a872 +86867f22bf6b859e7f0ae7724a1174a65c4902cdcf74bdb22415875d72b67f49c62ea8bf9ed0d6883ab76512ebb951f1 +ab728a8167b9e82d608d4939a0712f82843f624d08d4013dfd3de41bc526e9d495cbfd40c443f67ac59dc4b5f30ff217 +a5c4d10a04452c1ad12c18ce8ed7eadea1f3cdb34fa5ce0cbd804f5dd92eae2551b771523e711e8037770cb66d1951e4 +8808f69b975f363bc08f8578729a6e68445138dada78d5818d33fb83a7af6cc6e7030f7b76286829861a4534e0b30248 +a280773d32e1ce3544d3ba5025896d21e358592504737de72ae76d164009fdad05c8a1e5e1f8658ca6374b347d47c29b +ace91a3971be87b1ca8e737802918d86375088e74380c444751c65978afba2b017cbd8fdcd3f9a0c19c0782b0034a589 +b5445d816d65ea36c9bc6a3d5ec44ce6b76dcc18343d7084567dcf2603d2af93fa8469a1c493e19f1853c96f89621fce +a238867fce5b09e8695240f936a3f3cb12a715511b7516de995543b2e15aed8860a12754ac8d1c5ca2364e4471a9c5ac +9467528341f5b93b89c7f37c5dac8bafd0af620230a9f7de3e809f01cf73b8ddf70c38c5023a631a1978ac05ca35c318 +8e5f1c3c411f0939ce4b6a5ced42172fc5c3774f596a114e7c5c8ba433c4efd94ca84affc0bfa89a1c5ace5090276a43 +a6351818f7553d446cbe8d3a318841b0607d1f1890ebf9c6220a092bad3ece9ef8acad4d17935e437377af8f9309606e +86630d0fb2bc104d8cf840b0e545c0c149c1a8e4dd6d460dd15a52a5935c8ea5c934ef099653d783894a6d1f68414a84 +b357b5d9cc645b645fbce2020db583cdb68772751d6d11d635f1e3ecf995a55bc374be7750b6e8bd4968a55600ca9806 +a9b659b8cacb73a81093eeec42dd7f4fc5d955f9fc543037f31bbcf456af6476f303aaf0ef960a2df88365c2704bb61a +8b6ff5201c15cffe64bdeb818422fa10dc503ef2a6a4d686364afd0f35b6473e4463719173550d234639f6077e19542d +98efe45bca5ac679cadc25ad0bdb1f8deffba13d2d7eb14c6149d5addfac06b82fbba6d24b323d615eeee1465b3cc30d +8c2329c976d78f1d5e30ac34a3fab1f96436947d85f0dd190301a1868e5dcbe4ce60f48fdeffc3e6a05ee34a461d7dd9 +aec012ad25d99ce014101d7da512fe032673399526435f6e1faca4b63759e8f6694a46ad01672da9eaaa4634f61ce89b +b8d52e530c942c3c7a67bbd0366f4cfdc6a1a075471878516b7a2258aa073eba50a113cf433879a0e15462e82087d17b +b40c5ce16f94837c86e81d98e2130a9e1dd229da5aea52e79cb42217d3b5908a53d76782cbe3934fa8769db58b00dee8 +877300304eb69720f7cfb4f907b4a7e238920fda129a38516dffcbdaae2e46633d31080590d6df05756781224d532fe8 +973632dc791a5214516c3e59b2b48169470678b7dab66d513e35a0fd1df86b992e27ffe6050a5233af20b5d4998d283c +a8ae0e723a8ea6e95d721337465a388b60b92b1d9b1deb0b9f59ea30842de356184fd55d9b8331d8a29ef473c1ac2315 +92ed6cca30f76135c4b7e7893c3460501e92592f7d2d6409c1e1d80074120243a5b9ec14d801991204f5ec4f94ff1daa +a9f575b8518dacdbc5cae766389ab2ec01c876038414b7796f640f633367a5281cb49b48b5e80f6416a33b401c21309a +b9793588283cfdd47cc4547cecfd987f9f8f92c2b408725f39c1d879199d695e87675fa7e5a190ab3bbc97683a0b9587 +8329a844dd67dfd48546791c4330af65501baf9524ecf8ed4fec9ea87067d0afbd33099052c1c2df819ca1afcf25dfc6 +b908eba1b40edc300b63ff6e20e87b17e6dfe975c37ca63c92e8866968070a2c07204264646bbc9318145fcb90c23555 +8123871ed78f46e9eff4fc7af9f490594fd7c20fb814e505481ac5c7bc7588c1706a79b14b85d29bd7b97d7c82b2ae79 +833ed8928f154fe0a88ae98e5d8c74f816e3ad679c1c4ac1322604093e85ed4b9b9c4361ac188f0da5443c72ee4bf3d4 +b9fcbb8a422bd8d996e713d176b7e63edcc6d73b3d1fe3f2c4b59da637a168accb5fb4d227b709f979742cc0af8c0ea8 +ad3759a6a6bac3047935443347e3c63819905f6c01f58f0ba76aab422d723cee10c769663be9554473e668bffde1d500 +a60c1909703211a93d7b5e8b8ec1cf4ca06ada653c27696a7dc9a2ff75cb712918888c6b61b8f792ce9b413aac09f48d +91f05985ff17f9ae20498185f6558f9f38b67966876dcc6981af4d179cd055661adc63155f4afa6167ad61b7038ac49f +95c5add9bab6b9792517772f9f8b21bf7cc325dfd13a43177b0bd982d0f620185d8596c2cba46a5e10aae597129870ce +ac0b4b6e2b3e417166ad9b17de0b3ba775df6ad3a78ad13a1892c0992735ae54c06b1e6123b0c0bc90544441630c6a1b +b0135c25f74ae776c241faa6c91a3f7ed6138d19a2100928b7ede64b79e177d92c5cf921dcce3c614e32de34975fa6ca +b2215b560d5a36f045de7257098e9d75a40122919d4726990b4395eb2bf1ec789cd0c64c46b775f6a8be28f23958e17a +870dc7f7a513728f2b428a3c08b15a6af88a288824e790f41b1190fbe02b59dce2914a1339f7203cdb7f2f9c98d8d721 +8e3895f03952cdab36f602418cd746bc0b6a07629eab0a20bbd8de6c993030c5287fc146fc45fe97a06c992e0a9ddf02 +a4cea15ebc0dfad9feb3d18168fd33768e8ac69e263263ceffcdfa35e8638711c2971697b7d5b2aaa0fd8c5440f3e164 +8cfaf5369781a59f4117283fd3f290b81816abd3124a9486ab1faf7018d36a73c1630efc4ad648ce462e541827d51975 +82b420eb25736126ef18d91e91ca2ecaea8983b8091df88343e8e54ca5ea7a3da6918c97695cc0cd5c2df95afb1e3cb7 +b3c13923a3d46d990aaa6a1eff3ad32f162ccc5186e16a549dc29ad4d63de6287cd05579452785cab32e2485636d568a +ad8a43ad6195e08a36f755dd536842ec88a7d920bc302451c860444a3fdaf294e5b5dc5a122423474d322af5de8cd8a1 +ae40d1a90a77965366b5b5ce87d6fe86eb255cc3d127526930d128ef7763455adb82475ebfb7be31f9c512394f2a22fb +9763bb9459fd4c0de2534767bd99f98b859030b6af5739a7081d889d6875f5c23f0154c30d00b7240baf6450b4459987 +94aace9e9318d79d3c7ab533baca31724bfec839b01187e326b1fdef846968b1b29882f2520a9e237dc41ada01bc3761 +b6084f9e0051be76244ead401e8d2758717e93c4cdac58443261b3603cfee0eaec7d758b2e4357650d2c1f5391edf798 +8c656a798fea470163e70869a13edd30d138bc148460d122a2275df8cb43f2b45a14e0d8a8a49eeb7c1afd02484b6ffe +8ec317e63df2881f49401eb2f6a82e261b07474006fc293bbb54e0fb7437697b16ec1d6ea101fcd56543bf4d69374cf4 +b27d9b3b8c3cc59d08159c765d24fd4660bd0a54b2b7fa9fa00b47e6770e6e8d3ca353d305fd772c8171e20765c8a66c +863ca045abc38ceee09c4a21a3dd18f1c0f70c0289437957aaa39ff764760bc422b748bef8ef133ee28d88c46e6be1c3 +b0de194caa68f5288dc365faf9e9ca3c69b0a8376cdb532cd6f1cc3478671a1e755d0e8afbde4e3a88440fd9cff4e8f6 +8a259f48cf5a45773522f3c5f283a6c01a0febdae09f873e009e4635c57fe5060b01243b2e5e1c9d2ff7490f2dd3b334 +8c4398e1e579778c88976ba12feaeac0c96fc97b4e26a133ae74fca1b9c315c1112ce3977d20fbe9ae5866ca6544fdcf +b54b25aeebf1917bb4981b43f39491918773bacce37e994b74f877d4a636f1b3f4a2f164b858f95259f285ca0c294f24 +a9db33b15331e852da3693f6328bde30b8cdd79c9b9b63107cf78dedcf14da68446c462720b9ffa5a1bfdaa68f5d931e +9966b6bea54405df1dc4edfde9f8c3ed7c0733d5a73bcd8b349035744d5eabbad0d19801a678d48cec84c0335346af33 +a3d0c32b5e3036c4a4b222c13f7db23924bc2b2f724bd908a38db3b8f9c95cf5034c4cda0c5083c0967d34061a216b57 +92ca6b883b2b20015fbb56cac4c4b5ef22e555a9b75f4f020822fba9167eebff8f9fe5c729c574cfa5ac27bae1a83fdd +b72b58d6ddf54c2d37bdc1599ac966c54cb4926c8d2f70d1bd4cdc383c6eec5e4b87efc59466682f8db964d80a4b740a +89ba63ee57a1e6f13d7c66150a8d6721329b385eed92be3ea784eed89c76a1ea88595725612b109a9e4aae41d3f6c972 +8727bb53bb62fb714e4e5de461c6cb298730641e38a0b49b3b3d4a29fa24167c7c6f4ff47f4f3b91e464a581a4181853 +816699bc7c3ed65747d34786b7fca4e35e79907f459f2df0918669adee54a70c03580c4e7d2e410ceb45c71fcadd44e5 +979688c14ce623dd17344e67373e5852bc1d3ea12d37f7b28095e5d578d8c9c646e4b97a3a69a97764ed0a88f62c99c7 +b4539a9eb6578ed3b8dd54cbf57419e99b69c0ae1ca3ae3b4a21f204813b2a78438d6c72f86c13dfa06a0b9244b98688 +a5d957181c30701fe6eabe3e65a53a33dc43df364c45f0c4d882ab88a069024bf04b71015f1c2fbf03f368e63bd82fe9 +b9ce9a54d9b17d4da41ba3135d077c546cf39dc83230506a4ee88cfe39e76f7e35664ff1b571e231054cf1b764b9267f +ae6bf2eec8046137016ba94442a7a0aaed0924ec1558885135fd339d2996aeff31ac29f1de07e84f7b7391fc5355f429 +85c7c247766a4ca44278be81752f4170dcc069f76992b236b40e71e31e08f30de6a5ecaddc44debe4f94151cdd8d735f +a19d41fcac394b750248e575c300b9a96dfc5b3dca07ad6e1d68dd3f8ab94d10aaf8edf500e3fc7774e7ee52935f73ea +b3c959a22fddce5a2e199bc8724e825a6d9776455c033299b5cdc9a9d184be169d807829d5df5e747476d172b5701cca +916aa7bc58f34bb8f32808858cecd3e90ea26c3ec1f80a40e863ba18fe9af6e67c0b2664a2274eca6d36ed72e59a9341 +864d945b7be551926f747406d72057c7a141110f5d269fb6657cf347cfad7178670dd294f6a98c19dc0943a68d7ed45f +b3480f8a42ba0e8eb020c2e1c1284a8a9102fa68b43f6eaf28e031621b9f68bc399899e35a1a283fb52530c8574484a3 +a8cd1cb93974d1a6072ed51f356449ac19b04539517cde34bb7b2ba55949d213ee07d387ce7b5534175bd8a044556ff3 +8e81fcc5fa5579f2479011caaa393f47a4e12828e2e82072736d85ba1bf70ffef9fe3b2c22fd11ce8eaeccdfa2579758 +897f935b4542b9ccf8c0660c8fb1a570a8ba108fe8440e17e6c50e01affc2a8597b7f7cde5244c7026013b52c7331b5d +b9a20f612c74821da05f48d8bcfa7a4a550979e35b49d52031be8bc9cf717fff21db0142b633465c5edafc42b7c73c84 +b88caeb2157d636fe26d3b221143443940427e8722596746bc337679e10ae6e5a9b33c456ac271f8b01db2f5d1b00a62 +b23bbd978725aae647ca2778e801235f605dde17897d4d56914b0d2241eb31f930028904a6555581ad5b2b74ec3c9587 +97a331ffcd02eda1d6e0e15deb110ad6106d3159ea641cfbf424d2e3065bf65c9b14f72a27ff3f576dc51eb068bfb22f +a9317840cd8f437ea97d80a3f445a99eef463a5e2beba3c986da8fa67def4ae9a0e8d1a675a35e5616ee90986366bb70 +8c26dd7451b12c65351d5ede6a00ac7b9316f9e28be8c692d20709c3b4a5dbc76fb914667a2f1e9a654f8d2850b7dc3a +8bf4aa18a988f82dfc54668bd4ad5161f276e31567c949b7857cec331c74c6b68849afe852892816c802736cf7c547c4 +836fd166bb9689520cefd6f23905e4c1260f97167b17534930923107fe934d4afb1216e4b89679a564433dc952a77b0c +94d6a5a4a11f41887eb814acf9b5a031d013d614621642384504eb78e65b6a07c50326632af47b408d8ccf43faf8399a +a213812713128750bbc5311dc317992bfb5124fa067072891f452880183d64d6fdfac8825552cb809178a3f3a641c9b5 +976d1290308868c5e41dd3766447b29ab8c3b72047a0b7de85d3ee5b1e13d522147a02572cc0d1ed8976d411faff5b9a +82a4494a95738ebe56578e1e4c0e486eea66d5cc44141f478bfc5a6b3ebbae6f32063725284df81b438603aa564a2b6e +8a6f4dee79baf71a4a40843437c16b2f304785f3e56b32d9ab2474666fce2c7749c776bd898a65f4a4d542a497cb6d6d +a04a3484be07c2d60f1a90f9dd8d4170270a808cfdb863864377c2515dd71c152920b65fcd5f47004d27d14d7ee7eaf2 +a984f6633ce3d42c75083ef7732e5d0ea15d91e73cf893be3ebac5e56defb8db97088c5cb3acb661e26bbb354ad91ce8 +a5ab5b4b0dab86706d68c9ad921d4917215c4fbcadc8adacef7309c0c853bc3c2ea34b3868d8f03cda6f504793832594 +88f03e55eb028353b70352dbe91f298ade322951ca115972f1207744254fdd01ccf899aa40ca747da8812dda5bd5f985 +a4bab627f7de273f8085169cf05413bc368c5d9e5f58bf10995a8bbd95e511b1ce15d008405728ae8e8a83621efb56f1 +8ed518d0f225b90fe7f01b0fe4c451589390325044f0d18a8c47bf13e24eae8627feb0c9e9514397536f73f33f67a044 +97c73837e77d965f401b4e4f089ef4de7aed1126bef6be4e9002b2b68014b98997213e492f7aabfd2e47cd0917a11d6a +a99e8a55ed0385bd279e11a80255b375f2d59bf8b0879bf2337ab5e3be450a2ec05d1bd8867a633e359a02cece4dc1e4 +82a74b5efaf3c217ee2bb56c9b8e76b3eedfc553c73177e59d982f503a5b0572b5cc0d1292820823307eec956c42b28d +9800ad3e10e8a19d65d5963673c183bd536b65e14ec18dca45e881ff3bc74eac32bef2ef845515ac4fd6caf558a6926b +a2933c78a67cb40489ffb8096c021ca017b99feda1f9c5d702227d7f0a2ff66a539d68a47ad90ffdfb5c31c774946f87 +947b29715258ca20da5b17a8e3d99665b7e599aa5bcdc5d2d7830a2e3cd78364d51a3d7c0d8bce48a1992b27d1ac4980 +86f2e2d3e160d3ff979ca70c456785b4b2437eb64e58adcb78c4aebc96b470f1b8b999a3ce8ce20e3d3f030d163cd138 +958f4435d35932a91eaad0dc476bfc2761a85f336ad2ca6fe0c6830fe54e8f417434616df9e6f07a9454a4403b00b64d +8b1755af961e0f9f59651d56b538ea59af489e859a1c93726cee62649da0e304093d62db9a2c5854c8da1be61bde990b +a5e11042f73f979c8649592f6cd01dafb319344e379a65aa9200d3b636abc569edf822c2bc12b3db5c30b9ee74f2c981 +92ac5584de1adcd38a2ebe361225f224e9b498344521be519faff77f87c1f22fe8e112f9df7cf960b16e358efca0db08 +81db84f05f75a218045d7d5fd4620648bd4a95cf468cbd69787011d615778ba7300b729163e7c8abd1a5b0ea66fffbf7 +ac2f522e9f030a7c576fbe19041f5db3913af58da75b87e8ad64b93bb34850a79b852804dc68ad5e7de66d90878544cb +ade9763d1c7e9f68b5f817cdfeebf31bb3ec1391dad04576c55fbe4bb13cf0d45abced3d51b5512c73b2d0f403906340 +a0b431bdd9641595fe1eb8d96ba4fe86a447a31ccf36cd2f7d94c5c86a7d96bbc95b204fcfe7c69c1385997b1daea3b1 +b3b093bd8fbd84414609ec9a108507f97d7f77833b93b15439423d2a2928e40b192247c8471cdbc12891d83c765cc6e2 +8531a5ce8e0c44e887ebf4beac65352c8a9673c51b6a1edc439e08bda1354d359e1ab2e27b82636c6dc0daa3aade931a +b22c2f3a77ae4813a75004dc2c9593cb2a51c430c559bc7d07d83e95592883b99fbd0f9ad24d2d80d86c871cfaad2721 +8b6dc7d5b8cb6bf36352fb19e42aa37647505436e1442eb1f228b0804916d569643102b2282ef66bc9a4442520521dee +b29a811ab81dba820242a990dc774cd937cd299495cf721cd11971b9f1dd9441ac687dfff0e91656b9764963a56e4625 +805b280e31664008fdd874bc38e870db271027da70fc2246fa82c499742a9a8de1152275e0be61f307dc8f7a918e270c +929f690538a500d238208930b55caa9c489bfd3476f6be2d385c36df3159dc3d8bdeb24a1ffd7b028ff4d881551e2888 +a92bbf103ad851a41e5230e1e37ec7802e08f4610c0db9706806afc4a247679b9525f9a534c70d970a1acb47fec9bcdb +b9f2698a39d6d7aa8aca181fc5d95dec796ed6eec002557d4b63369bd90aa4438c27ab90da4f3ce81168cb42f7400070 +b08703bc97292c56833d8e61105f1431c334f98a7946850c6175f37f703ff790d9a1522c0003f08dd111eeb083235073 +9355141cfadf46f37afb73414c8803f9094b06952c9fccb24a1f8c18a13fa7b1197321b19cb832de3f83ebdf8deee53f +b7c23f7cd8e212108906b7809df90db58d2c2f3a8e1f775274181bd81c74fd7c2f8d68bc7d4aef639ff4e19f86243f98 +92728e009fc3faa08e81c36c268b3ac18627da7618c96c97598b13242286645789c15c99518a07e658d92eb8d2b89c79 +8fbe36d4f2f08cd6245e8999728884c636a264451e4ed894d2116375f3d9eafcaa72ee59cf7923ed8ddacb53cc478761 +a6b2bffd6bf8f54231fabe46ab2c1d014ddaa797d08e5914f13988140bf804019fff3ad07ac2cb31283fc3e74e28d0fb +886387540b5a7acc8b2bd107124bd17d6515697e09c85c4e932a6421965c872f014d11d1ddf321651e4b3564eed4f252 +8b81f3ebc962e9ecd13a11e919d86ce14dd89d373cffa158b807fc91555a4ec1d7164504fb67edd9599b10fac5e32aa5 +91e3213ded5f82e34389408e95d4f7fcd0f50ecbdef9726a289238e4159c6d3cd2f401479a1f785865e91ca213d2f8b3 +99154b88ca5462f62031300177e571708821348e1027cad4867eebe42a6fe92a58ee1dc21da9031002f1b051351b3785 +b5c2b7cfd87f2f65df07b39f8a26dccb16946fef6b89268b9300c8529d730a1469ba565a480d7c5ae9df8600ac50e90d +87df32def37370bf8c4c3a22a670bf5605c78f240eccf8dba13bf19c8a3a9d0560f8899259c4e51c6b0fa64d7d1e4c76 +980a20e5cd352786bffeca1b8a31930d8898eff9f4a6b2570829248410bbe1c78105b6a61cce7e3ed1642e5e2af127e9 +b18b8dbb9eda5cf333ea29fad7734235ac9e7234b49fd04f178136b15d97595d5b415a92455a319ab594b81200cb17d5 +b713a71be9bd22ef6a2747d0bc8f4d008cdf6182e287c1e0274689e915a68150d6083268188c1f4a7fc76d21a219ec85 +b86ff129a981359972bb793a81fd422e0b37f89e76fea70da012fad160b9eb7b029ced81c7e34679f6897a45b4e8da4e +a74a4cb9707156e21caa20b95a2a4b4eae8f773cf679e2073fca2cd3b1e502ef06de8a3c010833d525a7f8bb6bd24601 +b51f06da38a76c2728cd01f6073f402fc49cf4bc5c60113a2700b5bb0ca500e465e541c467013a2804bd7641604bd2d4 +9855dd73307d8671b6f9ebcf676de3ab7e37e7ac1544447c7ff34a213da46123b57ce23bb0f381da8fdefbcbe6c35645 +8fb382c63f4c935462d013a0d3e2321d72fb4781c10afe6e31ac51766832218a05addc6dbb1f644aa61b5da9bccfd5ae +855dcff23e0ebbaa3562fd27c43957cfb35d492837aa71f27cfd1bf65a59a12d2beded9d09f3ddb4f801aca8cc34d2af +b7e7b317f10cdd13bc879c2fb0bfcd137af23e0cb70917e48d53b2bcf8c157ed7e5f58cdb966383ece9d3a4c92012746 +80d2f84c39422afcb449aa68b34fa9d72e9de79a473c3ea5897f6f3576d2bb6fa2d49f0b44aebe5e68b11e85e066e028 +a35b083749f8a5551f0dcf529e845aee189cdcc6ba779f4e88765adc49cc4779cdc2290598908ccedd8dccfdce29d53f +a30c412f4bbc2de80fe5c577b4f94442255cb3061a40649b0ee5357977503c6fe54821ecc8cc92d5056b6977c4695e70 +a2ed0d90ab612fa3526f7450a43d45a2d9e886f2e5888ccb8405adeb8ca3e41c6a94d18a54b3cb1eab5b8f3851841ebf +8d4dd3f8f8a3d69bb217d338e757c814eb69e6a776f55cf51fa7c1b2f1ce5f8e9bce8353dd335e793d68eef676cf7c36 +880d1ca33d5d3bb47b788a7ec64b9130752610816facec99af53b6e58a7e414616e9c815b1bad870d426380085f6b5cd +a287578293da4354f2c3c46d637aa77b91526f9618799dec4bc602305ffd8336d373786eb67eef01dbaab88f07f292c6 +a86d3fad257a64c84954a7530822346da0215ebf4ad9c583f35cdbe16a02fd70d58ab34c93681fbf55d6075db6425cbc +a7bd884d343a6bde5f6c2512d81ba701fae7afa6389389e4776eacc0698a54c3ab1a0e1652c1a7a23d3a1d2a63cde8c6 +8e0653c8b7279d5c958ab1b53dd77b73fd30d9781630a870d0a75681d38cde4fb7c2183b9c5758596ac556578b43fef3 +b76a00c6f5093e7b28703df85bf968dffb70c455c91e75cc81189598df052244f7549d18e45dc70d98d3d86e0094ab2a +b270f2ad3dbc8b43ee2603c4e641be76820f07a4757cfa96be2be9c310b7e39b574572103253594a51fa9243298cbd94 +977b8b86841ab8be7d1d50da7369e2bf71f24360aab8448d7748d59e010ce81bfe79530ee6f6644b987fc0d83df3ed15 +8e18bc59841b7d56f8d9eff8818eee06288cd6ca86200eee7b5e6b230070debaf254a2198b4cd7dfbda8a1d55a916c8f +8e7a328ada969ed6289972b7f43eb5958d23688603ee6d118b6ccd8978378dce2d733ff64c30519b19007a78340fafa9 +98a0fea70a219292584c69546d6d242cebb2f1d84f69c5aa275a257a87de652e721078b983ed67410e3a5eb0cfbb2bdb +a09fbecfd05772a9989008281a9585accba3850831485802f042413da533b1c7ee45a8cc679804340bd9142b2f9e0069 +99890a6b273a2787fcfdd8e8500134efd60df99410e8432664a3e5325e55e78942f4bb11024c90e4c3618a70729a277b +a5f3eb1617a77f2d5c76bbd1bc3546ad1628be90fafa9a8b62c605d04e599ab2eb74b25afe0e68fd020daf4868dadcfb +8b53517d93f42b833f7669c131dc67f14c3b0639c46d3b02bfdb24cc9e642133e0c665236a7ba851c100ca733d673341 +849fd288217bdb154213e79abe1a78672903e15429e37f6846019986e1cc8dd2b3ed28e4cb52dee1762a4dddb9ca95de +954d839198c3dd2ea1ffddf98050e2c52ee81b89f38d967bd30c6863672e43bfc32e1030bb12f5aa424983bfa31dbf5b +b52fe86414a98d0896d7a427d57739da35cac4ee24be565956d15a5c1cf5b4b95e5425dd2607fb9f6d6024549b59a4ec +9586070415a6bf1e11304d2819330eda88e81a88b9347aa866692c163e1af772be9fb747d9281d7aabaf5c9934596934 +a5b78e5bea362df26a89df682df61287763ca1b87ab9618609c99e52e6ba047fba7ec828c0552ee26279aa8a48751334 +aabf36b9dd465ae03551dc82bed9cbf1d22a2236ded28964334f7ad474f317f4fb8515b853354bc06181fc9af82714a4 +910f0b2efc608cae8cdd39df7a5ef9e570592b31df2331baa7721708057188ae96e1b43e2f2f2c8cb360b961d687b60f +a5c5b131205c21ca68d6103f8499279621da337a743e4a08547c3b4507d52d2d6e5014fa5d920b351a6f53a195687766 +a6898dac2d8748b8bae155a7d8c169e7eded73cace1e382c4dae8633f19463151399c5cf877f8ba344a698a98228864e +92919d8be671b4f490efb49bae145f419c84a1e81d3ef78761fa326f67d749ff3530f5de04f984a018065f42e852e1e3 +81083de978e025f0b5995550fa17915d02489344cabf8a79248352d78dd6e893d28a5c5204a65a8873756a34ee3c0120 +a6de92ecef84d188cefe29a03b564b1e7bef2a6afd785b58897f7f97a958573a35aa0767bef12a49b352de30b4f0dc18 +985cb3475c7a9f582c11784cf61a1988240d74e49084a4c0f55f3f6068c4da0b08b136f8fa62e9001e0a265bf65fa3d4 +97e6d360b504991d51119a78c5b647f25d5fcc1298631209d82c2ca40ead0380835fe3cbf8b82148b0b01b8157e884e8 +b313df44b2c47126b58064599a0dd6ea49e5ace9ffa663de03ad30c1e95301cc68eed67d37ae6238469e45124c59bd39 +8a58f70545db2242cbdbb12492cc11ec4d2b2ab0ed8450d21ceb573558d7bda91ab03c98736e13d041bcab84fd8248b9 +9077880ac352a5ab0e5e15ac89b14d173cda0b41b6f7fa66bb357195f10cfcf491fad6bdb49d71cc20d99cc6c8e28d04 +a09b2930fb3b1a60af8c5214e8c3f6deecb3fd3d0a5662f3885948f48d1836b5ad3dc74affc54dbeb5b522b90a17dc4d +9163bd2e5f58fb1d81007422b91147685542fb1c7e2c8421af284c7cbfdcd2d2b399a37123b58a2a349f27b31bfa47ab +8a3d859f141457f9d63818634f81deb5c858ac48bfbf2e1da21f4f0dcd66b3e1d2d8fe99c4cad38206b1e15dad94934d +86d3fec476b59782d0477ff333fa79922fb9fe3d6d6b6c5be9da9e88b006b46b2a0f8f86ba4159c5085e66e32fba67a3 +8041cd57335bcdddd37651de2c3e92edc600ac23041d0e383baf55651b1b0960b6a601491608307160f0d7d48ce395f9 +805c284059f8c03b2bf006b1af95ef726874c5548e93ea965b402931f42b189f9f674b6b52ff09df35320085172973c5 +8acf781a0b40cc56b1013cc1fc3bc43036545ce35591f3b905543c09cb1ac1a70a074202b6d5ce3680be913200c58879 +ae670c448996156c80d063f1dfb03d7770201a35c71cf8e70b38d52dcb5e2bf73d5286d63ba2f561525d62cd67d43125 +b0fcd0150fc0005ca438d6b0fdd6a70b121d35ecd74e62bc119bb0187cdf6bf674ce9fe01eeac5d46a68ff4d4210ad09 +b752c6850985ab13a057028887bc84674697c012e9da0265dd5ce1e48f0aeddce5e07e3e7cb68ae17a648cd1207eef19 +a6a5c71915a980fd0225847b45e2e9f3731c6b2a627cefb1e2c6a0cd7f1d0555dd32b6b601a7ae9cfc4b9d06a56a578a +b7d96f59a988a7a810c25018f7f85cd6e81b335a84504ec76c97d7257f9cbfe88215ec89553f0dbf39507d990b3a7f84 +a7cea7b3ba43cf6ecc488c34511b17fc7b97150b2d265785c09c676ad3123b322db32e043c5961384ed6d90d20c63061 +809dc467b304e9bda732cd92b15c0f9b363cc707432788971508b8d60844911ed4edfca96d8cc20b9874f1e38a2d1685 +a5b6a089e022fe460d62c4c5228e1381902c9a796ad92c03211c855541a7fe27c5a39d9123b001b0b892ffdf0a1fa065 +95d67a21154a49bcdc79ed5f2773b651c81fba1ad82bd373239f09a67a50371a147310623fcbc1211ac57aa154e8b300 +a4a4f0ca8073407575dfd5d04ebf76f8bb467598824f2ce7fa74756803d9645d63c9eb3ed39aa202dabafa4ff0a0bf34 +8a77374f6e449d94a443f2d4593a0c3e4925527e0653e873dc20756396a9a4e5696fe44fc1b49e456711259deeb3f037 +82585a825011d6eefa85cd530685b103862aa0777510d22942d8f77a0a7f489f5d10e5b36ee38f66cc96dc57d13f5893 +98e24625c31d5d97c789eacb91c3d51cc6edb38cedcc474deee459f55de557c42e4d0754ca4ce472d0123638eeafb55b +ad4351c76d96c35ee37362f2384ffb809bf6a47213863330aeac1ff9be2c6cc7275f0f974e46bfb716a89ce1bdbd0710 +afc8f5af4f9c38ae672d20e7bc3796aba23a41eb033619b4c0a06e07884e1e0c7a7326f069068dd22e69fa5f672efece +983d5af05af31f9082f381378fca3526f88309bbe51d0cea5860813bb0fcf6b32a3be110336bd728952dcd6ff8a26361 +ad3b55b67b64b188447a1fb10d027bf7f86ce0a0fac966d709e8b6ccdbb7333964045f0c4719c45c36b7f3c9ff73944b +b410fde230d8dd24b9f1bdbce8338b05110b130591913f23a34c5fd092cdd3f747c383f6967cdb529ade1a264a3ece39 +b3e4f0a046f93c332be07058db00c5182a498987759315bcc3a58d9334e09a59333031c3144b59d03596925703491cd6 +b77e58619c8c471531d9b2e5dce8f82bb8794223bc9459599a911440e64e0b5be1d37e289807733ddbc2858bded1c34c +b450945bc3e290df96a196083a45aa929ee080bf45112e678eac0a939db2ba67334ef782c855b9b354caccd94b3babb4 +9794d81e968770a6e12add60b32ccbbe80cb2680b157d125461cc3db998691e836d98cb3b3cfff4f156b2800d426b955 +98d1284b4c035e93b4ea0431884d91d5a7855ac6c5b1ea2a994e653cf77f0ac1a771dc75899bd1485066da17e40ee341 +b1da89b14efc14d15b2bc967ffab85c41dc447b6a7922b619b5d5b06dcda725bc4530959b70355ee20eee7c1802601b9 +b8e50ae98515dbd9ccaf27192e58a5c34def86b1d0d181e63e64439107c30254267969f6069e0b863c254440c3480de3 +915f0c7dc95f630bf1114b02e7d9936b0911a69c932950ecb7f800cb1aa1a4e1f1b6bef6ff4a23301cfd904c39025863 +85392fe0edd316031c69d90b106b6685bed56a0d8d814db2cd5d77d07b18fadb632694a214a176ef60aa0f82ea14b00e +ae4cdff23859b7570179586549165c728de4ca254a5da29668cfda259d43a387b3caea8537888d43f713d458da6bd4e8 +aa0b6a3e0555d64a5cd1201fdff7ba7ff3019e9ada1d86c90c626a710df3d97d2ed62d2b63e5632963e09cfbedf83732 +add726d97dcff922dfd748eb897e540a2b4b8bdbb4eac1feb74717bf086b1760a957f83586a57b5345bf4c73d791ab9e +9721889b6fd55cf9a914e5aeefdfbfb94d379c6312001ba50ec4bb1dcd03f95fdb45041330da8871cf3dc3c6a6b5e330 +8eb9417573ec6af24a610da5260639efcdfc802a95aba8efa829dd70ff179dec061da9facac95b6af02cba6a8646f7bb +a477ad7d2885e1f081556a98b3904cd75a4ac7a8c27fb0ccf15d117feca59f891a677fb4ff4fbf38203055a9436ebd1d +95b3b2ff92e8a0bace130d165984966637a74280d0e056cebdefa6f825b1d55c9bc6e13cc8f263e657dba3dc7fa68627 +b096fc33c038b425a7a922a4274d01eb366a488fc969497a575587ada74b9452a607992aa2d8b9de66705fe20b4abb39 +a813ef1053ea6ae8a37f4da722f16b6ad0213b0ec7829998362292aef68c28357ee27a406b567a629592447db8ea6085 +84248425c3201ed389fa1b64b9e1d151b5a6f5fcb8f5e28ebd665db57156ecf9b2fa77bca857200df9f54383b7c5eae5 +86d0a3c7fa1e64111115469ed0373dc3dbd448e1098250e9e8c5c7e775fd1f267d49b4123c347af07a28e686d5f357fa +8340b2ef4fc2afab3a3d51b6c0361cef4aec3d5e1d0f779f9fcb258711cb79ba4083508644e2bd182fb25b21523557c1 +b840749c259b5af5874750853b4de6f4d7a274e18fb77f774f5f454c82efc5979a431e28bc8e43bb831715c7fda96db4 +b168d333cf20b053c1b2a915c3485200a7590c3c3661507990390800fb95d3772ec6815d53aec5e2964eaec19833e787 +8f1bb538dd5005384f38f88cd2588228aeb0c6313aede14ccc12affa9715cdb938ed4573c391572f0a7ba6e33a1ace89 +ae4a8ec2eb938eec00e6608c087471128b14a773d75a99634671f6fed95f7b24b14f04b3271d1c32faff7f0f2d98547c +a4ad66552924a6831b657f8b318f303225b2cf29b09790a48285b028bb1420c56dfa2ca0df2e823f694e8e3b27952a01 +8af4eed962eeff534234d7c34f1033c68e8cf798c99880a67eabf38b533570a3776399b883f8658265cd14277b060790 +ab2c6406132413cba89a951d919bbe123fe4f220364ec2282d8ee0c140ad8d48ded0df7ab56f8f18ec7526ea2f1cbbd4 +9154df8800e26020155b98f630e640be97a3ac41b182fcdbcf31a3e4f233810e34e224c97df8ef0f39ccca29a9921fb5 +8f306dfc5b8376a88a104cdf67eab54f93e478ca09036eb780050ba2e8112b400bcc09d49665ab37d21b5a2d8440b3c8 +b768260e94bbabaa527b2af8be423577cec3bf4aec3c569a4fb69e1fb997a2157c59f1169065d24a8aa3625d89d988fd +af06139ca7d240f2495314d941890c078d504b2bc09d98a6156c373de29781e7581f33adfc738650cad0da3f6e07af88 +849a6e458ab2f4101167cbf75bf47ec1f9e481f556b1b9d297a6b4737584011d7881695bbf3ba31e3e4180696fff6407 +b107e7aff27aa19a4a92d1a65679bf40e85ac6f08d4e5f14859d97c170ceb431858fa4c46d00131527c605164b5f7bfd +a00666055e18f34ce02e8b67b6f181327ec0a11547c0795bee61802aabef9a3a76ea138b905cebcff9c4c86391763e6c +a65cd8dec5166949696dcccf031c300895c5fdd53709a1897c61d795dc22bae2f7717e7ae52a9950f9d00471ba6257e7 +8b49aeac3550ef28b5de37576a5d4e2e43bcce82de09f491984171251e26c27fd0a884daa6f3d30dda107dde4544b34f +91666b88be09799c7de9a5d9a9d4c1bc1b6fbc44c664adb15a2eb27229be910226514c2ce22818fd38b850c89291a7fb +85abf4084c735b20333b1c2145571b793f96188850bae161160b47dea7c48b0f588adcbe9cf80e05d17851cfe3400f1d +aedaee73c52d71d7ac3854fa41199615ecf49cb0c35d8203f95175d1ddf565499a8e9cb8d31d89e7cd9cb75a9fb56f9d +9413589f0746d3b81e2f88b280e354fbd63ac164369dec353e6259a2c4acc6bbcc10f2a851901f39f90da7e523d77848 +826121abbcefe3ad431c713a1a2cef336a0f06f69980a14d0a8adae5640e9aeebf4eb82be4621165ba32ce5e16de4880 +adbff68221279985891e9f3fdb7b1dc71db3e20213b7c8e1931e6f75c6f02e7a1f6f05ec0687885de55ac85440f372ae +99ce8b064f874cf028e85281bbfa43145893f80a8b12813d047bedbf88699266652de6ae9e4ef9ce575e67065854fdb4 +a809a71a663b0a9719c0327d33215b63c6ebb12da3477da8534d7e8f79fb81e06adfdad79686e40efb2c75abde559a34 +b26c4cd057118f9b12c9b86e77d370b3fdbf2654a5d80a7763ae98c68cc2769a7cb293ea89b3a08250c2f699b8d76e22 +867c56da9a2ed672f47924cce82c9d7e801d6a1fd18cdfdbbe07c82091c70ba0ebc6008b0b9d505632a97aa23c45b8c2 +8cf14633888f2ba0b02fc8ca7536f39fa290678c7e0840c58c53a9d2fe10628be343a86acd74b2fc01b0c03af0996f59 +86696802e4f27928dd6b0287d0188f8067283496d154060383c5ee295a468df32a2e8e24648d93ba868120ac429b68cc +b15439762d0f7b6c98e6946b3c0a7ea0521845fc68b47fe9c673194d81a6cb375c79b0122e81a027f21a7fa4cd6bbf56 +b1bc19c9a3756098c02bfe36429c0f0d8166a5c9274edc7f80ce65ae7d6c67864a457f19cfde6924d204b81f2a195fe6 +997f1cc78d707f29e3eea0952b5514b34c2cf0720f33a3244cc466df62b13031bea13df2296270eed42b3667c53d6c26 +94f599c9995caffc9b47543b822dd8f84f921fe2a31e82d5d0fc79dd93a4da0b87a0906b82fe7c2a8c23c7829c21dc2d +a7fc8a6ed802660bcc07d3ca454c415da18d798719dc2688eeafeb8971910377ce909de68721fd97c4d9fe439f37a8d7 +ab16f93e6df2464018be01fe040fea08c67e0b032fe1950fa37c7593c8ecbca24dcf0fdb9e1209d5b0def622f3f6e92d +aeaf19b49843e3fac538075dccbb29a63d55d12f8c4150185b1ae62de778c983632542eb495808ba629cd4cbd629e07e +85614d537efaee823452d0427ea3a2f7d5a3c988b10cf7adef8715becaa519a9b5174b63e401946362176dc0d65667d4 +aa08d8365e78efc1919cbbe562be7b28c57eb05c36e8da89378cfcad9f21e134eed923559530aa3f62bec758b00c70ff +b4c2760454170276885d66f03e9fc4e6a4254547b04fea3c233c11dfbf71ab05dd755b9697b442ec419aca000152f2a8 +b814059b189c0ed46f9dab604fca25d881a12fdfaf834a75cc2c0e1d8454ce0ed9f2a79b34bc5e27004903a48c6ace90 +847707b0aeb4fe91c12ea8570cf0d16caece8946951360433c8a375a69fa4c01136172ff2acab6d5164ff6d3b5340858 +a7a9304ecc5ff6fdaaba6e774556bcd7c5dfe8ee7580a677301dece55c6a8564e7c64b60fc4efe89ff73954f3c3f5b0f +a1a86fc5648edd58cc7eb61cc30c62edb5314caca5551ffedf088fc9c1b92ec5b487f670c5bcd2127067e8fd5faff03c +9086a31715283fd525034d59d4ba3465d6c30059b967b1eeb7d537f3bf8caf6879481ada2849167e997212f3300f8ff3 +99c11903cebf722e1cfd63a46b0ae93312439ff2f014b6653fc61927ba430c432b4955b30b7f078c340f5aad4ae24313 +934b7a8b7bcf0108ed31d35a645d73f661c064a6fc6a5d1ad417ccf1b8864623b0cfb54707f10baa86643afb5c5ec980 +89d5a69ae8cc18ad77995ae92d30236d5a5ef00cc63274e318d18abcf9d936453d18a8e6392b52d2d66b51c18d904d6f +ad2448cea1948f0a4915ab054273bdae33a08c494203d11f46888f852d0abefa310b50367c80cacfb602cbc249b31a71 +807274fbe6f08c332a5d2e2ae12cfabccfb53511b8d83bdc875856cf15ab52c2d01cf706c9be428307ea62fbfd67f87a +b2f4fee9f32c0ea7fae306605b62d983b130e4d423e2de286bf9f4343b79e5c4545214250cd1348402d8278140c61c00 +8a36f79ab3ee0063098a39382061ec3e1234e67087b9519d0b762aa9cad54a7e0bd5d24e2b0a57a690993e3182f3e83c +86668e6743a7b6d1ee62e70e6031fc8639ecffed38afdb1afb41d64ec402a308fe0438a22387d9b0c130ed301c39acb4 +b816309d1730cb39b1ab00c5333c6962fd5f5d8b22f3c3ba987b1e0a0065334d206141dcf0e68eba717a4eea533aa6f0 +8754e190b8f751aaf9f8e7076d21bd31db8d9ebbee6b26517b190f624b3a892050312cee9d73cf3d7245446c6a376437 +87826589ac28f442c608faeaf3d63ff057af7724f9d412d1f2cce8c58fad0adde325aa496c6e4e8441775c02d8a74c2c +af30e5e32fcb17226edc54030f1eff8af619c207cd9e42a2ded7f15cd29fe52f140901f0925ebe4e997b56f34d3f406a +a62a4e5b6591d336744481a0797eb23ccd0f580d04cfacbb3e415ae3f273761042b8901b0312f93a6eafc42a50f81cc6 +968a9ccc95e8c124f4475c348a33ad2a52a42e191a93bab3d7f0d211df999aa081efa935391a8289cdc4a5a8f7433822 +93350cd99ab7d3e51756eb01c89172cb406c1debd3f0001d2fa8a01018be5609d73df671e1ff43e612ddbfe7076d9ecb +8df26dbc565ea7e758ce4c2656b65c1f0396761c9360d7092d12c121d3bc1c293ed28d82f1057f4eb5375b15443e9258 +80a0dc22fb4a12b06cf05ce39f76537eb3db9691ca466ca89b2585237c03d13fe3fcd311ce2b3dbd1b7382044b803782 +818b79cab08e11dff3d55bb0f55333f6340c5b462609d43334c14fd878b0f310b77c542c74d3674a94c692de704e88a9 +ad1bda19b1bc3f6d757fe4d189ca82bdcd0a9c1ef509c43e3f49700f84be33bb9b8b8e70f7a09bc6bc00a78cad0cf9e0 +a22ab44c676ba2b3889341fb137dfa14cfc5491ce4c3c1fbe2cb7103fdf720ff2b77806a40109dea9a68d8f072e1c167 +8eba6af1659b6145676d3663b04ebe58c199a1c24837ac4969793f07ed97165d20bb0410421e561cb9283faafd9eb51c +81b216cf08a29dfc3e16b2865e712e15f494b914cb24526a96799a3078f200a3fd403767119732ca4de07203b479ce8c +a023ac601c8e0c22553068ce4a7b8361b0b37bef5705fa68a71c3cfa80510041cef3640bec2cdb4f317904521e99443e +aaaab84c8aea75303fec31694114b3ee10fc1a67357cdd675ac9d0e33c3279e3117d389e9ab017882d517131b14e6088 +8bf9a44b3df3d7e0c776e7ea5eb76f16f1870960f32e7c5b63aee9b432a0adeebbd378c574ed60e15a3abadb409376f4 +a93faee621d930f336f4fd952954ffcbdb261c9dcc4e60cb848362223374010c555a73c0563e7933d1596b0526bf75cb +88753d0e35e87f7572f2012a40bb757364af5cf6e5dc0dfd16d082e698d3fedfab3c671bd58edbf11cedca247e9fa55a +b7de5f03681634991d2aa8a0ffdafd223b1a0d1ff70fbd9c00d03f228c6772d93c388c02045461d51326483af97bca37 +81f96d4fbef3cf00da423a1c48ab8acc222016c21f6be3df778342c1d1aa1a420faa8ce906bfcdf955be045efa4b447e +8dc75ec37122afaf0aafdbea333291ebb735792b4d5934fd16bf28b536fa759dd851e1de448c3efac3d2b0097e0b349c +9186f66655fc1c551d0233b761c6982a3b8539085ca9a2baebb826091e179026b90f7ba6a825f38c6a09b190a31bace1 +a1cf319c9ed31ffdb2108b684bc21cb495e77c853e6c502e03f2ea08e88a0c2b4e31958004d9879242df420b628acd8f +b3d3e5a75c34640bb2fbc7b62f8aced8dcb4b9b165992717fdffdf765bfc81fb4e67f3e737e6f70f24d3c24812ec0ed2 +86ee6ce0480f73cc89ce7959b4af52351317cb6406cc368e889472ee5567e8a98560dc1f13b87442c9a8c5d6b31fc446 +9478256948d960e3148acec3487da232fc2ae6818ac2c6eba491adf130c55badfe83f9a519379fc5ed0b63366de86a02 +898a8130718ac6f98ef673fa8b725af6012ef28be3f2320359a5c2c40e479969e5926f1864624ebec10f27594b24f618 +906f45d4ec3f647d0c49deb95884629a04fa65cf91a075bcde67940634cdc98f76fea8717fc1e714ecebb337e9fd6998 +874c5a55bca05fe52a5d1743b8254b642431b720eaa74f73b0faacff2225f448ef94e12585b2d3bcf12c140ee3e81510 +96f76cf34b14263a30df2135131dea00074f2ee853677b94fc32e04cd9872424dd93b32c55026b89c18bdb4e58bfd19d +b62e2ebd543f3e9a11b72f45275cadf77b1033713625c7374c4d2284d63acaeb64977fd2fdc90145066146c311a68737 +b1759d3b667af9f15da8d4e77440fba4193d0db159a0bf73df32215b2d292bfed7cbaf41c07c7a94ae1f04bab23cefb6 +88423607f005af97b5f8131bdb1fd6d7cdfc4c2da4a4a14bb818b3ecf50c2ae6d3b8cf55e23632354537f5c0dcb0f48a +8ba63acf22ffc1576935467af19f555a0c27a4b56e5bf752163038f0010fbdbff8a2131124f4cf36a326dfc188740e77 +8b1996a0cdac9c6d896111671ac4dfa84a3a3738c43db6d6788f1a7b8ccd6df16a31606db00cf0107eedab28af05cd7c +912a604a97457a6b46d48731fb44dbaca26e7cc70a4628dcf553b43a9efddc4e5fb040a1b89e31902888a7cbbf709333 +86eaf5b2fa873bb56b94eb7fc823527ae50364c1bce87e36fc13de149f1fc937af858a25cc477277dc6eddbf9efd5480 +a0169e6e915e7216b83b00b31eeda207a02c9db6825b5ea44134368eae5bd009b7c95005c621e0d258c33c59085cb66c +8c8ac664946b5e69b4e34ffaa486b745ac8afc8ac702e4a4cc36c59f420a81b31ebf8b875b1f572dad8e4ef1f547a1af +aa6fd75ca832fe60eda078fc81a1a529364cfa8a4b4fac071d89e33cdbafa7d88ff3df611720b48e6fcdca2e3eeea0da +8d30857ada34991ce6faa82b4326bc353691ca32aa25511cf3d52cebefb262d6db8d93521020a2d11b3ea085287ad54d +b78bd8ea8bd6a2fd5741228502b9777177039ac8f033071c82ae11fed7f0a51d8bc64fa9aee44df25eb4b3822d571144 +90904aeb1a99c4818ef21498a583848f4d1ee9253d70c10b03ed7d669b587f8712fd26d4409f00fafc3e26b5d72b4c5e +87cc8ebf78ff2ad752843792e11aeddbfdc628e03e13e0db598e08b496313f463f481f3a17ec889a3acfd128fb89aa81 +b4fd122c4830f339fc019da6372286d3a0565ac04d4f5ac4f28b2c066ed507316e1b7beb7b552f60060825977a2db9c5 +86e709d48d03738ca97d6140f13effa03137570c43ef00469eb0310909f66061d9fb933fbcf30bf04f13839e36d45a4d +b4a595cdd219aff5b8d0f80b679e58d9a7ab9cc389b47784484704e7d2c5249981b2b86be4c37ccb11b9afbcc8070214 +97c6bf26c8b28b982b7a56ff867b2f5785b37260b90e0ae680920f368478a3c88f4a47bc394c07bbe88fa1aa1776f255 +aa48418728684c9a10992d1851b69e54529dbc3548fe46721758ac6b33f82254d56738b351d146268fcc56a9b7f05df5 +962a282caf6f08a63aaaf7ed2146dd61d527144f3fdacf1beef36b34356df50302330598b8602f1447f6beb4439a1048 +b55d325499ce03c9b1c35e6aea30622841aff2a2c225276d677338579ce83177c0d64d78e7d11eac657a30648ef702c3 +8a91b9296e5633b3b9144f61e5436654cffaf04623a864ccbcdd21c8f981618a908e890f61c74df19ce5b6995bc358c2 +a7b6b32333377df24c0b0194393a1487a72a8783e06b1cd00ce6bc39337b34ff58ace57c8dee5b7f0ea2c9a54048a61f +97db4494e4208c9f297b484cb8159e8f600c61a44e1d878b07d29f0406fd32a0c12ebccd42ee7ac4c0bf33ff54a582e8 +8697bc039265f7b6e73c133823dcac9041d18634c68fe16412b4af41286a4164dc86f7e71ab7a493223a84e185cb6f1b +b18a66cf37f93ca0189201811e7de02ee029445132f0fd4209e5efbcef46ba6a28aaaee42b30cc7e97a25b08f4bbb43d +8b69f189f3cfc34cc3968a07e13d1cab0f5c7e093027a9fac38504acdf12e2defced4261a686a2fc850336187e017957 +96afba402124d9ff7048200acf329ccb4e35dabcd609e62d04d25140729e110a674849037e4b8aedfc99c889b132cfab +b75a809fa3b1c17139962bc22ddfce47d38d017d585a4e76ae1eb8f02849551ff7bdae178cb4546067bbab45b7041ddd +89196f1fe0869f2fd18f5c01118853503d71c4073aed8bd9cfaf694ca4a9e87974a9ad6e37449bafd391a2045ef5cd2b +ae52921b5d8eb5df7d4923aed1afb125cb98aa6606f8cbc2129cfee56ba3cdb7225a30d98ca9271cca67fe39c763d508 +99f1cfd27833fb64905f8678a532aa984329b2369ade3860025ad334131a9550214297bb2f7d3569eed7a9cc558a5922 +a77fabcb76e8c6ac2a5196666e0c75c7f6c73fd8a0a5fca32a454a9457870689c83f5821f90f28dfd91abc3bc62ee761 +92a4b97b7c14ec14c74e06363b0ab2e263d0d7d84125e2cfbf659bbee996a4d8561992e19789e507f4c24e5afbb91b2d +a2387e7857600a93de57faa0484650289c7553b9ae5fb001d011f43e5bf31c010c9c8b5bb82e7000465b546236e79066 +8641b6f2dbe9f0b83e0a7ad8098b0836af158fa2ee6ff1bcdf3e2ac8b3d25d2e5a24d515e9d549feab4e82b49e468fa3 +937306770a47ab2d5d2eec4bd6d9b3a8ffbb8c8067504571609a7e7a85c665b34ad2662701b67858e01530907172768f +b6b1b89f261e56b0cee15e2f5284c76789db26a6ca4762500745e260bda40b00b65add4826be6131775202c8c6c4247d +b1caac20a1b2aeaf287d38d42987e2c381e74495d9e880eda3ff59821d5974d01c7e3c611f4773a13ff41bef0f2ad44c +81ef049b849d7b0a732579299a86f1cfeb85f27ecee4280066dedf6024159fd47f311f1ebc46b58f63f71735a05480c9 +b3b6b657e64fc154eb33b6056b8279ef736839b56f2c8f8ca438cdaceeb5398b8d3625676cd393c196f664d7baa3a615 +a450678001e8db1ebd8fbd5c808c99945bb3549e834a346cdff316ef8d3b49b818cf9642e5b8097181cf40583ce901b0 +af3edcbfae3c8f368958cd11c95df4682ed10f894f770783e967fac1eed533ac427c1d4eee51f968ffdef080593ca262 +8348eee6ec1102884929736d6768477029961c3d6d09e9ebf84d2fbe55c0501165f274fc1c0549ab831388d431e051ef +8d799492659dc44aa38262f8a4ae37b6ba6eb10dd20481f652a1c77ee9a4529efe042ea873c13bb2ba3ec4792b167c14 +b4d3962f574c3298ffb0958ac999367db8207dacf2ca9d563cc1efb42fc889e19b7f00db15ffa91d145ff05eed97c3bf +a3a7c0e45dc8ae816d8765bbf097502b56651c0c11a03f476e362b64ddaee223128defbcec5629f4d7f1f9c3e4cb9f2f +951036c2878582d84d90dff79ecaca673df4760fbf9e09e63d35facf3e3257be6e1bd504f3c3daf8ac1e91d306e80d6a +8ae85094b13d349e60c8f303550cf4b01e96e24fa3a9f12d44c9822c004f1b3e9cbd772a2b4699e54023176074778993 +a7292b61d2667d74cf62a47aeb559499f19dfab2a9f41f16e7b8d6e77909457eb2aeefadd9d3d3f6db18a438ae53ea0d +804310f5d2ce8bcf9095945f931eecff79f999ffdd24abb9e91d92f6e405decccffe4a8d9e731c4553de79baf7a5dd98 +a77d3af0fb79b6f5b6cb640d04f4e13a28f8aaad1f60e732b88f86de547b33117386636d1afc7bfb7bd1d4e527812365 +a431f239ffc68f6b1ea13bbd45675f0323cacb279e11a14f664acbb15d1673b99cf3603b335a100a0e297c305d743383 +a64f4c28cc36b86dca65359cfdb50ed3dcc06fdb22ad567c7e0f833c880e76a53c330720fc2b96235cb0638394bae41e +b6fcd2c047de58003e9af3a416a2cdb143899441d82c691fa46d89045a12d3b087ee4603b401287a0f2629154bfc9bdc +a06e3b863bd183d8f91dea6d0211913663b3924f1e3476cfe0f328ff7c388aeb8e5c97757bcb56992c104ce0ab6ff27c +aea78204081cf5d24162686a824ff8e72fc0f88388525d646af7739265f60695b7d80b53cd1ddfd046bfcf59aa25f5cb +a89f556d42541a655864adcc1d5d67459ab488143e1b4eb48c67af30a8e753541fbcb479558ac26e1fa498f74a59025e +afc385b6b08c355a05fdc75e9360f4ffb384fcd74e8c9db34bbae9e0c67e0d1fa7efbff4160b387428ed58e129fcc027 +9428d05e17e5525fae515e1ba3f04742fad1a43baa2ee166d2f9431dabb46895b7345ad833d495c99939f0c57cbaf1c3 +b7a62d36ae55e681d48c911e1a433b568871c65a97916f939bfd638a054d6f1136a78c96640779ce1e3afcf90e3bb23f +a45b6d24930d91fc610e57ee78c6dc7557cb2ad976cb92e2157769447cd7c9a6a040f1008be9eb5dda2a7b8c9e524774 +8b24eddad804790df3ed82db7c0ba05082c61a81763c44c98ad436dcc7e1e89a2800ff9c2deaf350f6222cf4278fdf9b +895409dc0aba4d29ff322d2414b33c1458126c023a3d53b25b9038bb90372b7c20d3e9f6b791fcf8f76449fa0aafa758 +b22767ed218b575f397ad8306ec48fe07e8dc3a9f2f090fbaee411b6ba673a1258785d61adcba007d748cb019c458fd3 +ad4b9e4164010c4ba05a23f9a46957c8625fd4281a4e76f76ef7b4d6040d2228dbd2e6faf22b4a966ab42f32467a4655 +92340f1051f88c25a915d0504c1413146f37f709ab060e3859b14aff9be7f8c91352dcc3fc866910a84192d301029cc1 +b4e19bae926db3e1e295ba856984b32b796d86cbc81e81c6978e989f5331f27ce9004f90536a741ca996d19f998541c8 +91502e2a69aeac8e709553501311b4392dea3d5b6f14e7523bf780b8af246e1f2bdc4b29fc4ec3ceb725fafa31bf51e0 +b20607db1bdd6136130ba9683d581f5f45d8623ec4a2d35946723e0d8768654bdd9aeed55ba38303d8d1e312bc4f2442 +8fec23ac3b4cde8c18346dda1afb2b72d4af1a6c013dcea36cd8cbf7223626690ce933b920bd9137f673d0985b64d54f +996bba551ae3b76c5aafadfadfcf80fcb554ff26e6a9e14e60440b3864239129734115d11a89ba79c19e452525cb5a39 +a632f25ec68f02f7758103caf613511a1fa2e529e0861f286b4e490e8fca6874af2c13e3aa6ca97c63f3c621c197ae24 +b332292c6213c7216bb78612457de615da878619024626383914f9c28f835f1289818514038c30eb2bc3566d2da470b4 +b5bd5ed7e990ed8abf7de268aa1ef7ccf5562cf9c92486c2472051c1b5506bc9e72594380e7bd00c91771ed4e9707851 +8781393278ffd5c522ec450220698328e60294ae1e35f60b25baa290a125cc47fbf7435eaf9b22ea819d431de0656f38 +80a308c1acc4363f9bc54e6831c5aebca2b2af47d699a17ae2fba24495984acd4a25c7c95b96aeae3027f0fef9549284 +94a55b36389e05b848c6d0e6426a400d1596195c2cfb4a972b6bf8abde2cf86a932b769a90b62a65d0aaf388e66d516f +8d29a5db4ab3a1199946a79ebaee9de225284f0523637f90e4ac16fc609dd3dd5a71072c30e869fdf6f057b7806ec254 +99caa565547b13953b91f0468b78551784d947b5a3fe1b7278e4a45b294f074a93281e9ee084647d1b24c83b39a0cc90 +aeee1c88769e7bae12f163a056d19b0090c7fd866d451963bc855bda2736c41500bb97a8d72a1a077357419ca94bc3a5 +a94bd8b793a57b4fd79a84daf1f7fed5820bfeb44cfec0248f6aef130fb3219e1bbce68a6a55d332b124e1cc55224c51 +8528607774d780b31417bf85fa3e54a94e4ef6e8cc233ad2a1dc795c68c299abae209c46ba77c33ba74c6ae75ee004a1 +930f2c302a87d6bd159bd6b4db43212e7c806e17f572277ab14dd9715a435bd67b3624a9e72d9a2777f9b2080ef5cc36 +b50d97fd2fbe60105dd1dd44cd12d8ad62b8a3127329f969be917fbf10132f1c6c6fda8029deb990fa1ed26e8c220c39 +b685aea07aa1a45941f5eb2a593c0d97ecb5a803fd2977783488fb00fe6580c41ab83ab6cdd678704311c5542129c510 +8cec65b68f4b3b10d032d39ec4c448e6d76e7615560bb754a53c4c6929c2470a884e7d39d9f3e58a2a9f121ad4175a34 +96279388cc3e91dba49763ef50faa7550c3b4c277b2a0b0ae3541a2f990f9352748db75755a7b13efaffc9b8df40c74e +a7599c33614456b1b02b57921cb76b01109811a82f230f9e7e82675d57757f06021ac3f514d557ed9f2dec025364284c +869684197084f42dfd95350f8a54b0c7d940ceae2bbe49ec18fcfd178b6b0d21903447509e0ef356aa3d2aee83701bb3 +85e9ab73165878b93e0229e3384f048e9651ae29980f9c5e26492c45e180e09a3af9058fada434d1c398b43d99d13056 +a453a46ae96e6330c1b315d1b5f37d160731309d49d13d6c38c5d7f0b4f23ff1d18c985c471564afb54e4477c5d28d19 +a5999c704320d4468f94d647d83c9e8720c19782d2a03677143c7216dc434b3160d193389b0115dc638f6e2e12f2d441 +abc7a466cd848304616b2eca049c4b7509c5260c9236dc1432044ebe3e912afcc3a6ffe3e27d5d79d3ad4636ecda09a4 +89ca07faeef1118c6b840a2c328fd32a5709b31850057302a7e607891e11f3f9f62e4fafd420564ff10a35b9a44c0f06 +b0002f9d2a8aa850b9f22dd8d3b7881e8656cfc53e6c2ae6a913d88f6934e0062f30da2702dcebfbfafe36785203cefd +b8527c70bc791c87f5fbc67e2856e45b7254c5a0b673d4a5d3e9b79fe0715b608a2f35d88a61eb1d8d7cb615fea650bc +b9be558dbe778ba11fac7080789522fc004510f7b740c42023d850946933362a173267106aea046f338533e4cb29aea6 +b021f9e635e64d3c9b4ecc8075fb74cf0e5727ecbacad15f822c8608f0d981ad2c300fe6e47c6148a6b1a13cf920d85d +ae59f2a83a1384ef0b5613e8843cc9a934f7126430df7cd7f5a8508e3d83aba83bf3d18be7380570b24ba0e00e05e0e8 +b403e4d0495a0137a710c43393798593bf131cb8d49beb0f3b3d344554dfc3355ebee14e884f543bb94bf9aae40aac59 +a73b722287df7558c503f89d113fe0c017765c73181eeaa9ebe6de5c8a15ffe76fdb85ab93051a6f565653046624216a +a7d1a28fe1d36b17e37cf5eac7e27549ce9f6eddcb36203b58797d3372371f3b195cd3432db54aae4bf99768969f5b60 +a3447ece13c415c457b899d4a8b8ff388ba25bc920b5711f8687cc86e9c1b3f3af42c490ec6352fa8609b044e642e3f3 +b12f2ac1e033b6a627e7f7822317f629c896c8f8dd94ad91512855882dbb10b8e80a1e29c3e39138402f1f7e0de673bc +a7c65988996741bf59888415fc2264495050cb13500b6597d9d0e034898121b605784f681962cfdc80b0af291c316e7e +8c40cfc07dd7a4bcf514f2e87a1830c911e8168b0b8531a2838d2a14e790922b76c4642ae237b7547d8a3625decc7f0a +b480d70b57434467a40d6dd066f51b9e637abd2f49dcfa6450460aeec2bc895347e21aa82baa1bec7589b6a5a694fa73 +a919a033c24e96af1eb0cb1ede3684e9a3bc338c7ef37b67cc9e9982586f74072cc540981e2d1a2524e99144bb21a64c +921e0b350907e9993a596b80f827b2d40aad60e9c62f4b65a67d3fa4c0acfa924c93352dad6eb3e868264bb24904e3a9 +8d5419cea0bfebaa9c1509cd748c8af3869aedc3ae27fdbca3a0f08b3751a3b870e8dd3640f4abd4b46a2a1e745758bc +8b25e6eb600de81fdd03584fb9db9a7bf4c154ef1482553d7bef880bdc5baa7b64abac6db96fcfc4408329adf8fa351b +88cdb72bee7a6768b7c24d124dd5e8b29f0c866a0624e5a7c4759962ce1d71de7faa97f7baa56d5f51e35bca43862bee +af1d59add7df3b3ba234b0b4f758349225b9cee65691c102294eb7e6fb683d7588fca33ed97eda361060253acfdc36af +b19370b8fe123f1dd2ea6d5bc75e151b0d1514224f5824437166fce77ac41ac5ecc1e7c1e75b75e948acf04c420efea3 +a1ebfe84f1c012524cb475e68ae6c7cec79fb3372f1380321a0e306d15828613589567efe8bb5784360aed568e26db49 +a0f964e3cb594c359e2308defd3eaec476a638b6e1c216157009e11f7c7d0c33fb9e62c4243057cbca49ba315d4b508f +9391e5087374e45f03d36f6919463c473938a653adf3880571850374ef0a0e521b25ef84b6012a19a02ec88f0ca3891c +aeb86d4426d2836e6e10c3277583a37b6684ba35f4f30d2d073043f0a0148f763b99fc42c3935026b56c32e5cd0cecfe +aa98c07dcfb1b0a708486d83763511c7004896856e851bd83d25a9551efc28f059c3fb8752ece0296964e8c13ec829b0 +a466fd8dc1aea7022a86e12a119b16de35412a1b461680f6a1cec408e9b9c1418a8e406fd4a5656c73488adddf17dfba +8c9b0e18a033c27731fb3d22b7c83ba7a86fdc2234e8f2a19d7659aa67bad7a85ef25264e8eb81af529feb3fa9340ef3 +a371feccc2f1a1b96ad8a9a7d8db0c06fefb1f2800933134299027459b0eb8cd101b9a37c76c22dcbded01a74b13d465 +aeb34fc2758d8b68d17f15ab3c299344ed630f7351c498a5fe7986f7e14d62e74ac9a8f5d2de7c6289771210539383d2 +aff9e961d0acc71a077e3af52ced373bc694f9154302abc908710e500e908f33bdd10b3c41bb8fa8066758a18d64c667 +98bd5a8751e598896e9aec90649294934f81c36d2d0fb60070e9b96eb47d0988f71d9b68f4c475477eb4c996a9265c13 +b25a92c6260f389f6443a572960e0a52ab9c9250d8760ed148082584b2347ec7d103358c033266bec02374e69d0102fd +b876968bedba7f4712f5e5eea605c1e5fc40bc5773c61f08c32e0c0f3ec575eed3e13e48809983153beccdbca2123edb +8c4091ef8946c9b27490099d5c0b47c404b5a1113500592515deab1c3f2778bbe933b09c9824a3a7ccad2141f9b5dcc4 +ab85f95d318ce235929531e2e397d09b9906c58958fdff1209a514624a099d3b8c103a51b2fcfa0b17a8f008744b5d71 +9016714cbe49fac5e7b3e493574078c462e18f6363f413270c23da6327731f71e2dba5dbf1da6bbe0e29f57f0c33f869 +8c90df700c0e2d104ce7b76be7899209136498999f78195cd888aec6f069778d657e5032ad7db56381470dd1f519dcf9 +83dea8472e8418aa069a0837a5c44835aa1e00979a217f6295aa35548f509fbafc7db5b31b8767621e4f89957892e8f4 +80a1d673220144973ab70d977b94cd3d6b8fff7f82f23bd4b30ea393952951d2f07c24e6d411b2ec19f3bec13583d9fe +804864b58f9747bb3ae54c588dff46eb6e16b6d98e0f711828e97d9f019297b743aa2202f823e3153ef5bc4b95da3501 +b08eaae2eca2c64001e1da7d0e345f96dbd3e09888f9ab86f178718ea5a04321a8b8633e72dea68cc05687042808e3b3 +b962f91819dc570c2cf131b89882fb2a44a999b94fd1ea8b83f400e9b66075a35c89f0fe0e8dbc3a597cdd1aa3135888 +a5f33e8f04a2d7aab44e832f8ab4640519aa4ef88b58e0a398e45347492b040043e494de4b355f07cb4bc728b67f1ac9 +8ed80bfb4cd15bb87175cff427c6a1bfc3e6292bc5c2d04dd42b497bc068baac5602d41366448ee7f37d85a5d8437750 +83441e746afadf64583571a9918ba5122ca987e76a6e37f98514b1a8a178380366d10ded5c70d4feb08be6fa6d4bc25a +8807fb8adb2aaa6833960f435ace162c01a9cd0692a4cf038c89ef7405600868efe7bdb3e8a3db48901367ebafb0a1c0 +82c64b1f77fb78dec00cab089cb7a88ae16c72c94d0870bc92df11587feb62277eb941d2f7d3d2fb033d7bfee12013bb +ab2f1e3f1fcde3b8b2c07135acf3a492ae7675d9bc971ba57e06c99fdfb39e1f68d1c826cd9bba872749cab375e44009 +b4a25f1f5a2aeabc29870ab9a815721f3cc031ab1a55417b457ca6504e5e96e4fd0d2d364ae17738726c8f40cae9c36b +9519efa4774cb4de4ea834376d6213d946fe6882e2b36342f683762fe50d754765dc301569a836febb2c7c9dbcf44f64 +a75de0d0320e8cee962d6ed4b07db718615e75543fb25f0d28ec5e76f56d72b18d648ae42d7bd3da18f54ec1e4497a08 +a2a17aac11e732097b25c0b9f7b97d807dd78ecd33d88aea5ee0a46a42198d379a241e888ddba940b3307e9c560ec45e +936ebfc2234d46282ec4de88958553759d766f682d6f9669d2b77a2cb0cf9cea9b1ac02014ac3f5cd47dc5d8af2da314 +b33def3135e7ad61a660ef1266d61216220c7e0bdd867b727ff3deea904072e33a195e4febe64ee1e263349fc9096cdc +94337e4f14752676a703fab8544ea0ab7acea0ef924b85b05ffb84e4476f1087acc9a6d6250893a32b82f02651a179e2 +8f22942bbeca0118747a22d0aa13438e40bd6a383e310eafacbffa1490f5758504da4a11e6320e1c55b3daabc72c63f9 +86e3ed934fc613d0b3269cf368e32e67f4add59e4dc1ecb1f016fbdc6c53101c2435f95fc36625aa8c69c596acd9b0bc +86f04807460e1d93f8eea2a284119d889659b5a6b124d41dfb2825b31685361e8163fc3a253a49cf878e316463c9ace8 +b043b2a99b94661ef8b270842fe4d3c51891ec23ba749d9c999982553ecade6f658242b373982c9a3669a886889e4f33 +8b6a33a68ba7b5932ce11b3f0e23c3da580510fa37668f2154c59c3bf788dd2276a2a8c66a6bba1a68084e8b9bbf378e +b54581c88d4880fa4a0ec6d3c17b6f0ba339e8f7100242efd3b820ac942d75d1f898259d6f1e64a3870fc301d9dea2b5 +9449dc9bce23c7e3b41eb34789dc7765c2f7855f9670c1d145bbd1b2d1b47a9318862ef3738511b4f89cb16669c0af18 +926245ae9d4eb213ebcb88ab2d7e2a7d198557721051fef4cc966cd11be3490a3f83d4ff48f5fb60cbad9c5de4b98d1c +8518dab07ab15887c68d0de9fe3c0c09ea6bfddb99c145b3f6ff84659e7799da93e97bdd17884b228772398caa8c2ed3 +9969575cbd7953b6308391e9ce2cf4da466b3e730c9cec0e88522258639be35fd31abdedd94b445d7075919482513103 +8b1f28002c19b17d6ac1a6f50afc3448f390b3209b1a76a9a024ceaa274de4588ce82a891a03e878ea08747ae5d98211 +a611963d1bc45b60ffe6756a743ab379e4022bb3fb263f5f305a615c92432199c7e1060a79aa42f7662fa89a0812a4d3 +a3c7706ab74e976464fc341e5a9f7284264c1610fbff02fc36b88e15d6859fbf40fd8c5e93c8237b97acaa0900a03764 +aa623fb8892dbbf4fc02004a44e07c21a422e5553e4b02fcca24dc1f416a54eed36f2f7376dc1e66218e850772676e99 +8133cccf10b1686bf53143bd3520515ec72e7295f6945c43bcef7304de597b767265a3a9f7b281fa353acbc3cf6997f1 +852e4aaf4da9dafc988d0da13a7f31fe8403f6bdab88dec363eb8cb8d3e64c48ff34102f6660642749d11d69b613f8de +a616028c6cd54a6514fd9f7aa9ff13000eaaf39f582441f73a3ed8208a513b580eb7874b5cd0b1e9a542c40c5887bdef +a48ec58bc3bd4b512c21d3d55618e9c51836efa97cad42bf79e748542804114714db23d79ad03e410e0989055c9bd46b +ab480f3750420119ccfcf8d32c4a18ca580ce88bffe81433c1d6999c221c8aac482de5c0e41a5531806bd17897698d6c +8522bf3b7157cd29e948afc8f479d6192364a11f85dd5c58d4ea0443aa6b655f55a80e6a3152fc02a8eea4c0815fcf19 +86c91a6021e738103031c1ece906ff43227eb23088e5ce1b6a1cd58664d4a80d7bbcb0d56c3b0e02cba1e1c2ca22e058 +8ee51a59ce6becf098256e19c9aae5ef0c2c9e66c587d9a32cb4ba1ee0b64c13e2e008908e35f43314316508956654ce +b94766a0fb91c8de2338a68c4ab08ce5bcf62f6efa221067807dc647b595fe5a342d7122111540a1ca6ea7743b6ee772 +83f917b8f6aaeb9eb2eb742546e3f2dfc9cfe00cfec60051010113d55dba2421974098c157dc2601902d8f40bc84693b +996e489890dad3c4dc35faf53d870bf1cd76f1dc24e0cc8a1f899bdb44e89dbfc77fb11f7b33c270a1394c909f7a27f5 +a89936283190b2d1ce8d166b36694afddb4c3df01bfb1fa7bae69c55d1acb4e68e5e29867ea33eee8031029b3c6409b1 +b08e5a5d6797ca252d12428b2086e528a6e5c3965d2e5ff2bf83bc71ae9c0346a4ceb3bb2f2e3f8a1685fc343f36997e +a05bd12a7a6d52d234a1b3e9ddea7b18d6d41026a0d18251b1761f1cc863064dacf821707cfeef2dd1c02536f584ed94 +87c638feef9c88a9f89d10b56fe4bef6406c1d734cd1f01006e2f2b331196a49c7184c10786e855b3de8978927df42bb +aa194f3e4d0fc1d3107f9564b13e6274bbbfc7b8c1e73ce6677cc66d9319dc34b5a0e790d6d44c614c11feb50530a252 +b2ab7be7ee9d72d1015e94d006020e758b73f200dde81e89e52cd33f25aced0cd84b8c300413d32565c253edbcd2fb1f +8ec08b22265aaaf27a84a6cca5f0875a3ebc70fb36c4f5e59d60c55bdf2a4fe11ab7ba4b387f5d668e67682a0978fa46 +93643b9541db11b48e0c84caccc8da9ff7696717aa176ce6d863446ef8d887f3159b0ab6fe1f79fac883a371f6736e93 +8325654fd8388ac96935149165fa3238d0848151a04be57f2386c3304056013efb49febee0a871cfc2ee3c11bb029042 +a2c15cbe5d5167f55f2a454390b61d99601614037fd67fd198968531ca2f84f3c214b971ef300a20a114fabc6c67db0f +b40ed63b0367174b5b4b08396afe2385b0f75ec2569fa3cf60f87e1b17fdee888dd66057be2cfb185e9f32df59b7a8eb +a466d2c8052a115f121177979620385bb07148e202631979f4ffb01e7e0f6fbce28747df9bf70b2168653096aa704fbc +99395136290cd020cfba0ca896642c245182e2020ca2299be8ebb2f62e2fc62fe0be593838f62681f6632fbdffd640c9 +8e4f081d9a724bb54fafb66297a32f84687493464550c09259cc6f8abf770d076a514ae1d6726cb29349e27ef69a74b8 +a8d5c941e7c03dba0232c763590e93e3d99fa519b0a65996d20dd20deed1d0192738f3b339edac68ad42016223733582 +877baee9ee979be8ce3bef02422e57799dcadc34fefd8bf2baaf945f267883f67211ac5c06246f7b49f1ea5c99550a63 +b6fcc2a73dbbba54760d244bc13e1564a3c61097e9b525b247cc8687ca08625a7330fc6b15e45a3ee508b4d34853d852 +adf720dde6e9b5c63e361d69a2ab46ed73e0deb82f8e30f27ca2b19c2d8fc43e18ac04b4fa029f553f8d7dd79457ecda +8956c9038f3338f541bae9ef1f5bfad039d532dbbbe7814e3a3d5442d393ea6114aa666559d8a7e3a026c758a17c79d6 +8d6de7f95f30a5a4b3d441781c7f819a0265852ab78b8416227089b489787c8ae9dffbb0bf88acf1b4c4d6b8a29c1a53 +81d4efd71c9d08e9f6d7f7d7a2fa5089e80cc3f8dcc685686aabf3b4c8bd531b4aa07e328c0fde32b638f23eb78de588 +a30053b681ed8328b5d64587b0d38edef0e366a2762cf5068dae177e4f4084c4333f9a5fa5fede93db80f7a8fd5fbf57 +b340ddfaab2dcded58930e5dc2b72cbedd0e79ef652f34356fcf72054a87fc2373bd3aaf8a88af8d4633f73dfa7d9a28 +b9f3a7809be0bf834bd7affa2059d9371b848dd5e5fa93e83e90d9e078a2fd3aea64410a72457c32d33ff1ca11dc9300 +a9a8ce26a38dcf277ed66d75e111b07348101e93d03f446ea72bd903198122f8a08569f7125f6d4ecaeda8c093a00ec4 +81e78b705b44533e2e997f549f46723a5e6b88241d7a86ca20448ae3ab140e967347abaeb8700594a0cddf1e82285abe +84724094dae5b7ece30cc01b5f2acc8787de57dc0c37a437c3e8e26fc03069b6e8562302a0f1c95de85937f07fe63d3e +97a715861e5bb715a17a948d6b6a389b89744e8ccd3699fdea9ac3d890fad027b78d436f8012b0abeedd078a20ba91e1 +b710b2e7d87771416aa34ba2d93a044bb118f279fff62c1224c150ebc30f21abff212019f0f38c334daa5a96598ab900 +853034af5ad08c563ed096ab2d0590ea644d372cb400bfb03867092768d90b7432d35c5506378d001f986c59769d6d56 +b340ab52f751e9d516348faddb45f0115ba0619ec9db820f870007e3a4d305ba2bd0b2a58a7576296531fb78886b16f8 +b8ed8feff520009743ca3313899a118df025a61e6e03bd5fd27898a23beab472746ca3636c22ea3835e9526e17c06dc9 +87af435e3e4ef611d6da74c8d98e8d3f3de64ac8748105dc20287a7dc866f57d10a2b854f7e0e09235eee647dae1ab86 +84108b1f0f0ff73a179cb1be1b2ecb4268e7fd2fac3dfc7f6f99889c90a33b4310946909b9eef31b256b8d0e3ba56bf8 +a6b9fe966293e60bd384a1e4d472b0a72544aba41b31172ac8bfc3e19beaf51da54a66625d73a9ae22c7c4d1b0840a30 +92e82e92aa615e198ba3c83c039b0adcf4393b3fbf9721b2e47ab17a84bded2bc8bc2bfe257d2d76162a87e8bc7ce759 +b9286dd48800606b7ff9c3fe2abf5c49ef0a6b981711b5ba1f62952d6fc4a9999bfdf061c4664a019120f15e341925d0 +b5da5dbceaa7e82f30fa5fde88b03ea88e7003a50eeb53e3f3aeaa63aa586900525b42fe1b699451b5d915d1b83c3705 +b06072869fb8526d3077cc61a3c55d54a7a1197bbbcc875aeaf617d7d1eff3dd3ac243e2c76caf57dcdfe306edcab4d7 +b132db9ee3ed16e6d76db9e6e3dcdc2b142cd70b9582518bbdf5415b3bb476ad900d50004dc0ab6b87ba697c6314b4c9 +adca92336f3546ea50b034525fdf548a36049ca82d9d3cec10073e7cca186227cd662d4d66673e7214a6ed58cf75da6f +81bbb3fa241f9514575fb3f6cba8e34301187681354c94e7976a4205c0bb238dab52b29a76a5f0e0d4cb1bc82f8857c7 +91008dda2bb7dfffd6746e3544ef540d9a1ac7ee9c68ca9984a1d81041a18fa9f35b8c4bdb44ef3a860c37481d5e9a14 +8224195cf18ca0d8f01521a0ea92c9c598c556746c825a4dda49ecbe324d570a96775eb81dde1d3a14aa3660d50e27a4 +8b355eeadef5fc7cececee71aec3ed30349df8f43f25da1d75d62ab00fc73702b405fab6d422053c2b0fbc7469ace9a3 +a4d657dbf2bb30c1e57e0b63960663bd86ce17204979a9ab82624943ea370119f040b58b067a05ff6d1867a22a58698a +9379a367c918b2be61a9a42a495ec03f0168a4ec36f753dd37eac6e9f58a26c8510ae7b579a89afdee1d192edefb4bb3 +85b37bddc80754f0432573204a1a4b86a550bfe9689f6c710a61810aa94dedeb28763ece40f28fb3a6f3791ca4c86b8b +b41c3269b96e190e40cc16e6c7cc8054cd0b7902a43c69b79d8ce471a417d3096b2271badfcdc59deb6271ad3e5a35b4 +941185020a227b7a995f59805c8900f7f6ecff1e7b948a8b714f85a54449a0d41e28db5e17874e018eab72ade20eede0 +8a0795ce082f74e4633acb1649b52b46ea2b4360860fef6ec107910e245b30466bfee8ce59a6854f866f55ec5cc7bbd1 +931fa63550530af5a7ee24964b8b4d0c66c2bd59108131f375c7de86bce59cf52890191ec8540666c895e832dc312360 +8fb86918190a3455014a5cbd15c7b490d68c10cb7b505e9233b3eacdf52e63299d49ded75fd74f8c2bcb3632a9c29d14 +92c896826c9d871a83c4609f9988cec0db6fc980c8b88a7baeea2856ec2a0a56c3d5a846a87d03393dea966b534aa8c4 +a9d4c780c94384f5a13cab61c734836f5729482cde62f2888648a44317b749135b511668834d49296ed47c0a3b9fa8b8 +b7c26da09c3998367063fad19340f53217e8545535d376815773e201ef49e9e1b6bf1423b0b6bb363586f5f05307fc89 +8c445b3655f1f554c2a7f6f7d035121939a8987837dcb1a1663586614dcf2cf47f73633950d8803e2781baaac52c12c8 +8764f924f41d8c5c91fcd77de26ee3bbb86d5a5bfbcc45188be453c8dbe4b875fbc5ef5b01ea3a26b889d7b45417f173 +8605a8186d5716dd5f955a7125619bc72ff385cdecb187a9a646a4bdf6595d67f00e777836261f3a69c19d2e2cae27d6 +a97dca2185e4fcd7583b1e695333d55f54edd751da436b8982de8c344b5f57e35ddb61ad4a611dcde08e287c78c757c9 +b11c576a049f93e0731652f1a1ade62b0124cb7b4e2b13f6505206c27ebf7998ebdb3d887bed01e43ce5c24714903aff +a46dc516b8ab4aabe35f38af1236052564b01d66c558e7107175064a5226713e8550912867eafe4da133f56950df57c8 +a13e75bca5bd3b08030205cef4faa56a49e5d7da94bc41c708deb2f65343c1687aff26368915a490b89006185f18fda4 +8ef5135a6f1f635a4966aa540cb877dc98c6a88fe462be3226c1a270c82cad8e091aa49ad39862f012edb3c93d15fb4c +99158ace79ceed67b6d8e884050c6fb7c7a1509e41f0d2b9069ce8dea392f17f88303d0942cf3c0af3ea52d3194123a3 +8805c76ada9dc7e57545a5e1a874e6105592601213e22c1601b0b157b622e51f004a1da754a8fccc8f2a2241c14e21a6 +ac3dfe87e17ccda6196f621008716a14be4b983d187265eabb8f5eba7268cf770a70ffa19d1c7e77fab0373eca7a4045 +ad78a31ad6f2c84f6e5348f33631d876daa3d5978f6d1a77db80aa219e12c9ea656e9c18e6316f899bbf6c2469cdee37 +8c8726f8f6fdc40516bb64b6c624a6eb4caa931e3a9ca8ce2c31c282ad59f0624ea290b804ba84e339e83422070df419 +9303d1906cf416a184e15f13cf7dbdca5fb296b078079782c9044b9cbfdf06b0c965305a8d88678b53f0a10220e56f4f +99b9735a77cdc1c675988e613b3e8843e2b0469030a33f5c14383803a1b20e328d45d2fde6ff0d15f6bc2eb8da4f4d88 +892a18f4ceae3fe7cde8f32b84c6bd3d9ca867143a30fab4f939281cec12587929faf07225725bf33ddf154b90972214 +a100a35a2865bb465830ce2f68406d8a92bdeb21056bcba28c0ce8ce5ddfec6e293e926d764499e53facbbacd3f72994 +b797ab22a57520a0584edff499cd1aa1663d8b3f411faa542022c5f1a645a3f952f9164f61d200e4500673a8d95a938c +b1a457d100def2e26b2b30617ee866264a3ea649bcd9edc7be132f5cad02f3209f5dccb02b95a462b5af9a71fb88a341 +84c1f6d4f29869a359cf89118b1a80224cb574393fb557d1c61730a1fb1884895c4cb07f23c52165975b89fe9d6f5a77 +b6d53e49025bcd1d7960ce46d4f64ff8f29e4239fde1b19e5167d506b086152da3bc3b86fec8ea531a20afe1c785fa59 +9635b053c03d1be0bdf81e9876c63e8541b793ddeeb2a8f3ab0e44fb78f81a9e61f8c68ce393c7c959b62b67f9724409 +a19ca9ac5a345c96a607f979a958d83eef4350ebc9cea0e0aa11469dc554fcc39d9b22f8a3c92de599ca08ff4152ec23 +8e7d45d35f6fb95799846fab51b0ff2415857bb54b049694c1ebf93f45167b8497c3341b656f194edd5804195a7c96bd +87c05c7d5834394507ad3d363dd0ca5132a7763644e354c3b7a803fa594d951084d37942f59211660f10098cf49adcdd +b276246af578557aad38190878111e804db0f29846185d7033c913a31e7657d035114448ddfed2f3d75c04c79ee01e79 +868bbcf14f96547192053823e4f85b50fb988da5c4cf73f5cbf23953252b665ef7aea4421c8baec90522f58f027a2b19 +ac2be3dcb8082b64a3745ce0d2b97cf341483713e1bcbb37369123d6723968d3bad1410467aac7fcd3b623bfb1d90d9b +b1e5cf361e0857373814e8db7fc275ccc1dbac8559e8487cc892bf82d4c6be00d1b2ffe40289692a70072c5f80dbacf6 +98e16a5854635c72bce6e263bb57c071194df076e1ddd81e645884367b730d4d557ebb8c74b3c582e09046d2b9ad8078 +a0016bfaa348d44a3ef814b348f7d56fa83b78baeed4a7b58617b6f4772dfa990e912ebf91c2321307884be85dbf81fa +85690a2c5cec392b6f98cd2d03e4204cc51868612543c7a3112066ebeefd4304c5c8b21da44534224398648b413634f8 +a3a1d00d0fdd8c8cfee153347d590ed78cce48eeeb7ad42032a95baa73cc458d46882d0e9707f3dd519b1844f236bcdb +aaf2774fb26da59c115a28d86f0c6320368fc6d2c0bc2b7e4516cdfce3058cb423b0026b6c75030ddace9ccb7f058227 +af507cef7320bd003526fdf43c04af46beaaca5b6ddcad835ae14da60a2ce732b453d8164553e95f2b776df55ddb5efa +b2656c07a8ba2a2248d0313a7795b99f5acc120648c08e3a77fff5cb9b861827c94d4f2f99a2f2dec1d1667ca3ab26af +b426b97a51f0439f2da2d0d934693aaf52482bbb48893de12fbdbed1b2155e30791e7098baa18f93ecc45f8dea4f22aa +a71a7e08426518ef7307c2a1be7aaacd843794601c0d49f4f0e474098ea0faff74fb5ae2bee416aab849afe04be434cb +b6d510022dd3b9ca35e93ddd2ae77877967dd6966706f339b2197d2891bf523b5d55b7cdc80274368333f9249b62a7fb +95d2f6cec1b4038f56c571ee0f5aa14fe5fe7b9a2efab89eab4c51a696d2ada549a42095245bea14d7f7ffc69ade417b +89147eec9de685483d0a5e21b877cb550518a1bbcba0ee65e9519c294fb0c422a729bb0f5a8c8e3fe77070e1a89fcdb2 +a66e7116eb277ba900c06fa48baf274e2a6865977698a504dcc1d0c20f90a7030bb2a841fdbfaa5c8ef6d81aac4fced7 +815053a8483ce2a84a34f81909bc3eabefdce59140f0fda6da77ec005e5dcfdbc6f289d0f0513efbbeef0358daf94025 +b480d2b6320ebf29f3781f04dd88e835ad81d2c63b716f6f244fd2b113ba3781001a34189df586cd629e70c2baa0e5cb +a74281bddc3a93503a695f0375121b3bdf98db4b2b053eb2cf0773647f6f69d1d98a61efcf82e2a823035ce803b82001 +b84fb99a6943447cad21bfe2b34dd8da43d349e53e85b73fba8a5fd0fe3f41e7dc629960b3325d08af1544e5dc66de28 +a8d11ccfb0dec31b39efeee74c58536f29abb02d06dfa11acb7134cac626a17ff4e204d1d138a472c63c629b6f8406c4 +b5017d42a2388d90bcf4d0b6e015c63612a0864b2b379e9cebcf2e869e5fd45d2713bc549ea472d77e82fa8750f364b7 +83c8e090de4ab6ed169a033aa4ab84f7f3e2b54186106790b30741e9d87d9a5d61bd6a285447e0d1a8e1865ee618a91d +8db64f3a1680cf461f9afaed4e714709d37559071bcee52e13feb5627c1fa7c093fc8923ede3e70db07563d2d1eae69f +b6d20dce2f50b78b094949e64edc2ce1b077a3258692ecc2cdaa01ec19add246d0832a319bb0d4153198e3a35091d86e +a61e585ed55dedfad57352d2abbf8ab336a999a5abbaefeb5d0da9fb0d5bb791119e52034844ffeecca9655675d17228 +8ff58b27196f589ce0d3461e0c00d695da47a79809719b4bd4a229ea7bc9319469744f2254be4469092b1a27532439e8 +b5edaf7c3f9dad7a54908da0e7a153d69a6bdb99fde07fc42928a0dd38031e32dec81c864147066412a8ca240e7dfd0d +ade064bb3f87431a32b361074a89dd280cc1160a57fb3cf21eea5066e886c7bfc3655fe39099a1913b8b53242b23b2ff +9169621f97887db46384b43ca24b1447e23fcf5abf141e70fcd1834e9d691b9bfc6e8059d060bebdf9922608593bb972 +8727bb06fadf0633fb8137a54d6912cedda0bbeb0f93af97deef3490b1b47e58fdb37a972dbab1534a5172ff0c840114 +91991b98243bd7c138bcb60cf703a9d0828f6791eff5c2c1c5cc7e8edda258d3cf72680bff2c563c8e964f87450a3037 +a1bddb74f5892597ac687451b932449305d6deba20e97e10989bae311d532a7b72a3fab08dd832589e6a22c0fcb548dc +afc52ed64208e4beb029d1428697fea6add02210f613551d1e5ba6011c5d13f66ce26b3dd2a39b30186c566b1af66c06 +929bb88a9e30862be5f45c002c11537780d151f9836edeadcaa4a617b0bf958046ce331e15bee646f9eeb4d9ff854661 +b3376241793ab9f1732997cdf515b9114f88bb2c25c0bd3f3b22e5b665e1ae94fa3f6a9f88de37b7792c3aafddc682a2 +88fef7680a7fb665043264c9733dcbd23e20628909278711aad2e54f2eb8fa3d07011f593069b6ba7ed312d9ddc3a950 +b031434d514d0878b7011ce2840e23e94a4386034dce422f37fde539aa35cedad1511f9eec39fc23c7396f43ec22cf92 +a4a32f1e58c4ccb2cb4ac6c2dd8acafa292810c77126844f33287c8d522bb8c32dd89ce8f7c1dc9a273165b0879a45ba +82e5b11b9fad7c7d5e2a8abf03943aef271ffa43ed8127dfd85c7957b59d7cea56039116edd0b0b992262751c347f75f +a650327144db1806cefedd1daec1de3164b77c02a0aa652371ca0401b50ec3b7a392ef6a80de6d4724892d71cf48eb07 +a88d8370d88379b52bcaaf596c32faba155db4857bbc7eccf89b5d67a97ae481e53e81de6c9461a6719d179f3ffbaf16 +aae8b3d1b1bb0d71f19e37867885a1fd550f7805fd1306881515d77e5f6a990e0bb40c685e350ed09eb4a55298f3a393 +ac024fdd79688628ee188a7a9d39cd1306883c260dbda9e79eaf2d2f57051b5379834dccfc641302cd12a8a24fa2224b +90cda91b9e71b7bbc091b9e8e28d79f0fce42255e24a7a3bbf3348651405c46d3b6e2e33c5fb5e99fb4d0fbc326f77a7 +91325730bf7d71855ce0462a2fd0840f3753964b296f7901e1ad761f48fd133371fcb805c315c4d8cb2ffe34e98ab9cb +b9e1a298ce9efdc004903b21e573c113c771b1bb5b25e2e88baac6dd7bded130016b2f09e50a4346c59adee607a71760 +a703a60c430e365bdf9023c923a04fd9db427ca0da2da8dad6b0f0d5d352524943839d859c15dca64b590ace6cb1ca89 +995a5ef468a38caf66d58880245064a7c0ab520ebf3c9e9f956110a9dd68658baae22ae274a48d59464c8d37d2f8b643 +889c6e4516ece0e0fdb8c99aa482f367f2cef0ae2ce0987b6b602f6c856b02fab27114a6f4b82050738bc98a48ef5837 +b432ce5f638aa48ba952b9c2e06ce822d531c9a24011d14650cac0722a4c5ad1bf22109a2f429cbdd22a567ce6f03094 +86fe41234d309118d1256a9ac79b7bf01da1fdfcfd579b655f31b7c4cdab6f687d46855d56bb11bedd4b0be17e892b2d +905ec536f23dfdcc4f8128fc1c00daa877eb3caded7637dc911aff0e6279eab12f1748949e4bf015e4f8e30626d3177a +b6b9f47cb82244d7b1102b37cb52f5c9336e4c05e4c90f5e448fa92444bef12d2fbcfc39af9e1fd05811f5f864f12047 +ab56e7c534ee1f921351dfed3f3eaa127869849b44540b39b0dc021b3dc4dc94027e4161f7f3ed40bf42a1d08315264e +b9c62b4e679dbb3405733bbe0740450e72ccf39bf953142cce65fe014f132d5af5864ad96167027012c98dc8b8889e8f +82b8036a3fb6f648c6fb0492334fb3dc8f57c32779d4eef78ac2becb0b93f046dd68c2fea3b5039c21ce8e1efefcc685 +8525738182748d6f901650cc328ae498cc3c712300441042441f66c683e06dd741b644e8e98732552e55839b66f86b82 +b625cca7bf4ce510f21e8197b223dc49e7ce245c5a5d1e901438eecf7160a0bd37d0196191b1d934779f4b6a387b6db4 +b63d753d728670f3b63d4c24acc4a3d4859e5f15ad775e502fc50d7ca42b0d2484a8649eaaef9eb22cef28a23e10d5e3 +8e951028c0b4c5a691a219a6dbf348ef66edef60796094d5f6abaff1ad5802b53a5abec9b8b3b3b98f8b5858672847ee +b6b71004d898a3bddbcf7f730b8d5c0d8bba0f3b508155412446732ed9abbc1d03a90864f4689e6ab207aed495830e1b +98f33a74e36c035d9476b198dbf3a75573856264d45313e5bdd89db291dceaf4084917a2242b0a30d3b1ba4ee3016c42 +912fdb4358fe617d7981bf9a9986dade7fe279a0445d7b14951ed77eb88c77c4aff4162467e40fdaa9dafe78da0ab4f1 +b17bdf7a896480ae70b3696cffefbca468b57493d5db59362dd85a3da296e1162356358080c8b0a7f3fde798a3ad1d15 +b47ebba84e62bf453ab223496a892fea2244ba6c37615c3db31c2ecc16a5f9519dd79aa710ec1220a2cebd254f7690f2 +b3361190434ab75e46a40e0ce21ccc251fd0139bce90664bd33d9eb6400317c3210509e4ffeef604c7b05b260544e19f +966916b3966d7d33be49fa4eba925aa2f92adc2d0228d1144ef633dc5d67fd8231087c488b492688fa142a8cdb45ca70 +8ffb1491d4448af82b7cab5409ad26d99ef6ef08158c73a9ee9626c5a84d2fc6d852e2c786c94b47b5931c7194d5b82a +a2d4a5bb458688b8f593f39cce2b27fc05f8ee3985f4c5be453706e8f174d5a6585c2070c0bdbb54aa1d8e79b5ab40e9 +ac180389d0432699bafff42a4c3da59bd32ab1bd1c4b4a4829580577fb3c5eaf8aed4dc61a93262f23ac44255e6c2b11 +87f8fe99acc93080e2a2ae51eba24f0b146c1355855a202dedb7deb8e1cb5c6ad8664ba0e93ded5ce253597fe015fdc1 +a554d88dcef521dbf5e4823bcc9145c8ea98c598cab56c85f101ca7be82297dd7f361d457966bc69584adda6d40ecab5 +86ee126cc839d869c7e91f0f8d919929f66c1f67675ae8c5eaf6bc35866580c49d45ec8edf0891b546ec2fe7bebbd304 +970d74575be6cabcd2e33a8dacf25b378ce750478bb44086e1821c97b6b27055b7f00cc8ca189954f0150de7381c80c6 +963badd0cac713d8a23dabb8ac7da5e9a83ca7d580ec81dbbe3e5d53c5c9370b86222ca685215eb282c8f67a977b4b66 +8d2735c85136625b3f8c4196a8f892e276845ca7c876648498143f1897637807a9a5162bb90773099a7b0cdfaa292263 +a1a8507bb8a300e1df882651b0155e46a0f58399375f4e5f993251663b5935a76a02e60999a4851fa082a89d5cec2e63 +b712dd139d791a95486d8fe48e35bb8bbddf890435dbf8dbb670699dcfb143fc582d4bdc8a6751f6bf58a13dd8c2871c +8f108fcadbaa43dff904a23c89d809746a9f732be817c2c882ac3493624aa5e49af7dd9b46de7d9d01ae982bb78761cf +80e270c6620756d3d127457fa2e51592604f85479a1004d63c184d7d2ffe2eea4ff75faa436f24bd1494f4eaf90543be +81f039fce432a5d3bf9649ad0fc2d93de831f5b9c0d0e5fa92d35b5bf4a52c739d478289c2386efc964026134f91ac0a +89401011d51b6106855487a37459351f18c39f08ce90b15e52a876cf36e969a9c9fa6cad94a55b844ad45fcf1807f705 +ad66c149ad105ce8b53d38c410d73a3cb3ec910a9f0ae798f3aa5207501c7ee39b85f10e91b4cd91e6b280f3912c492d +b709445e56d02a558a1496bd2b9115d2635855b18984cfb908cbd54cd279d29ecab21cce704cd9ebcf34456dd1195d79 +851059069d9fef4eadf6ba508ca330ecb7436ccb91d09f5d0416874f9fbcdc56472d2adbaebc63a63f190b6abe7650d9 +a933c1b614e6d5a58c599b7189d06bfa3683995f449d636805c8307195d8e98b62ced873997898d6b1b01f6e6a52b743 +a692ba436613db22bc30c3f36a516971158d5489bf2c50c39d0627a74048a6d0b229606823f37a0832913425ddc30d06 +830999596d203b96329185c100bb7360189a50f7930286c36544d20e57b8418c71d8db331e4352a98f380c68a49b2005 +a56d7c262bb3d443fc0cacb2b61f24554ce35b8984fa3418bb4e271d5fe4f5378ef7b12c6cd02f537820040bcee95f98 +844a4e9a8c9eea0b6f929a80da9f4e4e273e999fbe182d3855b0a40577afaced6f8ea285595573e99e13b6a71b985c03 +b34df6205fc429c9b7cec189b2634d49a4877f22bb8060b9f7baf8c2eac4e1d476ed1f30fff1f4c019c65fce96abc554 +b3a97648b3b79cc513246d3d1722afdf7645e7216af233645fca6a2756686592635facec913d19acf99ee586436cb58f +b9cac906123f2a4aa13d5d7eaac84e84eeb0a1b7919526de5198b5475fb815ce556f8451c953bb0bc910c93c6fb3fab7 +a5e441019d492897de73d31a44a0055fd04e8cac894d626d0457ffe9de5394d0bf851dc5941790cba388b403b86864ab +8e3081cc7999d91d787e4c0937c9e22c959d2ba4be6fa04eb97471997ef150836a910ef28455f117dd54fa9ec655148d +98eb793d88faa691ecac3a7c78b25eb3a833ccfd0275186a63b1b1517bd2b984d9908c84e55f044b31c2dc5e251d0414 +b38b5454c2debaf1a4e9e467c6205cfe26d52d1c1dde5356c089abfd6a90dbae89525442419f108c7c8e82e34ec3d5a8 +942545089077b9f27304d2d6ceb3d549e983f100417e88332bf05bebfe8d42b75a96171ab3bcd049acc859f3cc9ad1fc +b9d444777403590be63076b5dbd9325ad58c1eb244dde2c9628234b62ba74f6b0e956642af2d08cc65f82a1b2e24bfbd +aee8deefc7ac67882ed7ee6c01c08d7739b6642deb2614064c69ea38c5c65e06cf609bcaf7db74545199cfa6122f23eb +b3e476268770abfe0cd64a4f878c58c027ff352569d8cf571bb067368e777eba6c003d344746fd006c8bbd474fc3360d +858137d63f90f66b9ef2a38d7ebfdae1bb89e5bc1d9032c96d699ef276aa2d7461366c00de8c47de9231d9ec436572b6 +a3dc8fe541c9cdf89d83753347d8c573c49e8471dc07b5d41bc48ad1b10a3fdc218adaeb72bda0f362c8af8e1194df45 +ac75940ae476a6ff07cacf70a379096786d10a5a5244fa5c466bdd8af69b1f98e97a3a27877739dd4b223627e0ce6d55 +8c6809f893c5fd03ca80d845147a82d8d54bb7dc6a688733b1404dafc360c45d5ea742f98f6a70ac2decfcead05d876e +b0818eee75f08ab207832c591aa783193aee5742147eebf75cf7f1eee6a6d8855b309db4f7ab51a16ab77bf619e14fef +b339ac167debc92cc9132dce076bce281e7f1b9c88978d36e1b5b9bdeabc974af318ff142f746319681764bc4db191e3 +a51dc040c75a8a8bc3b0ecef47ca313ae13d9560c782ee014257ee728a09432c4486a3f87b5ebab690231735fceadf80 +802500a52dc271c52f893b620952604b79d25ad243489dca7cd679b22907fa85947c88dc04463268d25dcccc8a6c34fd +97b136a881f500b07e5b0b79fccb84b93dd108074f92a1cd76e441239041ff389dbf03483fe76cf7c22a5f40b73b51f3 +9155dfb5d7f7915e50da7a715d1a5ac5b43d7093546d6d342ec8b69d47a86cfcb9dc11d8079f123854033b8d3e1ec928 +9423ac1e11f70b5d0cbbae48b7a5be8350387460631126ebda095b3b33a7ee2845776aa20ad60e2bfaf975722d43064d +afa907dc76e03d10cfbcc226e50e3bcee56baa4acd8db2cef8e484ee7b7bc536e1765e764180663710c4396e22fb4dc0 +8b6fb4bc641fe2147d3394322418e2e8e091718e3b54dab8d0d6bba687bc300d73cf1b17f81e2812f0943a8bbc1de538 +a8bb533bf42f56edf112b03d34eb64f6dccd57251244f39daeb6531af650d0368f6e4a0f9171aaf4f5a5b4a17debeb56 +8d763490dbc9a9b73bd571833afce20654348cd553a69678ec89454c4cdac044ed3ef0458cabdb60ff35af5e63405961 +8d3ebac80c55b7ce726f4cdac41c7e2f6a5ff4ffcd5f1803c463ae524243f136dcd15f9bc74f8b271ce90a4776c94868 +ab63cd85311fb9889041e692bc9d5c1153b26a805b511721154d28f11dc8ab84733387fd20cfa30c566ab2f8e066af4c +a506ba11063b14f25c26c92667dbd9eb67c8585d05d3980284aa19a09ae97599a1cf8d7cf45b70a32063f1fa3174d3bc +b834434632307602d9e046de6f625af5de673996108911c6b05d6bd3e2aee17246b2d860f01dc2d6415fa61c73110e13 +8248b69f51196ce1e15fcdc25d487153896d1f74818a5617500cf0bedd5180028e6567533536919156860e34ba275f1e +86a5ed8b6a1e9d8d17b69640220bb80c9065198c8f7610d4ee6a60d2d808508771a84d6bc679ee4db34f43f94315e0ff +8fde55abc106b2afdac3b8796f83c8ce1b90405532fd586d349340c4d7a4f4c46e2a56fe2663fba770a8004dc7b9d523 +82489db9dccdd13293499194068bb4ee8fff51f74f1b504d203c5deb5216287a6d614a2e0a769d4c929bc103582c92b8 +82b2d71281cf886e80e09ff907c1f9213dc444c058e965f964bd17fd36dc0382da2449fdbc3aa7b6d07004d6722a5848 +b0729dd38dd64c441e81a94fac0c8b5b3588081e43a5b0298bb576b16a9713acbdf09b9bc2499c677064619cb3a172c8 +97c4bd5c97182e80f55e82648e387c4a3362c6088381e96b67cf0f04bcdac3dc670890904180a5388b97002c70481235 +98d99f80ae9c59c921c6ff71ef01c2ba283f531ec32666cca1fe7dfd9bbfb09f197e9112af1761068cba8d6319af5d74 +b0569d892ce82d87a3d809f4c86a88ce627ed420dd106ae49b88b8c470ddb081a3dbdbd92d7fc032a7082650e4197ed2 +8ff68d42ec2dc5b13ff5c7ef506c619c4bbb0f62fd4c08e320953e5cddded2aa34624c6c5768b546cc2f00add0dda58f +8b53131206c80638dcff21d7f2dabdbc6faec545f19ab1f4f2bb858d6b01d87adf886072c3a744d58124b8a7a0c87573 +8b9c9aa127ddb950cad4fc21cd7c8eb802cef6db7290664b1773b9744836450e48af503009d4bb266ceac83d765b3b9c +ac61e051add512e749588e2549ff55f3e6fee5378443cbf64c80cfd7b260cfa63f16fc3e242aa140ea243435be28179b +9240700fdcde974f319a90ec4a9b92a0323424fe39e513c7412c621cb33072d193476118636bd2655867ed2816e03034 +b6b05975d0653079034f9792d5d8cf5743e1737e1b3860e431a1e159199efa5a55b2d3283f6d270c9ed3156a233e858c +a2ea8fc31294943a3a6d02509cf8b75a7b5d94de917ced468fa64a6c24ead4edef11c34782eed848792b0570219fb77b +ad0b54dc5dceb242c05a7f7c529289c8caed93ebe743f6609df653aedffbd7eaffceb53a18dfd109f28d14c80e1f7935 +81e4d4667900eb5a8434e2153503b2318f63708499534a8d58382931791eb0ad0522b41cecc7eb0e6ddf99002bd0127c +a4c5c329fe159bdeeaecbaf479c60c8f43a58ce613e135e9e9eed4af6bf5b6116bdbfea31c82bf0ba87c3f651e1464f8 +b95eaf48a9128df7f970754af926f9865c2078cabb4da4918d8b45e95d72748750ffd12f1d8d3f76cac0936ad0097d16 +8567385d52e6f6dceeee52f6b690781f7c05c26f0d20912bacc38c23afe8f64925ba18f8b6464d4a0557670ed0cea232 +8f7483cacd15fb7e49b2f8deb7ab05e64bac18ac9dba475666649c2cdbc5d6df0d5e789fdaaaa997a3b524521f0470ae +9252efa0698c0cb30dd431a72a0f5f2f14429f6ba50bb60f7039df45777557afe3ae732b9283b4a814d2146a8cd8b7b9 +a54da5287928a02cd5eedabe70cff80e56db252e2811842545beb14f25ab67788460a71ab8ee47cf0c1a5f8d01635256 +991a80279c622565a03929c94590f33cf0621a79b70a2168a41a4376bb3f0dd12a9ed9b16c0b6a4a59c50b5802449874 +924ff5d3a6f0ff4ee58c3674319971257543d2e19f0ce3fd0b0edb214faee920f8d6199ca794a173363a9fa06c96d7b4 +96b136b8df76ba24e4dcd68065c650fdc224fdfc9c1ab6410e008fa5b9580680c3c85801fa217917c620c86dcb5ce3eb +95934e64af642e7d45ada1bbe8b9fe972877a674252005afc34ec2e857f755ea0d77e7759ddb24255f21252d6c739305 +ab14c6bdd6d1ccaf69e0dfc6c832751afb70f89e4800c6fafd22db2e7e5d6f2addab8b1267c8f3fb85cee51c761e69f0 +87e2edb8dec1253547cece2a7e6934b0299715e634d599316af0f076c61726c7f2aec83eaddcc9add1c397cbc9fed0ca +91170baea88ba00fe00db375e8d948f58061f9e7b36a4573031b9996757afcc2c7e9c2d9642bc51402aa586569f0a398 +89d99b120e4565b0538b2ef4f8d8c05997cdbdf61840e068054e7f21677cdc1dc2f63adab1b6814225d14275c737b0e0 +880c2b79bff714665e9b3a0a647773a212ec5f0dea37ee6b29ed6850692055013e108a86affbe44d1abd0ae80a748950 +b564181f9ea65ca25b1ae7f25eee84b73f9db109ad1939e6b9351663ac0b083fc13e6518ad8eaafa3caba9ab959bf7c5 +93cd91391deaa726320574bb46706fd8e30ffc2308290c79abfe2d234d0f0f59ee4c38791e3bbd8c3f840a920489ebaf +8e846d48e7b120b59c6556a0394d25f744dfda0cd58d4e70029837753a82afb63a015e79157fe8c810cc68bb481d19d6 +b36904e7dd71bada7c9b9172e4a6748287cfa0cb6960ccfb7202a36c57bc28d351e1f5371c2b449437cd266f2d22e7f7 +8947c11af34a42f314983ba9c673e62fcf44c6c1f733a697351e1b8422a75338a85bb19149fc130d01492ee18b3c9492 +905afc0103e34fa9787102fbb80967b8c917bd03abb02731fe49ba1acff1e96059227616cd21080563e92dd021117a84 +88c7acdc65e6373e4c8ac6a13d1bce1d534aeef2965a4d9f887b2e823c7ee7921db1397df5cb5e7f12030e310172d6e7 +b028c19082411efe8a46c8abfb9936c005e766e2ad3120be774172f16419e2b04ba3f31132ed2bc209e7214c2d7b2b61 +b6b3a561d583870193226391ebf51ef47185ab6efb3556ae59106b6f266776064e5cdb66f0c93748e60d557db64e8f84 +93732aa1473dc2e50610eab2c8152f2d96992fea840ac2d82c6e2c5760d8c1c05e8ecbd69e14d03713f43e77ced9d3bd +9734c433ad41a8fd91e161de033a2a55189ae31e2af406d1fae443a182bf1977dddff93f6fe2ac7d9c4fb955c26ed59e +a1f305d17c36c06c515d30fdfb560f899e80a2e2461d0bd947032e5ec764116c7ccbd528ea42a3b9351e3c9b45904431 +b517f46b582655e551f766930637e8dc2a762dd7a2c54fce429fdc4cd503e9fe4bfbf323f50860be2c18b3a17d528654 +b395b5c48b1cb0daa8c156188b390a78441c8f16ecc8650520f9f2914bd1d992b83849bb11ec17a47f9f2d40d138e3d1 +9147b715b62fd50e59bc96d210e10f1062c87a90263b5586746325deeea89e759464be55a09b0548766e13bc910c4d3f +a7dfe5e7a39767d14d531d371b92fc4979d326ed0f966eeb7b4b4252d78117bf5295b3c17d1fd636dc2c0097cac901c2 +aa3f9fb858b30675e9e57170a1835717521eafe4bd0a0690b10020c7a753951576b4c7dc80cf9f042894fd5741b41b1a +a1f11dec034733e862cdd4aefaf0252a9e8175b6d4c834b7a7d30ab884bb6ed6a1d92bb0e958f0082085cd80157a0e40 +a1751d7452b7c5596fb801466d8d07a70831e568b8ca66fdd75e5898739709795a5768726ebe13c469b1d51092d86a60 +80acf49051b7caa6efe78318792d05401f5246c5b3bef25170b2a49adfeec8048ad5a5e6d50cc498b23896176a9d9669 +94156df9959c678578ec6e12ac068f3a28d69a981443fc35161d14b1f0327b8424746d62869ea9377a86ca6fd2c95b5e +95dd91b1e9b457de913a65f198dcdceb1fca75692853bd5ed44eda6343f32126e6aa2a309411e019dbdb9519c865b96d +b2516bc36a726cf2dd5553e319c64fc508682c7446a2a5ae696e43f1a8c129ca9602f5a41bfbb57865a9dad1d56728d3 +90cd63b4f9216fb70635e4dcbc9a6c5874cabeabe4f9ea83bb923146d03366d9befa48b20a64f3a2cfdb0c3a84007ab2 +a55bfe9b33781501f10d5632e8f5330841eba2d0a64b0aaaa92db56f014b5e44dbeda3b1f5b2e4c17eb6a243977b2a82 +b9e84b3c617708971f5e174fb8718906f9bd353f8b0fec8fa03d1a6e4bec20430212396a5406595343cd15777c5a3f8b +97deb79dd82185555442f91fb9a70cbd30a564751528fa0df0a681315b8a71bab5073716908ee0546d70dc41efa3b53c +ac77c2fe555584b9cba7438a4e3904958f671c49536f185cf1f3b25c5a57ea65e15554de22def94c5c623e8c99e47a9a +a27c62d39508552d79d2899bac6138783f308e3befab65a96a1ae4ab108b799628cf37db1ec72859a0ce1ac68f68b106 +a2aa287741f03e31f2c87fc37e228279b1acb886f32c6438b3e9807b8126da875fca7f194295c45531e939a13048a882 +84df8999c4c5ecc807819248957d68909d16ef64d94a820dd0d266cddb6775c9c7464f0b2385b7bdde8fc0f2169a4177 +8388e1a1babb941e03806b392fdc1bbe1a01438292ea1db4087b010de0805be78cfa56d20e9ef7c8b6be5a04bab1b1e0 +8cb6ec409cec27e7c4537ee2e5bcf82a33e7cd4761d19059e902b6068a9744e897a6010e2ab42ce72625cbc433892ec5 +b6e71cf74455b0f506e03eecc0976831ec9a56eb8fd0e39e5e12ae199180a4c6e5123174ddea6ce6cfd7a414cf0afc5f +815dd267d9f67b4d229a798a499b70ea2a611f3bf2a9d3698d1105890a2b6462fcc7c6ebff0d5d709707ee4ffa981689 +b4e5b7fbab4d8a66d1b167a5acaa4d53949e1fbdb00107e62b727b4b4b2cc70e2685cd4a16266e8d13ab176f9be09c10 +8d1bae7566ff551f06baacd8c640d0d04accdd49fbfedda0841914aa1bceaf9f3f27344b80bdf5f9b93ada438a4e6d68 +adb054123e27afd4a691d2cd808a3232ab58f56fbd514935caf47b8193b4c64aaafed4d08a7a10ec4deb66be8c292e64 +8ab5255246e01478ba7dc6807c84850308a719f8f8433eb049d5b11cbc361c08930722e7e5878ad99fe1586b3d11cb1f +90e862be1e3d0824106da33aec437a87dbd2599aeb58d46b4a39a5f651097d49943c3248a154e09e309eaa7abff3d500 +abf16f35e3b2b29a72cd96802c900fbc54100484299198b2d40cc6071945781cc9bb3eb43f6ebe433a14c1aeb172929c +867a0f396374cca7303845d8a1e4bcebaa53cc0fc2e790dd58cdd0b5ff2b9a99e18ad4e57aa2b061826545935a5607b5 +a6b6a2e22932d7c9ba8f27b1e1de8559631a81effc77ed2cd7c45c48e49ea7d2f68c59d07a155757493ad82f733d93ee +885e4c3904c545c0eecc9cd02e16d359ce69a78e3a355e7fbe6485762d4523f2604f2f663a4521152a8bdb6fd4a9d4be +a668f417391b07a35c5d40ee5212cb7bdaffcf040a4f20a3d7e70e9d715bd908d4f8fca87a7dbf7b676e088ac8651ee8 +a70d67f3379e1ee0708c34c4c7a7f552267ff679460b9d8891549077c724becb99ff79b35bd80420a4290f293ed4133f +a523cca782ced0d8a3f7e19707f9c64ff38495f739e035bcfb5483f202b209c07c50c764eb28d3bd8cf68ae093c46f19 +8ce98e5f96889ebada090449ae198208cae5c247cc5f6fe7800b4c2254b0e7f2475b632cbd5021a0871b466c5b943dc8 +a69cfdeb27ce1163ae6b6b4b5d46b49507c7e62789f2f90f7f5a0fdce79de988c755cc9afd8397b1c02976e03589f985 +acbffc94dc0445f7797a0d83e5107ad3ec8bf61620fa83e73a999ce4f9b6bbabb00245a619aa6f9b082a2711bad5ce8a +b64162794503c86e478c23f060228105bab4f3f5d46582bd455a94526aa6d71f4c9630d8d63854c8c67aff3904681e0c +b1288073c012a0b2b7e31708e874106031a8cc98b2c94ad0ef1d7b9df42f429f58caef5494f6d581baf12970cded2a17 +8d7ad217c3c1cb74cc301540a0e43be6d74d5a3c0383ab7c9dae57e25f8725781735b58301ebc014476171725299782a +924a33c759249af270617767101385910494724a51fc63600836ca00d06f0ca86a4a0a85e5e87cc29e404ff8e04d036c +a7b21ad39bcacc96cd857328a83e5d26cddd0a5bb2326da9a8f593927ae7b5927704acda9ee217176618c964d0452d54 +a5c3616c308bef98807a852e16f146859b0b1f31ea8a721941d90abcbe37eeacb4403c6568480b6d6e773bbb94a89307 +aefaa1033e47673ca2b68e4c945e6ed892e223146d4fd24219304c2667777c1b18a19488b73053cf7b0e6e09ba1278e3 +b308c690176bc43051f51839d3ae1636f6de5a57c626e8def464820ce2f96ca09ff26294a3dbc9b4573cfc42dd03bbb0 +8f7b1253ea9e257195ee92c54de41f2e7a310c90602a628ba3180e059e5bba79d6bb8110d1964c59daf4b65cd9735704 +a387f003f7731b81bace54c8501a3a2a25d8a910cbb28dd603ed16ce61ef1df34e233dc8579071856d7198a071efedf6 +955ad5523828c0fbe8ad6a77a191661ee9c8005b741b7b0439b76711b6992795758d76133399d266df5e494e4f86cd67 +a44441964f5cad7b54d0105f162ed3ec40d12870fe8c5c30bf16238440143b330ba986d6adb00c9626747e99449f765c +a52df726de07cccbc77e81abf4f1712657c9261f65feee8815ef0e8a4ca61b8e470503801f1da8a23fe6d52f3306807c +b5d239222c3d852f2c49997e76d97b70bcfe73d85e81258d9781f5f7de87f9c81648bcf58cfffd554e4685b2f860e6d8 +96f0193aecbeb1540678f1a3369401e916ee75d2a85f7124c555466a3def91a5d8b5f774e3156a163e1010690d457c5d +886b9f4965120d942b076d053571837780232e139c3efcc6bd6c64eabddbed2d55c3a9a06001bd7a2ccebb36135edf4b +897a1e4e9f4eaf755807bed984ef0bfea251740386a168061f4386819acaa337fa6d3f038b4cff9a11926e68f7888f90 +989d9706f8396ba422a34b55897b9e261ac1ba0c7a7a11a30562ebfab92473b9e9b604ea8baa6067137a4ded070fda10 +96376812651020f68c6a1f0aecd04591fdb628051f01daae179f7008ae33af5abb42e8f304662c9b6e2584e8b02ba6a6 +9344e6f3ce42ada6281d0fff654f408e61f0acce81e23ce47466bf1145a99cf60dfba9a22304efbb1f428c92357d644e +b90c5463445156c8de69d8c35db656a76f3e195c325808396a829c11c06a7503f3c092816b3f23a263d56d3f2c075ff7 +b4dc6d948f4b67b513ce27fd12bc8efe43813c119d01b2da391d01c1cb0abb7d51350a5446e0a72a6f8bbbde2ee4b0c4 +84d208ab983941bde208fd71d58c7f9335e14db237cec42df453155a3a8dcb21dec8696a1334cfe5d035c192fc44e88f +9577996c78372d2d6c9de27d497afb29c918bd894bfefad9059bd85cf2ab520ce1d517994724e1567f12e385c126f26a +b778b9054776a2b8ee81be356050b977bc8aca0d0a202be91d56ba89d8a384bd29c5c652ea084709d4fb365b107962b9 +b7ea99f8c841678dc854527ad0c8ffc700b43b5b36b3d18303e51175b3901b144c53e22eea6ce7cd500f6879a80a8c21 +b466aa7d1a5ae3d9aea240c8114b3dc3af38f7d8f1e323800a6382de5766f19626d07cd6ca6eddfc4d71a43d2d49a07a +8a72b1ee7993f16400396982b6a5198f0de08821431bc66489189d5b364b0e36daff5077b48aff1d55c9a88580cd1dc2 +a7c4dd6095f8cf61f42c5901ab67e9d1ad21a42d1eae9ca5e147a9396507c7a21747c2794f71ac66002840f4fa4e1dd0 +abe40e33cca787e7c521e2e97fb5f95cd4ca7ad6148a505afdc94e0c003e4903b1524164a1df2b2a1330fd800ac33b7d +ab8e1930b1e592aa2379cff636e7fda9fd7f05b358f47d9cbadcfe35fbdee5bf06469fefc052f62159c10942ea2bc5af +b28edfbfdcc27c3892d64e7e05a2aebb173808c020186c225590b03d91dacb866108370f2c14ac97a6d20d95a8e32f8a +97d4841704bacb06bce2778104e4437c930fdd9320d85cac383d11ce9246525ad5167cbd63ef04a8ea39c8fbe3d88169 +b4b178a1c3ccd3344831936b784203919cffb611cd18def1a52ffa2a8e4286f9f9681bd48dff9b2abfe62da5fd619fa7 +afb01a4777a128b02fc22e282e0c4ab1d86246d8e0813a7e85c51907bce079766ae40c31d3c440d5f99c92e89d3a683e +91cd070a607c20140c1f35b25057bfa20290b1435e99c5b33068c4e5755ff8f1aa2be61fba28dcfc131cf881aa1c39ec +aaac82ccda92c6090970f60a56668c011ac20dcab26347ad40585a60b5a9b5a9af883307c55526d4eca1b110a079fd3d +a7480de83b4cbb2eedece3d3b27b8d934e9183f448d56d5f49e0b63e24575014a94e09d406d7ca5afda08da9f4eafbc1 +8e568ae356775b06d963b440f75bad9b5977b7bcfb8fbd1dbb4daad5192521bd189674654d4ab86ded4a6be5fee27ef7 +a501a84cd0b4138383572fdd09242e3a748e593f55400fa7600698d4f916a2fc1feb96557a34f4ef0f13eee580fe9f54 +8be0f6b98d52b83e9deccf09d05fc4a7b4ae1cb11972f01baee4fabdb804cee2b0e9b44a1385238f755d2c1ce395cfa5 +afd01e3658ed9204d39fcdda2d79239b8c45dcf80fda8a680a8797b6be294e7e8bf56ce345896c3f08446e9a2a053a61 +851f0def025a50910bfb6c2fbe5ca62a31426747d9cf4634c8faa714a014fa22586c3eabde84e23ca77371ae25d720d9 +90a1aa7bbe7842cd361d0ab2e16203a56318885d2d32409370ffb64ef0ffd3c8c57658573a0714b04dd1595aabfc8f21 +af56f30bbd796de5cbf6f3d041c2f649d0f36e0a1335ba923eb1487e0b29d0ab307a1143e6cabb79674ddc01dd9a5cd9 +8429afa5476d0f3a4eed4104fdeafb79f80e94e709b59aa44b4caf0a94bf75fb3efadf76e96389179eafc389fe896efa +91d8399bcc3b82f0044b9a697b2bc402285f6d2e7b76eec25ffecab769f3fbdd45d20897d28a8676f090edf847eb3c70 +a06f8d37404ae58c35732db58c4c6270e4311c691ecaa7d89b3e9b2bb1421ee3c3cde555d066340c0f2479faea1ae162 +8011fcbb711ba6511960245c69a73fa99167eeb4d238426bc31ce359a90a2339d5936042b281f3ff3eb976357db96885 +8dff2bc19830b4a58d2cc3c1598d060da34c8fde11635062dd4222c96dcbf2bef79b339c63fefdb1653153ef9af79c48 +84ae7869e2405e326bd167249f89c2e018817d3edf59f3db8adc25f64836ea4606c78158cb30020a54551283bcd9f39e +b7be6cfbb7cbb7788fd60fbfcae3504d441b0af3b46317944e00a23079c605c08fd116311432be5b378ed8a11da219e7 +a3656ce4a79484e365b6b7f81a9dd72a09746da16175a61794bc5fcc0c3dd608751ea2cfcf7bb0c14421e0b05d94df75 +929d5603a936bedc69ede2d1277692012d0c820a23915ac6e776b832b9f4e0e6276fb3b257c7abbca32ea166d4482149 +82d47138de8b6ed4bdaf69526ace4f6fdc50fe5abee63f1c6d4447fe4948a84a63b7963c8a65858442856e282fabaf26 +8f8b2d05e77e9e4e2cc5229ea98c5c02ef9d9b6939ce6663d98d8e2dbed73af3d41628662c354972c1b48157f8d3c459 +9353ee31f477b51558f4ba5ca437d801f59d01ed995a8801552f8c578d1937997bd76c31aedab99fb5532789e72469b0 +941f777fc9115fe948f3a979e1ab87f133238935acdc19d33e1d86a1a64924eb9008e91bdff8d650f5e3ad06db931234 +8ee79ecb7d07e3a5fb80ec15c085898e97876448685891e09ebee9aacd5cd0147715dc60b6f75b601fbe83598f1a939b +a96a50de4fa25367706c99abe9dba95ce1717483f50692bde7c8c3a6b427d02d59ef6e8bee82762fe774f5afa528f0d0 +a451ff58246340157fd94d028ce1ebe5ce49e5ed87d9b61884c8ad903ef9b697c4ab9e5acf66180a89a17749046c99fe +b12739d77fb96e9e93065fe279307eafb11c795da2b9efba4cb239425faf687b9762235700d9f2cd5df9cd9fb2b36e3f +a665e34895d02e68f1dee7ad8090558514720ff3e809cf46cc06d1e1274d219fd08781fd430367a3f09e2c591dfd7cf4 +a262410cb60409720ce68935e91c743aed5eccb4a0427449f32a4acca103f9d65413290ffe2cbc895e2e1cef96ba7c6e +9597cf4d49db896796132aed4bdfbec71ebba08a617a611d1fece75bbfcce902e8ba228b662d0ec5fb927429f082eb38 +80a045d2bd30aff2267a5385be12c646b65b24a586c4f5cb1bdb81387e3ff8edd2358cc8e3c4c5c60cab88d4dce61d90 +80323f4a9fc78bc89aaa172f739bbd4f57f9321a7b8e9eddb74ee5c99d6c7b8dfe847f7103110f0a44d4e7c20ed29114 +943b749ab77112be7593bb2ac11094c66c94bb89d5ee2cc05316ad623a3997a38aec741ec93c24770adc670b6ad12e91 +a8e1b4935aad8a84112a99fd5a4d3786ccf1c985aca0b256c46d52a8801a132024391431cc2cfee760c25eb18289041e +8abbe403bf13bad914a4d5bb0c8709f5b264a7a81ba0542850cb89c3c45bc294f62b22a36d7f829ca80830a3be5832aa +9084defe85d170967c08d1f5e74ad1dd592c2b013b01b84b5fe3f2ceb260bde2e52ca22e4006b07f01e3dc7a36774e94 +a34cf1cfca622dda528589b5e5e36a4a68cee7e18cc621736e3e165b06a5df9a8e9f3ddc406838c1fe94ebdc44bfaa18 +8c5f5d7e98828d0a063d90d5f78bc493c46316fec3245d47ef8900241fffd5316e0d6d6f1653cb3b22bbf05286736c06 +ae7f2beef46b6645a6d0b3ca664c826be205ca6de35bd2809a4871f19368bd2c009ad7de0cb4c269c2934357e87c7f64 +abae2cd1ff7320d0803b6b5345ef9dd364fcc001d91fa456199dde24f474ff3d0ce94d460be9659caffe7ae0a6814217 +b86710fd69a6eeca8a813c7c1d643b487a32cadd70013a4aff4b7331ec08d1469fb17a06d06926e68f546e7f5238e1f5 +b42e9dd8d0f12f95a16112ef7ea60e6f4c76a39cb64e7f6bb4fde6ed1fc54fe8317e93160d736d97d87ff7af69ac2a41 +86e5561a7b621e68afda9d63945dc69bcd615cc099c84ac51ebf6350b25c9c07ab371ed5b160a86488e8213d143335fe +831c730524214b8368bdc619e5c7e55a0731b6c5ddd035e9d7cd90577a472a429e779efb0ce47320c8d3b62997eec0de +a3bcbb6c321b329ea2bb944f48ac984f8bb6cbcd38a5f80e8780257765756cd902d252a51804879104527bc7b251c1b5 +8b1a0ee0219a010653f816de88b05116269325c42811d717544468b3bf477953900394a71d56b6dea13e4e6ef9c9c5cf +a5d06e2a43d965e47d400343c093d64bd5d4adcbe3928093c80439f815938b9e952bf59da7fb26f459a5439fe60fd49c +b92df54cd0515bb9868a8dadb2a808d3e62fec12be3c708fa6c845c833c3321017e2f8d71f10b064fdde02b098e22962 +afd8fb1d8ced274650ecb6c370c5bbe8f09d263391af7c2f2290b5c99196ddeaeedc8b9b6173b6fa349872f58c83149e +b359418883d3425b1bb896a9a9e2a3068c19abbb18ebaccadb85dee713b14bca5b83992cf239cfbb73adbe2f07c63f04 +b8cb045dcb0735b02d6e81d9aa9906ab2f19df2e2adb5bff0533022c03a9a530bb27fcd45173faac63a8d13bf0f41565 +b8b8ed443891d3ecd807d3f92d8c2afe714a423b97019cec3690c24002cd0444548ba6b454e1f9934f01a419206896b8 +a3c28de7e71c54dfba701b7e1053a1719032bf48d0e520bf8d513d155d588d08d14af3cf1e9ba3083f8e59dc947ef99b +a94d1569107e659db2ca58864eb8feb03c83ca083c75a6d949805faaf7095a4f981cbd1f89a464aa46107a891ba758f7 +a9c98b0501a8c5102ec0daffddce83ab40bd097c4ccce66a8f8a61a3fc28564ce5dec37940092640b36a0ef6efbea4a2 +a473b784935b52ce73755894177ead52cd9f2a10521e9c034298fc0461aa6cfb03d499812189eddbce4b3cfb58774a3f +8c7a7984739a3db7b28b7ef10f081e2cbec93e1da39738d082898fc73e83db206fb52cbec476c9809c7de61ff5871b71 +88b87148a573e576d0a8fa912858b7a9876001d8364bdaa7dd2759dd908555119f6f580c0d3a663ff5c2a2bcb05fef99 +b169b58fa10256b2753221aa33dc4f0f3308a294b98300528347ea4e89128a1a1da502990c9f2d266fcc10031b3c5a07 +85b1f0e49528ec8e51112771686b5b9f18e4cab091f6f97dc9a327221fde48be87f59cb46e6caac6e1af1a8c70135e66 +954021598c24f5889a642b9d20488a04e3c78c5b04bafcd0a01f377cf24b49f64b1d820ee8a73f8cc193e1de9a106a6f +8954b280ae11638d6e9c27f826fe66c0ec584fccefda8665f75e0699ed640e8e74fb1945753f84baf606d2fcc804b1a4 +899303d3bfcf48d28aa49e915ddfe263117ab87384f611bf7d555ed141dd728a39b97eca74b6b623a20d44458f35a157 +8d792116aaba18c94069cbaf0da373c4e61662189e8bd0f24dd675531ee6f99d574f91844ace86e3d018c4603ff0e2c6 +876c457846f27161c796f2d063aac7f73c2197ce707872c828af81ffabe91a6f353c6e887464c921718425d046c0a722 +a0382a36d4f8007d444643bd5d85d0b6c3c892c7ef8158f51c878b13af6a5b7c8b098ac7a6e3241a6e13b4ae987addc9 +81d668e292ae20a5a39b55e6798255c39368d9b83ca46e986c343ff9cf4f3140e3f07115995b8fc2554dc0372e4acfdf +85e58c950d8089ebd5d0a9d852c9e78d1e066c4cf1f1e64b4e76356745d3eddc13f1abf177dd32f0aede2f190053f8c9 +9420d1c470588085057549b7e6544aca2ca329ac9b232187d8ac894b7a878d6d3ea351357174089943b43a83f057ab8e +b6ea12644c6ae73b8b9752f8eb8bf06312ca14d93fddeb5f79b92167ed78338964d620379387ffc9e12ac0e323f3500e +82767d1ca19c7672d38216bf17a8ca0a52aed5dca77684da56419430f9129ed25b6c547fce50c834746cab666ddd43cc +b1864c611fdb1b641708a5be8140ca0ac52d59d7c3fa3eaa10bd815f7f5e34413751f829f5fc0faa259064b73d43f4c8 +92f67f02d17a1ead3b01478687cf26b40fb32f055f3b34feff21de083852460e02afb834f61c37fb91100709891379ac +b640a52bf00e4b29623c9b150635391b4dd42f0016e827daaad7aeff6e6a64fae4d67193664bc5bb368c72b138c76efe +941c8aed9a85a005059b83d35f6a70dae2e2b5f645719b567de0da3bbf1d2b85704ac977970a7206bd98609182090160 +aa976af6c9809550721103fc8bb8359cc4313f672421a4ddd760bc4ddd86a036c1b4145049d9c8165335309fb608d6e4 +afb11dfe01bb6a9d2cc2c040e18152645b4aa972fa01b6cb4285312bcb11a317107e743efb53aeb4bb6f8a7fb7741f50 +95f8f780fae2878792aa3f60eab8954ecb107942bf07f0e2854173595eb2d4b914f4aa208f98a63b0ebcfbca46840123 +b1dbec7871209fea98676e68d7a02dd82179a74e389bb9dc0eaeb2ac2d446d26810146586b637869ddec4caac8281bcb +931c9d571e50dfd2e1bee0c36f42085e4aa4e7d80a1c3bf99573d9d09ff710f6fa27f30712daba107d43d263b226d130 +b080bc730ed34724851d00be3bba84093a296d6320fe7671a83364ab1faf922189ffe997eca0e1ce4ac2c4435d7b7f10 +8dbbdb4f82398c891d16dbd4169716e078de5d677d3d550fd3853ff6ac8d15d278f17a2950333545bab823fad09a4922 +a71bb5b71699082cc45037805fcd95e410c29575d229a556a7c5f2969fb6f957f0c63861048c65d5b73fc4680a5c3c70 +b5bc06a742016a20c60d61cf55006cd7c2c7b8f367968f279815087b2bda7009c1773b9c91b8a4b78717b2bdf6a5e96e +91aa31c68634a81c9784d0d6adf4dc85c981e122635d4e1f25604c8184da860b1292d65324d4bb9bd8a002572cc96bff +85484fa47e235410e2ebc49f4dbbea9847ea064f6f6776dceb0d868280fe88bf6c5bb72e24c0ed3cb0a3f1d96ef8c9ce +88ab35f32986f0bbd8502dc81506cb18638298e856934fa374480dc455463482ca780385537e7ea73c4c863107b74f7a +b3022847a668b6d5d52d0af14d594c3e842afaab5416e3ffef21224bede0e1bbecb0799ddb7e095623a3a6f28b6d5f43 +8802d0e6e5203d0018d243301c57934ca85a002f91e5763b2f7372816c7b3ddf719c3b743f2530d9b7330f4f35d69d83 +85709fddeaaddead7a27d3f75e5ac568b0c9691c797f1505f5b33678158f5dff96ab98b921bfbc83368c6763420bf949 +a45ddf8ed1c273d61578bf6830fabd4927f82e3efe7732d64a1c82887b9693dcabdad1e7a65f09bde459fef89c0eef82 +970fb837063e059b1c2b4ec88011131e8cdc459daa1e704095bd327b7c94115c57cc1d9e8b4a29d6cc4f20895e309c61 +b789aabda019356bc5c5dcb015f8e7c5da25150988af0d44cfb11d8702da22fbb43f69c4af889dddc0647745d162d91e +8ccd44696d8c52454c833b0b256ed0073527616ce49ef25a113cb9f16d41f39d27e3bf169ef0d3b2fe78f2a5910ec83a +9846a3ae6a2c339b09f53b6cb1262114d1ce2fa3ea43d77b04816eea6451e8620f0030ba428eff80d72d8e907c8f9e3d +80c18de89a31e2c8309353be974e42ca97dcebefc1a914e76b57609b9cb7c1c6298e2ee1bb35ab9d587f195010d24337 +a43ac7ac3798af0923ef5bcf2342550aef8551c198a31b0bc9015ecb24fd2633bdcffd84a2c84f9eb72b4e67084caed4 +8cc1551213a33114c8e6b3e00c68dd26b9cb3728376b498c95aeec60e7506a3346641ed5297fd4ead33c0e42b85079be +afb54536b43e311eef9f584b8f1074866f6d33cfc75a3294aad5aea870cdbc3c97ab6e849ef719e2e1e4386a8a360fe2 +a2c5a2240256c64673372b63359b646dcadb108d785b4fb16a165f4b3b0ab3dc3dd5058582b25ed7b728d56d5aa45649 +b35e3e4407b63edf3eb567fdbe03eef00dadddcf41b799c80a9c9e26ddcf0c6b0b9dc4df0a0c5d54bf31ac8273740a32 +a3ce737baa7e1c1c69931a5b2fe1493a06fa0dcfc0b819ef8242b4fdae8d63bec8d15561d4fa24ef6d6c3a326d0abafa +910a67b377fb17d3f9cd1f994db52eb5f35a4aa002bc1b7208b259b12c64c095e4dd65ffe54772f8e2773923a890bc97 +908c5ee131dea3f444a9ee2052c93a657d28f2f58e604bf08e51500a306decb2db964f68e87d5ac2f8207cc4e92adb09 +8f3de5e756409b575ac2786590fc85de506f0adb51450f5c24669bb3a688f080c1cc37cb8e7a3c8db8e25c49a4bd76cc +aa62ceaef91fdf09d2ac2edbc07fcc651584a7e7d7d93e7bd4bb4c42105144c2da32326b3ae320b36a2df8aed07e5610 +959fc29ce63dcac2b4dbe8180577cecf9bfbb6db6505d76aada43ddfde5f48ec8f6fed14fac19389f6c9ed3555ef7882 +984cbe54156763d6ae078d6a8205cb6f9d63eee390dc5990f5d8e85b9a19fef563653d3dcc190c9b18c2232a916b1409 +923b448808d9ac04488e8345d3fbf9aa57cc3b3f375af138b674daa0e5a864faaeabed08f94010478543f3e1248c699c +8c0823bf2706d9aa4c074673e9d221eb021de2baffe8b703e64e676b6801da73440b7793254fe4c8c48d2ff395e44bfd +93c9cb050494824aba0d57320e2d1dfc95c988bec46dc8d73f7036be9ce0d7de02e56ad1ea3dd8fc129100800aa639bd +9339fa01caba0f4837efca7a3d983fda1f6a479f63890db7f7beb837e3f6535b1f1d0788884dbeb73fa657410a4ad308 +953f213ec904d4540b356d53eb88f646a98581a6deeebdf99a6646cf612e5b07110839d46c57b76545f6879f12371b10 +99a4576f12de20fbecd3906e48dcc784cdbdf7fa0843c570c6f59f13cf3a559cc1f4882fc1d31015304090f83306280b +b07fb8b73793a236e58b7181df5a0a2e8d50c1d3069c475c6e178e32d14b6e75c45af60a8b54823c23ffbb316bd4a98e +98781507866499ce396730ee91a08e91d3be337690f7195750bd43a601a8f78e9475d5ebb43e347934429a4ff3db58b3 +972a5a21354beadf80d8a6e449cc4f072d6b747de293f075b8e0925c89660db9195a30188dfc8b73dba02467ae02913f +827dd2e21ca88891b9b37e10f0d6b6304438cd6aaf9cb125ea7ed822078a233f3e1b49a8bc65f843e9551691b46cf91f +ad3a4ebaccc157a7b880db6990a937e2d230875f509ce864fb0b7ba5febc7f4668191bf3aa55b85f3c17ce8b7d75b349 +976672c981d106fe1835188e202adf6ce77314f8d7c8f797aacf25f00d57f8cfea31b057f6afcb40b9f97df6ea387979 +8c77ba87e3e8fd5de85802a764b719d67f4edbdace75433af7fe966d3d18a94778c4414572b84f98bc6b5993a3225212 +84ca9b0435001c246143e50487a55349bf38300cde86219d29199e2e9137e262a1619ee7d6f6c44b9551319f1ea8526f +ab06e3313800a7dbb970145c1e89b7849db8a1e3169560fe2c64956a1f9d1d3157d531713a8d7c2213356b22fd3014ed +a0d04163ae987227aaba1ae82f74fd1b44387501fa47fa61b66728a0697155f48bb44b9eb5e87050a5bdb7605038db12 +8e76d3e50853ba5945610251dd18736b8541bf72bd643f6b561cab1c028dd044c820fcf79a5b45882e7dde0ba6db164d +967ec8fdee2e6d61f0ca2cc255f4e72c41a9c1a62150318be0fa508b424487d9254ad135fbe8dcda55caa51b9901eda1 +ae25c496f872f7380d9c64fc9bee0dfdc0f05cc1d2d6ea7747e166cae7e67c17a72a24a9e351de15f52baad355625d7c +b8a95f3bc67ad2a2d3cfbbf2de2003b7bc894b3f99f0364fd181eb11d154a7193b1df9b671a3a8eb8bbabafeee2d1a86 +b79996f818d94842175b06650a1e7819cb12c96b6ba37e61fa14b67684c2879e7d3884fa6bae06faba009329db2b0d1c +856e1478ef99338f144757fe4be68d935f0069a05b0a6209be2fac9ebc5cc669c6a80825d3c74801a54ff8b1a3777da8 +8024798b150aa722dc599f288cdf455479763a9bf776da74d5f9cf76026500e5a0282d840e5ae5451a0e28d507b397a5 +97cb767ebfc0a6cfe25666089f85e5a3705c108096a38151baa22308276ebf7cb3c04079ecd130cb8cae1689508d4bcb +874ff07def0f8d32f2ffce7cf31a43e8bc5e633b279acd7138ae938e46889e486c092ac34924aed9a4e1f93a91994211 +ab5b6bec8c81133b6edddcd048fbd526d59fc8a1f5acd7aa72d07852696faf5e8d305e85077450188cddd43d6c1aad27 +8402f5173327a95438797cee3b107407e8b277759c942bf1b1f975dc63ab89b8c43f0f4ce2a11de6e5727e9952b8923b +a5179a16297f7a0913ba61d69879014b9adb5e41813ac33acb8973e2b43cbc17a2f9a7d98210b39471a47b534f0eea23 +8f7cf3928b51b0b1bce18a34da935e7e2558595e4ebc50cc1cb698f0bf3c1ea0050aadbcec33786118d791218e1734b1 +81552a8927942591572429892e5a1572c8bc4fa7901395a5a2de3ce9f1ead122e4e5ffef6cc8434b3b18af1aa62e45b3 +8999a1bf4f22fdc884f9310e7a3f5baa0d32c04e887c51a20736cff3216f3dac5bbede43632d29704536d7f275b0be9b +85d9952816412a890a3e479025d1c0c8858337498ae28731ae23332c16a788cfe51fa9836bee73d03b253803096100a9 +b6a736447acaa6f4d83998973cd2bc3e12d34c6c076880e6765513c04087eeee5b5dfe9394c120a85bec8fbe127f1f54 +89302db4ea39662024c748ff5b22108c0f34850f0fda476051a89a3eba0e02a2294a4511666987d89f3b3bbcc334fdf3 +88ef018d32e6b379cea9ce35d1c12af698d8241c4c7468a5d558099f5101f04ac8e49d09b6bf031a811970faf02ed0ac +b33afb11f73195a7132430dc3961252251aef42150e9aa63a8c7cae724f467543a4afec289bf27e10ccabcad2f7f812a +b706315deef0529725fa6c4520e5d320a028b4607d47fa6c4c8ca3558afd68ed65dc072a354d263d20405bb13ca119f0 +8ba035d75939c1a3cfc72a9ad3aa4ade105880345eaad9286a182950368e688a182f6175357a2e62d977ff7ae08959cf +b47ca04b80107eefd3a596be2e990f5f021cafc6b7fb64cbb78802f9bb7bd2cec4f37755c451bb1fc8786a076e90bad9 +b6fb1676fbdf6cf95add7173c264b820042511e34dbcafa76273ef5e4500ad1208b274855985f0eff5196e7200e5a8b5 +8c7493894853f4e9fef5a0143dc134f03eeeaa10c80c5a72afb12f10ca5207df1c7bcefba6728d61f3f89d3978902629 +97d14d9debd4228be04f2352e57d9c8138d4e40228c269100930e2a3f6eb6e66f2f99807be0c9857082ff8b9a089049e +86e327360a19f6ddc8d0362cf92fa84677737064a94d9d0c1031bae92b85abed36193428199b0f66720be0d6edb0d28c +ac79bf758fe91d47d1ddfba62bba87f5e64d93f82309d4d07b62d78ad6ae95908e1989299db99ec52c5ad8c8f3d7132f +804712afd93328864a52a9f9ca1ae148de26fdec7d9f51d1bf8c0385959ddfb639ae0904c855180dd418ac21f9a8a7d0 +a789e15cf3c1e911fca7f6759a2c5d0a281c6ab744f29709b8d0623c1fc197ed9bf56b89fb0953baf261ffc4bd8d1552 +b738474bd1788f326c5145ca2a468d914ead6dbc338680f62ee21b1e5fed49fa501236d70dce5363a72147b0a8974c8c +a34019db5e8d5cb680a78c1692978ce0f3f8b21c1615ff65f3d103ed5a1e32884680c90d1dc18f0edcd8a506b1003806 +b1b1f26ed57a7bf77257e2ab1bf314b22e47f8a4f4c5cd154beaafdc34b257e9b976b26c8d9f1508498b6e8c9e9fd2ff +a5f645d7a75741f536e5218d4a38ac75f5f2d759e62bde2c9b628a4cac299b477a833bca98010b6c2a8f30b85f407250 +b3947ca7df831d68107713bbd52fa300411bc14362c37c2617780f5d621e211b8bcf5fb7099d903748420818d840234a +ad16157ac24899485e7eae71eabf9e4262d01b8f8bde30d7c79fd00ffb4c347d765bf2b4a30c260c9fe2e5153a3e1c69 +b1bcde4588570576872430e704a64d7130f921667c13101c3fb771efc1e0bd72c4ad4b8e35cbb98d709062257f0ef59f +ab45dce0e29201e79cb1da61cc4353840eb8b47db99319ff7802d2e18f00e3fa8d5e70aa6a797684b4a6741277ae033e +b6977424f2f5b968a4eaa9dc1ac1018ca51e6158a6a4c189f0adc94ea1c2f30bb33c57960a5c972a1800cca2650e2f6e +899f48fedeee4badd5b69632f78a244756458529f27c75d05e9c54cb29579abcbe4ff7567445ccef96274c8cf5b7d31e +a8225095071acb2610d28d9ce2645280a84c702f5f5040df7a4134de1144fe1a1b07d3e28d4ff5e2517b4b2bbae674f9 +b48316873f8245854568a37ad9c5fe9d5e6d9ebd60c9cbbf9e6f63c512bd8568e3a736039422d21d383378c77d8f10b7 +8b40afa65e47ba365e723b9e24bd4a13335455e059346187356ff9abe99cf71eae383ee33bc184a9ec17b32d0800f158 +96c3b7ad1e31b8d4ac0e14358655e21e687beac6f6b7b48dd3750641315ac7088352976e9804b9c625a712f9d4fcfc4e +914dcb36d621753286340077d16b36bdaa1414eac7a8e7ee84404a37f8fadda837bf4c5a932e8b0f3e8e673832e9b3f6 +b20a438985a4bdaea41b98e831537027f4bf19ea9c1ac5fd37546eef117cd3d41b9c1b125d2302ae3d41176ab5d9e9dd +94a4cf3cc42d7055b55cf58959a7715232a273e66ec6f83fbcdb79d01769f7e6b1e328f6b0a910d1f8cf7a5ba4934779 +a62b07dc466c2f83dcac7fa98215ce5bece548164e32b4bb3aac055b3c0aa68ef5cad58bf7d392e3b1d54ea6f0d9f0d7 +9870784890da6cb0223daa367163cdd41ead23c300d246d62debe980fc3e7de0b42576309ae35da914474b8ed2c5acdf +b0f28a74169391fbb179ffe8647f3e6228e75b409c49ba81d34ce780b12d408d2db5968e9664b9de6a7416d2f6d1c1cc +857697b0222cce1458ff591e1add39f5632cb3aa2e589a64166738d8c00855e354c2ed44c4cee8dd707188790fffe6b1 +b3566bb224742d0871ec5d15ee890755d7e6727aa7e2f374abe965ef8380b49422897545e2cf8fd3f58bc81f05abf173 +88271995f9c647da82820b042e59011121ac723b4d0a2e461cfc1351d89cc10eb7d18830adf1c7b9fca55ed3e910aedf +863a43548db29c9cf35f24c1d5f7aa984ba21bb924dd9e09210a1feadb1e0ddca98df47e970c230879faa5e7434b118b +af5c71b27157a2391247622a5029ba11d17ab4329001b01b3236f38d67ddd6b8902aebb48ee9c963983c16f6d8c53d26 +97abbcd4fff0d1ee2ea777788cc146c1b32601fd93a5ff9908fdc2de225b954d8fc0c9874c258dcb90ecc7fd169823c3 +94129bc418ff5d00ba3a3389b62986fcda5714ad25d25091db12a66e138a35a9e38999c4cf38fe7cdb1340c099c467ab +8a785f303473e763578a5bff75a069764e346224fa2dd8ee3105ca779cccd5939ed8c21f7369bab9947a4ca92d3b605e +b37d1644a00401b213f29191a238f4c9c32ba550db2ab3b4c9d1f02021a8f6972ab0fc76d0bc5b9c6291d5edb9632658 +8e42a2c87d7feadf1a2dad9dc822b40029eeb8afb785ce574a340929c4c6ddfe4d750bd3a482e62bfef1bdfdc36f5bd9 +8837b0408f48c8b975ae777b0516c569dad0daf607da51f187bc2c67d3f67315340848fabf7ca78dfa46b05e3fe33005 +96d53e8e9b14e602dec666fcbff8ac2a7ca0474605b294365bab5f5228d8cf0a17a772cf2f37f7de3607f7ea6127d0e0 +b286888ab9afd161a714fcb1954f6046754c1e3e398cf639bc215327057ae68ed69113481da88627839b551cb9660be3 +ae5747c882d3ad685e481b0b42907f0934a717ef5b0bcf110fe3125d40628959b879186464f95bc4a69d90754034c141 +b1ca38e7b1f87e4c878d4b878afbca750fdc2509f625a06871da830c1f68a6cb20dde7d51ec73a78454ffdf54451ed47 +82225700e9b32f416618b074479302629114761fc721ff492d792d4d1a4d6fec887185aa81395703fc8d07a67fa4d87d +a132ead3cac6087bc7bf5153f29ea858a115249d779419e5c52f4d1f2180f4631caf45ab7cf90129af68bf67665b8dd6 +afd4778ab2921b6c9c3d3e2d8ab7e33882f7fde3c8f66d6704f0859f3bec468178eb25a103b78ab092de5b694f2d2ff6 +aa0123ab3e8af146e974c9fc72dce94554cbab212336c8aebe618ea082c15ef02c6b47b6c575d262d1cc6b0cf2d11f47 +a5e35113393e82c0ff3a39afc99a60f90993d5e4995e5d21a9a395ae31074ed5e2244214d4dd877c3d89e52fac6c4252 +b2f476cd5d9df15e624713f22716ff01790f2fe16957b526677bdd3d203fa8af98ae58daaffca10f84a7c61e29ba1d79 +82d6d062828337677ae19ce13d27ef45ee55270a27e674946c7c1c762bf43af6391d77454dda4dc613b519f4cde43636 +8e86b1803d4ee07791269ec9175dc3d3b595197c089551e5bec3edc55c77532235e64848aba62e43936d3e9438635f5a +845b7233e40eab725c241853013d1884d782457ec188ff7ea535926c36da0893882fea2c9609f96b6d85392471b71d2c +a2090ef73e125c0809f2bddcdd7b74b4f4eae452d76afebdf47691d2afacd1db7c6a3032e9a4c4ca744bb496258b8ead +98e759616bf468bb4feedbebaa8df381d01cb4b0009a5ca5fc980426e160698abd6fcd2095cf964eca6f8d92fe1bfc42 +8a29df48ccec0ecb8b3d904078897d996ecea1d2db6b40b79fe51bc5dad04358d7f7edb6543d7d1cf0c1f54544c3d85e +9422e88414d88e5d84b17f9d2f1c50fb48e9c5b8de215dcd7c52bb26a6ea71cf92c90f3004c4fcb34040eacf5b60b06b +a643123915445bf0e528d36dd7f2da9a3b993f93a7fc9f6148049fe14eb5a0063575d971ec955aeffbdce069d0bc2937 +81741f92a157bfe12aaabf0d81121e5a8c7df2dae86f5fdba826167c4558103363c653a928babf4ad7e3e80634d26375 +904fe8e258be2500bc5566c3890a9372c9404935ba19396e8cd30289cf02bda13ff3d776bef56dd87ce57aba0a8539bf +811997c1d70feed33ae3684eee512a46ea91400b39638d405a8bd6f1d0169706f48d1c04beb1c5afc5b10879390a1a0f +a4fff30378dcf1f04eb97951b85abc0f5257b9e53b7bee814a5acf060919d73504db14d55edaf54e4030b4c1d7278c57 +ac84f2568084ee7a715b2387e3fa3b15e6940a27ea99b4fc9889c828179c55f29992b68d719323c2ede8ded3a4e16553 +8fa542c15bd29bcf72a34b3c56eac1e7d4e4f3b15b82672cd956d23a9b9863233816ffbcc6738a225c86d9dd13d1c3d8 +90d94517e7f1236e49ed6903db72c0de3098b42fbc76afae7abc1b09a903cf92cb1bb6a6ec8c29331e05b8946c2e9e2b +916c0d6b1fb7c74c0001599211ca37812f30c309cb6cae529c876221c5e7187876d37268776451df2aa44f91a3a17a11 +b9ae0c4f0c00e8b07b489e015711346caedfc7cbbcb36acf3a2ffadf2a8f11118f93cb70181c27443d42634b2f2f6d90 +97a51eb35da8b67e82d55fed968ac9aa42cf2d1348ac146d534344c4c7535c29ce25dacf9901abcd7e8c43a83e34e25f +b2f035822c552cfe3325da99f28aa31b847477a644402d43379947ee219fed751497cfffd3536c91f2474a94bf758203 +aa2fc0777c208a2efb2884dff33c459f2f6c9dd4cba360a65918c8604cb02fd493c8e5d26069953bba56039f8bb694ea +84c63bbbea15e06775bd39f39995afc613586fcbaf32c9ada1410dfdeff09b8e7f3dd0c99b23c678ee72e44543ee6443 +8259332662ff222d4d2f817bb94033d458e650e5f6e2c31ca84c6f3a4b3d2e8d1f40593083337a17193cddd960ea86c7 +899fc292aafc17d01c06cac50a78edf1f11c8c3253f4b32116625537351a1e82ee3cac67725973e3563fdd73781985b1 +92d3b9aab29854556666588d94c3b49d159c9ba9046487583469ace7a6b8ffa61164839dee24d28dc2fd36b9387b6225 +b54f62077e1e42e18586a03b3d3fbe3fd680dda6988bee8aadc95dcde46c215167b261433d6cfaad8e2b3b6207662af8 +a6c021aa10019319f944f8a77455ad5b153a502dc9eabd9d306be3830a4fa2539e3cb380355953c3581f12348b919214 +8cdbc2c995699cc83768dd23383fe492a1bebcdfa55fc4b9d1113e510a6f4432ae55fd57db732eb56265dba6ad452c46 +aa474f1710bf6556538fe389694b4fb737713dbbc9c93d8a879dd3aee8e004c2441dd14b5f4cdd4a98e804d031ce00ca +95448d62b1503e71d47ef4f5a01c60c938fc3cfd9280d7b6d3490ef331131130630425adcc53c9c96f262a80c3251e4e +a4535757aedbf6d7b9bbea99f4bb7bdfd1c99d5d976bd8d4f8c69ee09c9902ea81884d8b6f4fc084e12702fcbb9e4b3d +87796bbc38d5c2d9a56a65ca91a40530b57fc2a768e9e08a2081734bde163f39e069edc99e87a84b539606164993f30b +8cb7647e60f023066c4835c956186b9e997a7425cc38465e95be568ab448b7303977c7ddaca73b78f6bc137f25e5e020 +90584dbd8f672a349682effe2f775f2bccb1911b06d20cd02f3a6e30311c6678e5082ab87ee47af72e0c064a43592bea +8886147e87a552c74767faa64516438d6473ae275e72b4cdc174825696a4d7878297b1ecd0fe1a62fa4559ed232e9e26 +b739745959c324a62943a225140daa51faa8e41c8e20ebd68d6f000351101a89341641933dcb2ac5b3a45ebbbf7fb26c +814f858b4c709694472eae1c82cfb7370191ad6d0cc5aad69084fb8e9d81e90ac2fae52b4051af25f1b806c273f61e0c +a00426131acb84ee08684f2fc2a3ef01290e48e6b5f96bcb0459adb62f4190a4b2616eff2a2712991c48adc551ddaf64 +b37a1e92b72e3ba42b79dd997bbeb031a392e42606254965597ea4b8a2ca51f8c324619fc2b9f886e17b632ea3bee629 +90817db93eed264f49445d1d3a14ddc0d5ca93191b6baae278b4c48231a56b25725ba6f7ac0e9c7326755f0082b79587 +95b7f470ef1630dee768698a31398e8cb407df3b651a15493c38f6be6c7eb387148124a2cb1fe1237117617017c12203 +ac49be639391aa5dc08e8678cc690ff617e9a0ab40166285f90c2d889c87ac70c455a972e61cfc339db59be4394a0ad1 +a6f5a698508f8047edc45bd605ad4e88245de20013e7a4e51994e99fc60d81dc945504b24f23f7241f28059f4b5d6756 +a4d30a6db06153074871c6adb0ef4e562c1491c1f9841c110359dc41a3bc0bfcba3b49fa53c29b8258a814b8ba1ba328 +b25a500efa7d38f797395cbec660250f4a00d104459cdf7a15b541db3917e26bb7568526444d469d363040fd094680ab +8444d11f8a0c686e2b22642ba1b28cc556ab7311686028e3fb4040fcce22959b7b6cf244b77c711ba86e350e17411823 +8ce90bfdfa93cbe58421be78e30e471b2c6e6beb1f9b3f85031cbe269305e18d25a2170819f2699346bdd735b6f5d664 +b73970a3dc993e28b71bc236b3391acbd85a8cc622b79e669109f9d3ad7ce7a01a8686e75d85408c54bb70ff9771ca80 +a64cebe05fd027069a18f152a18be155ed65b6b563696e395e045c8b2f0455fa75c2ff41c1247e596451b36ddf258460 +afec84a7a480b09cecdeafd025ee3ee02e3b3338b02d26cb3b7575ecb895057650f0955978d1d732ca2e6b391ed97728 +8caaf53038bfad6e0651e61e9a44a39027d456ff3ea46ee9d8e190698d5a66938d5c5723dd7bc75f0ddab660e178383f +a91607e39108d2540b4b5c9d33d96328f56ce9574ac9d1d4a81ab5c938443c3d7014e19f77cd55ef7be0a408e44efa43 +a3f4c6629a3c0f34ea060a8b976096e6fd3a91c24d2b056e9b6b60088bb0c706e25dfb31079f42e0ec031aa840f46afa +96b9c7d3f47ec35ab0270cc57841e9f3b3f5bce3d26faf6abf6cf657b6e949ce0bd1ccdcf9d490beebce722aea48caef +abd2433b4003b7d861b35e99b51e2eedaea4831776e7c289beae2b561ad69a771233e3d6bc4a7f869d0744c5be61b5a9 +a989e5080d39d4031aea86c03b77abe069ea9b7fbc515c6a79c825eedd6a9bf6a0ced1891eed20edc605f9e25a691f74 +93ca5b311d28e4dfbf4de84a1e1530a9153599e0853c9abd3671a1ce04995e00f7d3092895461137fd78c72d24a99494 +8acebb0309595f4eeb990b7a1543f0633690b7469ce89884d5654a7bd2d2543f09232693a04e1e1b445e6e0041c8b242 +abe3858cea5a873a7576d641571965736d55d46f9040fec219803740dc2a5b43c72689e94c9b61d3c3c44dd3a821b694 +947cd395aef4faeca9b78b6cfcc8b2f8f361de884b29181266fd95b21ca6176e7944058e20cc77c7757fbca4fe445394 +8c2e50234c75d645f3c887693e2439ef42433eff328111b9c37aa3ad5a3b21678ee44ee2959a91610006b27a0f5363b2 +967253e02e34069ac676063aae9a493bc6d52b8bcbf1da6243bfeaa9fe05f8c840ada0a282df9c0180d05eb866402441 +a16a4c9a11686a5294d8329983c8a4aa0e6e5ad0003ab319b493842e8d072aaef45c3335d9a64bfde6bba120a48a72a3 +85187b866fbc72e5b42b91d76e7ec2647b93bedecb060b7475236d7d152d17f901c778b704f7c2c1d3d269341890c233 +83b192d925e3f4a1fafcf22cb48083b2f88632ba93c1d498539bbc4997f61f74a0a3b8d4947253a0daaca8999c407b87 +8338eb3e7f549988435f4f618f4ae1942c6756bdc28a80dba7ccc530bef161c0bbd20f77c8c4d63c94e60bc12f7cd387 +adc869c5acec5e58459eb804c2141e03e3582ce1fef7d40fc1dffa3ca0f923919e291a2ca4a60129e2a470cdb395be31 +9279068c28840f2c34e48e9a7e7e9406907ac14bdf4eec7b8c28ebcfe16a18fcb047015e4309f19e6fd73d6e6c454157 +98c4fb637a868f161f2f4222f93f3bdf13a61ec1f4e4c20435c150fca1bc0c01c790da91afb6227ed2a6aa540d70366c +9209fc7b307f40294bd9cce166277a7ade9c64277c600b3ff09579fbfffa471a887061e9cb5fac97c423eada30a8a52c +b1d63569d5d47d052f3a6e8b2c390bfac1e92098291a2adb209f20af875ebb2a8669533155b1d15b232690e26d399ab2 +a2c975c004e69e7b0f22636141d34adfb2dd1396c7355e95fcd0493e931eb7eb99b4df0f0f202945d7bf837809a29ed2 +818f48e65e337913c52e9256af134f4311be84dc332e3ac4cb5ef659b9c6e9cb34f04b0bcc0e2a3a574c9c3cc51d7368 +b92b63d0b363a368a348a4abb10661c38ced99a3132afa6cf002b81e6cac26f862c9d0a6886aede555d7bc453753cd37 +b4051275cef361cdebd254115275b0b86692d3802241cae5e2c75accee7df98d3165cd1de86226f382e736b12d9dbac3 +ad89d85749c23e045bcb95c3433eb8038139a51c8edaf06b5cb235549a2f9ad17589097ff8a350e934c8662a8879a3d4 +802010e6dbf4265cdb5b5362c0b197317f2435253237561a3a7bc6766f98b129ee06d370382998ae70080624fd65831e +8ed6a5b601a5ee11e983035f3109075444b063aff693b3601f87c0d76d2ac253459de48d0fee32330c3785d38eab5cc2 +a6c8bee787c4b87137f70c2c54ad3ad0955269c7ea57ddabb1a215e613e250944cada7f241430c0ef09f8eee29fadaa7 +a3fc6a643e1ce110b08344f8913ea7f8c9e44bdf1a02978df8dcd3671d9b357397df9857fb11ba220521d1ce40064ee5 +94089626bd9c81247f45e25e573bd6bf727a0e1a7dcd630dd5e661f65d4b6f35bdc16b64da648dfda404b5eab39d9152 +88362a160a95f01026a2e52aee3521e8496340f96a35351892034198740d8b6159175c60b910a4ee05af488dfa578c8b +b55a5b875f5594bf41949c212543517bb1ce34db3a896f93d0216813261aa95f73663c789ea0ceb2bf8815255bd328ca +8f9acdca0158df5ecea4d574e0ef0c256ab271d9d3d3bb4100761f5062f0a1a5d2b8a23685097a1a2b2a08287a2e2c94 +b6d4e3bd49a17fe7d929b41fb223eaf93141453f7dc233eaa74424290014a63ca6a099174b687048d59cefd41fc720db +ac0fa8aeca20a0b4189e96c57c85a2174338550855f9d0ff0c553e773a1a1c32fe3f8db7c8362bddf601e41380c9177a +82f05710f08f12b206b2ad6a2d06161c884b2511ad90b43fbfcdf54933c2360b7c85dfa4f598b5bdce8809a803d483a0 +a2ca711642fd498cfeb897e4072d13e43b5cdb2480449975188fdfbd4b471070cad941af03a2dd8938d3c376366fd199 +90c27a1df934339bd0821cacaac41fa70496900044aadfccf6e5fe28ceaebae5cbc500fd6f2f88c5552b7fafea79d06e +818651b7c7a6f691fc47a61ae4960bba7239007e14930f3a8cc9c95dcc0b03643047671f819e30d89c2d1891640fc13e +a88f01062ded714e7f2f1523644222cd8e8cb8e535eda88738f4b4b19079f4f7be664abedcdb618ad1de3e74689042df +8174282a183f3f393667352fdd60460d2199de16752c372a44465f8b71ca134c410d1d81f15afac839748447875f8643 +a358c3e53dd70e1a608f36a1fdbe225e28c13b5817dba890ed8e82adcb7ae86fa68ff6cbda7e02e8116c11587ae1ded1 +8aa0bc208a84d5a58b0206a8fe5ee3c8d224ccb86b11b7c9d924e16b2853a6c3623502dd60b94f8d720810e0079078b8 +8bca870eb6cc5f7b5f6b84f88b49d9a3994e61ca3f2ad963f28f925e58430887f5362ed4bdc2a2a38b5fb9e774a75cbb +ab86840fe84b1eab81675eeee17f85a500dfcc95dc4872e57b39919ccc71b702585ab9ac66146d264d2bc8fa39338a72 +87c46966a4bbf2523dde607852a40b26cf3431d0bde9b2c609997c0f29c5932d28014026862abb7d4107b28ab8e2ba70 +a91666a8c846a9944ee7ab243ab535e4124ca8bbb756777609aad848527b354060c484acc19c333459c09012670f03f7 +b7145784894c6df87d2ce6a06cbaa713e46097b5f83db60e5449e62ed5bf382a7fc3136e5599226a2fe7951847527c4c +951bdbaaa06ba8b427fc4ec6bb44e93e70692bcef6369fa06c7a6882227d27f09465f37f0a5868ce43ade188a5f37f8c +b69662dd5dcc9ce7bf24be8a0e85e80c8e5af9b030e740796f91de548569bafa2fbcb19d98e13900c76cae3fb601a8ca +9630a7eb15718a2324518f78f26a71e3c801a8e2eab3236be7623807321c128ccd79c74ab657ea8e115d6ff3078a6887 +a2f98c2084f8cd556cc1bab19398e98921ef56f6445f63444384efe5d7c895690c57d0d94cfd24e99f63f5e31859e34c +8c3994d3cb76fc6ac22ba2049ea4547db92ef78f009d24f08695b282c95e395f2c1477bd52d3f569d64551aa5e259b5b +b58571076faaaa547df9522b48c684b310500850339d79d2349dd8211bc2c8307d13cd5bb7571e0b5baaa013b502e410 +93e07feb14f691e66be756b37467f290da9a6677b8ff565964f010fc20ed9c58d8c712c4abaf012c787bbb22cd1473d9 +b4bc6159db1578111190b19aa678281eb2fcf7a82c7f699da7473720493e66e0ab54429da7af24315ed9f7399863c954 +93cfc98563f25b45c15a07780ae0a38c4ada52ffc1350233a3b45417c16cef92e7926354b761d0e0de55aea4c1314406 +820c37c923807790d77d2cec39f0eca63fa3ac6eaf0a1978522f0b1d293a5c46af3a0b4ca542cf39e796afc1fb3d7195 +b87fec722faec6a739355fd30a2757e5d184c07b5bbab8581b74eabc2da413faa6d11ccd65cc93f886c788239b1eefb7 +a183bac7f647a0c15b14089879a8aadb712f079bcf2078d3c65851137a00dd3ed7e47263c064feb19362f98180aa425b +996233b2010c20e0246295735b6d5b3e932f2aeaf0b35aa3dee66b6296f39e2e7ee95a7e1a15838ff3389ecc8052e315 +85c943e09a6c77e15d49ef4fe57d89744fcdb705ca370cdf70b3d84aeeccbf2155868f6790333f88fe36e08042ce195d +b88f82b35ae14a3e6fb972c47123236bb7db08b9f9f3828033fbf5a895b09b9b0de423f1caa04b3e8e754409b21f3a52 +a12c957409b6dd335964532ce3c045aabd280188b4d6ee809cef479e51dba030cbecc86b0ea8777cc8828c087006c5ec +87227fb4299efa535240793cf0079e952e971a18ee62cd71a62d6a5db921da669c5d8eb1bbda318ed5f3b03b38798a73 +84b5c7585fb1c98d031a0bf6fa8ad5484c7766025af552cdd72e7ae59247deb845f8678862c44ebe640a7333cef8391b +a94cdb0f42ae3afb4b1878f960669bd99008c7ddc24f2fed45ca521c60472e5587fa9bf97b315efee1f74619a4d9b762 +969a9bd21a6a90aa30fea44e397cc88118fd5abeb68839556194f9ab0076806aa320928a8ec94a47c4eade15498f5175 +b2fb215bbe7acc3baa04b0aa9be654afdc450faabe2702a0c9fa760c9e9389a58aa5e3a4c6af4f6f5c934640d90b59d0 +8be6a43071464e6c7dfb0e9a791a658214c1a95adc88f144d8349ecaa0e76b8ea5f88cfe95e82694bc170e49a43ec4cd +b75d56cfa1f3b61428d24784d51dd65b78b977bbb52cd71401ac7d3c2643f3dc097d6e7668104af402cf7e7e6ddfbaaf +811005c49d1be377ebd2fd3bea9771089a0f5675c55e9da5f31fe13cfc9d1ff8520f085918279ccbdb0363eda16f8056 +a487f7000c16429f2b7bd7e8bf4990bf26f666f8aeb11a99114d33e24f946cb0e3e025ec8c0b0721f9be101504c8a1ca +99b72e711ba7b97083976b2db7b97346000a78bff9b20ed910eaad02f6c03b45fb3f0f1217b328c3e2d87b481eaab52b +828429d387a0b83ac8e377b32db1c893a4555ca253b8e3159399cd053c5de726655a2ad39348c8e7ef11b37b0bca78e6 +835de10c73da7f0c07295a3306ffb18991334c86e5fa4c6df2d8091e8989f6454c8b43721b13696e1f665480a64284de +a4ea48f0cc5915993c83309df99247dcd7df4c15c723d168759175010fbe8d84adab8393707cb338fb90a6a77b69745e +9976bc842b06ffbc5afb309eef8964908802e9a5c733de4a8292d5d5773ecafb6daeecc63a8dc8847d76b77d4c3915ef +aae89156b013e4adb4bd8e7b6007937f0ece09af077fd407798e4155dc09a129d44fe8f8b5f6cf6b3c84746181d7f4a3 +81891cf2d70a8c326c6870a8158edb79babf302b4f9d51229bbafdf038cee39b97f01694eb719df99a62478bbf909a85 +97bdcb526108ef3cc2205aac074ef3001d528f56b4889573e0f4a3a2504232adf23880f7fa2f57bb787ff30b89599da9 +9778949a95fc663c742e70596faf91ccaf8b5b93b78bc2d4993480722ffe10bab3c8df3ae50535d258b6e749a0abb86e +88bffdb927dd88c1ba3eefe7da3fd6a42ae494bf282e094893e144330cf08e3f518f47aa1dd76d6f249cf83e6bb9d4a7 +b53effa345fe59917f4f1ae754e9f6b8fec9bd34cee85872b3fc47e52fee29c418b9406aa50c8d5a2e853d6f2056a49c +a616775e7e77e846066fcea413f0023dd491d8176dc450b0941368680571cdd236f0f83883d268842fa61dcbf3e4864a +8b5ae13dbbd07ad19bd2c7bdb48eb3c760244fe0caa73d28df3f0c31f5418f8b06862526f5a84bb16b2a92eb2c7ebc28 +a62294830750dbf43ea497155b185d611d75e767aafa8c2c30256f8a4875b6fdadaac429e8363848b39e964cab2aaabb +94b6973fb87c2efef5efc0e7dd7ecff5ffbe76320fed8a20d730f9e3751efe9e5db39981f45477ddfe037e18cb971930 +b931b6f789947b5298c258c8f0b221ca927c447f190f0d8afe2f18ce9b90979eb3247e77e128a1d6c57d3bf5523e787c +968259d9d001a08c0329bc19b2438b48dceb5942bc6ff9892d78fc36014f1b60a5ce7deecc7a808e41aeb4e26143aa41 +a52c1906f103e3fbee8c12fecd93f7b7d6f37eb733147bed841b32caabc880fd6e72884380a3cf93129d9800ee7877a7 +969dd12f0f6ef0b868e21539dcba5dc7327033eb546570f5bbf91b13f9c2ba6070da430538c40bc53a2ace4794514038 +a853a74380d78710c212bcfa92d3f9c433b8ccc6936356f3bdf923b8e420e1017bc530ce73bb8d04bf7a25b20594c753 +a84dfbbd3d9f409badc8ac2da5a0db98124df9d01bd71b1cf5b2b9c32866309304848a4bc1fcad1130bddfb9636c1b56 +a9599f55173e77dad54cfce6ddc77bc48588f36b79a98c156963a2f5397262ae07634a98ab9bfe1aa6357f78aaf89d89 +91e429b5ad0bafc09b5eefe600e179ef56f1ee045765ab3d5ecbd73eb201305a6de4382038b1350abc70bd1435151a0d +8785056b83a726622c565985e815847b63745fb66b138d24c985d6f42d5762c61ccd5172d4a3237222c881e5f036b98d +85869796ef180f500dae84f669b76a9b245e2ff4614a58d74820c22e439837b7d9866f480b72d88f44682be54c6dafb8 +a118baf9c17d85e22ac3315f5ba9aa4e230ca2a031906f99bc43fc750a0f96aaa5e6774d1cf16b492726a37db7b51327 +ac8e33f32c1cd14c6de14e75f83b8518bf1bf6f0a70e23ea0e5a29f096e2992f1259a121bbccc5252b9668c605240435 +97babe93e2016d29af74f776e167d82f1cf2242202bdcbaac4a1eba2b3fbd9e7ce57cdfbfe799a0f6a06a0e6838c4e99 +a70acd7e1f159adf7381d3f3ec2cc42b56232601f18ee62fb650e13a80954cd06d39a57217ebf4d8927e28c910671ae0 +b33ef5c10d0588df0b9d2d963912b294a2375a26bd25225f002cdc206a1cc058465c64180d348cccc899baf3d677033f +93086926eb1be21ab929b0098767611bdf1a853b6b67045c14f00714f806f8655be37150be1da05c5d2e6d9c66057bf9 +8890aad532a6c9b818ddb9f1ea12d627010b4120fd4969bd239a9654a05116272d4cf783ff8256de337bc01f9b4154d5 +b878977630f647a5ed7c99f59ca5eb653cd647277b899b918e5f667eb17b6dc433b56c2f3a2a18a785a4b5a9ae95f372 +975582fadbc276c9afc4d8ef767a66684df5f56e898d2a8749cbc2763982c013e5fd0ad0ca7ebc67758124a609b59663 +ac45e154a651857f0464db38afb2fb25853e8bb1eb476df31908b13b4fc86491d4f831c0a15ed6bed0c873b3dcff55e3 +a778d373e361753964a7fe4e1d28702c62a919e5203b941b04b0e74cdd3b4e838cd9b6dac3c39dd523f3227f1b5e6766 +b1bab7994941f8de4235e2e188b302bba847c1618ebdec7fb782241e9eca8d32dd506d254d865e0319c66396535cc484 +8c4ae5b346325f1d1609328e41d20108c4388bbe021361a86a1f9681caf1e6fd64896d72641ba8c984e153537317420a +8cd312c6a23e56657624d21f230a2c22d102badbfb2e38a8c067186abc5a459d0c78433ae7b54334591862c18864d7fd +8739d71181c5a657c6fcfee1df71756c3b6b8c48e8d97460fb64eb891abfd23433ccd08574a677fff600ffa5519a2363 +ad3c8d1e9eaa6f9122fb14d323318bb0338c5f9f29c719715cbeb15a2738493930542769b596098a5f505359c0314381 +a6d78b78227f8c1203e502caab1213092f320e77a6e9729e1659cf81e981cf905170e99b56c4eed1326320acc6aa60fe +8e5ba0e69e0f08a49ea4fa28ce0792f7ff6c032844ceef11be90b2215940d4b0f3e4acd5e4b189b189b0a0ef8045aa26 +b7b31957e7a85a640b851d4241c7b2f6af64f59ac221783b88c1b51cc4185f5ae6446a3c7137ee072c2eeb97c929d7ce +b066bb41c5818d6008349dc6015ab780633cd961b5d947062e14618c1ee1abfe42139c86b77e7f5be0c275fc3f5b8909 +a6597158957e1a0af153183151fbc4c73bbf8156c77f7b409d0f97470b5e127beee6d9246bde770127d3e3ad400cddd4 +82a6de6344e5bd0c5ca95f3be1ccd42fc974403269874603944c08ae1cd3ca887e66fc51ed61da8b7af3cce02f152e6a +89fd363aea11ddb2dc71288bb534a4a6e32feb5b9e4b88d132f4181f2579f8f8f39d19fcdb3d3d7ea118b9f4431520ba +b70c945986c8227d239201857e12cc7cebc932c3bda8913c82b62c872b18f866313738788e11bddd630bb5953492fec4 +b4e3a1e8f82d988c85cbb58d9cec69bc63fadb4c1c9a09f36b5a61f1ee96baac1a9458bfd0f3250e1734ab3fc6c0a0d6 +8d01d1eff496e8bdad1e6fb4b60e4bef0ada39a378c8b57cce2c115e611e0c4fa54f9b599e4c34dac925bc06e940eceb +90857123505746f7bff08e03b1a90f67051a71ba47b49e7bc63f1a8ec30e02a98aecf56465d3b4746aae166081099da8 +98b9d3b7fe1d5449bf6498c30036e3f60c8b90962fe04ede9ebf605d07497f617d99d51f0f0c0c14381377de765ecfd4 +891e7867e70582ade85730a21c19f6fc239760f76f8bbd8c6dafeddfaabd6fa4845f62d649b454fd3af8ae7028ee5f9c +945136f71f290d8cc6bf282b554cdf8ff92200feb7901987a1348f2d2edd3bd7b7bff6f57ec25fa302a27121a1a959af +b574d8379842467c5f3cdabc2da9a45e5a6083efd7298b077ccef2c4c3bab03abf1dc11507f4c896d745ffd41e4dd319 +946fea5c1b1d840c10a5a732c7dc23c2bc5eeeedba6956f85ad78fc1ee4a95b309c0d4a4919d1f7155814e3f36fe322e +98befb2f7d0a860de662f28968fb6200cee5a33cd7a6c376405a9cc6f0718b90fcc5cd5b9142e84e95223a3dfbd10f29 +8c5f208ca23aeae44a056bc21e04b570c13bfd49b14681cc085d5b318e62e4c088f0bea9dde52376967649919b59829b +b14478442f8e985618272d4c56d43a28e10112ea200b52fbb32b19a4d1eae965fd5ee1e9772416d52dc0e2db57d3ecd6 +aa308b19a57159ff702bceeb69a385f91339db7e683db991b1414bf3af9916d8e52dec4c492d7e8b5a5a011680defc1b +a8ac18a1adeeaadc192e15b7e92b611c936ba9cc9aee01f03c2a236827ba527039c719f16149d7aa5fb297cd63878766 +aa09af54f9a5fab6a61552421c13ca62f99fae212a9606f8a5a050997271ab6dbc763390bb98d90b1af3bbe9e8d9513f +96b8ce26b346a0d3fc99b6e463f0c619196cd85340b795fe1c1c0cd4f1b3a9f2bef5454e0bc7d51d75ce26f217460602 +a3efa46273c392704ba0718a44f306edfea03b1a6be0bc1e5c67c62c89671c650eb8ac9bacc35372ade6bed12321f1ff +b484881108a43a1dbc16a6e7369a04286f896aaa1dae847b4019fa287c18e9d82c8ba4ad22cea2837bc220524a9a7a17 +827b63d83e15ef61d54dfc365ed8a4f9e200d526884ec4b1d35032227245410ad7e1b1dd3c1d0ad48ddc4720f0fb5e1c +b513c3ddafb01b6189590b74d20348db74e400c106202dacd9ea9552ee2c642909a7a73ed7ab45a986eda3a0701be79d +831f4030463c84cc6cced28dfce0b3e6b6ead01afa200ddffd807f31ddd4ab93a8699ccc9d26970407628d521118ba6c +86312e006a800720329b82f6feb2934e2cc156958ba394278caa6766ee10800d2fb8907aa92346dcf6d389c4f66f5e1f +ab6841da372a286fde1dbbc57cfe967cb4bebd6fe2ab9e317cb9f9eda04a4db0d5844ffa8db72eb9cc6bf311667ff6e5 +b8238dca3f2be29bfc4aa65a9f59bd4e2c17fae78114a69bba1170782b993afacee3755e768317a923fd32d860f6a74f +923c1b60c052a3ed4736da7e84e52b0e9e154627cd90cae335dbdf05af109ceeaa016954d6e47fbfc40d9d5649c198d9 +96a69d18c838512d95d97735263a8cde752b2bc790b3827ce048e177a063dd11e2a69b86b3184873503a68170b2ec255 +aed7c3af469a93c22afb47a904bc70b7d88262ecdad48ea6a6c07eba7398410bf5a97a786beb11843cf40ddea9a37098 +a6b50f6369ae558dda3ceb8cc9d99382a1e62d0d9804b903086845479b9381fadf8d4595c2f342307c94d09e02e0ba2c +89fd703d457580a76544bbaecf65f93d3335d7a22e93d14afbaa61e5236d9c8d8b005e403e9f5e7a103b0386971a5e65 +8e909a3638208c8f885820af8bca6ae839128ce0d902a2b7b6f9713d21da8c943a7984d9aeee7fb104df4cbd1092967d +b41e2d7a1a0082eef43e886eab5e781bd961a83155d6a14d62756ab7144a208f4e4574d47d2ea094a7fb50d0ddd7a241 +acc6c63450d124014a1db846bf578c44e910436c83190fae428fc3125ff2065d4c6a1165aea799b46093a86126d4c483 +8dc63127435cf2f269a83024b562b3f4da18aee3399ed5255c295e6b80c357cd8f1887de94bcea29f84db3193570c417 +8c4cc72a98d42b9c5807322f596ac0b48b08b16ec956ea4a70c641a16a70895644e5b14aee85a4046673849249115abf +992afaccf05d79a3147d2985970c1793459130ddfb18a9d31f3036c260790109c9ee6a19a812f5d55779c2facf87785c +91394d3e84649cbfe018d9c709604f6aeed53e91cd57e2b29d0e84aca3c413f1e0135c6bcbc70784dc8985a30b9f3fb5 +a33fc126a8f9652c6905b1f522bee45848ce42d7f4c3a4cb3f6ce0e6e64c82de74e175c2ab6b5a867a8d42322d257ea8 +962d5fb816010a14140767c2486cd629f7793b304a96cb82ab85a867bd9a407bc8ed44131f87238c34a1e4ba41adb1f4 +b09048879ce26a34f56e1d4b2cbd6eb2a55d4ddcf3738c462329ba6726fc0a21b8c1bb55169cb8338b2debf20dc0927f +a9f9ddcb86b7427e268973bc7f3239212716df394394fa535b9fa5225b6191d234a44a126766eb470ade18c469a2d166 +87cba6afb115c0b3a515b08cc842e7cc2c705880c82184174837c0a06e1687ef668609c2ca080840fff80282caec7390 +ada109548c449990dd8f1bd42c9cbf194a62625d165416ca469c334222446fad7a743b1f584ec3f20526c3c44d870696 +a69a0c58fdfac715311dbd37c4464f0475120362234f5366ffc65227e8178e037ae91efa5a52cda5fe28243f47390175 +98e726cf884c6f706fa25fe25be154afaecc0c3bcfe682a85afed225bb44ea07cd1767b4d9f2201358ef19770330f0bb +988ad5bc57f0621e3ce1256720f1161e785371fd478c467c39e554e2de27df5ab8176508658aa90ed7179bc212ed0dac +ad0ff6dbfb397da51fa4d9d959ba5819adbf1a1ee31f68fbd62ae07a9cbce0641588cb1008dcd0056c17d74e83c7114b +94c703cd32b9f52c41b07aee3e3c19b8c2b4182da80487ed7991d568ea8827f0cdbd1e977d482dbc102c4de2058903c9 +906fc2a06cda5d82445e50bf475dc4ff2c17e64c982539c26545798f9e4dce0bd4daa8d55b027cc0a8e1b26c3e45cb08 +b09a51f22a9a24cde25f805cb18754e27d3d168e64db4ff13a202839a81c69dee8372b5872faa0d23fea283609cf4391 +93c908f514e97502d170310bc495d02948d99eca51e71f9a4779ebabae1431e1f7ba465af485546a9fc97c025877df50 +8337859db710ed7e276a47e90cb3912c829151cc2bd3dbbd4dd04acc90c9cb4870c44f4233b407db8240a93aaaf7302a +b13b16ea0943e235f8cb064d6dfaba9bd8dac67e9b6275a4c3f54a1770b9c905d8855517415ef6489843848108dc85ff +b28489f0de1a76839a898b8d2f302c95610f17e893a6e7f2e824fec773cde6f2b219038a3f1fa212bed98c97daa66d5d +af13afb48d56caffa32f941ac5542ec2b7fc0d6dbc3b16e51bd2a8b633f0a041ba1e098d9a68c470da00e630f08f24bc +81465afadc45ec24825cba7c9edbb36858bd2ca8f8b0b9d7240152b58a411b08503b530932e7b6ec3b0f8612869cb244 +b2e6b7438fb6f70b52b8726aa870f18191920bcb213a375817d100297b507908d79567d0c1780b3f25be807a8ddcb853 +aa7ed2b0b2bb2070b5f001578efb3d1085950c19f9d06584a2d31e1c235e6d6d1d7f081ca6fa2b0b0616b01b9a467005 +91a245f1aa8c8ffe03f7db1412e5466f0345196727eb8e6f98b80c01672e4260e90724a538d26b094e678a3d85f2dda6 +b9ecde963c8176d6a726b129f229d803d1a6259533e432eecd7404703c972ec7296ba35015acb1f4b5ab2653a3991902 +8cf535bff6e98f75d98c5d2a691a5d1aa645c7ea18d677d07d3a11a9cfa222a7b8edd048529d163120a5aca411161314 +ad2e51afe96dd0e942a7da5a37587ca1359fc17cf66ab70cf37ab70ea34f90054fa52503d6527e89e464f8058f5cde79 +97337d62f83ecbaa1f402c3964dabfaeb279b916ca08430a61fad6c31d60087c7e3a9decd541651a2b6e68fb2816bf45 +898b7581288bc7f97987138b7481d29e2cfd5255ebef133177d9060790a0973ba07de62cdf38568c336c237cb084b7c5 +ab53c0759663bd976de62f9f98fc82fa4f58c146b8a6a3053d4dad836c762063ad69a54d51b5499e9def86f8d4bd7ce5 +b35ba58109d44c14be159333b999c1e471fb61f5ed48f9d2a6bc689eb045864f3fe88a6ecae12315183703e2b1fc1ae3 +858a20e233f2860c24c5a3f4a820cac7544eb3ce91a2d8284f12013b13120121fea3c4f25427c3524a1e883aead429e6 +965be1a56adffa51f5d80761327cf69656e6c37577225b36a34afc2f8a959d8799ad0ecc3eff4470d49eb22ebf8f198b +8e575ee39077bd865d70fca2d93473f51dbc99ef4f715f4a3b1d9eb21deb2afcd0873b4dc53035b77e05f52029f069e0 +a5c670a73da241f5888c5cb44c27eff2b8ad3f491e0b128e5f1d498aa6d76640c9e625f3c5399ad8e99b666e4b2a9759 +920e1524255b03cbe500edb230696c55b7774963535c063121c9e9987ab74d504f2f1cfa14ba7ca82a6f66745fb0b392 +8a0bb7cb267b8e1e0cddee208734632b28313b3ad89f9c2168f341be5390bea3f09eaa51f8923b87697799a53201dc26 +859ab9b3cd602e78dbee8d8d5c3a9eb4270f130ea4a1b417ca5612be753d20106cb2724097840ca8919a9a96e73f96b9 +a76126d9a997fb0e7e2b27ac682dda1c6b99067313371387084be1f6e7a9a59bfac395e91f089e14cecafd151674a446 +8aeb466c58e2829790975fa08dd31f18a51a63777070d2e24605adb1a77b5e0e5c5e0bcb483076d23a6fddee5f402f8d +a8959f312f2ce0d7d974a4998bb709bb98ff6456413ef4ae9bcaa8d687b8b5ecad91414bce8f704aa44a83d8a0c86462 +b9545c8567827fb28d070624579702ab96af4f06fce515ad880893b97ad9a374c4c91d6288e2a584ef14b1ce4930a6bc +ace41f9c2756ced611da16e21704a367b122ee1c2feb83145103203ace1a5cce0ebd3bf295caaeff05281672c92574cf +93b90e75f56601191e3b568368bf1d24f97512cd42cac1da8b42f0019e07fa04cd5f835b7e9503fe4702632df27ddc19 +973c8feba289eb473448c32b141ab4a6f861222626b3f2fa265a431a54675dfe5eb479100a33c172ff935464d6e85f90 +a6b0798ce89512644490d65ce3d0441ad950f9a25f6fe2c9a766a58b9c8222fa6cba753f314cc7ad6b6e3da881c67abf +a79c560dfa179075e0d1506adf5082318915c15048328b15ddca5748ebc6ed8b10fc5d7a50bfaf8942cf9ddc6912be0b +8841b34df170519d07edffc4d33a0e70c518dcf53ea8d0a9f13563822312a65d16f99cf596bb95eb0daf85435d4bc0a9 +88527539258323edc2c296dc742cc26b9a4a984ca299a81705c702a425ebc7345a79b4df84b2d440a1e73a09fa18b5d4 +88026753926a068e1cbf49a9a0fa545846cc7ca9abc0778e44f5b7510c1b6b73e9a9b1aff754199379522b2a985c0881 +aa2c306ccf91f967b5cdcb50808771ede36acb9a6cd84fa15c6de4c873cc2d0a64e79778a2822a109b41f5205fccc30f +9751fd8bc2a07ffe0566e5587e652d3d8d5250517278bcf8754e14717b8941c07c194f14fa757f9a2f3461ca6376bdee +919746e5eaa18b734ef59c0de09ee8ec65e348efa659219d9eb6a3a77b8edd9449a6dab727e9860ca0d3837b161c0352 +a271c146794d6a65c6fb87797262c22b1d938ecb2624e03809233469296d33ac0de6909183c8efa438b5f3971c8c3eed +82fbadd9049248914a15755dff692bf689eb2650fdc6e44e8f3ae003b8f15a0f2858c7a2a8dd137b3448420c5f434229 +b90992cad6df98d2fd1c75bf90978205280d993d439c44d6721cb95d52eb042e01b418e45c3c48ed667aad577f3fd1c1 +a0c3d1e8b80ed4a979a22d6a9647bd57f22ac8d73c37ec3d56d06dc178a5c9d5ad3ffd6dba9eb7844c1f40b8c89d3d33 +b513aaf2f0a07fff3543d8687426d07773677ca4d23554ca517e50bcb891164d1f5651944a2f6e0a634475f6d33bf0dc +a0b179aa2ecf572ac4a3ed898aa34679be3cf3d8d9bc74e33609345cf1743e915124a59ffcff41bec012ed2a99447e6a +8e991c5549126d64e0b515a03d266e19097eee38d08121d942973d568f8ae23a15b037337cead0686f7c944b9fda3e39 +93cab29e1bb116a39ce1a82897776da1bcac06ea131a7dd141a688ecd4089c5a0b8616d6721b1c6d92309ae0820a367a +8d4e0159fd3534172b2481764cae7746b1a47e9b7b9465fcec0824ef234674fc567c16ca7116dc90ba9b2ac3eef28d60 +88cbd9ff6ca551a7efca30b5f59fedaca8f9efaacd4e9bdd17ef0dcfe4f3449b52c7d3066716f3e7fd478f264d10714e +873c71b2feef5230c31f13d8425f8b0eb0171eacb9225f484a36da3cc796d62594fa4771af9ce1e7ba951f5377e5db76 +939eb99d7fefc9fd5b3dabaaa5b331365121374a4ced862b8cbe0cb3c574fb1f0cf4932106088a1d87522acc31ba7f77 +b283f1d54bcc72e31ef572498821ded40485f38d2ffc67f70bac68a100612b020a538b36001d94228a4dc97da8fdaf17 +b2e4c2be605c8ab3038b4e91bca7e77e127c5c3106913ec1341102e138bc8aa1d218c3d3c2ec1d36fb8e044b4bc211a5 +82e73cb5b2cfd78c17131e871e92026643bb56916ae64f009a009555903df878fa3a2019b82f7e71a3ef7eb503c792d1 +a6d828a5b7de0e7818975b65244f6efeefc712c29f2f17b27f3264e19856d869c350ab39750ba63d6d46afa3aeb369fd +865b17027e9d5bdf2de0afa2f524f67b6defed87b14e0af5f4b6b1966c2de45550fd2b6b39b1be88ee9cb06e755f917d +ac8b47f9b7e675b556445d103271e6bd3b39b94d15ee1f3108fd1b777d439c75437c78ec3b281f7104af6d0efbf0ecbd +85c2f71ae18105fe499aa4da0a835de3e92ce05d0f28ccbcffdd2860898ae9909e1c05831ca4fed96545133bb3170302 +8bdb4a72b06562591ee44799bd7400ebe71f6737290420dd4ba2bffe0050d8ea4d586b7e329541a52611e945ff1b16b8 +aee4843c9ab02026ae723531112170bc7464f51460bd4ba5166fed54ecda0f53342cdf94f4354a5bc1b941e8ab085a80 +84de368006db07c89a7a43b7de54a63637ed72379a41d029430f6b4ebe404866896d2e84996998f7b2c20324143649f8 +a8375f69c01289cebbc97843f417d0146f68c6416981032bc1f42d3e09845d5131eb9b4d68fd0ba7f5b1223b83e51bab +b1ae126dda1a88fee9265ed8e5bccb810014044d83c70e01e7f80059a685067f4204cd15809b230caf5dd77738a64e38 +8177544c7b1f77181735c660102da20fbf9a2ca4efa79b21c92f1cd2b912630aa6c830b7513980656bd275097be59d1b +874fe8038905065ff3b77f1e53904854fa4fcbdc4c8959fd2df2e3967b3b84100c6f63fc44338c01fb26c042c454991a +b19324d737364cabef3d2ee4785e8f19cae399afc06fedff8fdc120e0ce525b3755161183a1f5ad11ee758104081a49b +8e7525bffe35c1f5c2db63ee911e7e0197951ebd25868660e6672a3e7d4fb309738268b36677921be3be2f323ca718cd +846c51c7d22e7d43f6e2addb7fb25113c25ddaa51252a898fc1d7d5b510f772534c4f5d37ed3074d124cb259e2bf8110 +aafe2a16cbc901730178841c39803ed84d3a78f92f42f84a1c01be4aa3b63ed7ad9d054ceaa8a2d56eadddecb287e8b2 +8781c9810ffe3d93fbee3b576a15b8786c3efd6b5a96b75819b1f93daf413d4fd0f56d1ec277e8f5adcb784b17f08371 +ad66011f0e2927ee1924725bcf8a296069f74df78ec66ef6aa8792f68425e48e9d7f717d022f68a079501770ce192fce +acd0ef46fafb06f336565d86e0b22f9e5500d2f73d047c827d6a207af40b706440afdaceb32e6571deaa1a79f5e6fe27 +8f65bb98baaae22e84a3ff375e7598b5c61ebec676fbb5a4f79c8463c427eaa96ebc51b1fb504840b7b0206ca6c2c72c +a4078341325d7debf766e43679b8b68331dc13651455a73912afe062525d2ea909d8829ac08771d9b32f2eea28b64022 +88eb29841b022f2ec9029ecd1a137173cfb79addde1c7cd4be425e5806ea6ee295b11a0459a940ba79f789689a8fdb81 +b762b9923a40a1965847bc7d046723c3b8f0d63323303aa3b25e93b4af8e527f1afb3dafda831f50baaf79926d1b1e78 +a21551dffcdb069cb8f30b625c8404dfe5efec83227e3a1a67ef0c9c9b49c658bbb31240c3ff6f8c68e02f67974c732c +b4735a6610c371754001425772aa5314b759c24da50b38a9390969c27e215ad9d463a76762323b7954756a8d5ee7936f +81bd78e545938f8a3e53ecc2e88dc26bfbc30941cbfd009572d9b38f8eee47a85209a318cafe8cbe055eccd5e62d50e4 +82ea5495db9dd48da97723bcfce02788549c6006773eb9f4aa4f0f3ae13414430edfecb5cd095259179ec2014b6ee1d9 +8493147b8f0818c2d5e75acda498139f95fa6f904b47f87a8c07e258c60f39bb1faa1d29cf0834c8a1ef1d6015d37b42 +a491233ab353f9daad86e60fd48b6f70dce60dbe36775958d8e270725cbbda96578b17a0c4925ba1298e630c6b9ca9a3 +a8c148b9e1373afa54778b6d4f76cb12f40eb6e07404a7f27b271fbce0d18d621675f1dfcb30e3908d7df1d962de2e5f +9826a45c29ee22cc26ae399be25cabd16180a291669fc822a44d14cfac81aa7ce85112d7f2c30effc7e83d131c9937cf +a793c75e716aed4048a2893f11eeba78ec565ac250bdae16594d056f06f4aa7d2a156e1617fc26def4e39984fb28936d +b6c454d822343cd1b1ef7161cd2ddc28145134d4e59e6d69634c010ad1bd44120aa8458eafc28f6103ece7e34b368e1f +a3340a0edc3fa82fe4f31ca2d19d295aa09c74cda3bfc3534c66eb71bbb7903843bafa92f7120de4505c7ec819a89664 +a18e5218cd4349985f412ffc7741b5db21bb14c6e00431daba194771300e740f75fd46aef1876543967e8719bc6517de +885ce63a88617bee05144bc67d08f1c7072d8c4e09b23b7359f020995aa8cc9654378d382de6340ddf0803717687eddf +8d8a0b614be7df01a12e534bac102b1881905a9d084146b3d0cf2086dc7d400129e0de8e48fc966adf9d8ec8c1336429 +8baad19f604bad656398a4010b20ffb6ec6131681d120220dbf2cc5779de1ee146d0b773bdbdf4e8e30aa0f464f2b18b +a39ae3d204491871c2e88d7772055b35af341ba66531ce3575f47c749eb8e380d63a7939d3408cd51356cca29c76d4b3 +813afd593876667ebf0fff2b8a8a5bfd0f42a4fe2e4a0b7c78b6183605706c97dfc40b627340e1d9527f618719d60e88 +a013e458d678fb302bcb6f002a52e3e0ace443009eecc9113ab5b78f4663acadb8ca9cd757a7cab1e850aa23f09ed698 +b6e14f351fc47b9e46a83984756812cfac795cac5ebbc6f00d673ee23209d0d91a6bd7d576c7d35ec3c7e7cafb758a46 +b94246a346966caf6fc1e0081a211f27b38f058dbb9dff915e3e65391dd36d66c51324667e3d7469a865c0cc064589ab +a1bf4bcc7420bd17acba90ee67af96e73502777e1723255a73b1ae3e92fc77e80a287ce7c3d4088040e0edd64577c8c7 +8b6f5eb9b6bc7320349b19876864baa6cd8e07da4f70653d7369740184ad416c40b4395c04750f5d8b54b3b3ba68295f +83250b957d920b1b738f4d0f44f9eefc01b5b0582128f5ddb5a282a11ee207ba1ea7867f00588f8b891bbde2e56b4c43 +8eab312cac9de78c9fece9d67a6b26d58c4e15d5e0668ca2cca2d9c51636eea5210a893f9321c2fb232e09f9d0b40fa6 +b4d1e5f284d50360dffd2a0d21c4b31d81f521158aa21bf333a525cc68e690ce8ce4f0eff8e71a0c2d5853e2fed18231 +b1f194c28bbe217a2c98ca8212fdca744f0806d60e51f9da81548155cfb97a39e2a98e753be8b2196c83f7db8caad2e9 +a7905cbb59722d9463c6317ae59adc10d5bcd6e9788f2a54f4ff4a4de03df3f830d6b8faebcda541d429a7e42d158c9b +8a3b31d0d0b33e7011dafe25ba5c3b7629cdb5dd5b31385d786fd80888fb8409812b96d28fedf6a401a93310b045c620 +86e4990bf50b27bac76926dbc65a1ca34a759d005e56eca56fd0e00ce82635dffed6f3052740cac2f1f37204699bba9d +8f0b6a0b66f1f5fa3d12af444963c6a45785a36dbd9e1a5f42830b5534ca8773a05fb618292e718cfe8a066b8fea7980 +b7f206827d715b33989de5c02f0886d3a457d0ae34931ddfdfe2dbab121b69ccb560a71fdafcc3ff204217611674f5d3 +a6e2ffb0c5f29043984c54f5fe6449ac4b7a86f2982c909606b88316ef1f0a54638d565f44d2fe8cf00279e0eee435a9 +8cdde76212e73f9430cac210b52507583e81aae0bea491f6cbe27e5e2c8fdda373ce8c7a5f16bcf8c6238b282d06639d +8030955eecc9b8e2161d40f1f514d58024d25e07c6710916824ed8982b8bcf7ebebc5643f0260e1ef6150b6901dc2dbc +8938fc90e836d7bdf1cfefb2716cc25aff34e7c4dcf66b349d1fc6681580de7f58665faac29494b30bfa0c743d6f33e3 +b182f9b4a5d838e9d534e41ecbf06330c56a8a64800eee561de1fc2dd9486565ae6099f40d0f1901066f45047641bd65 +81f98b85de7b6c581613f4a42e0cb0dd9e6336399b39d38a4751c2a9f195b65c9e5592fa1728b91d83cac0ebfec7d675 +94681572da95137ce41d913360cd567b570a87c9a439f2b67b90d623561b75bd3dd0486a90a63d49eaeb412cb97768da +8e64922606ce05375556901b8c042d4f41a18fafeca24c1d56998e0bc9054bcee7ab079c3729a67d908d0d7967a85edb +8e10e8952b24125321d0cd9ba922affc93908b3abdce47eed22fb2d44cd556842c31c36de6d4c28b4a1b5dd84e07df81 +b6d464020a51bbb53670c81d5f1474ef439e006851d5d5a3fcf74219614a2a9c983737f20b254d38a2fc7333b35fb3a6 +91801712ba264cc2eb65e8a3d5a032674a89f4c2dff95ef9d80d3a9285f3c2cc108e775dc326881484756814c2a03637 +986e5a00f13326735bfc6b41b086623101f01dd55f2a88bf995a3b81054da86bb2f97fcf647d58e90428e8e9555eb020 +b2875b4ebbab678fcafd270a0238a208b19803012fdb3c23f06c74bfd45929a9856b7a0f9881b75c7e97fa9d35e49d1a +b3d1acb9c844d8d2232834a81862c59548cfa849e8e5408ee66b4c8b86ddac0fc231b2538a752eb6c1ceee92ca443d1f +ad0b1b5d6bb50c43f5f3b692c5d3569d2117b01caa7f0ffff502d5ab727f7702a2d458b89d77d218d3f92351b4c2b92c +95b1b99dc260ae6ac7c387bedd43fba793274b15768d93df13c88ff6cf637732cb6b1719467919b444c3b5166f4f0107 +a0c3c8b59016056742145e7f4ca6568d4393124efac6540645152bf71173dea3d0058bb11b3093228ca4729cdd5b3033 +9278afba60643257d9f21a4033df3b57743c3b43d66d96ccf413154a63db054fbc3a36f2ef378169f4f19987964c0bce +b558754c97f9824a72644de1725127dd36e284fc07ce89006b990f09db77c48ad6728e5c1891a691460bd5416ad65faa +833a02af76172f868a25e850d35f4d164889bab8381fa9c8d9880ab0564a3769ce3961cde72bc94ed73a1723daa35cef +aca496f3e528a2e3eceee138291107ddddd68bb088b2e49ea76d0c4136c6924b3251d7661ff467a36dff29f07ed09102 +a9367961ae88a19038c446df3eadb280da005d120c16f48ffeabbe4cb8e5e2784902cfa1192876ab934bc90606baf2cf +b43feb49373dc36cb46e050e3cea43e636a64289efa3af790dd3fe960446492b858f51b3be62c6b75b510d8e2b985573 +8cf24955965468125fba2c5a5799672845ea6ce97cd307b09236ef1a3cfe55c88958ffa311e8bc8335bf261a84275d93 +88ceac98b512e5bb915554af92318a5d07a494e0b8734c4415e192e7405d6b06d170fbbe254e3bf387759f6d4961c34c +8a9044ddde945daf3e0cb3f897ca00d0d4e6a5f7c99aaa3929f0beb9a44d2ed23c191e37c57140ebf3ec759f50f84d57 +8b2a2c0fb51e7c5fa51e8c593bcf118696b8411bc93e35cfe5de6c5465c6e80bba64398d7c6b71badda616b918bcc7d0 +ad8bba2b7d5577f971a1a561b17a9d8f6b7c35fba55e3e421a0d8d77b520eccd52122f02afaf3899218b652980986a92 +a8d743b56896d44bec838e10ac1ba5a43f58c26655c71be0a5417d936260453a8e91752c87334676c5dd1dcdeef4fbd7 +b0b0540f8d2d1ebdcd74d6e4007324de8f8bdea0531880520d79773c0b8eda65ed49e672c5a294fca6b4560442085829 +96da830d1c1625d002008e9a364005b2ef16cf56f5aa4a758ee963388493cbf90aa75c25dd67d496af17212537ad44ab +89e819577a95195056b872f8f790d001fde3253a23120e2c41b3ced7fe8e9bae0df74907b7d65ddf9bbd6d2efa18eba3 +90a139ffc7dc0992c023651517db4c195aa2f618dc3002f4a0a43013b6c6022d8d9844a49cfbaca543c9cf5d9b2210f3 +a2061f543b216fc9c801d885ed681f9253f67cac40528b23aa8a709f24e0992fa42a10f1bddc7f10af2c22209343ca26 +b5f53715b9146966f386f214477743e2fd2b771bcf90b192a5863c06d7225be34edb6bf71389085edf344e60afd88561 +9634ce27272f3c687035789fa4eaea2aaa71db5b5531b21b8e029645827b40561a5901b33afd80a3aeb5777aa89850f8 +9674736cdb4a823bf982d54876794e99c7672eaea7455be90e815abd03ac06ce1fd9e73bb987a515863c6cb4ae597835 +90379303e285b19fd7816a6d02c0b8f94e6291b56c196d76aa389cbf813dee7ebf64e45555ebe8a281daeecfd7aa5b00 +8a1f759f6cd6e5134f67b96e0edce7170e4be1b39afaa7af1c2de989116a6ec9d38a2c077c8e6e65ce0bdf729f20f1c7 +b416f9937a51a298548e91cbe8fff71585335c00e69602423adc9cd72d18821987b8fb5ede32fd8bd2166e2ba9aaa792 +a423073148046c81f840a481d57909f7ef621a51827e44706da9e1f0e27fccb8f88652097a9880ca64c41f6386aa9069 +a173305a5aa2a17349eca704fee25593f5c2fdc5cd8cb932a1bbc0ef34bf54ec2f867ca93d8e6aa33679cbb71fe11083 +87c6756d14d815ac8237ed4a75fb11206f615585ed527ad582841526371366ab19f602c7448a21722adbf2d987d89b81 +8a1a6f06d6375d2bfbdc7531e9177a45330458da2581f65ad129367c400cd77f548aa748bb470bc560c0b02ee5b802ab +a24a05c30d0fcc8334f6974c30d13a5593bd3b388e2146ba006f232bcd6886edffaf7e48ed6126efd3e651997dcceb12 +b35c5f8a5842d97cbe19105305cae1f971da5662c52eb979975efa0753bb60a050206fc0babac5b5083799e9ce8a68e0 +939ca5532c922d00d08ec5914e6c58f8a1302a1214a1cbd5c844b334ddc84e694768edaf1a2af02289ad74970800198a +911d6104a240f84e0f6502597405b47a7faf5e68717f6d389baca62bf82fbb7207ce8d0c584fd9d57d3afe1f957b7cc6 +88777ba7a4bdaecee78d42687cb4fd6dcf04402b43524e2ae67506d93acfdc29d9dae640c05d01c90caee1d04cf3d35a +9226e684606f8169e38dc21a14911d0306b1c9ce5244500e4b108eb1a0c0783486acaafd2e0b3b60c413bb003448ff21 +b2f527adbb9feef9553bf508f192b5ca211d0e491925a2331bb294fcde7d8e0fd72b441e9f07c838640dd35fba03e1a7 +b474e6d6ce22ea272a93a3c078197f40c01b9121c6f3083a8e587c367200b8c97ad94e156883475603f0a66d0340fa52 +95c4d9896df11d2b5a8205a19d6331ea02a2de038aded8e6fea6d79bf5a6648d5d986bd29430e4cb5a6afde8b07a9a48 +a12bc53ba6b6f8350b400fde04518a741a1d755123a6ad1d435c7642492c7df28f7091f17b254e793561923de781eae8 +8a0578ac03070bc920a3b5a7a33d976b3133501309af5339b0cc70536965465b4f7288af70db3d5be16bc2a1e5c26a86 +a66e27284ce6114e48ab56d7f623dc37a6e79cc5f487cb2bdf0acee099cae744cf3a9de53b111492b5ef99b0deaae0a7 +832a338951022c80444ad8c6d0285e86db54254d2689defecac2ed87f5eb4d876373af6d76e3d613523e32c3966142f2 +81e83f01bac3ac3fb67e780b28de30b32247a774aaaae118db3d45c8e74d1d4f1defbf9c2a7ffdf176f5c1cf4ae4167e +a1b214ba7265f692b4637352c6139bae8bcaf3e7db5806fad0014ded93048fa4a36ac9c9e0b7cca0a86cd45bbbba2fe1 +a7ab6f470a421e72fb703a9d153362056ce80c40264a3ee5698168130cab8e827df5ce3e6321ce9a669c87a2e5c67499 +aefafd219f2d062a378474c48d2650b51901b6bce00e4ba0b509395a6fb39699037577da353cbde187e65de87ad01575 +93db16a0a77d1b181f33ef10300112fd8db5b2eea26732bffa3b1fbebb792c6ecdf2899cf6f26b505dfb46deb81b217d +a63b6d9d1cc2f31ac5f836133ae66bc9de3e07ced5026f5bc90116599461dbdc03cd7680c1bb43dade9218ebfe1bc1fc +984b49ca86d38a486f6315f4f9e6ad521901a06f8862ce1fc095d9c66bb2164e334718c71d7472ed765367db5fede105 +ab49ae93955a38f45f756afc4248a37773ba8d0a19779253fca3b744854715b9c9b10c09a37d3426614ffd3a8ced7bcb +b22166dd64c83fe16feecc09d4b1df2d967ce7f4ab526ae39799dd5a5a4a9ebb1d4a432c5efb90e0875a4eb6b079e2fd +aabad619d887b69b9562066fba2179c69c684b8cc9318c9e39646f4a5381535c024ab277a0f0be46abc95283b337212a +99f5d484db149e9f8dc9c6758647c4e3702d88986600a3226874d612bb4b5e92a76b1dfbdb0909b8f21afc773ec67c7b +adc8bb04eb8c56dc4ce97c3fc1670da10db134cff2edc214ee3221079251b968e2dbc087c56c01c9260b49506958a6ac +ad625ddf5cd211102543e0943a7770a9b45cf3550d12dbb484cb5522b70cb626f9ac795b07a305be3e6949d7ad475f66 +8f9f5b2b43624e89e8535dc73fc54b744f247572b2920679bdf6a3ef346e654ec40fe8f81a0f7c7ce7cd5b48f3975359 +b70b1642f28bad56bb24b342eeddf5c3782e0cf6e0d5007c252413bb44b32586da1e3b4d8b45a72c91e44e07334da68b +81b0311e557c47ec22c5f5d1f757c6193cfffae357dd2460019247178b13733484dc8630fe2e13037a1a3d681c69066d +951c9f1504b19acdac1c04aaf535d3cd3e39c431b2b5d9def9b374468e93d378ecc3f5aa02c91ddb93eea431b327ca4b +a85e1f4c292723d18a49cc9323dc7af12bb5a8d0c95d71881ae235ce123c50018907f46bfc846dda1a01b14ec45dce14 +8a46c8b86bf9890df60de4c210cd7865892d0c11fdf2747620289d73bad597e6b482c208dc310c25955dae8392d8f278 +ab65408622c63b67842a80c4ed665258ab617ccd07871fa3f0fde2e5ddfeec49f01d7501790a60b3a05d7579b087b787 +8706913d42b557d9ea4d7b70697069281504b3c4e1172a2291e3b3e0a0305c8d0bff6b7721356d971d2fe58e32d4556f +8d9b8f3c113ca1215dcd15d4c37913d023c8c5d04f617319af76bb7bab72fb756c5bd992db6b9e765cd7695c316360f3 +942d4d3351b2a9bfaab2500b27d24fc2d7237e791993a7d0335f36fe6456c5a1a8bd28dde9228fb139e95288d6de5bbb +ab014e9cc7d3ca08f1d3d24473ddbd693331f4bf21ebdee0fc997aa2faadb43db6a1195644c459b52a969f3d98a85b8b +8b679da80561955990c91da9093837953f4ff7fdc658b51639c462b578a2b31443421712c6b7742fddbe0ced48c21cb9 +a9132ac18b1bce93e815f6d2f8a0d2f433ae4d6fa04269eb0f5f25864a8009b01531c7c3ebe87f07454927a010ab6dbc +8ab02c113149efc877967c92621a8ef618bf423017e78b9cd30cbb13c51200c6ce27c46be75e19ba843d64a3050d4467 +a881043298341efc28c60d850d90d90279fa6d8428953337ba57b74eefd858e362c6118a82ebb025c9c102c91b4aeafc +92e4a587479c64b8df955c6bf1abf1d7979a978e45d96f05bc1b9648f10428d77890be9ee03bc1b1982f5ae7b926f0a3 +90c21a22826e2e9978dd7522f51353fb33224cb65603779de41db3ba41e01d664e131233bf873e28d6c71294b565c533 +88e8ccbdc54ff06380c2243203d3f8c8a75fcfe638d6e6a010c0b3a39d5cda31f8d2cc416ee5264267aad2b457c94e50 +a256198394b458f6468dc91c35f579da0ef02a55fd93e98b25e43b1bcb650ff889df4899236765c1a6b35cf49da940bb +b5c7d9c03c36cbca068abc6778053727e77d9b58c5dc33b11629f1ade1c228b1c964f5a7d8dea16057e76662c4d79f18 +9588e133517f0d49622222b4de5c124b1aa4260971e43e4aa767fba8055540f2848954886b7f245583ea527fe2fd1de7 +b66025d75169bfc7ea366cd32419e24fbff829709e3e9587d7d59620b3a7b72034d3303106f965f5f7a71d66b7f314f8 +891357bbe44e60627b975c10c872a34b78d6b264380e351f3a86dbf99abf8e2dd8d20c52dd6073086e48e1ca782e2ac1 +8a066a3482526a92476bb8c3e5caf07575c725d72203d67ce98f654f5ee8b7f979187416fe3d7ae0128800b253d7209d +80a9e3d8900046b71fcd5b7034d1e0f57d95d2756da8307a11aec0553e5715518a125a653d356f399409545256a1984c +924a13fb2da7a899cebf2ac09c8c0a183491777100de1aa056a6c2bceffd5a63e255f16a9066e4ed89ef28096a1230bd +866cfc8116d2e0216d8049d5ae2ef0e3fffd377028850716a4bc2cfe16c5a6be023334bd6ddafa0c77913dd4ff0a34ff +95eb74bebbbc59d793e3fbae8e98c258451bf9bc5097df4edd832e9f1c30a1446a59e1f75a44832d0658d5ecc13dfc86 +972517b2d72ab53193db5d682db2de7790a418ce4952c29d64e1f9107d51a782f4084591b7c775648f103445b797e8e5 +a14ad2cb69da568f2f958ef4253d7a6daf574c6976f4f5d771ae7673853ca22eca81e20400092bac84453b6eedf5aea2 +ad95bfcec6c06cdc11d316b7ad33fe65555e985bb33b15c9f481a09caba1e5990601ed6a88038c0ae2e04b1607e2da48 +b7e3bf3a585af1029d83f12cf75acda894fc4441cd7b3d56efb6991ea91b07512bcd7d6d68738557a48f0446b2cb21af +a57efb1e2d2e10e41f356768385375a21d9f78bdb34d618117581bf7a15024eba43570c3956ddb85a025d39476f831d2 +a66d3622b1cdd472a2a4491881de035c2eb4f1c94927902a3bb9f10739f900130907c6b002982e03785c43ac30b8109d +a79f2417d32fd772e46f3bca61ac788af8fab174e1e1e48a84ac557f7e80a9cb4e2d7b467365ad18f9777f4cb5bb2b8f +b952b976e3b6660326c0ed357ff25ee1291b74891f3eb7bcea39dec2ebb11e287d6e26ae0506425a20e5e445273cc63b +8c23929e9740ab51d9b82c6b7840067e7163e6c7b9b9441e1bf867ca2e532926981c98641e6c798ef12d35108abc1dd6 +a519578772c9ed2d691a8c423d360e4bad76afa422f1a5218a7a08ed52c9a5935ce2ae4c0be182eac0712259a43f849d +b1529dd189cbf3bcca50e97199bfb85b42f2b26edd95b35758d988d1d3740f5d0d2e249763874fdfadcefad9ea1b3d02 +aa3fed8d14a4f38df75b9eed7f187a31cbb7a748bd3225dacd8325a71dfb680729fcc91ad8cf0b67ce314e1fa8ba02c4 +b77c28abce17732a08e682491182f63fb55640e60384932f6a9c6d3d7886508c9e67a841cb93e59448d2d59fceec4620 +b7a24c58e3b85d60d654ed14d78993a9cc78c130442c8cca42921ade8ec94bbd0653c9fe5c69ad1fb2aa46ffba04da39 +b7d08f3ce97901261514a5dbae582848e75515c5f9f41f5e70ec17a8d0db3067ddb19aa1c86803bdbb757230b148bb21 +a5b8a6818be4d59079d88f72d7aa4957c48ff5898f3fd01def48ff6bc7aaf9840aa91f2f05617d340092dd9299115c2e +8e548db6b871fb23ca1cb8538d44b77ad02f4cae4d33c8c43228b820abee1aa913ff9acf2483725b195b4e65e2e92063 +9509189e063812fa04f4e26f87b33a2289a05c229ed1038fde0dacecd87aa55ae0fdc678a1c86bf13b81f4b3a872426a +b355f24a5dfb7a8f3ea717111a038487632bf00d67cc2cfa2ab61e1cace7bc7f5bc9e04b190aa6be0652627ee219bf76 +a9b335f235df51b92f40f44f19150e182a938b9abb3bdd8e8c447b2b128050d228e0115a268af4c1bc2ca49552b4e0a6 +b306d3e6cd7ab56f5f7572fe51175ac6b29b189220fe2d380b959d131a35804da5ce95adcfa51d799f18e27d8d5eee0c +aa49cd2bd34c37ce1f05e192fa6837f964c068170ab97989e1cb22ea7e13c2400417a51282519e74d8fb6983ba89a549 +b1d4fff41d95613e30427ae2ae1d3df8c9d06389e1e0f404f8cd40199d6c4277b7a898d06f1579be107fc5744247c36f +99d220454889f476931b0cba3570eb1a8eae30b4c3617513833a551aab0a2630125f72dafc64a766b1a322dd42dc385a +8267ae38c9c8532c7d4ec4455279a5ed4f2e48746cb0f2619937157534b0e5466c5f4b99b7c342c095f71f3b77fd5882 +8bba0794cc4ca00eac50309a92878084a6a22e4c23206c68b8d7268f9e7f615da4b9d0f3e006d9dd84bc3dcf32261e27 +adc965bd7c7bb2a52cd3f4d2cd3fbd72a196876a678863c6a67a25b4a2330d1d3be603220de22c8c3f60c1411df57b7d +a7d5f38a3c4ca0541d5ab101af9c27b04c5bfaa42a1715e882c5e7715e460c4666aac4b6272b9fc54514346fc49d0560 +af94b91ad9b0f01df1d41a459f16ffbe30710325617651cf1da000eec43876161957f079a27b70018ba34d1d5d68cf6f +a0e2a492da4614f41741157d3a1d19a2370ecc8e178d813e22b902cf7454b8237f1ce3c16270eb6f3ead1f92797e36f2 +8dfcd39155d7b8073b0a1a9a617fa75218f569520d4817f3ead375850ea8a3e3dca64c44e83f54afc37173d927070601 +98302358e5b740b73e1a6c568b99affc6de3c7245ae96d9c712d377fd363d8b8f49dbb714aa8d39b5b947b6de341ece7 +a2fe0f9fad663cbbf4bb05f61edfc90716564d5ee5a9529ac3cb8f06f96329248cda85c43f24a2382a9056e9a53520ac +ac50b0727ca2ba80692c0b7f564417916695ea3760ce9fd71593050912bb97366d29ae5ed05ce52984e52218854b8e3e +86f56bea946a4516336a90328fb4b24cc7f82d8710d0d1e34c2e27b6af73c4f4a9d6a848dcc56a87d6259a99ac444557 +b33d0244948c430a58b210943e41aa3cfecc9a823dd3e160634ccc45ea2680987db2912ab2a173ab6cb9cc2b7e16f7d5 +8808f8c2c2377cf52e7314820d88234d7819a6108fe9e1c6a675dc47cd59f81f95594ba2f5fa10e3719580f53edda641 +ad34a814be6019931972a76b3300a4fc9ce763d6f4fa1ea131a67d575c00c827b9ae7260d88577b4b3689e90a845137e +9370abc67ad0fedf30b929d1613e336c6e99e4bf83ce969e61e5d77061b48a1a493f28fe2eff436d4a979af700a83b5d +b0db136c8f4ba2fb7148b1451b18f694769f5e53650d68342f15817b04734ef8ae59681a5754df617d755a687b6ee45e +9149909d24382054a05fc0b057613d059721f132a19017a92198b30e48fbbc5f8f0b5f5db55347dbd9d190ca88f9a28e +883d1d170fb0fa95b55b10b32ebed24b1232dbfb5c783148a63a765fda200e796aaec52747441704967914433a01a323 +8f55fd5ea11c4fac277112d72489ac1de28fe163a756b125f27acb78aa6651c70d1cd8c45e0daae417bf894149ed2d57 +8d08685f99aa8525b008b868f5486e24a08568a5afba9b729f7d26370fb1b162937db28b935d67e4d22f7fda69a3a6a4 +b1882e23d784ab48b2f9e58114c5920bc9d0c4c01d2d7fa5111561df0cf2d738e31a32963cfa58939af87e79428659da +a3eba902d376063e48634c9436802cdc6b89d3a7c7cd03b26a3fccc7218dca85a3ed939eb53956d2e001805aa5c2d63c +b97330c40d51a4b71f91f56292b628379ba735509a66c7df054112578b9df40d3aa32598bc64c03c78a3311a17997bd1 +b84f3d2af2aae2aefdfec9a0693f6bd71eaf4d477cd72d80f4919235a471607c5483b354c9d46628a76d6b6fe7c586af +8a1c39bea7fa580de967d8ced7e3860a9031b07842d71f8c5941b8877cd55ba15ef7aec6116ba38ba290b887b4530685 +b120fccf939e7d7959c2c1e70d7a7aa3b84684dd1ca8e5cfa9d281fd06d23eb67a629b1a27052614c3ba639ff9c90dde +827a8e0dc841af0e2c4a9ca36c84a0ea60099aecfa40294344f82878b6909f5581f7b34fa9510883113795bd09b5e4bb +88c24cc54dac5a2982be5ac49684d99f95574bb8cc44afae4f6e18231ebea0f2ab65b49870840bd3e8f2c9247f62c7c0 +b91fc3f2cf743f4ed42e49007514d43dea1d7bab388a18de6f71367fb8f2e9b8e88ed9f7492b647e548396ef3e3d7765 +a175000c4765a57c57b219b21f8302cfd85aedbc3340fa1690119bbe7cd93dac4fd0ba676b1784ebac83efe3e78d4bf6 +881a373630ebc24dfe17e27b3f176de6651347ae741d55675675e9e6904ebf157e787d86eec42ecebfe4eb8f28de6fc7 +a47c8b155c8ce8e16f38deb345a051fe0c9b217cb7a266fce78d7694134247887789645a82c0ac24341f51da8ee6ef00 +adfa5bcc682d4449adcc436649b444dc61157154e24d68615b0ceab50eced1ab55e15b45562dd8e00785806e9ef2b7e7 +b7d2ecddf47e9fd25dcb283eb80e323300bf5c3ee3344abbc3a1f2a3296c631577a1fadfbf685abb336d5d7059d17166 +8833f6b388e46e1f8fef1086777466277cd418051ac0323e2cdac5902d7ae45eefef93ce90b088bbd618e0381c1ada78 +b6abf44c5aee5d0fbfdbcbf1e77354d5a2ccc239b894e1e06d7ffa76584683f707384319ab0e0d17afd93a854d7d26b2 +a8c61859a9553a83bac398c14c987b20c8dc27d63112115b8aad26bca275cf98913783c802ebe3b7c3d878c130407b34 +a5de7a519f8de4daad9137f2c2838544219834cd70457ef09467d869f4dc32098b7a8d4fa85e1eb283632f6d09971318 +98c33a315a66cd8ab9ca8a58c87e5ec588107a6416c4ea498d0b91bf7597f53a405e437ca0a9d9c6acea27ad0ddbf4cf +b2909b1f8752f4eec25180a17163ab215fc20c4a931d4471d3be0ab64207a65c7e462fc0707791286a92ff2f2b7dcb0f +8b96c2fec34cda02e98510a3ed80a980b0cbf4ec03e3c4260f84027cc7453acfedb5f708c401d26db137032c6cb4a31b +aff645dd6ffe8b5076c83a823daca4149f0769bea3293b61330ebd97a17fe16758e4fbbcb5bea7449595c6e261127b34 +a45f8b3b7196449f9952cadc8d87a787a28b4ed89f8c7599e7db361cd0f0aac6bfa464024ded5c0ffc660e417594fd41 +85016b5f7ea9863557eccb0e742cfbf0b09630f0bad3de55aec92b95d4645055cac60d03602586b34f774bd356dd5554 +94fd89dff2fc6099e5ab90149458a4c794eb1857f1dd9a2c84b88099412477dccfc2996cca2abee68d23a05265dcf271 +945a52621ec19d26f7c8abb5d01e4f5630924b75a349ce74219377a137f4a0d386172da523edaa522d27902444023cd9 +afbd452dcc57f5db6b3fdd55368807320459c16559d944ee8ecd1af6acfe9d58c13f37961f78030883f8ad7dbfac66e7 +8ce96b3be871a1f33d559a6e55e4d86a0b92ec3954417f8d98676264596c3296296532097b9b20c83c341527a0c929b6 +ac6a4dcd58486d25a4db1751a60ca4d02b80c939b39ca165a37d9a0a52d8675b3753719f136a59ac400bde3efd036c8c +ac87a37a14a5d48842d30432935929a0e9dce5642142a8c5b95e377ad1bf52120dc64697f0508b7c258af24a0ef484ae +859f0ba02d496861455d9c39c269a1ae5bd224319918fdc3648311c93303c0e13301ae7f3f77eab4ae43f1184a912b64 +96d9b1d2d2fe70b8fcac136a65b62a4ded85aad9d350c19bb955750a0b24f93174e9cd00c0e0a1987793e1180dfdf66c +a7f5135873a1c08c7c8d46adfed19d0ed0e33168d463ca74f75116168355318ad588ebcca1946d7669c5106bc9f5a8f1 +830b0587587b80df078ecfe0857a4b4cfc05b722c0f4f3e1217048ee18749e9940cd0200c1f7a0f60de832a5a44e9f1a +b6625ed0199097acc9aae20611f02d2fb837e4695762cdeeb4dd722517ba5a344e5011f14d5076783f3c32bb5c4a027f +a17be2e528c463aa4ce4bba2df5b005f88e363b87be7324239413ecd5bd68e350d290370e1080ab9911a0d54856536da +834064460f0e5f38950cf5ec197818712f01950ee1f32b1987dcf7f4098d20e1d91fae6d48e8a054390693a2e572f888 +86217b9bd269408ac92b5cffda5716bb3bf8674b7e222668d72939a626f4ab64f30efddf85108c0764127cdbcbad7d69 +8d7cf47b0648be0bcbd3ad1062d90010e5ee84e397895ce98160d5a568d60a19582c985944ec27bb284459789ad8f6eb +ac056e3ed3487427142b3a4e4f9db53f1a752e1994f178577c46dad71be5fad4d03d24ae7019804c41232705a4bffaa1 +94b83d67af6735e81b2e392e6af8ee4dbafb0071d84486389f36f222dfd015da718c621acdc4360630403762dffcbe3f +8ad27bb51c6cb860c21954f5d09dfefcbe3a9a0bff3e24fd1f74850edcbcc76b5b389a616ea0c0796b239b0c22357a44 +af9990dc4c9f536385811528f207a8352b083a4abe6dc016eb5eece0ad74da65b2c6c475a78cd0ecce0b2b550e4412cc +816dcb8ff8556540b54dcc1efbd2242dada0acc1e3d3da13ae581d905a9106bdfb8c138eee93992a23e7740593e8ad80 +b8fcf8e11e5924d3d38643b2a4bed4b54e69f816f40d4020e76655eba8ffee758c16cdc2d970d3c8c1163cf501044c03 +a50e0ef4ddfba6d969e7dd864a20cafc7fa6aa232fa7a806c3d53c3e029cf110828c5a9c354ea42aca5688896f27e6fb +a560435900c48879ff3f89067daa8e512482f061c68474d951c608ebb5a69c7863a28fd1e216eb4b140e32124e50fc73 +b9202d152b7b708ee61c4fde6cf423b481854538d2580bc43462610f12141b89ce779c7398a35c27ea6ed0afa5332bb2 +a9b3f8be28f9546bc70f680dfb9b08c1eea6fc381cb6f3ebfbe33bcab48294347d4e64004c11dde5eb409ecb19941ad1 +8cb3086d265060f8e52a96fcecddfd261886002c1821a8f59a1ddde19a6bb1354b17cd19a9cbec19149dc219a4c394c5 +906e8dea406ba0f0ef43ff623f8521039a9455a2290cae4ca9bb6494ee0aa812528267d1349bd5d339113dc9d1616b28 +b9b5212b76d5824d66b8df7cdd5effcb05ccab5df6ce67558872c99d1e484ab8d21037bc0e22f5c4082b192972b80acc +a1fe817596bbb5bed93a5dc4c03e14eab627484cdc7ab7e4fba569ad0aaa93b34c4fc8680c4f8180d8190113218d26fc +82fe7a20fe93564cfaf7eade8d4d1394d1b4e36048cb8632bf366d3d8084ee52c74d65c4c69d9d24208f7916278aa592 +81f42f9a3b8007e5f02c26770947f884c715bce1e600f38f164a390f159e2e5b6f8522ef566bf36422b14340bb6d3556 +b53d3c89bf2a4b29bdd8f1bfc001c2533f86d869fbdb383fe9cd93ef0c49da0692361baa9f537094e1af662a3461f8af +8fbeee613823ebfd514e991d81babc05176d5c115907ec36dbf83a69eaaacd622f1f36be2e47b984cd6ac66a6b35816d +a9068ba463ac13d4dba25f9bbe3c93baa35828563f357c53a7009cf0c809a23502e023a32f651e29f14424c5daab2884 +87468aa4c942476b3ac3000e740c4dc72d320884357dd99eb25e81d7b52a859b9ebeb55f3070022bcea3855a9a198e9a +a5f1219eb902234ffe8ba809df590080ce8329ee574eb346f6b4372892d66b0725f048465221655b70b3d4c2deba9fa0 +8d9663d4b48cb86201d343b20a8e7a6ec47a4bce0e85a905be31121a01fbef95d9f29d83530faf79dda163c6c76ec514 +9921ea9176744e15f64b20ac6e95ec132052eb853ef47e9334108778fee60d9d9b53fa0b8011c6a4aaae472eb11cc61f +a04c2c5e2c5a7673652919aecbc5fe09a636fcae2d06003ca6775018112b606e50bd2d6ae6ec6131d2a9999837186bd0 +a00ddb29776d2747e3a6e68eb51a7cb00ca0066a9aac5a2da632f355db515b32e2c441fde870c9731a9dcc8d9834557b +85afeeae8bfd92c51522320cded430c2fef57b1950f9f966f47ce6354e492e9c40f950a7ef6d5202fc79fc020f7a6260 +b047d214201744cf7e675af5fbd29579c3b26020c5e0a53e2ce078778b3d3a673f0fd87eae8af8f0fba3bf0f8341b63c +b8aa5364d914020158d11fe82c2b77197ed2b1a12492435200204e20a9209d3c0b4fdb6fd3f0b1db71ee3b986400ff46 +a59a903fcafaa8b5876a3eb1d79a7db17c37457dca018e393324d8db3be7c2aa3ed2303eb3530d6fe1612fd75dd92e08 +b1929c1711ce44465daada15808099234c0c5c8f43b050b2792b6ef9b77825996a74abdcd84d6ef08d648e77cf804357 +85bdc33f8dda0d853074e0657688899befb6356c38f0ec2ac27c46c39fff06617edbb1c5cd220314335bd1b792f1e240 +862047e51f9119f5a0a607469496c0574b0087d566bc58cb5b61a9a841a3cb693b89837a7c927c542ca03d0106055438 +84ba54c002150e5989f59064b68989413abb5f289f3ccba215b923f86f76c19718be51d503ce3bcec68322a7c7d5446d +adc9ea06c11bf3f0d704b321005020917e731e6706f18a5aeb1b56dab3de39a94fe8aca3c248a47565ca5ce82face9f8 +868324c4ef80bae55510316f3a8b13aa40e60c8a3d55f4994439d1dca6f5928c4cb202769d78c21597d8737e391536d2 +a6e3b57e9909b5fbea2114c352b34235a4d4147417e480580c291308b4b9cd696b36278480893667e8ba01fe3bce571f +b92e1d6ba0a2a244ac5ae2e7b20e152591c1c466c9b4c658c72cc5985ded0392b04ec00e32291f1652d21dcb633919a6 +a3e2bb4dc07ffb1e8dc9055ab45bf22864980f64b612548ca7feac85ecdc426f773d6d48bb7e6c7a578025bfe99307e8 +af764cdb70d5afdbb49dddd519451218db4e97ef3ee622585880425c3d85a8df88613f4b51ad40a1f6635e45b2efa5f5 +a426230b8ed77eca3d1ef7f4735fcfe0e51ae37efea5b96ea3bf313c241bd703b91a592f035e98056315c9822ffe8c26 +96a3ae7f1b80690f97372d086d2d13ea2b40802bd053980f73cddfd37045364ebe38064a8cf3531e9bcbfed421040f20 +8cdfbf0663bde624b703d7e6c36c5753282487147e10e5a24fdec75836f7034e4c38f3fa3df373476af969a4f835cec9 +b7f7a549cdfcca30b78349b831ea5173bf5b91d56dbb999b2dbf6b85d8c22ca8a9a62b38e37dcad7ee5136a32edd5743 +82ca90321c43d616670a7d85447afaa9034459b796b51792c970fd5b8f124e47a13ef661291a4ea58a495e68aa36dd87 +a824a36e4e2db2bbc513d39e4e2a841fa81106437eeb4fca9ebd78050667d0b284b7217a35ee3eac67d8be58c0af317a +9370dd0c0f9c7585761eb5f06e7899d75eac07e13c140c64d4c506b90495fb8ea914f222608c478708d4b47163dc9907 +88c07e19252e905faf129e3e877dff8dfe93e81b3903b150aa33a93a7eda2820a8471be935825d709dc662d06c9f99b7 +81e936c00425f7db8f0dd88b16c3c5208e8d95a5072e69524f3b5de45f4e2dd25f0aba8ef17016bd914bc8f5a42fcb6b +b23227dceec18d6dda92a15b7dc8623d9928d545db93b3547fb068c99cacb3fcf3d7f88e4357801de8a652b919dd907a +b23f1627219587773c17070bbb190e1280ab27c5d7e98b43adea0e1f5017790149b71f90c3691301bd514d20238c5e6c +821b7bff6349c204ce50e00e296982536baff68031165ae4c639122195e7295ea0c82ce66fe32a1b762f6a311aec384c +a26c15bf1ef4d5543c4a006e4ad2a450d44c93c62c0f0b035698530cbbf925f6705d375e1dc8b2c6fd9a2c69f4126b77 +b5c5bfff4697fe13a5177fd87a8e293fd1c6782cfb3d1f95c5ddcb13c309dd1ddbeb14cd359c9f3029b57ba52996c9a1 +87a0d37f04155bc22ade44f567dd8a81445facff15d643886cbe6534aa44505e331bb75c9ea2f27624154a5890aaa2cf +ad85c0e6345e2333a0ff76b769592f2b24fd0661984498dec6fbd2d9b0cec5f139bd71331a28b13aa490baa7fe27b635 +a9e6298b90aa8d3f4385858e08f393b3bd61376ac3dc44a0907ccfb372813bbfab1388d544c1a4907aac38a87dab2abc +b5cfc8bbe4cd3ac1a66b1c8138c5c68e643f7f4c310cbf1483f6e48d4f7e2d1cf24b2704fc687032eb03978f18239072 +9493895ce0c815b60b0ab3a989f63c6ba4c752976160f3e52290a724ddaac9075e07dfa913e113807e0e57725b1cd593 +b1e800c2aa32d34d34b24dcf890f6ccde7da60b98c4646a5471fea7cc6df8862b7a9c4c40f38d0554e33e2984fd564ae +90a18f877f149a314767f5dc15c8726efe5d20a8e15ad4922c6042420a2cd82018be813debf02c6d69b96e8a27c0c5dc +8fe35142442c103e7bca602445b87cb017c76befc83d66894d4f810e343b3a571f3fba14d94521340ee7c5ccb13338dc +b43547cfaaae899fc6295f496f213916e5adf9b0d75805c32df0f969fbc1b4f8584759b2a06b81546b48004d72f2e8d9 +9410d55865098325c7b559eb4e84fef8a3ae890e1d6053b3f173ce22e60ec6563041ad8cedaa2dedbb59f3dd645dd1b1 +b127d9e4b8280e10434d53207a7191782464ae83b4463cd8a32026e5d8a7a8c5306ba43ed9b7ea637d65f64d6a08bcec +87de8fe67524c7d107d7033d4107659206c347c47cbbdf85e3441b53c933417feedcfb049465c67f4c4156219a4f63ac +a582f976e77b861731595ea8450c6b525e371c6548cbf7911f05560d4c7a4b62a425d5c785190628d1aa1f8f27c43b51 +a195e358742d924fe2a7f955eb21ced7b211cfcd5dc3e598e0d2713c3639b72f986aa586b7a22a75f8547bfb46cd52a4 +97c249b70ca2f9da728a256d18d600bb923005ebad3e1d541ebd580af3fe07123fdf87f4e8f98fdf9dc8ddd826ab7344 +8fc7891e2f540d8f20464a36056f227ac2ef3bcf2b6edd4cd2d9024a48fce19480fba36afc7f5c4bd7234787b8d17f31 +9047512fa27e2d8d901516b5714133c1845494b6f2aeb2a0570dd8533852f00a8d9a8ca64979310e83ac73fbeccc33ef +a1be9cba454617af0dd38865ec29e7d0777d7c68968c856f90b5bd63a7cc4274fd8b179be54143bed972b921864424df +b086ccc8a705999184f51e9b45c76975ca8b108b32a3955e122711fc1ee007d8417a85c9cef217f28d6c7799b60aae4a +ab0938a72118ee2980b28dbea9f7100c6f54fa82d93fba8bfa81b6bc34f9d2033a987e5d6d3816fe0bad53cb88bb8c2b +90fca0bddc14f70282f11998fb4c289fad5c0e78c8e8f9e7a811f20413459a05c9d107ae771e9da501854022d827f2b8 +84cc69b7200f63c2214375a7a0a5ccc14bc02ae45bb6f3b27f67ac538d01e628c66b40e5c40cee38bc8634f1a3c3cc6d +8a07a1cc0a96e6c6da0d27a540e235c2ab6a95d087e624c90cdccd781a9bea6abc0456d896574950a9e21e7d87fdc582 +87f2084a2f2218d7f9eb7725617ea37db0a19fb0bcfd7c95501f62fec0bb6bde3950690420a40d93e26f426fc622c825 +8c9fc9b470dcf8e576af943edaad28c29f53ac7e24657618c21d910eeba6d7b16f16c418bdd5cea3d639c3919e93b7dc +8f026883d9d8c7c2a5c04e4c7220ba7061a48392a8a7794a3e290a94967d14caf040a3da3513fd9b4e695376e706006b +83bef852b9f387a2aed0d3537e77c895799c639310cac98e7b699e9f5d74b2b21cbca58ef910c6583e0b849d665ad379 +b08a03accdc64474490706edce9df7853b78b719ee731c195f70871b7586ed274778d99b84ec3cb8cc0b5e38c102bce0 +99fada688669b2ea8d9b7cd730b057292ec3fabd30cb733ea3f7cb76f756b244cfb26df03b9c087b6d9c58f5233dd1b1 +8eb0fc7ab6b4238f2317620191dbe835d4ebaad0882e22e8f0857053d25d6d9077754251202472d875303669dbb806ef +8fac2cb38c3a1e361aae5313ebdc1c7e0b7d1a440482fbbe24389a7fcd381169fb325c79e430be170452326cd4931732 +92bacde1472436209032f0592973a5a40d505a9b2c9de648eed1ce392d0c18e23aed9114a9634ad3a7e6afc4ea80ff21 +a28b394018434be07323a2356fcfd6c70b3a4b1c6b6ea44da1da66c389a659235e0dc941019bc5053ca41f10d9b6db2e +a6d23d7fe7ef475bfe6486ad4a99ea376c6a6db3e70a0a7af421ef6e6c4d6b9cff68d03a7239a56eac784769f63b2bf0 +a1232e6747573e19df98a088fdba57116745612cfdd4ff21f8df82a66c7d5df7e0a6c0cd73117121a516dfaabd0f5016 +8dc574376016b73f6730103cc45c952c5df5d047d0b4ab3da0303f66f43f7d147b5eba5300750e885c621e72b4a64b43 +a66e9eaec79c958e624655fc2adb7b89ff3da0393898e028bb07cbd6511ca8d9318e1d60dc11cf0265a498290e756ecb +8e5299b661dc0e088527904d2c2fc0256613a1fc2b92bb92c633acf145edbeeb053e82b468a3877f6f14f0878fab57b6 +969943ce7b54f6e728724b26cfdf4df90faf9f9796bafb910ba66d96cf34062fee6ed9121abd193c9e322950c8eadbcb +ad29ce021d7fc875d1e61ad3a99e112ff092ffd7900a608bad30517e50e2270e0f8dc7fb5cd42f1bb995c17d86268f48 +a55fd82520f4d35434066bf93a9601c96549cb4714d9ac05c32e16803daf8763e23c3125d2005eb229bf5d7e2a91ec3e +a95eccc21af531c5e1a36ce88eda6b87732f5fa680e851bdeaef73421c1c87c8e66bc314b07ab472ecb67a08ec53cd4c +8f48b5a0636bd89a1ee259223065449523984cf3bd9be78c9242276c848d2140bd94d1a6670e446b51b178ff694b5c7f +8a58b340e30f0cbabcba1c565b68eae66405fa2242b43a7f7d3bdce279af42fcb4ef58c85fe89cc2dc56a41a51f058b9 +99103a659e26c9a4d19404db4220dcc5defbfacfdd969eb7d70b4fbf9b2c91c92112c0097e8f0c32ddcfc35741da21ee +a088cc15a45094cffac52c38df427b7144d621cd1d12ae87d74c00a039d757e36fe3cc2fb35fda9b33b375553585497c +a0f1d15bc388f6602c975b4b9cb23ab83fe31124acd946195b999620c3c20c6610157a891114a43e3af551d7b8c3e4be +a571057592f3a9008bdf726254c364975705a71bce4e084a37915c5317f635528088a2f50afdbe7240c14d813e8e979e +a31e425feee58f8372e2bd4c21c48c299850df34044f27db3e4df55fc5e7c042cd19be59500acb375fd3478379f06053 +94645ca6400f80d9a90f5b1c5b515816d6049ab04a552109c9c16b41366a7f3931d49338d944ee8eaf2ef5c77062c362 +a61fba865027b7ccb03a4ea966081325eb64db5a64c5d765d2893f6a19411d40dd957d8a0b34733aeb3f002a4e0279bf +8199b89ea13ef8eb2f54d27bdcc781a5a7fe5bfef4ba4444bd651ac6021f4d90250b2f2cd8c63fa3ef237ac6eb1bab36 +b39e1e98d07c95a4fc19ab175147547e5a20e66c044f29e4855818db4a7d0e7e2c24192aa8c89fe378f8d8ab3e9f0e1b +b807bb0069474e190b40bb2b34165351e73a392ffb0de83879ddb181989a22bccaebfdc90748f54de81c41ea244e7ebd +8b058266df90032a1a9befc7abb759b64a23ab628edd051da8b81db4211c72fd63093dbd94796b0690ff2b0c0fe16cd9 +865decd95200fe45947a4249d2d8551ca5d7b3d7955adf10f94ada3e69d684e5c5b8939fee9a4457f22d21bbd3ce9670 +95fb5ce7af13976320b36422b5cd9dd46379d13110fce619969308ed6a250cf3eb84c73e8ba1d32edc01aa2f6e367707 +a1a176350aed82d5ac01a072ac7f3cc1535e20fb597ebc7e417921537f9bfc4cfc0d490d4df831f0f8ecedb6be970a15 +974ddd091c1aaab7ed356b65c244748a713e98b133c5606436e531c31b31f6ccdcad2037b12c68fb54af4b19bd1d82ab +8ae9b7a8cd856087300ca90799ec3265b92f84da8ee9e98c6ede1be378dc040d0fe68b8ffc94b146f2521b9fe3d19e54 +ae17df60b83e4530af584991b545bf4b3cc1045416dc15250a6b75a9a04defae4c0f60b8bfbeb54c8a21fa84fee58e69 +aca1e75d4a05282b0cbe6256925c0f269a4a8323888bece4a48aa0b5e7bde7fbf1d3e4f5cc38fe6a38aaa091ccbba4f6 +ac19171d3ee2f2e5021418c37a0eb25c083de6a6396290ed35b4771abcd07fda745fd082e3c32c117bbab7d9fec2b67c +ad8a35eebd3bb28e08b9ef64bf2d8b75ead69db29c96544d71686ccc0819ebc6823e49b3b879ce0e5ee3131153900632 +9479f12dab191269b020b70132996cb32059ac087e2a3f3e559d297494189e1d6849c340ace032946e12bd4923a3908e +8885e680de6c158cd67d66c142b2b4ac42b96e97eab8e2dcb90c3b454dd214bc530fbab6b5d5746064b9813775b6d5a0 +a16d8d27d9b2fa04c7eb8436062a53ee0a4d679bb205d7d7cfc24e5f28e3752a9959847e9e31496bb0cb1c11caadc30d +951b00c69dfd9fc80b17733b843c440c58095989bb8744fc9db63a4a6116f24d5f224a279478fba8cf57753261bde217 +8a693564994a1dd298f0b279e618b46bed349c53236fed9d8e05ad9383ce55fed02b8a361fb8c09ec5ffa8a271cee015 +a09fbd62995a33904b4a34ac55c80f6d4cbd39a902f5db1038d909f1a2d385c3f5eab04b157b5662558bf35ed29cabc4 +8662373988373409a4b31d45c5110afc32aa008bccbeab39d5b09a0e10370dd879684e722a8856b0da278e2bb91d67a2 +8980d3cb8a82b3a827ba65f44e50efed0a6f37d6c150d70e4dafb67b1db173b46ca29d487ef9db92d37ca8312d246008 +a279558faa11850aa4f0dd9ca8bddf69cb98bcd4edfbb0c19f22d1bff85d808e8f2cc026d95afd09fec2d15c116bcf73 +a3fadf9c3066c93aa6a31d2346ad0a1d012c12ca7a24630aee46a087eafe5fa518d20647856d44ac03576bb3a9f81a76 +8a8a19b09417e1b1607aeb54841fa69f58e094b46971c6a5cd0fbeb2aaa98c56599ac242272e6973ca0a9d2c09ff8d77 +858a636f510b494edc76e86b1718228f076b8a21306b02abd086dc2a96c7a034704d743ca5d89b17903fe7b2e43e6fe7 +b031b789e4073b82bb8c78f9d3fc2b901d75278733a4fa0a5aaf985a298269a735217e85eacc0dd554375d610a425359 +b8603ce7cff755f5e07eaeb4d74dff179cde405234bbd7b3f62fd903054aaa34a9b868b04617d7d407c2b8e377227f07 +aa41829c941acb3f9f0e2008e852fe855e153960cd3c85c4b8ab9f97ca91b7a5aa18f997cd023ba9e03a653f238a4f46 +a35639f920619dff592176aad2b4b071d5c960f149c3a75311b16841d1872f29aeeb7c155cc9bff41ea7ee56f799de78 +b252195aaa52e9a34936ccd1aeb40d28fc262cc4570d4f9685da8c591080e97438edf64d4d4d074491344bb5e86b6b23 +abe2e52d10620b503dd1aa584e005d857294565ad90dd89217a77fcce4bea7b0c72d54dca7a1c31b5a9042a9602557cb +818085f2f1b525d9b2322c8785bf27a6759af9aeb231b0977cdcc7d7e77cab5de056e522dc791e72b8d9b93a9c41e833 +930f64d40ab26be006e91deb854c5b22bf6951308dc406b2c7c7791d5dcec470529957fbcfd6a3c9655d544d974de7ad +92b28bdbea8c7588ad3a27992c19d73bd3a478b276f0e11c4e82ee2482e4e167cbcfddd17a1ac6bebdd862be65f54098 +afa6a85fb906f5ffe52b6e9715435dcdf9f7892a396d740d67560fc42248d23bef470989663a73190ac9da442cfe6a82 +82d3338e58fb316d66694ff4674a5d99bf0b13204dd251fdec95d48382f2d2ac60176a19e5ecbaab5e00af2a39a338b9 +b30cd35eb15b3910b8b8f91cf04c223d79d587a7ef713030f0ab93f446caeef52c60ada365f8d3d645b477e7fca61d94 +89554d2a9a11dd7e56f0b568f2a50c72d86362d95eab5d94a2386397012e18bef7c9e01a2d71fd325c0692e4d316dd16 +ad58326fea1c00e0f8aa92923661be4b3ecc79164d68e91c4d1366c9894b6d049a4f31c9bef6e5f21466ec014ba6b94a +8915a16afb0e68a84fd12a9203f8f348954920126d88136ec027a81f541b67c421b84ebb3d6e8f085c38c2499c28ea61 +8e246e1acf655572863481367da007e94bc1bdc1f28aeaa1fb163dc05a51c3526a2bb9bda0a14fc6d658d85a9322e44d +af83f9ad3c7c1504fcf60084e0948624fccfe3a9892dbcba8f166d0d67b475ce57ba008f286069da20a0da0cffe3b4ae +aec86d2d803612e8d27a01e3382e0a876164baaf2f3b8c4e9455ea00bc2e525378018e6a41ed9686c6408148e852bec7 +871bdd8c84abeb1456ef73595360de6cf9f92ca9e6a8b6b816ec7497be60a9f509ef2c91332d17cb5fbd347bb0113d2d +9503ce513df28b61d721fd5e8667272a28f210ef787bee58538f786acd16f04a412387c6f5e6313c43f426a70aab65b3 +b2cb0526e7e524ca9fe918e951c19460aca911d2b5ebf97c2bc74aeb69778a28316dec8916a4e3628b46bc51586c1bd9 +98f52ee1896b632dff5153e3d1fe389c6200b14cdda6b27e12d4a4182763b63e0f587386aed78c97a32114dc286b975b +abbea974929c9ba70551231e3833d5cecc71c60988826771f792f190ca77c80efee7607dc1d6bf01a53796d8d9b73017 +a4cfea1d06cf840bd599b14c011b6b204b2cf6f57fc7d7f310052062a4fe8870f02504e6c837c2b556c925921e543556 +b957529d7e5d1fc45c5a822a6e0e480e46af2f5cc3801c31996b9b1acacfdd8d142265148b3e1453a0df0c5e6cffc5e6 +b7411aaebb1b6a6a75568f81d052e60fa7752a64c20dd7cd5457f999f0185807987de8fb72ed94ca9d1148c19ecbe1d6 +84be67a5ca80a1fd0f43cce4c00a465f167445e42232c2d2cad5e1097a62d3ad564041a55f0c76a340387503f15e0ac4 +98803688f8e7b445c7ad14277b9f5f12acfba4f9a4ba6df9e2b7dadb726f1bee5098fd15e0b5308b6686a38864f84912 +b085eaa421e566276bcd45d8b9fb71475c4530d63e90914eb2a33c17333d5628c1ec8a45691cbae82ccad97d4addcc94 +a08ff7dc59dadb183dd0b5d336b6174464604bb2b49315e0c42f34ea08a8bca9dc9207750638bb7ebb6387257411956a +94d72607cd8a75b2fe2e9333959bb9d5b54d74ec36fb8c123c157b19a17f01f310b3311116b34bcfac305e9deabc79db +85fa61a796226ce555f8195c792ff6f3d483f62dac41c17b7e8295bd49ae6039574896548728fad4ce966be84a62a6ca +829ab1087ebb61db05c59e3c9d03e7010f8c546db117a6409bb813f6fa04061833771c8aa4c5e2981bd1ee551df0ea59 +97f5c5261db0b130bb8352fbcf65002327bd6d8a7d4fee2a9bc293173c8c54be37ae229c5488c1983bc1f7857c66188c +8756439e5978ba19e2cef95dc55f706d53a05d1fa964c64d89b0e95470b5344b2f8d44680080626c37c77a00ff0e6b00 +915d33f90980089c33f403ba4fc5c689ea7f1656f5c4e1110db987c59eb981b6a46dd9fe82c8efe7d1e3504f1d2c4d2b +ab5bbb84884ef036c9b00a84f7d5ffa2931854e2afa5a63121fe64d548531af4203495b977bfb9301bb1e4679d42665a +9830b846a9041e4539eb858a179b4db6da89b507424e6d858ca4334d973ddae255bbfb04ae25c3276ccbe97c46f5816d +8e35f4563b8a5c9a76cc1da87ab21cd894de393dd61bc977cf22d3de454de350836e032ccf7d6ea55e2e6b83c4424146 +b6338ced0f05806c625905cc51b7e772c5db3bac144e897339f67b6949f4d648d41b7d23bd3f299f4879507951ec031a +b3afa470fc71b92f415b879a814feb0702b6adfa08e395cee4f7d8b0e3537288f16c83b28ad4e2db02c1fd6d39e6afad +b4fcf7af3196bec84fe1f6e3bbebb8abadbcd46de02a37966d0ebe20972fd890803d570e4a201f2a89f479e09f19191d +a21fe1f8f57691165d0c7d8436765562cc935288f24fe765351be335f906c6c4dd1d0714b134c51255b14511c957319e +880a3a8f6b4ba410be06628a011e6bfd38d86919cf8014b4b4e1c930f8e3035749579389690f21bddc4d4699de8a4b1c +907d93a7666d847a140367c0a0ff80a96d6a8295b07cc4ee52d3be987f431d8dcb95d3717dfd248a5643c5395ec2891a +b8f38c78b8a2c487874c1a6a92d15cf0dcfd26319d4cf65c2f4fa9432203ba5ffefb02b7324022c34bfe0da369d96d65 +8bd4ebb6d720fe52d626a621670a06c8a304faefca3846df1f619f4d456e14f8bdc547fa7210b8639b89c6584ea5c5d3 +8ebdaa288a71a2d3188d6294ad0948a4f72c1eb6a2e921ec82cecda4d315a86e3e6233b5ffdc7219f34a99e9b4555317 +83320fb9dc62119655bb0055192471ae06b7641dd4af64670a4d9475155733555ad06a93ad2fae72e029049601780654 +80b3d022738318238dd32f122bd88cf2f734a61e315ece521e9e038f4a9bd7b54b5e67784f5949fbcc5fa911dd4b048a +891a23b4bf5cb8558b4540b66fb6b9fa54e9d0b2c084f660c8bc77af5ddb97cb5d8042b538f61330d9fa8ccbee6c8a41 +8e5651d9c95aee23835bb1a06eea76efc9d5c881cf87ee847ee5149fdbf3d67dcd8ad0675dec8fca6cef25368348abaa +86bf1d094bc4fc7c21b21cfc7adbc750db0b27c35bb160d306b26fefb2699cbbb1fe624df1b9e7f6f895f1b81a829361 +aebc3cb2623344315875029378c71ab7ed3cdc9d3d42d4b835b373c8420adefd177a44e532f3f06f74f0a40d53713e5a +9527f659e93a740b4c50d0d3d9aaf1a85936f04866ffde1aed30ab2fa1c1d565b46bec5fdfa510fc3ea934137bbd46df +8488673a4bc29c3ce9133cbf41c546fab4ff28c5d46048a21e710a8df4f2bd1c77d0ee242dfd962a30d646e5ebee8c01 +8cf29773c0e0fdb75bf6f52d7066e7d6e9a3ef056bbb70a98026464b32316189addb5766822f57df63bb68b78c85e1de +810c6c1aa53f9c3fd0018651b1bf25215fe24687b568f21a121e0bebee576a75e5f0d08ac9c6c21085e52228b314c6f8 +b529a87fe47402aa9ddaceac63a060a6640418891f931036c6e4098a1b308821a6f1a244fd5c1c22a6ed5f72f6bcf825 +ace9284ce89b5c81049d329db2376a85feeacdd9f735cf00038adc51865bb78bd9bd5d060efd0b727c509ec19988f99b +a2e7a949c951bddc99e68d80b3f3fc4ab960b682229fdd794f9eadc80bee91dfd5eda0052149d05c74fa33bb40d75ecb +86bac22daefca9143e0b1d25534900b1f7711ade4437642043c4a8c65f0d963cd1f0f958c7391e5a663dd3c59ed9de60 +b7d2a6e2d44edcaad19498ab3368bfb87f9ab039cf2249d6e76091dc3db0c3bf45012779c02811cc818e95796e6ad9c3 +ab474f74e1ebb3dc696e7a6bfd8845ef15fb6411fa28426c486f7b0f789a6af3016ed5f7da2a36215729f5cca0b36b4d +86616a1a9dcb50d1896f3eb937bde67f213558feb401aae9898e41cf1fe33b443170c7c2dbd1648c9e3cdd0c24289286 +a466169a2d95a5fadb6a69c7061cd2911c3eabc0b1a2488e216f8cdbd2c5bd87e80908b002b9efa51a67f02d7af2155b +8368af8b7c0f55f3c4f7036fbefc9d6a0ee9ff61197cea8ce48546753bdbc0b61eab604b8fe2c1aa91ced7a879e5899c +996c91779ff9767232ae603c5b1da5bbe0e303c4c2c72ad2d5944ee1297af3535f6bb3548fd1fe8a92cf4b281e1d83ab +ad4a93d1ceecedd27389c658b38dd71cb13c729b27e490381d8c3ed4815b11ecbc37b1f82c0656e0ebf77e5bc35196b1 +a3538c7ea3dddfbae80d67caa9fc547938bf77114559f9fc5180d9d0ab837d7fb1b27bc37405686f212f2e98b0028e59 +8abc9fe135fbd48414f2ba28344d9f49ec2d5ce94fcb314ab8dc31c754f3ab7e6ab268184a67dafe8b1fb811a762c112 +99ace100d8db88a83f1727b7b48baa1cf45b971d08112e452f5003566815ccba0ac3f8b1df6504f55a392efac8e3e70a +91ff50978ce629651f1501708908d75b490c18615e933191cd37613a83d4b605b0b48d024d27807637e662056d76276e +8e4104331ff1a40cbee9f489a814cf5bbd6fe4eaa1cbe1e13625fc3e6697b27d933265e5ef8728cfa8fc4ba5b19a614d +a442360d49bc9ce3e75eb40bf2ba05e9437fa594e8b8de34bbc822cc7b706dfa0dd10bd6bccb702d8556cd1320924821 +b6ed6cb0aa34d5793e929e0d9b9651e41da3457a0b20c1bfa93a8f65bbb65bc07c7507482d71c1c285f5f663ae60019e +86d64df2dcd36d0c7348c77480c8af33dfd889bae7bb045888eecbd317cf3e4731b96ac18f410a99ed33a3f22d448f77 +b8dd25415275d5ef8260bf5195ddb9b15b78a8799e4d15cca7d6317a18eab7bcb8fc759be61360915a28a8fcb5d6ddfe +a325a334c84dc1d9acc0a9315b399d4be93351c7049f474702ab58b4cccfd69aa50b8731ffd598ef0144ca96477c273a +9012a2dfedda5147cb9ceac681fa9e75e2901eeb3c94d87465a44d11250de4bc66d1e00ff674f2da1d800b43f686df9e +a1049d59da2a942d4d2aabfc0d972ebf3babef9c5d8fc5598ea23a048c2e58f7f17b4d860e437276bdae221d9e41e3b5 +8c9d9a8826c812943d74c4d4f0fd2f1c8087135c37bcd9647b722b59801b01775a644e38c24b43e8e70f83bccc4afa27 +b9cebd7bc7b041c18bd35b970f87e9b5183e4ace034e21117001fff8a05b2a7f9ab65cf6ab8b818b8192d1db5649312c +826710d6432ef97625db25104fc8dc3225bea594a10cdd4473d5ab72be57b74928ff356d210032a61ca590bc68509880 +a18422ceb8c61af305277628e154d3a9c49f47e230a44c6216128d73db7c3ca9eca9f87e29cb2126f1c312f423c61463 +919d357886de9eaddcfc46cd43e2b3dda3f82e926a3aedf02ebda9159faa00736bd2cd7aa044c76ae238a3a95a5bef38 +a822d5a726f5c38e9d4a750ddec80bb965a6e5374a3d87757e2e48a18421f3142c3985450d1833f3ff4ca36e3b838c89 +86bfb86eece6f6ea8f51985e312171b9bc821e0c3ab4cace556da28dd7bf89cfd5be3fbdadcacc19f2371c6a11c564d5 +91b42643b297d8eb2c1bb3f16b57ab2964de99dd22bcfa07db1d0010715ebde94d11851df575f4f1ae602644e454fe0b +a5e444ed3d5fb3c5afd2c9c24d676adbf396f5d1d47bd532edbc72c83845970582ec49ed026b3b982c9c1ea725192cfd +8448387a14d84aac6afef682a27be67e5b05d31b59346748d2940072eec771adb53339f335daf4463f555da2d8543f18 +a5034b66a26bad0f753be56dec722fc98a072bcdaeab0bb9cf35a56a573d9424cfbadbbaa8ae30690f7c6c6495331fc8 +9317ac32da1772099f41564ddd8247e3532528b240db753a1fa6fb35cc039c6a4ac4546597bb2fb28721684bdfebdb88 +8b4b0001a6234335502c8b17c4de274b83b0610960b5c46b9075c6e41f357ef0d8c94e9b14bff8be7849435512626ce7 +b1aa903511fe4219acabf8761a8e4316cc4f8955ac8640c68a7b547cfc65365a8fe0843a4098f9f17a4c9beb75624393 +8384f4953395aba4939b24b0669853df78f2fcc01b2145c08d3fc333ee2a7d4adc12f2d81c37d0cc187ef45b5f69f59d +92beb5a3c14637f84ee7a3c9b4d9b305b10af8963c087b86047e9fa959f41ff362d56eaccfe887bad1ccbedc488abe2e +8c60e16dbdfed2d1c8cf3f1bb0b0f462489293892f9d2e0221b1691321a771b163fbb599daec4cbd917da75f5f662de7 +a8a6e3041a0c2a12c76f51139b221b03ccd1afaea3b72ba2c3533b797d5f67d8b90d3474b4f6f8e19a77894fb90842e4 +966aaf74560bd4d164ee46c7d393b2c628e307019ca4289dbfb6a9a991608ad80efc1ee6e9847a19382ff8f3004aac8e +adeaec475d4bfb6075be90cc37d61d45ce14da77f8a9a508b9f829ddf2abf91683aa2fd0372d3025a660c94b0f612685 +b3392bd1ad0c202d4a95912e0e06d8c64d7e2a8818dba8f895abcd0f6932efa9a0bff8a2aac107046d3478782fe42d33 +ab38804443da16d32f11c0e364449ed351dd36b7c82b5c7ababcc33a930acefe09fdb5261da04f6dfab29421fb1cc017 +a34e0df9e953841bc44c09e16d69235a26ff390a6d128339ac97aaae5616865f86153d8d7466519dec6c52ad592dd3ad +99581db106391e6816403b1e9d13747aa05bfbfa5b46696cdfdedd1627b60e1ddb92215d138e007770512e93bc6184f7 +ae60c3b1ae3594aa4e3f08eeba3951157921aa6511148c6d32003d42157654d4a3a39efb1bb317135620f09729d134d0 +adab0bc35ca3fefb14729259b16907a34e10ddb6d78a23f28596d3d9b244709651be7719537df33bcf003c0e43bb1a66 +a31b7b2f3411f986b3415870ae42f90bb678a9fc44c942f6613cc4f90f3dbffa4b5fb8bf3abfa4361dd8e396d9a3c5ab +a69b188a8662eee48fc98201fde6f0d14f6b54db83ab79c2ec2f4b6be809773231704fae2cb281fed8b05107c63f2fda +b79e1e7a9045af6537981f54dfeed0a1335606301b73eff001880798f01ae9c0fef6e427e171afbb1d0a78135ba912cc +b1b883fbe379995b3741836a849516a0f21b18f42a34db2c8cba01f86711a2baa5d14910a110f1058e36431dec163cbf +87bc463b90123cd9e177f2284d72a7f4a1d4151659e1e4e8900bc21986f641af2f9a3386aba56601e6fb64da630b84a1 +97a51bb7d717495f943db162837d3bf700ee0653da9a94b36153443584602156e168fde97d77407d0861641d8d373094 +8b02561709564d0721b5247775dc66c6c09cf68a8ea62fd7dd361905ebcd98bdbb2c554fa272de71c6d22b04d33e6902 +a914b9406e71c09deae875bbd628af3f54de5ccf811365cf229dfc69541d996689d05679eb02d42a0adda02be6e32d2d +85dcc5f3f77f72cf0818bd04c037cef560f0b0eece3191e06fcbb54228d11f7afbb8d9f8675b404bb39ffd04a3b65bae +b15bcb96a98bc6cc7b802dc29b79a903223b1712a10a22e776f45c530a4f767665dab1a3c6d1b52157f4b79055d5ac81 +965e353e665b3734042b61951e105c1800718eb3c46759952755321ff5c639327d045c58fe90befa896e96b826910298 +96776a5cd26b69f08a68af0201b2f739cdfb9553b466271063a6c8b8307f2a3f51294ea12c7e8118c0e6b884886e1bd9 +a369453bfbe7ef0b2445231704abba25527b073bf735a968758975fad789c74110a573bc7ec50001368209a0ff385500 +8e54dc4f2a557703b2d8bdb74ff107bbb239034ed363818197b2569c03572c14cff21273e94802159563d50205edd651 +a1c66a1a82c60dcbd139b8ef4de62be423e7641a6b94ce0d0468e60bb1b000d268755946a028d3961d8b4d3722016ad1 +b14b3c26dd9d17d6fd8eeefc7f706c177ebbee9b8d05f9b01174deb37649f77f97ef1a1abc0cd4ca7a13618a4036067d +8fe8f9754c5ee102bf96ba6b6f29a14fbf83cfe3c5f81b5358ccd4db87fd8c5d88760172373bdfaba7eaac98ab1fa863 +a8c308c15242bd9c7b28e110715315a1f9818ebe03662027a6f1feac13a5dc9bb111d29444d13546d8e441e49960b0a6 +85d87035d74a1f4662f42a8c6d26782daceded0aecee9232b78139b1b50fb764e87cdc5d1ca9d6905735dd9c3dd00dbb +986c31370f594d4c8a9096c091cb1484c1c0755804819a9462ad1b67937c6b378d97f1e4c27900405b21de2646be70ca +832b4b427f3347b0073c24f54e17ac16d5a80d04261c1d464f89dce89f42750d69dc8a83ee0481e410f94cf1d108c0ab +b13e54d91d5d414223caf43a7fad36930300594b8cb3ba97c0c873cfefedc165d05f05deec8d74a0412d5f0932813088 +89c931d595849c8e54f50d550ae4a5d71c4bc74af436965bc32adbfe829a48ab15c856a69070b4a4602e0113131ce4cf +b03731793db466b74112a1b9dec3344fa952e81bfcc7fb2bef3cb20f566c3b2bf60c16a93f84f77f4c83d8f2a535a2d2 +92e8fc80d49001139363e3201c93db8326c41322db51937ab641ee7f1b2f7d03089e20eab19afd27abc23de039ab4b0f +b27d95c90dfa91886aa91c9c8c85ce09fc875279028bef49abfeaf44437a0528ade620c8c2b3d712ab594e73c5c032f5 +a42e2598731a792975feb5b24bf00b1e7cba1620922f8c2319dd5878419ce6099663b448299c0623ce400875c48e12a1 +b062840f63b555a254e3bc36e9075d57c816ed2e9cb0e262f9de0f3692456d94eef702489e5b11c9746b949b5e84c06b +886226745d906664c476615dd41deef6c338ee10380657fdb75cf9ef28b4d9f56e69c8d0ef01e9cb80eeb42f3e5773ba +854a3649dd5b22def4f246eb0d1f1a206d3dfe42b5e44b5fa963a7c5b8bdaaf7f35b542b3e9cc53187e66a2315ed9f9e +b5a48cef68a056955ef4c080c85e4044e9f8a562f2beac9fbb5e19f8d618718c86794338c6dae8f94b6f5e9f8e98404b +8f8bea7304cab80d0009b417c198bfffd166eed6f6db19f28b7616e8b0733cf0a4d54d204361d7f8f179985c8c3a16ad +8af81f10339e2f75f6b6fe22a641298bf90c8676260abeeef90bcd52f46ef013f5aa4bd9d0b5ec15be61b7c3e0f32350 +b0397c64034598c825f9ef653ff16f680325546695ee6e9c2957d3c87593161a063c5219304ce6a16b7db75f1a2c5f7f +8d2e7677ab6fbe2b0f5ab6dc356190bb3ecd7fc468c698d512a6c69f22ea97b71fa961c88635897a5b539ea51b70b4a0 +b4e91a693cca1007fdaeb7e679c6837bb8eae0bf61aae447560ca6eb5ba918cbd9952b41769657978413106b359e169d +a8331a907ba7d95a5e4090a7680d1bce3cd803db49fb84a48996e96514701de1602c4eeb4b5e0b1c2a106c4f678a72a7 +b54dd28a97a5f934a34c2817af91a41e57f88d7eb5fb584d3b6692f2d1c4b2a4e273c4de5fa33a0fd1fa02c9d7cd1fb1 +b8b780e0f6059ea27aec9f3693ac9adf0b93f75fe7fac5230deee1e7471df0bce9b5b2f260a6a0a346afa723860471b2 +980e9847ec83d61442a86cf8c7464b357694dbe67aa5de3a8c88ccd1a038256453101366dcdfe11a565065d78ce89807 +9350a17e397bdc3d2bfbb84ddc79a48bdc6ef5c3d8c1ea39251e762fddf9962b69cdd42c563d03f64615b72c9dab07bd +a34d24b69089cb5ffc5f06eb2acfeba13c96a1096d1af9620aea28753baf3d0aad0bcb30037ef3a5ac36b178816e878d +a7c8b9108fceb4e0377eed48af9846530114df986cbdd35f6d54026104fe6bfb3b58e57fa2b3a750225528f8dcb8bb9b +b0f71f6a04cc7119db96033f89530853d58a445565de2efd269b1e3956397c35a49c328102325b780fa5d0cf5adc2a4a +92be082f04722fdf3abca7ebfd162b7062939c3410ec204d5478dc8de2bae2b25e2654441d29fe2c350895512d333ab0 +95e7afbcac22dc2d04c5635d7a8c6293f6ce29bc6c932850d24ab5216b449251bdf7aaea838ef40e0e4eee1de8f63bfe +ae0a877b488865f21194470677e12ea7e357c5d63f6bc454f608e33df9a3b20e9aaea5b6aa42e8999779b8b445831c39 +98df977479667e23b897b91f2db8f4cdee7ece7fc3ecf8a07d752efae090d8bd34d781353ec1394550d8a207bffe582c +aaa0f1bfece62a63f3bc76862b8789e2593b4bb40b3c413956e9e5c4eec604e39d722cbe1db210396eca7c2293489099 +b362703d2b72909d06407d139531fc144e68ba94e55643cc3cbb9ed24145223aff460b1627b41eb9a3b709978aee5a58 +b020025128804bd642fdb1d2b70b07d181e5ba30a5ee16f6bd00d7e2d0c6af782e454cec107304823be61647e65221fd +a409894c0030081a2c7f8fba27bd0ac53997a31b35a33498d78bbcfa0b7ec0a89b9efa99dc1b8770ba889060f39d56e2 +862f9eace3f54288749ca8402c22ddd7829f0454d17ff4891727c86eace899cbf72d302065f5f581169f00186c23b4dc +91432f2a823c3ce95bdeb5854e8dc7faea5031fd65c82dc69e4adbc5ead2e5a5b58a9cd1428d3f526cf94a217f37d7de +9543a9038fdecaffecc4d3023fd67f7976dcdbc7014e82edb4573479b1789b4c610c3964643e031f69ac7a3e3dfbe241 +b4f31d580987f47c550eabd2d276678a294a612ac26806a06634b8812a571391151d84c29b6b82218cd84dac85bdcc88 +8d922ae4eecb45ebc23eb1a8404aa1524b281d0f0ceda58ea93a0cfd4184efb894c047f0a46e2d007704f5506544907e +98973979672d1d52e561cae7331b730a577c422258c22720edc344aae35ce071be1b017816d58bb29b9cf5c433fd64b4 +a46be974ea72c5e5bd16de591bf27087d97b9030fb4a74743bde5e480052a0de58bd962dbbf0e0fbb0559566c3d9780b +b2b4464973322d865207949afa4dadbd888c9b0230737561c3b76a1953a85ea9439fbb1db9d0d42083c62419db512450 +ae811a9eac5f4ee6cb3a4dab456a3e5d95cb1ab303c19e76fc4b36ef6b4c83ec0b2803ab8680ad1663bdec0ea2f19aaf +95a426f3d2ae6c6069f888010bb20c392bcbb65d0986125e0f0066d4206f4f443f70dcba8a789da042b57a36980e75be +a9ec01a5777d10275153ba7441f2e27ba3d6f1a875f204469220ad999bb8a0372369278bf5a11640ac0709771b814a31 +adf1091e24bdf10d848f1a0920eabca0a2087220fa0c3f8e5b4c72ca0424ff3e0c77ad4c259c12c3cd1c0eb0cf32c67f +b9a57eb8642729541088164b9974775934d7a4c56a3a3ff2a190d549b294fa87002810f31251170b0407c7e9695cfba2 +8625501e5c56948812b72b3495747412e03ede90096be089cb8040069e49cddfe697766ee72505bf715802fc77c08fa3 +8a745aeeddd1be100474d96aedc737208ef19a93a8ad72c10bdc0218073fde6209510048eb46e271553b04d8e6529f46 +8b8d9ac3b91ac0333094c85e81fe2b8cd5c2207073a33f66bb1939e8f1c84ef064a8b2ee984a9f450f0a6e54bb56ccc4 +8cace31444da99fa5dadc7c46f689fa427949d8c089af3d90c604fbdbe0dab052392fbad4b5aeab707e4caa9e739f366 +8750c8bd1f1abe5acfb29ecab0923008cb4455ae8a1db01bf3317df05e1e02f9df3c74e879d9c57b8f59877591939ab4 +8904a39ad86cb42c06692d4801b3718bb63a07a2dc5ef13de16f668b08968db34966457ff2e4cb770dc61a216f4abc5e +967d1750b0db53e977bb9ba65aa820d7970f8c75d5355cf12a3f4c509dee7e9b6c0f7a828474b167c25b15d74f0e9cb3 +b37297bb6c2d9175e0a7654c5bc6d248f47f7183c3b10375f07e21e9f3e66f6581caebfcf468dc0f8c04132a2a0ede55 +803862e6fbca945cb6c0ba202257df5c7e1e1fadd78b842970206575f70c9757d4a54e9b1a0a269dd37c4f830a40d2d6 +a7a27f2fc7a1e6d276522177f0ae6630dcf5205d08c19319c315bacb165b687d125832d97ed689960885bb7cf42fdf36 +87fbc08506fdf980cdd534d4ecc4dcfbd381f3937dafa09db402e07a67e1cde579e680d3f77865b5669f35fc00901530 +8fab8bd57f76d187f1cc22e40b51736b1b0234e70813ca02559ded9c7835cb3dc71a24c8f679081510c32f330d6ca45b +8fb917b7dd71e1728bbf32fcb55343890aa6fc890740f41f42e9620b5bc3ef8b1ec67d9c047e4a9de0863a5eec18e5f9 +b7429e758850bb7f69db000d49763df43d18af11460ee0f158b741dd6b7575527c5c8068cf54f7f78098f9ddb92a82db +8bd3c73c1b6f88ed2696d53d2a0617f74bfada964d2eef2afb5e1cf00bfb646f552643c55d5453cc622c9ecfb23ad492 +8e025e91b30b0f328cd6b79df9603698f1715eb6209e64ef8705cdde5ee1c4ec737a61d9b8a4e72e83b2157c621e1590 +ac0b91bbb5ce5bbc8e8d6c0d9d4e51b3960169c608b6220a352aeb13072133aa9d934b4e69d7c5c39fde68d467fa8069 +88255d08bde3b967dfb1dd338dfbdec12a2079851aa796be070a1d70204048c34f2739b7461840136b03429a8b83b1f8 +97a83477e765f3f17eef0d3243ba9bbdcc50fc581f904e92a853a076adeba917279fc0e01aeca42de1aed8af9579bca1 +b0d9f1afb807e0e6f839632393edef25731ab2141cfa1cd965e986940a4916c8788733a39def0cf67afedc516dcc6ce4 +b563e9ed9ba2134011d7bea6314af5d71f63caa1bcbf878c26d7162dfc76343c38308955215252962fd0c9c87200f1f7 +838d4e97bd67822c22cda558f0d35f971a0ab7debd3da3f15c27f7d4b3301b2c17b60cdbca0da8e067f23fc97d136ae7 +a7bccea326cccbbc4773de402fdf2cbc21a028197be98cebf6e691a7679fc948e6bc4981a14fbf493a254eedc444dd7a +8b2687732f7aebb153bd6030dfca0b6d257b8f2945eb8221ffd36ede50d463172cfc4bb17dc30bd21d8572aae2540d6f +a4a3e87ec5984c3a755cb39fb04472583a0d2c771552b0701788f03b4618c87690a13a905420358701777e8b5ff2d190 +904c4dee5dfff129de3fb8cd0a6e0576c18ed3d77f49b8f0601997013cdd4ecadb86690389555ebe8a436d8084024f2f +ad1d9c7a6236b22474fe8d45fde2e1f072101b5cb7018ac73c0541c0f9ebec4d5c4469e0570cc188cb5f5ba1d8958be1 +87fc8ca6f737cfdedee973f1586b94d971564a1fada0e4d65894222edcca6552764f1ca0b02782066f19f871ba5842d8 +851829a8b39eb6b91523548ad600bb876408cabed98d30958056367c686bdedbc876e1903b8af8ffa3d3618e3580e3db +b99270859bfe7d8a4c1a22e2d88a644dfd2f100c54070ffd9c4e1044140fc0d21d62c61214a2b81a9cfadf944327ef8e +b89a2ddc91c59dc2ed9b8d11e4838002e731b0bcc576e0e18106238cd3282264b14cebebd8a64f004521cbdc690c4182 +8be96bb11a025d265b7b3ff3151e9e227a8416e6118595ac29bf836ef751504eaa3a9cc05bbdcdeabde11f2dc3d20c3d +87185ed410be571fb532e32d0ff4ef68e98ba2d3d5fbe92180cf1fe8ddfbcc89fd1e03694a9fde1a12ab905db89323d6 +97ef023f71850ddb282f244b3f39579eab69ce5bf3fe5dd2159329b7def4982cdbdb4e71476471acfea0f7ba5a7fd061 +9944324d804fd3978e7e137e6e65348d7473ea23c591136d55779b5a31f45f9e4d866d8a18c76a3a0e8cf2ee61cdd041 +b9930c9aff260105d4d15fb749aa33436f6fb52cf9d50e39dca19d9cc7938d752773f06756af86369e1f5fd5aa71d5ea +a85ac6bc027ade2a9bbbab2b231241cbbe56e562fe621ea19208a8ea36e1baced89ec9ab8e2f83b602539e5c053f5764 +9917d40d37549caae646848e18ffcb49f5c6c4e396ebe7e74129a41b0cfe2726b4dad34d51f4bc706063e654da898824 +a25f8a4d8ab34724a732dacd2b316c80a6544d4b8c1f45115c4f55c3efae6129b83623ffb31da80e2601f70ca51ead16 +932b54b2bd26670936843a92346d231f2f3e3659542f4d4def73fb36ac0350733853130a5e5e9d8e386d34f817f5a91d +871bf29d7263bce62a02690681d4e1c3c2f9c2751de4e35810ece13c9480eab93b80a00230ef0ffb858a829ee6bd96e2 +ab9643bb1c32dc2e8c05ef49bbde9937072af214c19c3932be137b7b75268edbcdd81d1370089be44462b8032bba3c57 +b67d510c460a2f14b7cebaf9a15642a14b2542c13ebb1d1690596447ddfce6a86327ffa377c28891f6bbd8febc2c17ca +93a5ad5019a8e680bd053a524e0ffaf8cb18adfcdb22ccb6cbed67012316bcebed65294bcc0cf4f4e2915dbf19ff0948 +ac7a7fc1140b1197f2aa424b053e8ceaf48abf41819efaff87a2e63cd6e962c278942c2b97742ffbbedc5cd426a8df50 +af0115d9c2f887ff97ee15a1116ab06af1920f2f42700b75cc010d4c8038eea941c9bcc8e7cf4a41036813143ab3e8eb +90c768d880b6ac17ed7ff9bcf76cbd5c1c4879247a757d8cc8b31c4c7bb0ec763d746e6e06e361afa8ee158e36ccaffc +b3f10561432a97c95d02c1a6f317bb1ab5b98cc88cf5d56e1492ca84eb2ae1db92e9e31fa454de562e719b71442e69f0 +8d94729b5fb0afc196064991f9b3c8e04c0858199aa951f49421ab890079804179fe00707978f15637b8d16246794001 +968515d07a0f0eb52adf439d8f70ecd1f6655072abbeea45431dad26c8937f4aaeda552a22a420598d2136f576a966d9 +91f50e6f292e2bbbe226b221cedb9db36bcd459bfd74fd6356b0620766d96869266315e8503435af1719d8ff765467ea +968b328d79e183ec560e8f0de113298755cb23a893a631406defdd26ecd52e4b6f28934ad2e219382837fbb8f87f4360 +94c126a9035059d2d817c4fb16cb13fe6047c356fc495aeb369acb1c45e89306554631f50d313707e82624b6107d2fa0 +90ee85deb494043a1cb280d687e3f55345085e576484308755df1bdb6f734e7dd25fd2489cea746be5d2c6384e7986e0 +92a4f64d98e7e633271bdafb1eb88474013b5ed2c65137c243729df0d79ccdc6b210118ed3587ad00d3f0f757400e47b +af31031fcc867a53760216cc1f467901aeaa3b28438fb3ec90d6a1c8a46590062c40fac939bc3c7e7a7deff8f83c262f +94306afe09f20d5de9ea26f37f5fc8df1e29b3a6963caa94df031efd428545493d53e0d8d7af12ee525e2e21cba23324 +ab6285371b981d5443ecea699af9da916f9320b3ed0a11c15503f3b10eada3ff5dc95d24a54f5aaab97d3312de5b985b +8e9735364ae128f790dfcbedcfe0e11b991602dce0c90ab3cfd4aac74526c30a798fcb51a8ebcc5528d88c724e9c2b02 +89a3c12bcc68129b14fdc1d9b5db8d26d11c6c9467f5bff7c40abb8ec23b193746697421ea4400d5ebe53bb3fbfe59d9 +8368e44144947f9ecfa5d126f4a57bb1d3728fe3c5d3bf83310174d638a10cea02ae79fca91d5489ecc9fa679feab49c +a0474ff532e1a6a3dc8f16ae27e77d6ab72b62535ba0d3ed09da5c692c6fd34424141cd68470922e1e147fb7f7479d5e +b9ae0e47fa8d999135f78c733cdcad786b96087a340f86e4cc2bdf019b07fd4a76f9b4b041eb397f61bda20c31d27838 +a7262ca18a7179924d28161d64e6b6cec5da35b7eaf695642dbc127a7bf4a52bffad82b8d3fcd010b308dd72eb567f26 +a23ecfac8a3f978f9ca8810458973f528846de6bb92fa6422b9547d55d29d7db7d8bdc5181e9ee2257a458466f714449 +b04c32403400f82677d831314956acd3cb507520ff14d856cf8ec4fab37a4428a5d24ecfabfd2c6086e4ea6d26b005e5 +9669b2725cd5965305c6ea48331e693086f4c1c4ca7dec26bc6290e9a8e70f9f0bedca6e36985c39ea35b412abc7f4b5 +a6f68cecace45317a758658463c5fc1f005283d8c3d3de9364e7dea453007d8d4bc849a21205d61ef81019e0d25858fa +8ee19ccc1c83b2c4d7c7b712bb370c129201bfb340c5b49d991207c995f870de2d0efaa88e05bc9eac567c4c36e20175 +8a530ece1992d1de92c4e845e71a1ab24e53a8a0679aa5bdeefc60fd890ca3cee2121f66c6f4b29c437440e7644e65d0 +924338d7f356da9b8477b3aeaad6f754a8d8f6a791d70c3ff23c2a6d4488efde9b9fc351319f3ea1f545dd11cd23ab76 +8eb76f86e057cfe9f655ba29bac89cc97db07f0487c86e7b41555b5549897bd3d042cd2ede35e312cbea357df622c6c2 +a2c0da965489d15ced574f5e27cd4781a1dce8fa4f17762a25fef1320096b9eddd92a007d58a194ef57def3aaf4e925b +a3fc89753e8896d796859c9e5a00d184be7d37c4d5741ae8a60cae9a7a30c5d840325d6479701e1f61e37065fce81870 +8b2f90cdb3add567b94f4c7fc89a8a57a0f06877639c33df2697f7c39e52c1869aadc98a2f8b85a58fbb02bb1bc1a441 +aeb2c22d9186725ea40d3a4bf551482bddeef42c0ad33801e35361d3695769429449c2a13955cccab55778d3ff29b664 +80bce007abd8ebe2238d465a312c2d125d1a695184b93108d728075595c7716786f9188e90ae37fea89009d087e71b07 +86f5df2b83383c737bb6db4e435f496ebfd56b51300612c402bea9ac2f439ee7e98cbc2655d31646472ef983aa6ccbbe +880e8a19af5ad76f14cdf94396b8dacf061e02eeaba02d4c29ddf0d07c6d2a737c987d69ea2eee52f0db5a4dec318932 +8b82368968f9b5bb175c95862ad403beee68d199a20d5dd618395daf11ff0c2e1fbf3a31c23d3e582556276b44e70b99 +94a062abbdc5ba740077fb9de722ad2ccf3f6ffc8b4a9dfbb0bf2ff789bd529e7b9d8da520d0342af91808fc00431638 +890b4ee1e9837a4c215616819dadbd3c6ed7586ad391498012a54d735c6df0b72c2dc3969d1b24cf6fe822f37f9c10e7 +a7dfcf43c9c22fd22f47db490e8f0b8f42597a5b4ae3e7bc4a9b12252b32f89412a2aed946eec19b133cee89b4a70322 +acbd9e85b9d9c3b068220f893d7b6368984f6cdb1cd06a784cc9571f0c632775ef890dbd51371e8701894cbf667d04f2 +a9b1f84f053ef6f41c59b1758836a82d53932cc4b8ee9c2cafe705150e1c717e3f5c15fc21a2532c071e9dd9bccb4dac +b2c63345748a28d04680e3e451d1f7d430bc8ff2031b6bd4237a1f55dfadaec20d1854ac158cd6a1466dae525c1b9b06 +a23e7b2e5b8f3e3b0e350e1a461708be9c1434d49fe2e51473e2e360bb0be140a96f8ddac99e3b804557cc25d3e44776 +a4c4729a38f5f32f155ca4d1994b61802ee418b276486e2dcd681fec13316f3b6d4a8e76eb9f48e2df0339543b11326c +93be67dbdec2655edfe40dcdcc0a7e761b7259a9d909ebb12fd7c9a5d4efa10de065d2eb049660ed01ede2f26388d43e +932480849f97e32fb14d4a69af4073c377e949af7293951b3ca371a306d9e2096157f51c8e5036a44eb73c7c842c5aa9 +8b5e79ddafd675ff88d8f65176321a08183429d42d7fc1e7cc3cfccdef0dc5824ee40f279a05edbf4d50418a4cab2126 +962bd6fcf7c7f2a9c569d584658a735bd16440de2ffae236c68ccbf2ddc5e13836efb163690062537d52f7d8bbb24222 +af80793655c0b3ec3029673c50a7f212d297f9f80d7d1c7cb1409d292f3bd7dbb8b24581017d9f3964e3432f46e79ca1 +94c8cf3c737c102e9e91216752c82b17e4e42074e08ce44e701c2f8ac7c08902b911cabf38c4c5bd41400eeb1fc97acb +8708ea7af8c86b2a1964edf64a9e9c56c7febffa742c3ff2e3088a61d3ccd63e135811212878ba7ad8a819e1859f4e95 +ab8e726d468417c168c892c10c7e2297e50c67e4283e5b48c3f3b014981ec482e211374f779faa0c1ead906f5dd4114d +a93911e672aa3d8dd686280cf062f128bd8eefc058fbaea52cc0a9bb255fda84e65ea546f662fc75fee4c5b24bdc61fd +8aae6d9289d8adf0f81e7990cc79cb704d0a975f03b9ec02be66089d62954fd9a8b005c5ba8179cede366d25ccf40869 +91e44ca55de8ad3ab42816504813cd9ed9c6d64abf6373e8891f909cb49c8a951ee823cd1f947058d542f0bf6290a11c +a377f97e075b66e740b8476f085d50ce8ac21f206802384e2e072f6b9700a5f9cf0e6f2236307775c0e0d6ae8459d864 +953c08d9f2a9d6ccb22cab906efda69ec1c228aa5c2ab93822b6f71c007fa3bced68c6a70ac605c6145e4af770b60de0 +86d8dcf5a9ba81cf6a3149b2fff96e36639767e9de461bbd3ccc870634e8db331b98a888d7e8d3d70b6ed241d8ce54da +88db73952866ec07c49b484c6b18de70d439e67d971c1b436684d489253cb96d793cc4d9a4362b51dffce837dbd03bf6 +970b7aa9070334b0649bea1f0b4e53fded64665f87e055e3527e0e567cb57a0e97d369aa16a005155cb69000073d7695 +928c8aaf72b3f51e38c866ab457f75cbd7131b676817a3c6d522fb8f876b01a9ab3a84238eaadaa0a095ccd6c1ac060b +9561e78d16061b5361ba0be11387c3f6029415f83bcc8477b8729e88c55f4bfe74b59c1b24bec0eebd9779cdfcfbc96c +aef133788d1e04ac64f573f3ffab473209dfdcaf2c675fddcff83724d17b91d6340830409b391a94405d6ade005cd01b +b8ad4ab0a1ad6383e4cb12d479cde732f202687ebf886184507371ac277446b3bd1648c49c89343920e5d57fa6b255c3 +a8d00257e331f342b79b3d25b74d300b070326b358f690edbaad5e325293d8b55078605a43ecd9dfd27206013db4c286 +aa71abee2720052cce7a5a0c3968e64c2c540cc852dfe08b742fefe005dbfd10397f66386744c9bfbbaa40779c2ae190 +80c6680857b88afd3ae8801677720100f0fdcb9e49c82f74b8ca5a27aef34e6df03462cf9ef5f80169c72da15be567b2 +8c2f2865e132869fca5232ba5e6844ac0540a53a66971ad54ff91f186e011e5412450df9099fbe0b987be443867dfdb6 +89cf681e0506baaa528043a15ab3bae09b8817853e889f0b3de138992e52612fa3e50d54b3686cbca6428a7644f58208 +89ddf69b72b9ddf7d535f742bd3c942000061a5a54987f2ccc7a09e035be978cb32f653df9568526c5857a5df4321f59 +9908a3288b9a9972c3f3f0d5923d9840756b74f31ae0b24ef2188465efaa5247b1ed13b774991bbe4c065c7e71b487ea +9454ea9a664390fb1ba79fbb5c0cc765d8ccd32a02d946a14353290fa2a1ba911605ff2e302c340e9ed6fbe8543ee6a9 +aa4f4d9ef843ca3ba334d73af634a0ee800b3393f8f7701cd152274f4296eb79d63869d452b5e83976eca246203d6f03 +8fce1e2e59dfc4fb46f3741d27772579fbf2f48acf1a38c49b0e5dae7d35f2624af3a46a48b89bd835b7d452ab0cec80 +810ec0e58504ed556e788e23067296a8e4b4ef31257d508f05e5245bfe6d2c2f658fca8c81538c6c9ea6ed05a8f249a9 +b6667bad0a7d49cd2dc60af85e373fdaac2af0d34fdee51a9fbc1fe8b77470c162a04da38228fe68b7d5247d43026734 +8982971d57bdf35e0f34e867fecbe0c140d94101484ef4ea01b796633beba184f980c3ced28b24ff42de1dc504dbc854 +86d8d1f3edef9e61058a58d966169a05f07fed0d93bd4f4a7cfca5a872b2aad0d1a78f8ec7784828e5813c8da577469c +b491624c3d5e517c9019258db6284d7533778e44b1a0060dec5f655a7b79057141079115f5cb1d8d97a90af33cd7563e +856e1cd4f9ab7cf323f5988bb5d272857d2fa90527f800362569a39defd93e37be2a60c11f498c482654f55560356f7c +a08884d0e642c479fc8e5a9837d1babbe63f3165c02a57b19d0547fa1fdc18ee382ea82a86cfd3135dec8f2aff793f53 +b1a4de5ea703fa5ac8a70ec515bc65203a9415f6da109b67fa32843a39d7fa6232c9c13920d78c0f16e99fa5f6a27e83 +931a2ee3220ac7888157c426d1b33b8a56f8879fecf1461af4cd6c85f94e193bd6ae6f8dc3946fc689e42bee213f0027 +a844a78e65ea6f75bb55a5db1e78b88896caa1d54b624f218eeb302397dc98a084a2ff4b964acd0650667160928ceea4 +b9c214280a15b423654a36b11646c928fb42ed2a692aedc01441c67522760df29c6ae7bbcb9237938a823188ad4d83f4 +a19575f9bbdfccf970bb3754818e49c709d1bf0af015541182fc7203f7aab51cad31544072d52c0234a3b649d03d9a52 +8cd1127b7485ea7f349e2c89a4b78fab3e5fabe5a95ff0cee10a3f4fd48940e431ca5e526f6342f7da93e32e8eaa1448 +9906abc725e445092dd7dd0aef90f989e3c78aee96f3c0a67ccb62fb2a51363c71d783490fa5fdda0ff9ea69f5b9233b +8996df92e014c226e5ac724075c19d19a9204b2e086ed5e75a9bfa1f8391c4c77fd5c0b85a29f28b302a4af29d38735e +90225c9490b39d151a80a9f4d9a7f2595961c44779a54d5e195ec95096f77e30157c6c629cb1c36d995f6c3ee129ad20 +85925b1dfe3884ae3a0e993b67b6c49685deeab6cf0d9997309961b7f727cd6133797bf04d21ef7b620d1d6392450b64 +88a6c518e577a820d83f87e9d5f236f43d262756b1bae0fde72af241fcc192417ca9724428d17a3f9dd813712a772cac +8f501fd5634fddd00a8411c0e9c6947bab0dded26339821bc3543a64c519d9575c3129f6619c6079d5e95237c11cfeac +af2b42945d7c81bc422a1bcdeb80027a1a243f89c65c173294d6c92e4cb3cd650740cac17408e7ba1a34d37d865b9bc5 +abfa5e76f1112602ddf152aceaa9f588beda3aba1115d0823d6a6b074d28389fd4c8178e8a845262200b9af024a33a88 +9732a0e3efcef5ad4d43811bcaffaa1418c791d3fd6ca4489d6cbbb7c44b55156d218f0fe86f2ec96ac306fefab2e694 +8837a6c4e60839ffb0b59e94b37d81bf1ea392d44cc81717c1c9104468d31fb5fc3c35b1efd9991b5e7e9819c66a7221 +b6545fd0b455748ac3482e0ead3b0157563cea7bf6bdd5ae2af7afe1ade921e5ba80466885ba73a89657a735c92658a2 +b72fc49fd3be541bc26cb968ba4eb3078ce7c71fe0ac06340f7ac25c0befb86af03c4cf8f31c857f9e5d946401e86bb0 +929f424548e29c3b47fbbd59ec00d17b00ee1c4f6b966c1fa7e0f8528d52078278f2852da976b8931fe813b0c3b71ac9 +b37861ba981001aa6192cff06c13f041410aa60f965ea03dd48068b4295d61d2fa276c3f477f985f50189e33308c1876 +a73c7cdffd646cffb255d2519d8e08dd8d9a9eca0610211177e259230b8f8c7ec8727015853197a0f11eec8b59d4f2bc +8da1260ce51220ad107c3127e871715bd738639cd90824d1c9f5b6181304f363b8bdbdb42c21e4e360cbdee496b573a9 +aac6bbc35bce8b54820ef8d7219a4092c49aa5d4fbb187968cb91ac04bc44fa119766f8c630a727ba184cad19278d9c8 +b964de0bd31847ada13dc3f6e1bdc679f421e262c03353e39f0ef1df720ba05e6d806dba15b6e10df559519ca125fc39 +a62e4336b61f85eaa415f57e21cebc7d54c68f6febab02de76bc04a69658ab1d2f7cf0104da79448e32e2b7c92b684c8 +897c6ca595bb2884b643ce8e69078431979d7e6e1b2dcc6effaf5a62fc906db6466f85020bf5930597adbd99e2ff90d3 +932956e0ba09f6499f1ed231732a444b0adf17080237d9345d06d4262fe8a5fb0f704c919513ed42473751069c57dafe +a24b9cb4ea9c2203a95b0056bb95342c4fa0d91bcc25595fea0161e7d6f45595f7ea171e0ac1bbde13a6d8ca6ad10bf5 +a7714728bc3318f6ac005e350de94f59495ef3972b328c673c5e608fa9059be3277b48f03a5a9634c3d03397af7d089f +b98732aec7a0a9a7998ba51e2b76e5232379482d0047f4876cd39918119776ae2683590f7fe5e44d12b3b3efdd916e8a +87700c3fe20cad8fa3041976c87ee761941d323f2d64a9818f20fcdf0259f796a11e55cdee31446bd19307cbe8becf09 +a37cd03fd348694b2ea5cf081696d12dc4ae108da8d48695bf74c921b90612d18c1aa71b1071bbcc02829e05ba1363ab +830e4e7ac24fb3f64294e5c64563ab5708ebf0e133540b35b985390d68c420a6d680d779fc87245bb1f5c58e59c5ff39 +b5922242a82565753dd2c1438008462d531f820af1b565756d4d27a30e3406ecc503b1e5b628012ea0329fd75561dd7b +91068438d2bfbb0666824d3cc2be488f2eaf3a8a9f21805838f9f2d582ca6bcb103b2f0f313b57bc86f87704aad7c7d1 +a9a2133fe55e99114e526904f5fb3e2e141f31963562887a9fe6a262496dc405c756bf6dfdd6acb8853ef5a0a5146037 +8e48e79f9eb1f8757b4c4afc4e3d6da4d368bb25b4d54e3a1f34f3af13d8037b0d465b29894f68272b79cc60fa676071 +9378b90495b0e6468dce3102a97e9965a5d21fa4a6494d401888b8777bd58616b99d49177f2eb2796476ae84d20b67b7 +b0aea247d7d7c7767519b87dd66f56c306d9eec88b0db8060bb97370099892957e2c950fa2e05f24f8ad097889cab087 +89d0d48769ad81699d5b83f26ac49a29c3e835caee03469e93c11e5f4b8470eb02b52290bb2c37f06afb0746630803fb +94de42d8554583b24317d9ea283dad5849e2f124f659d0afa11414898ffdc4347a9c4ebe783dded21679337b58b67f4d +b76c3047eaecaf4a4e6fb6176c7f4a1d393fec3a360f4c711d6293a993aee39d5aea654fc6429c2e4d4955b12fea5c8e +a307fcef0915e3e3a27b94ddb9561e5d210a091714b73afbc0b3fa5e8140e8c3818f4914903975e8f78d0492d7784c25 +95079c4a5008fb6ae0d653c00ad901a108df0b8c442a68492740eacd15048106b7c4cb5ee88bc6b1dc089987935bdba1 +b65a354aa8e92d6ca2e11f4ed3c1ed011852bab8f0e5b8157a10c26db2748be688512423c11d582b3dc1da57b9d6a826 +a32c2fc62c38eb19dea24b545d2537dfe596423f8ae530e562ba7eaac34139fb443d88f18f39d65d36a65ed1277973ef +81b83b37927e9a6a7c34cfe587dc9cfbd560db3ac57a8a88161fe4ae9a7c66843d32f6f568c927e2ff8f21d8b4299475 +8b6993ef73c2021842060ec0424464412242aeb711da2c43d3985f9d15e4d936eb7a1b5098bfe892fcd3b6ba8bf42369 +965535b46a18f94a1203fafa4dee5963742511ab77e98e471e03376847850357d543dc6ef2dbb765cbc1f03f66ebbc14 +a9386ef496b4f96bd591847baf6dcf8520f7cb5aaf1713025ee894b40b10f243aef06c553376663488377fb8b1b0a022 +a6bae4486fc16ec1f12817f2d47871c8bb61f5f1a2db5f828c6e2c06bca64b1ff7cf4c059a10d6bc2f561fc3a12aa38d +a2b6cda6a75fac16f324935cc1820bfdf013ae02c209802befecac0288d90263a7f84762dfb7c9aa1351415c03288714 +aac87216619a8c50b5d54432ed5681b1cbb2c7084f33e9a91889bfbb94fd18c8071b79ebdb403ad81fea495bc1e37dcc +8bb3b3a7ceca82e4268ab52c00322d5d0822427e43c1d8b88b2f43c3dfae7100f6a29832d16454e093579cbaa1074062 +a2363b4506b1464391a194412a73d47d0cd4ea1ffa541cf8b936c97a46bfeaebd1fec409c6aa2109d277bfae0ea7f0fb +b56911be2bbf1e564715191a526c2ae73bb6e85c45e3dc22bd9dd87cde620de93875c48b11e02ea66eebb68f533f353e +81609eacf4b2e78a9d7f469e0882ad24c86ad98dd18f466d321aa32a762171cfc334dcc049962ef5e63248ef48244229 +866b26d3dbab7837edec84217c85653c6abaa617e0ba2657d67757fd1c7dfc0c7f83f6198fb85a49b402108d6fedeea6 +9771f5796d5d47d22100c7ff7d191795677d53796f4a1e1aada949b372ec12decb6c49e28f2662e729d44f0e09eac063 +a9fdfbfbe114c7f93806b988c50f8ae4e13a4d433f2e40c72b81d0ed7fe879db5e89216a0b0c8392a6d9d54f57760ecc +965336222244229fac41336464c36dac8700d5289c0aba78016db76e436289a0797af8c96d52583618f8c6dbe7b3562d +99719ac482b72d54fa515395847e9a65b733da84f7d10a0be82f34afc20159d64411aacca15041726251fd90ae06a9f4 +ab96b7ac88842ad0ab61f7550b7b4697d6a3b651cfa3c10ad404e7505c742e2c1364bbfd08ad0039ca3b81ffa9d6a6e5 +ae96088cf12f76140888582f6f6404b6f2666c048950166e37bbe46c1398fec343fcacd3e8f332f7afa222ca13fbdb87 +b5b5c1ad493b2e72ce8ba698351f596cb85841f7f7055e31325cadbb4fec3e8045b335643190d6b97c3049d10551764c +85f066c7ffd2bfc4519f42f0778ce0e46195466768322a22673a073ebb66cd77c7b8b3a14157845cdb369d3f40911421 +99f4f10397cb7ff47a2d9d2f29021d1ca96f0da01f8afd76f72457cba6e6376f925fcee28ce77475b90c9466042ac414 +85116606b18f6e5404e9176570bf6d7a9d86116e5a29721a1b20d6b28a733886e2085a7563cbff45d1f11bf3d552ea12 +a17d81b236fb138ed820d335dde2640ac3a44cccb5f11fc6bea5fe3132c4a9247b874e75fba55bdf8093f0f56310a999 +8a16a5cfe10c5dbecb4fd9f4b0c370162071f88198e016111937199b87d006d1b24f3f412d853d7c6541e1c68076b70a +8cb83fd2b1afbad7c454430fb9dbf6530230b782c7dfb01443c2c16563e833c5b230f4c4268dc37a55a681a5f0bef420 +b8851a8dd6a3a17619e7c84b18f29ac9680b456c03e8c8489376e6de9a22ea75d1730787ca5d269af44eeae47f87bc24 +a8f990c9290456e849ae4cc0c320580fcfd50263af8945d01b00baddf801aa0a7bef2ac119d4d1b4be6290615c781656 +b0fa1c28c8c67ff87427691047c362aa35de0be9b0121d83b116b23170ad2b712a0b5bdf6a57a25c59201ba165d5f0d6 +afcd2f5e66a277cef775b636abb598ee9d7e3bc1b48b521da787dc561cea8d7ad963f593c3ac6f23a66a27c15876b775 +92888863568ef01b40d51f467e8364cb1b09808238644bbee5ed118b392475e90c6a1e03a0ef826dff5ada8d10be716c +a8ddad388f2dc94294371d0ebbce02016c463a65bcf3a5366419a7a910d3d24748fb5716ddd81cbab44a2362ee3c077e +8b8ef4f818ca3de1683064ea7e968edc8d9fe2675b8bb2ae637a5784a20cd909d18eed45140189eb9f080c53c06376fd +a52d9c49db4819cf6280c220a6cd306a5851b771de3032f28c7f8750c20e80cbfda57323a55a8c03085b41f4f236b5ba +b01fbfa0f80ef574a1d6733899002a8672cc309e1014fec8e81ea1e96a7be9c247a570f825b7862e814e1f006a8227ac +b07e163eb0f96a51d74aa8a7fab5d23e44e37b1b1027ae9c4155280d8d159f0cdeecd3258c098a7358c5bf2fcf1eb7e2 +80c4512a5bb5e8255488fed7b7e297988732473f0ccc1192cab716a88d035e23cc374a937fca7da87e18048ab026d9f7 +b3e343b13c1d4c98b7706edbf362eab12b1fa87510d5cf168e510844b24c8a9624f1e7e0babf455c6d425741c23e1ca6 +83e4b53953ef683c512756b3fea37756b3c562c88a15cddd902eeecf0de82d0345fb05feeba511e8a6de91aa1f722ef7 +922512dd5ce444df62fded2c53a73385570804e7305cde401116c06dff5ec7812b776b8cccdfdafe422f1ba53b2b56f5 +8d1f7feee880abfe9f09708ccf72f376013b2910886edcceb76018759b88b95cab9c0e8f176faf042729b405a10242f5 +abb7cd087d0cea2cdbb47cdf9be2c6a0c6ec113e1ad5fac083f66a027697d477ec69f46b9aff40c239ad9959b9854e11 +b10592443daa8708f8c882da795da07465efb9829305170bc3bdd781cb6651b503d3b21eca027486d413f1748f40f068 +b14dcb895ab22335373d2b736628c1ed0e815072fd3844867ae24638aec60f8591c6885869ad0bfe509fa3fa3101a5f0 +89631708996651bba6b2113626a2fe1ef0f2ea2f21857b2a1e5544ad31e8a53e755b6d611546ebbba4b2213acde65e72 +82e9436700fcc5b842ac2f0482de4248ec9d1f206db3dd36917c00c7749bda257fedaec513d8a9ef3765057bf5aff25e +b1c2b26d93658451fb4e9cfcd77209dbfea909b2212c000fcc576ef29b808061c9f58827682cfa09e357c1722c3215b1 +8be32f59768777a785d8b257f941215f37db8912183aef4a39a856b88cc680ae7124789c58cb3c6c6f06a951dc96a1ce +8cb60a3d0c9a1efb89f89f78e6f0e4bcf5eabeae6cb215e98cd7f9eb58699ed70dabed73a8b95daf32a5e4bf0d411d3f +8ec7156d6b672e631ebd88467f40caa9ba5411ab727602f3146b468bc00ae54fe44b3228572670215a0dbd59feb66e2d +97b7162101d740aedc894bd5f74b8cfa7ca7e7fe8363b05491c15e8cd54f21b0b09eb41f756b9089c379ea0ab189c468 +8524c9de6be47cb6808df761ed03c505932ba715e757dfb3c97b6deb462433d98953ee6cbc7a576b6837e68eb16d3188 +b024c8fc3fa4f602ab73448418548d9896200065a95e8a001f6c8d4cc3f53f18ec8b85524377fd93e2d2a18eb4c48b57 +b344dc93d3057465592460b7f35dc015f4f8025fbcb44a645dcc3dfb37044d5681d8abd81bd544272dc57cd50048f29a +a7b270b94d9870f8afec3bf2ed58afb76f4ea576a2175502630d0d3f92f9152c1ab0c019f175f566eed29713dd97712d +b86dd953c40d4f5574bc7489323d71e9798f7c6f2dff8d41f6295655c5a275179ffb4bb8d2408b88226c98583a7c26b1 +b73074289a5b08aa695de03ce2f5b106107c6cf2bee8061e3195056e799b0bd8b4172deff7f413ce8e477391ee6294cd +98b801a58ac7e083da541ba058c64b00ba709d4d0ba1683e5d83dfb80a29272fc2a33a18f32351b103b227abd5123da1 +a7cf232c6ec6b9dfb32d729b9d4216688f6d2b6e68053ddfb293ebd5774218c69133baaccec7ba3da9b221af619c2ed1 +8cc1d33ffedcea05f3c593e5b63dbfebdf26d05a5719cbf642997be929336b92457fd9df0d6be6c063918ada8fa2d322 +8d273497dd9f822984f1d8dffd471cc703d03c342f022b2bb24492209a3889f010c4f7ec124f9fb9f884a1a11f84a414 +b62cd013944d8d9d72fbe54897a94e804c93eb84a24beb0880cd98fd5d48fccf5dedf5076abcb1b857adcc986b729cb1 +a1bc703a67ee709f7776b2871f2a88d8574c9e2910690c9242c162ad926ef2263d5260f5c19015ddd5ee1c8ad1a444ae +87de434e8ab5b1d067188cb9c12ed936c26ddb0ee76c4c9cee9bd1ea916e411a354bfab2ce77ed8c8ab5d8c62038f933 +ab128e9de30bad31dc2eaad851da1e39741ea61bd203b48e5671e37f7b4e3db86687574d3cea1f561bbea84f68cd17c2 +b54576c9c4bc3b43270b83b89eb75cb7e89057c99e14021ca42237dce393dc6a8614c5af5c2f69160001b2ecbb407c9f +93adf38f161ea886f41e4af8e42c69c53a51074db9ecd7b7e4e36c858426237167aa49b79737625c9f9826dfd22f39ed +a6907c8dc4073d3d4d40df8302c1637c15f9197aad8511dc95c210f6a60b06f3aab2622b826d16596af27e42f2c9d5b2 +a8b0c4a3a5d3dd5b6a85802039f48fc80350f6f0be2e55bdf75e3197a22f6547ff4a7dce38ef3667006128141364625b +8a5f4c17c729509309b2ac7e0dbadfbf0baabbcfb1fab02f91d055238faa3b66aae850ac9b8d7b7245f0a26bc5253c99 +8bfc5d594700287da2a85a78630c616af8e555cbd7864ea604ba38eb75742fabf6aca12ed99a2439e2e046d8f048a29d +b0f91b7546613341cd95ea112e04b0963fbf7795f118c393fbdc37e37dc25244d10d987c13d6fa6eff3c4721fd0a328c +a70b6fdc66ce4c2e7f1d830b7765b7f0640ceb7306cc85778488964cbcc336ac378b74b9c4ec27358f27378380b3dec1 +87387cd6b643721aac8e1a8533c27602d9632168d3a3532059163dc5e4613838bb4f07803e6852b23c58f7103d134f92 +888722a5a56f5b6b00daba53991ab6fccc32a029a7f1748f779b57732285e56e09ecdb7d4848abb3dbf3e167cf8033c7 +b7f5b9ffa8ba66f54cac387c197058eb9025cb3761550c78429db95f9e1e3b49c208ce86b6126c162a62939e1080895a +a53f38c068233b584211157c66d9d2452c811bcd340d8cfafd32b070c326169306975e558745d63e1617f4b4528a2399 +b1c3e9b0f19993f973f038bc45be6a834b1cd3d56f112c857711c8e6c30303eeb0b205bd5dfe75e46b1f4d4bbb68fabb +a81fc28620e640ccb57dedd40c79b73b0c51565dc61097527b2341bbaa3e1c9ccf20f9d8da1c16704e881b24df0b7335 +910a7f4960a0ec2aae66cbe2ac98f43646b017de84ef3d486c19b7809aa16813400bc2dccfc80e09c63422a9d4d88f56 +a463868e3a8c2d2a7c49850be2740e01c7892c83063d381f405282b4c521cb6e3317361abaa92042c38bb68695c10bb9 +991957100ea0f66cd4ebd23d9f6bc7aa62220f6ecb71ac947cbffc6f36f7891173670977bc58a6f57b9a1e8766100c2c +961dcbd2e6cb94574a33fd48b5d87e0623411574666d5d37f4ff7dc587980e2644cf056e002746088c3c3b0ee7044510 +a27cdb374cdbff217370015d78c7f5c4674ec9948339475cc80a5805979a4c6a2614b6904f943374e96bb838549ea517 +a567bd4a59f9df9f5f30a70cd9f6cea7dc0e19b7fca37fef5846aeb1697dcf7925a4735367be0828f2ded5007f711f03 +823937a900e3b8705b657d40470357d91eeb339324f0fed58695ad72dda7c64f2a6b7bb7ae4a20cd1b2016cb9edbdd1a +b07f2248802ba7dce15b2698a60a4896323d37ecae6666a71cdf85878094bbd4e9c0e4733bd8bc6e9c850e57727e1d86 +adfcdea69c5608f02630db045e5679f9f0768fbfa9c8e97bc9cf9cafe1f747d3813e7bb1adc6085cd57102afd71db133 +908153d3eb2eb2b93c15aa606531b08981bcfc8b76684c2483bf869f335f9d8773a9aa3986ee54d9392856daaf82b684 +8fbb2acf533e7d6e96e9b68e77f7a1df2ea6c652cd8862b946c93c084436d7349ef4a0c453197a9769e986322e9174b5 +b83cf4ddee6140c9df0a08a39bfda79c0d55516fd799c1c24b59397b87a33ea5a0885b2998dadc354cb6f65a4bd946a5 +957a52cb24f19106d80d4115a8a0843d047d157c4a8535775593c1dba9be24318dd434bf43a82aa7755897f895d2ed15 +ad93dbc2c055f9d7e42717391cfae64962a78bddbb9fd102a05cea520654d4a9cb6634234d3a188693c87c5b4c78959e +8dc4b8e49de9b05c33d2a98973e223c01ed5745eeaada3a4c0e474cc22430644a53a60c3d6efb1212ca298c4331763f7 +948b0172df27db83e70fbfdc896ed82696876ac4c51842d270d9ce1e7f1fcc9487d781eab97f40074861401b809dd7a0 +ace190f75cc102a79412fceebc013bda8cf329798db4b4dba658e63228ca7f141bf0849d30139ffdededf98986f3066e +8f968dd6d7e06008a1374743b965a6204c11a610ad92705e8dbe6df3c58baf36b47c5d9988e4a417c80ffd5e7725da7f +b8ba0d5b36cc41f6839543d43166a08bf512f7b56040891ab80efefc774db28c833ecd444a703c75547fa1404fa1ec22 +a29944dd0e5c861eb37c744c429a0dce596cdb2e5b0b2d2438a259a0faaf3d261faee1434bd28ebb2e6adab59ff3951d +85c70422fde0ac6e7a0574512eff2a19df8049757bf78b5a7d7870848626850f17e8b0a5661e5292f3df0f613886306e +a5ff5c3ca2c70b88d15633f9c38d2e065bcfb0e447adca33301a0d4f05b761049c8f795444f11e39357fe6bc0d7f1880 +a2167cdb114d7707f1010e0be9cad488fe56cef65941c35a5878a100adbe522a8abdf7eab7bc689b8727fafb174032c2 +ad3f526ef9ed367b2a25c95453135510472581a758760d47eb9f9b57b04f8c061152e5a792584d6ca7124dfeb7e21703 +86443033ece13fd386485115765aa95673be72b0543fac2138e1488d22419591176423213ec06e5e4549a025eb6aafd8 +887e4ccd58603e6c9cc99bd2740bb1db2fc4127e8d3ec9cf41bcfa3589b0fe1931ed2a6140ae1199d323d2870882ef6b +b701f7d7637662ea7024d31e94245a5f745c7ca889f4f7a8362537df82b0164eae83da5a107a21c0ca889926aa50de49 +ab6bc11d6049cc5945011d3973eb2dbd5a3d786b3824bc125786e734887254a6ed61fdc2a97ea34e6b37b13cd97eb781 +9901a1f44122bf5aec7cea28e9405c33567eb118752edc60f3cf6c80642370f86557cbd76478d6b0ea33be92a22c746f +b9f453650996f14629642bef8fea66c90105c8523f3875d86694100f8022d4fff2915ac9f9b9efd6f425751b113d5623 +a5bf9385a1c94c09ec326c49b6b603f2de987b2878faf0263ed109410536543095c07320f762fb6fe56ee72a082daed6 +ab003c86dd62c801cb16b727fbd1037aeacbec0f76e8abda4c6d87066cf0a33dc1c61721f2134c3b78975efe013cddb7 +8dd8c580c288168f896fd7ffbcf5c8167a55d34f17b2c362d0ada0f33a08cc0568b37b01cf0cef1fd5e2c2e250fcdf7b +acfe675aca83a774d3f526ad461f0deeebfc73a15ab3d37b224f8740ac2d9df238373e6cd1f03ca78a9daa0a796c96f0 +a45cf3242600fb9733dd5e0dda1994e8d37fc483885a34a76cc16bd245f6d9c8d15bef360ef59d0a2c3cd59114280b87 +b64097145d97cdc8b7a84edd1da7e84f8aa44c3c2a4823e6e8485fc3a44d94cde7d7ce8bfb3da5d583386461ccb42afe +a10ec5859c274c0972ec39ac80e461c29995b35d03603dc97dc30ff826ef24c5e52d5dc9296319ffc672b9e1d57d7936 +9702ee805b70a1bfac7318e8470667ee20739e3db3030bbcb9a08568e96c9c8d2af2cbeb26837c43e04997457c623486 +acb3f5a663333d1b4d54dd76a23c6601fd4540e2b050ec2a7fbf0b850b6f592837155e6bee5ca942406643f98bb2ca83 +a577b96723f64d2671f1253fca72df86ef3247006c92cedcfb26eba4b4f4ba71bfffe1d5eb87b0192378d0303177fdba +8c397ac56cb723df015d0ef202fe486d1acb42f8129d3e4b37125a7ff9e81aefb1e19f477d528be1e6b18e7bced27ba3 +a7a6e6994324a80ee0a85e8e8cf818f5f8d16d299f21b2fca8a9f65231982584afe921e76723701abea873275ce0c15f +82c8ee7a39e49528efa60ce1cbcb3017904de6beaeb751c406b64a94aa73af72932e32b63c1d3fa22619498fc46de6bf +a1d0193ac8bdd44ffcd37092a5dcf6e775824e5dee4c0aea5bd46f2e25b312fe58e1e6b9dccf9dd14f240d7ced4fe071 +82c48967f22b8aa1dc63dbda0f66ff2f40f3ca9a7b3e752e1a950dd7daadf9afd81ae1fe3d0e440259dccbc1520d4e22 +a69d43e6f962b728d223f6d474a923dd13c04eb8858f7fdd2df2c25dd4d13a0a69e71132f450613e8e2d9a65938f31f5 +a613b731fe0d23ebf376cb1f3707ab9b2d428d1ea3a95faca9988a1ff4fcbde0a077b38b5942590e594307acf88c9db8 +a7d2f249ec666f59dc51f9c31db6168f33a94b17ab95123d4b19aa00dbe9e1cdf340dc6f64bffc6dabb11912e10edbba +8e64b8f99ada5f317c6e2fd64ac17c4d6e5314c82848efe1eb97a5a52e6bf08923360dcb44c05d3fa59a82119610a898 +865d9512ec4a18ab31e4062b2ea6c43ef32c7c58d89bb0afdad9fe57dadaddd2150f78a0e85086454812855bf09f31ef +b2d23f01a0d182abcd6862ab6f4bf924ccaac399ec143fe2614908dddec102e2feb8555479bfb71ec3476cbdd71b1137 +b50d176e628e06258b518be78c6dcbc3c9b2b4a1ed4ba10ee822b3ebfeaedc4fa69c61c1985e1bb20ea9f3d6df7a27e5 +8174953f4023e31e39f1cc3bad674bf2f1605ec9fc053948bb60dbf2cabade885376f8c76f45b638c95fdb14f5bc562c +92b95a12d1fb1ec489943b3a2a1c8e3c8c6a30d0767125b87fb491f9d4f8de0629afa39fb5c8a84078b08bcc26e88c4c +93f4b80d76689d5936aff6cf195d579ff5328ccd0f04db42522a225f96b0bde2088706356675f185186548006940898e +a5f7f4577943741def19df611c2ad3d459c386a5e3c765eaa5a0cb6c192873675cccbe62845418dbe47d7a9822e4038b +b59bdb196d59928326572807b2ff2edfc93a28632542b270ed462567d32bc36cefc40300619aafe4cd1e91c38d6c9c30 +90df4b921e13ca1e63e8a5c9968ff64bbcc5b829e3421d74bf7f678aa1dccc1db9ed9dfe5aff05539bcc5379dd59e575 +837b0b6813249c456631b2f2fea9402a2303a454a114149bc35efb400813397366eabeb4477f2cfe037f722d78a5849a +ab5b33ae561312d9791bcafc8faf6d65f2c4260f126f11ab5c20c7626d88f2c00177588ec62ca763a7ca44c6ed60eb0f +b0ed2e48cf650a4267c3da1378b8164cf6b774200a5898155716f85f7abda093a60b802ce549811644e5f075d2b26067 +8d47a4e27f448773fa2d592f052bbdbdf30cbef152db6d8cbeb3d7b1a0dc0f2c820ed7572eacddcb51c19a8268426b33 +a56ccd0961bf238ccd197e5bbf430d7c637ff6e01590febab3529776403682ee32d0a776c3dbc6581f60002dac86c38a +9163bbdbf468be88a391698ab1f40a919517beb6c780062d4bab3bf8fd42eed6546a8c743e249fd61c3c347ea60ee185 +8d59f46606f063e68198457917004ae50ebb99cccb07755825782ddb25b96c3cf8973a6c5092c9db71a4b8ed075876af +8ebffeae4fef7a83d81f31a88589e05f885dd0c0b4360545b22a18369a3e6762f187ea6a173f25419e70031861936463 +96013c6b47119e017c8bf473b3d643d0bea1cc12d84d412c2b9f6f55f22543a6e15ff7e818e9799af43984ca2ec3bfb3 +af46ef7696d9908fb343a6754de37e31cbb41dc1a4ab8203d2a2483d1cb0dd3183e5015d8048ff146ec34a6c3f2eae21 +ae047ec4584a962a7ae9359292c98f4d8e0916dd98a414e2e15429ff30ffadb3e0296282f0f7e257495e8ec4bc0e5328 +a16de787896a056d31e3f174418aa3882c03c879a292246a43dafb81f8e0e05564f1cd3ecfa251cdb159f63777fc6346 +97d1c4a94182ada88aa3cac95520711802cd3889e3e057e99a72a69589fd222b241d35a54b04f42503756ec3c1a3d701 +86be4ebe8b92f5bfceba757e1e2eb649f9803c8cb10130b88b13caab6bc04dac4e26d538b7adef68413b047ab9031252 +95d4c0b08caa283ffa9e307f78db15470fca5b577189a33bcdf14c36d4ae3f571d004c5aa1e69172a4068e72b7dc25d3 +965b7053a1d14f9091de5df8bf033a07b9f8d39a6d66979ab5424bbfa32b803075afc2d74e71235a0f881bacb6704689 +a93e72836e2efc704f87065dac0463ddd4b063eab125d834df583d8833873f575a0179781b72aeb2a35533a34a395481 +a2997d7c377060d910654550316ea7374a0329fcf30e743d613e2ebaa15b1bc6c936c2529f5466ef0e60ff53aa2b709f +af5259d4d08617d9be068d1b79a8209497972910938831a435487395512187691d0cb021bd57eff0f694f32efc1487ab +a78b8318838b1049f308200782c4409fc6c97ca5bb6af28996eb191027c8935b7a43a41961ec046e6c8539376c1aa293 +a4a6a9ec652d1c95883d21d3767b13a7e1dee73be907dacad197cfee025755db3cc7a8fb9f40146912f8a3f4c2c49c14 +a8a8ab62334a3c67793fa0691a0d2e80ac1681ce64a02df93b78e4a2f6fbf3af9b160d9ca6b4e835d58ed60d8ce627d1 +980c32e492464a6f36ce12ed06541e3b2eb098934c0ebccdcc984cdbfee4a506d15afe1a30a84d642322c2987d9d51a6 +8ea8c1adfd73747db98705e9fe1aec441484d2e4862b84817cdf1262fcce91f56cd26073d4dd23b04f836e0962428593 +b0f20edb8552d2b08613cb574e9de1c4dce1eae55ba9ab05dd7f2ca3590a7496d63d55af88b3dff881e16d8bf9147037 +915af4e9a28b12ea126668db7de6ff0c2cc9935b138022fadbb1f385f327fdc927388c945b93d252cb51803c242f7e1f +a553e08f67c61ecc5c8955f7251cfe18cde02e6170845e70db1761bc00f42a31cc10de26d4c904200166311f32a3e56a +99f4b066a805512e16addb0bcb08d76f017213ca6aa6afb5c2fc621805c4e123bbe0aa85eb5a0f89d3112635905093e0 +9236c5b0f4d2e58033735d7bd5d53ccbe82c05aa290149286a16a318043ffedfdca9d2d07817601d4216fed50c1082f0 +90a4c7898c58c9af83f94095f6afd5ca65664f16c0af4c8121407cf0864fdeb09958500b2bd0b78950aa9051e3480928 +a589666688e6e7f8e4d99b84d21a1f9ebfe681fad346a237de20a11a2b210eb99c4d3e2f645b23a85c93bcccd51f63f8 +a010849ed4df0e3a8eb61f7fd114d05a8669bfa36cb95d089bb1964ea8f5fa26be0cd10fcd9b38b259722c5a14ba3a1f +b21f974a10a2dfe9987370ef4b6af294cbe8f4bbe35ce9400d0538c5f71287498054d73606e26f93e2f19584aa18e285 +81fea77bad05c3bfa8d5d8409b189fd5c759613cd69ddb19b2d46673d4df944b2c7293989f79580d229d20959c74b18f +ac962b0819a03d2a2fa42c492f54c3d293c6d5ead403c50f7a1ccc2faad58beeb0dfe888a928e505fea9e09807e13a23 +b78b913f2ad9622d20c175ed23f80f235b5336343b0353f82383fa6aab99aef77cb489df822bb168e56496c1854f623d +8c06abf72913ffcb6b59bb8201c00034b447011880733aa6b563acc423e90bdae19f2a7a286943b55488fc863d09269c +b34168972fcd90c78286bfc6078ce559e3c216d8d1885ecd5044bf9f23a4ad15bfc9830aabb4273472c43e2980048586 +88350e0ffe9b5576dd0afabc6d8445d25b2b9a0945c71e6b9a5587649ac5d95cbd722db5ea1e65d3fb8230c794fda5fc +a3bec1fc362a33f38795158f1b869e9ee857a7f2e1acb92c6a7dcfffa64443a5b7f6dffb656452e7f855051ae849be3e +a21f64c49334720883e1243a27575648f53637a644c308ff24f5c26bfe65cc690a5e46b8e432171f31c4229aff4db416 +85dcd8ebef8f7f44372912b4a3a0dfe66a56f16c3757a8ec01b71aa81eeda9f8e5082f92e3ae8cbf3c1eddf5e6ffed03 +af3c1a770f34f2acc504f38ffa7a18cc4b38f8f84f310cdf2d7346b18824ebc7c7663cc0e00b44cfb5494fe6081aff84 +a5dc7c5989fb5cea87c2d878d8436d858458171b667ab5200dc2cafd8af2d9c2bfe2515b0c002cdc9c3e61e4cfe4b444 +b136dcd4577ef3a3a8bc946cf2ec79d3fab301114ee2a692a6c219e252c9128db63fedebc6bd6695a8ae58e7d28501e8 +91d3a1ba625632d59dc963ed54c0310d0447df3e1d9151299722d10f8b26161bb73e0020d408b748fa6fd1db51adabd3 +b89f1a2497b04b3f1b018dc88b52133e1d7470f97f846965fbc934d34dbc8d38f2d8b07d218e62c609de33b61831cc9c +92fec43fc5af23fda5dfab78234f5ea7813d8de34f8ec269c5fa35dd916b9143ff0033d35e7a284c0ef4f41047e98fe4 +8a0b89cd35ecf5b6db26c39705b416a4b950aafaf3b00a9d75f864955e9074aac03826ff9393456871107563eacc024a +b04db63ebce71161fd42bb878e89155bc9e887329e164481077c6a1db092477370a362810d291444f5463437e0ec5906 +88ecd5275592f8b133928770e2273a0e0c23424d72b9e505130b0599ba28d1c11eceb2318a49dee054a8ba0971874357 +8eb0271197fb9f1eeedaadd8eb603b8753ada11abf04ce90950034f51f756ed6ec6a6182a47e1f3ae51e3a1f3ecdf467 +81cc996bc6b12ac56a1ae3add4483ae4f2e2284e9d304f5fa1723231d0e5b196813b6dbbc20b70f5d51fcbb65bf284bd +8e1d94ecca2928c4c68fbc13199b6281f8782c75c119b763e0eb122f81c35f8fd079d1bd76b498393371a08dac95dd1d +a92f98bc09f8a91fd165bb8d05e3b5ec50121d760b353d7e4ea23c0e04ff29614ad9028a4a16bdfe323f2af647e515ce +82e8dc99a14da065200699e458150dc6d49ec0e098bbd91ab8f1fc1767e8732f53855499c8f24da7b9dd681100633be0 +a67b6cb4eeab4fe5f4ebdf5649b7d61bf5fbf7b6cd2d357fdf348ba32dbfa9d6830b1265ea76a1c666b266e30d119182 +a64e3af1d0e600bde18d7f53a4e8d89d296eab4bcd9cc3a9f476c5b8425e6e8082066948fbf40689f626e27e4830edfd +8f66b59782cbccdb31cb1bb2d6385307633ba4db31c375c0a8424a497b2fdf309e7ec1c95490324b9a909bb43041998d +b93f4817eb1d91ac78eb650c110f7c29df40df47ed1d5d3209c3abe5cf59a5e7aee3d1cd232bcce77e157b1a9daa2557 +864b6cd72029640fc041fd3efa71bb210edb40589a26981724b944192c3c2543352b4b757836a7b0b13bf830f22b8374 +9064a0ac94f2f133e287b796363f6d27e9646a8b531cd9ac0eb45b99fa73f327238161a43f7c4fc914036d69abd1473f +a40e60d4aaf9f50f7bfebd0e714fcfeba64e0f7ccaa0f4829144a7efeaf15a7cda2d62d771a76f98a45cda9196b0522b 93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8 -ab54d7c9a3ec7da862f55ac9ffb4c959c60481ef5142df42c1aae63a40fe999ef89c020ce9b97ead5ea155a31ad9dc951253ff1703be99ed05fa6fca6b22850a5bc2ee8d6b5bd7ffc1242c2199309112d240d18039e8036509565c19dc099d11 -8a653e72f96f4553bdfecb4d7ee0802e8bf086edbf06d07a64ec4902d961f9c4655f3ad9472e48a1ec66fb30aabf1fe00ff5f8abe82276df35cbb14ddb6047a28f792fea1ad009b9dff0e5e34e6fbc8d054a9f62432d0d98d4f0974ef6298d64 -89ab5abfa1424db4981ec60bb0d96005dda380506c4ac4358e8c464a4e50c1cee2e8aaf5f2d4b0b5e43dc907fcaff3ed006ab5292b6014c816a06af573d94cfce800dbe306ca3b0342bb570afb0575ae013f55ab5a0c018dfe222793c582bb50 -b11fbb2ea855632e0c164ad83c5a9a230b15dbdb74ccd5fedda7d5e162243ca182435abe98b3b99952672e802ee3a7e001c7909571a6782988055b1ce529aae79c7c5706141ec42bb455ff6224343e272e1457c207372c632b7fbd5123d353f9 -a0ac685c627e5b7ab90cfe24a9987d5a59b354e49fec06af0ec5b287710aa4549d49fbe04e5359e755ff5e6745d190a200326ff548f948866e317970ab13bc01a5a38059a9d49df21300036a69cbeeaead3992b5384496776216aa49e703adbf -b2876c27e287955196e8bbf5866d7799297c5facc41866992fead253d1dde7a91c937272b1cc56735f26ae78df2cac00006bd67347ce3d3a48d459106e566a7b04acea0bb5932fc80906e51c5ff92c16c18a0b55febe7e06ef80df9a4904953b -81fe59b70ff34adf0bab40e1ff6f8d6c6b3066307b3b11bed978b3bb687116c60fdd9ae4ab423771139cecf7b428232500cceace9dcee8c35ca1718af838a6c6318747513a26553b8e1bc356d965f7303c74e20ede959121aca4dda825239244 -b2c50fbb6695225b8f492a24b7ecb0bbc6761f824a61332ddd4fb113a43647527dfdb0bfd9055f6be1d3b7c2e858828116b1cdb8c4c9d0874e417f4b5c524e83ebe131980e7ca3f0d6f4c2720e9dc5f187adf0653a458355724a7d9288ee090c -8383c9a4d40c69e34780d5a3996a7d28c320ff829aab31508dca6e1aa71bea9bc6cb155e15f054249c719d9851d6270d10c868dbc3907f58e099d4544e19486e995bc107c9604df3451af0dd2e949967a0fdbbe361f43eb60ea088600994a8ca -b83a55c54e92080190c4dfe70a67c38b391191f0351f557bd329ee4a8096b10ea5f5becaeba7e86f9411ebac0c226e7f12b97baca8fd905f3e0e941c2a4fee39c490a361b30e6b7ecdc0b09fea3a5799d9f6c6ed753e02ad2baaa98af5375a58 -841e674d1c79edb849aaff2cbe0585c9dc2953e322aa9bdd6f8db7c625a4b6042574ea619ba945f4cf31d5f2b31d21cb0d1119c43ff9e587d296ca22e1cff8c5ea872421caf7eee2b2b2475abd79f9ef84d9adf822fc3379ae001d58e5046b8b -8f5498b0198365787c19d7b1789b6145dd0e05330ddda91bf9bb9d70a7c2b46d5444492e315e1cfb0de7bebc8661bd190167de053fb75c62bedc28c624915b10afc0cf699cc4f2c0ed2a8a90a0f41d4f1140d7acd46d3ff49e3f9357792e6322 -861a9dab0bfdc3ef2d589f8bd5b1a4b478a81a6455872744f885e6e8f436f73a3d7dcc65922369468c5a3310f65d98f312426571ef1ef266ad52d83d3b89ca7ab31dc942e4bdfd4440d9e847fdd04c19bfd8410a9a531568cba45e8d2aa3d246 -ac46a8c7349e2c051f6f0ec3fc396eb2fc419bc15ba9985e7a8464ae38e0311ed8af9a0c68c4578645a9f0d8038056e609a048a0580ed1c3ab5c4d3e7e5ce145dc26599a2d80bde5e2770cd928545747179d23b1f514ecc59a66f59ecb9f66ee -99c914aefffae6b7749a242356c88e00dd29593b243059faf2060ba338241d890c57e1cfadc52a03069be8b7f18abf4b19efb4cf7c41dd8c52b845e6de265f06c92db560680d6a2acdce60bce9be5b9a8e1f2625ceabb3701a14fd30c6ef4d05 -b5dcf9b83c24fd1fb2be97f703dac64659ae7ff80f7e4c21ea36c1aee3df257ef51d0d1dcdd956c98b3cb11fabdec4e809952a27dfbcebe2393f3c2762e160d78a151b26cb4ba0d49617802f9baef51d8c6eaf5a6b2da20c1f5c208b494f3de1 -a8a37f4dd5f16199de8454685158549e09cbd9e81a561955995429d04dcab25fa71d41973ed181e815e64266da2520cf19be6a5aba3508917ffc48fd4446daff2ea68d723ae3eb6f46e6a59c17abc1d3aaf40613cc4c043de018280d48ce0efd -84077ec9f2de368d0f711aaf0620f00713769e412e55c7988acc061b2ea51b233a53cbda551b09e6306d1c4615b866c91420b16e77b8f2f8d911fda6dde4c6e099601f6212efd3b90042cc3226a91097981ccd51302c1fba72efea1cfaed9de1 -88b74d8ecafec474022e41f48a66c5ad71422cb2706680c01c970fcdeaea8a6e4418f1545c7353cceaa78b168ae4a2b70a30a2c51549574ac53126c588f5f1e72053f5811b1fad709607254fa4f87b6f7d6e89938a6761e27d37c9b803770f54 -a65d3c4adfd929d531bf86ac0ba7ff140cc1181f693f5ca440b4438a641b332fd369a2df230dd7e2e6b1df5f54017b011605815a7325ce3d45935f96d3012661eef5839c2e0c31d2f8d0551ebdde6e36b712acf97d41be5d28339f70adb57707 -9476a90c417eafb01659638a98d235ef2433ac97470ee78879a0eaf93941751b3e0dbd9f6500bfbe40adf015223a89100b6b533c28e98c9aa4addfd27c520cbb6b16b231acacadaeedefdad5c8734b57edb9540c2b1e514054f15a6b3a6d5f2c -ac290f34fa6b516e3899628448ab9e60a74d38bf3a9ca36f2f186c119aaacab914fd5efeb41c4af372037d324938db4d0d5a66dd636b097108dafdce046a37b79e6b0acb09c9775bce5e859e4c4246bf3d8c753ed6058242391767baec91f0d4 -affd61eb4bc24483d6daa055cb0cb6ad7e4785f4a13a3fd919ecb0605382b35ff96055e2b991156fafcb8fd85807f7660d84f02913fa0f2a5961c9dea3452fe532349357ddd79d24d23396c41447163079fe69a8a065f7b5d3230edc713c7600 -994d275b27dd228cbbb0326a1ac03e3d6ab4dc8f6cfb70afe97f722d6a256a84e5dc86e3677dccc5b8e7aa54ff5f03f20b2aba4c31cfa86d8484b61f24d2baf9e5a4a0bd74c88baef9c6b707fe18da94191f3fa7fc008758a0ffb46a9480619e -818850921ae0a3cd4e07e3c3c7231c4ab325188df7f679215a41c983ecd85e538699ad5226063f38263433838b5efe800c37029a59cbd1d379de7d61b3b36dc76a599e541d0f489fec3be704902dcbb5c03184a62a20e28b46143c97868c083e -9628d869c63f03f1844cae49caa5e4740ee72a3177375679ea5c5cad4a96d64dbdfc9f82321d41fda33069cbff1e27fb0c97ee422b558d975df023c19f6a599d7a958ec416536249a16f92c4a7241c2d14eb94b2bc717f6ac11fc866f47a35f2 -af8e9cf99bd6ebea38dfb0aaf56cf2bdff5251f770962cb44cc336aa0a8b5d757df79aafc51becb51190120d4bc673b40a27a9ae1c99726f5d597800b197802e65a63e1f6a2f28b457b891e708fca0aec375f9089fabb82f3c92a66439a8083b -b777f84357ef01797b362fc5db838ddbff82010095e91daa6949561786f661b2fd829bf0b4e656f29fc6196042cca0b50212da28d1ecb84b72311f03dab329d701aaefcb926e38be40e3504973c07f96242ad89b2aa716ba508f27eb30e92674 -b01b9e63a0793ea1789da96201ad17381a158576abf399c6926c54b585c1a9a7771598d395036dde3ef1d6f3e512b0d5172c34cc4624a19e6466f3e8befd162c24c794590d6548c591a535c674d80e29c25048e8784d998bb21ad99ad3bf10f4 -a8a899c7d601b46204b8eb5391d638fdbc7af8d26e57e77cdf879e990edddeac969b6c016c7abcd7ee218cde65284cc61461cbd54fed218f3efac5e060f260c1bb0421a1da7129d41c2bcad5e96ed0d6a5e9c40cbf21530abb25dae61dc3b128 -b55fa53216c831161ea290e030cbb7dd7838f480bd0737643f765195d77ec592979556ca59d0dafdcb559ff03ff7b1b90fd6368c5c205e3d7f5e2ad27b5383a19a62067190494d1c6b3d5d660ce9a8a86456f3de33c2908951503af10f7831be -91892b185022682a326310fa2e2e03a15ec46adb1892f1d8cb6a62abfaedd24ab33fa8e69ecc4f7e516f24bfd1c061580d9bb96cf6605512652d56070594ba35479c8d6e47d92343b9719898ff620067f38d5dd53e60c136a7231e81fa37348f -909abb17a009e1060cdef285a571451205a67d370430fe19fab5d495670a8824098693c054e70b6f595668629d58a1140d06dfaea317aa7c51618651aaba82157d542ab590109abc8ac36f44c720c11e05dd9faa64b96819b09ff8c761de4453 -8c91c0c8b1db4005ed3702110ffd75230b00bad6c969b95af6282378e4fe2520302b13bb9acfea47573498ae10a395ff0de9cb7714a29c48762482239492cbad0d6a2dbc33a4dc2267d620f346619260d4ea07967dd62ee565bb871e3755eb3d -977f426c94b291a9b398448974494487303d7157cc414bfb35ca8c37a8e5a18cd717254f4aae29f74695a813cea40f0301b52ef41257acdbba37bb9c021b0ec187b7a3784bc12ed376311fb2fd1a105748c9d143a408888c9d6426758591dfec -866ffb2ce1ed33593f9aec6d0e7195e0f4513372230e4ea7a851d028d99d00d4a2412877e3735b7d47027ae900ccbbfa0ee918bfb52ef8ae0f964ba891820b559bcd46ca9844efe1f4045f4d3ccf611cb8545a375484ada1a30c606cd64cbddc -863446f32a18aca3874c7a15289030870bba05fcb839fce789cda3da3377ba7ecb1a977c84faf2667b4144f322268e5c0eb7de69911ec46ec8bc017f19ec14c7666046bd2bb338ec531062e46d53794146cf9f5c613bb144f1b1f8442a7cce43 -870a2e8743b845f056230fc62b8f5149335242b71578bdf66bc14fa6d7527fd5bf85d0ef516e6f2246dd601413b67357138b794aeffe9ceccbccdd3900dc9fbdbb35dd3adc4a0221493e594ce575816aed8af0fb53d8df3502ad51bf5c9da124 -84eecd70ce4bafd7d6e0b7ea685267812ec23f6e2178f5fc569487e4969e36c03856ccb56674e65d49d4b3150cc4ec7d0e936a0bf8a9ae558f838ce0b5b5989ddbe26ebb9c0224a2f820bcdc76124a45071146cb5e89ab8656ffa27eb25c8fbd -ac6b775771419cd38e7cd37e9f594a89a66e7cfeaf5b9cf21c6b44b41a765ed54ad2888c6fbd77a23285037efc883fde05ef82ed9fc49afbbf4f35e8401c7df4ef88f6a9a1417a29ef534e365b58da5bc6c98d486f2bfd839424f0a709d7e8d8 -9954ecf7e25e1b8e67d8771449e7c00bc2ca4e48e604b92fe291e3ef8fe5608412de8acf7fd500f62115d9e10a0271bf0b02caeaad3f1ee939ee8a03af9f37ca50915189b54715a934ef01df0e96b91d0452a0b27254f46f94660c1ebc287be3 -831abdd3d7a5bfcbf39f38fac455e5e113297e17bc4dc8c49bdd938dfc332bfdae6af6c06cc8228224940ea4d0316549152214e732fe2032b16d0517acc90f9e9e0f496645a49b3864eebe19b1e4b55c5a5d86533697f00cd9ddfde38ea2af70 -82f11302ec5c2842184939b9d43868e03cc90120e6bd5554f2c051cbff458d0046e74652ee001deb081b8aea0c37c48707081ad9f82453973fb358ada46d2dd5c6b7ebb9e5799d23dbae4ac90fde75701f921ebf244b73b0f04db659454af562 -a11414895fa706e76387b79f47e814bacd9e437b7aca346b101d66d962021a4f96b67a30b4436e305bb3317eb82d0c080e657be2c0bf247e534c6e31f85f1d9bafe4455a2ae22a0192e53a1e9582e66b460180cd0cb90300b4cabd2c36bc4d21 -b55043990ddf27bd285e9221319a1d918060a315e92d8304afe887e9af0879e17da53871865882d96ea2b8daf20bea2215e9a2b2b94dafcad3612c9fbadeb7c9f6a4e2adb4b8e3ecf024737ada651b784a76831c2c7b6971143c4f9f352c97dc -89873bcf8754282b6547a7a0e1787531d0fa2779c5062e7de81afbe132df403d70fc2ea87be4712c7a58514250fc62d418f38264a2b29a0d10d27483a9574387557914b7a178a982c22160d0c4c1c29aeadfe3250fb682745e4f19f76adfaadc -a00fb88c700529f3bded83be19527c82f6df1a40bfce42faa1bdfc2a5729e9d2766daa8f6a65885d0c0f3cfebe3166a619a8aaaa135907dd85694e26eee0e7062b7e9ec3b9db463703028c8ff9515f9b6e190b1fa8f04aab30c6471158e56ebc -ae77f46684ff49e2436fe636ab74c5a244376fd6e34f6c207de277438cf075bffd1d37c47b5beadf997418145e4038e20eef9391a390b5bacae18fa203ce287f6622eca30b86c8637dc76db81a77e3796b58fc88e3b61accc8f7989a086ec543 -837c575f3a129520019420647875d082900b506afcb89e4894dddd49a3ebcdb114eaacc432f33119ace647291ae759a81273bd920e4031e9760e8ed4b744aab9b44dd6cf5f251e75f5404d0cfca3e15d8ae457aee8afdee56e794491259bb454 -a010bc4d0787706e474286e18d786e4d779a3434db592b7e6398b3de129af9f16251f4b929eae78509e3c0cd06caf82813fda1cc561cef36c1ca5ffe5521f29647e80b2ac0bb5ac953cbd83096627ad4c6d19c15249a7583ffa681a5b8203af9 -8ba5e82ae9c88152a4e6ca6b54e18f693c94ef2ef732470e1ed4547488a0a752ff1bb2f6da9c9d25b875f962070bfe0d020285e031327544ad9523f9beb3463ad4d22a470cc86e91b6d5f83251f7b39e020726776eec14de815f8a428081e89f -a5ccf8af69bd593dabf9e729bec46b8d4333236ef2fec9b3a5e5be580c34faa056e83de2f0613712122a9f4f531692d0052255c3822aae87c04d238311b51c6727f8a20d56e7e221aa7bbf4430fbab74058d390e2cf50f426ab5db18f18818a2 -a36885e433a3c6a7db407194cc6307b3568a1d000e4f6cebc6731abaf8652322f6f8a9d9e589421e436afce02257e9b0195610a1fb5e0a067401cfa3e64fc0f558dc58d15b5ae676d3d4761e11c34757493f1d78fd5c58f0ed56b841479761da -8e719fc50682758ac95fb5547457ded3df801de84f6f9883d567120d0097ae8e2eb634a70cf93b072b93aa436f2d50dd09b905a9415f6effbeaa0515195ad3b4b5bdfe6397e68094c2918c44dad248953b66eb6846d8b0aac41664326239e9d3 -877241b94fba746c0c9ea95c294604e5c6dfeab9e0ad7f31fc4bbb9e2610ffdaba310e5ea82404ce3b3e5618b2b336cc194eb0620c969dad9f9a681aefdaa4370bc1051c71719e551d1f1c51f4b1735bf5c706cff6612fc3c918ddb0061a208d -8d9a0776b02b26b7e41bec72b65f6f693e4f0c8fdd6252a9457e3a0ac315844759c3ecb46f1793c6397932f801c8b4d5147c77408b4edfeb5b19912733a15fe82b7c17138a5f2f0f17933eef986b12bc6ca35d90e5f7c0395234c62f131daf2f -839f21c9feb77867e256ee4165059276b6288f02c5fb580a22d2e3815c375d39bad16d76683d03b70900a416a66963d608fea8d566c8035cb965449c8d8014a38ab7c17d057ba802643a08bd4bfbbb675ec3df330dd6c8df1cf454a917e530ae -87cbc4749fc46227127f484de3f0cd72ba401ed8550249dfc0e3abca082485a39eabf7e58be310b26a5bf52d8ff98b32001239f2d38ba6202393251f7a6c71ed8668e017e25e78639b7d1f4aa1c99026ac98da899286135642649016f54ab494 -b23b59cc019cc068b0db66b2b90a3a0df4c0d65896220d6c1a4866635b7813ca0e01c8a4211a79296c0d74ed4287a8a815118db3f924820a1ead25fedb7384a71480d594106c81887f57bb5cc86bd9789b2eda2a2765a923bd3e6832df4812e1 -a509cceb4138c0e2b57e00caf96ccbe3942e410e6fdf1c0ebcbdf7b14d26ead2713128457cee482bb0de9c29668a2fcc16e4183b7c7131c2aed2378d30b45db311ff4ebed23aa2983fe6be54b6bba0b9ffe7add59f28f1925ac5cc67aa3a495b -a43e95552243a3915f698505c0b8e2469d6f28f431772279f7731923a323b4a96ab644e75b2cb9fd7534c6e441237f921194a230d81d7e1409810eff348edec6a614cfd8cd48ecfd956eca82669ebde2fa48fc9090d0643f71250fd7caacad4a -8fea8707e0f15584a51a93094a5a517f5d46dfb5243c24b977b89bac5fb75791b38703bdbb62820058c5743be12bd6cf0b0d578ff7877ed1aed0f723dda1e75510988dc41be225d07ee8b0698d0641a91008488516fc3194a36985e342632551 -9804a5bf830c8d66d2bb07c3ced70560aa5738b3b8af5427ed5aa119f7110dbf224106a03a42ebae2b5db06c2f5e5d99008451c52a29711e7ea1133723a860df497b2750208b4a430ea2e62c42db91247cf2640eb92ed834e6a63e8829cd068f -945e3136e24d0c72ea9a13de7027e038c53d384d40e3b191eee05d06b0df16acb7264acfb4802fce61116e442510493b00d0c2a31f72bcf3b2f4642f9bb6789935adfb9c05dffe2e0bbc77c4dc008d768a49fa0b74e480370ef63e0225c025e1 \ No newline at end of file +99aca9fb2f7760cecb892bf7262c176b334824f5727f680bba701a33e322cb6667531410dfc7c8e4321a3f0ea8af48cb1436638a2093123f046f0f504cc2a864825542873edbbc5d7ed17af125a4f2cf6433c6f4f61b81173726981dd989761d +88e2e982982bf8231e747e9dfcd14c05bd02623d1332734d2af26246c6869fb56ee6c994843f593178a040495ba61f4a083b0e18110b1d9f5224783d8f9a895e8ee744e87929430e9ba96bd29251cbf61240b256d1525600f3d562894d93d659 +a2d33775e3d9e6af0d1b27d389e6c021a578e617a3d6627686db6288d4b3dffd7a847a00f7ef01828b7f42885b660e4204923402aca18fbae74ccd4e9c50dd8c2281b38dc09c022342ed1ac695d53f7081cb21f05fdfc0a3508c04759196fcd3 +af565445d2ad54c83a75c40e8895f5ad7219a8c728bce9d58d7a83716e095432993ebbd3f6911c66415a6f920d1a4d171478509b54a114308a020b33bf4487a7a8d0aa76ae4676a9b54e765a680f562d3a4fcb2e92c58b14b49b5b2917cc258f +8aa99cfaf514cef4801599cadd780d222194ca1ad69a34779c2bcfda93e5dbeb931e13914421b5809a6c81f12cf7038b04a35257cc9e94c33761e68565b1274aa6a6f9d66477229747a66b308b138f92aa4326a3bf23df65a1fe33b3b289bfe1 +99ba36d8b4f56bde026099278548b1afc0a987cbd7c9baa51fc8e6cbb8237a17636f1a44a385cec69b05a5802059956a11fe793cabb939c38800f9c239ca2518e898ade1ec2513c9ee492071a35aabd78182392a09123d28dbc233313c9120c4 +a7dc40c36afccb30a2eaff250860b28b227c195cf05674704c567d77d6655c446ae835f8fc8667e71147ab02afcb2dad0babe60cbfa37d7c2cddc68d2dec54f28a4142f8353590a3902d5ddaa22066ab563dd1435dda83f276387b9767d69120 +939e6cc97a8b88572852a5b7f25e4838556307f60aeafb5d2b6961edbcafd4b48cb6ac980ffbacf4be963f324ba81e3d12de4f1459d8c746d0762c66ae1b166027f7fbe641d9c48f3c7d97b06d956b0be51dcc9aab65f3e99e1388e63bdd79f9 +b391e156541dfd4003d1697cdb7ec815b309807320574906b2e652ef0175828b356d215cd374b1b34d9f470b3fa0e643113e67b2273268f922f04f072cfb89008358185b25cd631f82911a3f20f90f75758ffb99bebb8076458ae1e9d1ae898c +b9ac9c84934cc2a85c876eff65577e1dfce1935cd6392c877dd881a7d2f5c3e9344f28c04f90c62a6db4237ca00f9e0d00cb5f63e3f060fc7303916e19273b6fe455f331cabbe2fe5a22d584484f0d4176120fec9819fbb0a01e6d38695acfcd +88209eb030c5d78734bf2c2a5c539653fd3c24b4c08e624f9ddc4a6550efbdc1054a56eb0c807595aad6de56fda326aa196d032a8b4b48d40140a2d77df3c7243eda6507936389a321a5811eb38e32ee433c788deeae1eb928b00940e2944bcc +a8632ddc9cf7cbc1e8b74a05b7d4a89618c64afe30367ca0c9550ae7d320bf4e51c5a69e1501a1d8bee4240d13d7835501aa39fdc401a74f4d5734e268a7ce29a1fcfdb0a8bc64e0dd4a9e8578d6985bc2bc6a3764ce7a3703f6fb2e52557a2b +a037ac67e8bb6f4193ac967e05d080a489f58ef8d3d30a89798246f3e4936121ee445b03e410a09e8ebc0db2e2477d110aad0ade99b0887f1eb016e750f42135866907f150bd6f4f99a8cb94281474166874808ebe03b118c5daab16dafdc38b +a50d9143116bffa3b237da8e1805327e81e9cd25e658289bd727d5f9e0020172cc8690dcfe31a240e5cbc48353b88c4908baa1dd7320165556e0aa633f62fcbe7870222d345a3bbcdb7ab6c07f0fd86be559964afabf56f0a8cbc0b4b91d477e +afa988ea6fa4f40c5ad07d2d580d29025ddf56d6ef1171a8b8de3464203f70b97d6f5ace72747345204b35150e06154d1477516a989ce8eea7871cc0d0de00a077c0fb23ad4837e409d0b885bf3f2dde11a30fa6273d662e68e09f461e52932f +97fa1a943ed8b81574304a3d03f4f15907f6e6e0cd36a66bd2ad2c75afafc70a61d3ff69b77ebe4dae9ca0fcedef80081062705e60bbb6ea0f1f398c84d2f8e4a3ac142ac66426c21ad5e9994ebbcc406af474c4aec5e32fadcb21875af7c9f1 +b30a564614493886f14a5dd71c89457504f8c59a7ac01b665ed167e9a8f9ee5832198fd319ecd234196ee57031bdf3840bd5a923e203a1938bc795c704b5285389750e1fd10d7050061ba19db00a60a2c0384a7d661d7d48ebe6962272230859 +84c8dea942cfae71cb02e705ec496d967425793ce8812e7ee53c2f23713abeaff566a658cd1c73dfd18187d16253a6ee0a623e82cd18e31cd1a1875d19c078835dc9292e141686150a88065226ada264740143e87c03a0f6c4da8c187438ebf4 +8c3abae8aed60338f8c4ff80aab22f8a2ae56756a93566c906f490a97151d34a1c3318054e1c494c60cc53327ad86a2d02c6c76a406726ce4f88635bc32eff0db0b61762dc518b95fa8da82e87e4bf3de54f1d72180ef53ed7bc5413e6a9a510 +a328230c92a6b1cef6a444bcb64edb992f71e3d7b93f0b6b8b408ba7c908db746d92ddb2c7588bab438ef3bc61be1c2f0dfc86ba2ff514b42b35c80f89b2e780f813ea1dfb977fbded2cd9b553b747fa952e227ebd8f071163d421fc337f04c9 +b482cab423cd5f1c5df036070aade7aa016283d69619d664025c3feab866a0a5691d344b2ee2bedc5dedd1f9a73eae16003a3827c9e5bbe22ded32d848fba840ffad1141ad158f5c40bc8ae0d03781b9705d851a7f1391b096c576c0f4f2a6b0 +919ee1df27fabcb21237a1b7b98f53d41d849e1b6a8f9e28c3fae2841c6b5a250e4041c737e6725476e5cd715e34d3880f58d80f61efaabc261bdc703e8750f48a923e9bf8980931b9fd9e40014c66c54b3e7c98241d76d1aa47af43313a65a1 +ac94830145dbe9a8f7e6e0fc1f5fb454502d22abcafdc2dd96c6933c604461fa83b2b37385f4bc454875a02a6d4157841250956783515d11c7456e7f11b745f12856d89f5feedaf6a61a483a6c33a21cd2ba0c18eb41a1a2e7fc33bb53e4c570 +b209c699f1233735c5bb4bce848e4365fd76651ae2184d2279a90df0c2f69ffa2a24d84a9b9f274021072953c0d65e1a0202d490d6c37186af240114e445d87bff754b4824937e4f2c90a574061b1c4910fed88d90f698025a2a264e656cb8a4 +93320dc0576b0d069de63c40e5582b4486d9adf5e69e77e3ebaf3da26976fe42147a65051501bc8383f99e7ba75479c70a6726c2cd08bf98c7481f1f819712292d833a879f21a1221a9610bc748fb5e911055122fdb4055cdc84e8bfe0f4df9b +a4380b240e998cdf668591f71a0c88ed143b0185a920787627ce65095f8223dc606fa5bce93377af100de92d663e675c0736d7f1973603a84a5c4162fb5e01c88c7493503ae1d7e9fbe8ece9b418397d68c21eeb88dae226e09875d372c646dd +aab48517d69135a16b36b685adfe9b2544a709135a21ba3e75981a2cba4ec81d1fe28ac0f72fde0c0001c15300ed6a810f58d3117bdd58d0149751d6508cf8a1a1ff7b63dd02d2730a9d6fe96c77c502fe8ed46d50a181ec4bb35e37dfbd6af4 +8277265fe75ab89ce4ec65b33fb4084bec0a56d81faf2f7a9070d2ca3065678e03a790350eba56323a54e0285bc32fe8007d5259740fde226e16cbde8354eacd562294eb9b7f727ed72ffbdad86f467cf057c737b34b80a41deb92634ed866f5 +aa40a24cb2ebe606d969392c03020070f044c95088d80f57f771b837c048342d2cd3474600d7660441090ffb8d2ffb7f0eddd67eb378e3e1477a6ba0bc38096d5d2d3355bc8b60f605f57f0c1899da591457440352381d2b38c0aa9acc7fe419 +80815d10685808cb630820629bcd2fa9041c9b74433630c0b9c1b7f7e8edf1440b520217f76ec9a50c125cf4438aa66006a1928a9ed2321da7ea325c3d56b65462b72118ca2c99a0ea733aa11da9abbeda6cc71ffeed301ae70213a29e697dcd +ac235d079f91b00b1fead7523da8f73a5409fa8970907af0c5d5e4c6a0996dccfcdb0d822d08c7fbc0c24799457d011d04312d20831825f23cf988141056a6814c8a1cac9efe37bdcbfa272aed24cd92810fea7c49b0d07683a5c53643872179 +b8aa59534d75fa5ac1c2c3f963bf73899aff5210059dbde8a8635561c6249e5143affee3bd2fd57575213b52d9a73d5702525867a7dcbb1d0a49b98c2925556fc5463ff0209742046a24ab29e74257d6419401093cc4371944d811cc300b6a67 +80bbfc5b816eea29a6d84e2217dee4d547306994d39e5592515e1b0807b67fe960d1d5addb0ff1a20c158bdb294c04bf093d28996121845a2c9268e2c9ac0f4067e889c6aaca62f8535d35b45036954bd069e3afa84f04721538c26003304c20 +a535c17d0e151d0e03d42dd58ba8c715bee3fabca2890e0e016071d34184b6b34e770d2be29c8ec76b69bcc471d50f4d043c2c240e9b93a81cff7ee2724e02018dfd9b534e40be641fdb4884abcd83b76f517557ffba508f1ba2f56313f4de94 +b237eb7465df0d325a3aa58269be2627e4978f9863f4f100ed4c303cb1f6549e606f2e3c9180824d8049191965c8dacd0a0c76cc56cb22cf1bcfdb39372c8aa29b4f7b34582b1719e6bd59c930d87d5ccd838743b585d6e229d5ed42337315c0 +805c335a2a9d2de30809cf30808ef836d88e9453c510716f01696f14c72dd60505eca8f128970edc8e63a9aa1f8792ac0dd50dcc84fbf4cc8b32349c682a6a27bc7551c7aa273a94c1606d07710188d93579afe3be1781bded15a34ed6047922 +b25dadf385ddd3c39bcb0a014d3d4f66127946b1aceae8809e3a03d66cc25e27142ca108316391f857fe82fdea4db2520cc73793b695eafbf3ade00ef7ec747b0457e49303f5e1a370f5263b436566fe24a0876e5fe088238c7be37a0718d65f +b0f753081cabe2c8fce73aba82ff67dbc9842598b3e7fa3ce2a1f534536f8ac63c532fe66552ac6b7adb28c73ed4c8a4184849be7c1756a4681ce29ebf5e1c3aa806b667ee6bd68f6397aba3215dc1caec6742f21d681e32cd1160d6a3b1d7ee +b798771eeb3d7a17c62ba5916cc034bba870da6b1ac14c2e1cae71af3ad4e0c0d1ff983f691e0e55289d5a33b131f2ec12430c9566dd71f4d8be9c79155357a5c30c5efcfd75bbe1bb6d5ada4d50604ea49ed838d3641f268ca6e25c9c4b6b72 +b52554c017388b099804abbe565346591a086d9979e10140ddaccc0a3680e506db775d7cbeafde67563adf0f09f5c2420caf19629f4e8f03e6fe02e9416ecd5269989e482b90004a083967d1141387eb74865bac6bd17e7a6d5f58225e52d4b7 +b520ff694520919023d44d53f98a7de2f78ff37b2d9193dcaa35556a6a0febf767781a4c961dce7c804bfdf81935f8f0082865253da52e79dfa1c5ff74d61495b2da76e167d46114709e877a7791a3a95e33a42f56b83f5f5afe271c67ae997c +b721401983440797a03d5b99f2088a0b249aa911969c34dd6c615b0060325da555d2ad99d931170c0868b0488a2234a4114cc0013d5163b833f5c45c5eb536421c016cf85788390176bb2dc4c196d6be26bbbfceae048b82f0d8039222e71c94 +acd9d833ba0a8cbd8d1ba939a11ea0fa5607e1bc6e693ec318bdb097aedd042d76e695dcebebd142e2e4ac30b1905dff03ec36d9cc70577e4dbe5e9ed7c20c7afb13a7f0155f203c6b83b9f1ad3d20a0d4aef0fbbbcf466ffc1bcd482bc2f5e0 +8cc1795de015f2b0e72116f169f3b4624b7738ceebea354e0bd9051c27b86f647ea36cad57ea6884c1a8adf9b45cd83514fa687e68878bbd613d793aa10986d5a0411f081689229e0d72133b3667b9f3f1a02211d0e680564eb1ea43393e1f36 +aa9281c61113c343a108de1036570feefc72fb7a96ff11f73024de12b83f29631f5a8a5900e6f10b15227c6f7462881511271bf785ebdf95ce288100e5dab391f664f6ff76c72b65b34479a4f43e5e8eba292209d6654157286ad3242ac342db +aaf16866275082e59d415db317aa874267d048ee405a553e852e6d175711d31a1fee99912345915bce121f43bc3e00d81338e5fcd3c8a1012fb4f172a9fe15622dd368b4d9d5cb60d189f423b071791fe26cea7676aca8df07965cacf80b0cd0 +accc80b3d8a6ffa648487a3d3c0ce1aeeb5401edf3cf2e385ea4a6d5fc110054fcce38f01f1da7141bbed30eb7a0a6810c82212bbb9da75d6033082dbcf6bc6a5791f85aa0f045a10da5de015edbf369b4d23b32b0c058962d2ee88e6911f994 +83f1089395a16077738cc7c9a6d6a3dc9033aac4abc508af5a1f007ca92e1a80b2e6f2dbda7fdcf0d5646de790a6201d0a9cfbcb6620a1426600e3a6a425ec004384f49fb9dcd166691a47177d45dcbcb761a11d46220b0aa09fc946131f7aa5 +9246bb586d43cb817c2e15ed609156e9f1cd284ba2f4797bbfa51c0341e1ba382eaac059aa9f63fb88d228a1a932839a171e7c7d00199dc7c4d6c5ea038a02cbc3cc5297c70401520e70ebbcffacd6a703f62896f3c788f94dde3c33ab0ecbdb +a316cb7c74feb0563c56cc79015e2774fbeca458bf8e9fb07894f9d6bcd73f7fb9428e87c816e5629e4bf7f3ec567fbc091549471b75492dde08217cb334b716b4582b24384586e53388873a78a90ec01bd7c3bace9cfc52161467df16e27c33 +ade18c74bbe60d1d69f4a570f8e5fd8696c26cc9e02829040b6b14cb9c49a4b3263b5bd5e16ec0b29010b4be054c16ab09304e23442af7d7f5fcc60bc6c5634ab6e4aed7ef334b2785e4c7672d59a687278e42d310342db5e5975d716e6d1595 +b7728800bb2039acf228fa3d8028569c426cb85d28b2b5820bbef938d5ca8c4df981d3e01a309e26ca101e8295d0f6990c03b8c239798323575874a4ee5bfe46cfe99b9657189142aacd8f8d1f26cf4c0e73c6397c31ba8f18102b9ea315b638 +8fb14f2a9be193f54977ecd3021663108ea143627b9a9d9faff85d1a86b855f6c437eab435fad3304f245bd7732af07f1173494cdb802fb96e85d2db89e1643206e183f3b228ca8d3f586e71aa9308eaf0223100bf07942fc39e465016d1f775 +ac1e025e53d98fdb3380489dce82d9d4bd3a6c98f0a523b841cb09a6f26ddd4d22efd98776e78d10fd996995fd00e81e08d3c25dd14a54b25a9d483677a24bbb8d1cb41a443b2c71038e6893b1b30f70758424e0f2039a48060191389033ef55 +a4c017311b9e930868132527a9849072b91db04fd36c619ae39c98da9e2174e6201d3c2ff1246c06b1b6815bbf3ea4a1116564f55ee2fe4c4d655e2294c0ded842cba209c255ca3d7b7f82d162f97890dfdeed087aa2f87cbfc61d61815da39d +89516315a3956b455843c2555248bd94dcb19993060fe75fdd51f7aa9c9147ab13997d8a98036a8f04bee5c91d78d2990907e35a52537a8ab3ed15f1a71afdcd38044a5b6e93f662b9d36c16933a881927cacae668c4c06ee6f004c9e3989bad +a1e78a011e210400c68ca76045f7da74119bff3cbe382efd2bd2ac76567c52d68d75536a91999d084043e1ce2d07d02e0b69fb99924101d2543521747536fbc51b0454aa9a4cbbec101121f597863a5c0fee2ca5eab35dff9b9085bef8b2b0d0 +830fd8d083e39153ecab43cabb22e29d7b44a55fba467af4ddd3f069439d2972ef53c3518de788f96b3f4f64963987d0155ba27afc28643af3de8e476ff515a68285728167408f45d99e574680bda6bacdd4322e587e4aa99386e035c0e931ad +b89584da22237e3061d991b1a55a5e55dc637b8b671130d304587729348138ef87885180310efe9f9f6d3580b9d7fdcf0649e8a79d2dec8c25a9f53df0fac5d517db999029cbfdd7c2cbd3e9a5503e5d267d3d8ad752335915c92b850b14bafb +959b8030733799882c5e3735479924b013756e57b893f9792bab4043e2d362d77cf308166d782e3989caa771b8a0c0a01302cb7b5e8ca12e2d6cebd59d4cd173c9dc25f438bac597fab17b4ff44997a489c168e7204b7d7c21d0938f0a2e3b51 +a0a9e5503d9afe0027891dab890c687fd5f5fac5741418490c64d7c15f59533dd603a50163c79402afa61bd02de486761983c94501da17e6bbe78c497f2122210071602f578adc0ebe7a4679f87fe77e09c8c122de69105f13455fea25f08e6f +9811487283ad620cd7c9b303ae2f348d0e6f5ee17b504baaa817ae207adb912a00d3cc36dbf48745eb899e6b6e22f09f0f9ba29d949ecd7350fbbfe87a8c7cdd5d0e687fc807751d07634aaf7c38baf3b24a0670c38fa6ccd7431436fc95525f +8a13aa5071c526e560def7d8583393942f07d88c9d8d26c98738fd65f57af2e3326dbb1edff0f39fe98eda4a13ed4fd71844254b954690154c4804e1c4a53df9dc4643f4b7b09d0860070f6b2318d0d63d28fb56bf5b6ff456a18dfc72fdfbbe +b9c90ff6bff5dd97d90aee27ea1c61c1afe64b054c258b097709561fe00710e9e616773fc4bdedcbf91fbd1a6cf139bf14d20db07297418694c12c6c9b801638eeb537cb3741584a686d69532e3b6c12d8a376837f712032421987f1e770c258 \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 5335c6a8cea..4e6ad8da9e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=23.1.0 +version=23.1.1-RC1 org.gradle.welcome=never # Set exports/opens flags required by Google Java Format and ErrorProne plugins. (JEP-396)