From 2db46e964c2e2a36a5e41b95c39f2f3e1a230606 Mon Sep 17 00:00:00 2001 From: Bhanu Pulluri <59369753+pullurib@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:08:51 -0400 Subject: [PATCH] Enable Quorum/IBFT1 to Besu migration (#8262) * Enable Quorum/IBFT1 to Besu migration Signed-off-by: Bhanu Pulluri * Fix BftMining acceptance test Signed-off-by: Bhanu Pulluri * Introduce delay after London fork update in BFT mining test to prevent timing issues Signed-off-by: Bhanu Pulluri * Update besu/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java Co-authored-by: Matt Whitehead Signed-off-by: Bhanu Pulluri <59369753+pullurib@users.noreply.github.com> * Review changes Signed-off-by: Bhanu Pulluri * update creating additional JSON RPC methods for all controllerbuidlers in consensus schedule Signed-off-by: Bhanu Pulluri * Create ethprotocol manager and plugin factory for both consensus controllers in migration Signed-off-by: Bhanu Pulluri * Refactor resource files Signed-off-by: Bhanu Pulluri * fix verification metadata Signed-off-by: Bhanu Pulluri * fix regression Signed-off-by: Bhanu Pulluri * update changelog Signed-off-by: Bhanu Pulluri * Fix controller selection at the transition block Signed-off-by: Bhanu Pulluri * Review changes Signed-off-by: Bhanu Pulluri * Revert BftExtraData changes Signed-off-by: Bhanu Pulluri --------- Signed-off-by: Bhanu Pulluri Signed-off-by: Bhanu Pulluri <59369753+pullurib@users.noreply.github.com> Co-authored-by: Bhanu Pulluri Co-authored-by: Matt Whitehead Co-authored-by: Matt Whitehead Co-authored-by: Sally MacFarlane --- CHANGELOG.md | 1 + .../dsl/condition/net/AwaitNetPeerCount.java | 2 +- .../node/configuration/BesuNodeFactory.java | 33 ++++ .../genesis/GenesisConfigurationFactory.java | 7 + .../acceptance/QuorumIBFTMigrationTest.java | 118 ++++++++++++ .../acceptance/bftsoak/BftMiningSoakTest.java | 6 +- .../qbft/migration-ibft1/ibft.blocks | Bin 0 -> 99753 bytes .../resources/qbft/migration-ibft1/miner1key | 1 + .../qbft/migration-ibft1/miner1key.pub | 1 + .../resources/qbft/migration-ibft1/miner2key | 1 + .../qbft/migration-ibft1/miner2key.pub | 1 + .../resources/qbft/migration-ibft1/miner3key | 1 + .../qbft/migration-ibft1/miner3key.pub | 1 + .../resources/qbft/migration-ibft1/miner4key | 1 + .../qbft/migration-ibft1/miner4key.pub | 1 + .../resources/qbft/migration-ibft1/miner5key | 1 + .../qbft/migration-ibft1/miner5key.pub | 1 + .../qbft/migration-ibft1/qbft-migration.json | 63 +++++++ .../tests/src/test/resources/qbft/qbft.json | 2 +- besu/build.gradle | 1 + .../java/org/hyperledger/besu/Runner.java | 1 + .../besu/chainimport/RlpBlockImporter.java | 21 ++- .../besu/controller/BesuController.java | 3 +- ...onsensusScheduleBesuControllerBuilder.java | 63 ++++--- .../IbftLegacyBesuControllerBuilder.java | 99 ++++++++++ .../controller/QbftBesuControllerBuilder.java | 53 ++---- .../chainimport/RlpBlockImporterTest.java | 47 +++++ .../besu/controller/BesuControllerTest.java | 26 +++ besu/src/test/resources/ibft-genesis-2.json | 65 +++++++ besu/src/test/resources/ibft.blocks | Bin 865389 -> 99753 bytes .../besu/config/GenesisConfigOptions.java | 9 +- .../besu/config/IbftLegacyConfigOptions.java | 73 ++++++++ .../besu/config/JsonGenesisConfigOptions.java | 12 ++ .../besu/config/StubGenesisConfigOptions.java | 8 + .../besu/consensus/common/EpochManager.java | 25 ++- .../common/MigratingMiningCoordinator.java | 2 +- .../common/MigratingProtocolContext.java | 8 +- .../blockcreation/BftMiningCoordinator.java | 68 +++++++ consensus/ibftlegacy/build.gradle | 55 ++++++ .../ibftlegacy/IbftBlockHashing.java | 169 ++++++++++++++++++ ...ftBlockHeaderValidationRulesetFactory.java | 93 ++++++++++ .../ibftlegacy/IbftExtraDataCodec.java | 113 ++++++++++++ .../consensus/ibftlegacy/IbftHelpers.java | 38 ++++ .../ibftlegacy/IbftLegacyBlockInterface.java | 103 +++++++++++ .../ibftlegacy/IbftLegacyExtraData.java | 61 +++++++ .../ibftlegacy/IbftProtocolSchedule.java | 110 ++++++++++++ .../IbftExtraDataValidationRule.java | 149 +++++++++++++++ .../VoteValidationRule.java | 48 +++++ .../statemachine/QbftBlockHeightManager.java | 2 +- consensus/qbft/build.gradle | 1 + .../blockcreation/MiningCoordinator.java | 2 + .../besu/ethereum/ProtocolContext.java | 13 ++ .../besu/evmtool/GenesisFileModule.java | 2 +- platform/build.gradle | 1 + settings.gradle | 1 + 55 files changed, 1708 insertions(+), 79 deletions(-) create mode 100644 acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/QuorumIBFTMigrationTest.java create mode 100755 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/ibft.blocks create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner1key create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner1key.pub create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner2key create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner2key.pub create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner3key create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner3key.pub create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner4key create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner4key.pub create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner5key create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/miner5key.pub create mode 100644 acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/qbft-migration.json create mode 100644 besu/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java create mode 100644 besu/src/test/resources/ibft-genesis-2.json mode change 100644 => 100755 besu/src/test/resources/ibft.blocks create mode 100644 config/src/main/java/org/hyperledger/besu/config/IbftLegacyConfigOptions.java create mode 100644 consensus/ibftlegacy/build.gradle create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHashing.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHeaderValidationRulesetFactory.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftExtraDataCodec.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftHelpers.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyBlockInterface.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyExtraData.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/IbftExtraDataValidationRule.java create mode 100644 consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/VoteValidationRule.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 9be575c81..6830d1056 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ - Add TLS/mTLS options and configure the GraphQL HTTP service[#7910](https://github.com/hyperledger/besu/pull/7910) - Update `eth_getLogs` to return a `Block not found` error when the requested block is not found. [#8290](https://github.com/hyperledger/besu/pull/8290) - Change `Invalid block, unable to parse RLP` RPC error message to `Invalid block param (block not found)` [#8328](https://github.com/hyperledger/besu/pull/8328) +- Add IBFT1 to QBFT migration capability [#8262](https://github.com/hyperledger/besu/pull/8262) - Support pending transaction score when saving and restoring txpool [#8363](https://github.com/hyperledger/besu/pull/8363) - Upgrade to execution-spec-tests v4.1.0 including better EIP-2537 coverage for BLS [#8402](https://github.com/hyperledger/besu/pull/8402) - Add era1 format to blocks import subcommand [#7935](https://github.com/hyperledger/besu/issues/7935) diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java index b8e40c6c4..47ed7a7e5 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java @@ -36,6 +36,6 @@ public class AwaitNetPeerCount implements Condition { @Override public void verify(final Node node) { - WaitUtils.waitFor(() -> assertThat(node.execute(transaction)).isEqualTo(expectedPeerCount)); + WaitUtils.waitFor(50, () -> assertThat(node.execute(transaction)).isEqualTo(expectedPeerCount)); } } diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java index 7418dcb04..17b28490c 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java @@ -490,6 +490,39 @@ public class BesuNodeFactory { return create(builder.build()); } + public BesuNode createQbftMigrationNode( + final String name, final boolean fixedPort, final DataStorageFormat storageFormat) + throws IOException { + JsonRpcConfiguration rpcConfig = node.createJsonRpcWithQbftEnabledConfig(false); + rpcConfig.addRpcApi("ADMIN,TXPOOL"); + if (fixedPort) { + rpcConfig.setPort( + Math.abs(name.hashCode() % 60000) + + 1024); // Generate a consistent port for p2p based on node name + } + + BesuNodeConfigurationBuilder builder = + new BesuNodeConfigurationBuilder() + .name(name) + .miningEnabled() + .jsonRpcConfiguration(rpcConfig) + .webSocketConfiguration(node.createWebSocketEnabledConfig()) + .devMode(false) + .dataStorageConfiguration( + storageFormat == DataStorageFormat.FOREST + ? DataStorageConfiguration.DEFAULT_FOREST_CONFIG + : DataStorageConfiguration.DEFAULT_BONSAI_CONFIG) + .genesisConfigProvider(GenesisConfigurationFactory::createQbftMigrationGenesisConfig); + if (fixedPort) { + builder.p2pPort( + Math.abs(name.hashCode() % 60000) + + 1024 + + 500); // Generate a consistent port for p2p based on node name (+ 500 to avoid + // clashing with RPC port or other nodes with a similar name) + } + return create(builder.build()); + } + public BesuNode createCustomGenesisNode( final String name, final String genesisPath, final boolean canBeBootnode) throws IOException { return createCustomGenesisNode(name, genesisPath, canBeBootnode, false); diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/genesis/GenesisConfigurationFactory.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/genesis/GenesisConfigurationFactory.java index 80bbf4c92..ac63202b5 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/genesis/GenesisConfigurationFactory.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/genesis/GenesisConfigurationFactory.java @@ -96,6 +96,13 @@ public class GenesisConfigurationFactory { validators, template, QbftExtraDataCodec::createGenesisExtraDataString); } + public static Optional createQbftMigrationGenesisConfig( + final Collection validators) { + final String template = readGenesisFile("/qbft/migration-ibft1/qbft-migration.json"); + return updateGenesisExtraData( + validators, template, QbftExtraDataCodec::createGenesisExtraDataString); + } + @SuppressWarnings("unchecked") public static Optional createQbftValidatorContractGenesisConfig( final Collection validators) throws UncheckedIOException { diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/QuorumIBFTMigrationTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/QuorumIBFTMigrationTest.java new file mode 100644 index 000000000..8423bfdf2 --- /dev/null +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/QuorumIBFTMigrationTest.java @@ -0,0 +1,118 @@ +/* + * Copyright contributors to Hyperledger Besu. + * + * 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.tests.acceptance; + +import static org.apache.logging.log4j.util.LoaderUtil.getClassLoader; + +import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; +import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase; +import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; + +import org.junit.jupiter.api.Test; + +public class QuorumIBFTMigrationTest extends AcceptanceTestBase { + + public static void copyKeyFilesToNodeDataDirs(final BesuNode... nodes) throws IOException { + for (BesuNode node : nodes) { + copyKeyFile(node, "key"); + copyKeyFile(node, "key.pub"); + } + } + + private static void copyKeyFile(final BesuNode node, final String keyFileName) + throws IOException { + String resourceFileName = "qbft/migration-ibft1/" + node.getName() + keyFileName; + try (InputStream keyFileStream = getClassLoader().getResourceAsStream(resourceFileName)) { + if (keyFileStream == null) { + throw new IOException("Resource not found: " + resourceFileName); + } + Path targetPath = node.homeDirectory().resolve(keyFileName); + Files.createDirectories(targetPath.getParent()); + Files.copy(keyFileStream, targetPath, StandardCopyOption.REPLACE_EXISTING); + } + } + + public static void runBesuCommand(final Path dataPath) throws IOException, InterruptedException { + ProcessBuilder processBuilder = + new ProcessBuilder( + "../../build/install/besu/bin/besu", + "--genesis-file", + "src/test/resources/qbft/migration-ibft1/qbft-migration.json", + "--data-path", + dataPath.toString(), + "--data-storage-format", + "FOREST", + "blocks", + "import", + "src/test/resources/qbft/migration-ibft1/ibft.blocks"); + + processBuilder.directory(new File(System.getProperty("user.dir"))); + processBuilder.inheritIO(); // This will redirect the output to the console + + Process process = processBuilder.start(); + int exitCode = process.waitFor(); + if (exitCode == 0) { + System.out.println("Import command executed successfully."); + } else { + throw new RuntimeException("Import command execution failed with exit code: " + exitCode); + } + } + + @Test + public void shouldImportIBFTBlocksAndTransitionToQBFT() throws Exception { + + // Create a mix of Bonsai and Forest DB nodes + final BesuNode minerNode1 = + besu.createQbftMigrationNode("miner1", false, DataStorageFormat.FOREST); + final BesuNode minerNode2 = + besu.createQbftMigrationNode("miner2", false, DataStorageFormat.FOREST); + final BesuNode minerNode3 = + besu.createQbftMigrationNode("miner3", false, DataStorageFormat.FOREST); + final BesuNode minerNode4 = + besu.createQbftMigrationNode("miner4", false, DataStorageFormat.FOREST); + final BesuNode minerNode5 = + besu.createQbftMigrationNode("miner5", false, DataStorageFormat.FOREST); + + // Copy key files to the node datadirs + // Use the key files saved in resources directory + copyKeyFilesToNodeDataDirs(minerNode1, minerNode2, minerNode3, minerNode4, minerNode5); + + // start one node and import blocks from import file + // Use import file, genesis saved in resources directory + + runBesuCommand(minerNode1.homeDirectory()); + + // After the import is done, start the rest of the nodes using the same genesis and respective + // node keys + + cluster.start(minerNode1, minerNode2, minerNode3, minerNode4, minerNode5); + + // Check that the chain is progressing as expected + cluster.verify(blockchain.reachesHeight(minerNode2, 1, 120)); + } + + @Override + public void tearDownAcceptanceTestBase() { + cluster.stop(); + super.tearDownAcceptanceTestBase(); + } +} diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java index 0dc4ff82c..1577c259f 100644 --- a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java @@ -42,8 +42,6 @@ public class BftMiningSoakTest extends ParameterizedBftTestBase { private static final long ONE_MINUTE = Duration.of(1, ChronoUnit.MINUTES).toMillis(); - private static final long THREE_MINUTES = Duration.of(3, ChronoUnit.MINUTES).toMillis(); - private static final long TEN_SECONDS = Duration.of(10, ChronoUnit.SECONDS).toMillis(); static int getTestDurationMins() { @@ -213,6 +211,8 @@ public class BftMiningSoakTest extends ParameterizedBftTestBase { upgradeToLondon( minerNode1, minerNode2, minerNode3, minerNode4, lastChainHeight.intValue() + 120); + cluster.verify(blockchain.reachesHeight(minerNode4, 1, 180)); + previousStepEndTime = Instant.now(); chainHeight = minerNode1.execute(ethTransactions.blockNumber()); @@ -241,7 +241,7 @@ public class BftMiningSoakTest extends ParameterizedBftTestBase { upgradeToShanghai( minerNode1, minerNode2, minerNode3, minerNode4, Instant.now().getEpochSecond() + 120); - Thread.sleep(THREE_MINUTES); + cluster.verify(blockchain.reachesHeight(minerNode4, 1, 180)); SimpleStorageShanghai simpleStorageContractShanghai = minerNode1.execute(contractTransactions.createSmartContract(SimpleStorageShanghai.class)); diff --git a/acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/ibft.blocks b/acceptance-tests/tests/src/test/resources/qbft/migration-ibft1/ibft.blocks new file mode 100755 index 0000000000000000000000000000000000000000..3e04a5441d0b380aa4ea471a6fd492ded75dacba GIT binary patch literal 99753 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⪚9`1F8hrjGzGa3p3Y5wC32NG0e@kmO?sH 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 - new IllegalStateException( - String.format( - "Block %s does not connect to the existing chain. Current chain head %s", - header.getNumber(), blockchain.getChainHeadBlockNumber()))); + try { + return blockchain + .getBlockHeader(header.getParentHash()) + .orElseThrow( + () -> + new IllegalStateException( + String.format( + "Block %s does not connect to the existing chain. Current chain head %s", + header.getNumber(), blockchain.getChainHeadBlockNumber()))); + } catch (IllegalStateException e) { + LOG.info("Block {} does not connect to the existing chain.", header.getNumber()); + } + return null; } @Override diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java index 700b414ed..9f6f6bb54 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java @@ -394,8 +394,7 @@ public class BesuController implements java.io.Closeable { if (configOptions.isIbft2()) { originalControllerBuilder = new IbftBesuControllerBuilder(); } else if (configOptions.isIbftLegacy()) { - throw new IllegalStateException( - "IBFT1 (legacy) is no longer supported. Consider using IBFT2 or QBFT."); + originalControllerBuilder = new IbftLegacyBesuControllerBuilder(); } else { throw new IllegalStateException( "Invalid genesis migration config. Migration is supported from IBFT (legacy) or IBFT2 to QBFT)"); diff --git a/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java index 75635990a..6fce88bca 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java @@ -197,9 +197,10 @@ public class ConsensusScheduleBesuControllerBuilder extends BesuControllerBuilde @Override protected PluginServiceFactory createAdditionalPluginServices( final Blockchain blockchain, final ProtocolContext protocolContext) { - return besuControllerBuilderSchedule - .get(0L) - .createAdditionalPluginServices(blockchain, protocolContext); + besuControllerBuilderSchedule + .values() + .forEach(b -> b.createAdditionalPluginServices(blockchain, protocolContext)); + return new NoopPluginServiceFactory(); } @Override @@ -207,10 +208,14 @@ public class ConsensusScheduleBesuControllerBuilder extends BesuControllerBuilde final ProtocolContext protocolContext, final ProtocolSchedule protocolSchedule, final MiningConfiguration miningConfiguration) { - return besuControllerBuilderSchedule - .get(0L) - .createAdditionalJsonRpcMethodFactory( - protocolContext, protocolSchedule, miningConfiguration); + besuControllerBuilderSchedule + .values() + .forEach( + b -> + b.createAdditionalJsonRpcMethodFactory( + protocolContext, protocolSchedule, miningConfiguration)); + return super.createAdditionalJsonRpcMethodFactory( + protocolContext, protocolSchedule, miningConfiguration); } @Override @@ -218,7 +223,7 @@ public class ConsensusScheduleBesuControllerBuilder extends BesuControllerBuilde final EthProtocolManager ethProtocolManager, final Optional maybeSnapProtocolManager) { return besuControllerBuilderSchedule - .get(0L) + .get(besuControllerBuilderSchedule.keySet().stream().skip(1).findFirst().orElseThrow()) .createSubProtocolConfiguration(ethProtocolManager, maybeSnapProtocolManager); } @@ -240,20 +245,34 @@ public class ConsensusScheduleBesuControllerBuilder extends BesuControllerBuilde final List peerValidators, final Optional mergePeerFilter, final ForkIdManager forkIdManager) { - return besuControllerBuilderSchedule - .get(0L) - .createEthProtocolManager( - protocolContext, - synchronizerConfiguration, - transactionPool, - ethereumWireProtocolConfiguration, - ethPeers, - ethContext, - ethMessages, - scheduler, - peerValidators, - mergePeerFilter, - forkIdManager); + besuControllerBuilderSchedule + .values() + .forEach( + b -> + b.createEthProtocolManager( + protocolContext, + synchronizerConfiguration, + transactionPool, + ethereumWireProtocolConfiguration, + ethPeers, + ethContext, + ethMessages, + scheduler, + peerValidators, + mergePeerFilter, + forkIdManager)); + return super.createEthProtocolManager( + protocolContext, + synchronizerConfiguration, + transactionPool, + ethereumWireProtocolConfiguration, + ethPeers, + ethContext, + ethMessages, + scheduler, + peerValidators, + mergePeerFilter, + forkIdManager); } @Override diff --git a/besu/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java new file mode 100644 index 000000000..317f0d0d5 --- /dev/null +++ b/besu/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java @@ -0,0 +1,99 @@ +/* + * Copyright ConsenSys AG. + * + * 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.controller; + +import org.hyperledger.besu.config.IbftLegacyConfigOptions; +import org.hyperledger.besu.consensus.common.EpochManager; +import org.hyperledger.besu.consensus.common.bft.BftBlockInterface; +import org.hyperledger.besu.consensus.common.bft.BftContext; +import org.hyperledger.besu.consensus.common.validator.ValidatorProvider; +import org.hyperledger.besu.consensus.common.validator.blockbased.BlockValidatorProvider; +import org.hyperledger.besu.consensus.ibftlegacy.IbftExtraDataCodec; +import org.hyperledger.besu.consensus.ibftlegacy.IbftLegacyBlockInterface; +import org.hyperledger.besu.consensus.ibftlegacy.IbftProtocolSchedule; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.blockcreation.MiningCoordinator; +import org.hyperledger.besu.ethereum.blockcreation.NoopMiningCoordinator; +import org.hyperledger.besu.ethereum.chain.Blockchain; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.eth.manager.EthProtocolManager; +import org.hyperledger.besu.ethereum.eth.sync.state.SyncState; +import org.hyperledger.besu.ethereum.eth.transactions.TransactionPool; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** The Ibft legacy besu controller builder. */ +public class IbftLegacyBesuControllerBuilder extends BesuControllerBuilder { + + private static final Logger LOG = LoggerFactory.getLogger(IbftLegacyBesuControllerBuilder.class); + private final BftBlockInterface blockInterface; + + /** Default constructor */ + public IbftLegacyBesuControllerBuilder() { + LOG.warn( + "IBFT1 is deprecated. This consensus configuration should be used only while migrating to another consensus mechanism."); + this.blockInterface = new IbftLegacyBlockInterface(new IbftExtraDataCodec()); + } + + @Override + protected MiningCoordinator createMiningCoordinator( + final ProtocolSchedule protocolSchedule, + final ProtocolContext protocolContext, + final TransactionPool transactionPool, + final MiningConfiguration miningConfiguration, + final SyncState syncState, + final EthProtocolManager ethProtocolManager) { + return new NoopMiningCoordinator(miningConfiguration); + } + + @Override + protected ProtocolSchedule createProtocolSchedule() { + return IbftProtocolSchedule.create( + genesisConfigOptions, privacyParameters, isRevertReasonEnabled, evmConfiguration); + } + + @Override + protected BftContext createConsensusContext( + final Blockchain blockchain, + final WorldStateArchive worldStateArchive, + final ProtocolSchedule protocolSchedule) { + final IbftLegacyConfigOptions ibftConfig = genesisConfigOptions.getIbftLegacyConfigOptions(); + final EpochManager epochManager = new EpochManager(ibftConfig.getEpochLength()); + final ValidatorProvider validatorProvider = + BlockValidatorProvider.nonForkingValidatorProvider( + blockchain, epochManager, blockInterface); + + return new BftContext(validatorProvider, epochManager, blockInterface); + } + + @Override + protected PluginServiceFactory createAdditionalPluginServices( + final Blockchain blockchain, final ProtocolContext protocolContext) { + return new NoopPluginServiceFactory(); + } + + @Override + protected void validateContext(final ProtocolContext context) { + final BlockHeader genesisBlockHeader = context.getBlockchain().getGenesisBlock().getHeader(); + + if (blockInterface.validatorsInBlock(genesisBlockHeader).isEmpty()) { + LOG.warn("Genesis block contains no signers - chain will not progress."); + } + } +} diff --git a/besu/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java index 4e631dc0e..66f24205a 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java @@ -96,7 +96,6 @@ import org.hyperledger.besu.ethereum.eth.transactions.TransactionPool; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.p2p.config.SubProtocolConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; -import org.hyperledger.besu.plugin.services.BesuEvents; import org.hyperledger.besu.util.Subscribers; import java.time.Duration; @@ -152,7 +151,9 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder { private ValidatorProvider createReadOnlyValidatorProvider(final Blockchain blockchain) { checkNotNull( transactionValidatorProvider, "transactionValidatorProvider should have been initialised"); - final EpochManager epochManager = new EpochManager(qbftConfig.getEpochLength()); + final long startBlock = + qbftConfig.getStartBlock().isPresent() ? qbftConfig.getStartBlock().getAsLong() : 0; + final EpochManager epochManager = new EpochManager(qbftConfig.getEpochLength(), startBlock); // Must create our own voteTallyCache as using this would pollute the main voteTallyCache final BlockValidatorProvider readOnlyBlockValidatorProvider = BlockValidatorProvider.nonForkingValidatorProvider( @@ -212,8 +213,16 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder { qbftExtraDataCodec, ethProtocolManager.ethContext().getScheduler()); - final ValidatorProvider validatorProvider = - protocolContext.getConsensusContext(BftContext.class).getValidatorProvider(); + final ValidatorProvider validatorProvider; + if (qbftConfig.getStartBlock().isPresent()) { + validatorProvider = + protocolContext + .getConsensusContext(BftContext.class, qbftConfig.getStartBlock().getAsLong()) + .getValidatorProvider(); + } else { + validatorProvider = + protocolContext.getConsensusContext(BftContext.class).getValidatorProvider(); + } final QbftValidatorProvider qbftValidatorProvider = new QbftValidatorProviderAdaptor(validatorProvider); @@ -316,7 +325,8 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder { bftProcessor, blockCreatorFactory, blockchain, - bftEventQueue); + bftEventQueue, + syncState); // Update the next block period in seconds according to the transition schedule protocolContext @@ -335,35 +345,6 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder { .getEmptyBlockPeriodSeconds()); }); - syncState.subscribeSyncStatus( - syncStatus -> { - if (syncState.syncTarget().isPresent()) { - // We're syncing so stop doing other stuff - LOG.info("Stopping QBFT mining coordinator while we are syncing"); - miningCoordinator.stop(); - } else { - LOG.info("Starting QBFT mining coordinator following sync"); - miningCoordinator.enable(); - miningCoordinator.start(); - } - }); - - syncState.subscribeCompletionReached( - new BesuEvents.InitialSyncCompletionListener() { - @Override - public void onInitialSyncCompleted() { - LOG.info("Starting QBFT mining coordinator following initial sync"); - miningCoordinator.enable(); - miningCoordinator.start(); - } - - @Override - public void onInitialSyncRestart() { - // Nothing to do. The mining coordinator won't be started until - // sync has completed. - } - }); - return miningCoordinator; } @@ -428,7 +409,9 @@ public class QbftBesuControllerBuilder extends BesuControllerBuilder { final Blockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule) { - final EpochManager epochManager = new EpochManager(qbftConfig.getEpochLength()); + final long startBlock = + qbftConfig.getStartBlock().isPresent() ? qbftConfig.getStartBlock().getAsLong() : 0; + final EpochManager epochManager = new EpochManager(qbftConfig.getEpochLength(), startBlock); final BftValidatorOverrides validatorOverrides = convertBftForks(genesisConfigOptions.getTransitions().getQbftForks()); diff --git a/besu/src/test/java/org/hyperledger/besu/chainimport/RlpBlockImporterTest.java b/besu/src/test/java/org/hyperledger/besu/chainimport/RlpBlockImporterTest.java index ee22baa1c..fa6f5d974 100644 --- a/besu/src/test/java/org/hyperledger/besu/chainimport/RlpBlockImporterTest.java +++ b/besu/src/test/java/org/hyperledger/besu/chainimport/RlpBlockImporterTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.chainimport; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; @@ -21,6 +22,7 @@ import static org.mockito.Mockito.mock; import org.hyperledger.besu.cli.config.EthNetworkConfig; import org.hyperledger.besu.cli.config.NetworkName; import org.hyperledger.besu.components.BesuComponent; +import org.hyperledger.besu.config.GenesisConfig; import org.hyperledger.besu.config.MergeConfiguration; import org.hyperledger.besu.controller.BesuController; import org.hyperledger.besu.cryptoservices.NodeKeyUtils; @@ -40,9 +42,12 @@ import org.hyperledger.besu.testutil.TestClock; import java.io.IOException; import java.math.BigInteger; +import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.StandardOpenOption; import java.util.concurrent.CompletionException; +import com.google.common.io.Resources; import org.apache.tuweni.units.bigints.UInt256; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -152,4 +157,46 @@ public final class RlpBlockImporterTest { assertThat(result.count).isEqualTo(1); assertThat(result.td).isEqualTo(UInt256.valueOf(34351349760L)); } + + @Test + public void ibftImport() throws IOException { + final Path source = dataDir.resolve("ibft.blocks"); + final String config = + Resources.toString(this.getClass().getResource("/ibft-genesis-2.json"), UTF_8); + + try { + Files.write( + source, + Resources.toByteArray(this.getClass().getResource("/ibft.blocks")), + StandardOpenOption.CREATE, + StandardOpenOption.TRUNCATE_EXISTING); + } catch (final IOException ex) { + throw new IllegalStateException(ex); + } + + final BesuController controller = + new BesuController.Builder() + .fromGenesisFile(GenesisConfig.fromConfig(config), SyncMode.FULL) + .synchronizerConfiguration(SynchronizerConfiguration.builder().build()) + .ethProtocolConfiguration(EthProtocolConfiguration.defaultConfig()) + .storageProvider(new InMemoryKeyValueStorageProvider()) + .networkId(BigInteger.valueOf(1337)) + .miningParameters(MiningConfiguration.newDefault()) + .nodeKey(NodeKeyUtils.generate()) + .metricsSystem(new NoOpMetricsSystem()) + .privacyParameters(PrivacyParameters.DEFAULT) + .dataDirectory(dataDir) + .clock(TestClock.fixed()) + .transactionPoolConfiguration(TransactionPoolConfiguration.DEFAULT) + .evmConfiguration(EvmConfiguration.DEFAULT) + .networkConfiguration(NetworkingConfiguration.create()) + .besuComponent(mock(BesuComponent.class)) + .apiConfiguration(ImmutableApiConfiguration.builder().build()) + .build(); + final RlpBlockImporter.ImportResult result = + rlpBlockImporter.importBlockchain(source, controller, true); + + // Don't count the Genesis block + assertThat(result.count).isEqualTo(100); + } } diff --git a/besu/src/test/java/org/hyperledger/besu/controller/BesuControllerTest.java b/besu/src/test/java/org/hyperledger/besu/controller/BesuControllerTest.java index 1f6927ca9..af3ce7b0e 100644 --- a/besu/src/test/java/org/hyperledger/besu/controller/BesuControllerTest.java +++ b/besu/src/test/java/org/hyperledger/besu/controller/BesuControllerTest.java @@ -98,6 +98,27 @@ public class BesuControllerTest { .isInstanceOf(QbftBesuControllerBuilder.class); } + @Test + public void createConsensusScheduleBesuControllerBuilderWhenMigratingFromIbftLegacyToQbft() { + final long qbftStartBlock = 10L; + mockGenesisConfigForMigration("ibftLegacy", OptionalLong.of(qbftStartBlock)); + + final BesuControllerBuilder besuControllerBuilder = + new BesuController.Builder().fromGenesisFile(genesisConfig, SyncMode.FULL); + + assertThat(besuControllerBuilder).isInstanceOf(ConsensusScheduleBesuControllerBuilder.class); + + final Map besuControllerBuilderSchedule = + ((ConsensusScheduleBesuControllerBuilder) besuControllerBuilder) + .getBesuControllerBuilderSchedule(); + + assertThat(besuControllerBuilderSchedule).containsKeys(0L, qbftStartBlock); + assertThat(besuControllerBuilderSchedule.get(0L)) + .isInstanceOf(IbftLegacyBesuControllerBuilder.class); + assertThat(besuControllerBuilderSchedule.get(qbftStartBlock)) + .isInstanceOf(QbftBesuControllerBuilder.class); + } + private void mockGenesisConfigForMigration( final String consensus, final OptionalLong startBlock) { when(genesisConfigOptions.isConsensusMigration()).thenReturn(true); @@ -108,6 +129,11 @@ public class BesuControllerTest { when(genesisConfigOptions.isIbft2()).thenReturn(true); break; } + case "ibftlegacy": + { + when(genesisConfigOptions.isIbftLegacy()).thenReturn(true); + break; + } default: fail("Invalid consensus algorithm"); } diff --git a/besu/src/test/resources/ibft-genesis-2.json b/besu/src/test/resources/ibft-genesis-2.json new file mode 100644 index 000000000..fa98f9a6b --- /dev/null +++ b/besu/src/test/resources/ibft-genesis-2.json @@ -0,0 +1,65 @@ +{ + "nonce": "0x0", + "timestamp": "0x58ee40ba", + "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f86df86994a18182ee8ca476f2f0fb8170a1d4620edb39c5e194065541903bf3bb8c088a18046b441f5d286288c994d1e106d68cac92668b100f6f43791ddcb2c7588094d156777a1e1539fe654fc82266f41fd5d4aa548494efbbd8900222d7b2f75d081c3e7446a1f4fe10ce80c0", + "gasLimit": "700000000", + "gasUsed": "0x0", + "number": "0x0", + "difficulty": "0x1", + "coinbase": "0x0000000000000000000000000000000000000000", + "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "config": { + "chainId": 1337, + "homesteadBlock": 0, + "eip150Block": 20, + "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155Block": 30, + "eip158Block": 40, + "byzantiumBlock": 50, + "constantinopleBlock": 60, + "petersburgBlock": 70, + "istanbulBlock": 80, + "ibft": { + "epochlength": 1000, + "blockperiodseconds": 5, + "requesttimeoutseconds": 10, + "policy": 0, + "ceil2Nby3Block": 0, + "validatorcontractaddress": "0x0000000000000000000000000000000000000000" + }, + "qbft": { + "epochLength": 30000, + "blockPeriodSeconds" : 1, + "requestTimeoutSeconds": 10, + "startBlock": 101 + }, + "txnSizeLimit": 64, + "maxCodeSize": 0, + "maxCodeSizeConfig": [ + { + "block": 0, + "size": 64 + } + ], + "isMPS": false + + }, + "alloc": { + "0xde8e2ae09f2ee2c6c282c054b2384f8b5f9debee": { + "balance": "1000000000000000000000000000" + }, + "0x23bcbca17fc4978909ab44ac82559c7d379aa006": { + "balance": "1000000000000000000000000000" + }, + "0x870276532cca9f33e66273cfa494cf41e04b5a66": { + "balance": "1000000000000000000000000000" + }, + "0x7d7fc9fdfa49e2db22fc6ebab593dcf3aeffbde8": { + "balance": "1000000000000000000000000000" + }, + "0x4df76ad0678513846699056e0070c5f587580eb5": { + "balance": "1000000000000000000000000000" + } + } +} diff --git a/besu/src/test/resources/ibft.blocks b/besu/src/test/resources/ibft.blocks old mode 100644 new mode 100755 index a0f05ccb81ace52b2723e869b5465c228888aea9..3e04a5441d0b380aa4ea471a6fd492ded75dacba GIT binary patch literal 99753 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⪚9`1F8hrjGzGa3p3Y5wC32NG0e@kmO?sH z_KK(Pn#_TN!3)4>AuS+v;qub-3!!F9ur-2?!Z-lqH&5WMl0NB(RkDai* z-64KUOpSqN#_B#t{BV-hM|?eZ0(Ixo;JyO{Bd%*(+W@W0=%s#ed@3pYlOlSn@x|bC zT5H#Yn;{&a3dd6&mTZE>H~b)Dk*^0s%ik%usOElNij5YWw;}H8qbqArfcl+syH-cq z@=MC%$Aw}hpROl<9+13Z*F+~RTKt<=YjAmKX9oqZy=2{HM8$2&rHNzqo`b_RlK!Til$)q=d(`6NfW>5P zmFHO$^|lR%#Hr4eICwVCB|8p@$l7O1n_P))MUg=B0A-}V>E8OTjp1$!2)c4B-#qrf zL=bVjNnt0^k2nY+XEJwRh-&}we#gAk|M2d4hrFdTU@n*JY8d6?&F@Bn6#<*20H_}`V(*4)Z-qXUfB(o!Cgt>P5HE!UV|IPXub-SjsmYdq@?$8 z9#ABYM*?8kf$)0>X`Y4b<&>a#)^zFP`c9HOJ!Y7-Ky?Y1@g9{@IQPj?5!}_t$hXMU ziWSB>l{np|p)tm5n^tg@oMi!}?Fr#TM#+(ziDOJFm#h$> zWxqA^6sP$N)BRG-jfa^c5`A^s6M$|8#hDt6Wh^hn=&FbcJsiLLQgh@nwO}{@H@tOY z!I=E+d1H{vqQDV!!xT_fpD_ZU53cCCq;Qc7yiEV`e#g8u{_q}nhrClGvT;AOOBAI2 z8ozc_NoW)mg19$_hay&rUt8!{L4~#Q<;f_sNE*?M{DjSBn_4dH_DykOQ)Fx(iUP$z zH}mUn-Y6sA`a1~bvxxQw(k1Q6=@&rSc-UmrNMV>Yk!MCaA_yR#RLndh=i27N5}1lj z#5z2wqwT9HgMz5y@i=@h)&a11r|^LJZ?kG;x}J%a?o6T9tW5bnH$%f)8{kU&rxQ}y zDOtSg5K4a6QVQaZUx3D6+^SY1kX|-==2ct3uKIxsSRwf6RQw-FEL@Z{>z0BTy~$R6 zOt$*Y&y#=xj|JJNiX;f=>B1Pa;r#|tI#b#J@fW)GbJSR#1irj0k--mC@81lE&S!A2iQ4f$ZEJ!l#}d4`|M%ehK;pod zjcCf9T-a@3gh>%4Up@CWOW60TWVGx0E+TLbBt6ZJ?Z!pDlaBv81$3qD*Dp>r1h}tX zr4Y>%O7#350TDKDj?~N5>BeejYEN0ooFNhMIaD`6N|K*XUOZG|L+@=paBW~K=Sg7R zU|;*`;PBt5ylTdk^$mv%Z7zikw~0IUWZ*J67!e9lfCfb`G`?2!S$PWfSXS1BONKqRX9`Q<2ty8$N#l= zS6@-KUmw8fhC!sIyGuHU5Trr6W2Czq1PO(47(!Yp2|-3Wr9n#42a$$hhLjWu0r?Hf zwO)^3k2vrj_^#{ZbM1Yvb?<#$->*qAI%biHj(wgi4qJ*6@EnR=#Zs>0Qgju|M{j2w zuoo9Sr?SHV^@6+L@OLQQPH%&F%wLXN`C_-X+ED;(!ek@`JBWRNfpa^GQFzx{>R*?# zK#)V_49c9wk*ejo8Aw@jIjxotorlx7mvfmqfs z_L~x9{~O-XIGUrL&|IhvQg^%ivqHrvS_KsoyOzhg)wxN4Ew#^XDrJL7c_PLJA$bXre{#YW5+^f_rxl#w z^Qi)p^^2u-C%*IV<~+M^(+41X%Aeo92~Y&mqI-s5$GRDs_2zOlBn-jEGhC@in4a&;5V!yq7m-1f@neXlK91v5)uB+QIs*grGrVX(_-#C zQa3|q!OVNm5ov_piu?6vypC%YH`8#PG`6v$T2Q=qDC*PCwQ9dD&jZTez8i=R?*^3l>94(~sc%*up2{k)M{wPN zavJ9e#`YWp;LTN_rz`Q-z1-FytWTbP@xhPhZ+Kfsz*{z76}>QMXsSUBs$@FsoqN_x z@kw`S#83%=PX4_RdV6)Fp#IAGEyVDWg;fI@R0E~%Maa-QW|FodC!CtygOK}=$$h39y z{@>(sJP@k;&?BWDa<|&wD;SLyW`*+vetF&IW@;eB_Jah(d<^TrX?{I8LM*Djy%s|M zyc}i^=6pZR=4Fc8)rR7&DL;17v;eWcYrgmW-vJRn85zoMK$R#y}1}>1SRPFCDoeSNB+Qkg{8mY9WfNN@JVKc zMshnTd@UckZ9mmJn#}aQ#6+cm;3^!z@UME`Uf<}}e|RHqA#cg=aMjh<>ySwCBzP)$ z1%2M+G9Xgd1Q+iS^hlyN2tnQ+yS5@@8?>w-N(AY(QB+Gywx-v#yG94KBdKP*U4K{a zXBP(d>1WHtIj7DG`dWLv?;omf0~)MqdMqE@i}*JCNW4MgbPAuQ-&aFTt7nlB`^^s$ zoiz@}$`+*$^JbHa1}K}JRH}87!$2#>Q*O^ejg}F4P-OVd($3vGs@UU+rNTeCgW+f` zZP_1}jQasFf#;f+ksDD9t;kj1iM;RBGfp=PU&1*DlW|z0XJk#a+1>5*1N?FD6at}A zw!;FeW3%6Eg!Jjz4vOAYF-$3aIAmC(Z^>o`1KVuv@rS~>pc}< ztx{L!x0tuhAKqKHkav*+ zyuvLYpIhmDEECUM(^czNYa^!JcwwBZbwv&BEQo>Yy(lZ%_Rb-*i6mTO3uC zKpY=FroF=%X8D`9#&g|yH)pOgX(fKVlZwxMcG$v5fd8PjAFUq-)0Vco zv&$AtGyQX5*%n?)ZfA&k}F2dro^b4w?r)9he)zYT)e%po;p@)E)yvr$N`k2mnd;)e;r)%0aIh-VN;MnOqnk zGzvWFf171g;OMG|2MPVT?=1o|wL5qtL=0S^n-R4Ktu~f&mjxE!`(+A^`IDGbiwWF} zj0b<%5!-Flbon^9X13X#@#rdut|J1h^P+~bnBO{bqKLdE-$-#IW{%|gkXQv=_(f2Z zkeLT2C<+~KS$rM3y!SVMt*u4o>0SK#mE*In))_$H5TB-)h{yffn!WLrMm-2#-t~|7 zE#__ehxgtsJPKCu{iQW3DaHNFCTG|`MoGZ%?0V)?p5<3zoKBhLjx^G^SrjZ!#bA~SCb)$5Cj&hN zAhU#af^L#_M!5SlD?BU@?M<@pOgogk4rDcJ781xZLNm)a_Q8-QNSyLRftlieF7LKb z5j|F06pn@MwtU>h=35t@Vmro9ocv9UFHgGnWLgU$noE1kmn(Jhc&zLX4<< z>dlUoG7xD<)y9ePpnVlixzO2eiKScS@0+3fH`V)lY07n2b_}DR+iM#)qJ%81zQ=E1 zas*TK0q*Ba%KBCRc;8~)c7J$(zlFT_2B_kiOTzKkhAdAGzhJooNfsq$zfTlq9F2V# zTwv;D9q}<-*op7+Qcq3nbPiU8q)zfP8~~_Nm;XsN+*7Q67S{|5|~{vOF1S_u)O(x1&6mS?}`zaW)k~t zqDkW;cT7f^bg+c-jTPvO-LiW6jnFjK4I7!*0J1|9mx@bTuQ`lD|E7AoOHi}s2!911 z9m$I0ks#;nKd`Nh31hyfFG8ZFP_JD5<9&;H+yCKxb_;ov7%^U~N|nqa9}`WHHVU>K zJy$)het>VJ3{Do{+p>I|`-U*AbF@`OltR7;qiZ7r`^Q^sPD9UZy?SkWJj8?`nq zhCDqN(WzE_b~XuuYTRRi@r}`N(tALTwNN$*pvq4ughMb2lOvy{tXxwpgPxrZ2H)+# zo^^bdX%6)gjyzA_ZiVBURK(T}KY(2IE2-BQgWk&bcj<*m`|MAlA`<6&HoBMwUV6YM z3(53~gPT|KqBmaid=$Dy**|2Z>kM}L+4f@0T>K5|$Ut4AkkHrn^hQZ+qQ zD76{Izq-;qu57({`!~D^7>O!D_JxVcq|b52m04qTt?~CxIo>yx7I}#94=!N;<9&;H zKmI@7WEi)QHw}WzshwBqG;V$Er!%?l!adHwXqbLYm;WA-^8Oh6GuoV5dJiU{D}M8B zf;xoGuVOQ->$>%xcU~fC1}xNPbibSPll7h0ui>m69b|JY1NQ8bj24~KW4yyo*Ym?~BwwC+vAu8Ko|BMA4sS9Mb z)HWYjNp-`=gGbJtT5Xz>wazrC#yuTQhkj-{jEi6{KnnuBapyV*onsw1$7jChb*{PuZM+1n$piTxfARW>Uw6ozCl@cx4hv5w4Rfse*V7A0(HTA-}iat(nelP_H}puaO5AA9AJ8F-6mP5o1W zC7B!j$a|t`NU|(Y!a{~!tfR2@nm(B}P{6lt38&gWi89(&gyMik_X|j~$p3oe|M~YF zdB!f5#)dY;MxI`Vb}p87ro?83t~M^jF7`I2PKI{IrV;B10d@o&xI0S^eApB>BpWhV#8Z0?4aF4L{X%S{< zu~5Vp`r2RSmfTEiNx1bWf04Hn?#jr=B0^HAy~Oi@!V_iBtPRUmnT?jFNZQiU)l-59 zEG_yl)Fm`}A}|Q@AB3ly)E}VJaF6E%tUE-L>_o*k=S~VblPZ}L>Yej2tkNVIYIE~= zD@7&NaIdFDTzbO-(Q%eJAp!&Ug~uQY-5h`j3BpILw3k`mzCFiKl|Ra6uVr4QN{^-y zq;cCPXkQ&B_c8r$<*cs-68=ryWr-+i_nZ>zuj+2jimH^J8%1NHGZ0}J!7Q9_x$xIb z%=4y8{%U!yqE%E7*?U3w{P6wL5dbV$a_jp& z!nUVHh#rJ?D>3E1262JQh9$0Z`!}Mzi%R{FJr2SYVdh@$vAW{<=-S3mIyTZ#tkoQSQgN0yw(1BSBn{+O z6+NQy*ZR1^S@=h~rYI$r@|+Dn=bS*L-RpGH?cfHHfr29VSg75W{&16@;lH->m$!p* zIq`^Hg#|4i5-!nI)a&8h?e?s%#$tx#^C((kV#(y43SKOnFGc>X><+3Jk=X<+!4$CD zhbZUJA;e_}GART4)mqpZAMDjMEa;Gwic=12xMh?OxBe2PZU1f$)=v>40sGBwA_=R* zQLisky2x?q{Xia(gr-xU&LhyVs?g7C$2uTpNVh2F!30U!bK@Y7925{WbYBquGxE>x z3IKmV_~mI4e#x-TQe&V4@x=QgBAoVaaF~nbl5g5EzB5@G3uYy<)1zafkMc$^wDeGe z%K+)^_VkJjsl`o$cLN;LINB$?{(FRiOZtDCzBmqPc>Pi{ok-2ZOo|0G-(Fj`e}~Wf ztYq>HP?VNA^QFUMX$b+XK4&1Aho%zoEMU&^WVanAb8(#un1rlwnsFz#`9u|WlFf`l z63u-Q^_b{c+;0qEw#IJvwnc>3y-+J+yjAUO0qqPbS|bCJA8ltb-@M`C>>=sirH zA=5vF>kXk93jb78pFRfR5_y*$!Sl?2)>2Ylc$+tGLfeEF_Ff~2w0@oEDD!^ftYSnkqpufOHt$PZy}U@E^L z{Ac8!-xUD)fUxsv5lWjgfm+9Qd1J%Fh7@GI@gm2(p4K4}t<(n5W=m~y1tWV=j?!dC} zXDf{!3G*rG4Imv5<|>_Qmennm>yzbL)NE_Lb4K0_h2Sr;#?RaUPhBI8@4M8%YHJWG141kSe_>I!;+|#b zt$sxr1VqS>&@qO`H6`K5uC0Y83$D$qdG6T8Y;d~Ddq=fhaXU=@v7_2~hCQ@$_oEK1 zJSuU_*0foEzScZ!2PmD!qTu>t5TcuAmIi6E<|u{52~zFTHmTfcJ-HSkJkd`VvGC@ftLBroJO=4{)h5}dui7!# zZbjP#`B};ANXc-Gw!qh z)tL{T4D8U2@VCiX{zqOxzuo#~`f1L6K$z_+Br&3;sYPLMbmpUFgv%$FaTv#Dnp^ zTbp=6_|M2czbgRx0b%#kB3vBeAc+faM2<0v)tkWA3_E^PgU&)OwBaVAD)zl4p%$=2 z%8)ROFfbxzh;J7BvlSHq)o@PycXqq$#$l`4cFzGos1vF#=YhJ?5a4g{*G953zQfdZ16;LJ%|6Vxy9{pOfjlQZ^Li9kU^>Za_5 zW50~Kuui%cU_hXu}bkkuzDk`TOu>!0{B3)cerW8%Hd$8ZL&R?!}_NmXI! zc12pn*;UsvUXm^r4HnJO8n?EgC^~C#^u$d=_LCR4WSBFfdo| zqszXA&9n7$&XRFq;uc#6RX~WW$KqoUe(G?(j<=nM2SuM28R5nL256zM;cDYw_}OY< zIfI%P@q+OA;rpi}0L%lz-ls)q;@U%n-c1a!TJZNnjZNR)e%&Y$>x!>qMC$~>m_mMw z2ulzkSl3L@qP*?OcnykcY?ffA|eY%G6J_%1uuENo&?WEcNHb6>?Y}9WH z`oSc-a+&G(mo!NCO}I!R3Cv|`nK#&M!Gr^jFE=K zR9_pI^{O z?kZBjyqnxx`t}pV2`s%YX^;Cg2_ExoJ5Ci_WWBh`Z<%|95ToXXKI;5O>aYsl=j>%s z-Ow|Zb*;0YuRPyRhTY)Znj@(t_IxYNY@F0>Is9;x5la4zexJj>3o*_E6a7`O7f?`& zn2Cpgt&3OYr|B=ZzO1Z_`^+laVZ*sGHVv=B$gwrtG+;9ILU+Gz5p;*yV3cU5evvvG z9Eq5Zo9z$yt6n_~ysex#1HSU0Ou>`P15u+wR^yTj(;;!GvM|i%^9((+D7=?g>5i7i zCn6uUA4I+oHHsGqv zGgudL&zd3s3UR+6e17=;=?DP#fN=0>5vEBdh4n`b;NgyfcpIUNex3M9w(L}Zd!!+_ zNM8=EPvK^qg%OTTAJ6Ti1Ma)kjw2oG03YYS%GWoOhz5nzBYTfwn8IM?e4U$g5xZf)5|-p|zEyG3WZr~sgncU2((?9Z@Xz6GoKr=^NE4$Trc}_o zS%Qk|<3^Pebx*}<+x7K{m)b?Q)w-%KlK0%lc=ed=DCqQSh~rzCNwM%9B*4BJo(wVV ziKm+?U8W^bc(uhW=?lVtM*jI-0q_q9hn^Op^}(u76KV6PDjgNFsiUpPTg?jI8<+rd86k?-61xqqk!I)@xC~ zW@#Z)g-zG`P?dkQt8gki;jn@x5>e)XYY-^ z`r-jF#sa;(7O9gDJTM~`zPS<`_{uYO9uVvtoK6&VD_tgvrFs9&+B$=;Nb%lX_toKh zL&UDDBT^w}C--}!d7{jq+!2Vd7c1{8+ptRI$-KRqnF9d|tFL_N)ciJ_cc-Hd|#rsHyR2AH-JyoK1X% zicxA!rheYalsh%f*^u8a2%jIme>wsnJRlr-T7(~osfk9A0I8>E#pI|sQ@Oqfsbs3H zDI_?5^#>-xnz?uh;%>fP#rzDree>PKlynfDCA8N$MCT z>ATe=V_cx1X(k0RdrNaaT{<1~8Wnlec&r8rbwsJ3MTyy+`&g_xjJ9cG&>@=pBrqf9 z(Sw+d>0ihFs%R1+))UK67C8;GfQ~iR707G8&=vSQLsls3i?|sPHt;dgw53fn6H3*k z?DHXSP;+`ymN?bes(+Imy})D1_7sI8!C^M}n77I(d6f2;?WpcV!m`-ArO*2F$c$_v z?K}HO5(@0yMYKWNKW^1=cfDQ^{xkB=?+QSCKsffa2=!nwagx|+_bUg!y?X_{rGpZK zY}P=*qi3<2&W;-Kxq?vEQBa1Xx{f8C=ZbyLT>ye$Vht^4MMk*Lg{yIp68}C41AO|& zY3!LRE8Nk(-y&F}w9LP~u9k(sQPCyo?KroRqOx*k6ajHriNS^?P;uzk=AmoDY9{=s zEq${bAaFY12NYz8rF8{f!ui>feZ$0J<@j)%?>B+#r}LhDmO11%>~vAGzxpeKMuc-p z^X<`->Xjn%FADACGz51m4>X5kmfL;+OH5%2`sDb(nlMk{=hF6>cOy&{&)I8G)G8bw z6Mbul-K_Zo7k58t>r>>%G)-&JeIbL-ScE!lhwwN(ICA`C2^^0}!WjDcYfRT=s>7?y zG$+cEH&KxnM|DzN8Uli-MDWrt5Vxr{oY7EyCk}h2Ll_ z?jKI4L4w8Pv=`*_%2Z+7OAx2wuAxs$z99T(S+-k4Pbdg5$b{Gk-e81 zAPe8k1e9yK*J2`nKDux|lb!4(=b;f;xA;ll;tr*g4Q`1!D&XjVEgOWr4quXRV}h1- zpM(X+vZ*)Pv8u0P?dyan8qQl-)lm%6e*Y<4q~aK4nhR4Su$V{kJp#Oa#ZBpXu${o| zW%gG78`9+xmjc;%-Zu{^zWie1chmbFEO&zxpMgg8#^gjnP9~ghwAG8;J4X5zHpXWJmlo(&a zjYC}uolFOKe{KqWqmzX_(QP60S{uR2fRhq(E@2fJ<##e3MO3p1OAAU}?_-kC=7P$` z`>5?kP)k}Qlu4@B5b#M^dN{UDOrQ2MG{M#j!slo2p(6mw1Hzf7MOdQLb%uXem~ugb z+b&Xc73*>Al6j+xt8smbZzFRjL?_=$%e7}Lxo?l;M1@blrH=hc>4rNF^}y)QI{a>Z zU)+5X8j*Wb>$@8MbU8;{)zU%ZnM$mnLTcuLoFWWT^Z{1|*S4_B=0V_bRI?;MlZE>l zdD46B2R(HHO50hglOPLC2oyv}+U7te-5ce+H*2>Lux!6g5Hc{k;}`xtW4yMUXf6ov zO89M63HYnA9-(ASXWG&c--Wpd@}yU_8UAJJ$M!bBB$S|sIuHLf!a)it)o-LS(H#+P z%PX&C%@-j}Tjoj^$&FqhG>pd=el>%&z+K0g9jX$p%o{;o<^Hu_(&f8}xyfUaP!$Bf zDbrvlRQpfPFgl~9B1(Y(nb7dU(NQ})-?yw5)t4lEnE7Y70H8h~oO@b?@soWB6th!I z_;kGT$8Yd_B3J4W2cYQ7`SVJ=nr+89(Ts9!RR&Q&4yHU~z>j?}{v1N$wSLa;+I%|= zGt6=3eUC7HJw0$O>3~Fzhg{BbW*jsX)tPC(TbxiQKoFD zmAf=0xzR5}ggC1%f%J+gIb|1{eC2AaPaQ3aWI`C+g))SzgiiIi+TRBrHEkRR(?Nl$&NkTkv}6aW4s9eF$fdF zOfr8?zVbkrd|zw2#6(s5nc|RAcu|Lew*uEN*0b~l;j^>%&=3Ia0pY^aB3vkOi5mEu z3|>0(p0gWGO{>sJeYc^rwLb2LBJ_n?;D#T2JviezIDf&mZH1D-&|<9>++-fd>-PX# zI>?G%rN8$GSIOupjnnYirQgC)f7JGxZ=$u-mQJ$0VFc;>zUYbVSReWO z;&|<#LKj4>WsDTDC3ac~@OG&|7?^~Tj<6K4on)eQgaZt|d62K)=M$-W=BI`4?qb*k zt(y;{kfBFbdZFa}0$JPwq)41yN)zX^Ij;U4_dAY4z;dw#B9ylDsmt<%Ub&!&F<@>! zPrg-PmJMZCX-py?gIgw0TQ}=1l6snzkPWYv=P-8$LLP=hj+Bat*1z2ApABCDC3$1T_~ z;J8%_wpohr5em(QD)?o@xV^>TN35*q3DW%?{62h;T5D5%G?|RR+`8f8y4G|kqPRjj!40Mbin*VNPTMkOI6iS(y z!%D??1H>dVm*>KN(4gca>;yW~zQpW=cZrDK;7q6Gn|(4%?Q?umB?Ijg6~F+7?}5l; z5c(7+x=cWI&+p*fT&4y0LMi6q4B7IUe=+=xuB>EWB=Umr+1Yz&2!Qc`@aNMaY*$%s z>)*T1z6(I=v-Zcy6?}Jmm*;6a(AeGMEVXt+>vw1x1-)?w8IxW_0SlV5Rj2V0Bdtj} z`*thfe7$<&`u<=BnoFqQM2^=`TspmEplDnH)-J6E0nI$|NCh#e4SRl4796CT_6m8) zA{7j6erzxFb#kVK!w$q-p6U-Q3S>91K!kH0M-?!ji)m8A5G8>L$EMssl2}U?|OcjhuJbIu&;;8rk%tR4ws=_#dFF3ih-cc2$5SYI5YOps?$6rzZQu zD|5<5@JTt+?KSh^JtU~nz=1^&Qv%uF9;uI{@E=6m=6e7pBCZj zH(B#Tv=Js;7``k28~2_t4l!^r9xK15Z=s+hgOQWSzofX#Ac^9_f8^6NgSbW_*R8oV z=U+2)$mP~RrEx0UBSieIB8p1&H%&ciWDW5>QO!SxonLjBdqc17 zHnsu`60wa;=*!PIJcE0Lk#3U{@-o4j5ZWFt{k6$_cbCm58U&>}EH^1wBj~%ZGJe|R zY;L27w*5odF?{L{KkHC2gju`=sO@|Sk+#u)0tMBnSy8?hbg}uucZO5w=u^*@Qzy#E z{6o{~lyi+#3DNY`z`#4~V1i=V0Be*Ox_F0n2SkR*3JB!rV#zD%>AN-XrpC@S%Yx5zu#B5YzEY7KxU{kPod-1!)R-N#VeG=f+|gr@Z6fjbT_T*fFJXb zDcu-SY-H%j&q@4@q%<4P>(ax$ylaakHqCNVx^9#aAIdn=g3p63c1HT-t?wqbin1Lm7$uj)3 zC-)2MVRCSbaAtqa#SIpU@%?toolJeBRl`ThsC>p<(AEse&a#tS4htUCmv|)9cF<+$ z81)G`AyZ7`F-hoh;-#7FoBL)ek~s#YbT8tzpB>vw5Y0M2pR*P$k#Wv zXv6;pPQ&_Gd|g@!Cl1|WMRf`%PTT8%kHtOP(hH*zcM+vm)Ejk;epJf6tj-2_FheCc ziC-%WR)MjcL6*bk1tWJMvxmlk&T4jtV>q_vI3%LG=Db4pm*O2wg-yr@ExihcFOmDv z(jE|>M!f)?Q)`bw7}6SOQyW!r!~4NLB$2#<)Z2*}J9Qob;kU|YI%$L``3u5_nSXW* z0PX|A-KRyU|EZ0v6}Nx`^rn4ZG8Q)xTPQx434HT7IZ@urky0$tEp2ZVzdh>CAIppD z)80tP(&8LzViC-Uo)Z6$&@!;ydxRZdjbrHia=vOVM!XWbYRYm5R=fz)lZ@-`@*j^# zIq}h^XwfK^JBFf63hngYPZ0Q7RY!0r{l(Hi+H%Oc1VtZ+@H`f<(po_?-3Wg4YOU8? zNQ`v=#Z{^t{i4WOBf5_C=cg|Ihsehq#fs_HA{ua-`Dek@Y&gW zXb6D!fN=k55te5CfGnl2H<`~0Z1rF2J9~r2m9^SE<`+7rgYbU+?JceO1h>ODzlDhe z2p8fUaqa$(=$yY0aB-DmRsCiuZ+_h)RB2#&JLvqUn^qKR;@m?cDEH%1>G!Vl;Lp&$ zBn}%kp$IHpR|Fr-pnFD2ktE=b@7yYTVu)@_Ug1hm%LR#n;s6m^FP`l%+2G>z%@I2K zLRP50B7Jk!L@)sf!i91qrOJjTfEo*?*d3JIoN{PeqeI@mzaW`fxt7*Z6B~Yb6I|a2 zM0g>OZF*ksjuLTZ4<0Iz6z)bvr`$P&dn;_fuhj4CYxRcuDiJ`EohR`ASK^d(9P?Di zDqIPttk3om(h7A5Khf`2;Zsz`)*NEX(CR%tSv%S zkzZw$gEn2!99_TK%3`ti_bV~H*UeoGM%6cmou_&YzEZYHJ8=j^c#^ZOvXyRs?%#$k zbIRhQt#SdGnwZ3fb~y{ipKV)1r5ck^b~=brQGN($Y19`oPnY26>+b{S$|`clA9Cnu z2bQP{o$^vfb3~wze;dK-O+%{}^EH5*w9b48&A7ldT6b4(Ol4@e!jQ1>`{8m)RPI$^ z6Yn2Y5Xjhcc2agJr1aazB;klmb$v%J`C7qdES+MLQ>m+hxPi)#(AqcH*5c(;G#_6O zK0A944FL!q5dMBzgx#ZWmID!{>!e7wM2SV-ig9Gz#_bLTEZVtLGY6c4QK}dvH{UMv zDM^`wA{bJa#q~3Txl_pz_=8Cg^tG6)%H1Q}MY8fd1Yv51L!k!6YT-#R{j;!|C>7bb zsfu4aFmh@ihP z0z2Ut8Q$H#4Wi{7uT2CE%4ykEYiEA{>UZb{)RC8?>iRXfJh*$w$9FC1Q>!NpRFR$5 zeMEHGu(ej5VD=?VmE4^2>{qEZh?Bfu^^<_VeXGi+0WIDEF6K+uXW9sbtW45E4aKjqs)xJXttxh^Jv5u{~4soMM$nWC_xxZ=NT7<$M;lemJKM`SIexrslvDe$HZ?P_GZG=(6*QLn}1!trl zv~R2_kb&e|S66=>%&)KFQXmWJfmX55_c@1G7hK2fjjf)ZQpb7`oaOn6j?9G{>9zBsD|H}70M()I0(x%{jDgkJ+-`Zk~ghIzCRNHih z{mi!mYv5@-)`2C6?gFO|G!NGe)`cOWJ(QMFy5~}vXXV1}`l%UEr#avG^yDK_h3M9c z)U#&9;m^t@%;NM;{KoO1YMmAEiDg%N3_{AZZWztxJv~7`Gq-RdQEvGK72tdM+r!#u z4UH<@pfFw#KFs{HTL6e35S~3PLeHIweR`u`mH6Wk_1D5~LB*$UnOmfd)ozc*|Lot| z{IR{RDb`-dl&W5A?>acidn<0`X484@ch(vJX6I#t1-RdiLZAtNTY{pN7VH%j(V4h@ z_(pOI+OyV=_;q>4(>GDem*pE@jlwZ0@hk_;SJWn#al9OvV}pKSv7=JL_b#EbBfuC7 zOTqBKm7-YkE}`an+mkCkm~c+{)xEZJ)qr)r_M14PTI;c%hJt32k_fY~Hxllk34pb-)8t%(oJ|f0DSiLm2K8zwxigjLu-@1r=9+B5Hrhj)`NLHN-=|M zulmV9v714}U)sMQe0KI88Um0!AiQ{5gicL6lEd`euGDK2Dq#w(8$T~CXb2$RnXS@j zEIZ;7A!=7#BSq$;fSy3nUXBXRFRclxQr|AvCEb}!TE{OfFn16m7YppRIrFr!qtHgcQdJ2ZJSZ$ z%-h|6dbaZ#3CGvN6V4czgsGXegeBz*IOa&Moi2YpZhX@4$^g=`5^eIlstyhs;sk|c z?4$1%iuhDo5&A6n0<|1)Ntn%~N4nD%8V?oUKI(LojeN_P)bVDLP55GG)nP(qHG%u* zd05Yi(4vQ%R&d)3!iSN6ehUEU1H!APMc5xvp3+GP^|2Uy+GLyBJCU4U+})B(TRRy2 zZm{UnZlx9Hr(DABG=B>&iKF5|i8K0+%vl}|5>k1yxafX3n3#KnDsmV)h6ia^+?PM^ z3dhRwJnfQxs`-mU)@Zh2$RKIcOO<^;+$#PUaG95YuyJrcll-UL$_ds={F~pHpo~`U zf4+-?cj0I%w<`1O3tx&OLkR3D17pm2nfj~#&#D1~i`RU|n!h4i3O*q;3xpIM&aEVZ zQssfP#v{H1d>=WrL$(U71R`u7w>vD;7E>Gj%(N!XTBmcFLS|fo2I}n&i2a_Jm9(jw zYsr3lIx0FdI+yE;;h!$2$&(-(8+#TvLQgmKsa)bQNvK(l4T*$MPQ>uXlScJbuKwxP zQnmw5V*%C#QDwW+_m@vwdw%vFIs%YAAiREBgt9(7b!wa3b=8=DGswX>4uXtI_$$YS z8f@4UJJXEmIHNl2>7#*ag*32)yG)@2Y%dZx#(4DxxdtH+yoX7sM9etSjXSV>5KOnq)T7-^!s*pG-SJ4%B*WKx-`hmm{NG>T2 zfx7y7@J48ob@B97!7(s{(FH`7aO!fY=7{5b_?NYaU@ZE}&g;or1?ep9> zh7yG>^8dWE9#uLd9E(P#cdwbs(KEI?&&$4PD!t+lH~RZ3JkXu55#+~aM~nd{8KId- zRWkB)-l1qoo8rrxY}ADHgk`7s!oU((UpuxZxuG+V%W5L^tXqZ3J-HzQ3_sMU8Dme} ziGVJkF}tdsNF8sM8e3dX2q*Kf`@Jn)kwe#8*umn@4#rh`3_^Nve1Za!$TgbLW|WjW zMHmkOkrrZ^G@Oz*-mSkmoL@d|?b*@$e+>aB{y``R^0WxaKRC+uvpS+JI@2MNh8Ptq zF}EdmP_*9??~ZRw%!#`*W7L=lW0GZtOag-8gom|++9AhhF`4(Phe<=QzkRK~N4VFs z2)%A(>33GBx-*LR8aaI3Tob>hrM=-zm&{^SH>$n#oOL`x?3LAQbdQJb8xr|_?4P4j zLiTSvsp3m9vD1Ki$zRsLU^A6C6x{UR)t0rde^3g#zDs5JE zo4b1#|EvRH@UV%W0WXmhby4w^n}@jF7f@gcl5*J-n+d)iY*Zn=ZHnR9GasaM{Dvz$ z*tce!p7`j*UOSvrDBmQ780u#Wgo3+gBTshW9EgXG2-qW>_RHs89&MdmlZ71FTP`y4*sY{LH{6_!z&GiXFG3^o z9w9aVdm=o^Kafd;WJP*gSY>u+0@f3Krek`N8P}SFXjD)O*uJJiktGDTH+uRJha6pc zL<*OAs8<*;<<$7JAq2n}BUg!Q$mkix7`1opK`Qc_NJc9_7b|WM|6$ia=%1nB;kwa> zVdL9JB+5or3+S?nM~gLqFyO=UxLG!A(Bw+-@*~fxf z$xm-TAFaAdUc7DRB1Xe}eY_ztoaOnmSmEUJQv}E z)dkqu-=IfS1IS|o8(CDfc?_*7xFNU(dErp;rU0dybwfyn(-l%aMz0Nv?2n#`SUf9h zLI3y8dgI-ZPTpXsopSi-0q6BMVXYX2a|wRUf)aH*43^nb-<`H$sRnYdtt3)hovhVX zuuLep`+QA;Op2Y`aGTje3}9hG(HuYRiqj)F1PL~JN_C|uX4I;+SKYAwt8 zGZ-h(xTR!`X!PYsCD~aX;ocE$Nwz1;B;Ki&2Tn!;lMun;XYmpd%1u&35g*19S5wr{ zrE(AQ-Y_gStt=rQF`W^+{mAFehz;GyGJ5Q5L-7V4N@S|U{$uMAh&wO$FRPD9LMS{Q zz{QeF3p*`p;SZSfx(&oB&0_&;2hk;ST=K(6wwEOQ*VI3=C4l+?A>`8{%+meyXO4J- zjK88#eZ!F%B?!-8RwZA;AIk+%&Lz9;mpxIebRGO1_jfP5>a@JRS7+phj7CVrN!I-? z!&Z@&!uJO=om{)hr(cS7luVFZ=o0lT!krlkE z$8c0Q$iq9plav1aI>r{;N+r`?0~FLSg|5~Xn*#vb=;<`0~9! zdU}fY8%2oP1tJnPn#vy0Hi#t0t5AE&dBI~HAAEZ0zc8IZ$L~194aLgygh}K#9pE65 zh~>|O#)TXt4?cR=pvB0&QR8ed11&m(9ah2tp3r6|uE15ycNQ&@Ek*u-*?z_OYvC~n zbK6)d5klmd!VuFl-9oR_0S56fb-dyvWvQC9;fd`{F9@HRynnR=pm{(D{j>-nLZl!u z$#YRRaEw*`_G{mQ0`ny$(za!1i044*r!;yGRll(jmT^sc$Wqw`*R9$zQ!w zzX|T8ehW7#AYjQ$7rNIe^aATcvIe{g%WjsazvUOsbraKHG2a^N3 z$@kB&iMTF19SJ&;{wKz3h07xc(WAo~y6+GHIkQuW75uj@67G9#`M?rFRNFsVzfoG$ zFFFVVf@IOlE6jZa1!^)7TRt1CU(h3?HU6kDw3esejJi2n|AHcsaS^J+`Ey{w^Wq)J zrz->7#~@?|;e{k$I}rRUiKQvx&4Z{Jl4HSVC|;|&)moR5g&fA|a6D;$R% z?}&Dvr)92pV$1v3wI zun2V8usE*AAUpyUW(pygLufW=jD5 z146{7MOe!fTwSjcvx*Ufyhrjzp6k%ag#(dAMWkX4+YGlqA`9}UD2vp;$=0K3bw-1r z7*}6KInN{c^EGWFEAk%1Smu2aRu#}mP5qSG7Wq<&9qj)@<-8BQ$`FvAUuA*Z<~H9{cO%N{bcSJXFKD%jdPv^7fSqG3wLBp2_z>P`@M9Ayu!OI4 z!|XOIl-z8oH0d$Bp}*JgUHK8ID_i>lF7-<$>Of!Li+VN`;n{=-;iQiul6%9#u~tn5!t#ZMg+*ik%u zAVMf7q$q^Fm2}>5KLs4z?dG^9EZ?l15}0DtW*jPX{AN{qE0Oaipc|6e&rJ$(Y~{yaN6*8{Vi3D1$SxNd=k!l) zTD!`4;RGIbQASAkOn}@iHr$OJRnE=m`y^zmll(>d`n$SDhO-ShK%oNKCFk0?wrIiv zJgb((y#^NnFg>n1J2 z3&Lk6?_cczm>v+KKP|#bD2g?IllPsYW?#OVSPruLUE7DB+8maZ9T&Lhhy2Ap=^$8YQJ!-GQ|i`%JTM=YU4TDM_HEON?VmT+}KK4c8V~5cJh={6s)}4Sb%PF z=#}yOW}st(jM<%<61e%;(VKK{>gtQgzvbLVaaKF-8XxSMy;rxa$QtCk zh`Qx+cSiJ?DXh{Gx4=(N7;d~DgAgT$b(xv0(r-fE{c84Oa%d;nE{pthc!-5^_KF!m(+YS#LOFPiKh}i10&8QLijf|OB?PS(t}nGQi?sb8JVB5$0~$y=Z$efHw)6G^leAyW-g2=^Tcy_;-A z+f>ZVh75oR**?gkMuZXdz*2>;}E}{@4RtBGSi)4>!mL6Je!81>eqBh4{ z%-?R;1&O{AIIdRmJ8I_myN$H8{}_aaI3vkL48vw7p^m6x_6te!*kM2R!oBy;-r!<5 zTu4H`Abe)>{?!hECr5tl)5`ZVknF(| zFq(*%kDpV)Ke(pluYppwBbO3tp#!3f-bo0P^}JWWkBiN`O0vYmEthoS5Ox3xGUP6B z-{i{EM9I}bU(|bN`evTe0oEJY*twI_KHU*1RS*rrR`XI)8GZUDOnt>!$1g}W&)?V} zT{RIlpI?7w8R*zku%J2FLd|Sbu`7_kd*xRro0l-^;&7!*?e|kP!7fW>UJQMNfFt9o zL3dI4YvNsQ5ouFv9I*oC{4ESwGxPGtAhaaG86VQv&cEY=>cfF9JBRz`r*|F3;_*j3 zpJM-PRQmu#ynsYH@GRt#yHbrH9|JSCHH!< zw+$u=2KbA2<7t@h0Rt3d(vDfywyE(`lg+1&uEzO2YI#^unOn$LxFDtT_V69#K!k}< zyyoS{uUQtr47ji5(fMVKtRa_wo_?$}T8JY2*!I&V{p%ce*FbSt!0S+aHhEM@Du1Pn z(#UxFeG6`nl+g=d3EdJDjAgq%3}MHyK2D3@nZ6+>TW6S9Zz^p=n$6%uKp9&Y3bv#` zwzUK}xOaR^`dV}RXNGuW5X_pLV&@yXU>}3f&kdiKj6kqZ3`#!{1DzQThc9@oF=lq+ zW2hA|JveOg3&Lk6?_ccz*d7q#KP^Ip;}MNb2JKBpM#RE++rf7<16Rg-b)_@$8J%_r7TrxcC`E0qREOT7G8|?CG){PEk^L&Ix!s27^%tHixkIHThDcX zF-E_nC>-ix>~BnGe&v;@SF$L9b&?XZDwnd9SDk`+vS5Z=J)v=G#Uv2LG)4C*mSdaa zPw!W!nl1hn{HZz|GIk(BIl5LbD8H0Yv#X!2W=c@M#f}LyLP>=C$4w_AMk2l25{JMDk|n&+a+j z;X!QvypEmM;!je>abJ_#(wY6KmSrHsd$4I8vzw0{Cb;VKtM*9i9wDX{NOP0o`d+5@ zGzH8=$5DVkW&zI)2RB7)oB$4qH1sRsnf}U<$>DnYj(&Em&0R5I9JJxg-B&Rd^h^KNYO4%nXt{PG{8}+ljh8VWD1*WUuJVJk=Ntk(Lgb^qE;BXXCfPL714b->eu4ZxzNyCiRg7 zwVX@E;IH*Z7Fn;^22evVag!H>|C;(|wghlKAS8WSgbZ~K7Ij^zx*x)NaTXj`e*b;% zic$I<_0jWJ{`_W~J#_>REK*s-8pJ3NXA-h*A|8#2=KL0)mISbX~ zG-wh4V!>>ItzuCJ1Cv?nNnX%K$`DtC8!*Zs3LTZ}*>t;*o8|ENNOPon?A}3R;%O8R z=O~x^OIEo2KtT?&IL#IW$~3HQ{wfUl2I+ynaV5O}Klbh-sE(~`126}7hu|&&f(CbY z3-0a`oZ#*fAb4;{aCZwDEV#Q9Jh%q?x%^dp_fDC>fZ6WJsx??oy?b|`KD~o!mIBwj z!zKB57n4X1sNlu{_41dLVS|8)_FDX<`sbZJ5{N^vSk3m_f8GneZ2my!d=z9Q_)zPMs`(9BM7N)?F}_0U7w?m7(s% zQxFz|%#ASZ0g1B4pw^t$8Hc58Jer7wyPqbXTtTH)774nU)*>Mg(WOs;!I3p_< z=D<1T48hsBa%EWxIa744TsOg_9`#3|#7a9=%vvmLC_X;5c3aWD!quGx1Y8eo-XlEz z>8G3tDNwC_QcDZfKa74mtDC%Kz(JfaITj8eHN|ZN;|o^v^^p=b~)Os>hl;F@K#utG>#c!(BaBTHVmrc!f0GY zFf-kW_Tq8I7n6wD|Gzsr0?xZmOYqgK354aQhz6sRht4bq`k-vsJ@_Dxy*pitXi80) z-$$_j96}IEE=ZO?rsqA%(&*0G#3)?wO$hhBpsZ6nF9%?AvA2izY7LURj5b9PUw*GU zlbGTR{w|)hGlO^8{1}8Nnsp!%3byhm7CV>IN7Zv$3=cE$(v_AT6#u>id6}(q5J^ew zn~1L(t=N(l>|iNjm&pN!BYf`^_8DO?389W1m6G^4(18lyWRs2X?&vnlALZEiE{vU04?H+Etfb+ zCad?K?s7CT;V?P~-FFxswxck@ZTMldFn?6u4eW6P<ofg59qRe% zjARryVl_(qV>tJ&EDIaWm6Cm|8BBM@N;NojZi?p)y?YIk7$J752*zLM(tk=n8SiX>I|2u;bh5^Q40N3<-n^I-9Ldj*{uvIdr-Da+m?jABm-b**5J=I`rPZq7Ts zBp3ZMC3Dk$*wE3S9?!IkN$K%Rq64hr>=={!Y^r9S2@5x3n>31Fk8;%hm_8aE>K@?? z5VM^zlj?$kYw6YI{6IZ!%I4Vp=bSjFck&cfJiNjuST54!gyB4OP<8 zz1Fwy;{i8?rk<&H=4IpDcVhU!rRtYKP*U_pah_9sYa|lW4fldh$#bVJksy;sYsdYI z6YNl=S*k;kpl$O&6-@oy&yfyN^V6@6=&j1 z>GtuNl~UJMl3#OY9#P)6zAB#D`t0=1eYjeX0vnhs2q32Gb>v33FzOlbZuW^166uD#B*ftd~(R2q9jX$FB zitvTW`&T;vu1AD)&x=q!khL60;p9^eGUG?8X2HvA=axzFZ{ucOu0jO>8g#2S(QEvZ z9vY06`6@{QpNmmSH2NlHe>7q_OY=csw6rHbBq4O^%tt(Dp}t&m9x_q+9d7ltLAo{z zW5N+!MFhyN!0C>DvQ+IVUMf{s{c8MFIBQgHyr6&urGtovXu9Na*T>tw<|(z zeG=UIF-Mh>)c<~zZLCQ{iv30%+TIPE_-^^TQq8#=wA-dzm87Q=V^Q0pRfO*#0+ij9 z*HUBEKYvrxPH~j3P2%gpE9A65h`Rxa4$_0*6@|!(30(CdQeU`SwwXEs$dw22b6!es zRT9(ow|-XO(FG_sr&Oz2h44qTMXn5M-3)Wao-D(Z9&PWXrJuN;N0M|)k0(ltZ99X^rJmbuufBtRFB`YwP z(>%}z7JIxK^n;hp=_W)6mOnB?!qTp3g@gSGvH@QD3}w@lsa{hb6!N@GvLaVsyqKm= zl5zBA4A`*9z2h4&jXG;E8UIHCWCg~|I@I{=GL3X#AQAmN@QObel)E9;CL_SmVtL>ut>Lm(GYJq~4B7quKw?-bk zB`3rtJfX-B2E2anxbD};yR0`l@WGfHQNM&Ft5|IqyUfx`fE{tY2xbn#VJH@T)c);MRzLs(vn7MMpfrB4qiulsT#8l6~!@I;pJ}>=m=s)_2$i7 z1BwIDLxFAU)v$U)w|j(^B|Sis5Z!sT=b-x}a&LzqwfXEfLK+T8-(Frtu(KW@=U>m| zPgA^xZl&&}DS6|r< z-cdQw`IWl2t^q0bE&m;+xy%yF;}7r3baqRB&t-)hqrd#&;t%sf5`F~l9Y8=V(fFiW zgV7;HQ3>STjN;{MX~n+%qt)48KVD)DxvW5|c0Gh}C{xM%d?y@c?XXv!OiTvx{8LR6 z*yX*T?}zb`=aQFD!MyPaYBDN;Cmd~ba?SG=Rd_zf3q}{S#;!Ds!(qp7t;3dnIwQ<% z>;w{m8GAypi5SuA&O<^i-j{%9gF^Wm5D3?6!(E~R=i$SgUy6Rp5a3vHdqM<~P*Wfi zMm$(|w`4C%(K}8>lrHt>Qx{cpq=8Ps9UsCLg@)}@wxi)QbSE)x?jbD*7$cssq=!D_ zz9ieJOl6@8XfAv+&bF@z|26e5Yzg3hM9BWU2;;0n9Hj#Dg!F1_c{^ND9qM+tndWV+ zJ85{Gv{^K;FBxc0fiuq?n?ogaV+YQ)RnDUr`={_0?hita9cphsL_8q;dy8=M(KqJD zAY_OCV13JbbY9~VZrIY)Zn$l_ns`zXF7pmsj(YMC?@KlPH=bckVm{D$kf3K)hE*wC z{o)&j_k!{wk0cW{)LC{hn2d^%Q?XpcwIcU*(!tDUDzCSJgc0Z>Tx5d7yXB1yk++hx zHvCxH9n;aJ$v1Sdq$JwJKE&ULDY7TrAcG)9toN+;f*D!Wif31$=+-yG#P7{KrDr{4 z?(C`fV<$ixP7%cYEzk_HGDG2Ao5haFZ;)=+wp&nsaXuvpP0^^os<{Nr|Jlj#@NywG z9Q;AC)Wsw|0RIce*mm^$>kqhJ7`%VCbN^Fkk&T~Te(IduoX?B!x5=;$6MYnV1kcTx z@W)P*3B0uf+lA$xJ*PVa1g=5>p(@RbT0MXG!L(Yn5OZ1=i}NL;RF<2*{=l0CMc_9@ z58Kh&ZlK=z(7jb|hK^_u9%RzNV{JjcYiJ*04bPT@x4*V&m2ZD?b;$zOG7U3VJ>{8F zy#{43`DF>&lY=$K>NC2DP~S(9O0X8ISpcgO|dM!JfxN%-%ve_3mQ;3Gor=S5hvy@ueWk@qFS zv~$MZG8q0si^~+bz(LtzHZ-1`I3|wZs0gx@UVcO^7Jq%cWQ9&CQRU4>RS9g81Qv;) z9%9Ku5>g-k8r+SO(pYlhJ0B3!FYdtGj3pifoyq;hVQ3Kah0pjjYSCP}EpYf8PIy0K zRE)D>m}M}-2oT{461lHwl5&qQaYV7wsm|Sj|GZ@NyAR|XM0f?;R;1cAD0Rd+8{tSP zsgD;k0wuO$6V41twwg~3MWM$|y{*)FBr)PAl@G!+_a&qjCrfaXJ%illvdv5;l@*#v zY|Jo@>D!yhK1RUBB!lw^?!wsyE=qbx(V@EBG6bBg`XgpEU?1bL!=>enb}>B#;rBAH zX$<6wvKoVFM;^4WifX){y%~biq?Gz^NI16YU%yZIvfTZr8-UOwLf+>^nC3c4q$Qp5 zM?=-oC2uHpT7ESp(a!I;Z#DZe$j$Xg8g43nnsbM9U=N7ZrciGhOSxF+X$0(Z-;L1!Kd4_((7HML~ugF z+nvHaT!rIp>U_CQal97bH!jleV=RfI4i+(~&)vj&{#Ju8LM*_mMnvwH=Qv|wTI{%x z#0RuLqbI*^=HO*^blp$;u(-=}58KJpP2_Y{6;r-3{PMgn!5OpB&vf})QRj=s7*8QO zzXbHi0VC_j523CTRWh`n)+O+#oiLSSMl7?fAVw|bcfJfno5aAz7A1s=Xei;gJb^j?GR4i$#rg|sy3d7kgmy*2CCrj;I28wF z^c#$LVL(SLJZwjCTl#W)X7MQBR<{0KEdhe@?45rV; zY2&CBn{l(-30mjgB&OaldJ<0r-J(z2$Jpv=wn#GPTS9;Mt?F7%dH8mA22G$0zT&CN zCKHfleIQ1`fVy(Ncd$x8=0wI!@3GVi|6o)GhS8W_=Vn*4xi#LG@E;)s9NPx#Z8I+> zQTqNG&PVqDGl|my4TS_z?$cdpKuOGI*S)98#iis)ZO1c~6X3txA)lNNTR}k>a3&x0 z_9;o2jzp}^rA3M%!_kXr!3tx!NxYpmNb0M(L^|^!`!l`VE5aA$?mx`{L>>_eJ}<)e zyDa^{M~zb5UHf%L?~ff8m_|3c$0v%2ny233cm&hiPi{qyZ@EXKz7dR3T;T3Q2Ia|z zfCM!-e?Q*}f`Y&FfUqk!HFypM4AmRvj#Q{!0_clSwq7YR$kb(!@*P~D;evQX-2n|U z=iGK1mP~m{rFe%svYUoqQ|@*zeD-`%-1WU6C^)+oyTl67gI*q(Y%kKg!-?JFoal?> zznbbAv9cf2WPZ9`hmYci)K3TPV9>9~Vp)OLA#iQIup>((oH;A8h*0=> z5gHK{3NukxSs7mFc+((EY-ML$QDS8mVV!``%Qu#X`nh@ax+p@>k?UnjWfg}6_mp7S zhSETp>4ajKR1UVA%ROvI%TZ^C%?ViT%!8VEiDnzJwhwTl&W&m zERf#a7}j$nq|~$GHShf}Z#sb;k|GTl@=*+_fyv9fK;@a0L6@1+gKBF22pfF%J>L*s zx?q&52>K@>ESHn6=%l;bj*M2mm^vnKx2nNH8!Psl-R%BEL|B9Pitt6b`%g0fu}6fW z&x??9Frg3Vn&rsXm>lmH^Pca?9DMxoXY~oYG(_blIaw3cym5)KqiQN1R0DI-@+qkK zP36GfKUI0VI*E@Eje6W4lCU^WA+0$Zb)SDCF%fBPD8nepFwjocJ-r|I=T|4v8a=tH z!3lvQX`k)oWOh-TQISB$qSKNHfd@z`+dV>hf^~EX z$UiNhlyRGVz4@lxo{O#_tGA^EjiAyCmo}=Ra~z1Ggh4+3Hx63M;}O|HO#y}tbD?<~ zSq9kK!DJ9mK}fZr^(G+LEl9Zz{6|uHEDykbLLjkW^2VzoEb^+U%kCB7f9C#0T>!)% z5sE)ALLUjBzN(~nI^{v~o%e<+Ji#LYDke*XRV8nilo}-=F~csK$^en zPlGjNgo9&uICHY|`c$OD)cpTv!fBD{uVx$bqS&{Cq1cgYSqx4RBoyR2Lo+>gTELeZ z=;V^t-xSO{0q{y9^`1kM2+Ah4+W?Qh#F<5)ScIlX_XzvER0YBNEO z^z;7s+Cwy~&|6kp0|F_81E-4&l#cDc^e&mlR4OHBtnY1ED_^{i_eWBpEclvxgnBT; z4gfLK)x*4Xnvj&{*t9tOp~82eNvmTYg4xs8mLeQb(Y;UsPIvbX-I@ZYxjuKGGmahn3l)L{l z1CV$`DEYhyCz_5%iJZV2go);4?D_iM?FaVx1UBg~d4m+%)lKyBL11SZ7s)YP#`3ED zHTi8w?Xn!-f?0~hHkpnMR!iEv_^=&a2|cjEA}re7XQAfiP~eQ=_8I#j@u?tsWcY(I z(3sUa=((W6*6c6ksHWfWz0Fa;!0-h8G6u@ADWOc|yUnl#_kyZFm#^^Y*b4N*6VJon z-C!@cs2Hq-9%% z7)>3c3)3t_-AchkUP5zx?!W~S>Le!K`{zmWZFnMBk&VV_#o-_jMLYs76EA}WhN@|s z-7clNw}?FbBK*(X zzo-j<L*r+0nlR~hJv3CG4>B9OlNqvMg%0BGlf;%K#!SVXcy0K-6RPD{ zQ}qMF#e9iJ?AVk3^@Xi}NT!Bi$>U1@LJ_pf&|keG zd{OTH(+oiB5uxn!BCO~xUi=nh1@N4*KL`p?{na?oL_f7}=cqk!t+51uC`tPjhdmaX zZSpc6aaJ&*CD}3}+{G!_x!s$p?7LPvxmo`u$$4hwNJ+t1jCxWFP zNUz0+E-7S0jz&+AeI4E|@Vuuaq3W9-*ZIDj37PPC7zoNfxRJSm=V7)hHI8rQn@$*sG-2yokSt#9$`|i~Y8(mP!d3IP zy0CTB6f-$}wS2N8a6PFKJl@vTp-Q@f3kYby>>&wt;yTjK5^@Wry|{NirjWoMU~s0R zbr>dbd4O&hSoDxvl?vYN`@_3=z$aDUw1YQhzO|k>Z~swIT|SB{GzGGBFUV}?kNDA- z1YQ035KAXQZY1@rkd^?>A+$I-PHE{6!@p?S-08ABaGUz?jH8bGWQkH_L9G#~<7nG1 za%nua?PBjssM@*ueZFuw#ZM>gQFMTS^4#TQLU&J?5}5JDw%pG&G)ItI1V<@a-OoP1 zGtSy7#Wm-ZnjPpd!zD=x?~(s9`xJ!BnSAsT?$sKre~CA!I0F9K_ZtKePaV;VcaD)s zaM^FZB79Nq{?iOV<`JR7^CCo1Mi*a$zoK0kk$!irKHT}?1`XYx94&(`px~|X;SdSt z9s)m)NPkQ`b4eV}K}<;`dy-SM^tHZ~kak4CcX{fEB%E;vJH(a^PTiE1_yV>Z%=}jH zEjp+63?G$RjTZL_LoX4QkX1$fsT{Dt2%nXMlH{;n9GbPT&3F;Q_K&;@)PLSXqUlg9 zP^t3&orx~JorqEGI!23CgVRr13|i1Z;nZIComJoul2awwen@YymL7xH+fheOr`yD@i5*ZMmT_8!#vaZ2+TP}n+mgmlm786xukfQElWcXy9 zo@(f+yw%>}2dWm|`h*e%ehnod8_|`joNc7{PDC%7vO(to;o;J806{Z^KTdzAC$V_0 z+Ya%1D}df?0IwvFBzxmn)KI)gY=i6fP2!>3Hg}>>A|omAS^)bxFgrXEPZMe6KaVI* z4naamSG@|vx(6UeY{b4YS1H?wb5G)b$et#`Kfq;iGw24d+a_mYk`k_TxYfsKJW^h= zJIWYm@?r^WmXkrdN2ukK!ERFgy~RWPl8n>$h&OJ~$rEtQe%Vsgh$=ZWCL-m=7VMN! z9ptu&ih-2SICJ88^p&7?&+=}95D4m4YwjsYNZSyXchOx>QF_TQJe+#|k^d4%;|y?j zbl}QVa=Ivt_KNUDx%*EufDexdRh}1NX`&%;>mWrD9~<2MG$@2t1~Dgeku(eq^)H5O zKhK3bVHE1#7zTlUPZ-rnGHU9u&_E=#63XR_OV=RH+*3-52ZSnGE3z{ZvA(E%@8ND@ zEWWUmh=g)Umh;$ojfSprBH@B?)FKaCnUwVGd|v8%YXDle;r|u)xOP;?Q$AH7aE<*Q zA%i)w0KS~`Nir&#M&&MAeId<0!swq*xW`oa773`7MUsV)pA~;1jz!xmRf#apGD;Vz z^cGLu5wr(zdoU4L{qvWH&LW6u0wgGh@_Do2%gD+LUu?9*;x;r^u}=u3nwO~tVfeG# zM!wHvwtV!e0{TIBg1lq$#;K`UL3rLUXN$*i>nTYnC?`itUuT@+A3sPg8$OHuF>cz? zxI7v>Cum#q7b*(IE5iTG{foK)$UP!ddtQWuX#}NdVfY2<#3GQzDxQN58QJrDFc}!_ zP-&-A`nucp;oS^=9AwSv)nNGPBqI}30aOfE$-*LeLk0m5``VZf2m=m?*sUr3qxzDV z+eW&anWf2j!xGG)d##oIR%#)a;9%D6_Xm-s?q7Ii`FrqtTrstV2IB;TvXOd#Ea2zi zs?9w@>caPRD!Ej@O*E`&N5hP1_dpM+-Wp|R{}d^_}`J|TEQ{7$uZUcdkLO{rxxcliM( zui%hXG%(t!zoSiXwsac@@w=puf1TmTUXKc&aEX*p>3q_5^Z-WKJG$#qsa<1{eF4~5 zXpXsPkN;0*=MsC+rITjz>r1`=o%6dlDpd24z##hsdy5J>^Y~a(GHj7&8SfKVZAS^pUn!()<$UOj(2Y??V#Kmbjvf ztE92wC|3(%_Dpo-qtVhs1x<6*9m`BliHcNc(dG4u95RZo_6mlBqkmmLv_~QW;(nu2 zkvt9lo=sEk9-)O~1yAp6RMUnn=Pn%qAsmt(OFeWA7rRS0dgVpqJ9?7lFMp!0?WI8% zh==Pk@?Gf#Zn3j&CdzS7j(S7;P;l-`;6*4&7ii2L7yoJ_zJ1@^pVLyL!@_jq&eK@1 zP8D7@47(0MIswMcOQB4Rd~YV5;OBmz^XKS2+fZ5oPhs5X_opNwy1Nr+4d6pmmj~rf z$ji91b~+xpge=)KU3ndAqAL8X*X`(wa`&HR0E&+Yb)FZY*XqnS-K(5pGP<7{i{<_N z9Cu5O1DV+?;>=gGMMmGG**I1^&c+G8IoMs;p9CBCDNsTMUWKGyBBz_#A!oj^cu2zi zlP`QajmT_Gno7!S2P*cZ%{27h2WQ5-t-%mRfC|=a>1cN5f#q`>cfp zx_kzN81x(P%F^5Sf(}U1JJ`=vKm2yAz*G(;JlK%@d@Ec=RFgW;#*<(2-4wVMy&b`* zHe+9;PV|UOy8kFDG#q&XVX^Gpw{B+&3H19CN^wP=9T#!vS~qdv6P7nWQw3?=(%*dg zC{GXhk^Cs<2h+CI^?HcXKx~t)e?+atg;B$bt6Q{zhRE{Bw^+^LhNs+^v7Z7GY^M$u z)A_OVPVoQ_FVnYH)w-8!lP$e0KQYPo_09VKjQz{H04O~o)O%ip5gbVxG8HtRbBdLr z@XlK)bHX5}T7Gl-N_~Qu_<3wQ&J*A@gLt>@7vEH_o%&)jcQ4@Xc)iST`o}bmeem(qkcgRi%43tNDjX+n^0U? z?D+vMh-Y!&k$yuFr;c88FGy0VLXW@O2+4gH%>@?tt<&3O3mjgMHJ`K3E_x!4n=s^d z+t`LEy{+y`U>5!;vl~((kEHL;BPi0$6WTJt z`l{8U<4nD)SgZWyP-V6~A|aEI0>*fWW@@J3JjxozIA}SkeJ$I!X*#WP<0%NiJvvA~ z^24gEmG8w{tnmDbtO3Yj(bH1F?2QE)tF`%S#498k zGK$1LAWV{%kf|ict#OMH^fb5bfV8O37N|+=orU_0A$DUTu7qT;UufK(D#m%6PMzNJ zCUDT`b^?-@D~k)+dx_r!=ASd6I{@gsGey0(@1#kbw@mA1#e{id0eqJV`lO}S(t#ie z3}ioI;5yeERuU;XG{{iZ#rr@AZ}HoV&JJ%=x-iq#{h1IQ_ctv=@yO|J-%3T82dw%* zfBG20U6qmkG9qEYsVl2+LoONIv6j(jdhFMOu0yp2)>FC!*LzDk#TvfjKI^AW-OcQS)4 z=@p|p#jb~I$zS1(P)uet|4wou+#~eaWE}nZZjYjEJ+d!PvZY6DBRiw&?k0zGt~{`K zN4rkAae?lLS&EZeK>Db&g|97D2Q-!8DiL;|t@Nx^+=Al11j6Odvb6pg^e!1-rD!%r zlpqNYAr!x{^xjtagGJf%B5jOR0(}KmnVQa9Ed*ei&|0zSuesz~B#Lw2yuJl|t9wck z{?gG|MF&?|BU1oHM~5_XoWh6)8AhjMtH9T^ZS%?_eMR`P;QhNBfa)VcljlXq7zdnj zKCbLI@jlQY|1(+)sK{POM%p5(Y%GB|61em+hCJh%*#53#-7Md*Cc~(1NBnP~R2pUs zIIrrv6rl7s4>x8eIuK`$u#dQr{|Jzb5FN}gRZGsrlKBh)Sh(HKRcSb>LTW2(Lk@eG zQP*PXoFrRDi9geAZ-jUyrm^1^_0izo$C&k&(GEVd4v|W4$R}q%Lzw|(#9{diE>)*A zuv)J$cygdSahOk?;xwv+XiDyZHbloxU?v8#zmEvKxjGf@a-HuH{$M5^`Bd&4zpx?C zi`X^3E)in~2X-fh8}pN2&Z=5E3-!ZYt&UwIj_aTzU$F_&$Fv0J^f!KF5;3HBKtR(n zCr?56bH|=qSxu8nz|ypaR>y9t+qPE8u|Su2!MZs$303U%(`f&m`WLnas68SydtQX& zLEN6f0NZ-?&W0>0nM+_<-d2Kps zG(A%Kx*3&B@<@>fgnkkn)yKAP1o)t?M8YB37CT7R)4rT570x9EjxHm3^SOcc4s3gu zG18^3Hd(94>k4fk=!;pz%9zUqp?Mqw zn&_W*)cuf7F#8#2wD)2QNMysaCE+7lx`uKAA&}r!d&z@NyvobH_Xw{*T^Y&xd(3U7 z>dDJx#LbV1+@&%;c)1o{^ig#P+e#J6k&}Zvhl48mW_nlpgjK$eCU#x*1>Ty&%h4I+iX4L%uQPEz%`hW9>OvWuI1% zhS*4jmf@y3h8wfi$QkJ%8G^Kw;>$H1$Br~;QCpiL+z?Q z_f#)|j;EXnzq_1}mVAdqPOWkPwL)Xw>=^>Lfo8-2<1WiQ7cFq`c}4iIsefThfW{-j zkI#!R>MAQw6dXFRve&OAPqunPR>5a#2+awIlC06sC;6wR#329OTly8-`BM~{&`oC<7}*3Ul=y+yn$2v5kGfv&VTDO2wCy7bJrM+hOJo6zb*fi><`Z4ivp>iaf; z&XE?~ySZAayEcsoAcrz!Q!gTrcw8d`8U)LlJALJVIm}0~PkR_M70&r(9Qq!idGH*| zG=Y*VR1S=sI69j&em#6Le4+A``H+vikj5Ax!hrYDL8AXDP}MZudviY-Sr>DjzR4nk z!dfP)BCZ;xrzD|e`#Z|fo?~AGJTXTk<$=ygr|P!OV`Vd@-Zy=C3^nMl2w#}If3*Y9 zd_-vdya?BM+as`#sl6q^RlKV?#$=`vvHYtF_8GA;hkeUA{kI@BW^4VT=J`OCv5NSI zRrM-}-+U{vxBSYeYmkvNIb!^fgciF~UF)le+{UUD_{=W{c#&#O|>6*s?)z|8(w-j}eR zP?}EnPw2UA3gcFzo^4H)7M7{RgEbQnam{WdRR& z)QhA#B0_jPupa#>2w9W!E6xm-38WSH9a*7Hd`~zg-p*8>1zhGibd1ZhW4|K&*VMnT zB|z&Dq3!b`6yC%U@9C`%U7t&(>aP9R{}&{Vl{Y8}CI#e^>4jXq2YQI4z=qNw;cdO`9tI(F4MEKvX?s!9ayqmamHDX+%#m5(7ntEsdKBxT0eN zWFed<)wn~5MU$7dRCpo;K__#zI=QZ*KSZD_TjnT(Fk&ZIcHft1 z!QHzJwRX=s@gb+fYoM;iKLHJ}UGWY6&}s%m-G&;zghRPXM6Mfk$x z{i_{-_9H_3=S5hl%(Vs@&13XSU@(xk^ZbB>@9j8x3QWl1QPK{nH!-uMfJ6>D z(Ei@7HGIMg-tqW&ImW^sB-U9iC-)z8y~x?*=lv&f(icFw*Q3TI=0CDBkTW^1i*~ss zuJ3oWyB4fu`nAxR5bjY9<%mAu`dDG{ec=ndp(}*i0o8(|V8o>Ie`G|;{gVTvIjhX< za#rM3%xlxtiISOID+@4wJtYY_cCJfA66Zr#!qG(nqy_APGAj0>du8Z?mK0)5y~18^ z%=~NUU)mC&^N7&#c@erd9RclI8X4O+O=nmjKFI{%a~q8wlCX?j?zv`f3cl0T7_hKv0p+Z%3*FVgtVuOd7!{|GOX_q8&02SQ}nn3`ixEmJD zK;GFDzFuyZakZx&rTdB#rKtQZILFs*nItz_5g1(a42Ns~ZNmjGeJ1d_DNvwsiF02s zUFyJ*z`f%UhR^W4TR-@v>v1?i{lTOq$qA}1pp!p(Hs&ztbz`=_V_=or%)A_C*p3K_ zQ(j59tqW51v`;Ve5E$}PTVaxa3PN_`J($)D6$)Ns&uLTUjH4~o27((qPUE|8saR;1 zGv=>J_|oY8uOEQ!BSNR=MYs$1`>GZ3eHb#oz7ujz)nBVfX5tXwuNq$`1#){liAMOn zvyLPw5EL7<_0!&bzyw+T**2B|&&Tpsn~EsqOwjG&VZ9yr^n6KduPuDUHzlymRq{P|9 z2@R?Kb8A#dvBaDOUP?>}P2+R8vwIhK{7$-;6u4(rh_^Ow%}`qHr8S%2wkSzB*>_Wl z{LMZ)L_xd1|NMYETNrVfhh{1#UdC#Cehm|8EM5^4p))S&=lQ!$$sds6bT+IMzgCT! zVTgea)s}9}T2mNMAOd~UX}$oOkdihaitv9!|I$_fy+?#D&xWK70VGT7Tg~5(4>ZmNx8V!jp+K9{Aa# zt9tOujNmphVgxYc!r1Pcm73lRXl0{L7iH`Kw`KAx3$W-MRE_8*@f*-G(b!k_O57uC z{lHqiD8Ftfi44Bpbc)UsiAx`W+6+C=?^he4LgOFG`R&MhwrZ_=F|r9pRStwx=|r(y zO`2cVN6b@K{C$(!eF;{6yFf?}GI)HCUMEfFahi#Sh=}FM<$&+Rj&PNf!<^Pk4xuOb zaX9v1A(>hzg_3yUuvPEfyh`!E*WX>4nq@sD33n<(HFl%VYdw?+6D{!;aRP94zi4aS z3dhH-NQN0etiB?AY4rZr4?zDBq1*E!bokyBLna?u{h>0`aB@I7ANU(2Rg=u0(Co{z z50m5Qu!@D3#|WN1F<8J8bUHl>;-DfpNg{?RzY}GHn(*NXI35tbCFj~~bpFyR3PYE~ zj}l02Upr$;Isez2#XK%aP|CnbSR1RK!^|zEOC75kCa$1yPK^DhSJz$RD1Bk~+d{JB z`xvw8Xd{{ko|i_~mrE?(v^Wrl!w&)mLP*;c6zI?u`dUp$pHRJv35oH`k70ML%AsPT zyr9w$;7jT2x8OlRT)K2$VrmAS=zwuZ@=7$DyGg+WFV*zALL%p?77$03{s+;jftm~$ zT!C2*xhZCA`bbi0_>0NKVn#(#P2x`OWtAMO(o>SKT&lRO*xLH4`mJ*mbcD~~Q6905 zqd_tw^Ff?gXA{KjE5iQ`{YzT`3?31BJTF3Ky6}C|iIUZ7B|ZsRFy5W($B5>O`Jg$bxRM5v5DAheQeLfez2p0TCu(`AsWAEFD2$nh-IAJqPiO=qv2P$Vj7 zWx%qg)A*wL#{%-VyMR6o-hBy+?cB?@*?yB`%QzLm+LE32&Q`;2d&0p?yq?;%ciu5Z z@qZMYtIj3sQ`<=*uzV*#a&xyh_!|-wiiXSHqkp4#3PLh@$$6K$FMjUHj*HOh{G6S7 zS+y3oIknk#oiyQ~8>?_o1WB8d7>Exilxqwj7W*yA(BOYx%7y#R)Ec&fdKKXDabb$ZKOH^!; zu2Y1R(1Tn>0`EUndh+*!&($Aj+=(_Y^$#LGbmuC->$jO7MFvednTnH4d}??ZscKF* z=a}6)r|)A7h#|hXB0!QfO0Rr1eDobE&A0FvT7Q~Pm(7mX-Rec;;>mox{Iav6p%~L~ zB%xDEWl1$wa$IMrBKaO&GF8sP_a*c_|Gc#c6&0<~SF@CFV>?XT%-A~@hk)OFB)Fwx)NCC zQCG4zb~I=xna+wUwYpiE!X?5{59p@%WY6S-L5sl7WyiL_G~3d&<(F(&wml@_sS^Du z5#SqEc~`yinQ&VMp_K9I->H)^$^=p=w=Hlv4~M&NjxC@r6{FOcrqcUdOQp7F_`RB! zQAwJo*Yvd(_c3PqrR?%%)To(7#P8#mvIUu1xgAa1&$QnI#c4m(e~;cH91MfkIzUH{ zgxBmc94c|p#vx5UZy0VihJzm8k=*%bN4s4@9gWX$K)x5D`LP(y{ent4w=>4xBfbk5iSg%GmlU%svVX(lsfANYtgH(BRNMzG~@(JU)Iw* z)M`pS?wGEnf}QJarz{vkh4aw{#S0VQ>EiV=FbB8VKNn|k{ZYSr%61fUSVbSLh_O#} zFTB(n1UbP9nQ}9++vsm$7M4i%WI*~W!v78ZOIra<9uWpSFT$xtKiy6`$m}w!sTxX= zjFr*#Ht;`oKFJs(M^f9Ma+^>X(WL0=OKBIQ@#1Mh2Q*ZN{A$k3M?B(x!jxQV^B^A( z*6|jc%s7rgqJWRe3Mg^aH=z5SYSFxQU!KF)T426LKPxrJDbrxt75cudfr1}kkQs8RKeT|QOT2~0FyA; zt=WV#cz$KPj{M*cNie3!kvJl0nhAj^kP9h1yO48V;;o!2_`!Zic zf0<5atCC!;(n`Qeh}!BWW9?tHy|;2vUju&c;&=i1Z6gaIQ)UZV5ITkEl{_U0`z9R} zNtJ3j5};QW_<3&xpeD)}AcoS8z;jRD0L4XpdPVrZp?_&BfY~F$kmp5ssHXt*9&UE& zL$Bm!q-4_wQ02AA>L^sb#^-uJK|;+P3|8<&{4c%QsE1XUc!N$*Lp|Jg4h-YL4C2Pf5bn zzcg7fFzKM;{uF^Z-O8q|%_P$@PIP|$!I>*Y`t%2{2wxh#|Mdefe?%Deya@MIlP zzFX6{%6+?GXp+sIH&?a>(HuaEWb#=Mb-${18^ZnS24}YnHLtgskF^=s5%Snsl)Ig2 z{3%JO4J$SPe(f3#5ZxsO`%A^oz%r1v{{uPQA=}#?r8TSl72*Ge{-vz|7LN!&KQF>R zAo$Zi-4#LLMM>u4)Ye29>W zE&E;*l1!Xo7iymTkc9Ov&}JxqIfZr=WEy~&lhHm|{viRlLI!Z|?jNHcs!oeyuk%mW z)e-!4vlm5C5h#`%;a!hNh}Kuru&pC?g)hHH_)B=iuq~y5mU;VDH!g}PN2#GAKvQSm`x z!F%=ZQxLLz9d<1cS{vqVvZ&dxMI9||k2Li`3buk}-Q79hysm#m_|oY8uOEQrBf`k% zMTqtN3-R)oQkR6A&;B8AmQGlOJnYf0+1TH4k}#+Pkr&GtTaUeU*irdp+$P=W-`07T zC$yGR4YlQlMj~IT(F^^6a4*|9xMNK1|Jb{$sH(p2fA}0ix-!OS-!| z6{L~w?ruanrBkFNlz7gU-xxd}FaO-Y1$S%R%rP(KYrNOm2lj@9sFO!VF8E#g?(9Zp z2bqGIMw|oZCv;}b>j`&U6EYkp4zF(0&njmdMWfrOS;Y7=A>42iz8$Qkz!+o7$y1r? za6lzo#pP*=_UDmLv|(zmcJ{=4+ph8@EhC3qqM{1li^SA}aFHEH^=p2=1{d$<6rF{> zsYWk8S)bwmPPCZya+YmEL*rZhC|x^-Tw4m-;{!kWk~$Mw6IEvqw7JK{_*+g8DM3#Y zKbjql@0au(V6uVA?_##DFa@dlaXbcLwy~qryT0>!r{F@Yediv6EJxI>&{qOn+D#fn zTj(LCF9`qtp?_{GfYk%S*r!EkU9dbEvW9BGdRA6Ipizdwx4#pqLcIrJE>h%t{D(7u zRSAv!_0HTkY!Hzw~=^-`{SrCxK!y^m>?ZrM;E9R{%}rK zELJQeQ397bE~hVgN&YEtfBKX(cTl0iI@z;wiz^5=w~TY7xpPm$Ec9F6-dRHcV@xr< z7zwBHR&|X$$Z&YebT@D-zcRbv$TPc0TkeSJz0G^a&25LI0SSdb+~WMGb28JD+l&^@ zUvR4GZnyjCPS(H@H{9J{%RZpl2J8G1X^na)>z~! zkaZKC6z6x2;__b-v8x;bRbvKm`urM@xGuPVYmt;QTV{q%-eG@NMc? z@5C*3>l}M|1NU>2_n&?M)(;5dpB5o+!DN7^uVlbt^qa9GT>qI9zhFUdcf*{#{QM{% zITIdLzvj?%jl+&qHDuGC1{HJxr_0bey^L4&Y!$p5M<}lM2xWQLmKFr#_-RzU8auEj zbP0u*{cACdN)OG@j|UQyL>&*%G%RYo41r}JkZ?Ade>1UcxEAHK(eLrZN|Lj-00mW? zz6CiEOuj*}a!+@vGqg~SRS5CFCNEL$6GNG&=aGYIBqT9^4ULhK*OW#68x=GXyLPp* zj+SB4=gprwY@ah=5|*HY>|EXiw!A9$VoT3?Z(OQ$w7VeQo42_?vJBwkSXe;NSl$Ar8o)l zCUlXqpUyDy--#s7FRJqKeWj>mu98X-b!tJ8oT53zNefo7_qhJ`bAyEX4cyvkT13qO z5TW=FrWsAsU8};xq2fab+ek@S&)j{z*aDM*k-xbiC=)oW?T`jUNr`WQ%vku$>An=Q z&Il1(#I6mo>9H8j6u$)`ESkquN*uG(i}kJjI6A+h@)v@qxtaifgR^Y{gG5tm)T`4e z-u1Ptt5kYVsy27|j_XsP6=KY<|*a}GD zzhsdp+PYj8gjLV=?WER1j9xlx9Z{!hTdnqM!Q$cA}9)#20?v>Fg0WPcNqNvxol5CM-SRiWLHeI+Ly$rhF?6stK6LF_(y-IH#4gmEQ%JUU9y{>JqxE~A`gmr zu9bve@8SQxPl&u!B{;O}fX?z=6VY}vC){?OpvU1{(r1}s^($)cj2kPtHDb(AF#=BS zK}=RJw7JD^jMTrOW4#qPCPPzSm|p=)97pzQaP4>E!b;5&jnE-u;_OL(NWlK&s}-nZ z+9qhlh{BydEQY)owbx{h24^1%C+_UlR$BArP|%o4-sjwU{4oeE!8QT}pz_nxb+hT_ zD4IvqQQbyrxPG}NhnA2XU3kR2Abe)>{?iV?{sCe7(;`&zS9U53Efp8j-zo7f+D^$+ z^7P)fh!BF>5jwJnD$ssY%xZ+Mnq`rCE)`_?Q%WR@-lvn+e|A~pS0KiZuRkE}5d!}# zMyg~bkuuXMA61-mbps8nqCT*kc_2Xlv+5U>wEFkn>q@x1@B4PuPy6D&?$Csk%?R&U zFLr*3;#@BjG5LJ#P=>)p-6Y-p9o(UV~XDGdfd>Yq~*MG^#qf)2#!h4 z_WNV@)~0Sz=Jj7|NKdJoI_Ju2!Y`=AlTpAD7>+R5-lwM9gCuCER%bb@JQeN6k|#Og zR%jyT!;Sdr>K-J~nwH;jeDb^|vz>GQkV4vo87wvHCU1$Ws{3QVc?`l|?q@Tu!sa$8suKE;z@0=8o`fIZMW;QE-LHM7ke`ZU7!vn(4Pm55arKu|x^VJOAOkOO4 zFNCAy-%HgV+E#mgFOhkCjuq|?NX&aDE17dw~_W{?S)tr`)-m!C%8j(_`B2h z2xEn!Kjuo+PdBWXld5eVgHxTZe1xLE1yS+#T<>~MWv^PjfU15<#%}pLHB&3TiMVMw zRv#bzy)!A^Ag>R7{3h@?3T^Z`^18nutSlYklQ)uc@2w$70>+*|im)WsRQ}c#1ziuc zT5EuwHdQnD88wGVi8l50j`sQ3ZX)KWp&6i-42bY7UDBUIr;ErP?epKS*}J|_CFbuq zeL=lUAl_!iFo*5Kydp-;Y78F+Ba4<$c9!QTSxq5K?srA_{?iV?@d07x(;~#uW|}E&lN`bp z?uWBBtnE6mUE86Wik#gwW`7mSoATSJajsN?q<;-|L15OwjbeQ6T$aH(!V+X2(*c(7 z!nF4OPRMqQujLANcb3=4ZjK3JuJ>sj%X+%Cso?cRSFSp!lL?KPpC`SGASd{b{U2{^ zh((%0x04(VHQeA-Z5=X?5!!$V>)W;A5=hpTY{qckyw(;)JCOF1`ccN79A16V3wsa| z%?+UdNl!FyB+wq zWj1~p*zz^@Om~nGORLL|h_NkrH=(texanrE49VXq)6Ts~;ViA-V9XnVLehEE+tzy6 z`7bkd=g}Lb3MkxX=-$Q;aS?H@~Qmc=W(8*@&;x*oD`}L0VfV5FAvB3JqlWl@dkb#L3 zU=1ao!+f8FA!b~J@MO+d%pB2(Ae)=VeS2n1ZyPuaX{Fg|zaZDepvflxWb{5(g><5n z`r2XW7Vu&GpsgpaK>4_W?HBkgBQVASVHQIeWL71yNV>=Q2xrt-R81xJ$rx|FM|12s z*_Xl~Pqg%^gm!W^>u_?+`EVLwTp^)0#~Xu}-hNDSV0a@1M3`iD)&`#oz5;S>$d+=G z66^ErY(x~COyZ(-ZKh$StWBkn_{&wd$H`%_t21w~F4t8cdu8&sD|VS#qO$7@0o2DF zM{PObk_?LNicv1B$r{FZ_d+Yb!lu4AgSQsYV!$v`&Ur!j%;f#29f0!#!kni?hyfo~ zL`i714%LNH2K5#R|A6W1^}4;kvItddjp(&(4ibPM$sstlIfbfO;xAG6btOzDg0W)n z`L7%@BZ5{5&wGT|%LBG_XM=9`)30D8>l2ajc6TfM`*pmF_`NReEcd`*@Z{N4f62gk zqcouU9UmJY9o_}mN^Hloa7=lMHin&9Z)2Dt#WQ`ytJaxGK03jBXKj9!F31wA-s{IeY?GAMP5vsc zL*5rk)q_`zNI7tS94$E9UdKG_C&y8s*;Qk~!Ccntx@mA0*G3JV-3zWIWPgw4WB0wl z6}RFG%j()FnlIh;jM!TvST0mJTj46>D+pi`3bidBZscAa1{#v=2{!rJq>wB$@AbNj zMu`8;HTcDo#PHhA4)fFYrvNQ*edR1RPve*a@$@Q-b`kwB$@KC47lhAD-hbKwxI7>% zcv^%7+7v~RJB&j=S1<<)BW?sIEJCKMNMh4(8t#-ud}$RSEX-zUbtk}A zI*BtPIYGx3lB zJ0i`xO|ORL{I{Pi>+67tqR{qyeanKrDYv&-2*F9f7vf_t|0ob-_acYiFGIhf^wDuk zRSuJ@i6MLpLPxEgc66}J4a-LMs-6*HFUoiBTScU2U6mW}U2F5XC|(f$XX>BX65#rP z@axkeEX**)9m^htcR(~(SucSnxr^ZKt`@8am0KfcArtCLmk+f*@pRr8K34Gz;bm(K z{cXvtYc}N8hvwH=oV`wPaF4LBhU}f522KVZUcPi*i&m~q?rc8;gpZ$Pk|^lm=eZ8v z-dU>Q*-s8^V1CmOqH6U_cnt_S0_D5JudIuR_ol0Xg8U4lKz23!dPBf?)zo+0i6@4B z8i|Do*PaOS;76;#@Pg74P$;ShTMn=je!Zh`mQZ1mSyuX0b<69f+Ph=X(+5mKZO#u! zM0S3(<4*ikrHkwXiQ~x-VX^G*YzJKvNZ`QL$=Drf2HhJ@h=di>MNnuV+|Lb(+hcGf zvlL%X9?gE=dkn(2&J(2#@PvVhTmuv14eE`{?_+=YQX9dteco)4v*1pBLHNw%{ihv( z+XKSlr$s1iQK|8He{lA_LKjtmB&(aF^~v@3^Yq$}u&O;`JRi8haLY-%2(jt*(z=g1 ztLDcYadmY~tOJL=-wwwLLu_H(-w92R4GE;;vQZa#5%u=}g7dM3_7*`Og=q8l%QB7q z9qUAk=kN{w;S^##=t>Bqn2^-s+hK{HnQ6LK4{Oe18$vt}@#<@vr3iFOFSZx&&ZpATYcv zQ#wv>hTjyUDb~OQ>KRa%{2ZEf)%iQovjhu?dg59xW~TZDofatQJdGw%l+>TB;>O3< zQ~foO^ptK-KfM_0zDdqX5Vj=;U4sqiIRV3WbT+46G8WpQdHyUD&!s^rSi5n>HvY@hKm@BX{lb@3ix-$91te!gEQB z{R4LiL>R1Mu&28?1F;p*BG-E`Qazszk^(Oo59&7ej_ot$vm!KoQzJrG?f* z9`vrfD;>-VaQ(OA#+<4`q3bb82m-TfQ*cBkP*h&~^SHErQf@DtuY5S#>P}W#u{Aa| z?FHd~rv8~N0iF*CE1wo&*`fxrZ3Aue#U0e7(RZ=9yD*P>@?i6Y%rJKIYDFUf*|}LO zOb57z#oyq&J*)}R0n)E6ddq+^?ng0C$_Zs}7$p*=t{uw;`ERFc`AB@$c9Q{ex zjP|&vOL_B5bzkG8Zvb zK&zJ@R-G`RTEmZEEGJ&AEKmfl*EK=&|zLs`8q%0F6y_?5h`br73i*T*tu22ie? zUM5;Kdn?>4?0euaq z5nB^j?PO>I=Un}2+es5r9d&nEs}piQieCicj#QTSNqEN%wG~%*fMx3o41sMC6~CkI z&4}8jv{YP*Al_>17P^4)e27EUH@#=lx}%OZ3nhV!VKIw-3=(yAfWb2IC7_^KvTsfAIReK!VAc_-`ktXb;r{M55SS3UX?&nc%0z_Fzel7MG(@WX4KTZgp_=8hzIE zkm8E-f64ssv-fo%~5zWWUt){1^?i<%E4 zC|+ya`yzGiy@bZyF+FhG9eKA(D+m4m$K$Bq6_{t{HvlZ@u>A#>NL|!^D}>*!XxD{o zgnf+(y9>P4ujNSemn8h}*gvl|z{mSRVeQi@v_s#PjuSllJke)IVKsg&iO|mc1FfIv z#CyeS>2+BRifn|$Q5^1p@9mPV!gNx7{wp@$j1SvvL2}zJ*BE;kQTGae!p;_rUt1$% z`nl~=i+$t?Vyl>MA3J~F_FdHi%@TwYk*pUb{fDWs==AvzI`%YrtYjeijhny6&j=hL zbzLtZpu$O$!A;zZ)D*meU{b@RBKIP<%mz)!T|0E__FIh7l3+8|*dV0>$~UzXYCsk^_;kIvDy4)NBR*$>$1hCLiZif7T8=_keZX+F!l9unezCz5aUHJY{e{WXjR4?Lwx_3DhMVuo(_AEqCeGm>$OB5nzGfCrRq^Dv6%wn9k-r-Xt{d@U}B9xjUkIM;S@m*cC2S zB*XeI*M{HWa{&p7Hpm~@1~Goeot-}=5lFnsC|NS0#9Vq&NYN%)S?e|DF5iwFdb3J}7K_T7^Z;6dOjMZbbA{g?%wN z+f$;k~t>Ad%WgiW7 zn)9&H+fVrGOrwK0IRRQ|$lTPvH*!0Jc*oqnEn#x70h1y^rY*D0l^*jL-&hNFeasA@ zLGKmP+9;l{aecOI87|&nGZOyESe)km!_THH>nDkILDClz%zb9^!9kPhPUxsqUU}92 zxc!n>9Yv%ROH^KD4z<6NJZ=F;8dz+?sEJ0LEVzxHh*|tlP`ZY)xrLcs$ z0rF2~qqsGNCVuam>{S8T@Cp0r>boC~SRNg>BiMydZC7 zPBJtWI?E)e5Pe5QzFrG|;QDIz>Vn}MFeN7xN6^Smj84EWMoNw%6C#wVojpSxh;9)G z)wpv?PENjMkA4& z`N)|HTiq5wbi(p&yaFFz|gFh6BCyu`EKekXdHy-Bn@%b_O1u*aGUE z17oA1SPHTd@%`V;V6BF%93n@v5~Rc*SYmcE+Z|N-a_#?w28-u1_lfGLmNk5(H#N%F z9Sc#Yrb$LgrAz)^oJsB~q-0rvQZ#l~2S`YL)4JVok!8U4bDEVtOQeaT-8e! zE4CNbJQ60@;^Gb+fW;Pd+bjO@B<@kxR~?IiZn-hK`>|j+Jlbh9a{Vo9tpw5Vy2F-5 z@Q+cbLdj@OPrigvqlf4dp-z)lY8QX4uRF9}a6Mv1yxwg6qVS)=e^wiSPvC>X&Zkw# zHPg7|faiq_5y|3SqceOpa$|J|z;SttQJ;Pkp6MeXI_2_pLTOG%DrPHdt;_9aakn{Z z|G64Vj@gx#Al#q-`*i)ff8b9r_;5Dc9oy)P_B$0yM|A^!&*3I)?>VO|W?OSp7iDr8 zP2pMMowE|z1w3LLF7BQ+nYVcD&dovV*bIfhEbIzIOycjVD=PncpeA*6yD%XBTM{9# z;j+=Wpo!~-_7`V}rDoMRSwgkRc&DUd^A?(E`SN)!xr85R?i@JE>pfrzXZr7*1B57@ z@xns`fw7-BOh0ZWgAVAJ?!{TUcl@a^*6A%PLdWR6)~Wbe*~d@#k$lBLOC^GFfQOe( zS_t0!!($XWq$A9;C&1^&j?Zn>_P^%Du%YwPklFJE__={rZH_IzD127%{%Ho_6ZD|4 z`)L)XI}?YhSy3xxUsx)N7C`>8-I^nzOg>m7auJvOnGjfN&n$@wrkre%ozC2U1m&na z-l)3Rr&^0m3@d=!_8n>U{zMu`ztec5Y3raexyVECyVCh}Gp4e1ZL_?6CJJi53ib!^ zBSeRou?&9-&Rf!tI-a)+(O1#54Wl>vc(`N}1rn=3LTVoZz-jN`hinNYWk3n}MU9C+ z2wX_qeaXwJIZG`MoOV?Y+$ax?;#49>a?S@VlC>5&z6t-)9)~=JSopWnJ_lH0K2jq^ z;`jvS?GW07@PbujA_zUPrN#7lr=}{}sMLnsOb-M82_D~!Y^`0!+lJ@y{(8yTEZIij)}bN$KWHmm@<6JQCZ zw3B!S4{`Z;!4={w8Uq9->Hc+%UlJ0jGQ5;Us0SiA?g@~UO4<0XDJ>xOcE$*5s(+ZY zLFrx9I_ll^Df~_!qma(L?=H0@LfVV)!q8SE0IE^3Pno{VeGxXg4jZEHiLHK45BhwLojkDjnup|P#Z)8 z-V2j_Nl}KGdMQJXzb_H-@Xnl=9}HebDZqadh9#BJaK0}HR8)JF+3FYe2U z*Q7vSy1((00$wwaRQ&(-MHlzK+RMxmTSi`7`t+5?45;HQ=S*W5t=TC4Gz5cj%G*wS}+ulW74&J+nB(iUgh z@DY3f*j^D-AWjb;HsLzG!+9cz&f6`=uMzHPMd39%7nvh(C-K9zwCC{GTezftpIn+&{vaXF#l50L_DONPin;q|q##2=c=jk-#QH9BCG6sN ze_dF^&V@aH4II^$mCTL#E8z=d(5~q$Gu&EGF)C~*rTk%Y_DZMjNfMj7gPn8=$N>_X zr@O_ZqR2fc7B)vjq^b_CPA{hu{fU_`TUVh#zuBA0xD?6|>u9fm{4+GmZp^7Y$~1c0 zqC8Q6tmKcN*q2Z@V2Lg$#=m#wymS zy<6eHIRa2L*TTVoW3<8HEI^q5JtxmUR1z=N`kIHmV)4_nr(A~%DkKK21YBcvkeLN7 zVhVU7#WTwi=ZpM(GN2a$g1<)EGWY3tF};zHJ2Pe>-o4I%7SH?2sm+->Qp}L(_RHSS zh3+Lz>hN4I@+Jtd2^qlh|NcMmI<;fZbuY`UXP=MYfT;{!t>*g5n>+BWP0?OMXr~+l zheCH%l1R;FwmZF6Hcj&!cq04V$03lfG84N?^7^E0kIBLhCTerUXJk?rxp;0+P>6== zp_vlz)ZA#Y49-<1A>@9%D11)t{_O?e6Y-#M{Am@cPZU^=GO(gTM$FZCr}yhkmo{(k z`DdNOp4k|GNef-I`R>G*UOoa35o5bXPyt2zTkJ*aeE8)i+z0WD@49Il>omK!%ndG$YZjwP=Dv$B6Q%IA={}C zJEU+1y7t&?;urlR!W3;&(9@$YFAD#i{O7a-_(VP^oOoJ=z>n*?UE6bHyQ3SQIE<5} z{X(8(5rV0;M`DEs{`^o$g~P{`nbyM8%BX7I@acFOU-FyCUzTb1B4Q8G4TgsCwfiiT z20L@uoK85V3+!2z_m?*!v{M%+SLKV1uTPNdtk3={5S6~#4{^$(v!HXdZazK&mQzx= zKeb|T+h7frL7*xIJWl=|?A#=d){K=JMjYpa%$31H*BZTXU3Xdf3kKN#q}&B#RNiIt z$**%zpBYkX3sxdqi zSOt$$^R*P#l~An&h_A+(vr`@K@3OqbUKBnjcmMVR@QHd*IQg^+?<$x(A)J0g|7rYT zI3<@~s^6o3ZO@C&1W_i8LZ(|!C>Pv-sI!HoDUieRn{>S%TMcsXr$iOOCjd!GwFQ_Z~0)?3;wwtSk^P6dWg$_lH zS?`TYVn$E^Mi#F>j#H1Ek6*b8mBg0+6+*d~#yl_!{c4NM%)D_~7HcY{3MEx7@3_SU z<|5#J?8^|!q9m+nLWOTN`9Tog{rrZC4OS@119=;;ie(;-#od#;C0Mwi`xu3%%v8>z zKS%92*or+g#m-sIF!;bjJgFyOYVwA8%!0RH6#hH;&uItniGENx{j>@#G^_RKSvtI3 z%5lur*?${yr`I;riw1|8tuc>~+L6Xn+A6KZj_VCMu*rSSX-@92e67t2yMHRjOiN{I zOlxR!uW&vB)8o1%{kTR9a-);eK^mOW$zuSE=mV}S++nhmq_j5oCRIrAEde&W3++b2 zYwM=Z-A_ZCSncmYF`^V40t9g^rL)|N!sq1f-(CPdF%Jr7pH?B)pThO9 zcS5>p%UFcIGy2&@h=*vIwUpGe2Xn}?JPJk`=CBRtc@TDg^3R!))o5rbVj-8A=m-l!>tuNM;W&Tk&T zTQChCzS*o}azddYZpRhS{x%6k@%w-GLJv?29XD-03|c$s7O8YW0%G9?ucE7qbIwaB zB!RA`2qu{P+0Vke=^d}z;}Uvy=hNp;eOeYRBKg>NHe@tf#(*W3Y~NAgeDA&H{zatL zbIkho^x)GqS$7JfU&3eizvv&hP(#D@K%tmbz+8GfLj_NaKWBa(+)mYe-H^%Xu)IF5 z{Fp3Ugu5nvTYT(MfZkHbc^FOQ4+8?0@|Cn+Q> zlA=`@$FyWcO|us;8W`1|tL;GERO|Sy!o=YxFvvbmZ|$`(_{9BnfzORw^=Vm(WzlG= zTDa0Ji|6mn>mFqNmQhK$J#$@GOeI!y%$&rkkCYrM^Q*N@m20mEJ*Ng(qMBrVuU`bx zz_LE?3OTU%or6m)LdBaeWa;N2iXa?VSDJ2IxA^b*i(yYJ(Q--FRi`N-AjDrGsdnQ! zCK@zDVLV15QMJWZkE5&ziw9n}zD>ya912kys7Z?jE%!EI$B1LYi^AvR?%!SjK5-8U z7oS$)o^h->1q|6b=1huvLQi-VYhewyAY&w4TG*`myB=G3*5*{$-AhNoQZ_&deUzK^ z_~n;3H1cy)ULK(C!|%os?oXuY#h31}WlD>^rI*lH;`~|lWPW2gJ&^Og$ok|%uAV;- z#&9J?QA6ieZL|mx9SigN(l2`jP` zgZn#RT+sfC$^vJ!sbqpXXH+@!+({_DZHLNMw$&#N5{Y5`Lgc^voo-c~!2y_s?NIjR zUHLS<`G+khIM7Zb{vXyf3(vT6Xb3fwCv7>#KaPXil{Ipxw1ixuA6tj}K`|4W4j&rb zd{Z%}MK9#}{+JV~3Fy}X)xRVsQ6!KeXqmObSgXcG6YXdj=2~sGGKn1?tg2vK=Dm7paCCHX!#s0YR(?8Z zv|>%)Sl&gkBB9f$vPp#ZB{SGs-JeKZXjV9VUCt4$OAQ-nRhv&0j3#wCA^Hnk zk&|#4JCEb3&BC-1JOZ1)E`O26?jSTY4;q#7M$o25;;<vEnNBpNOCcUPsWj5=_`k0` z;kL4Jc~cxvh_%PGHcv|p!Zl?}gmFvn2K-XRAoh?O7vvmOMxyKaVl zlo*}inL`yXc7-x#k52Adma%uWn}3JdZK7G5pC5poQz ztB&Q5^52V>+uoLNtD@(LcY~jo=)+r(Ewpp1iS?tF!Ui>i3OV+y@9fY207A5TBGc!> z^uK@0_z~D*K<+SOujtaFyReZV_W^1o0|yj4N*3?@)!!LQJZ?!mbUpp}qMeazO(CgH zO~BXrH8|osuKrkr?h$T+_Qxpn?<0X?bNb1YXiNC*d#4u6QZ5?E5^La56=+ z7lr>${&U&^d=eiNu05?nQs^l=^eDQ{f*LKtJbcq%T>1gOV-$CpXLk)CdaelpY+Y}$ zhAu2-U0m&V&SY>(;dySAkv?*T6XYG+rz!Z}-7BmHLADhsuW_tbOvBslwoNPAX4yJV ziLqz^zyvm7l94LoYNf_Y^1aUqH_`1Z!et@jC6?!hnrcYSS`-sY?aT%e5`o?tdeyY4 zo7Yf3mErIiSO0>lCRD08?CW7&)*A2?Y6@%KQ3P2vJdFk&Rc+lwcXq2rh}#ru<6JzG z`@ZjOJAfs=O-um_>MI3Pi*Efe*kjEIX27?B?I*{d8_D?u$ODt(h zgkV^8>6UFbLgyN7mW+abk90LXM&Y}P>-m!uqMve(bliqq2ZnxFYw`|rJ=_9_oz>+S ziWx5opOd?Pdja?)Jt*9GT7`~vxAM_ykYvph{5FI9%7)6}r2%kllE&uoNP}`_kZ2sShPJ$lsL=YTVQu+qRX{rAb6aI>V zydnat!Qn;Wzmxx*b^xE`2ZdWts}Q8NJX~kKu-W*RM!DI=vZ=akBF9d&&(Fb5?lEo@kv84?coo7AIMB)43^6>{OSl%Hs6(W#O zfB8{;HeYmo{LyJ1I(fMny!5M!%XU^;UvoWQa9?)=ket3H4B+n#6O&?wp?uh>BOebZ z+G)szDY9&C74)L;Il23{7l2R7gTkGsRao5z)%-m|5m&QtS(TGakxkNlB~CSxT`XGK z`m>Y83?IU-$gT?HwpY8%j0#U{j*NgYSr!6^zX@FBd+P-j?S*@VQO(^d-fRiv*mH}+ zgp_DOHdF?Zi^~RMi%dBjJCt25TqRPiUm)DbS84RO)3QW~;&+G%ikt9AIyquENJSGQ zfP{zzE9Gau)7w(ir1?iB8@z_z48$?8`Kp8>Nh%C7^hH$!WY;O8S7u6qFk0xfo{+tG zvpe!J%Sp%&G)wO`b3kqTNm|!PKuMGW`Ywt3CUxgkxefUDg5La zG&>0K+p5PKDcBh*XLwQg@8mzH9l$5`LE+xhDs(NfJc$Cw0D%@62G0nF{yJVqoSWRy zaqeilreqvzBqagcsYUoZ6^$ZXmC`2~y;*im3F8A9RQ8o}Wz*mvEs%SKSdrjqZ-ht0 zH4KVsB-nA5o25#?ISt7Gwl#ey2xU{r4CcSTF-Rhqe(d~Z4*vTGgXz4qQfJX!8QZJa zzj^V<|9fc+$fw=BrHpSRrMoz3n0kxq0qHCa^x{=KRa%1<2M$B*GGnCk^D^z}2hcVX z_?*gN;;DZJU)3MRQ@lkbBhDwZ0>(|DCvIpH#?UNeG%+iBpBQJ8?g3nDDQ3+wxb5EW0d zCYf$qAT+E&p)=uB-S^JOpZZ1Nb8`1@F94sk2ZaYutFQ}=Ux(Ona3fgg-alIZFxzPX5 zw6;ki=n6vcSM;~aV|*~u=8SZfl%n)HK*-fHG|}J7{URr!;)%{ayz1LK!G~(EZ6QN_ z;~nF;5TfG}O4vQQA$ICWy-Jt-V?9C_cV?ZK2WKGEhm?^0&&Qm{DBO=fmB~A~gjM~h zk(I!|y91HrN&ZUccwH^^7bv7A)A)CQ^wc(C|Ja9DUOsg=zW`MVpTD<-^=s2q0*dClC^Wgp|aU={A4 zk=B12EBxlaM!U+C9;z8M__^4v29=N>>!R69i(&N|hl5HH1`h|VT7|AA3l9Epa68H( zo|c}6y3$~|>hkQB!vEe!df^qavggNGC}hwqnLmakpw%0q&74W0b!-_uN-hhsCsZ%d z+T5wqoyQ*aw=!>Tj%i_C{`$fVg~tv_l#E9V9azF6U7@XC4Gh=-Z7e? zu!BpIRvYcrpBw?5OBR7vbXYa_Cdt$dYcf0Ljl&Qcbrjsej{*dpAIu~lb1!U(Cqd*c zGDhKH{c9aCfF`kDoHjZOja%eLct`RXZkYK+;d65LZ!Z9!PY()@o>rkXIgHZv^)64H zYjEzI7!HYWLsQ;n6_q2tRYj3kVq%Rfy?4F?elln9APt6Sr>%STCy?^rvV zUKE6Tg_>h=S6?(&P8Y)3`nC#J-2cYSt9%e{WV6u~aAB4L@YxjydqMZ=qAq&Vc%`&+ zQ05*VSx87Jhk)czC!qye(X9CF-Mqri73$~C)HI15C8E$6Ix~J0J(xSG zH@ziJ^*(4}I0I_|{LqX}4w+s|Yrpu=J-;yI9XlDa0u=`JVda)X>SGfG)k`y0@v)kP zv1>D#jp+X}d2gbS{8<;Xze#*ztc*6^%ll2byGe3XMT^!X1}IGFHOB$F!0G$PWFf2% zaTeWKui)W?F7YG=iIJ*#D>v9F#FiRFn_hISPu`2de<%Mr?EpTX9~7QEt-`#740j^X z@ggMDd32~Ej?ULdUgW$ z>K0qYn2hfgnrBKUM$jEKG5#qvdC$oTX?)NH{U`dbzZ;{zSWp)eqh%hd5b92~(!sQ# zkz!fqO0-8p>le_p~5({;EK#8-^tCS zHeH;)tsIx_2@A8LV8-a2F_DUF(G8RX5_*TMMs8|k-DvNr*Uu1=2$|xuNV8sC_&&Zk zGr7s52L>WyON6NU=;W4k^HU|Jfk}pF#i#49-XGx9=J>IgA+CX0D3_H@JUx~f8lrS) z8HZZ8z-Y8(IX2dSaX>C-@AiGtfTDa|elS5%o(YP#ka|sdssqC!(GUr#6`7&NgIjJM z=P@VJuKFIbgpN*3&83f{PWfetWeSu{8`<@K_^N*d24vomz9{^6@}JWV;FI~F@cd~N zT6H(HS5Ch5k|y#Dge|&iQ^FbC73Zd~ElGQyGT??8W40S(>34|^kn6P%)kY!cq=C@1 zAkU(x_(l*)WcYdK`@KRdXDGLJCpt$wC`+lzX_n}wu+g7;gtm>9n8KH(BD{SB%^KRp zg}krq;PSJPiCERlZ#rn4O+K#w`I+u0*~EznR7jw)_U)@{X&xiXtV1lQJb!!{NoS;D zzrj+Y5*kiWoHCVB@nRjHbz?cHM$%?MIw)33X0g|sjb1(B4x83qT_>QzG`0NKJsU=7 z@s#Nwe~8O}=l!*hf}8kdnE*u$H=QE-k4A8{)P|+ca%innP6*`SXJjbqWBn7PL`VVD zu7+r#h{q_*%J5z$9$U>c<2p43N$RKy!sLqQN}`LEbe=VrzxJVfQTUwP{o4z`=gWh_ z%coVSjwUKCzxc~mKad26N|=>FsCV~#xg{C1Ni9+kbQW3U9qBev9P?iuUNj0F6mOeV ztHCxc1h{_9HZryT$zM5#_X>@^^N2SUg+<0qvgU9$OnGrB2Tj>SHfYwy9gIk7Ng5VO-)t)M$)J1K?PH&l1U|*=iAwGYOOH$i3fl!X{dY^aV zO%fGfv_l~EV-&_%2h&tR6v-B`DtRW9y&k3pbGmZS*e)A90k-dfJd5g_m&X zP9EP1t) zgj(B&Gj44m5?rx14zvrO{bkc-p=ndwrKlbknsWl&=`;ZeO{K`rt_s8Q&odx4f2~gY z9qHjazO3q#dRC@ZoO_JHIG=PVWBg z1>lqYpz!)>6|SG=@2rO^^^oTF)~7Ym-Bj4)IH`K>sPqz1|2a`cRhQ?K-jErAz@>Pr z@HxuTErq@(Vm$~I=X-IKrb2=4L{YSI)B0JErq7W$xjjNM4(fz&u z|4O`#1z~*)JbN+^)Zybl9DuR*}yl58N&nT+mehfL{c%^_2{qXDHARBW5R;*<5I zu3w94$^bPBl)TrmfdBtv@2;Y%`o90+bLj4FkPhh*DQN`h?(Xj907`dvr=);LcSuV~ zh)6e*((s(Gzwt2q{4cqI3+~pwnPXne*LbhJ&ffbxM4=_G_g0Ykma`x+!wI|dOUo<3 z#Mwwp#k82=Pw#qwy2P`>|4#l>x&i?6?-kxYuEI(#i(d$_C)m#TGp#&Zu|Y(^%bWG> zZe(=jcf^g`>b?$!^Qlw3MUByx- z`p~ke)oP)0gN4BEH4!8+C0y2Y-Rk}B9avUH^BFYZXDmT8kwsOSzN8;KlS?7tj6%H7 z@(9j@|5FG+Ie%Yng~`%s+fZ9VEHxmAl;d!Cti-cv^|cx+H`bo2&1H@;nR9qFLRFOjV)gINTf2H{atcoXtOtggyV51T8LhA(oSG zT!YyqytW!e#ojGp1H*y!bCT=&W3hR|<@c-$oBTyS$uqj)rc{c~$cOx1XuMdS(u&?L zZkD3!D^5I^5; zEg~^o833g-&uUGP%t>D?OaUU)8nT?JwB~vVpBXKZ7AE9(s44!E)OS=tO3<3Y?*KQD z7`Mm1r^x_|IUyp4LiM|p%REH3&O97a8LIUGF52J$C=2atRj(bX;surYB7T2jV82BE z=)k#7+!#@sxxDlZZ@`C_m-71>he|z|Pf--1^w55J{Z0Unu=_c? zJmSD?Ojx!;4~sAc+^2fSERdiWl5?_|7Y@_(j@>`e6JAtaTQV) zMFnHouM)B3aSvvb(v6|`Dd@}n*1F^BF=Mj928vk%B@1_ni5KQ2X%B9{CN>z@K}(%|W!ZJr42EWiX%JM#UR8Gbt<%4dx)tsV`@ zBwPx-ohlREu7P%a41gm zz@SinSoSZY_vbb5XX^jmkzQZaWd*MPUfUi3v*pGsBhG(uDjuu>d{}q;Rs9jtEK= zNfV9LPV#z%3In$ITU%#VM23ROw&;#&V+|*(^Oy@G3P9|`Y7dNFX;A>&d%c${Z{DkC zXI|dA5>q_nzObSFG|=U^%-juW!d0;;WLL$V!m2BSRoli#Sto&+O#NBme<%MbT>*fl z_X^=3S0M_e9&-|5yM8*qNKEi(smiRW2UCA-#An^mU{kkOnx4uStOhpnt{hRv9YG_f z8wYyDYH0h``JdG3U*i%FoQwR;!V}vsRpOh-7HjX$M%T@t$8f3IO%5tD=uBeLxW|>K zf<3PZgjX`_9rpEL4H%*thB~#iJw%pfl9?wiNo>lc>p=>O+zLPTD;M%K(2H9Ryt5hj z40wm`!4TvFMXo|$>F|o#J*uxM9@q;%YbQteaePvLQy$~8z{Kd)7zyncrBfGQPzk5r znR&-1XF93U9#fwx%VsNgsTaLBJ~S=@@KsJ*&Lgk+=1IdkeTmw7vzuLNe6bwkUgGcX zjU%hibgdAH?KVFo3kPwl|Z&IM0e4at$SAZl-&Kd z7Xa|%y+XvtRft|4mFRtAMyR$#SO!(CLA`zXwFuBbKUnO(qaUnJnSx$5RCj_@8pKP} z+~H-D;d*O)6%8>_$U-(;ZtmV&V*NJ@mvv_p23?gXr*7Si-J#z=5C?GEUXAE-etX$$ zJ0c$z$i#A&*~3{mEKsLCBMqEO!I{y~*A(w+c*%w>6OPW;44Ll`zcHg+Bqb-clW~0BQTD9? zWnm&KpETn59csMXW#&3A17vF!vpb-%UQ#-C4m^N*Z z{8UC${8pBHvqt+fZL;nm3Po`c5S>*M)t!D_z1-;37rQWYr~c{{pI`UGM2^q6{P~@V z{|^3>x&i>p?iC_Gu0pvo?OZ}m7_~4}r@dScGk=rb>)v-vA{9)NXe_QY9Pr2v&MJWL zKVtm)1L&u*%;-%GdV-Grfvpp^ep*s@)`)+zu&HZ|m_&lg_ciY;+|FjUWz=K0a_5R6 z@Z(SV-e-`@Q*brbzS-k-@S38(H@~eVR%@!`uI9qnpS2*+IWJ{K>46j`N+2D?9lj$I z_-R}<)Sf|3*G9}oi658$W!koc(*wIj>wtG{iN}JI>y1A(v|TPfDL%9>u03!P+gL@w z9{5@Yq%bAZS-IWm$Bf}zQGk|Cfb%f?6`KoWl+oQ5%V88M%ecnW^6x?(-|9~S-#w8@ zs=nl|Oa{Htq(aosW@pd;DQ@tP9qFKa&8%zGhb^ff1AJz^Fhg1ef`YwFl`>>4;+n5Z zKRlkZ@JYe@Pcr~u`MpBa$5p7#XO&+sUK6wK925m!>cp5pbkidT6;W=dGxLgTYu=Tc zz$_4keM$c3dF0XLY&dDqh_wD0J_H%I^jF5=;H&k&Sx7AvEB1OS_6!*DW(*43*XfWT zscCZV3}4^sZf1$?-BM3Db&Yav^()uD?X<3KJ`rf6oF+Eg?^r9F3Mu zOeD>&pkD1{fD~TON2+#uA>SNQ&M0(wr1n`=%OurVWFI5zAt6enQ02OYj|r%~UYh&B zpJR*1*p+nv)7j_$=f~CC#E#(0cOE7WQK+^GL;vzTm0ByHE*^#l5>ZyIdPQNf6=qeY z(|1AiCF!%m{|x?D+f2Z5Oq~VS&5gO{$Q74~Z^GX!Jm09{?XOc{W)!ZUb-QZD z5El+@Tl>^gis<5VSx)i0QlJ%#$o)!mH+vpnVp$Xcfp72Pv!z z;5W4Ta7|~{8Y%dLw zY<%pWrue7<{;qY9LV^qz@rH~b)}=3FoDz#*rt?0%&>9?n(j%Phm8jl%rP-;)Z|rK` zp|`qReHLe(p$$gNWY1gp3`Q7HA zjUvF-IpM3GJu7@t@cz>b09bji5c6>r;{BOB+bDtBT3!iU6HV>3){#ADhi9?p@Lr4* zmtts{u}L`<-V(1=Wj%S_Wx52dkiCq|)G2tfwa;xRL@^rYN+^M+9{b@DSC zCuZ94h`C?PMI_RK(}7BOwQ6_~9F}K}zYb3-yeVbWsEiDt8No<`Rvy)UpYMYK!2YEG zKo5!PyZY5_PO}d;eZ$7(`!V#x$TvsfRQw^MhbUZqONiIQ0T2l9${fQhtjKcKIo)0T zl8Mv2A6j{5Hq!H~@IQn9q%Hu!s(XdlkE^g!d>CFFhoJjR31G7R3sxV2 z1Ul(Zx78FwBKBqU1mY|s!lm*sW4dJUDEY^;Mq}dyqaVOj)7Ny*H*fU z;l84Fd;1cp%rmf{Ja}ICEx#ebA+u*S7H{>(tgiVM1}@u3lD$%LmXMkN7ZwOek%qzK zsYOs0-g>pLnAl*~olb1v3w2wkSq`NoN;*5oipm|OiZZEkB0A%J)C^RmORDR=w*PHb zO1jr5cKhXbcO2w~5{#yPFG%58y{*~q>&!R87as}i99N(MdzPDR`X|g|x=#o&850kY z^7f0qOvY)WD%qN^D-sV&apQ;G=B;OmWWW1JfIGqPkkc8IojI>kugzhGNQB|oLL7$g zYX?Y+kROhwq>6sztXR-KD|}M${?iNqSbeV$_i+_|Is?{gVtzgGo|J(IFut|Lv2)Fh zw+flaEL7qDlWDxc-H0D#3DyPM4(AVt9e+XjWqLbOXB0kFJK%iY0^Fr+0yJRIF`h%p8x1$}07lYG~}eKD>|+Chq_ z!H-4m>-vr$LRlTvd;x?@#PC@<%0+r}@=1Sa<*MI1yky4q$|**L`-H}vRGyf)BEGRh zVA3Nw9l264QO}2cFnKPlRqMhPZwi8pyDw<+M>!LMxzxI-7@;(+Bq3^0$GUQDIzHU7 zPVrL9@^TyLM7PM{PFATR7RUND7f+oGZ^lMCK4K&Rb!3zJAqvOHRD@5uYkXSLRv}o0 z&=XV+SHfgJC+84R-qD5rjyQc*_@BXlQWpT=r+bC?kE<|cN%m&^6T}zlZMeXLrkB_4 z5>{VFtPKvEIdC1J)JsLRNfpZQQPmN#XeupuBHz|jt&b}e!jCoLYvGJBwpkSaRrnH2 z{-d!xD-yqJPbc*R3wN4rU3ZFGk9Uj7N|ZIkTR$#K=a2MqA^W6Dq`1ngWOIEYLzY6* zE7s!))spxZL^@h~lB&=Q4=#BX|3Xnqay*!*3=7Q)26$`9g9SCZxS<`}_9laHY z+6Aig_4o{l8-xs~W6v>{LxK-X!P1=db1$szRp_1Mz4&z{jnYpZvLm&qeh2xZGoW=7;lQ{g1fA(#N>z(C|P_52(cNzEj%u4hC~7m6nK$UvNjOG%A&f=^ zHOlxx!k9#(doi|Qkj<`EyIhi<`fJ4N6%DtjLZA{tZc5fk^SZEjzt4;$h%u_CX0%=_ zBjq$I#QqQ%b%G-+(9ol4$W;#rtZU66M@ZaumYOIsW6YKNPVh#V9Uk z9+IA&f3px0fSO3R{%1-Z?4;1uuz&gOpXwKaFHEfzDzJh%PEBy%Nc4t_sX)`|GGqRz z8=W6dmHmp!b@pA2fopAO$N={gL}&@xSyt1LgbsNM1N4`lg#z!02WrE4t9|0W*k<_A zPnffcFgI6!QlaAjqacTpiayK_ODautpmXImgMzR<=hn+9#q0e1R;N&4_F8s;bUG?ok8gjj$4%S~%-hJLDxa42@}9T)%lk0Lyy6D~Z6}F>t~0_%7p@23P^;vIje-XkzokvWV=#>4 zeOPfz=3&vnY)5l?$A1iFU{`EmbaVQ{?Jc!T_EP#_wv9cccfuX0gl7zYB>kTXLc|-V z5*zLO-Cu&$K7?|I607bPL9&LZgDiD|peq-(7sB8PnOVn6nC24002MVDT z1GAaEnDP*XEF{_UwQMxUUhOKfQE!+@kzSX(BOpk?U2C(4RJMpqKWE|7lJ{>n0AT&S zLW;*#_?;WPPS0LKk`N+z(*0u|*|W(tIrCcz9)a%39w$%aWUhBSC$(zX?s8v@vQLQxqn(~ z0PxGbLaN7ADBsWIBK?voAAs;hU=33%6D=4b;{{nb+KriDg+-eJ6D+b&r?MEITWFx^ z#LHjnZs+4DtK&aU8s{Jf#-o=|zguU4cqQgnsc`;#Mo%5)t$4Y64;QZ0+R@?iwu4T+q+4{nghnDIY2sZ0qLA zKqX2Rew7=3S+MaoEM7Pgz>y+JU1?9Z{O)&n!C?y-NkAq}#~4?ylDd4f6};`-WSr2; zm9RT&D12!&FD7c0=velUEOcnhOTUPZ-SJvDsrb;=*URrgup z(~|dZHvnM6y+WGDRY=t+%=NBeHfbX`KAkJm#jPM@QC!z0C;WwOUALb(S(_e3Zlr74 zDVsBOfoHy4zL_ho_{lJPp8W^q@r|Ub)7=02)&5r#^LCJz@7Gq7-Tv5EdZLBnEYjAp z`XN2NT9I>dS;u%omliLV8|N<5PiuI%LNJY^ZyDn`1T{XF0Hx$CyJ%$zVLOdaJmM{5brP3 zh#WTAVz&2Mw~vbN{r~0AS<2Lb}IQNM7q4ID0ThoKeJ+VRh6@XYUyBtKTDjMu+ks6j>i@(c@Q1 zK8dCMgtk&9bA#A5fWODCj(l)BM7rUFh7(=T=hCWL~uU+jZtLXh)i4R+Jw6 zO*VX~DeXNnJs*MCiy|p4(_8wTKfVd2{d;;Ojqm{SzMpC@O?6RCj$Y~oB7A*E%dTqi z7AjJ`PkYc1q;QzDx{PVof&SWsBf$h86{v}V<3|7P2=;Cjy9zc zvuQ6^C!Q5PEqVWT0{}MND`a?Fg_`YX67~|Lfn_I2O`Q~%-adO#>Hp<@}Y5Mn$^$%SALO(fkDCS<( z#}$%yZKs3haNypiwYl}Qcn4CapuVn5yh3HQy=@nBm0?G#P1HQ{ zReKmo?(QOmI0{LZA+(dZwoNkW=x%{q2*HOaETj3khTZk+le|ZHu-B_i8BDYOU8|Ku z--h(KaBg*u)@OzP&i&I`1Axu<3SU01!cWzMJW*pFc`p@k3v5xV3=IoP4??PyjU2{= zN~SSXuLu@$+(p`8I-(`=syU-YdNfF?g4aE+yGp?#%rH*lhW{@M+q9avp@JJIaDRTB z2om0mqFD36`QC;7NoEFV(Jo6_EOu-i-K{>da|vY|gKEc0uuV188+FMxgx*GVqU-bj ze(W2jV?vLi4zbzDB6VcO`&r1BAJq73)Rdpzk!a(azRa~%cfaYk_dt2x?+JVY-*tqL zU4Jy6UZ6W@Mj|I^(s^`%N=UHrT#V4V=PTT@94jvafMN}ox)NxkP^^S_a)AwCH{wU* z5Q?xIfd`j-BA+hXs(l8R)_;(gg#i#aUIP~@q#yEo;S^b*_K#2uTk_P3aAKkBudsIF zM6*51r!gtsbEGj<~O1Ck7DAp(tn17v|GphY+ zvxQ(rlkFMz(LsVuwkD$>6^t_vecfA^55aKpD(KtN2n|woYjL9{b>3fvuhg_o!$f^= zbF`X7eT&~=eN>B|`C<6c*c1XXwkAOOP6KuA4cmramM{BBPl^f=EEb(&-4XJJW^?;E z&Fh}3Yfu(Cb=Y=8d6!+jzKh4fY&GdO}( zhVN^Xdt2+4Xzo^omhj>^)9&p5o}Ce0K&Ii+%%d|!J(rF9<)Yj@j&Vw4c=AJ%vIHq^ zOiB!?LSH97!`$sFk64FoP{5g(HB(08A5nAN0zUS|Y~_`QD1@ip`4XY&6_UPli+&8t z&R+weAG%W3vTZS^r(v&IZTqb7-?@KUYXGqIULot_DtvwQ`@6cpTc0AVv0mKOp@MO2 zxc90=3GQbWm2b}`xN`A|=Wi9eY;_n2+pg5;rQh`<0{G98tr23 z=0Z!`V44qn&0zvZ8!8MFv4Nmq>bQI(V!)c1XE72Y4C{ys=~Hn`@P)%e6b|p}t=o79 z^U%;oH%>V^5YW98uZZDvqMT%i4>(V$0zNDJckZ9o8USp+SIGIe3KxW@Ztoy^QkNu* zz)ZkS%9zn%UQYMLZH+AjzwqlgK?kQil+_YwGa&xqX0ZSJ4-v+8J6(7=6;~j3vYz&@ z+~B_ofrl`budcUO5y4921R9cyT@lW5p(bjU2kJUe?gT|4L`lKYWDHFFdrX46c}XRd z1eOL2x4CpzsuiCL4*KW@W=7+P4Cl|PnOf>Wu0I3U*2tqSu%kBPc3?@Md;ld z4a|(_mX-F(!+Fy{oJNu>9oq95rB+18qjlzyPO)omO6zWbzm9C%gzE*?N1&qX@T0{)QG8G>kWLh|KvbiTwI zf@vXZTuk2Z-Ypw^)a&H+1@f5`9~xhc@VAiI#VuGQ1K1&uODp(D-Ul_C8=KX?9j|1I z1--kv1OJ|p_MIX0aGqt1n0XRIL|J%U=*eDRRw_j@W$PnhFh=!JDitG=HcJL^C9;#Y z@_wZF#kV6IRR%+jT`-5Qbk?B(2g<_lH1O{?gjO*EWH4_c*B9l+F*LBchf5LMDRIV> zaI@#^1tC}oErYGOga(AX0W(Kxw+cD(5+u_)`V6PxRe=9}x@L>uILb6$QZM7Z)=0CB z!YXA=l24?>(vifGywdvdJ`I{%?1)+7h7|{os)(<###`0=xE2;Atb_%~GX&;{9i@jT z++tk|%5LhEg*Z`2==i?zS~=M)7=TEQ7TTlkA&iAw@T~CPxqn(~0I>63;j7107$dwV zv-%o!^&~50l4tCy6u8xVqrV^OiXE~QZ@qR#B|b{XTQcT(Dp&%hXl?4G#`th_((O-pUFDHCWI*%+>!vsPBw!^;eMAA7V7M=C63}sn`Z`OGUK19YVU_eE~ zx-IoIipcAIiWyAr>6oK)dG*IlRL4&eL@1?2Ti`%2&NB)OIYR5GFjhDk+wKY)=Dh6f z%`Sw|@GG=Ch)Cdxa`I5DwHjx3_RF?>^0*ZQ3ClXtQwqlfscKM(H-yY;p-qJR0;n$v z1K!Z6tnAHAy&{QNc3=IpU33&w!O0a4hWnX8+f;eR^O%}~u#ou5T1!%l3|!xz*&?fi z`ymQ%zF$q!stkmCxs{zGj3Q?`Lw>70^i-BFb&~Bgw9b-$R`|5!{o4%y*mbY)_2VjB zGn&=G#g~~oItkf7bCzg=wf;rNA2N?LPiGixl2kQ=J)?O{NdMZkdEivLn^!89Z~gdk z|FcBZb^~3X&xr~8UxnI5$dav%zU~QhFl{c>M!fSlSqg)jk`Cu0NRz1y?{C?=fT^es zOVdHiIxnig$FUqgF-?-gE9+^E{^DtQmrevC6nA?j8W3|+m6?*C`##guqCFZrOT5vt zpLO3l3I{!{&zZ$dtMap}9;Xc@LO<_Meb2Aixw%8+N8NZ+0`0@xg`g6sb;pAQWal!h zo_W*yv(0FAK^on;7&Sx!van4mh;&rMbOqGV#+)IL?*xmRa2Y-;AepbW0k+oHZ%9!nmx%oI$sGUXKy|${CDo3)*1lpzE{Zq zxC(dRt(Gv@_WTuX45}xYlJAITA);Z`+v`M^mQD3u*IFr6mKDk%uXWtWu&AFQ${u1J zhMclBTt$bZPumz#g{5yTuVPaX8I2DuD3YO{DE{M=)*ujue;sZA~`Osf;UIpi9g_i3k zL|@_v)mCxQ8TTk4TkY8xWJG0Qv@b_;Qe5;6;#tXyRFb%U ziX098f>0Yb4#AreI>E><>{d3libXlV+JA~znUUMeoi2~puPP~dl3-i?MZxKRS*XBt zBY2SddQ0o;F_GWUU7Y_U99(y^{BX|{5mM#?2&@({HQ~i8 z>kqw=iv_~DI&sX-Uts&!GOBXv2mYRsZcY4Tjpj3?i!EQl2b;lkK}I;rC{CA|VX`wr zd8eADWBQ#kW2SMf{F9}Q>69(k%RUr1OMCfGA79EN4szAP=YR+~4`(RG7bZC86qK*N z^=80OYsDy!!j=)YL>c-Mo_N8i2q{r!#zMmeRxq%_Gi%34ig*H6dz+rPSEmagztUs` zK@J*Q;)L~Yj7?F8(fSZ~d3Ki}Qjdgk4$}fZt5?Q$LFQ7cEbfie!9K)WRFyWf*)CyO z1w|J+@4ZUzTG45{%sxLGV9yz|`A!MHZ>>$AeA zCGX#E0KmR`g(8ou@a>jMT&xHWul=506AA_5;g6?Qyx zkC-cK-(x;2hof5fy)tzeS2xp;?B(>*|9g(~G>Jy$;~#>r=gfWwiu=M-QVqxy7;N6o zIlduVPTCxnuh-FfXWe&-pr<`;liW6~BP}x;p~BwU5eM>Eo82sif(XGS+E{xwi|*Oc zB@*pmwy%=Wmnz6^R7Nv&SD;X$JFN*2sS3NHYM!g+v5FJTYR9u8eF$@Uvr*790G;eZ z7Q+cDVQQ@L2WR}X%F1S`P+87PAH)`Z+j9t4?$7Ms5INTdmfX-5J0<}Dd4V4ZLqS+9 zFIr&mnk7tAslF5$>1tuv7Cs~kTk*hRt(%8|OEb3|-+IBuB5XKg*LYbrbdF6K?DVU&pcB+VGzu|`bsvA0DmMh8i6zrE21goMG&8iicz&Jj%RuYR(x0R*+bAQ&@)xtbK3Dj&uUac>0LdL& zlE;qA1$X6_%}@X;0nRSbu;EVU&Z$8ytnXse#x1WSRQFle1&+Y>lZVJ}EGy@tkPpYg zDJPsS8G}kKrPw@Yr{uQ5b?EbWr%w&?yC0H;=75bHE^nxj6k7F`nPdT>EkU{-1B2vd zvyJ?UZx#Uy&pXn8=l*G}0luAb25uFEBQsCa4R?&XiJX?4UlzfHTJA zFgqZ#uf+an(e^GNWxhUB?E}va+|H$lk4fXfL$VOxGkP{v^W`bQkUIof4}FwSYp@yrcmqhR=CqL zfqN<9_tf`EDy?4@H!yUKGg)tgF?u-HxGM9m#``Eo+XNNX2jU=8|7PK#-xc-hTOD5? z?lAE!Mx)i>!#Noxz%gwt3;rwnU+;0St1cIQ>aR944vZ^AIwZe^l(%jfQ7*Zqalc-G z#I}C{BE$&Iqfs>r<}|58$ei4CH{vlZ_c}qSSl+id+bO2{4Yjauc5v)WRHF_;CY+YE zgXm!w-V!*JW>)u|V`t_U)&JcW5|m*FeidGPIeS?g_G)FnKipp%r>0y+cl3~ZQ`BmG z2*wnDt`-PZFh6fAOQNlj*Pw-lQnLFk=hE8q=z6Xz_#s)SQ%9Cide?1<&3B}uJL2>C z<2cGqMpW4c3(+)6Y5V-=|7`lt+&`@g0C4DD;k(CGSpEH@ins7SL zhSC(O;v<=?9W`f4?H83v+H?zwe%_HjEqVWT0{{-+E0lX&g+&c#^@-JaSygtt5^D1% zElsi(qtqoVgdRz+l-{xMc?%LeRGIifAb zPTpI7gn_uxM0^A#!JprOr#LGqYdcO|vcX?Lv!-xqIIJ{fefe3Pn3(twg@rOsU68}@ zK5m*9pV?GdnMKO?w6HR2ybJ3PGS|)!Z=V(ZJNHj(4FHbZD^z$~h1Wvr3MVAAxtc>A z*(fMRN4YfKayfj}(axp8R;k~Ndjvxkphdo$a_9$dcmdqu}QrqT;zD;@(Vx-uOC_`goSg3^#}+&XKg%fReo% z@`|lCU*Gn*;x0yo{2@X&2Ps5c2&Ieff{|@xywUAfuo2(z4X3mcKPwgGv>t;5J-vpZ zp2TFI&mw({U(+jQtk%WgUd_eQ6s=-N{vJ7g!=D{gV%{I6w^fX1F)%KvyQYc3%4(fd zj$CEQ>$_dH;Z#J57*E-k+&v@gpVLv!x^K_Ek5(gac-W{j8WM5OzbX8j^`QI0Nu{BF zIs79lL5D(ciciENrEUuH;BB(SRGMjR?{ZG!pA|kWdH;3;0FK@(RC-*6{JA$>3FiuF z$Vi9IhskUFI#5hh%PxVrrK}{#$9q1cbpDwNYEiSz$hn_LsQM;piSnoCVFesIxu*Le zZ}{BL|7KzF?j9n+A^!4dcTHHLtY!bY&rl3{P}nbDx2%gO+aChne}es?_>41ajxR9Y zo-7g7;CgWkWyh7S9!%;qyfD`R1=%o3*Q8b9*l)?%V&7W7&`CHRHa)Us=l*G}0l=|)g({D$u;q@P zO#6dMsQm}SY)yLf?h273pl2_>{V7ejv33GWuY}&NL`a6c6-DClQt7 z8>}ydu8KQA%)biZn*DElxnKQ~jejA!<31{zH;$=Zq)U|`JX9yhk0^% zf8J+g5eeF8(zhBLL%!?RyQbH z$A>6HBlB#gL+4>!hnJu*jKz<>A*Df4sQe~=t}2Nav~Z02tng{c`?nha@Y}sYwZ~QX z_OsmKZ$EhwBF#eW#+z6A94C8>=QZ3uA*5sGtaA8^~+*??r|zv zvH6)MV3|l{=qzom|5qUlJUHwcq;rV+n5HLsgG`fi${&OGeXX1fu+?D#youcy^~wIl zvzyD8+5V;Aw35l1afIATtrz#uyZGm*X_hvY_*JC zC%chjU=scA43q{h76^Avry8qmlL`-x4jsHw6kI*dJpyZzY_Ic`=RhTLzkUsV1(sTE zQ-CUBD7cTij~~s_FJc;D#uGoBkQoc9_2H!o2_ALZwX20z_riYlRQx+TT|y#}ZQeGz z{%Sp!hbUBXkowp}w%)Y{5S=ZXcKe`_~LB${(yhHzZ|s41g4g+idgc2$0UPO=rKzWJQI0nh?qDArug;1 zZMnI8di}0qwdOd^Y3I$~`$D?7uOEX6iPz0#I^0qGWu5x)KG1Gc#UjqhWa5Wdrs}_; z0K9)|%Z%BYk?U?N4ZS{;61AtYeCwUzw~_2Xf{FpkLOYS*L@e;WDH^DZR?e$>$>}ru z4^`MXfrcIYw?t&lZ!C#wW_OJ+`h-N=)EGG1Xi}FoE<-|@T)d!JS_b=E>OduQkxihZ zX+LW+7geTm=<|^$@WSB+;8YEoSO?8co$j8CD4$%5h0IUJ)k@pPrjnj)e0gKdO*|L| z?quOHhl5J{5QSC@+X-A0{$aVAlf)~hC1+u9ExtZYa9kN~q@qdzhLF!$_{8Y_(+&VQ zaj#J8aTTue-u;O3$V_&g1`w=%PnAOZ_9AGzoCZ-LW_?0DP4^gs(?SZI2KPMv>&Av^4q&x?92zEHcnpea9%ol;NN zLUobmmnzP>B;Z4#?t-JmV9DC`cN@Cf8d(vKR&vKqVOV zmS2;;{Y65OnMvajpU}-`oe#ydQ?ES>zeupfWv-#NZ}uhsExV~XCCyPL_z$H?US}{G zT;i=|Ce@4@MF^>foRRV$>|XgKTUGwF@zt|>zkNQl%)E~cpC|Rx8k@+%_%_d4A%Akz%i&cBw@tG5DRy z6^7#-)A$z~95FZ`M4kpoB%<9;8rA>3*;GSvRPg!xd@T}k)$r`}U?Iu7&$FA3;eX$q86<+3a{hf@4xt~X zu&{85(Q}hHm15)EMq?Tp5?|!EkD@f@_{R5Ds~II+TH%g&9lO#x?}lV!4Z-bpVkGa_ zC`e(-o!a8}Ukvzfhm$t(UD^XFp>KKjft+(4)|9wkP*D~QkNsOSF1_GeQK_Ng5|F%7 zq3q&9Lla{bNEX7N4YYf9Pxp*%U9MSZKu9l#*!8t0nhctsh5L}zB|d+H z?TN|zw;cd*>RzGV<0_OXGLFrlU64Tw<&V?!wm=&F!|{vhC^b|3j^U8^!fF=!IQPt| zBddT{jlC8(kvxQvT!WZ})Gm9sGnn^GBYo)aj0a`EMmal{6} z4F|(C<~hYweZr%-B;EOwL~-^5d!h3JM^s<<54?9chob=t$$ONuz5+uDG!C|p+ zVskPnIH<%6E4wf(F^?*AHRF8@WgHgl7#5@|vs+>C6I%3TJg@JBn9)eha;o7xoc7fW zX&#BuGvsONixkq3RRfUlgAK+H$wDI;cvgIx#i}|fhf^z*u&A~e7)eZDhMneeu~BVi zl;-Cw{CDo3)*1kuzE^1QxC(p6qIF&bbFbI)MXPIu(On`U$P`yZiz9PaUZ1YX9m9Kt zMGbfH8f`HT7#k)XvNOBT4y1wkO6n-<_lD)qOZ?w`AwBLc?2Dh+Kk`424{iM-G#x1f zOA4BG7wQm14^Ct;4d4(${AumXGZdq)Cw@2GOH;#|BxjMceZAlInG=S&?*K#y3nw+9 zSa@|Z&0M(MTXR%WRl}Q^CSg60#GZ(0A|T2eMI;DvFJb0uFz+GDR8#{OT^yCOqgDj9 zV>fFRL@T%$C<}M5&WC$~hcg`*u7dBQ$;$kYEIg4oF7V;RyE$bphA|5|JtmzDCY|tSVgL5FR1WX*fyW+7bEoDNGu;pKRT$F{J$?DhD3?x9-b6N_$Ap~{z(+I zjo6MltYWKWv(;j9{Vvm*sjb)t;e%42!I1C1fzqEp=MH~vv2l^6I%?X1WA{nl07S?h zk=yBgj2rXI>ZmKI^x?*8Bh&%*MG@Q&DoYuN=3(7MaO@Rk9iL#~UXb|hInbU< z_y_Pn8=@H>fs06kAbT=`Ja|IS+j!gejD=3Vw2e86kkJ!YcSE7=IU|{)M^mx8{ zA%CEKvBYG;`FhvM(TT1oU-5`h^fU#S@Sy)MOoBZ_sK!$dXSY=eu;xLG9Id{T;)kK6 zO=w*Ru%2jgepdMJ+&`@~06256(ByFyYHsWVlBw$Wp;Zty8If-pY{=>|y`YZ@*Gy&2 zJq}c!BpWzQE8EpuDzyCmaj)R8ROky28D)Ddijo*3+)UKbndG5Fm4$5-SeSnD z-w}=&KP*BwSrm!P^9VK=lHggs9VA750ydT5JR}QO322nUkEh;#XOVsx&*_Hh&Q zpB#FTQG%_E6n&%htng{c`?nhaaQ0rI+2bmdyvl>bj|=NHmC}~Ipn@sUp#14#kE?z) zn$-H;v|e1vXdj;(k?mF0wFmolmgbN>JpFE4fNQrn8ma*gBK)k(UxhveSTXD60d<0z zxLTh^7|~joamFtL*Cs*;4JJ9U5gLd!8<|)V+7`stcC{pZzy#3FHf23bVDb%vg4QCn z`#eE}uo+#mPK;aRucIdSvh!n9b72vNf8NUH3i|E+wt{Cfw{y#juJ>0SXPRdU;&+Zl zeLL?N+q$FhRf_mVTB!AW4OC+8Tl?`_NujS!dfQPWva082>7 z%eHUtro_A5mdgoRM!VdK@g*4`-39ZgT18`^Y>wp~qHtDxiZ$0mnQP}Ovl$d)n&^8r zFS~Z%7h5wQZwys;fn?7L|DF4%wFUs^?iE@*u0lXX&&XF*X_6g(6f}?EMXK(Aer68b z;@@UcuKt2%ubo7f=oyC zUg}fWmuW>3G+vR#`|!0az-}6*cJg<@Jg3T!(K>k3@%2EA3CIc8%%<6Tv?cdg;Ka>Bx#>YXPviAWf8FvNu&G%QvF z=RQWAmk|R^{%(2|9pp+7GZJwSn-RzX0d0PZ=pruEoalf}Z7R(OnnBB&IkGz29Ni!2 z-pLb!wZZiQF2aMX&k%lMQH)p0u(eG-_tcbhK8MQCXcbzP8p$<=)d*&@Rbed6Cr?o* zRi6K~=;Rui6jS`L$bQt^z)C_)-VcJe*Kd`x9~TnyRpHB$_wR0iy=EU3nm(_>4_S@i zTH}cbU=Sg2ls(_j%2(iR{EIyD&C|fXg&lc-h#%ksN3G19{T&^Ly+GN_A(&H1`t(!Q zbjdE}X3oP!`a$9FH15$1Kx)Gij&-2jwGZ?|=nm~FtWep4Q( zfX6RTu_u?0iAIkCdmuJV9C-w(_sHosBBa};To_X1k6{T z9qAZiU2nk`$)D2x@YbFYIuXO`#G4=_1e5yRjH^7Vn}%QJ2eF^MPP)#Px6q@o?Z>I@ zXVR8u3->CG{X*Lv^3*aA=M5`kP>dfxB^1O02-TdKB7lEvVd2@`q;~0TZ4yGqg!TV1)z+Ur@ z3N4>k;om!(bw;;L2J|r+WjI{%j~l}lq(?C3I8hijC~TwpHhA(GZ%0^uZ+&oO12Y(< zJ!dQA80i@#wJyDPWwixe9DGoSS9Nw$$C_)91N|$i&|z^|rYWKflW+zY5*>7sjU1vx zp+L7`RbUBhLM^$HgU_9X9O$!qXV22JI)s53@f&i@&JRbEKxdEv^xD_S{Q5tk>W?cg)G>LW_ zxhc?UcW%PcCX^Q{a}*J{344PyDR-?w&r><22~?Ko3a_ujWqnd|<6$~x@fB;3btu|G zrdApbB47VE^HX-DnVxtVhAmEGG?>+E=s5D994)E4l_kQUMxsOw?rb<;|5Ndwxqn#~ zz+MZF3ay`4;dv;6sm+~jE*5wvXR?B3QxQ%mw_uO450q2Bu)szYg;g=AqA2}-rv8Ex z-Ec6|VsRdVtw8K>?=9tVExHah+k?UrI@B35{5_ep9Qj1>ia^EsqoU&ieA{nx1)A)! zMWDeBw11(oYwA|S>;{W6@>Y#j$ z;>a!BCaGHHYdN`9>Iiy`14B5}mb);ozeS0MJE+JulH9v)j5yP2uBW<+mY<}{`RDWA z@!JR_^l_9x!1CrjlDugC=PA@*zJc;>^+b$HG}5QGzt8zW`hVYGQ<647%05q7Gb^nta&m%h5QLJ`&4u5d z^2jI($(|l*Rp?Cbl)LW=;Hf`7|Byqq0XG-(#o`y`iXsSz&{1bo2p|hx_KXfK?;-hW zFpGnQ*Y0zTF1K|szWm63g9c3yPTuf|e$#l>#UAZc#&6yf*=;uEl$Z;5mZO#}*8Dg# z$4UApK;gVkPrwlL4Nbva{tVX5R0(>0Qp?`CoA8P#_z`53p<#Gf0s zcD^L$!u^WZvVxl8-?$>iC!>Fg!pdW2g5hc{E#R#2a;dub9N@Tb6KC*g(3Mr6%jizO zg}y5M_uRj%HL%yxqeA=VRk-{!U^jBp?d^waAZO`|LGb8>_g~$;mxz9`RqPNR88cGk z4J{M1)5Q~_qDNf{@}U1*jNiQn6{lhsQ|@s9Kk9sVI@3B0__KwmLa!>(ZYz!*!EQ^r z^!+I6MG=RTCxiu!g096h?zJKduu_REbD;qQt`kjN^E=(cV1v7Wl<+w$eD;5Kq*00E zjEgDsV~kDCQP2mRX}{^I+Rsu2=V(iACF+0ngA@pGhEu`HYW_-zMo#KJEc@mK%f-fu z#qx&XZraub7ND@>Q_#6`!!R&|Fs@sz*K(~kRDkP>;ysbdNSJc|o1ZgkCxd#}*JY~g zlzuGbQr@#u+=6klrm+=eh6A-+CkK>I*^$b_jBAH%L2G_2;i-bePx&%8%#8!Q@{=iR zh~KU@So`&yikAiNKivR(Ek7!Bd|rk4zePf<+9RSAH(6!K%C8btf6E%Igx5%UVxrNx zQQ>s!Yt5b!)Z>5$7r`ZC=z7m%GJs#gIfHmkez8})$g|jeQ1}^2fQr~u3W;A0Kd>Aq z7`Ir*IUuDUOe$Y4Xjg?RNt^<^(qUGScsY*D+k`O5(4XIjVSSd=H^qnW0h3yaq z>T$J&R14L_R&M8O+Cz7w0VN!yrpRq--<3JQm?LVGH8Q`mwmoTL#qeet+WIn|L9Y%1 z?5)}gdt*eAOGBFxrx_r`Acnh!>=`eA8tL5jC-nPMvJfYAb^9$HMTcTS!TOtVNBjO} z(q%z2t*OygM{?w@J&0F@FACm&ngRA&eN^cByb7)GY=pK{Zjiyk+ zRzms-6*>Wtt`i56N>q8cd$6Fu*R4Y7}`0U5WH53V9tBTRv*%tqY9lfxEbX zcxL<1s-f}Fe(_HO(L>EGdOg4JKXd=GE`Yt(9u>MjuR=msi9hSYr^hVv_Q@E^eM?%f zw}XoMpe3$7qSWE)-+0kAVc5?ZbcrB*+^s*XbSq@a$?2>I(w}!j@Dz?jjm$kLBpGT} ziwKwPy`YTl(H%~{FO1?r?yieqk_Li1p`zv!R1g5A&mW7^jk+d)vSj(il~Ye41jZ zPd(u`JMjo~|sIOW0vgG}{8(^>XM}?lxtB?q_AZnVvVk+o(H!9y0 zL0?(OG48KURGU*B0)y%WYY|!+`1GNSFBOEsY)2AL95ZRJEEE!sQnm7B|Hz@#Jm$lj z3hMc4mVhx%s}9dTLG6U5O;hjj@zC~`s17nNUlBtIS#D1g#ePJxxfq41A4I!sYPHIP zp^WT?SDSTzIM`N!u>lI1BBytlbj2Dp3xB|pBzIt=Z^PJY53VJO_Zv7|jvxxqDy_WKXlwG&t z;vWbng_ubCG+TX~R$~4?~^P4}a2JdP) zSrHusYHb~~*eCUOaVZNufFS#9%g2?(>~-bxw(=w0=9V?)>Kc;UbuaZI69+3flhKJ8 zunMHGK1XF*wh?;_9?Jm9#U#b=E7{J%d0%SGl|OF*3a>Ui5UWvZ>=r%PsQ;_ zN79|f0)30|;C!&fTG0!-)xd9Z6k&xm^s5;Prb`KrTMjOeRv>QVfA`nY;yp#-lAidR z>uSXG^n3^!yf5=d(?JOGKWYl8FvkQ`fE)&1zmWg3;Qgl?V6V+bg+9-#aJBGKAzFGD zwSZ&;K`M-GQv2v5a}cV}XhT8-WFA;%w{TU?HX5Sn`_hmdcPz_zQL7VO)rQPgty{kg zzuu5RfrlNb2a#WVB>0tM%Ym2vdq+GlqeImlvydp06bC!^@2AiM*KxDr zehdxqH55;eQ7IMO^@UZ9OXVdtQYu z-Fd`vTVH_{lnaYbEoJOJBK(9NKkWF*nUQBriJ~P<&Xv@;utt{>hb)}l$B!K9Qem4?V&%v?Ftm`BMAS0eA?lgC+W)Ao&*aSMUjZ$| zEUCC2tg+G+7}F)rf-4P1iz;fk=cuRFSbhUgsEhX9V#}0zdhoChD(!j-8He|VnkeVQ zWg_E!ffoBGc%hstJ@09BrdHzJz2$Ne9-2R&LK%gQE7~bBPZ%{q?EocC#Ro^vyTOxE zJ1CpeS_3PP{2J$iY}AFyaDY?fPH2ZMHv4+O77VpxXjN^$GcLn{^Gd1O^{Wbw9gjkB zr7q4tB@0zkGtE+LD_tssZuD>n6h3q0iuC2M`x4-!zz5oRW-Yubd{OZJ(+sfJ_M^gp z=T$g5%o$p>Dn6piT*Cp^hA?T(BWqQf8IvD~KM$recsVX2cn!n@pLdPWP?xdV!xJh# z)8>#fHSQ6{dyl__h@|?Eg;K1-^|QSl?WQ}K)J8* z=Ui2j5qaU$bW%&AOb?GO3{|6b2sY?x(LkXW<^hB*vX2KEZd8-nW<)M4_Z$|TcLeVc8xr7G!X0(ZynFk<%Rr&r#WC!$(i{5?FzRkTA|F2pD}{_R zQ+xpfwpkBv^Loojf!1l;D|Jwr2@i%w+t4RB;^RDR@y{U>zeOpg4TKrva}3=Kv2woM zxO>A4Op;}y78-4Kcr=8*?-)%rOBZt)K3pKo*X z7u8n}{J3I{^gW>bV`M)uM#;+sl*vg-Ctx|Yqeb5?D3Nf{MS!ceOti*ev|A%SJh_*I z(A>lkp!b0Yr_N*hDGIe6i_Yqo9FV@kZv|)=V2s4)ICSIjO%eM<1=M*!fA@LK!j~oQ z-`xOv?LI0Dd0vI0E=wOn0x_c$zFog*hg8!~U;v$mA1le@KaU3rq5K{CDS>awCOEu< zB~$RtAM;Np!3ElfRYAl4mpf;n;;#a5L+^wNF_|udJ5DJ zh=VdO^?tGC8n*-sI8$I+&aeG&Ty05&{~U`lBvF&@HY{?JwAUS+^HQ1;b z3s8cVIFR@%5N&5%9m4Fl_eY?PI=1O0@q37VT%xmy&!G43j@sv)fGvLW%_7w_>(n%& zl(G_yCB-+P!`OdIuIhTy`@*ziITB$p^M$+-r4PkvCo5Y&v4?%&3&nTy+&+qu=BK|Z z{P*0ytTnLL-lM{>=T(?nZVwY0%^{XMnU4}}W1Waq`5rE!{cN)i|A$NY1WXW_U+Fcn zqu=OSvhTJQF;ld_-}R)F)1yk63>L7nJm!}FdqzsXK0CmL9Nf)tM({nal4TaA-J|@> zhC3;vri1${4IY8FB205y=@?pO_lRV>$t6a6FW-bIwpU{FkCV-8UK0SJ_%F)jDX`ht z!})W52^XOwqd!7_^!1eXl5nr9ZJ;^2S;qib$fLX3R{plOXN6SoP)q(t*fS)idW_??~i@j)=;jm2xb}~fShlFpP*h5Y@TH5Hm)si|? z*u{T-``Xa?p3G6atRREX_~LWaQ?fADx9fs0e-f#2-$`rv&y?BDydgel@a_+@DTjqs z$X2vhg)d9qzqAhMm&K~<4bF8T_T5DFvaH{*S@2`wqt z;?9#m>i#5NaycuU*`Jjb*Irb7@PQUilqu-|57)K$LE)ZR4BWs3wr|(ck1euzx4$-6 z6Bm_Vy>!fAcuJeG`Mvq+h#L$xI={pix5xFWE&g8Q`SXs`T~{xD25+HtO=qlmp@}VDIRLJGd#V^LB<2J%9FRu> zRW&0OE~inhOAdfsO4{y15ozxwqOoMRSOh8239@co}w@%F0PP5aOP^fS>mlnxLfSq*LKoUT*J!6 z<6kgL%Ty|_3jaO#FKZ3#b?~S#>UkBqN0a1s-QeV7ZU1o`QVj64>o0mQGVAKS-tp%M zQ3m|@y)QmS$u%~KFB9=j#CBH$s>GLAgtPC_>Fu7BgEM5Ud1=MQ4M+p9*#P3*_6 z9aa)CxX|XB<$x4TlHX!`M+~7Bw{G@V&cf_T-<_G!rkv&}>{xfR6FwSQ+_S{CHea_5 zyQ9!oePYjAKbn4D4j=9{YNH&gjj=yc3 zzYSr^Kd8{ST6l<{FGt=a3_aO*DddWskn%?}p~hb`y|VVwTZHcq3Ns`KLztFF0>TE% zT}|aHqGlwn8tk#>LwXdyi?K3&XEQjyT#&TTa_+D-h#+PQqJk6JjAg*V5*I>9T zp#u<-4@;XaJyzeZxptVCG$^@5?w!YFYOR(UZ*w%9`p}o;P?(2dishqaF9$|#GNoGU z)wGUMwTF-6*)i?4G~@fvx%PWdqBb0yKw=_hka^C=el1S4il7T?;=0_cTd1)5;YES0M-YmQFFV?zjA zkHjCyIg1Y{6o8(o3~d(s)5VN%Ml8J=uZ^D_Xq3BO;gdMKbIQjT4#y*VU#%X*KKjRT zR0F|K20-YIdiC5_XEc4{-!6;Q77p|-sIl>vJ%k)ECO1+R>x*aZx&$|g?UYlYzNK17 zI==IoG_+=>);GE@VIUip1 zt$5_RM;+SJ5vMY3e$St3^;O}^lK1a!fW3|%6~;fW!p+W|_WEFJbMg;$tifl_Nna@> zHay@E;_>Hh%<*@tHchSc=07(5*_&u>?A*$hkxElLgXOQDjgy=Qc zg?7q|!Punja{xke2Xw*=zhQzmi|{-#ZS3)K$m&x?z!xKHG7p zI7T?g*bJWU$O@+kgo&9JT-Bfx@~ZIPbN{l|z<>{y32ke zRa;ez9g_5bH<^TQO7Ri;Z4uJ^#PJ`Vlb}d9>f(Q5)|)uew$1N4VEVO+A#E*(pPx%E~ zpEXoj5iI|TCuqUVV9Y*N!5WS2N70KUmo^)LwOb>;SA{Q2-oLv6_Bwr3nEbp77qz*g z{*?Z8Dd|^Y80Yh#bf~X4F#>7BjJo>!-oD|j3I_wI)TLSlOSFo-oVOgz-``yBu*XU7 z;vAB&`!2SsbRQJD7kvu!wpjdi(zf=Kn6$!t$yd`w>rJ>}whrEpRetK|chZi#q<9D; zrKvxh2!?=KCDYiA)WRx43%h$ZO;0K40fc5djVX;ZymuYr$`~-Q2bI3Me|P9I@WDby zr6|9gM{_~l|EghVX%ymk^9@D!5=Tl0UID?<(**ZGJ0w<1#{C-bfTt~ik3zAhG=~CV zm_9f~gnk5Nmv41hP#hN2_}!FZArAGmOLSM*b-tK5SRI(YN=yN*>4(#XBO!J4>gHIn zzh_TTNYSlujq7{ap0K_0lZXc-Rxk6sHaKepu72(7pi|0C!mGl6&;83<1ACo4DolM| zg(b%@CJxyU(>WmT&E2kS7a9=#NJXQ`x-pV%lCFH$O6b&tHGoy1R#0ZmrA(OLCJ7LM z8OuTP5Fkxw>>qIt|KBO1<%5}Tm1@F`cSATXQ z?6{?-w@;G(7At4f#t+$eE6>C5%P`xL`LKx0waSk`UOryJQ4sRyfZ0EPj)E;vz&R!| zt%|O8o>x=5s0}Y7Z4)Cg;!Ra4)B!_KFQ-7$TLt-)y71<$>_S#4zsTp1VqrN}21&wU{ZSV>nlj29>j25O%D7C0|ePZGuzBQ-5;#FTFzv2v^D5` z5|_98`<#2d7enmq#=K5AMO#VV_x#7L(kv}wP7{tZIL^K;HlX^S8z}To3HfmW6mE)A zh_96lf!QmJ7O)>P@BAJw**os&HC0$EQW$F#^sH zfvD%%LLvhRcJma4&{NDt(P|Ud9mzz~-;|F!Om8>gGFc>|&oc-ZSH#jf5J$rE0C=IdnSntngdKyZ8Rgx`nSU0I@4O5JEN_T=hq4Ivz#5R|rW zx+6CUV<-0s*UpVH+<+7J>yy~T77{F5A3rDz@V2-EE`+i`=IKHg>dkodhQ5QOyVdbfWq+myM;Y8YtO?9 z%hK$A@@j4)gy~L^p!en8ShE+hj%3hQ)ZZe!j}m%RAr2Y^OwKR7R_C^i^zYA6Jew>a z>e2xvg0!!xNfJ64vIiH!Opy6;{=6@k|4OVmH!Xx?u>%`hC%8wKs^lng$%ywRcjNt` zH7weXLp(tt+GyYu;jO!Qnx`l{3oLmjL9-0plsEPD{9db?Xb`>~%z3YLJun&wgHiwW zyEFfq`j@r@_PTmhnESj6O+V|-8zWd z(fLc3f>`~+(hUi?rpCZG!OA_mHA3pA8181wpQdob zDRz@>a>Cf5uNu#Np7S*3&1tN%6Z}|uxo@qR&M;FCi*s@h8CCyiq$nr zvR{JV<1SEubQ1f=|KPxA42%xjKjlru_SZc5F0An2v%DYe-#hmCt~!mz_Wq=dRs5V7 zpJas3f6c;|X77Lf0DE0OD$IXgg%}eba=9$SCuN-BzFvFVeG$cQR&L~qQ@LYL*p^c= z)l?!$TeS@!B3JmjxE)7dk5930zec*vi~3h`u7GPdr|IFo5G+Mp;j)VcQOBph4AkaS z0(G;dv<-3din0u~0j!>~#+14Mw9VP4zUGvw&)k8_GwmutYTz8?Xo|HXMT{e21`uRC zzIusu(_OF|{X>dpF3SFn%i;5Fm$R#18dl4$gL9(^KApXtOk^U2vb8e25g}{qrtLqb z(Su^2WYwjfX{{IlDC|v({tT(5A0==cz-=b;pjadUrxR&EG-=NLYNykSro`Ovkmw# zR#93ib0_jamsf@VoBEfw0`~gzsIc&P6@DoU&={^U@r)bwZ*(c!j;@q6A>T2MOrvY( zu!W}<&L@?bK5Ve!P$$VJh$9 z^|C`?i`k5n`wFf_1M|@h>Wt;pC&!&O{T2@2v*Xkc4t{L-6g*_%J1gSpX;|}J zW(WGptIEMYZ!cW1I*`8j34roU$JRRyZwPA1gH}yVn%rA8>TBl2W*Bk-lDwJb?gPa!SGwm=DsS?Pdk-E=M6cD z)=3L+6pVT2bPXc=SyKx7%!QGF5=kZ(+ytjHw`r>0+vswgy`u~qQ=&}$mlBBT81_Uk zW9Zu1es%*>2UpZu7!g-ne~Ec`O}WXLPFU+bnp|iixSygBZ&EQYfd&yXPp!A@Vj5So*vQ(KUSHzH*MC14Q1i(fX&>gDGB*&b75Mh?`pG{V~hO(9e#pl_8|*{EKbCL z4V@iYMo?pT$cPp;X+c&Jk~K%I_K{a08uX%d6p~`l1Jy)G!bmAHOiVvEZyz{OGP|S&h&otc(&C03`oX5~hx`5! zI>fgdA`P}#ucgebPG-71yDVww;1WO<=2de==cCD{D>U^|75!ul{{T%O9kKz`e}RWC z(h(QS0Md@%cwZ91i%QH45(CVjVHasCB$R267^u3pN{nm!@hJ+`h%f?MwsyLbZ#3CK zuJYdMbNIx++tMR;XI~e;$_~v@fU|7B#Jh()d#q0QiE*73_^DlQt4kkE(vzf(jF zu$##>@bVcI1Aa3l`&&j){8bTJw#X!%5>5{pnxL(q!x?rK_)J|r{PU{#fFd(OPFogH zpAZku8QZ@DTUOwo1D8%!b%adTHNj@*f=54Cy8R$zyA|1tTVWtY+h`l%p2}rL2-t!7 z34-^zDOnR@sPxEO1H>Ft>Vjf6AZi<2f4?4}@X8fRP|1sfaQ1Bv@*cfV{Xze(`{my_ zJNBq#5Mrg-dxBUjOiOM)N-`voeK?->8{GKBaDm?9d*X5ze8{Y#hNmd(MA;-ZqLqtP zG6E-GRB2P$=Uy~5^jlnl9JCN478`#3?acp%{>80;z3v_rRy?o5Rsl%CT;r7Y^%XzY z`KwJ>m6>cPLsh;06^fe(M|6@$_f-Glr>xjgJ+L1VG62_f`2mb?Od#D_2}F^P0deUK#Sz^Vd3@jt?Bb zP@8jzC>oToPXjhCgwoyE9Os1BFL1n53EFtyE-WS6mM;k?(M)`jBycQVeX4J;*wIu} zaV)sPFD;TXD+n?uaSH=}FJ>S3ftcBFECbAocK?gauK|ouI-84pVA(DqBt^~I)&Eb0 zKG&cg>7~O)aFr}$0hKT_;2?8-fvLxw;k|=t#ak(4XmsMUu&)XqhyKMafWHC*Ju<9* zUWOjU49a1OEG5ISjFLY^Or$9YhrELFFM2T-9KM0fIs{ssUOV5~rxSnNg7q3oU#~j@ zzxf@|mb2nGX8>%aI_dtv&rSOT0HM#BMsaQ>I%e#2k+aHXYt*;DUoW93~01Sa2 z8P+~8!*_9`k`p3Er{+kDX^R-*ld3dIS}bQ&sdjd6%vv)Wmn~VKS;FQfx6jsP7dKZG zR(sS{cN$%p*-L3RDI72V3O_ub0k6oJ7U9jau7y^Bm7zIg$;=KMZx_2KU!9ZZAa3PV zpkruFY-bY?a0d!CmlFpL*AS9@&k1*zlm~s$Kz^S0Pn6xR{3#e92e0mz!J+6-FJo8} zwP0OBy^c$PYBl2ef~|&ey~rXtMjXkACw8X-jeL^G*5Y^x3?Dc9PIm(mMx_x@qNMwi z$=$j1waVYV4|GA|0k*;ZK$sJiYV2w$z06$ty@X#;Bg+uBN5d@jq3PXNGaD@0pqkXL zJ_dprBUeU9Pd$a9#mYKr_2|gu(!zAy5fB^Fa_=?bCkLIi6w{0hH$9G#SB8&M|Kb(^ zh9Hj&>z|k5%;Z#+*IRa1%9QAnBfC%43#{>88}Bt4W_&c}Y?0X7!OI}FeqLs~yF0b^ zAT1-IYNJJCM9~FZNci|DMO8=UJfz{0G>>R`8I3kU)c!d*FSTYR-tXA#sBg+`OnTRC zAY~?c9d?DH@6Lqk>xXwy1%27xnK+8kRG!KQ{PIGex=TU_M48^5-XsL$y=-%Z#pk6P zt$Vz@Z>L(q0+$wKL0pBNEnA|j5Kyd{?>BNLoVJ?auxCd4k#h*-(J3A5;aH|%M*sP{ zeNK=wN^?wTr0aILGWJ-3rTA=lX`708{|S%NMPdr(BHoR>2@xc$ug0(Q>tyY76p*dY zEn|tpqZ>l^>3(xP_)lTj$y)t$xcvKW$zXTZZR)X>ziO#qx_x6pKQVtWLL$-cSB5W6 z-(y1nhM{%> zpZ~_&p6NzhZ)_^QOA-#+?QX${Te7uIMk_?!D%$biu8jt-n5uK22A53M+dFs9 zZ2=`rk1W|;y)ZIc(td{k&(ZoICi%f2y&o-riKd%kEHCIJYmV-^)w(VtlpVnm>lMCm z^VLs76;0F8&;4;mCB(z_|M{Hs;ogwecj%m+kRCE*wGWoM`>tCna+Vvpj9mggeqKPb z5nK9|;p5c5xCMYA*dxQ{=VhpuZ}JPHLy*<($5j(Z&1X~Ic{1v4UVaGn=w_S&8vSeB zW?WSSUjq}8{atlVU6RVGgcZ#leLtHFQoo&$i^0SPhVvUouzi@Eh+0cr{bzQou+v*Y zjSf?D8DUN-f|09w2=-={)61wN-$w(Er*Vetz>*;eMC+2YGzO&MpbU=X zq;=##@^1BF45vSVBFA-ClX`k-GSp{u9;gm8P+nP>LLXU1B?*MEzLf-^!e45}XQ_+Z z{Nbf#qk>2O+#6o;0f$7m5@AYww3WGeH(dDJ49ZR7`;@DKt2phoh%} z!eldS$*SG3tuJnz)>rgmwfM_MI^O^94`?13rXle`<&KSKP=cCyv-??Zz%FXq@!|i8 zll&ZIeKz%H>6PJ&)A!gAfFbxJ!`A0z7)LJ9NdF-U!JNxd#N>?)*8LxzPRpooW)gu+ z-_taF8VILaJi4sHBjn(SZ%EW{*z@^F*$qEy-QL-~&&Gr5d6{iPrF^$tWvs!!{mtbY2 z;r*tZl5Wf7MF0^eC<#L7Fx ztvAOZhyM}MzY|4ie`WYM^)GG#UE-%Iw>}}79Aw_aO=L+T#s6tx50JL)Y2-7 z+Vp_&z4w4(Ft_r&)N@!VC}LKE#=F!(iO}{_@#|06NpN~MvV)@;{J@Ym7zA0efayap zig;wr2?g@ukuzk>hk}MK;WX-CQ9B|T@~rQB5}2z5*B{K}_^?5<=SgqkbWGaIh`wz_ z*?0c4qx`Ip&ONdj)l~O+6V(AG*_7>%DG=-;J=F$G-Xftoq6oN%Kp$-~{wT{rWP$R8 zL5TaA6yqPH?KqeK85CGss=t5|B0qd6ipJX#?a4dJbp%s)t#nh&!L zcga!U*~qE1=EYB=WJI*+jT%pw$Dq$i?wyR?Txf^AH2AF#oK@`(#SYsC9~k0!PnxK# zQ~^&L3^{Rje5W}wJjhwVV1-ycBwWWE*TK@v@-s2%h)vsw&TL>Zkc9B`-i<;4w>I{_ z>WDedu1*3NLaG?zMGDk5YPnxU(*t(U>NkZL&CU{Zj9D&iFoCO3F!^f|1+y6Vj)Z(y zk38GFBx$l`X*6HT@-k~pncoCV6;LASwD8`qCi*&2GhtBTTXsFJBED6oe{IW>&`N9T z%?To?RVAW<_Xtnw>RwiKJZRLOnn`(`VX}qoQZN9d2d#A_hdAr88WlZ28z zo$eeyGOA0QckT(h)TCH%p|8WM2b?CkSfHh9MEps$AgEmwM=IheY54Z#A1(p^Oethy7`9HTM&!QV+;2_lKIiS-#+N zS!8@E;i>GhJL>Y8kOLUvn-^R^2WJ+knS-Jyx>qdqANj*B*sLAVCO5KuX8cVCkFh0V z8YTv8#=%rvK_pIG*8|^wS*@7f*z6rnE-XJ4Kr$;+w4SfZtRxx{sMoM9+I#5BAP68@ zi$Tl9^`)6wV=&HNYn34`BcZYtl}=0QckEIrjKLIXE+#j8`pcr@cZ*M9$o~E;WGkAY z^a8z{)|%c3s6jZa3fKJZXTEhgs=z)3}*eAm54dhR6n8Ck} z@IIvB0_gg%f^)s#A_Av*4J!4BZ!js4CS_nPgngg9!I9P9H!0n_^Q!coDX7|ir4`3X z2_*S9WvXy))$OUajASp2INiNe{D^XjTaHZZG`FPsRq79*gdv^{ytt6VCymh>pTK>1)LU>0 zf9h+^WbtNeSbg$y)tEUnWm2*gp|eHj$6E(?4ZX+D|2+ z9v#{uMYW&sQN}tSEnkMhtB>L07KYEh6B&b&>}^d#)X3_ zT4MHcqOA(|;Em83553{NlgFfHDhQ;00cuRZNfdW+4p#YD%x87oexovMM)WjRkWjDL zV|1dz;0K0t=Do2Q8k;0r4ibWl2a2S>A?g~tj@Q0AX7IA(uA%iZS1lCdNE<>LOORcI zr)eUXf7GOqkv;TwI>@{Bz`Jq+MA==OnaMiHEjZ(p6NZ8Z$l0#P^k3RippF(^9jyaR zVL}<6Pz$K5W|&gqI+gExWaxq88jZoZp67V*CYSRv*8iMk2wtP-u43#>{%!@LFOZ;& z_idLyQPDDTUzG*D5bUVvC^HbBkZFfwrC*3Lb`vvYj#=`|_pwTNy5s_5s!B6Rpr@o^ z7oG1?O(Nt5yG26N0O6@7X+KTx9V0SBWS!%xjqLH;SB8&M|Kb(^hH#Gzhn|-q_(C<7 zKxy!`9!OFQJWm4`_0N*dvo@uYtOChH6@}m|M$NTed=j4Vfry)U4%E$0@IM9DsK6#F z>?+WXVd4A-GrI}o>8UGp z`H22DO!0kiuR( ziS{fyj&pYs!+G2DH2$_sg*^J8UI)h4^C<5C49}F)Y3g7nFVd58bCWxNy^r?{TUk@C z_JX}VBVZu%ND+*P^t6K9QACsi+ui+AvC#g8!~B=vJ};H4a^6rGju4>4LDt_?%gOgf zPyo__wQ|=8X;PfN0nxT%k^aIeq`bC0qHh0mX^MB)nESt8uGLVeFGJJ9R9vcEM zM0{lU>v}(s=g~^p0Q^ zm%0az{nWVT+*Rd(QBb4U74&paA0iDEQd9D6;4s6DA)L%c^<$lN-o3fwup0zWbHov}8q95U9kXEYgW`eV@xsaye@zXJHjRPxdJEYKz%B070(hadJJWam%9!l6*@0Jv zFHYZMLjZ=zj|_i5FGJov&5rQDnklU{Zce3e|Bt=92#cfZ+J;TA;O~0P=!oqji^D)$HC?{V)E+?L>uPE2%esg}eB;c@86L!rzH!9}|DYY3 zt7a#z3G0JD9$;a93fBhv@2A}>nct_eKug+zXD1NDvJA(rt(D)!6cfBEKO1^e^+CRc1|2SR^L-t=SMhtl*@>xJu)JYfqDT+5=zH1zOY`>Grd z8>4tVX8~g%QJ#DMQ=wW(8wN2jg!0%)H%J9`UY_`PhtE2XFxXQsjz*hzYtP#ZMF=Ux zFZeS-f(w9QTFe8K@HY;pDzobc>t8YjNS3#?t~V}hjR)hqc{REj)WKdo(Dt4t=L`ie^2W zS*DxC3A?@)e&9t}{B01m`}Ru1SBLNaH3VRY{KRnKWf`u3lat~LPDXP!VYIH=+$L~% zo8{-wNl-I|dHrOn_&Uk?y%5wiASb4(#aPE$?bjb=(Ib>Cjfh0SrTkZ1z>tER`nO+d1q0H4m0)>=(644wpyK z*VS-g&ic@;lvA|6Ln^r}=@Q?y*@c(3q4_>+sNnQ|8Mg$l(PH5_C#9MK_8>*&z zF~0)-Q(@TC{GNRUX~#S_eG8iwZ}d8++{23 zT)59v>4@+qiFm(PGss@zw+(a=1v`QQ@;js7yx1W!o1>oJh&T?lRgXT;a-Tcb$wd=B zGBmL+{ys;Y`iG7iDuK`qN>ASUA5X(t0BnqE|DIZ7MX)p8UT=OgG@RP7qcu3pwYN7| zNf?S`Jw+Lf>ueAx#R0$&%-Q?DL*XzA{Q41mZ8=%aFyqR?hMhXwAFi6${%(HLC2KZn z9SzdIDgwXPD$l{%Hq*Lq$z*n4IxpoJ)`yu41(YBgFrU$?X(CsZGzjkklEsJ$ycH=} z3{LnL6gSxOE7t|Jlgmdege@ogREI!+KO;_csq>@M(yw`6=IO}owQhswFtnzH+6(gl zr3iFL6}6WNh0D}MXuTU}Z@Szc#)SW=i}$uEeRcYt8UipxePX!svJ9_ubN8qRgpMyq zaX1@gYOZD=B09di@UTnT6qAumX4_hLect^18P{RJn_c09ho}p;*V-KX+;=^eT_-=Z z#xs~lhQ;KhvZ`Q<6_j4M0XDGX*B2I;sB?st5NS6@a-pCG_vD0Qk{n4$QZ{f)Ti>gc zvv(KR+(NMypzmsTiNS`B@&02t2?6^UsP(@#2;S5U8;IcN|Ff*wFJdzqyQ@E#P_b z#`Vv#IAZ$7OP3Nm?I@7DX4QV^-u9fU{p3&B<%bdgXKzECnmhj0d%nI!6)yCgO({L{ zAH+bzVLWkPzw$&k#g!&Dh6NIt%y?d_lcQLLwV^kLPgDQu76685PYl;ymZ8uV_ZcLV zx#n+Cs=`Qn6Ff`OjTsxaUmhg8Rt=J>XnM3vb%KBBvVmndSdBCV!S2HdSrg4w&GLF% z+Ab$;dI}yHf=x+(61z^>!t_k|Gm0-(nO-a*G{*SN;zuL9VTk`pj02<^PQ+CqTai%R z0WYApk?pz;h&xdaJp05VOn?icRX@9w<9?;iQ zTqQi~0p*`YPHLIQ0n29xq?#=02<7Ve7r>C3iEMRvzrxrht(F3@v0t!AzTfl?qSG zU0!wSH3+pRBcX(gJ4KQ8*-S6cA}AH6lvw<-sr~E(>Fj1gPiyk;mwjcgzYPb5k$lg# z&eU@l9&g?td&`R;Ugz!2k!;nvGC z#19@S{&{9#^L2Y>Gt}MqFd7?_TyqtNUj?*`{D-z2B~HU7J`zUx{&@Kwk{&QgX$}Jy zXACx>j1F&E3y^dP++!M|a|;LXz##&G$TOCTlZ^QzbJb3*P(ZC#^nSACHIylF#5YaJ zG~^e>R#RKUa`^n)alan+PAYT9g@z@@Bo03lz|hpkw|Fa;tOdL`myE2W28X9DNC$Fs zP~6bow6^--yjVDeFy=x9G2qXwdm)1<8|cV#*F5iaGl3&3HF@$dEDwMox%wb6>&jg_ z7gJk94{F@{=*B1qo4BLb6>=?0oWlYTZ0og2UkW}CDTCb|-KY(*ILygEi}_^EpUvD} zdFfJW&tW(RB7I4l_^$uceR22d%G`(FVN{(vVbh@9tamsAZ81OJ7`{4vPYnSWVm>k4 zd0B=6;~5;scBta?;b3bl(F{}AO9eAUr{9n^9TeumXu$4Rd1{JVuP6mOW{Q4VopD$$ z{4@|GOiK6&yGj+YN-X++C#8QvqrVVc{&-gb9huhF&a;bgH>2MO(s=YRZMF)M;lh1J}d?(YmAYd{8LmcZ#7ig`aC1(&zM`#-64U6Oq zB;vVA`!X?nk-p3VLqNTBE&FZCL2Ki7R_B3SosJ7zT}`ll`lxe%VP%iLq5(=sg=f@y zkq_#(6zF>YTHLKrRx${*gzayEMWx+a`)$YK-MGNzBK0+-PYrdqz2UaU9<}hpfPJ6Y zhR%$FRS0?Ta~Kw0#%V56+1#N0&Fz*AyxCEOf}6tNtUP35>ILOifdGAD_%!veZUJD3 z^~7-ZWf|fJ`Ek%*CLkw}zCXoagG(we(Sptdo0zF{YV1$eKM*^V=#qYtc@3z6M#%9Rt zs`cVng>+&683cDtnyOVfHxocHn;c?e(-J0Y^xdnR|M$3HY&JC*MMcCm2OYq^b;5&V zr`)Bc2o+J{pf6LL8VS|H#8W0(dH%FE3D+Vcz$tLK6eG-2r&UDVQXQW|NipyPAW++2 z_cPI$X^>If7{asi&%RrulGyUx+_4z{#g6vqS^Gv|^dp15@vJ)ZOij=S<|9h$(M4LbeRH4ok}F z|K1>&05BBrqV2keY2Ty@(D-waEh_abE);RxF}Qm$O+@g-HV)RgZ5BQHL|Ma>TTRr{ z?`I`Fmkr^759yAXgend#ZT7RC%vMeuWWH1nb*FuN-rFT|8-5V?fC>o;V>D_@Gbl40 znDNH&)#-a`2*42ciQ&=9GQ37qxyc1}kS14UJ{kg74PNXAJ3(mI{<7DzAe`5GHO@2p zg=S6D*L>EPAEW#{$=?S9B+i-DaI3?u!PoULspT;ZH^H{Y3l|heDsTtUkVeCFZagRG zobs~LmzDbpsh06cg}@CMzick+aZKchTd8=nLZn6rMer9;CE^b0qF9Rc01O$svXGJX zB!ki&$Ee1lM*a02E$t#NMOc+2M}!vXNbcu(NZMK#4e3RSik-@A?i^lC%dj& zYV@Ff`T) zRZXV5_3yn_N?^2!{vP2yJGZqi%mK8bT&}%pXdC=tp4Q309E;(GF_!(e_8+IvNgQiX zsb|fEp?C(M)}%e`h`|I;Hh-fp%UUo*4dnS%y8aF71WzTOD^a;Wj@S?A2{IpvEyB zw{43qzoJaSafonE4Us58aok#=FNxoBma%H76MlCXpwO7yYpIXoCI0=GhQ_Bg=%~%D zn2Pk=J?!1&H@t!H7L}!vXIk&>j>tw=Z6(@&C+RO9D`BC(^WhiN`{oA=u}t=LJ@0Q{ z%7X~wpIrb$A=b4elQoQ7$mAS8lCe*}t$umMmHS??<3)X(Djs$R2sVE-V>f%yrtSeNEGv2P4qGWdCk>Z~S^mvenY1-q(7+AR z9GB~Rl(}VT<6w}l~Uf>3X}tK!RHu{3}an< zE*wo(^x2aV{u1NBK3Jxbq@(?%jJCxPDVO}|FQV{6EMH~VGXGk{WS0H|(fD}L_fB!c zZGCQrq=@a-APPW~DHChun{>eI*;q&XSQfI*6#dk(H8A=vR4j}y8@FJ=flsk$uZxb| z>aR``;4^^;%7h_oN%Z=AW$xeugf*`zH=snh*B+?qZ&uc9tSjZZywu5y5rIbfIN20L z{PC@rbKW3@d_pCZ=vCe^H%(Ita*@J~TLFE^5+HuPUAc{}gW%-nFq~TQn*aReeRFCu zjC|COn(Kr=_8E;dSZjCVd8A`d`onJw|2Oon?+Re};fdk(%QCdk3DGn(9GxUtCh>r# zC;rNfwOQk;zTd?>vE?p}L`6y2*fZaIi|rX`yW$|P@i#jg{gYg4-Eq&pP17HcHMGJ< zhSS39__>2v7Ym~Gs~R%v)YNiIpJ)(6Fo7hRa>_`%qP4Fyr)yC?k4NQ(Caa-gdM0)E zEGZHq)R6f0rOA{h{=0o2`z;2jfe|F7HJcsh-XXxk!(%hdsF&T!>av1`%-jc#Ve;7OXA@Dq}esi7SLQx(~Cv*V@pzeVzTs?+#&vB^|aVRF{5RKuThL=&1sKaFRz zgpuXre#x&-jG%S@kY*+VDJ|=$8`^`el>5f;_3`^(M*xOIPYiEgmSGmq*D;hCT$0Gl zvTY@wUH?WC4ehN_v$H_x&m`HsmQKJ~*~qqkM|tt~qe*55jV+A`J%HZROM`p7gFlLx zQfYi-SZIp+VIXrqC#Rd*+8d_)tbxM}!gE}m`?wNyk&PoK%#acK+HX{9w3`-bYl4=w z)?V>XBSf>~vBC_p=cKLe5Wo;H=s2Vujj8ioC*p|i*(Pd*OA;C|ak;-!g?D2%YoI%j zzvCK`n>oaKro|_5R9oxCQbs&%)8kq2or4hRqXjQO8d8;7SA|pi*+ubNBz#(Sga5+QEfEv7w|iNrHJRGp>N@X zZ}a;HBCP!|P^!dkqasqy_X$`CVthLgAC1#b-QO7gZ|Gm&6~K`AiQ)arGK3iH($;O7 zylzr1f>>8f`O8Q^&AocwsVz_*;|z%@EUYE${1I=thv6)9Y!jCYdia*0f-3ncMy!DB zOOlg}7}Mhoi<0dfY#dfwt85ZWjY{grSuv=WAhn% z7iw5K9}(hdjR`BO?3(>x5!PCB_6CU8O4%lquq+4#z!0>g^{}s812kywqDJU% z|5|?voYmgA5WbhW8p1MD?4h}xNtoYveiaF-cPvZ%IYKecfyskis|a;?`<{PVC~Tg? zFhJNX*+-eI#Bp_ZytxS}F`Gario`&3ga|8w5N!)c?2X~;I8n3DFBx6~h(v~7qd)h0d1i*q^1zL3gB=#%9jPa zzF!R#L(m&=b*+Cka2W^q?o1?Af{S=`m;wwnd{JhT%2ShE6M??S=H3jzfvcKs1opa0 zD)s`C6_O`WqoZ$5-_qT*sTsaYK>UuZL30_`gL|Ooa$0seXF6&NkZfF&(a-P+|Mm~E zjXwWB$vxLQ;Mj|Ff{}M^(j>ryV8D8njND;o*?+Xdh$GCE=K5W~HJhSg58B{X+-Qr8 zc}_fsVT)gaIui>L|LD+frfc|Em@p`s5PT(ltQkEpT`^;_v^R$T8~WFG1u!IiVhH@Q z42OMH{tZd>O}pr`Bg1SWeuR@zc+Ua3z~st>I@0M*t@<%-$#2IDQ4{owFm;r_U2k|> zeh&~Kv!pmkhgn4%tN9~CDq~xddF$H+p8C{V7|CG7wOS zn7!|@)jVG`+0ZD>X0&#EO%(8uXl3~L_6R*V0ftCTfk{r>df9fPS(u$=Qb0}=l7uap zp(LfC6|wmVA#eq$Ro&*l9_)1c)pkiBm7Ne@`zJzd`nKV2emDn*I)2K<0opme!))~?Phyq&(kjT< zpThrP8j1ilgcK)8=^jbwaZ?I=xLrT6+#J6tDt$Qd5d^|{o>sjmY#4$Ap1tcv7;~20 zA{+QaO0JoEyH`_}oCz{t0vWN&KX~tAjR;@YhfZ?wC%A$-M`4^;vK>dd)kXC z`<5SnxK)9;XtTuAkKj}EF4W&FY7*h#__{Uo)(?noMy^0%8hzP;1KVnh&j*y~(R=6f z@pivFyq(rfl=9fEw5cX`+A32BG_CYowERYqT0xkEvQdu*EdLyMK=Pb^2ROMr9Jks# z7T+N(Y+o>7Z4}fchTtuzYGY@{+DZjg>*CY{^wAESuoTiF1guY8{

>^uT0VVis=p-{({7hUGJ8)SGPrRfydJP>Hh4o5%kCDphcd4;5+I^sr zf46KkfXh*WM)J zmp3_Vftlm_f^Q68D?*_E-Zz|iVrcQQ3@5xDu3NQ%(}`G3JG_&V>@c>9K;0BPYvsbQ z5BqK0W}tc!yQO3`n`Dnx2zH#!Z$dwCl^xa=-r9Tit!j-I@yt>z zAPtQ>RSG&heUrgr%_m&eysHqrIIl-2?x->jkw5LAIdw2PqIz8ENg?~Ck&XUB_?cvH z6uh-L`AaEVCgf_Xts@t}FvNF1bIz%$5nGATz6Yr-F>X^35xYF#>b4E_vL)~8R!bt` zCqAsZ)6yNsim7j2f3*okM>>v%=uo~trKi8U@pIA;J@IGFX=uf^%uQZ&dif-%CQ@p# z(%(0O9Pb1u;XsV8|L6RNiQIgarQ0?9sy)SA6m zA!2}(f-=bG<9@@hYbdnZYYuRGQCz^;WR`L7{$%<4n~}NJJTgQK4s_Dy5uvHH)n6kC zX8vTDNCk?LO|x@|)MU1sc4X)=NDto|dxlZBF{$w<^42m~N}<$+O&LRsdyTJ*=3E)T zPzviX@#`jKeux_=*MaK#0d5t(9tz42PVuOx_F3IW9s+(P_p#o8#Gon$jx2_?dblkba|5AfFVV`&Vbs-)} zG|G~iF{ZA7Eg12Q;j3mi_r%cpWf?kKk?EG<9blqtj^f-JuAcD#MF_^Vqhp`d>)GSS5e-hwHws@DHJc(V40Y?# z0OoQZ&2#H=j}DE=zZ~J*?cFolK{uhvMw4pRV9JX^1w4$&gG!Zf{K3EkM z-%Wixw9Hoo^y7`;t7bU=#L(tt8LB9M?(r%d9x)c)udvXPiVNE^x)#wo`E0g#A4eZr z=MGty>fH8l_MCy*BxP1GjU_$h3<_N6I73iI5-AF++OR}$k>J9q(!Yxgb2@Z502rog z>8AHwEs%LU)G8OB@(Wx@Or~Q+MZ_k~t5Y$}bhp!CE0rjQOGc;-t7$S21V>spsD|Qm zi-r}}W_2xx;8p@kfKZEQe9X`dDrG}N zm9ZSq$KydEu8@K~kj^UPMq|7+$~73iun#shn>#vkw)zP zIP8p*@6_Gj7`|$T3r`H~UY23Cv0+GO?L(16;vzJj?wTG0VYrX{Z?s=I9EpT{Hq5m33NBSU9-$GIS{u7yof!~i-#UWk zog8dDj0IM}2F3vAwxzQs*u0T2JCVzYQHY^^(Sq!OMJZraox(e|4)-~;u>8CZ2mh#j znOuy~0B!|y0hDOSG^ve-Vy!c@p3WVEAgP~7SS_F>n*71PFcm@{a$=)>(IMis>)@!u zYaW=u@pD)drRSK%JvRwQYmeYqE`sSfX}FcUX8@-l-G z>(KErs1$qW#*fk#TOOO@F|I6?n&=FWCu$spMs48;k83Sj7K_-ayP zfYA(mWv~+e6_6JDRb9^5=`{xoY&4Bll4zfJ!axBJ6h+i8!^(4i)8FB-baoR)1Juq$ zVMGN4Cm)jmX^1+)krt0yzci0ST=~0K9hcwp>Y%D;Yb+Oj6zY#yGT# z$>ftMRR0G$*8%9pKSfvj+;A%whBK~_(`NeL>o^C>%^Z~ zwP}`c?q&XKN+oYws!*KBX@Nh;kc#l>{KFW_ZLk#9Q(v}$gvc}`W%K~h#}u`KEy!0``3QnUrfhIk;2+M4zxIp96W%R zoJ2hJ#_&}$Tz+Ec^0Ev+Ohh)~>c98n_oZ!YedI^7XlWZ-mXWnLrqs~(B zRlZ+<-|a7JvGOOk(Ql5wsSN4rjQH7u=n@qB9vSZFEoy(d%7o`MQloEt7jCOs(XJ1B zy8Tf<6V)VqVedxI)B$B?0~fTW!gP!nzFP@>=+sI7H{t-hRhAVdyfrbvkYJP>HPa4x ziUG`N?!$dZE~eZ2tSmW*EdI)?UJBcMIuN!7ag&7gp3(rXTd8prb^ng)+11kYKY4LGQF!wz}f-HQi}tpj1t|eMA3^wOp7ie?3AKe!@P7Uw9c0nHZ>7R^b@1K_?P8 zEOT!RUp2#(Cx&h>%P`~eLq#vvw*K9Uj)^#qGcMz`_rZ5~KJcLkYOh+T8+oX3@&n); zAG}Hh33uP%Ushhhv*N;!VDDa{xZY~DY1O?jx$ z{$g*P{z2&*q-_^|>96x-H(`PMz;kAyLF-o5tvM`%6voc09WK2O*nl*wlt>V8;k6uV z5{9$3Eq|yGu_dK1eQ(dh`t{ust zW@??%0EPsdxncgEkbiW=J-pw|j$)xaWX3DcL_^%rd6aF?{orC~xkMy{a*QzQDYrDc z*zRz;NC=v8wZvXPHVCZeBDsIgh6UJ0a9*0xP%U>2?zb(kr4b2<{VXkQ_GMVpZ;myr zCwp%UUp2$kCx#v`%WzapI>7Xy01jQrDQSQd6^OF>6l`@^WOj-9A z#shD$0pJ=5ulS7%kFu>_@^jGiWT{liiM5Xm2aj2h6%@!rJ9%>W2!DcBl!^3a&2Fye zeDmx-v27~bK&=P>vxzk6{s?4FsZ0H(H2`5)CkLiW>=zP8_gYu+Zvex2Ee#$EuWxpu zDgUB*-ciS9PWc=@81M@mtH4<|+t7*&+X8Fk3Edyaj3jXm6lJXL)#T;xWp&D(j6q(` zVTvjN7$OWKr7tbT(;dzid?FOj``sZ-WOK}apVJom9!=FIr-WEyptZqcaD}dgYBIGt z{1fuFE`(N#F*)d+dMtX+Ka%G(rCH0Utz-(A_hTz{iEXXyTK|x~R<^ZHOEoR9<<@?5 zpnGHZsu`|5G4y&_hEC=ZGVTOl|3PL;if>TEwXd&*;?4H9NY-q`Tf0@K(O6NDHQY9Y zBUs~1TcG@Y@0GBu8(6Fsh9QEOH|l@6R`kg5vs_wvRDKs47;1C1H+lLQ1n8GS+39!Q z#qvM3c(^AZWHJ{z!X}dItMd53sT~CG=zk(4=iKrWS?O;UUz-z(0~oS3e_BRV7KBT^ zqgl(iy6i8DkxkJh(TWbz6Lp*>y%Ewmfh2_Gg4AizA0K0*`|9q_XCfbadlwd)*)gZ5OXvx!% zgu^W}3u~-UHb$2i2m4w&IsdZn4f{R|kCRd)h1Bc1-3Uj)D+HPQY3B~j+<{NDa%$Hb z3+3qev|bN3Q>^0&DEVIZwu~+yg>Y*hzDqXB%KnY8k-2Ed zeD{C=z8F?un%O_~^SB~ zK$9B=$Cc+Wu9$#EheWrS%hBoxW4`kL4GXur4V>YH3UHA{Ugz{bZX{EDW2E~dEtWvT zkj)~HIh6)Y5NLPi`|{-K!3<$lylrPyEsl;zDo#mB(do5p-CzKQyZZNo$JkSrcbIL5 zF$-#ipN1A8Awvl8C(lvIh$1N}m8Hl?N<};aarF@qPT$Yj4o0lhiy(1rCM0n+?@lGF z0T}LniAvM`0VR~4$WKNxO_nfg+}Kp42pa+qv@=FmWVI|A2CcO?zg-t_ck9tBYr+Hu z;m*lWA7o(-64{+;i1X(;O(~0sd21@=iuvX?2YHV7P$G#+ z1zH8SnXbqs_&>Mf(aa|h;;fJ+O%XSg+oAaOe<|`WiQ9ko{%=IHkID_AEv+ME(xfUI z|95ev$KNyP$8S*qYTAgM%Eu-qhu_55x%beF_URq4Bjqv{&=Ux z_>W?{kF>JV$2Qe`07LEf-`N7w;Z--S{CiI) zeJA#Oj@Nm8v^Sn`>$r*P*$;76_x4Q{q| zKj>Qbi5YMHghMwtG{g>KyZReKotK-cR49k>+9>-x$7X zhFebzgI|_mudOKM(4m-UywZnG3jz+qLoN~yEtK@`)k2q`aU#?aGLX(+;2wb|X~Lm- z-S-Vw9h(uFy!4pVNPNBCnqaG`k88tfp~ywVRJC44k%~LQ&|u*|<~HT!8a|@QmfOk& zOh-d_%C0NGXcD!J){4Drf9Qc|7jDssNI;JHG4C6LutxL%hAK25b>7XXE|ZM4tPBNp zex4d@IQnQv&YEuvL(VdVfAhK9A9M4hdy&20DZRvGj(q3`6`MqWdPGJsf4`MD*B?L{ z=3_Mp9u_9=;x=&i#W9$&KpwQN&ucGGMyOc6|A-v`sjxz5&+Jb$`wokf@|d_URRZQ@ z2bnnr=0HQZg2_@Y<~eIaSn*xL1u{PoGXV?@H^a^E6Mag2MZ;s!GbF>YTnW0KNKri&s(DvBKD^5w~=^Y z!{`O@b*ZhSQp5K<>S%+;(1It0j|?RWCc>@!hOg)#5>zOOdeB#NxPo`=+(^&6vljS8 z>(7b5?lbN@bdmcFTa^+^a?CG+_b}L;dgA$M*8TN%iJ1c!YU#?h7(hmA5IBcDTm0@# zu?qC3<3~G{LZ0xIv^IkPCiAbK=E<5Cp$y5)Jr+Ux1@r3TU*5}ws`NH{js>HwhyqGT z&{f89Hz;u#&=b0Xf-btM))`caHqHGcupVH&I<)y9wuYqY8iMAjwAf5U<|U$lY4dAb zQopUUm2Ji|Dpm&TS!u|Xm^Q4r{=l|G<54LehY*?j@bm6hYmEv_$wKH}^4q@Q>s9#Q zZ@)WF48vcRp*Ielot`Ql?FB_&I?RkqS=XYWvk>3MZ&_b75;NUGQh}$0+{aaiRU)In z`#Y@poOmSfMMv9{*XAmTpgZI#%^sW581B#`bNUoL^T~9CIKf|VA2o#gTrE%_l**0q zlXOQuqDAIoGJT%n{+RrEq2}`!lD(d=9o(KjAyP(WxtE3#RRBXxeu>4FTSDcHJz+Q3 zM==6~Kq0ed#sN{sGL=MFo;18)kFQ*zasN(WZULSfwYe*!{SX*PICfI%A?4Z0%WIGi zC;=V5mbl7CPW*0LEvf3O^$#%E2k)`g1ENCj@fr;#%Rw6)yp-Gu<_1*0R%N1KFZ4rd z)dfK&Qd12o*QRp>vw-KMp{_lRRxVo(1&Bw$G7G(N|0)rRBj{1__1`Q@UxyLT;kPt= zy$%5kcb^zWzAQsY`QxaYm9`0TF>asgsc*(ck(M-{F+vNMBVkmOdsuhBi2IDu)o$7z zAB+lUxoT`_IJmP1`m=w^)I^$ViU>@7WZ0i(Wd{KaGr6XhY%obby40{sPf;E&%4Iv6 zRG2T&GKqlnl|$@g3+)i{Vq7yX4bM1~QPm>~s3v_d1c%L{whUmXvmGZg>2KW4Oy4J* zeA`_~Y?R&u0;^^lXAcqhb!skOJ-VR#h?|(7WJV0Mtwbs&n@M4gzA@zJh?D9KgQlT< zfWFoSp}-RA=IuS@qMID{;B?RRI5uL8O^FlLb}K_a^?h&RNpGBfxJA zUp2$MCx+24%disI9StRAl3z_WzqJ|8Cf!nv!6YPTvX!B-48K2RULLgq8q_<*?e_fL z0|wg#BR1(@H}$dOLA^G3Us!BDB;?1YRL=obiB{O(k=oK7Z!*03dwwAb;v^d^)<)i~ zZQ>TZHfUot+lIt#+bEZuw@>PO+-;{q#t~#MN`2wTMh=r?b%3GcGk%8IYJb*FHe-$S zbI6qXVf*+E9-=fzdHbc2JJ&)?c#nB+pE^R@fKBCYM{0UyDlNXjU%u;Cd*0BlpjOR* z66X2dSH%-}HTYUJBN@k`KN%1(?MUp)Q8JCk5q?am%)1Px7X2+7qr=?qCb3w|pe+_l zsB~@glTtSPH5Zu(!u6b{6n{Dyd=ZD`{G#KbJ5D>ZOF|@)ksr+6XWyP)T&;^I{f*(P zX1M>vF!p5`W}s0qB*H?HT!$L3TP%0zk*|khR;&l58g}siiOs)tj=->`Z-MG>qkDsCtjG`?0gGgz<>?+gl!rmL?@xUF)s;LN99 zn}2z&$smyonXN~Sj;-`gx8?W$Z%Uii@%)RRL6n{K989ncc@{+$Ll7DkCye6>b10`T zY(%csz;~VP)D6ipw^sk$UHvk{sBACV~YPdy*jN_OjqcOp_RgW$382d{k(*t#=Pn~>}OW~IRk`1p&2L<8wbn%lfFeANsO zpBN^-EJKN8ZNc&y^$dSzf-d@U0(62KsgWMSSqLnF?H|Sg6b!=YS$K5qp){o~anr4` z@kS$I-@i#B@bu1owfML)*Hf|8gk5c-+xvCkmpS z6U+_CE@f=f;(T9q84cX2u`bfDMx~rBnls};^o+EY|NS1p6h*^1YY%-1?0p?<7R`kL1KO#B%#IJt9WDhsu>(bOJ>S%?S?ghwdAj8$l@Yn(&5Jvzlabwt2Q z<@^*aO>QJwcyU+R4R^q`L2*K#OW z(Qy(8P5k0aay!qrAY@!Z))G1hRH1VTbrzoc3kzBU7}f~beEggV($Ap&Z(f1SM~lt- ztS2_vVk~1bAPe4&RZ7udPQ0g7SMc;BD4Hh0D+3L zBK4i`s_)$E=vHi4`QbgB0K0!n)x|HDP%DJrF;;sXOUmnrt^ba}`&|sA8n|5_T3kLe zL)tov6@G9;Jub8kz{$H9oZD*D4JnNbTHgRDK?)wYhYNfo*{C;$ubScU z6T{S(Wf-c|C4|r|0?6omc*o#9RwPJw(ypXs zdS_ZUje0j9yjr6Lx+!9ILh$2=CLqSaSxuXFK6kJnsA@%#p_Vacv6rvz(gjmvz%K9P zLW&W09>O}|%*dmbuBjlFm?84l1Kqd!-<0h~@Gh8OKmbDwInZhn)aM_y1R2$TH~}pd zLTK}v#U-DQg0Xe)`jU<4MhL6<3brDNnuzx9{@i^>Agj)y{vDGJ?!ujNI3xoVP(s+; zEEt{|wu!WkdhPF(cn#2|y8%TR~_Z!ZdqyC!K8^c%4@brmc z#>+CC+SD{@omdt&_#=)L=BOxvyq_;v=ikIm*Air)E1pnix&IkM44tKn$zM=7fX6js z_+lr~5)bZ6ZEO{i{8~QQb8H71#Y-BZkAf6aq-YF3AC; z%9WTj=SmrFcK$F%n&3?OKr$DVz=cy4!)@Qs%-IpZ?-p)_GFLkhPR*bv&ibz*gT&f8 zMWG0~#_hjLJcr@@&GaY6d6N`}`d~2}2!4XUAgadTks^V7VdK(u*0-~73|}?Fe@_g5 zzAVF5ZA*d3Kint_suPUoj2bQ+X>){B&`$gPYpqV#jmY5+dD=pz!PY|oY?;?Mqsp17 z&SM>Ze%_637|^Hgyv%}+4DUsB7z*ZB&$g{};ejH#dbw-IVYhzLEjauozQk%6DQ1f= zG-e(P@bIefV<`D1lpx>eKiC-v`sJIMZUU~s_J1!r$jpf{Qx^f3IpVZXbe9RIrBJiWE|+%6Vh>su`X=G0b{d zhHSkK$FZ|{bv_P4DJKloG_k_n3ijZ<3Y$<2$YxWiUTUiUXry6fsUbiPyd-|$A$P-p zH<0dLPEFzO)WS0gT71SH}qTiP4vZwtH0EQwO`mI`L?eAyk5i8+L<_|Zr?kHT) zOWEw&90u2u#zh5t0&2Xw-W~Q_3I0s;v$y}_iHfynW;j~&i>55|ROr8}PMz_atlBTb zuwk4%3hJkOfq_S6)nz%0epPpI#6Z|@X3F(T4cb$oG66@Vh;^Rto~)k(Z5mU%hXYYD zgXBbyp*?5ABE#8^Ow-2BKW$&6W_bR@F#Ba0 z){QU~$Tm;%Wta_yWW^P^#?imyX)nZ5)8@Onj$YcT_j2={Y zr3fzMbDGi>$)Zd4zP)0N0}S@INqM6EhGIQ1qY=6jpy<7+0w2#ehOe68#S_Eamt`2= zN?s3hi~~tPN?$fj{qSkwCgso=t}4F(K}F?*?`{FScn*&kD>IxiH-&k6j`h0jHws=D z9X=hH#-_!LR;mB54HFsmw*Od!X=9%>`fWShTOzU()v@?Vg-m4g3$4I8DnmH zw$7`_XrLl=!2NJ6&A|@8Lp8&At@8Yx{A3y&*8T4+cEe#&nSIl}%^hysF&6bid}#b? z`MtxQ!;s*pt>(M(5hHTXUf#&bt=*r#WdS*>wmYz!Uj(qN(I#&UUp2$aCx-bi%W$7b zKoXn}6O*H1k-f+$Y#0?aERn`r1inV&!pEw_qJ$G{_2bDw>s^a&yiglv)fX&r? z+yhz1pp)Sx#G}VFMEt{^&xe-E%2=y@e;@KY!~JHMM^U!q*rapRtU@ninGgLFwukMG z^ySZdTh`xa*K;HZpng|TcWY7*zTxoFKLAnI;@-LXCH-M*ANgcXVD0noKq6laSmX5{ zp{@glh09bAuGONVX`p554adJ=Xh0!pBtp_{Zay4zrZdsT<2kh(0~nrZO#KL!kO%o|YdbjLBP?Y=^=#Pg`B8HQ;NN)zT6;YEN@~N{WoExwu zFv7FehHbUZT>fD8!x@&E=AUkAFz|eTUO~TutZlLWV>>Tfvh&99RWrPLVp#aH48b_D zsAGLb3asU|LaI>9zU4ZgEb~d`X?*?1%pfT*{{<<^Nf&#Z8!e@INPXouVgYhCF+s_O zIW}id>yGJp5BuYWh4WUm4Cn1MbN3O)w2gZ`QEdDu9!Xn2FEUYiFIaphr;SqGI6P*d zz0l6|UFdcsau*|(;3s-ZuCGIwvFU2NNC1Wua4-Tb){-Rfwsu{E<*p0dEGT~9<(@(2 z2Xs0>sWEMERaWRoN;k_9T6w?Z@wt&|aK3m4(Jp-6SYor1BUt`#*vcY`sh+K>uL;2q zorG;0RlnbxjNnRO=X6eu9Qrj_0m9-yB>qYULNnTBaimE&y$uI46>4RzXA9^-t%DnH z?^%y-N2?mlhZhNGrl0&wnn0Dic4x}_xwLY3!W= zBZwcQ$=@vnKc=DBs4pU@N|klSPs}^Lcj2a5y3l`*T$kYcELlRpxoT6f#Xx9>MD12g zD1ePZ0}-jtM1BL0zmHX&i(vsf7(96Y-+TqE_WUXbvI|U(5ttQz%ylhb(b_u9iLB4g zfieELaox&OJ^q-jG2Dc!JGAIaZYU zCk+Kt28UKkoXlK1Z4`ARWn}3=oXU81O}$L)?uM5?$eac3C?L(7ZhUu)O1PU*mL*pQ zqhrLH0RP7L$S`SqDx$ru)8P9wt|oA?R>}SHyFZO(za3jy>7c7j*5%&*M!EXj_8^Q1lZ%xK2 z_hl)xLcm1R`~Rrjb;y5Ef_1(Z-kP&NCFNN;Nwhk@4G zvkfmzIlU8k;mUoMmrWrtGkvPD9T!CXF(I%vGC^0|Nz_Gp>VxdP^;@9t%8!ZC{ zR7#wjQv@ZCO(`;lPD4$~9Urx;1$KPA?>4$bRKSs8AL+JG{;eoB!3Af(KvEqG&?O={ z#JGl0VRCW7fQym`BOM4l9N1@U?*ER!>{avKfr5_V50j_4%hBz@HJK_lp>y1))}6Y> zL25v*;#e6c1CvaBW6MY!z*IH-iznp#PL2v$6pc!9m87RXC z>+CEUFR;F7^{H1_KP$x#!pV;h z$R=wNA~dR#C5s#04YpXoCUbZE7SNR1$(cmcGH~K*rpJ#V{*)#yUEu2a(7P4)(DZ>C zQ;1q#^&t75qp(JWl)`2xl$*yzc${V0ty>JA+P$AHE652ApoDyRiO=lT=oep48b8c5 z1q-m00jPg@(h9%otgisW8)9dY$&zWe1fuCK7rD=biLRlr@GOYq@sco%0W4J3oqwK_ zhBuLmZa|En$;w9&D;+c0rHaCnV$2|)vUhbgxT_=1%-=0_eL4n9wFrOd<$_K*X+d<&M{3%RLhU3r3xZLlX<{|Z zzMBSzW4yyWTjL5kYT7vS-mH}kU`WuCkSI#3#|w6_+ZP;x=pCl-!@+4or{M44DMu$1 zBsJFqocfzi%INbLe$X|6duVatU;cIf)|_B{4sh)7LjJpp#<`7|=6e#x$%&1Ym&E`Y zUxt>~;an75=ia|f2mDA09vDlAp2TzrJH^Z9pb6-Q+4~B9CGG^jP`pMm_>lFX=;x&2 zyJ0TFSmQdR^o*U6(+=(AJChFKu9X3!IapdBeHoDcH-@j8;lmTdnwMpGL*do~@slf) zGD+eVenqerT-wPljte{<*i~wEb_1pdyN5}IYAA6wrL$q(h!4Qy_r zm%!SnlZ}<0jWKtpL17{ zq~hj6p(R|=(+z~uCgDCP^qByLKtN-zz=$5ilz}bW75r8Dz&iX2)%xBMKH@Ak-?XoZ z3Hl!(R-vMOV zxR@~{d0@dIpkDN1Rhxl!CT{pUXtHbyP#qK0!dFGAbYi0-v^u)0CWf`&()}0vK(T)t( zNN^{C^pcz<@Gdt!MD8I92aW%ay}SC#;`_Gc)pkW3f?LM`YP=qo*?@zU|MUMfrBa z4hjCQU<{8ys%*mYl5%)tm_>C=)<3c5-F6d3hx@V8vrC^rLd7D551Sl;xFw395c879 zNfb|LW^Ez3Z0i`a#ZNFD9|64!bYwhQM@>xSz+$^?eT5$X9A5aNs1g?j}o z+yT8KHnHh^ZYyV>qSyfNVSvPl&hOIB(N@F{tHeIW?lE6A$mD}@BNs=hIN)eM237&g8v z!U)VW%Fp_+K)#xZ4=XE^aK!hKFe)Ff@-Tmno1!bfOKr!DGS&hCd*vAu<$HP zXSwyzwa?c@K>SUb-eeBn%gNe$ z9)3}UaQ+;IKApqK@MP-lIGG(2JPy(@v=J#QSBSq9=xJw(>KBPU9y0uxDcn{23O0zZUbcyzbu^zG{Y`PYhdMmZ8aK z#TnB0ivfZ=UV5$yS>Ofo->E z7of^8C086pkQ;Dd)ZZVRB=i)D_UQNw2E}EdUJ9jOMNA*%GX!J{V3>oOs=C$fS<`ym zLFexPxjf8+N}mj6COs_Q|4O<~lMkH1E%`nrp6 z0P{HvQTZj?=OmK6Vy42nUVzHdIcK-@8<*lsJXJZZyYB`<)qe;LwQIT z#$Bg^nMM3Yd>l%z&FDGsmqvBiP7DaVj=0rR&x}AM-gV3L9CU6~K-?%})2Sro8M&#f zT}a)N0fW&E-U**NvlU?=hA}3wc7y!y35&>ZuZfehu0xDQ}Z9)OF> zSQ>5|M|j=L6R)b!kRI@so_a3&c;t@zJsU!UV7VxWbqO^Mu>W0NZcCi8b0SZGDVn

HZiUIhv4DpvV>ibMn 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%0AwXAk3t5kN9is+gv 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ĊJ#djLzJ~K?x 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 diff --git a/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java index 877f17de4..df27720cd 100644 --- a/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/GenesisConfigOptions.java @@ -78,7 +78,7 @@ public interface GenesisConfigOptions { * @return the boolean */ default boolean isConsensusMigration() { - return isIbft2() && isQbft(); + return (isIbft2() || isIbftLegacy()) && isQbft(); } /** @@ -88,6 +88,13 @@ public interface GenesisConfigOptions { */ String getConsensusEngine(); + /** + * Gets ibft legacy config options. + * + * @return the ibft legacy config options + */ + IbftLegacyConfigOptions getIbftLegacyConfigOptions(); + /** * Gets checkpoint options. * diff --git a/config/src/main/java/org/hyperledger/besu/config/IbftLegacyConfigOptions.java b/config/src/main/java/org/hyperledger/besu/config/IbftLegacyConfigOptions.java new file mode 100644 index 000000000..8208ba718 --- /dev/null +++ b/config/src/main/java/org/hyperledger/besu/config/IbftLegacyConfigOptions.java @@ -0,0 +1,73 @@ +/* + * Copyright ConsenSys AG. + * + * 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.config; + +import java.util.Map; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.collect.ImmutableMap; + +/** The Ibft legacy config options. */ +public class IbftLegacyConfigOptions { + + /** The constant DEFAULT. */ + public static final IbftLegacyConfigOptions DEFAULT = + new IbftLegacyConfigOptions(JsonUtil.createEmptyObjectNode()); + + private static final long DEFAULT_EPOCH_LENGTH = 30_000; + private static final int DEFAULT_BLOCK_PERIOD_SECONDS = 1; + + private final ObjectNode ibftConfigRoot; + + /** + * Instantiates a new Ibft legacy config options. + * + * @param ibftConfigRoot the ibft config root + */ + IbftLegacyConfigOptions(final ObjectNode ibftConfigRoot) { + this.ibftConfigRoot = ibftConfigRoot; + } + + /* + */ + /** + * Gets epoch length. + * + * @return the epoch length + */ + public long getEpochLength() { + return JsonUtil.getLong(ibftConfigRoot, "epochlength", DEFAULT_EPOCH_LENGTH); + } + + /** + * Gets block period seconds. + * + * @return the block period seconds + */ + public int getBlockPeriodSeconds() { + return JsonUtil.getPositiveInt( + ibftConfigRoot, "blockperiodseconds", DEFAULT_BLOCK_PERIOD_SECONDS); + } + + /** + * As map. + * + * @return the map + */ + Map asMap() { + final ImmutableMap.Builder builder = ImmutableMap.builder(); + return builder.build(); + } +} 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 9239d4977..80213dce1 100644 --- a/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/JsonGenesisConfigOptions.java @@ -118,6 +118,8 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions { return ETHASH_CONFIG_KEY; } else if (isIbft2()) { return IBFT2_CONFIG_KEY; + } else if (isIbftLegacy()) { + return IBFT_LEGACY_CONFIG_KEY; } else if (isQbft()) { return QBFT_CONFIG_KEY; } else if (isClique()) { @@ -157,6 +159,13 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions { return isQbft() || isClique() || isIbft2() || isIbftLegacy(); } + @Override + public IbftLegacyConfigOptions getIbftLegacyConfigOptions() { + return JsonUtil.getObjectNode(configRoot, IBFT_LEGACY_CONFIG_KEY) + .map(IbftLegacyConfigOptions::new) + .orElse(IbftLegacyConfigOptions.DEFAULT); + } + @Override public BftConfigOptions getBftConfigOptions() { final String fieldKey = isIbft2() ? IBFT2_CONFIG_KEY : QBFT_CONFIG_KEY; @@ -529,6 +538,9 @@ public class JsonGenesisConfigOptions implements GenesisConfigOptions { if (isEthHash()) { builder.put("ethash", getEthashConfigOptions().asMap()); } + if (isIbftLegacy()) { + builder.put("ibft", getIbftLegacyConfigOptions().asMap()); + } if (isIbft2()) { builder.put("ibft2", getBftConfigOptions().asMap()); } 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 2f6e6897a..9e289dcac 100644 --- a/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java +++ b/config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java @@ -116,6 +116,11 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions, Cloneable return false; } + @Override + public IbftLegacyConfigOptions getIbftLegacyConfigOptions() { + return IbftLegacyConfigOptions.DEFAULT; + } + @Override public boolean isIbft2() { return false; @@ -416,6 +421,9 @@ public class StubGenesisConfigOptions implements GenesisConfigOptions, Cloneable if (isEthHash()) { builder.put("ethash", getEthashConfigOptions().asMap()); } + if (isIbftLegacy()) { + builder.put("ibft", getIbftLegacyConfigOptions().asMap()); + } if (isIbft2()) { builder.put("ibft2", getBftConfigOptions().asMap()); } diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/EpochManager.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/EpochManager.java index 47bbb3e44..0f8ced4c3 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/EpochManager.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/EpochManager.java @@ -18,6 +18,7 @@ package org.hyperledger.besu.consensus.common; public class EpochManager { private final long epochLengthInBlocks; + private final long startBlock; /** * Instantiates a new Epoch manager. @@ -25,7 +26,18 @@ public class EpochManager { * @param epochLengthInBlocks the epoch length in blocks */ public EpochManager(final long epochLengthInBlocks) { + this(epochLengthInBlocks, 0); + } + + /** + * Instantiates a new Epoch manager. + * + * @param epochLengthInBlocks the epoch length in blocks + * @param startBlock the block number where the epoch counting starts + */ + public EpochManager(final long epochLengthInBlocks, final long startBlock) { this.epochLengthInBlocks = epochLengthInBlocks; + this.startBlock = startBlock; } /** @@ -35,7 +47,13 @@ public class EpochManager { * @return the boolean */ public boolean isEpochBlock(final long blockNumber) { - return (blockNumber % epochLengthInBlocks) == 0; + if (blockNumber < 0) { + throw new IllegalArgumentException("Block number must be 0 or greater."); + } + if (blockNumber < startBlock - 1) { + return false; + } + return (blockNumber - (startBlock == 0 ? 0 : startBlock - 1)) % epochLengthInBlocks == 0; } /** @@ -45,6 +63,9 @@ public class EpochManager { * @return the last epoch block */ public long getLastEpochBlock(final long blockNumber) { - return blockNumber - (blockNumber % epochLengthInBlocks); + if (blockNumber < startBlock) { + throw new IllegalArgumentException("Block number is before start block."); + } + return startBlock + ((blockNumber - startBlock) / epochLengthInBlocks) * epochLengthInBlocks; } } diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinator.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinator.java index 6450a108f..1cceeb833 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinator.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingMiningCoordinator.java @@ -54,7 +54,7 @@ public class MigratingMiningCoordinator implements MiningCoordinator, BlockAdded this.miningCoordinatorSchedule = miningCoordinatorSchedule; this.blockchain = blockchain; this.activeMiningCoordinator = - this.miningCoordinatorSchedule.getFork(blockchain.getChainHeadBlockNumber()).getValue(); + this.miningCoordinatorSchedule.getFork(blockchain.getChainHeadBlockNumber() + 1).getValue(); } @Override diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java index 27cce3157..0fb18185c 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java @@ -45,6 +45,12 @@ public class MigratingProtocolContext extends ProtocolContext { @Override public C getConsensusContext(final Class klass) { final long chainHeadBlockNumber = getBlockchain().getChainHeadBlockNumber(); - return consensusContextSchedule.getFork(chainHeadBlockNumber).getValue().as(klass); + return consensusContextSchedule.getFork(chainHeadBlockNumber + 1).getValue().as(klass); + } + + @Override + public C getConsensusContext( + final Class klass, final long blockNumber) { + return consensusContextSchedule.getFork(blockNumber).getValue().as(klass); } } diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinator.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinator.java index 79ee9af1a..dbc11a414 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinator.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/blockcreation/BftMiningCoordinator.java @@ -28,6 +28,8 @@ import org.hyperledger.besu.ethereum.chain.Blockchain; import org.hyperledger.besu.ethereum.core.Block; import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.Transaction; +import org.hyperledger.besu.ethereum.eth.sync.state.SyncState; +import org.hyperledger.besu.plugin.services.BesuEvents; import java.util.List; import java.util.Optional; @@ -65,6 +67,8 @@ public class BftMiningCoordinator implements MiningCoordinator, BlockAddedObserv private long blockAddedObserverId; private final AtomicReference state = new AtomicReference<>(State.PAUSED); + private SyncState syncState; + /** * Instantiates a new Bft mining coordinator. * @@ -91,6 +95,35 @@ public class BftMiningCoordinator implements MiningCoordinator, BlockAddedObserv this.blockchain = blockchain; } + /** + * Instantiates a new Bft mining coordinator. + * + * @param bftExecutors the bft executors + * @param eventHandler the event handler + * @param bftProcessor the bft processor + * @param blockCreatorFactory the block creator factory + * @param blockchain the blockchain + * @param eventQueue the event queue + * @param syncState the sync state + */ + public BftMiningCoordinator( + final BftExecutors bftExecutors, + final BftEventHandler eventHandler, + final BftProcessor bftProcessor, + final BftBlockCreatorFactory blockCreatorFactory, + final Blockchain blockchain, + final BftEventQueue eventQueue, + final SyncState syncState) { + this.bftExecutors = bftExecutors; + this.eventHandler = eventHandler; + this.bftProcessor = bftProcessor; + this.blockCreatorFactory = blockCreatorFactory; + this.eventQueue = eventQueue; + + this.blockchain = blockchain; + this.syncState = syncState; + } + @Override public void start() { if (state.compareAndSet(State.IDLE, State.RUNNING) @@ -120,6 +153,41 @@ public class BftMiningCoordinator implements MiningCoordinator, BlockAddedObserv } } + @Override + public void subscribe() { + if (syncState == null) { + return; + } + syncState.subscribeSyncStatus( + syncStatus -> { + if (syncState.syncTarget().isPresent()) { + // We're syncing so stop doing other stuff + LOG.info("Stopping BFT mining coordinator while we are syncing"); + stop(); + } else { + LOG.info("Starting BFT mining coordinator following sync"); + enable(); + start(); + } + }); + + syncState.subscribeCompletionReached( + new BesuEvents.InitialSyncCompletionListener() { + @Override + public void onInitialSyncCompleted() { + LOG.info("Starting BFT mining coordinator following initial sync"); + enable(); + start(); + } + + @Override + public void onInitialSyncRestart() { + // Nothing to do. The mining coordinator won't be started until + // sync has completed. + } + }); + } + @Override public void awaitStop() throws InterruptedException { bftExecutors.awaitStop(); diff --git a/consensus/ibftlegacy/build.gradle b/consensus/ibftlegacy/build.gradle new file mode 100644 index 000000000..dbb55768f --- /dev/null +++ b/consensus/ibftlegacy/build.gradle @@ -0,0 +1,55 @@ +apply plugin: 'java-library' + +jar { + archiveBaseName = 'besu-ibftlegacy' + manifest { + attributes( + 'Specification-Title': archiveBaseName, + 'Specification-Version': project.version, + 'Implementation-Title': archiveBaseName, + 'Implementation-Version': calculateVersion(), + 'Commit-Hash': getGitCommitDetails(40).hash + ) + } +} + +dependencies { + implementation project(':config') + implementation project(':consensus:common') + implementation project(':consensus:ibft') + implementation project(':crypto:algorithms') + implementation project(':datatypes') + implementation project(':ethereum:api') + implementation project(':ethereum:blockcreation') + implementation project(':ethereum:core') + implementation project(':ethereum:eth') + implementation project(':ethereum:p2p') + implementation project(':ethereum:rlp') + implementation project(':evm') + implementation project(':metrics:core') + implementation project(':services:kvstore') + + implementation 'com.google.guava:guava' + implementation 'io.vertx:vertx-core' + implementation 'com.fasterxml.jackson.core:jackson-databind' + implementation 'io.tmio:tuweni-bytes' + implementation 'io.tmio:tuweni-units' + + testImplementation project(path: ':consensus:common', configuration: 'testSupportArtifacts') + testImplementation project(path: ':consensus:ibft', configuration: 'testSupportArtifacts') + testImplementation project(path: ':ethereum:core', configuration: 'testSupportArtifacts') + testImplementation project(path: ':ethereum:eth', configuration: 'testSupportArtifacts') + testImplementation project(':metrics:core') + testImplementation project(':testutil') + + integrationTestImplementation 'org.assertj:assertj-core' + integrationTestImplementation 'org.junit.jupiter:junit-jupiter-api' + integrationTestImplementation 'org.mockito:mockito-core' + integrationTestImplementation 'org.mockito:mockito-junit-jupiter' + + testImplementation 'org.assertj:assertj-core' + testImplementation 'org.junit.jupiter:junit-jupiter' + testImplementation 'org.awaitility:awaitility' + testImplementation 'org.mockito:mockito-core' + testImplementation 'org.mockito:mockito-junit-jupiter' +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHashing.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHashing.java new file mode 100644 index 000000000..7f7ecf323 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHashing.java @@ -0,0 +1,169 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import org.hyperledger.besu.consensus.common.bft.BftBlockHeaderFunctions; +import org.hyperledger.besu.consensus.common.bft.BftExtraData; +import org.hyperledger.besu.crypto.SECPSignature; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.datatypes.Hash; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.core.BlockHeaderBuilder; +import org.hyperledger.besu.ethereum.core.Util; +import org.hyperledger.besu.ethereum.rlp.BytesValueRLPOutput; + +import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import org.apache.tuweni.bytes.Bytes; + +/** The Ibft block hashing. */ +public class IbftBlockHashing { + + /** Default constructor */ + public IbftBlockHashing() {} + + private static final Bytes COMMIT_MSG_CODE = Bytes.wrap(new byte[] {2}); + private static final IbftExtraDataCodec ibftExtraDataCodec = new IbftExtraDataCodec(); + + /** + * Constructs a hash of the block header, suitable for use when creating the proposer seal. The + * extra data is modified to have a null proposer seal and empty list of committed seals. + * + * @param header The header for which a proposer seal is to be calculated + * @param ibftExtraData The extra data block which is to be inserted to the header once seal is + * calculated + * @return the hash of the header suitable for signing as the proposer seal + */ + public static Hash calculateDataHashForProposerSeal( + final BlockHeader header, final BftExtraData ibftExtraData) { + final Bytes headerRlp = + serializeHeader(header, () -> encodeExtraDataWithoutCommittedSeals(ibftExtraData, null)); + + // Proposer hash is the hash of the hash + return Hash.hash(Hash.hash(headerRlp)); + } + + /** + * Constructs a hash of the block header suitable for signing as a committed seal. The extra data + * in the hash uses an empty list for the committed seals. + * + * @param header The header for which a proposer seal is to be calculated (without extra data) + * @param ibftExtraData The extra data block which is to be inserted to the header once seal is + * calculated + * @return the hash of the header including the validator and proposer seal in the extra data + */ + public static Hash calculateDataHashForCommittedSeal( + final BlockHeader header, final IbftLegacyExtraData ibftExtraData) { + // The data signed by a committer is an array of [Hash, COMMIT_MSG_CODE] + final Hash dataHash = Hash.hash(serializeHeaderWithoutCommittedSeals(header, ibftExtraData)); + final Bytes seal = Bytes.wrap(dataHash, COMMIT_MSG_CODE); + return Hash.hash(seal); + } + + /** + * Constructs a hash of the block header, but omits the committerSeals (as this changes on each of + * the potentially circulated blocks at the current chain height). + * + * @param header The header for which a block hash is to be calculated + * @return the hash of the header including the validator and proposer seal in the extra data + */ + public static Hash calculateHashOfIbftBlockOnchain(final BlockHeader header) { + final IbftLegacyExtraData ibftExtraData = ibftExtraDataCodec.decode(header); + Hash hash = Hash.hash(serializeHeaderWithoutCommittedSeals(header, ibftExtraData)); + return hash; + } + + private static Bytes serializeHeaderWithoutCommittedSeals( + final BlockHeader header, final IbftLegacyExtraData ibftExtraData) { + return serializeHeader( + header, + () -> encodeExtraDataWithoutCommittedSeals(ibftExtraData, ibftExtraData.getProposerSeal())); + } + + /** + * Recovers the proposer's {@link Address} from the proposer seal. + * + * @param header the block header that was signed by the proposer seal + * @param ibftExtraData the parsed IBftExtraData from the header + * @return the proposer address + */ + public static Address recoverProposerAddress( + final BlockHeader header, final IbftLegacyExtraData ibftExtraData) { + final Hash proposerHash = calculateDataHashForProposerSeal(header, ibftExtraData); + Address addr = Util.signatureToAddress(ibftExtraData.getProposerSeal(), proposerHash); + return addr; + } + + /** + * Recovers the {@link Address} for each validator that contributed a committed seal to the block. + * + * @param header the block header that was signed by the committed seals + * @param ibftExtraData the parsed IBftExtraData from the header + * @return the addresses of validators that provided a committed seal + */ + public static List

recoverCommitterAddresses( + final BlockHeader header, final IbftLegacyExtraData ibftExtraData) { + final Hash committerHash = + IbftBlockHashing.calculateDataHashForCommittedSeal(header, ibftExtraData); + + return ibftExtraData.getSeals().stream() + .map(p -> Util.signatureToAddress(p, committerHash)) + .collect(Collectors.toList()); + } + + private static Bytes encodeExtraDataWithoutCommittedSeals( + final BftExtraData ibftExtraData, final SECPSignature proposerSeal) { + final BytesValueRLPOutput extraDataEncoding = new BytesValueRLPOutput(); + extraDataEncoding.startList(); + extraDataEncoding.writeList( + ibftExtraData.getValidators(), (validator, rlp) -> rlp.writeBytes(validator)); + + if (proposerSeal != null) { + extraDataEncoding.writeBytes(proposerSeal.encodedBytes()); + } else { + extraDataEncoding.writeNull(); + } + + // Represents an empty committer list (i.e this is not included in the hashing of the block) + extraDataEncoding.writeEmptyList(); + + extraDataEncoding.endList(); + + Bytes vanityBytes = ibftExtraData.getVanityData(); + + return Bytes.wrap(vanityBytes, extraDataEncoding.encoded()); + } + + private static Bytes serializeHeader( + final BlockHeader header, final Supplier extraDataSerializer) { + // create a block header which is a copy of the header supplied as parameter except of the + // extraData field + final BlockHeaderBuilder builder = BlockHeaderBuilder.fromHeader(header); + builder.blockHeaderFunctions(BftBlockHeaderFunctions.forOnchainBlock(ibftExtraDataCodec)); + + // set the extraData field using the supplied extraDataSerializer if the block height is not 0 + if (header.getNumber() == BlockHeader.GENESIS_BLOCK_NUMBER) { + builder.extraData(header.getExtraData()); + } else { + builder.extraData(extraDataSerializer.get()); + } + + final BytesValueRLPOutput out = new BytesValueRLPOutput(); + builder.buildBlockHeader().writeTo(out); + return out.encoded(); + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHeaderValidationRulesetFactory.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHeaderValidationRulesetFactory.java new file mode 100644 index 000000000..a1047d08d --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftBlockHeaderValidationRulesetFactory.java @@ -0,0 +1,93 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecification.DEFAULT_MAX_GAS_LIMIT; +import static org.hyperledger.besu.ethereum.mainnet.AbstractGasLimitSpecification.DEFAULT_MIN_GAS_LIMIT; + +import org.hyperledger.besu.consensus.ibftlegacy.headervalidationrules.IbftExtraDataValidationRule; +import org.hyperledger.besu.consensus.ibftlegacy.headervalidationrules.VoteValidationRule; +import org.hyperledger.besu.datatypes.Hash; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.mainnet.BlockHeaderValidator; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.AncestryValidationRule; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.ConstantFieldValidationRule; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.GasLimitRangeAndDeltaValidationRule; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.GasUsageValidationRule; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.TimestampBoundedByFutureParameter; +import org.hyperledger.besu.ethereum.mainnet.headervalidationrules.TimestampMoreRecentThanParent; + +import org.apache.tuweni.units.bigints.UInt256; + +/** The Ibft block header validation ruleset factory. */ +public class IbftBlockHeaderValidationRulesetFactory { + + /** Default constructor */ + public IbftBlockHeaderValidationRulesetFactory() {} + + /** + * Produces a BlockHeaderValidator configured for assessing ibft block headers which are to form + * part of the BlockChain (i.e. not proposed blocks, which do not contain commit seals) + * + * @param secondsBetweenBlocks the minimum number of seconds which must elapse between blocks. + * @param ceil2nBy3Block the block after which 2/3n commit seals must exist, rather than 2F+1 + * @return BlockHeaderValidator configured for assessing ibft block headers + */ + public static BlockHeaderValidator.Builder ibftBlockHeaderValidatorBuilder( + final long secondsBetweenBlocks, final long ceil2nBy3Block) { + return createBlockHeaderValidatorBuilder(secondsBetweenBlocks, true, ceil2nBy3Block); + } + + /** + * Creates a builder for the IBFT block header validator. + * + * @param secondsBetweenBlocks the minimum number of seconds which must elapse between blocks. + * @return a builder for the IBFT block header validator + */ + public static BlockHeaderValidator.Builder ibftBlockHeaderValidatorBuilder( + final long secondsBetweenBlocks) { + return createBlockHeaderValidatorBuilder(secondsBetweenBlocks); + } + + private static BlockHeaderValidator.Builder createBlockHeaderValidatorBuilder( + final long secondsBetweenBlocks, + final boolean validateCommitSeals, + final long ceil2nBy3Block) { + BlockHeaderValidator.Builder builder = createBlockHeaderValidatorBuilder(secondsBetweenBlocks); + builder.addRule(new IbftExtraDataValidationRule(validateCommitSeals, ceil2nBy3Block)); + return builder; + } + + private static BlockHeaderValidator.Builder createBlockHeaderValidatorBuilder( + final long secondsBetweenBlocks) { + return new BlockHeaderValidator.Builder() + .addRule(new AncestryValidationRule()) + .addRule(new GasUsageValidationRule()) + .addRule( + new GasLimitRangeAndDeltaValidationRule(DEFAULT_MIN_GAS_LIMIT, DEFAULT_MAX_GAS_LIMIT)) + .addRule(new TimestampBoundedByFutureParameter(1)) + .addRule(new TimestampMoreRecentThanParent(secondsBetweenBlocks)) + .addRule( + new ConstantFieldValidationRule<>( + "MixHash", BlockHeader::getMixHash, IbftHelpers.EXPECTED_MIX_HASH)) + .addRule( + new ConstantFieldValidationRule<>( + "OmmersHash", BlockHeader::getOmmersHash, Hash.EMPTY_LIST_HASH)) + .addRule( + new ConstantFieldValidationRule<>( + "Difficulty", BlockHeader::getDifficulty, UInt256.ONE)) + .addRule(new VoteValidationRule()); + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftExtraDataCodec.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftExtraDataCodec.java new file mode 100644 index 000000000..06a0be202 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftExtraDataCodec.java @@ -0,0 +1,113 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import static com.google.common.base.Preconditions.checkArgument; + +import org.hyperledger.besu.consensus.common.bft.BftExtraData; +import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec; +import org.hyperledger.besu.crypto.SECPSignature; +import org.hyperledger.besu.crypto.SignatureAlgorithm; +import org.hyperledger.besu.crypto.SignatureAlgorithmFactory; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.rlp.BytesValueRLPInput; +import org.hyperledger.besu.ethereum.rlp.RLPInput; + +import java.util.Collection; + +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import org.apache.tuweni.bytes.Bytes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Represents encoder/decoder of the serialized data structure stored in the extraData field of the + * BlockHeader used when operating under an IBFT consensus mechanism. + */ +public class IbftExtraDataCodec extends BftExtraDataCodec { + + /** The constant EXTRA_VANITY_LENGTH. */ + public static final int EXTRA_VANITY_LENGTH = 32; + + private static final Supplier SIGNATURE_ALGORITHM = + Suppliers.memoize(SignatureAlgorithmFactory::getInstance); + + private static final Logger LOG = LoggerFactory.getLogger(IbftExtraDataCodec.class); + + /** Default constructor */ + public IbftExtraDataCodec() {} + + /** + * Decode. + * + * @param blockHeader the block header + * @return the bft extra data + */ + @Override + public IbftLegacyExtraData decode(final BlockHeader blockHeader) { + final Object inputExtraData = blockHeader.getParsedExtraData(); + if (inputExtraData instanceof IbftLegacyExtraData) { + return (IbftLegacyExtraData) inputExtraData; + } + LOG.warn( + "Expected a BftExtraData instance but got {}. Reparsing required.", + inputExtraData != null ? inputExtraData.getClass().getName() : "null"); + return decodeRaw(blockHeader.getExtraData()); + } + + /** + * Decode raw input and return ibft extra data. + * + * @param input the input + * @return the ibft extra data + */ + @Override + public IbftLegacyExtraData decodeRaw(final Bytes input) { + checkArgument( + input.size() > EXTRA_VANITY_LENGTH, + "Invalid Bytes supplied - too short to produce a valid IBFT Extra Data object."); + + final Bytes vanityData = input.slice(0, EXTRA_VANITY_LENGTH); + + final Bytes rlpData = input.slice(EXTRA_VANITY_LENGTH); + final RLPInput rlpInput = new BytesValueRLPInput(rlpData, false); + + rlpInput.enterList(); // This accounts for the "root node" which contains IBFT data items. + final Collection
validators = rlpInput.readList(Address::readFrom); + final SECPSignature proposerSeal = parseProposerSeal(rlpInput); + final Collection seals = + rlpInput.readList(rlp -> SIGNATURE_ALGORITHM.get().decodeSignature(rlp.readBytes())); + rlpInput.leaveList(); + + return new IbftLegacyExtraData(vanityData, seals, proposerSeal, validators); + } + + private static SECPSignature parseProposerSeal(final RLPInput rlpInput) { + final Bytes data = rlpInput.readBytes(); + return data.isZero() ? null : SIGNATURE_ALGORITHM.get().decodeSignature(data); + } + + /** + * Encode extra data to bytes. + * + * @return the bytes + */ + @Override + public Bytes encode(final BftExtraData bftExtraData, final EncodingType encodingType) { + throw new UnsupportedOperationException("The encode method is not supported."); + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftHelpers.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftHelpers.java new file mode 100644 index 000000000..978915c83 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftHelpers.java @@ -0,0 +1,38 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import org.hyperledger.besu.datatypes.Hash; + +/** The Ibft helpers utility class. */ +public class IbftHelpers { + /** Default constructor */ + public IbftHelpers() {} + + /** The constant EXPECTED_MIX_HASH. */ + public static final Hash EXPECTED_MIX_HASH = + Hash.fromHexString("0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365"); + + /** + * Calculate required validator quorum. + * + * @param validatorCount the validator count + * @return the int + */ + public static int calculateRequiredValidatorQuorum(final int validatorCount) { + final int F = (validatorCount - 1) / 3; + return (2 * F) + 1; + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyBlockInterface.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyBlockInterface.java new file mode 100644 index 000000000..436bb2f53 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyBlockInterface.java @@ -0,0 +1,103 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import org.hyperledger.besu.consensus.common.bft.BftBlockHashing; +import org.hyperledger.besu.consensus.common.bft.BftBlockHeaderFunctions; +import org.hyperledger.besu.consensus.common.bft.BftBlockInterface; +import org.hyperledger.besu.consensus.common.bft.BftExtraDataCodec; +import org.hyperledger.besu.consensus.common.validator.ValidatorVote; +import org.hyperledger.besu.consensus.common.validator.VoteType; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.ethereum.core.BlockHeader; + +import java.util.Collection; +import java.util.Optional; + +import com.google.common.collect.ImmutableBiMap; +import org.apache.tuweni.bytes.Bytes; + +/** The Ibft legacy block interface. */ +public class IbftLegacyBlockInterface extends BftBlockInterface { + + /** The constant NO_VOTE_SUBJECT. */ + public static final Address NO_VOTE_SUBJECT = Address.wrap(Bytes.wrap(new byte[Address.SIZE])); + + /** The constant ADD_NONCE. */ + public static final long ADD_NONCE = 0xFFFFFFFFFFFFFFFFL; + + /** The constant DROP_NONCE. */ + public static final long DROP_NONCE = 0x0L; + + private static final ImmutableBiMap voteToValue = + ImmutableBiMap.of( + VoteType.ADD, ADD_NONCE, + VoteType.DROP, DROP_NONCE); + + private static final IbftExtraDataCodec ibftExtraDataCodec = new IbftExtraDataCodec(); + + /** + * Constructor for IbftLegacyBlockInterface. + * + * @param bftExtraDataCodec the codec for BFT extra data + */ + public IbftLegacyBlockInterface(final BftExtraDataCodec bftExtraDataCodec) { + super(bftExtraDataCodec); + } + + @Override + public Address getProposerOfBlock(final BlockHeader header) { + final IbftLegacyExtraData ibftExtraData = ibftExtraDataCodec.decode(header); + return IbftBlockHashing.recoverProposerAddress(header, ibftExtraData); + } + + @Override + public Address getProposerOfBlock(final org.hyperledger.besu.plugin.data.BlockHeader header) { + return getProposerOfBlock( + BlockHeader.convertPluginBlockHeader( + header, + new BftBlockHeaderFunctions( + h -> new BftBlockHashing(ibftExtraDataCodec).calculateDataHashForCommittedSeal(h), + ibftExtraDataCodec))); + } + + @Override + public Optional extractVoteFromHeader(final BlockHeader header) { + final Address candidate = header.getCoinbase(); + if (!candidate.equals(NO_VOTE_SUBJECT)) { + final Address proposer = getProposerOfBlock(header); + final VoteType votePolarity = voteToValue.inverse().get(header.getNonce()); + final Address recipient = header.getCoinbase(); + + return Optional.of(new ValidatorVote(votePolarity, proposer, recipient)); + } + return Optional.empty(); + } + + @Override + public Collection
validatorsInBlock(final BlockHeader header) { + return ibftExtraDataCodec.decode(header).getValidators(); + } + + /** + * Is valid vote value. + * + * @param value the value + * @return the boolean + */ + public static boolean isValidVoteValue(final long value) { + return voteToValue.values().contains(value); + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyExtraData.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyExtraData.java new file mode 100644 index 000000000..1d2c6c37b --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftLegacyExtraData.java @@ -0,0 +1,61 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import org.hyperledger.besu.consensus.common.bft.BftExtraData; +import org.hyperledger.besu.crypto.SECPSignature; +import org.hyperledger.besu.datatypes.Address; + +import java.util.Collection; +import java.util.Optional; + +import org.apache.tuweni.bytes.Bytes; + +/** The Ibft Legacy extra data. */ +public class IbftLegacyExtraData extends BftExtraData { + + private final SECPSignature proposerSeal; + + /** + * Instantiates a new Bft extra data. + * + * @param vanityData the vanity data + * @param seals the seals + * @param validators the validators + * @param proposerSeal the proposer seal + */ + public IbftLegacyExtraData( + final Bytes vanityData, + final Collection seals, + final SECPSignature proposerSeal, + final Collection
validators) { + super(vanityData, seals, Optional.empty(), 0, validators); + this.proposerSeal = proposerSeal; + } + + /** + * Gets proposer seal. + * + * @return the proposer seal + */ + public SECPSignature getProposerSeal() { + return proposerSeal; + } + + @Override + public String toString() { + return "IbftLegacyExtraData{" + super.toString() + ", proposerSeal=" + proposerSeal + '}'; + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java new file mode 100644 index 000000000..d1640629a --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java @@ -0,0 +1,110 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy; + +import static org.hyperledger.besu.consensus.ibftlegacy.IbftBlockHeaderValidationRulesetFactory.ibftBlockHeaderValidatorBuilder; + +import org.hyperledger.besu.config.GenesisConfigOptions; +import org.hyperledger.besu.config.IbftLegacyConfigOptions; +import org.hyperledger.besu.consensus.common.bft.BftBlockHeaderFunctions; +import org.hyperledger.besu.datatypes.Wei; +import org.hyperledger.besu.ethereum.chain.BadBlockManager; +import org.hyperledger.besu.ethereum.core.PrivacyParameters; +import org.hyperledger.besu.ethereum.mainnet.MainnetBlockBodyValidator; +import org.hyperledger.besu.ethereum.mainnet.MainnetBlockImporter; +import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSpecs; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; +import org.hyperledger.besu.evm.internal.EvmConfiguration; + +import java.math.BigInteger; +import java.util.Optional; + +/** Defines the protocol behaviours for a blockchain using IBFT. */ +public class IbftProtocolSchedule { + + // Default constructor + /** Default constructor */ + public IbftProtocolSchedule() {} + + private static final BigInteger DEFAULT_CHAIN_ID = BigInteger.ONE; + private static final IbftExtraDataCodec ibftExtraDataCodec = new IbftExtraDataCodec(); + + /** + * Create protocol schedule. + * + * @param config the config + * @param privacyParameters the privacy parameters + * @param isRevertReasonEnabled the is revert reason enabled + * @param evmConfiguration the evm configuration + * @return the protocol schedule + */ + public static ProtocolSchedule create( + final GenesisConfigOptions config, + final PrivacyParameters privacyParameters, + final boolean isRevertReasonEnabled, + final EvmConfiguration evmConfiguration) { + final IbftLegacyConfigOptions ibftConfig = config.getIbftLegacyConfigOptions(); + final long blockPeriod = ibftConfig.getBlockPeriodSeconds(); + + return new ProtocolScheduleBuilder( + config, + Optional.of(DEFAULT_CHAIN_ID), + ProtocolSpecAdapters.create(0, builder -> applyIbftChanges(blockPeriod, builder)), + privacyParameters, + isRevertReasonEnabled, + evmConfiguration, + null, + new BadBlockManager(), + false, + null) + .createProtocolSchedule(); + } + + /** + * Create protocol schedule. + * + * @param config the config + * @param isRevertReasonEnabled the is revert reason enabled + * @param evmConfiguration the evm configuration + * @return the protocol schedule + */ + public static ProtocolSchedule create( + final GenesisConfigOptions config, + final boolean isRevertReasonEnabled, + final EvmConfiguration evmConfiguration) { + return create(config, PrivacyParameters.DEFAULT, isRevertReasonEnabled, evmConfiguration); + } + + private static ProtocolSpecBuilder applyIbftChanges( + final long secondsBetweenBlocks, final ProtocolSpecBuilder builder) { + return builder + .blockHeaderValidatorBuilder( + feeMarket -> ibftBlockHeaderValidatorBuilder(secondsBetweenBlocks)) + .ommerHeaderValidatorBuilder( + feeMarket -> ibftBlockHeaderValidatorBuilder(secondsBetweenBlocks)) + .blockBodyValidatorBuilder(MainnetBlockBodyValidator::new) + .blockValidatorBuilder(MainnetProtocolSpecs.blockValidatorBuilder()) + .blockImporterBuilder(MainnetBlockImporter::new) + .difficultyCalculator((time, parent) -> BigInteger.ONE) + .blockReward(Wei.ZERO) + .skipZeroBlockRewards(true) + .blockHeaderFunctions( + new BftBlockHeaderFunctions( + IbftBlockHashing::calculateHashOfIbftBlockOnchain, ibftExtraDataCodec)); + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/IbftExtraDataValidationRule.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/IbftExtraDataValidationRule.java new file mode 100644 index 000000000..e32310b56 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/IbftExtraDataValidationRule.java @@ -0,0 +1,149 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy.headervalidationrules; + +import org.hyperledger.besu.consensus.common.bft.BftContext; +import org.hyperledger.besu.consensus.common.bft.BftHelpers; +import org.hyperledger.besu.consensus.ibftlegacy.IbftBlockHashing; +import org.hyperledger.besu.consensus.ibftlegacy.IbftExtraDataCodec; +import org.hyperledger.besu.consensus.ibftlegacy.IbftHelpers; +import org.hyperledger.besu.consensus.ibftlegacy.IbftLegacyExtraData; +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.mainnet.AttachedBlockHeaderValidationRule; +import org.hyperledger.besu.ethereum.rlp.RLPException; + +import java.util.Collection; +import java.util.List; +import java.util.NavigableSet; +import java.util.TreeSet; + +import com.google.common.collect.Iterables; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Ensures the byte content of the extraData field can be deserialised into an appropriate + * structure, and that the structure created contains data matching expectations from preceding + * blocks. + */ +public class IbftExtraDataValidationRule implements AttachedBlockHeaderValidationRule { + + private static final Logger LOG = LoggerFactory.getLogger(IbftExtraDataValidationRule.class); + private static final IbftExtraDataCodec ibftExtraDataCodec = new IbftExtraDataCodec(); + + private final boolean validateCommitSeals; + private final long ceil2nBy3Block; + + /** + * Instantiates a new Ibft extra data validation rule. + * + * @param validateCommitSeals the validate commit seals + * @param ceil2nBy3Block the ceil 2 n by 3 block + */ + public IbftExtraDataValidationRule(final boolean validateCommitSeals, final long ceil2nBy3Block) { + this.validateCommitSeals = validateCommitSeals; + this.ceil2nBy3Block = ceil2nBy3Block; + } + + @Override + public boolean validate( + final BlockHeader header, final BlockHeader parent, final ProtocolContext context) { + try { + final Collection
storedValidators = + context + .getConsensusContext(BftContext.class) + .getValidatorProvider() + .getValidatorsAfterBlock(parent); + final IbftLegacyExtraData ibftExtraData = ibftExtraDataCodec.decode(header); + + final Address proposer = IbftBlockHashing.recoverProposerAddress(header, ibftExtraData); + + if (!storedValidators.contains(proposer)) { + LOG.info("Invalid block header: Proposer sealing block is not a member of the validators."); + return false; + } + + if (validateCommitSeals) { + final List
committers = + IbftBlockHashing.recoverCommitterAddresses(header, ibftExtraData); + + final int minimumSealsRequired = + header.getNumber() < ceil2nBy3Block + ? IbftHelpers.calculateRequiredValidatorQuorum(storedValidators.size()) + : BftHelpers.calculateRequiredValidatorQuorum(storedValidators.size()); + + if (!validateCommitters(committers, storedValidators, minimumSealsRequired)) { + return false; + } + } + + final NavigableSet
sortedReportedValidators = + new TreeSet<>(ibftExtraData.getValidators()); + + if (!Iterables.elementsEqual(ibftExtraData.getValidators(), sortedReportedValidators)) { + LOG.info( + "Invalid block header: Validators are not sorted in ascending order. Expected {} but got {}.", + sortedReportedValidators, + ibftExtraData.getValidators()); + return false; + } + + if (!Iterables.elementsEqual(ibftExtraData.getValidators(), storedValidators)) { + LOG.info( + "Invalid block header: Incorrect validators. Expected {} but got {}.", + storedValidators, + ibftExtraData.getValidators()); + return false; + } + + } catch (final RLPException ex) { + LOG.info( + "Invalid block header: ExtraData field was unable to be deserialised into an IBFT Struct.", + ex); + return false; + } catch (final IllegalArgumentException ex) { + LOG.info("Invalid block header: Failed to verify extra data", ex); + return false; + } catch (final RuntimeException ex) { + LOG.info("Invalid block header: Failed to find validators at parent"); + return false; + } + + return true; + } + + private boolean validateCommitters( + final Collection
committers, + final Collection
storedValidators, + final int minimumSealsRequired) { + if (committers.size() < minimumSealsRequired) { + LOG.info( + "Invalid block header: Insufficient committers to seal block. (Required {}, received {})", + minimumSealsRequired, + committers.size()); + return false; + } + + if (!storedValidators.containsAll(committers)) { + LOG.info( + "Invalid block header: Not all committers are in the locally maintained validator list."); + return false; + } + + return true; + } +} diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/VoteValidationRule.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/VoteValidationRule.java new file mode 100644 index 000000000..956875929 --- /dev/null +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/headervalidationrules/VoteValidationRule.java @@ -0,0 +1,48 @@ +/* + * Copyright ConsenSys AG. + * + * 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.consensus.ibftlegacy.headervalidationrules; + +import org.hyperledger.besu.consensus.ibftlegacy.IbftLegacyBlockInterface; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.mainnet.DetachedBlockHeaderValidationRule; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** The Vote validation rule. */ +public class VoteValidationRule implements DetachedBlockHeaderValidationRule { + + private static final Logger LOG = LoggerFactory.getLogger(VoteValidationRule.class); + + /** Default constructor */ + public VoteValidationRule() {} + + /** + * Responsible for ensuring the nonce is either auth or drop. + * + * @param header the block header to validate + * @param parent the block header corresponding to the parent of the header being validated. + * @return true if the nonce in the header is a valid validator vote value. + */ + @Override + public boolean validate(final BlockHeader header, final BlockHeader parent) { + final long nonce = header.getNonce(); + if (!IbftLegacyBlockInterface.isValidVoteValue(nonce)) { + LOG.info("Invalid block header: Nonce value ({}) is neither auth or drop.", nonce); + return false; + } + return true; + } +} diff --git a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java index a74b9c6d3..8dd885671 100644 --- a/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java +++ b/consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/statemachine/QbftBlockHeightManager.java @@ -236,7 +236,7 @@ public class QbftBlockHeightManager implements BaseQbftBlockHeightManager { if (!(validatorsForHeight.containsAll(previousValidators)) || !(previousValidators.containsAll(validatorsForHeight))) { LOG.info( - "Validator list change. Previous chain height {}: {}. Current chain height {}: {}.", + "QBFT Validator list change. Previous chain height {}: {}. Current chain height {}: {}.", parentHeader.getNumber(), previousValidators, parentHeader.getNumber() + 1, diff --git a/consensus/qbft/build.gradle b/consensus/qbft/build.gradle index 5481d9776..cef9db914 100644 --- a/consensus/qbft/build.gradle +++ b/consensus/qbft/build.gradle @@ -32,6 +32,7 @@ dependencies { implementation project(':config') implementation project(':consensus:common') implementation project(':consensus:qbft-core') + implementation project(':consensus:ibftlegacy') implementation project(':crypto:services') implementation project(':datatypes') implementation project(':ethereum:api') diff --git a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/MiningCoordinator.java b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/MiningCoordinator.java index d1a91083b..45cdc9892 100644 --- a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/MiningCoordinator.java +++ b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/MiningCoordinator.java @@ -32,6 +32,8 @@ public interface MiningCoordinator { void stop(); + default void subscribe() {} + void awaitStop() throws InterruptedException; /** diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java index 33897c3e1..5bd902596 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java @@ -89,6 +89,19 @@ public class ProtocolContext { return consensusContext.as(klass); } + /** + * Gets the consensus context of the protocol context. + * + * @param the type of the consensus context + * @param klass the klass + * @param blockNumber the block number + * @return the consensus context of the protocol context + */ + public C getConsensusContext( + final Class klass, final long blockNumber) { + return consensusContext.as(klass); + } + /** * Gets the safe consensus context of the protocol context. * diff --git a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/GenesisFileModule.java b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/GenesisFileModule.java index 7af024bf1..1bd89f486 100644 --- a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/GenesisFileModule.java +++ b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/GenesisFileModule.java @@ -130,7 +130,7 @@ public class GenesisFileModule { private static GenesisFileModule createGenesisModule(final String genesisConfig) { final JsonObject genesis = new JsonObject(genesisConfig); final JsonObject config = genesis.getJsonObject("config"); - if (config.containsKey("clique") || config.containsKey("qbft")) { + if (config.containsKey("ibft") || config.containsKey("clique") || config.containsKey("qbft")) { throw new RuntimeException("Only Ethash and Merge configs accepted as genesis files"); } return new MainnetGenesisFileModule(genesisConfig); diff --git a/platform/build.gradle b/platform/build.gradle index 4d21c3e8e..46b84ae72 100644 --- a/platform/build.gradle +++ b/platform/build.gradle @@ -47,6 +47,7 @@ dependencies { api project(':consensus:clique') api project(':consensus:common') api project(':consensus:ibft') + api project(':consensus:ibftlegacy') api project(':consensus:merge') api project(':consensus:qbft') api project(':consensus:qbft-core') diff --git a/settings.gradle b/settings.gradle index 502aff832..3ffbaa628 100644 --- a/settings.gradle +++ b/settings.gradle @@ -30,6 +30,7 @@ include 'config' include 'consensus:clique' include 'consensus:common' include 'consensus:ibft' +include 'consensus:ibftlegacy' include 'consensus:merge' include 'consensus:qbft' include 'consensus:qbft-core'

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 z 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%0AT3O^V35M(KqV!R56mY3 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�Abx=1D}0U0tWSh6~R|BD1fk&e}bEg#SN= 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